use*_*293 4 c c++ algorithm image-processing edge-detection
我正在寻找关于如何在Canny边缘检测中实现算法的一些澄清 - 维基百科条目 - 工作.使用2D高斯滤波器进行降噪似乎非常简单,但我听说使用两个1D滤波器 - 这是如何实现的?计算梯度和边缘方向也很简单.然而,当执行非最大抑制时,有一个巧妙的技巧来获得圆角?我目前正在做的是将边缘方向(theta)值除以pi/4,将其转换为整数并使用switch语句.但是,如何处理负θ值 - 即-pi/4应该以与3*pi/4相同的方式处理,还是与pi/4相同?
任何建议/链接非常感谢!
谢谢,本
高斯分布:
[为简单起见,省略了常量]
g2d(x,y)= exp(-x x-y y)= exp(-x ^ 2)*exp(-y ^ 2)= g1d(x)*g1d(y)
因此可以分成1d分布的乘法.因此,可以首先在x方向上进行过滤(独立地在每一行上)然后在y方向上进行过滤(在每一列上独立地进行)
圆角:
如果角度在[0..pi]之外,则在这种情况下根据需要多次添加/减去pi(或使用函数fmod)是正确的,而对于[0..pi),所有都是清楚的.
还取决于平台可能会更好,以避免反正切的使用在所有:你可以画一个圆,在4个区域划分,并产生了一套仅利用算术运算,并给你回答这方面的方向是梯度分量的条件.