Matlab图像处理 - 识别圆圈的问题

时间:2014-07-20 14:31:28

标签: matlab image-processing blob geometry

我正在写一个MATLAB程序,它可以从正方形中得到不同的圆圈。该过程涉及将图像转换为二进制形式。我使用大小为10的平均滤镜来消除噪音,因为这些照片都是用低分辨率相机拍摄的。我按如下方式计算blob的圆度。

blobMeasurements = regionprops(BW_rotated,'Perimeter', 'Area', 'FilledArea')

perimeters = [blobMeasurements.Perimeter];
filledAreas = [blobMeasurements.FilledArea];
roundness = (4 * pi * filledAreas) ./ (perimeters .^2);
roundness = max(roundness);

我尝试了一些网上的图片。完美圆的圆度为1.我使用0.8的阈值(相当宽)来判断图像是否是圆的图像。但是,这种方式我得不到很好的结果。例如,使用以下图像:

Example Image

左边的圆圈是原始图像,右边的图片是最终的二进制图像。应当注意,预先获得每个图像的长轴,并且将图像旋转该量,以确保图像中的所有形状与水平轴对齐。虽然二进制图像在图中看起来较小,但它只是被旋转了。

对于这个特殊的图像,我得到0.78的圆度,这是非常低的,因为它是一个明确无误的圆圈。对于包含正方形的图像,我有时会获得超过0.85的圆度值。

有人可以帮我解决这个问题吗?非常感谢任何方向。

0 个答案:

没有答案