边缘检测学习笔记 -- Roberts, Prewitt, Sobel, Canny算子
1. 边缘检测
1.1 边缘的定义
图像局部特征的不连续性,即:灰度或结构信息的突变。
1.2 边缘检测的步骤
①降噪,平滑处理
②边缘点的检测
③边缘定位
1.3 梯度
∇ f = g r a d ( f ) ( g x g y ) = ( ∂ f ∂ x ∂ f ∂ y ) \nabla f = grad(f) \dbinom{g_x}{g_y}=\dbinom{\frac{\partial f}{\partial x}}{\frac{\partial f}{\partial y}} ∇f=grad(f)(gygx)=(∂y∂f∂x∂f)
M ( x , y ) = m a g ( ∇ f ) = g x 2 + g y 2 M(x, y)=mag(\nabla f)=\sqrt{
{g_x}^2+g_y^2} M(x,y)=mag(∇f)=gx2+gy2
其中, g x , g y g_x, g_y gx,gy和 M ( x , y ) M(x, y) M(x,y)都是与原图大小相同的图像。
梯度算子
在每个像素点计算偏导数 ∂ f ∂ x , ∂ f ∂ y \frac{\partial f}{\partial x}, \frac{\partial f}{\partial y} ∂x∂f,∂y∂f:
g x = ∂ f ( x , y ) ∂ x = f ( x + 1 , y ) − f ( x , y ) g_x=\frac{\partial f(x, y)}{\partial x}=f(x+1, y)-f(x, y) gx=∂x∂f(x,y)=f(x+1,y)−f(x,y) g x = ∂ f ( x , y ) ∂ y = f ( x , y + 1 ) − f ( x , y ) g_x=\frac{\partial f(x, y)}{\partial y}=f(x, y+1)-f(x, y) gx=∂y∂f(x,y)=f(x,y+1)−f(x,y)
1.4 常见的边缘算子
一阶算子:Roberts算子、Sobel算子、Prewitt算子...
二阶算子:Canny算子、Laplacian算子、Marr-Hildreth算子...
Roberts算子
原理:利用局部差分算子寻找边缘。采用对角线方向相邻两像素之间差的平方和近似梯度幅值检测边缘。
y i , j = x i , j y_{i,j}=\sqrt{x_{i,j}} \\ yi,j=xi,j z i , j = ( y i , j − y i + 1 , j + 1 ) 2 + ( y i + 1 , j − y i , j + 1 ) 2 z_{i,j}=\sqrt{(y_{i,j}-y_{i+1,j+1})^2+{(y_{i+1,j}-y_{i,j+1})}^2} zi,j=(yi,j−yi+1,j+1)2+(y