我几乎没有图像处理和识别的背景知识。我试图检测灰度图像(如肖像)上的主边缘/灰度变换。问题是在某些部分,边缘模糊(因为焦点)。我使用的是具有多个阈值的Canny边缘检测器,但我永远无法检测到这些边缘(下巴、衣服、耳朵、脸部侧面等)
边缘检测是正确的工具吗?谢谢
完整代码在这里
几乎不可能检测到这些边缘,因为它们太模糊了。
边缘检测通过分析周围像素中颜色的快速变化来工作。模糊会使像素变得平滑,从而使更改的强度大大降低,因此不会检测到任何边缘。
您可以尝试在边缘检测之前应用一个强大的锐化过滤器,但是,我认为对于这种模糊程度,边缘检测将无法正常工作。
即使提高边缘检测参数以检测模糊边缘,也会出现大量误报,使算法无效。
我唯一能想到的就是基本上裁剪面积,然后应用傅里叶变换(DFT)。然后根据振幅阈值分离像素,保持图案并将其应用于主图像(或仅使用反向傅里叶变换)。或者,您可以尝试在指数级上执行此操作,以便扩大与背景相对应的像素值与与与图像相对应的像素值之间的差距。
当然,所有这些建议都是针对一张照片或在相同条件下拍摄的一系列照片(如核磁共振成像)量身定制的一次性解决方案。
我真的看不到用全自动的方式做这件事的太多可能性。
如果你想求助于人工神经网络(ANN)并设计一个,这当然不能保证成功,但至少在原则上,这取决于它设计得有多好。如果您想更深入地了解人工神经网络在复杂图像处理中的应用,请阅读IEEE的这篇会议论文。
近藤、上野和高雄。基于主成分回归分析的混合多层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_{翻转}是翻转的内核掩码。
二维卷积的定义为:
X ⓧ G = Summation(∞, k=-∞){Summation(∞, l=-∞) x[i-k, j-l].G[k,l]}
这不是你问题的完整答案,但我希望它能在一定程度上帮助你。