2014-01-13 32 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的凸包,而不管它们的顺序如何。