2014-01-13 65 views
4

我有一個形狀,您可以將它想象爲從頂部(2D)觀察的一個場中的一個湖。我在圖像處理之後確定了形狀的邊界像素,以便獲得每個邊界點的座標。計算用點雲指定的形狀的周長

現在我想計算這個形狀的周長。我的問題是,我的觀點不是按順序進行的,而是一個閉環,但是無序。

在Matlab中如何解決這樣的問題? (包括曲線擬合工具箱等)

謝謝您的任何建議!

+0

這聽起來不可能 - 會有不明確的情況。你需要訂購你的積分。除非你不介意做一個粗略的近似值,在這種情況下你可以使用凸包 – Dan

+0

調查*凸包*算法,尤其是如果周邊的凸性是一個合理的假設或近似值。 –

+0

「湖」是凸的嗎?在這種情況下,您可以根據角度(x-mean(x))+ j1 *(y-平均值(y))對點進行排序。 –

回答

2

您可以使用此功能regionprops

將你的圖像轉化爲一個二進制圖像,其中1個在你的'湖'內和0個外部(你應該很容易做到,因爲你提到你提取了邊界)。

然後使用:

props=regionprops(YourBinaryImage, 'Perimeter'); 

然後,您可以訪問周邊如下:props.Perimeter

0

如果您有(X,Y,Z)座標三維點集,你可以設置Z到零,並使用2D(x,y)點來查找使用convhull的凸包,而不管它們的順序如何。