我对图像处理和识别没有什么背景知识。我正在尝试检测像肖像这样的灰度图像上的主要边缘/灰度转换。问题是在某些部分,边缘是模糊的(因为聚焦)。我使用的是具有多个阈值的Canny边缘检测器,但我永远无法检测到这些边缘(下巴、衣服、耳朵、脸部侧面……)
原始图像:
这就是我得到的结果:胡须,锋利的边缘
这就是我感兴趣的特性:主灰色区域之间的转换
边缘检测是正确的工具吗?
谢谢!在
更新:在边缘检测之前,使用Deriche过滤和将图像大小减半(apertureSize=7),我让它的工作非常接近我想要的。
Tags:
几乎不可能检测到这些边缘,因为它们太模糊了。在
边缘检测是通过分析周围像素中颜色的快速变化来实现的。模糊使像素变得平滑,这使得变化变得不那么强烈,因此不会检测到边缘。在
你可以尝试在边缘检测之前应用一个强大的锐化过滤器,但是,我认为对于这样的模糊量,边缘检测将无法正常工作。在
即使提高边缘检测参数来检测那些模糊的边缘,也会得到很多误报,使算法变得无用。在
使用canny deriche过滤器,您可以找到:
完整代码是here
我唯一能想到的就是基本上裁剪这个区域,然后应用傅立叶变换(DFT)。然后根据振幅阈值分离像素,保持图案并将其应用于主图像(或仅使用反向傅里叶)。或者,你可以尝试在一个指数级上这样做,以扩大与背景对应的像素值与对应于图像的像素值之间的差距。在
当然,所有这些建议都是为一张照片量身定做的一次性解决方案,或者是在相同条件下拍摄的一系列照片(例如核磁共振成像)。在
我真的看不出用完全自动的方式做这件事的可能性有多大。在
人工神经网络解决方案
如果想借助人工神经网络(ANN)来设计一个,这当然不能保证成功,但至少在原则上,这取决于它的设计水平。如果您想了解ANN在复杂图像处理中的应用,请阅读IEEE的这篇会议论文。在
自定义过滤器和数学原理
以下是一些你可能会觉得有用的数学原理:
值得尝试自定义过滤器,例如:
注意,这不会过滤任何(完全)垂直线。你可以,然而,转置它,所以它将是相反的。你也可以尝试对二值图像(黑白图像)应用过滤器,而不是灰度图像。在
对于这样的过滤器,您可能仍然希望您的傅立叶来减少您的计算和优化程序。在
基本上,你可以用卷积来解释线性滤波:
^{pr2}$其中G是内核/掩码,G{flip}是翻转的内核掩码。在
卷积
二维卷积的定义是:
这不是你问题的完整答案,但我希望它能在一定程度上帮助你。在
相关问题 更多 >
编程相关推荐