我有一个Canny边缘检测到的球图像(见下面的链接),其中包含许多嘈杂的边缘。在不移除属于球的边缘的情况下,我可以使用哪种最佳图像处理技术来消除这些嘈杂的边缘?
原始图片
Canny边缘图像
非常感谢大家的帮助和建议,非常感谢!
Ps我想在使用圆形霍夫变换检测球之前清理边缘图像。
答案 0 :(得分:7)
最佳选择是在应用边缘检测器之前过滤图像。为了保持锐利边缘,您需要使用比高斯模糊更复杂的滤镜。
两个简单的选项是Bilateral filter或Guided filter。这两个滤波器非常易于实现,并且在大多数情况下都能提供良好的结果:高斯噪声去除保留边缘。如果您需要更强大的功能,可以尝试使用过滤器BM3D,这是最先进的过滤器之一,您可以找到开源实现here。
答案 1 :(得分:3)
只有在设置了最佳阈值水平(阈值下限和上限)
后,Canny边缘检测才能发挥最佳效果以下伪代码向您展示了它的完成方式:
v = np.median(gray_img)
sigma = 0.33
#---- apply optimal Canny edge detection using the computed median----
lower_thresh = int(max(0, (1.0 - sigma) * v))
upper_thresh = int(min(255, (1.0 + sigma) * v))
将lower_thresh
和upper_thresh
设置为canny edge函数的参数。
sigma
设置为0.33
,因为在分布曲线的统计数据中,会考虑从曲线的起点和终点位于33%之间的值。超出和低于此曲线的值被认为是异常值。
这就是我为你的形象所得到的:
答案 2 :(得分:2)
如果可以的话,删除它们的最佳方法可能不是首先使用它们。如果线条是图像中的噪声伪像,则应用平滑滤波器(例如高斯滤波器)来平移图像。 - > Gaussian filter info
一旦它们移除它们就很棘手并且可能涉及一些更高级别的形状识别内容