Matlab图像分割与圆识别

时间:2017-05-28 04:45:39

标签: image matlab image-segmentation

我正在研究图像分割,边缘检测以及Matlab中的重建打开和关闭。我试图在非常嘈杂的图像中识别圆形物体,目的是用这些圆形物体的边缘创建一个遮罩,然后将这种遮罩叠加在原始图像中。在通过重建打开和关闭以及分水岭功能来识别对象的边界和原始图像的二元掩模之后,我能够获得对应于完整和半圆的边缘。虽然识别出的圆圈非常少,而且我大多数都是圆圈,但这种方法可以滤除图像中的大部分噪音。

试图获得整圆的边缘,我使用canny函数进行边缘检测。此函数获取大多数圆形对象的完整边缘,但它也会绘制图像中噪声的边缘。这不允许我创建一个好的遮罩来叠加在原始图像中。

那么问题是,是否有任何有效的方法来消除canny函数拾取的噪声,或者是否可以对某些半径的对象执行canny函数边缘检测,仅作为我想要的圆形对象识别具有特定半径。附图是导致图像中噪声的原始图像是暗垂直带或阴影以及圆顶上的明亮光束。附:用于圆检测的matlab函数“imfindcircles”在我的图像上不起作用,因为圆形边缘破损或背景噪声。

圆形物体的原始图像和深色垂直线条以及作为噪声的亮点

1 个答案:

答案 0 :(得分:0)

您可以在应用Hough变换之前预处理给定的图像。您遇到的问题是因为整个图像的亮度分布不均匀。您可以在边缘检测和Hough变换之前应用一些滤波技术,如同态滤波。同态滤波技术使图像的亮度归一化并增加对比度。在此图像上应用canny边缘检测后,您可以使用一些边缘链接算法填充检测到的边缘之间的间隙,以便使用Hough变换获得更好的性能。

这个过程是这样的,

图片 - >同态滤波 - > canny边缘检测 - >边连接 - >霍夫变换