各个算子的推导

图像导数的定义

边缘处高频部分较多,因此变化率较大,因此边缘检测就是找到变化率较大的那部分。也就是一阶导数最大的部分或者二阶倒数为0的部分。二阶倒数比一阶倒数对噪声更敏感。
∂ f ( x , y ) ∂ x = f ( x + 1 , y ) − f ( x , y ) ∂ f ( x , y ) ∂ y = f ( x , y + 1 ) − f ( x , y ) ∂ 2 f ( x , y ) ∂ 2 x = = f ′ ( x + 1 , y ) − f ′ ( x , y ) = f ( x + 2 ) − f ( x + 1 ) − f ( x + 1 ) + f ( x ) = f ( x + 2 ) − 2 ( x + 1 ) + f ( x ) ∂ 2 f ( x , y ) ∂ 2 y = = f ′ ( x , y + 1 ) − f ′ ( x , y ) = f ( y + 2 ) − f ( y + 1 ) − f ( y + 1 ) + f ( y ) = f ( y + 2 ) − 2 ( y + 1 ) + f ( y ) \begin{aligned} \frac{\partial{f(x,y)}}{\partial{x}} &= f(x+1,y) - f(x,y) \\ \frac{\partial{f(x,y)}}{\partial{y}} &= f(x,y+1) - f(x,y) \\ \frac{\partial^2{f(x,y)}}{\partial^2{x}} &= \\ &=f'(x+1,y) - f'(x,y) \\ &=f(x+2) - f(x+1) - f(x+1) + f(x)\\ &=f(x+2)-2(x+1) + f(x)\\ \frac{\partial^2{f(x,y)}}{\partial^2{y}} &= \\ &=f'(x,y+1) - f'(x,y) \\ &=f(y+2) - f(y+1) - f(y+1) + f(y)\\ &=f(y+2)-2(y+1) + f(y)\\ \end{aligned} xf(x,y)yf(x,y)2x2f(x,y)2y2f(x,y)=f(x+1,y)f(x,y)=f(x,y+1)f(x,y)==f(x+1,y)f(x,y)=f(x+2)f(x+1)f(x+1)+f(x)=f(x+2)2(x+1)+f(x)==f(x,y+1)f(x,y)=f(y+2)f(y+1)f(y+1)+f(y)=f(y+2)2(y+1)+f(y)

Roberts算子

g x = ∂ f ( x , y ) ∂ x = f ( x + 1 , y ) − f ( x , y ) = ( 1 − 1 ) 水 平 g y = ∂ f ( x , y ) ∂ y = f ( x , y + 1 ) − f ( x , y ) = ( 1 − 1 ) 垂 直 g 1 = ∂ f ( x , y ) ∂ y = f ( x + 1 , y ) − f ( x , y + 1 ) = ( 0 1 − 1 0 ) 对 角 线 g 2 = ∂ f ( x , y ) ∂ y = f ( x + 1 , y + 1 ) − f ( x , y ) = ( 1 0 0 − 1 ) 对 角 线 \begin{aligned} g_x &=\frac{\partial{f(x,y)}}{\partial{x}} &= f(x+1,y) - f(x,y) &= \begin{pmatrix} 1 &-1\end{pmatrix} & 水平\\ g_y &=\frac{\partial{f(x,y)}}{\partial{y}} &= f(x,y+1) - f(x,y) &= \begin{pmatrix} 1-1\end{pmatrix} & 垂直\\ g_1 &=\frac{\partial{f(x,y)}}{\partial{y}} &= f(x+1,y) - f(x,y+1) &= \begin{pmatrix} 0 & 1\\ -1 &0\end{pmatrix} &对角线\\ g_2 &=\frac{\partial{f(x,y)}}{\partial{y}} &= f(x+1,y+1) - f(x,y) &= \begin{pmatrix} 1 & 0\\ 0 &-1\end{pmatrix} &对角线\\ \end{aligned} gxgyg1g2=xf(x,y)=yf(x,y)=yf(x,y)=yf(x,y)=f(x+1,y)f(x,y)=f(x,y+1)f(x,y)=f(x+1,y)f(x,y+1)=f(x+1,y+1)f(x,y)=(11)=(11)=(0110)=(1001)线线

