王智文
(廣西工學(xué)院 計算機工程系,柳州 545006)
邊緣檢測是圖像處理和計算機視覺中的基本問題和重要環(huán)節(jié),尤其是特征提取中的一個重要研究領(lǐng)域。圖像邊緣檢測可以大幅度地減少數(shù)據(jù)量,并且可以剔除與圖像處理不相關(guān)的信息,保留圖像重要的結(jié)構(gòu)屬性。然而,由于實際景物圖像的邊緣往往是各種類型的邊緣及它們模糊化后結(jié)果的組合,且實際圖像信號存在著噪聲[1]。噪聲和邊緣都屬于高頻信號,很難用頻帶做簡單取舍。所以,邊緣檢測又是圖像處理中的一個難題[2]。目前常用的邊緣檢測算法沒有哪一種具有絕對的優(yōu)越性。因此,對各種邊緣檢測算法的性能進行比較分析,根據(jù)圖像邊緣的特征和噪聲的特征以及噪聲在圖像中的分布情況選擇比較合理的邊緣檢測算法來進行邊緣檢測顯得尤為重要。本文具體比較研究了7種常用的邊緣檢測算子的特點和性能。
邊緣是指圖像中周圍像素灰度有階躍變化或屋頂變化的那些像素的集合[3]。在圖像處理過程中,邊緣能大大地減少要處理的圖像信息而又可以保留圖像中物體的形狀信息。邊緣檢測的目的是為了標識數(shù)字圖像中亮度變化明顯的點。邊緣檢測可以劃分為兩類:基于查找和基于零穿越的邊緣檢測。基于查找的方法通過尋找圖像一階導(dǎo)數(shù)中的最大和最小值來檢測邊界,通常是將邊界定位在梯度最大的方向?;诹愦┰降姆椒ㄍǔ2捎肔aplacian過零點或者非線性差分表示的過零點來進行邊緣檢測[4]。對常用的七種邊緣檢測算法簡介如下[5]:
Zero-Cross用兩個不同參數(shù)的高斯函數(shù)的差來近似地對圖像作卷積操作,通過尋找圖像的二階導(dǎo)數(shù)零穿越來尋找圖像邊界,從而檢測出圖像的邊緣點。
Roberts算子采用對角線方向相鄰兩像素之差近似的梯度幅值來檢測邊緣。算子定位比較精確,但由于不包括平滑,所以對于噪聲比較敏感,檢測水平和垂直邊緣的效果好于斜向邊緣,定位精度高,對噪聲敏感。
Sobel算子根據(jù)圖像的像素點上下、左右鄰點灰度加權(quán)差在邊緣處達到極值這一現(xiàn)象來檢測邊緣。算子對噪聲具有平滑作用,能提供較為精確的邊緣方向信息,邊緣定位精度不夠高。當對精度要求不是很高時,是一種較為常用的圖像邊緣檢測方法。
Prewitt算子邊緣檢測的思路與Sobel微分算子的思路類似,是在一個奇數(shù)大小的模板中定義其微分運算。算子對噪聲具有平滑作用,定位精度也不夠高。
Laplacian算子是二階微分算子,利用邊緣點處二階導(dǎo)函數(shù)出現(xiàn)零交叉原理來檢測圖像的邊緣。算子不具方向性,對灰度突變比較敏感,定位精度高,同時對噪聲比較敏感,且不能獲得邊緣方向等信息。
Guassian濾波器方法通過檢測二階導(dǎo)數(shù)過零點來判斷圖像邊緣點。Guassian濾波器中的σ正比于低通濾波器的寬度,σ越大,平滑作用越顯著,去除噪聲效果越好,但圖像的細節(jié)損失也越大,檢測出來的圖像邊緣精度也就越低。由于在邊緣定位精度和消除噪聲級之間存在著矛盾,所以應(yīng)該根據(jù)具體問題對噪聲水平和邊緣點定位精度要求適當選取σ。
Canny方法則是以一階導(dǎo)數(shù)為基礎(chǔ)來判斷圖像的邊緣點。它是一階傳統(tǒng)微分中檢測階躍型邊緣效果最好的算子之一。它比Roberts 算子、Sobel 算子和Prewitt 算子極小值算法的去噪能力都要強,并能產(chǎn)生較細的邊緣,但它也容易平滑掉一些邊緣信息。
通過對經(jīng)典邊緣檢測算子的實驗結(jié)果得到:閾值自動賦值時,7種算法都能夠檢測出圖像邊緣;而Laplacian和Zero-Cross算子因其所得幅值相對小,當選擇較大的閾值時,邊緣信息可能部分或全部丟失;Roberts算子和Laplace算子定位精度較高;Roberts算子檢測垂直和水平方向的階躍邊緣、線的效果比檢測斜向階躍邊緣、線的效果好,保留住了矩形的角點,而Sobel和Prewitt算子則不及,尤其是Prewitt算子基本丟失了角點信息;Sobel和Prewitt算子檢測斜向階躍邊緣、線的效果較好,保留住了三角形的角點。由此得出以下結(jié)論:
1)Roberts算子簡單直觀,Laplacian算子利用二階導(dǎo)數(shù)零交叉特性檢測邊緣。Roberts算子和Laplacian 算子定位精
度較高,但對噪聲較為敏感。Laplacian算子只能獲得邊緣位置信息,不能得到邊緣的方向等信息。
2)Prewitt 算子和 Sobel算子都是一階的微分算子,而前者是平均濾波,后者是加權(quán)平均濾波且檢測到的圖像邊緣可能大于兩個像素。這兩者對灰度漸變低噪聲的圖像有較好的檢測效果,但是對于混合多復(fù)雜噪聲的圖像,處理效果就不理想了。Prewitt 算子和Sobel算子對噪聲具有較好的平滑作用,能濾除一些噪聲,去掉部分偽邊緣,但同時也平滑了真正的邊緣;定位精度不高。Sobel算子可提供最精確的邊緣方向估計。
3)Sobel算子、Prewitt算子檢測斜向階躍邊緣效果較好,Roberts算子檢測水平和垂直邊緣效果較好。
4)Roberts算子檢測垂直和水平方向的階躍邊緣、線的效果比檢測斜向階躍邊緣、線的效果好,保留住了矩形的角點,而Sobel和Prewitt算子則不及,尤其是Prewitt算子基本丟失了角點信息。而Sobel和Prewitt算子檢測斜向階躍邊緣、線的效果較好,保留住了三角形的角點。
5)Guassian濾波器方法比Canny方法具有更好的邊緣檢測效果。Zero-Cross濾波器方法沒有解決如何組織不同尺度濾波器輸出的邊緣圖為單一的、正確的邊緣圖像的具體方法。
6)Canny算子對各種噪聲圖像最敏感。
7)Gaussian邊緣檢測算子對邊緣變化突出處檢測效果明顯,且不容易受噪聲干擾。
8)Sobel、Prewitt、Roberts邊緣檢測算子檢測圖像邊緣時易出現(xiàn)“削頂”現(xiàn)象,即對圖像頂部檢測困難。
9)對比斑點、高斯、泊松、椒鹽噪聲圖像,椒鹽噪聲圖像對各種檢測算子的檢測效果影響最大,泊松噪聲圖像對各種檢測算子的檢測效果影響最小。
通過對檢測結(jié)果進行比較得到表1和表2。
表1 七種邊緣檢測算子的特點和適用范圍比較
表2 七種邊緣檢測算子的性能比較
圖像邊緣檢測的檢測算子都不是具有絕對優(yōu)勢的方法,在圖像的抗噪聲、圖像邊緣的定位情況、是否可以檢測出圖像部分邊緣和算法運行的速度等方面各自存在優(yōu)缺點。由于圖像數(shù)據(jù)是二維的,而實際物體是三維的,從三維到二維的投影必然會造成信息的丟失,再加上成像過程中的光照不均和噪聲等原因的影響,使得有邊緣的地方不一定能被檢測出來, 而檢測出來的邊緣也不一定代表實際邊緣。實踐時要根據(jù)不同的系統(tǒng),針對不同的環(huán)境條件和要求,選擇合適的算子來對圖像進行邊緣檢測。
[1] Kang Chung-Chia,Wang Wen-June.A novel edge detection method based on the maximizing objective function [J].Pattern Recognition(S0031-3203), 2007, 40(2): 609-618.
[2] 王智文, 劉美珍, 蔡啟先, 謝國慶.基于加權(quán)改進小波變換的圖像融合算法[J], 計算機工程, 2009, 35(11): 228-230.
[3] John Canny.A Computational Approach to Edge Detection[J].IEEE Trans Pattern Analysis and Machine Intelligence, 1986, 10(12): 679-697.
[4] 馬艷, 張治輝.幾種邊緣檢測算子的比較[J].工礦自動化, 2004, 1: 54-56.
[5] 趙芳, 欒曉明, 孫越.數(shù)字圖像幾種邊緣檢測算子檢測比較分析[J].自動化技術(shù)與應(yīng)用, 2009, 28(3): 68-69.