Sobel算子

来源:互联网 发布:js bind方法带参数 编辑:程序博客网 时间:2024/04/30 21:30

幻灯片1

Sobel算子 

幻灯片2

一、Sobel边缘检测算子

l 在讨论边缘算子之前,首先给出一些术语的定义:

l (1)边缘:灰度或结构等信息的突变处,边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。

l (2)边缘点:图像中具有坐标[x,y],且处在强度显著变化的位置上的点。

l (3)边缘段:对应于边缘点坐标[x,y]及其方位 ,边缘的方位可能是梯度角。

幻灯片3

二、Sobel算子的基本原理

l Sobel算子是一阶导数的边缘检测算子,在算法实现过程中,通过3×3模板作为核与图像中的每个像素点做卷积和运算,然后选取合适的阈值以提取边缘。

l 采用3×3邻域可以避免在像素之间内插点上计算梯度。Sobel算子也是一种梯度幅值,即:

l 其中的偏导数Sx 和Sy可用卷积模板来实现。


幻灯片4

Sx=(Z1+2Z2+Z3)-(Z7+2Z8+Z9)

Sy=(Z1+2Z4+Z7)-(Z3+2Z6+Z9)


幻灯片5

l Sobel算子算法的优点是计算简单,速度快。但是由于只采用了2个方向的模板,只能检测水平和垂直方向的边缘,因此这种算法对于纹理较为复杂的图像,其边缘检测效果就不是很理想。该算法认为:凡灰度新值大于或等于阈值的像素点时都是边缘点。这种判断欠合理,会造成边缘点的误判,因为许多噪声点的灰度值也很大

幻灯片6

三、模板方向的改变

幻灯片7


幻灯片8

四、Sobel算子图像边缘检测的MATLB程序实现

l >> f=imread('peppers.png');

l >> f=rgb2gray(f);

l >> f=im2double(f);

l >> figure,imshow(f),title('原始图像');

l >> [SFST Threshold] =edge(f,'sobel','horizontal');

l >> figure,imshow(SFST),title(' 水平图像边缘检测');

l >> [VSFAT Threshold]=edge(f,'sobel','vertical');

l >> figure,imshow(VSFAT),title('垂直图像边缘检测');

l >> s45=[-2 -1 0;-1 0 1;0 1 2];

l >> SFST45=imfilter(f,s45,'replicate');

l >> SFST45=SFST45>=Threshold;

l >> figure,imshow(SFST45),title('45度角图像边缘检测');

l >> s135=[0 -1 -2;1 0 -1;2 1 0];

l >> SFST135=imfilter(f,s135,'replicate');

l >> SFST135=SFST135>=Threshold;

l >> figure,imshow(SFST135),title('135度角图像边缘检测');

l >> 

幻灯片9

幻灯片10



幻灯片11


幻灯片12

幻灯片13