2016-09-21 147 views
0

找到點的邊界在計算機科學的許多領域都很有用。目前,我有一個3D網格的可見頂點,我投影了2D。 2D點將用於獲取邊界和各種類型的邊緣。二維點的邊界

從matlab鏈接on a function obtaining the boundary of points獲得的示例圖像顯示了一組2D點的邊界(橙色和紅色)。橙色邊界使用收縮因子,與convex hull function創建的邊界類似。在我們的例子中,我們想要一個更自然的點邊界,比如紅色邊界線(不是由凸包函數實現的邊界線)。 matlab的邊界函數是未定義的,因爲我使用的是較舊的2014版本(我認爲這是原因)。

是否有另一種技術/功能來實現2D點的自然邊界線?我已經測試了圖像上的凸包函數,並且遺漏了很多邊界點。

Boundary of Points`

+4

你是什麼意思的更自然的邊界? matlab函數使用收縮因子 - 你只是想用不同的縮小來做這件事,或者你有一套不同的標準嗎? –

+2

要補充的是:對於我來說,紅線爲什麼不包括一些點,還有一些是不明確的。 – Bernhard

+0

只是爲了澄清我的意思是自然邊界在物體的形狀方面。例如,讓我們拿一輛車。假設它最初由3D空間中的點雲表示。我將點雲從相機點的方向投影到二維空間。外觀可見的2D點表示汽車的邊界或邊緣。輪廓或邊緣會彎曲,有時使用凸包可能無法真實地反映汽車的輪廓線。我似乎不能使用matlab中的邊界函數,因爲它的狀態未定義。另一方面,我嘗試了凸包 – Sade

回答

1

它看起來像matlabs邊界函數簡單地返回您pointsets阿爾法形狀的邊界:https://en.wikipedia.org/wiki/Alpha_shape

沒有爲C++在CGAL實現:從文件http://doc.cgal.org/latest/Alpha_shapes_2/index.html我們:

enter image description here

正如Edelsbrunner的提及和Mücke的論文[2]中,人們可以直觀地將α形狀想成如下。想象一下,大量的冰淇淋構成了空間and3,並且含有「硬」巧克力碎片。使用這些球形冰淇淋匙子之一,我們可以將冰淇淋塊的所有部分分開,而不會碰到巧克力塊,從而甚至可以在內部雕刻出洞(例如,只需將勺子從外)。我們最終會得到一個(不一定是凸的)對象,由頂點,弧和點限定。如果我們現在將所有「圓」面校正爲三角形和線段,我們對S的α形狀進行了直觀描述。下面是2D中該過程的一個示例(我們的冰淇淋勺只是一個圓圈):

+0

這真的很有幫助。所以我需要阿爾法形狀。因爲我不能在matlab中使用邊界函數來實現這一點。在MATLAB中有沒有其他的方法來獲得alpha形狀。 – Sade

+0

https://www.mathworks.com/matlabcentral/fileexchange/28851-alpha-shapes http://www.mathworks.com/examples/matlab/mw/matlab-ex67295599-alpha-shapes我會測試一下以確定如果這是我在找的東西。 – Sade

+0

@Sade alphashape及其在2014b入侵的朋友,但在matlab中央存在(未經我測試)此版本:https://nl.mathworks.com/matlabcentral/fileexchange/28851-alpha-shapes – Lanting