我是图像处理的初学者,如何提取5种类型"垂直","水平","诊断45","诊断135","非定向"边缘与opencv?
答案 0 :(得分:2)
首先,您需要将sobel滤镜应用于图像。有关示例代码,请参阅OpenCV documentation。
在X和Y中获得渐变图像后(我将其称为Gx
和Gy
),您可以使用公式theta = atan2(Gy,Gx)
和幅度来计算边缘的方向M = sqrt(Gx*Gx + Gy*Gy)
。获得Gx
,Gy
,theta
和M
后,您可以使用以下公式计算每个像素的定向边缘的大小。
垂直边缘:abs(Gy)
水平边缘:abs(Gx)
45度边缘:M*abs(cos(theta - pi/4))
135度边缘:M*abs(cos(theta - 3*pi/4))
无方向边:M
除了非方向边缘,我们只是计算梯度投影到特定方向的幅度。