2011-03-26 172 views
1

我创造了一些MATLAB代码,即找到萨姆形状使用regionprosbwbounaries功能的图像 英寸识别形状用Matlab

我:

STATS = regionprops(L, 'all'); 

STATS我可以很容易地找到我所有的形状面积和周长。 我的问题如下:我想找到“方形”的形状,我做所有形状 下面的计算16 * area/(perimeter * perimeter), 如果这个值接近一,那么我“可能”有一个正方形。但其他形状也如 圆形或矩形也接近一个。 (也可以将一些方块在图像中旋转 )。

有没有更好的方法来区分形状(如圆形,三角形等)?

回答

2

Matlab具有的功能

procrustes(X,Y) 

这将计算基于所述类型的变换两种形状,将采取移动由X到由Y.定义对于许多形状分类任务的点所限定的点之间的距离,将这个距离最小化是对噪声形状进行分类的有用方法。如果你的问题具有“完美”的形状,这应该工作得非常好。只要将Y固定为一个完美的正方形,并且任何时候从X到Y的线性变换都是纯缩放,那么您知道X也是一个正方形。你可以做一些简单的逻辑检查,只选择满足这种属性的形状。

+0

+1命名matlab函数我没有意识到。 – John 2011-12-22 17:21:39

+0

Python包PyGeometry具有类似的Procrustes优化功能,如果你曾经在Python中做过这些事情。 – ely 2011-12-22 18:14:05