• 
    <ul id="auswy"><sup id="auswy"></sup></ul>
  • <ul id="auswy"></ul>
    ABB
    關(guān)注中國自動化產(chǎn)業(yè)發(fā)展的先行者!
    CAIAC 2025
    2025工業(yè)安全大會
    OICT公益講堂
    當(dāng)前位置:首頁 >> 案例 >> 案例首頁

    案例頻道

    基于matlab邊緣提取的幾種方法的比較
    • 企業(yè):控制網(wǎng)    
    • 點(diǎn)擊數(shù):46549     發(fā)布時間:2006-08-13 17:17:54
    • 分享到:
    簡要介紹了幾個基于Matlab的圖像輪廓提取技術(shù),如roberts、 sobel、prewitt、 Laplacian、 canny等邊緣檢測算子,比較了這幾個邊緣檢測算子的處理結(jié)果.

    1Matlab簡述

    Matlab是國際上最流行的科學(xué)與工程計(jì)算的軟件工具,它起源于矩陣運(yùn)算,已經(jīng)發(fā)展成一種高度集成的計(jì)算機(jī)語言。有人稱它為“第四代”計(jì)算機(jī)語言,它提供了強(qiáng)大的科學(xué)運(yùn)算、靈活的程序設(shè)計(jì)流程、高質(zhì)量的圖形可視化界面設(shè)計(jì)、便捷的與其它程序和語言接口的功能。隨著Matlab語言功能越來越強(qiáng)大,不斷適應(yīng)新的要求并提出新的解決方法,可以預(yù)見,在科學(xué)運(yùn)算,自動控制與科學(xué)繪圖領(lǐng)域,Matlab語言將長期保持其獨(dú)一無二的地位。

    2、幾種常用的邊緣檢測算子

    邊緣是圖像的最重要的特征,。邊緣是指周圍像素灰度有階躍變化或屋頂變化的那些像素的集合。邊緣檢測主要是灰度變化的度量、檢測和定位。有很多種不同的邊緣檢測方法,同一種方法使用的濾波器也不盡相同。圖像邊緣檢測就是研究更好的邊緣檢測方法和檢測算子。

    邊緣檢測的基本思想首先是利用邊緣增強(qiáng)算子,突出圖像中的局部邊緣,然后定義象素的“邊緣強(qiáng)度”,通過設(shè)置閾值的方法提取邊緣點(diǎn)集。由于噪聲和模糊的存在,監(jiān)測到的邊界可能會變寬或在某點(diǎn)處發(fā)生間斷。因此,邊界檢測包括兩個基本內(nèi)容:

    l         用邊緣算子提取出反映灰度變化的邊緣點(diǎn)集

    l         在邊緣點(diǎn)集合中剔除某些邊界點(diǎn)或填補(bǔ)邊界間斷點(diǎn),并將這些邊緣連接成完整的線

    常用的檢測算子有微分算子、拉普拉斯高斯算子和canny算子。

    Matlab圖像處理工具箱中,提供了edge函數(shù)利用以上算子來檢測灰度圖像的邊緣。

    2.1微分算子法

       經(jīng)典的邊緣提取方法是考察圖像的每個像素的某個鄰域內(nèi)灰度的變化,利用邊緣鄰近一階或二階方向?qū)?shù)變化規(guī)律,用簡單的方法檢測邊緣,稱為微分算子法。

    導(dǎo)數(shù)算子具有突出灰度變化的作用,對圖像運(yùn)用導(dǎo)數(shù)算子,灰度變化較大的點(diǎn)處算得的值較高,因此我們將圖像的導(dǎo)數(shù)算子運(yùn)算值作為相應(yīng)的邊界強(qiáng)度,所以可以通過對這些導(dǎo)數(shù)值設(shè)置閾值,提取邊界的點(diǎn)集。

    一階導(dǎo)數(shù)是最簡單的導(dǎo)數(shù)算子。已知在點(diǎn)fx,y)處,梯度grad(F(x,y))的幅度為:


    它們分別求出了灰度在xy方向上的變化率,但是要對每一個像素進(jìn)行以上的運(yùn)算,運(yùn)算量較大,所以在實(shí)際應(yīng)用中常用小區(qū)域模板卷積運(yùn)算來進(jìn)行近似計(jì)算。模板運(yùn)算的想法是將賦予某一個像素的值作為它本身灰度值和相鄰象素灰度值的函數(shù)。運(yùn)用中,對x,y方向各用一個模板。

    2.1.1 Sobel算子

    Sobel算子是濾波算子的形式來提取邊緣。XY方向各用一個模板,兩個模板組合起來構(gòu)成1個梯度算子。X方向模板對垂直邊緣影響最大,Y方向模板對水平邊緣影響最大。

           

    1 Sobel算子模板

    2.1.2 robert算子

       Robert算子是一種梯度算子,它用交叉的差分表示梯度,是一種利用局部差分算子尋找邊緣的算子,對具有陡峭的低噪聲的圖像效果最好:



    模板如圖:

                     

       

    2 Robert算子模板

     

    2.1.3 prewitt算子

       prewitt算子是加權(quán)平均算子,對噪聲有抑制作用,但是像素平均相當(dāng)于對圖像進(jìn)行地同濾波,所以prewitt算子對邊緣的定位不如robert算子。模板如圖;

        

    3 prewitt算子模板

    代碼如下:

    原始圖像為三位編織復(fù)合材料二維截面圖,對原始圖像進(jìn)行前期處理

    i=imread('d1.jpg');

    i2=im2double(i);

    ihd=rgb2gray(i2);

    [thr,sorh,keepapp]=ddencmp('den','wv',ihd);

    ixc=wdencmp('gbl',ihd,'sym4',2,thr,sorh,keepapp);

    figure,imshow(ixc),title('消噪后圖像 ');

    k2=medfilt2(ixc,[7 7]);

    figure,imshow(k2),title('中值濾波');

    isuo=imresize(k2,0.25,'bicubic');

     

    %sobert、robertprewitt算子檢測圖像邊緣

    esobel=edge(isuo,'sobel');

    erob=edge(isuo,'roberts');

    eprew=edge(isuo,'prewitt');

    subplot(2,2,1);

    imshow(isuo);title('前期處理圖像');

    subplot(2,2,2);

    imshow(esobel);title('sobel算子提取');

    subplot(2,2,3);

    imshow(erob);title('roberts算子提取');

    subplot(2,2,4);

    imshow(eprew);title('prewitt算子提取');

                                 
     圖4 微分算子邊緣檢測結(jié)果


    2.2
    Laplacian算子
      
    拉普拉斯高斯算子是一種二階導(dǎo)數(shù)算子,將在邊緣處產(chǎn)生一個陡峭的零交叉。前面介紹的幾種梯度法具有方向性,不能對各種走向的邊緣都具有相同的增強(qiáng)效果。但是Laplacian算子是各向同性的,能對任何走向的界線和線條進(jìn)行銳化,無方向性。這是拉普拉斯算子區(qū)別于其他算法的最大優(yōu)點(diǎn)。

    對一個連續(xù)函數(shù),它在位置的拉普拉斯算子定義如下:



    在圖像邊緣檢測中,為了運(yùn)算方便,函數(shù)的拉普拉斯高斯算子也是借助模板來實(shí)現(xiàn)的。其模板有一個基本要求:模板中心的系數(shù)為正,其余相鄰系數(shù)為負(fù),所有系數(shù)的和應(yīng)該為零。




                             圖
    5 Laplacian算子模板


    2.3
     Canny邊緣檢測法

         Canny邊緣檢測是一種比較新的邊緣檢測算子,具有很好的邊緣監(jiān)測性能,在圖像處理中得到了越來越廣泛的應(yīng)用。它依據(jù)圖像邊緣檢測最優(yōu)準(zhǔn)則設(shè)計(jì)canny邊緣檢測算法:

    (1)       首先用2D高斯濾波模板進(jìn)行卷積以消除噪聲

    (2)       利用導(dǎo)數(shù)算子找到圖像灰度地沿著兩個方向的偏導(dǎo)數(shù),并求出梯度的大?。?/SPAN> 

    (3)       利用(2)的結(jié)果計(jì)算出梯度的方向


    (4)       一旦知道了邊緣的方向,就可以把邊緣的梯度方向大致分為四種:水平、豎直、45度方向、135度方向。通過梯度的方向,就可以找到這個像素梯度方向的鄰接像素。

    (5)       遍歷圖像,若某個像素的灰度值與其梯度方向上前后兩個像素的灰度值相比不是最大的,那么這個像素值置為0,即不是邊緣。

    (6)       使用累計(jì)直方圖計(jì)算兩個閾值,大于高閾值的一定是邊緣,小于低閾值的一定不是邊緣,介于之間的,看這個像素的鄰接像素中有沒有超過高閾值的邊緣像素,如果有的話那么它就是邊緣了,否則它就不是邊緣。

    調(diào)用Laplacian算子、canny算子檢測法檢測圖像邊緣的程序如下:

    elog=edge(isuo,'log');

    ecanny=edge(isuo,'canny');

    subplot(1,2,1);

    imshow(elog);title('log算子提取');

    subplot(1,2,2);

    imshow(ecanny);title('canny算子提取');

     


    6 canny算子、Laplacian算子檢測結(jié)果

    3.邊緣檢測結(jié)果比較

    Roberts算子檢測方法對具有陡峭的低噪聲的圖像處理效果較好,但是利用roberts算子提取邊緣的結(jié)果是邊緣比較粗,因此邊緣的定位不是很準(zhǔn)確。

    Sobel算子檢測方法對灰度漸變和噪聲較多的圖像處理效果較好,sobel算子對邊緣定位不是很準(zhǔn)確,圖像的邊緣不止一個像素。

    Prewitt算子檢測方法對灰度漸變和噪聲較多的圖像處理效果較好。但邊緣較寬,而且間斷點(diǎn)多。

    Laplacian算子法對噪聲比較敏感,所以很少用該算子檢測邊緣,而是用來判斷邊緣像素視為與圖像的明區(qū)還是暗區(qū)。

    Canny方法不容易受噪聲干擾,能夠檢測到真正的弱邊緣。優(yōu)點(diǎn)在于,使用兩種不同的閾值分別檢測強(qiáng)邊緣和弱邊緣,并且當(dāng)弱邊緣和強(qiáng)邊緣相連時,才將弱邊緣包含在輸出圖像中。

    參考文獻(xiàn)

    [1] 趙春暉.現(xiàn)代圖像處理技術(shù)及Matlab實(shí)現(xiàn)[M].北京:人民郵電出版社,2001.

    [2] 阮秋琦.數(shù)字圖像處理學(xué)[M].北京:電子工業(yè)出版社,2001.

    [3] 何斌.數(shù)字圖像處理[M].北京:人民郵電出版社,2001.

     

     

     

    熱點(diǎn)新聞

    推薦產(chǎn)品

    x
    • 在線反饋
    1.我有以下需求:



    2.詳細(xì)的需求:
    姓名:
    單位:
    電話:
    郵件: