边缘检测——梯度计算

梯度计算

[Note] 边缘检测的原理就是寻找像素值变化剧烈的点当作边缘

如何寻找变化剧烈的点?

以下分成两种情况:

一维

假如有这么一个数组

那么我们利用差分(Diff)来求解两点之间的变化程度,从而得出某点的梯度值。

例如,我们要算a_3的梯度值,我们只需计算Diff(a_3,a_4)即可 。

因此,当图片是一维的时候,a_n的梯度等于Diff(a_n,a_{n+1})

二维

假如有这么一个数组:

那么我们就要用二维差分来算某点的梯度。

二维差分包括D_xD_y

如果我们要计算a_5的梯度,我们先算出D_x(a_5)D_y(a_5)

D_x(a_5)=(a_6-a_4)/2

D_y(a_5)=(a_8-a_2)/2

Diff(a_5)=\sqrt{D_x^2+D_y^2}

\theta(a_5)=arctan(D_y/D_x)

0^o<=\theta(a_5)<=90^o

然而这样的计算方法只考虑了两个方向的梯度:

因此,后面又推出了改进版,即考虑4个方向的梯度计算方法:

 D_x(a_5)=(a_6-a_4)/2+(a_9-a_1)/2\sqrt2-(a_7-a_3)/2\sqrt2

D_y(a_5)=(a_8-a_2)/2+(a_7-a_3)/2\sqrt2-(a_9-a_1)/2\sqrt2

0^o<=\theta(a_5)<=180^o

猜你喜欢

转载自blog.csdn.net/qq_55126913/article/details/129733388