zoukankan      html  css  js  c++  java
  • 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

     
     
  • 相关阅读:
    sysbench测试
    ab压力测试
    kubernetes之Pod水平自动伸缩(HPA)
    JAVA实现Excel批量导入
    Json对象转为实体对象
    Java Web用Freemarker生成带图片的Word文档
    Spring3 MVC 深入核心研究
    SpringMVC深度探险(四) —— SpringMVC核心配置文件详解
    SpringMVC深度探险(三) —— DispatcherServlet与初始化主线
    SpringMVC深度探险(二) —— SpringMVC概览
  • 原文地址:https://www.cnblogs.com/jason-wyf/p/5876072.html
Copyright © 2011-2022 走看看