使用Matlab识别形状

时间:2011-03-26 18:04:54

标签: matlab shapes

我创建了一些MATLAB代码,可以在图像中找到一些形状 使用 regionpros bwbounaries 功能。

我有:

STATS = regionprops(L, 'all');

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

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

1 个答案:

答案 0 :(得分:2)

Matlab有一个功能

procrustes(X,Y)

将基于将由X定义的点移动到Y定义的点所需的转换类型来计算两个形状之间的距离。对于许多形状分类任务,最小化此距离是对噪声实例进行分类的有用方法形状。如果您的问题具有“完美”的形状,这应该非常有效。只需将Y固定为一个完美的正方形,任何时候从X到Y的线性变换都是纯粹的缩放,那么你就知道X也是一个正方形。您可以执行一些简单的逻辑检查,以仅选择满足此类属性的形状。