我对图像处理和识别的背景知识很少。我试图检测灰度图像(如肖像)上的主要边缘/灰度过渡。问题是在某些部件上,边缘模糊(因为焦点)。我正在使用具有多个阈值的Canny边缘检测器,但我永远无法检测到这些边缘(下巴,衣服,耳朵,脸部的一侧......)
原始图片: 这是我得到的结果:胡须,锋利的边缘 这就是我感兴趣的功能:主要灰色区域
之间的过渡边缘检测是否适用于此? 谢谢!
更新:在边缘检测之前使用Deriche过滤并将图像的大小减半(使用apertureSize = 7),我的工作非常接近我想要的。
答案 0 :(得分:5)
完整代码为here
答案 1 :(得分:0)
它几乎不可能检测到这些边缘,因为它们已经模糊了很多。
边缘检测通过分析周围像素中颜色的快速变化来工作。模糊使像素平滑,这使得更改的强度更低,因此没有检测到边缘。
您可以尝试在边缘检测之前应用强锐化滤镜,但是,我认为对于这种模糊,边缘检测不会按预期工作。
即使你提高了边缘检测参数以检测那些模糊的边缘,你也会得到很多误报,使算法变得无用。
答案 2 :(得分:0)
我唯一能想到的是基本上裁剪区域,并应用傅立叶(DFT)。然后根据幅度阈值分离像素,保持图案并将其应用于主图像(或仅使用反向傅立叶)。或者,您可以尝试以指数刻度执行此操作,以便扩大与背景对应的像素值与对应于图像的像素值之间的差距。
当然,所有这些建议都是针对单张照片定制的一次性解决方案,或者是在相同条件下拍摄的一系列照片(例如像MRI一样)。
我并没有真正看到以全自动方式完成此操作的可能性。
如果想采用ANN(人工神经网络)并设计一个,这当然不能保证成功,但它至少在原则上会依赖于它的设计。如果您想更深入地了解ANN在复杂图像处理中的应用,请阅读IEEE的此会议论文。
吨。 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}是翻转内核掩码。
2D中卷积的定义是:
X ⓧ G = Summation(∞, k=-∞){Summation(∞, l=-∞) x[i-k, j-l].G[k,l]}
这不是你问题的完整答案,但我希望它能在一定程度上帮助你。