• Sobel算子 (转)


    幻灯片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

     
     
  • 相关阅读:
    CSS中expression使用简介
    过滤Html标签代码
    ASP.NET上传图片时显示预览
    30分钟搞定.net正则表达式
    DataFormatString格式化
    Js事件大全
    Hibernate关联映射
    动态给下拉框添加选项
    python模块整理文章导航
    python学习笔记文章导航
  • 原文地址:https://www.cnblogs.com/jason-wyf/p/5876072.html
Copyright © 2020-2023  润新知