图像处理_边缘检测

边缘检测:
https://blog.csdn.net/tigerda/article/details/61192943

常见边缘检测算子:Roberts 、Sobel 、Prewitt、Laplacian、Log/Marr、Canny、Kirsch、Nevitia

一阶微分算子:Roberts 、Sobel 、Prewitt

模板:
Roberts  
|1, 0|
|0,-1|

sobel算子
|1, 0 , 1|
|1, 0 , 1|
|1, 0 , 1|

prewitt算子
|1, 0 , 1|
|1, 0 , 1|
|1, 0 , 1|

Sobel各向同性算子:

   |-1  ,0,  1|     |-1,-跟2,-1|
Gx=|-跟2,0,跟2| ,Gx=| 0,   0, 0|
   |-1  ,0,  1|     | 1, 跟2, 1|

Sobel各向同性算子的权值比普通Sobel算子的权值更准确。为什么?模板的权值是离中心位置越远则权值(看绝对值)影响越小

计算边缘幅值与方向?以Sobel算子为例。3*3Sobel两个方向的算子在图像上滑动,模板与其覆盖的图像3*3区域9个像素进行卷积,求和后得到此方向的边缘检测幅值。

   |-1,0,1|            |-1,-2,-1|
Gx=|-2,0,2|*f(x,y) ,Gx=| 0, 0, 0|*f(x,y)
   |-1,0,1|            | 1, 2, 1|

G^2=Gx^2+Gy^2

P=arctan(Gx/Gy)

f(x,y)为图像,Gx和Gy分别是水平和竖直方向算子的卷积结果,G则是最终得到的边缘幅值,θ值则是边缘方向。当然G的计算有时简化为
G=|Gx|+|Gy| 或者 G=max(|Gx|,|Gy|)

二阶微分算子:Laplacian、Log/Marr

Laplacian算子
   |-1,-1,-1|      
Gx=|-1, 8,-1|
   |-1,-1,-1|

   | 0,-1, 0|      
Gx=|-1, 4,-1|
   | 0,-1, 0|

   |-2,-4,-4,-4,-2|
   |-4, 0, 8, 0,-4|      
Gx=|-4, 8,24, 8,-4|
   |-4, 0, 8, 0,-4|
   |-2,-4,-4,-4,-2|
Log边缘检测则是先进行高斯滤波再进行拉普拉斯算子检测

非微分边缘检测算子:Canny

算 子 优缺点比较
Roberts 对具有陡峭的低噪声的图像处理效果较好,但利用 Roberts算子提取边缘的结果是边缘比较粗,因此边缘定位不是很准确。
Sobel 对灰度渐变和噪声较多的图像处理效果比较好, Sobel算子对边缘定位比较准确。
Kirsch 对灰度渐变和噪声较多的图像处理效果较好。
Prewitt 对灰度渐变和噪声较多的图像处理效果较好。
aplacian 对图像中的阶跃性边缘点定位准确,对噪声非常敏感,丢失一部分边缘的方向信息,造成一些不连续的检测边缘。
LoG 算 子 经 常 出 现 双 边 缘 像 素 边 界 , 而 且 该 检 测 方 法 对 噪 声 比铰 敏 感 , 所 以 很 少 用 LoG算 子 检 测 边 缘 , 而 是 用 来 判 断 边 缘 像素是位于图像的明区还是暗区。
Canny 此方法不容易受噪声的干扰,能够检测到真正的弱边缘。在edge函数中,最有效的边缘检测方法是 Canny方法。该方法的优点在于使用两种不同的阈值分别检测强边缘和弱边缘,并且汉当弱边缘与强边缘相连时,才将弱边缘包含在输出图像中。因此,这种方法不容易被噪声“填充”,跟容易检测出真正的弱边缘。

你可能感兴趣的:(matlab,图像处理,我的图像处理笔记记录)