prewitt

G x = f ( x + 1 , y − 1 ) − f ( x − 1 , y − 1 ) + f ( x + 1 , y ) − f ( x − 1 , y ) + f ( x + 1 , y − 1 ) − f ( x − 1 , y − 1 ) = ( − 1 − 1 − 1 0 0 0 1 1 1 ) 水 平 G y = f ( x − 1 , y + 1 ) − f ( x − 1 , y − 1 ) + f ( x , y + 1 ) − f ( x , y − 1 ) + f ( x + 1 , y + 1 ) − f ( x + 1 , y − 1 ) = ( − 1 0 1 − 1 0 1 − 1 0 1 ) 垂 直 G 1 = f ( x , y − 1 ) − f ( x − 1 , y ) + f ( x + 1 , y + 1 ) − f ( x − 1 , y + 1 ) + f ( x + 1 , y ) − f ( x , y + 1 ) = ( 0 1 1 − 1 0 1 − 1 − 1 0 ) 对 角 线 G 2 = f ( x + 1 , y ) − f ( x , y − 1 ) + f ( x + 1 , y + 1 ) − f ( x − 1 , y − 1 ) + f ( x , y + 1 ) − f ( x − 1 , y ) = ( − 1 − 1 0 − 1 0 1 0 1 1 ) 对 角 线 \begin{aligned} \\ G_x &= f(x+1,y-1) - f(x-1,y-1) + f(x+1,y) - f(x-1,y) + f(x+1,y-1) - f(x-1,y-1)\\ &= \begin{pmatrix} -1 & -1 & -1\\ 0 & 0 & 0 \\ 1 & 1 & 1 \\ \end{pmatrix} & 水平\\ G_y &= f(x-1,y+1) - f(x-1,y-1) + f(x,y+1) - f(x,y-1) + f(x+1,y+1) - f(x+1,y-1) \\&= \begin{pmatrix} -1 & 0 & 1\\ -1 & 0 & 1 \\ -1 & 0 & 1 \\ \end{pmatrix} & 垂直\\ G_1 &= f(x,y-1) - f(x-1,y) + f(x+1,y+1) - f(x-1,y+1) + f(x+1,y) - f(x,y+1) \\ &= \begin{pmatrix} 0 & 1 & 1\\ -1 & 0 & 1 \\ -1 & -1 & 0 \\ \end{pmatrix} & 对角线\\ G_2 &= f(x+1,y) - f(x,y-1) + f(x+1,y+1) - f(x-1,y-1) + f(x,y+1) - f(x-1,y) \\ &= \begin{pmatrix} -1 & -1 & 0\\ -1 & 0 & 1 \\ 0 & 1 & 1 \\ \end{pmatrix} & 对角线\\ \end{aligned} GxGyG1G2=f(x+1,y1)f(x1,y1)+f(x+1,y)f(x1,y)+f(x+1,y1)f(x1,y1)=101101101=f(x1,y+1)f(x1,y1)+f(x,y+1)f(x,y1)+f(x+1,y+1)f(x+1,y1)=111000111=f(x,y1)f(x1,y)+f(x+1,y+1)f(x1,y+1)+f(x+1,y)f(x,y+1)=011101110=f(x+1,y)f(x,y1)+f(x+1,y+1)f(x1,y1)+f(x,y+1)f(x1,y)=110101011线线

Sobel

