• Matlab中边缘提取方法简析


    1、Matlab简述

      Matlab是国际上最流行的科学与工程计算的软件工具,它起源于矩阵运算,已经发展成一种高度集成的计算机语言。有人称它为“第四代”计算机语言,它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化界面设计、便捷的与其它程序和语言接口的功能。随着Matlab语言功能越来越强大,不断适应新的要求并提出新的解决方法,可以预见,在科学运算,自动控制与科学绘图领域,Matlab语言将长期保持其独一无二的地位。

    2、几种常用的边缘检测算子

      边缘是图像的最重要的特征,边缘是指周围像素灰度有阶跃变化或屋顶变化的那些像素的集合。边缘检测主要是灰度变化的度量、检测和定位。有很多种不同的边缘检测方法,同一种方法使用的滤波器也不尽相同。图像边缘检测就是研究更好的边缘检测方法和检测算子。

      边缘检测的基本思想首先是:

        (1)利用边缘增强算子,突出图像中的局部边缘,

        (2)然后定义象素的“边缘强度”,通过设置阈值的方法提取边缘点集。

      由于噪声和模糊的存在,监测到的边界可能会变宽或在某点处发生间断。因此,边界检测包括两个基本内容:

        i. 用边缘算子提取出反映灰度变化的边缘点集

        ii. 在边缘点集合中剔除某些边界点或填补边界间断点,并将这些边缘连接成完整的线

      常用的检测算子有微分算子、拉普拉斯高斯算子和canny算子。在Matlab图像处理工具箱中,提供了edge函数利用以上算子来检测灰度图像的边缘。

    3、边缘检测算子举例(MATLAB)

      数字图像处理技术中常用的边缘检测算子有Sobel算子,Roberts算子,prewitt算子,log算子,canny算子。其中canny算子检测效果最好。

      MATLAB实现算法如下:

    I=imread('lena.bmp');% 提取图像
    BW1=edge(I,'sobel'); %用SOBEL算子进行边缘检测
    BW2=edge(I,'roberts');%用Roberts算子进行边缘检测
    BW3=edge(I,'prewitt'); %用prewitt算子进行边缘检测
    BW4=edge(I,'log'); %用log算子进行边缘检测
    BW5=edge(I,'canny'); %用canny算子进行边缘检测
    h=fspecial('gaussian’,5);
    BW6=edge(I,’canny’);
    subplot(2,3,1), imshow(BW1);
    title(‘sobel edge check’);
    subplot(2,3,2), imshow(BW2);
    title(‘sobel edge check’);
    subplot(2,3,3), imshow(BW3);
    title(‘prewitt edge check’);
    subplot(2,3,4), imshow(BW4);
    title(‘log edge check’);
    subplot(2,3,5), imshow(BW5);
    title(‘canny edge check’);
    subplot(2,3,6), imshow(BW6);
    title(‘gasussian&canny edge check’);%此为用高斯滤波后Canny算子边缘检测结果

  • 相关阅读:
    selenuim
    selenium
    selenium
    selenium
    【OSG】 报错:丢失osg100-osgDB.dll
    无法启动此程序,因为计算机中丢失 zlibd.dll【OSG】
    无法打开mfc120.lib
    jquery中的$("#id")与document.getElementById("id")的区别
    arcgis api for javascript 各个版本的SDK下载
    ajax与servlet交互(通过JSON),JAVA的arraylist传到前端的方法
  • 原文地址:https://www.cnblogs.com/wangduo/p/5555504.html
Copyright © 2020-2023  润新知