我几乎没有图像处理和识别的背景知识。我试图检测灰度图像(如肖像)上的主边缘/灰度变换。问题是在某些部分,边缘模糊(因为焦点)。我使用的是具有多个阈值的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]}
这不是你问题的完整答案,但我希望它能在一定程度上帮助你。
几乎不可能检测到这些边缘,因为它们太模糊了。
边缘检测通过分析周围像素中颜色的快速变化来工作。模糊会使像素变得平滑,从而使更改的强度大大降低,因此不会检测到任何边缘。
您可以尝试在边缘检测之前应用一个强大的锐化过滤器,但是,我认为对于这种模糊程度,边缘检测将无法正常工作。
即使提高边缘检测参数以检测模糊边缘,也会出现大量误报,使算法无效。
完整代码在这里
这是我的测试照片 我正在努力寻找卡片的边缘。但是,正如您所看到的,边缘有些模糊。 在这里找到一些建议:模糊边缘检测如何从python中的模糊图像中找到扭曲矩形的精确角点位置?,但没有一个能产生令人满意的边缘。 完整代码:
Canny边缘检测用于检测图像中的边缘。 它接受灰度图像作为输入,并使用多级算法。可以使用类的方法在图像上执行此操作,以下是此方法的语法。 该方法接受以下参数 - image - 表示此操作的源(输入图像)的对象。 edges - 表示此操作的目标(边缘)的对象。 threshold1 - 类型为的变量表示滞后过程的第一个阈值。 threshold2 - 类型为的变量表示滞后过程的第二个阈值。 示
目标 在这一章中,我们将学习 Canny 边缘检测的概念 OpenCV 的 Canny 边缘检测函数:cv2.Canny() 理论基础 Canny边缘检测是一种流行的边缘检测算法。它是由 John F. Canny 于 1986 年开发的。它是一个多阶段算法,我们将学习每个阶段做了什么。 降噪 由于边缘检测容易受到图像中的噪声影响,因此首先要用5x5高斯滤波器去除图像中的噪声。我们在前面的章节已经
目标 在本章中,我们将学习 Canny边缘检测的概念 OpenCV函数: cv.Canny() 理论 Canny Edge Detection是一种流行的边缘检测算法。它由John F. Canny发明 这是一个多阶段算法,我们将经历每个阶段。 降噪 由于边缘检测容易受到图像中噪声的影响,因此第一步是使用5x5高斯滤波器消除图像中的噪声。我们已经在前面的章节中看到了这一点。 查找图像的强度梯度 然
本文向大家介绍python实现canny边缘检测,包括了python实现canny边缘检测的使用技巧和注意事项,需要的朋友参考一下 canny边缘检测原理 canny边缘检测共有5部分组成,下边我会分别来介绍。 1 高斯模糊(略) 2 计算梯度幅值和方向。 可选用的模板:soble算子、Prewitt算子、Roberts模板等等; 一般采用soble算子,OpenCV也是如此,利用soble水平和
我一直试图在iOS 7版SpriteKit中找到最有效的方法来获得每像素碰撞(然而,iOS 8版SpriteKit支持此功能)。当然,我想用一个方框或圆圈来表示精灵的物理身体,但不幸的是,游戏的本质要求每像素碰撞。 我知道我可以手动绘制精灵周围的CGPath,但我正在努力为自己节省一些时间/创建一种长期使用的方法/学习新的东西。由于精灵的图像是在alpha背景(png文件)上绘制的,我想知道使用边