G x = f ( x + 1 , y − 1 ) − f ( x − 1 , y − 1 ) + 2 ( f ( x + 1 , y ) − f ( x − 1 , y ) ) + f ( x + 1 , y − 1 ) − f ( x − 1 , y − 1 ) = ( − 1 − 2 − 1 0 0 0 1 2 1 ) 水 平 G y = f ( x − 1 , y + 1 ) − f ( x − 1 , y − 1 ) + 2 ( f ( x , y + 1 ) − f ( x , y − 1 ) ) + f ( x + 1 , y + 1 ) − f ( x + 1 , y − 1 ) = ( − 1 0 1 − 2 0 2 − 1 0 1 ) 垂 直 \begin{aligned} \\ G_x &= f(x+1,y-1) - f(x-1,y-1) + 2(f(x+1,y) - f(x-1,y)) + f(x+1,y-1) - f(x-1,y-1) \\&= \begin{pmatrix} -1 & -2 & -1\\ 0 & 0 & 0 \\ 1 & 2 & 1 \\ \end{pmatrix} & 水平\\ G_y &= f(x-1,y+1) - f(x-1,y-1) + 2(f(x,y+1) - f(x,y-1)) + f(x+1,y+1) - f(x+1,y-1) \\&= \begin{pmatrix} -1 & 0 & 1\\ -2 & 0 & 2 \\ -1 & 0 & 1 \\ \end{pmatrix} & 垂直\\ \end{aligned} GxGy=f(x+1,y1)f(x1,y1)+2(f(x+1,y)f(x1,y))+f(x+1,y1)f(x1,y1)=101202101=f(x1,y+1)f(x1,y1)+2(f(x,y+1)f(x,y1))+f(x+1,y+1)f(x+1,y1)=121000121

Lapacian

是二阶的检测算法,二阶相对于一阶可以找出灰度突变的类型,在有些情况下,如灰度均匀变化的图像,只利用一阶找不到边界,此时二阶导数就能提供很有用的信息。
G = ∂ 2 f ( x , y ) ∂ 2 x + ∂ 2 f ( x , y ) ∂ 2 y = f ( x + 2 ) − 2 ( x + 1 ) + f ( x ) + f ( y + 2 ) − 2 ( y + 1 ) + f ( y ) = ( 0 1 0 1 − 4 1 0 1 0 ) = ( 1 1 1 1 − 8 1 1 1 1 ) 变 形 \begin{aligned} G &= \frac{\partial^2{f(x,y)}}{\partial^2{x}} +\frac{\partial^2{f(x,y)}}{\partial^2{y}}\\ &= f(x+2)-2(x+1) + f(x) + f(y+2)-2(y+1) + f(y)\\ &= \begin{pmatrix} 0 & 1 & 0\\ 1 & -4 & 1\\ 0 & 1& 0 \end{pmatrix}\\ &=\begin{pmatrix} 1 & 1 & 1\\ 1 & -8 & 1\\ 1 & 1& 1 \end{pmatrix} \qquad变形 \end{aligned} G=2x2f(x,y)+2y2f(x,y)=f(x+2)2(x+1)+f(x)+f(y+2)2(y+1)+f(y)=010141010=111181111
G = G x 2 + G t 2 G = ∣ G x ∣ + ∣ G y ∣ G = m a x ( ∣ G x ∣ , ∣ G y ∣ ) θ = a r c t a n ( G y G x ) 梯 度 方 向 \begin{aligned} G &=\sqrt{G_x^2 + G_t^2} \\G &= \vert{G_x}\vert + \vert{G_y} \vert \qquad\\ G &= max(\vert G_x\vert,\vert G_y\vert)\\ \theta &= arctan(\frac{G_y}{G_x}) \qquad 梯度方向 \end{aligned} GGGθ=Gx2+Gt2 =Gx+Gy=max(Gx,Gy)=arctan(GxGy)

算子比较

算子优缺点
Roberts对具有陡峭的低噪声的图像处理效果较好,但是利用Roberts算子提取边缘的结果比较粗糙,不是很平滑,因此边缘定位精度不是很高
prewitt对灰度渐变和噪声较多的图像处理较好,对噪声有一定的抑制,抑制的原理是通过像素平均,像素平均相当于对图像的低通滤波,所以定位不如Roberts。
soble是对Prewitt的加权平方,认为不同距离的像素对当前像素的影响是不一样的,像素越近,影响越大。对灰度渐变和噪声较多的图像处理较好,对边缘定位比较准确。
Lapacian具有同向性,对图像中的阶跃性边缘定位准确,对噪声敏感,一般进行检测是要先滤波,丢失一部分边缘方向信息,造成一些不连续的检测边缘

参考链接:https://blog.csdn.net/xiaojiegege123456/article/details/7714863
https://blog.csdn.net/tigerda/article/details/61192943

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页