我创建了一些MATLAB代码,可以在图像中找到一些形状
使用 regionpros
和 bwbounaries
功能。
我有:
STATS = regionprops(L, 'all');
从STATS
我可以很容易地找到我所有形状的面积和周长。
我的问题如下:我想找到“正方形”的形状,我这样做
以各种形状进行以下计算16 * area / (perimeter * perimeter)
,
如果这个值接近1那么我“可能”有一个正方形。但其他形状也很像
圆圈或矩形也近在咫尺。 (也可以旋转一些正方形
在图像中)。
有没有更好的方法来区分形状(如圆形,三角形......)?
答案 0 :(得分:2)
Matlab有一个功能
procrustes(X,Y)
将基于将由X定义的点移动到Y定义的点所需的转换类型来计算两个形状之间的距离。对于许多形状分类任务,最小化此距离是对噪声实例进行分类的有用方法形状。如果您的问题具有“完美”的形状,这应该非常有效。只需将Y固定为一个完美的正方形,任何时候从X到Y的线性变换都是纯粹的缩放,那么你就知道X也是一个正方形。您可以执行一些简单的逻辑检查,以仅选择满足此类属性的形状。