如何用opencv提取5个方向边?

时间:2016-09-09 20:26:08

标签: opencv image-processing

我是图像处理的初学者,如何提取5种类型"垂直","水平","诊断45","诊断135","非定向"边缘与opencv?

1 个答案:

答案 0 :(得分:2)

首先,您需要将sobel滤镜应用于图像。有关示例代码,请参阅OpenCV documentation

在X和Y中获得渐变图像后(我将其称为GxGy),您可以使用公式theta = atan2(Gy,Gx)和幅度来计算边缘的方向M = sqrt(Gx*Gx + Gy*Gy)。获得GxGythetaM后,您可以使用以下公式计算每个像素的定向边缘的大小。

垂直边缘:abs(Gy)

水平边缘:abs(Gx)

45度边缘:M*abs(cos(theta - pi/4))

135度边缘:M*abs(cos(theta - 3*pi/4))

无方向边:M

除了非方向边缘,我们只是计算梯度投影到特定方向的幅度。