模糊边缘检测

5
我对图像处理和识别的背景知识很少。我试图检测灰度图像上的主要边缘/灰度转换,比如肖像。问题在于,在某些部位,边缘是模糊的(因为聚焦)。我正在使用多个阈值的Canny边缘检测器,但我永远无法检测到这些边缘(下巴、衣服、耳朵、脸侧等)。
原始图片:Original 这是我得到的结果:胡须、锐利的边缘 Current result 这是我感兴趣的特征:主要灰色区域之间的过渡 Wanted results 边缘检测是否是解决此问题的正确工具? 谢谢!
更新:使用Deriche过滤器,在边缘检测之前将图像大小减半(使用apertureSize=7),我已经得到了非常接近我想要的结果。 Good results

1
边缘检测应该有一个参数,让你控制你感兴趣的边缘的大小。 - Aaron
你可能需要使用clandmark或类似的工具。 - Miki
@Aaron,通过大量的滤波(中值滤波去除杂乱毛发和高斯滤波平滑边缘),我使用更大的孔径大小7来改善了我的结果。现在我需要改进我的滤波。 - Montspy
3个回答

5
使用Canny-Deriche滤波器,您可以找到: 一种可能性 完整代码在这里

嗯,看起来很有趣。在进行卡尼边缘检测之前使用Deriche过滤器?我会尝试找到一个Python实现来试一试! - Montspy
我已经让它工作到我满意的程度了,感谢提出Deriche过滤! - Montspy
@Montspy,我有一个类似的问题。你能指出你使用的Python实现吗?谢谢! - mapto

0

由于这些边缘被模糊得如此之厉害,几乎不可能检测到它们。

边缘检测通过分析周围像素的颜色快速变化来工作。模糊会平滑像素,使变化变得不那么强烈,因此无法检测到边缘。

您可以尝试在边缘检测之前应用强烈的锐化滤镜,但是我认为对于这种程度的模糊,边缘检测不会按预期工作。

即使您将边缘检测参数提高到也能检测到那些模糊的边缘,您仍将获得大量误报,使算法无用。


0

我所能想到的唯一方法就是基本上裁剪区域,并应用傅里叶(DFT)。然后根据幅度阈值将像素分离,保持图案并应用于您的主要图像(或仅使用反向傅里叶)。或者,您可以尝试以指数比例来做这件事,以扩大与背景相对应的像素值与与图像相对应的像素值之间的差距。

当然,所有这些建议都将是针对单个照片或在相同条件下拍摄的一系列照片(例如像MRI这样的东西)的一次性解决方案。

我真的没有看到很多完全自动完成此操作的可能性。

人工神经网络解决方案

如果想要借助人工神经网络(ANN)设计一个解决方案,这当然不能保证成功,但至少在原理上取决于其设计得有多好。如果您想深入了解ANN在复杂图像处理中的使用,请阅读IEEE的这篇会议论文。

T. Kondo,J. Ueno 和 S. Takao。应用主成分回归分析的混合多层GMDH型神经网络进行腹部多器官医学图像识别,在“第二届计算与网络国际研讨会(CANDAR)”上发表,页码为157-163。电气和电子工程师协会(IEEE),2014 年 12 月。
自定义过滤器和数学原理:
以下是一些您可能会发现有用的数学原理:
值得一试的是自定义过滤器,例如:
-------------
| 1 | 2 | 1 |
-------------
| 0 | 0 | 0 |
-------------
|-1 |-2 | 1 |
-------------

请注意,这不会过滤掉任何(完全)垂直的线。但是您可以对其进行转置,使其成为反向。您还可以尝试将筛选器应用于二进制图像(黑白),而不是灰度图像。
对于这样的筛选器,您可能仍希望使用傅里叶来减少计算并优化程序。
原则上,您可以用卷积的术语来解释线性滤波:
Y = f[X; G] = X ⓧ G_{flip}

其中 G 是内核/掩模,G_{flip} 是翻转内核掩模。

卷积

在二维中,卷积的定义如下:

X ⓧ G = Summation(, k=-){Summation(, l=-) x[i-k, j-l].G[k,l]}

这并不是完整的答案,但我希望它能在一定程度上对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接