灰度图边缘检测
在学习图像处理时,首先接触到的就是灰度图像的边缘检测,这是图像处理最基础的也是最重要的一环,熟悉图像边缘检测有助于我们学习其他的数字图像处理方法。由于图像的边缘区域会存在明显的像素值阶跃,因此边缘检测主要是通过获得图像灰度梯度,进而通过梯度大小和变化来判断图像边缘的。

因此,我们可以通过一阶差分;
Δfx(x,y)=f(x+1,y)−f(x,y)Δfy(x,y)=f(x,y+1)−f(x,y)
或者二阶差分对边缘区域进行判断;
Δfxx(x,y)=f(x+1,y)+f(x−1,y)−2f(x,y)Δfyy(x,y)=f(x,y+1)+f(x,y−1)−2f(x,y)
其中一阶差分可以判断边缘是否存在,二阶差分还可以根据正负号判断像素点在图像边缘亮的一侧还是暗的一侧。
其他的边缘检测方法还包括一些梯度算子,例如Prewitt算子、Sobel算子,Canny算子,LOG边缘检测算子等,在此不做说明。
彩色图边缘检测
RGB 图像使用三个通道存储像素信息,我们可以将这三个通道的信息看作是一个矢量,而矢量是不存在梯度的概念的,我们无法直接将上诉方法或算子直接用于RGB 图像,而且RGB图像单个通道的梯度信息又无法反映整体的梯度信息。
在《数字图像处理》(冈萨雷斯)中提到了一种针对彩色图像的边缘检测方法,这种方法由 Di Zenzo 等人在1986年提出,下面就一起看看这种方法如何得出。
Di Zenzo’s gradient operator
在图像多通道图像f(x,y) 中的某一点P(x,y) 处,假设其梯度方向为θ
Δf=∥f(x+εcosθ,y+εsinθ)−f(x,y)∥
为了便于计算,将计算绝对值换为计算平方,令
Δf2=∥f(x+εcosθ,y+εsinθ)−f(x,y)∥2
对f(x+εcosθ,y+εsinθ)进行二元泰勒展开;
f(x+εcosθ,y+εsinθ)=f(x,y)+i=1∑m(εcosθ⋅∂x∂fi(x,y)+εsinθ⋅∂y∂fi(x,y))+on≈i=1∑m(εcosθ⋅∂x∂fi(x,y)+ε⋅sinθ⋅∂y∂fi(x,y))
其中m表示图像通道数目,为了方便表述使用∂x∂fi代替∂x∂fi(x,y),则有;
Δf2≈i=1∑m(εcosθ⋅∂x∂fi+εsinθ⋅∂y∂fi)2
重新定义一个函数f(θ),令
f(θ)=i=1∑m(εcosθ⋅∂x∂fi+εsinθ⋅∂y∂fi)2=ε2(cosθ2i=1∑m∥∥∥∥∂x∂fi∥∥∥∥2+sinθ2i=1∑m∥∥∥∥∂y∂fi∥∥∥∥2+2sinθcosθi=1∑m∂x∂fi∂y∂fi)
为了进一步简化计算,舍去式子中的ε 项,令
f(θ)=cosθ2i=1∑m∥∥∥∥∂x∂fi∥∥∥∥2+sinθ2i=1∑m∥∥∥∥∂y∂fi∥∥∥∥2+2sinθcosθi=1∑m∂x∂fi∂y∂fi
为了进一步方便表述;令
E=i=1∑m∥∥∥∥∂x∂fi∥∥∥∥2;F=i=1∑m∥∥∥∥∂y∂fi∥∥∥∥2;G=i=1∑m∂x∂fi∂y∂fi
f(θ)=cosθ2E+sinθ2F+2sinθcosθG
现在θ成为了式子中唯一的变量,再回到边缘的定义上,边缘的方向是图像像素梯度最大的方向。也就是说梯度的方向θmax 会使f(θ) 取最大值,则;
θmax=argmaxf(θ)
对f(θ) 进行求导;
f(θ)′=−Esin2θ+2Fcos2θ+Gsin2θ
令f(θ)′=0,得;
tan 2θmax=E−G2Fθmax=21arctan(E−G2F+kπ)
很明显f(θ) 是一个以π 为周期的周期函数,如果只考虑区间[0,π),且θmax 落到该区间内,则会有另一个让f(θ)取极值的解也落在该区域内,这个值是θmax+2π或者θmax−2π。但是不论如何这两个解有一个让f(θ)取极大值,另一个让其取极小值,两个角度相差 90°。
说到这里大家应该都明白了,两个角度对应的方向是相互垂直的,一个是垂直于边缘的方向,也就是边缘的法向,此时梯度取最大值。另一个是平行于边缘的方向,是边缘的切向,此时梯度取极小值。
在RGB图像中,m=3,再令;
u→=∂x∂Rr→+∂x∂Gg→+∂x∂Bb→
v→=∂y∂Rr→+∂y∂Gg→+∂y∂Bb→
其中r→、g→、b→分别代表单位向量,则
gxx=E=u→Tu→=∥∥∥∥∂x∂R∥∥∥∥2+∥∥∥∥∂x∂G∥∥∥∥2+∥∥∥∥∂x∂B∥∥∥∥2
gyy=F=v→Tv→=∥∥∥∥∂y∂R∥∥∥∥2+∥∥∥∥∂y∂G∥∥∥∥2+∥∥∥∥∂y∂B∥∥∥∥2
gxy=G=u→Tv→=∂x∂R∂y∂R+∂x∂G∂y∂G+∂x∂B∂y∂B
在求得θ 后,将以上符号带入到f(θ),计算出梯度大小为
G(θ)={21[(gxx+gyy)+(gxx−gyy)cos 2θmax+2gxysin 2θmax]}21
参考资料
- S. Di Zenzo, A note on the gradient of a multi-image, Computer Vision, Graphics, and Image Processing 33 (1) (1986) 116–125.
- 《数字图像处理》 (冈萨雷斯)