蔣翠翠李明
(華中師范大學,湖北武漢430079)
在實際圖像研究中,常常只有圖像中那些感興趣的目標才能為我們提供高效、有用的信息。這些目標一般對應圖像中特定的、具有獨特性質的區域。圖像分割[1]就是將圖像劃分成若干個這樣的有意義區域的過程,各區域是具有相近特性的像素的連通集合。
圖像分割是數字圖像處理的重要技術之一,其基礎是像素間的相似性和跳變性。圖像分割技術主要分為四大類:閾值分割,區域分割,邊緣檢測和差分法運動分割(主要針對運動圖像的分割)。下面分別對前三類分割技術作簡要介紹,并重點對邊緣檢測技術的幾種常用算子進行比較分析,通過MATLAB數字圖像處理工具編程實現基于各算子的邊緣檢測。
閾值分割[2]是一種常用的圖像分割方法,它主要利用圖像中要提取的目標物與其背景在灰度特性上的差異,通過設置合適的灰度門限(閾值),將圖像的灰度劃分為兩個或多個灰度區間,以確定有意義的區域或分割物體的邊界。閾值分割常用于圖像的二值化處理,即選擇一個合適的閾值,通過判斷圖像中的每一個像素點的特征屬性是否滿足閾值的要求來確定圖像中該像素點是屬于目標區域還是屬于背景區域,從而將圖像轉化成二值圖像。
在用閾值法對圖像進行分割時,閾值的取值不同,對于處理結果的影響很大。閾值過大或過小,都會導致分割的誤差增大。根據閾值選取的方法不同,閾值分割可分為直方圖閾值分割,類間方差閾值分割,二維最大熵閾值分割和模糊閾值分割。
圖像分割的最終目的是把圖像分成若干區域,根據區域的形成過程不同,分割方法分為兩種:區域生長法和區域分裂合并法。
區域生長法的主要過程是:從一個已知種子點開始,依次檢測其鄰近點,根據檢測標準,加入與其特性相似的鄰近點形成一個區域,在各個方向上生長區域,當新的點被合并后再用新的區域重復這一過程,直到沒有可接受的鄰近點時生長過程終止;對于有多個目標區域的圖像,可在之前已劃分的區域外再選取一種子點,按同樣過程生成新的區域;最終將圖像分割成若干個目標區域。
區域分裂合并[2]方法利用了圖像數據的金字塔或四叉樹數據結構的層次概念,將圖像劃分成一組任意不相交的初始區域,根據給定的均勻性檢測準則進行分裂和合并這些區域,逐步改善區域劃分的性能,直至最后將圖像分成數量最少的均勻區域為止。
邊緣是指圖像中像素灰度值或色彩等屬性有突變的像素的集合,它存在于目標與背景、目標與目標之間,包含了豐富的圖像信息。基于邊緣檢測[2]的圖像分割正是利用邊緣的灰度變化特性,通過考察圖像中各像素在某個鄰域內灰度的變化,利用邊緣鄰近一階或二階方向導數變化的規律檢測目標物邊緣,從而實現圖像分割。邊緣檢測可借助空域微分算子通過卷積來實現。對圖像進行微分運算,可求得灰度的變化率,加強圖像中高頻分量的作用,從而使圖像中的邊緣更清晰。實際數字圖像圖像處理中,常用差分近似微分,通過小區域模板卷積近似實現微分運算,這是利用各種微分算子進行邊緣檢測的基本原理。下面以梯度算子為例對邊緣檢測原理進行具體分析。
對于圖像函數f(x,y),它在像素點(x,y)處的梯度是一個矢量,定義為:

梯度有兩個重要特性:
(1)梯度的方向為函數f(x,y)最大變化率的方向;
用差分近似偏微分,G[f(i,j)]可近似表示為:

進一步近似簡化得,

這種梯度法又稱為水平垂直差分法。其中各像素點的相對位置如圖1所示,與之對應的模板如圖2所示,Gx、Gy分別對應其中水平方向和垂直方向的模板,兩個模板共同構成一個梯度算子。

圖1 像素點的相對位置

圖2 水平垂直差分法梯度算子
(注:模板中帶*的像素點表示當前被檢測像素點的位置,下同)
由梯度的計算式可知,在圖像中灰度變化較大的區域,對應的梯度幅度較大,變化平緩的區域,對應的梯度幅度較小。圖像中的邊緣即對應梯度值較大的區域。因此,根據梯度的幅度可以檢測出圖像中的邊緣。
常用的邊緣檢測算子還有Prewitt算子,Sobel算子,Canny算子,LOG算子等,其中LOG算子為二階微分算子,其它算子為一階微分算子。各種微分算子的模板大小和其中的元素值不相同,但基本原理都同上面相同。下面對上述幾種算子分別作介紹,并基于各種算子對同一圖像利用MATLAB進行邊緣檢測,比較分析。
Roberts算子采用交叉差分的方法近似計算梯度,因此也稱為Roberts交叉算子。它對應的2*2模板如圖3所示:

圖3 Roberts算子
其梯度計算式可近似表示為:

Roberts算子邊緣定位準確,但在加強邊緣的同時也使噪聲得到增強,因而對噪聲敏感。
Prewitt算子和Sobel算子均由兩個3*3的模板組成,如圖4和5所示。與Roberts算子不同,這兩種算子采用被檢測點兩側(行或列)像素的差分來近似微分,引入了平均因素,對圖像中的隨機噪聲有一定的抑制作用。

圖4 Prewitt算子

圖5 Sobel算子
Canny的研究思想主要是把檢測像素點轉換為檢測單位函數極大值,他指出一個好的邊緣檢測算子應有三個特性:檢測性噪比高,邊緣定位精度高,單邊響應效果好。Canny算子基于Laplace濾波,采用兩個閾值,對強邊和弱邊進行檢測。從實驗結果可以看出,相對其它邊緣檢測算子,Canny算子對像素變化更加敏感,能更好地捕捉圖像中的微弱邊緣。
LOG算子,即拉普拉斯—高斯算子。LOG算子先通過高斯濾波器對圖像進行平滑濾波,再對圖像進行拉普拉斯運算,最后通過檢測過零點來確定圖像邊緣。
MATLAB圖形處理工具箱中提供了基于上述五種算子的邊緣檢測和過零檢測共六種邊緣檢測方法[4]。圖6為利用MATLAB對Lena灰度圖像運用各種微分算子進行邊緣檢測的效果圖。

圖6 各種算子邊緣檢測效果
主要程序代碼為:


對比各種算子的邊緣檢測效果,可以分析出,Roberts算子算法最簡單,但對圖像中的噪聲敏感,邊緣定位精度不如其它算子高,有些強邊亦不能很好地檢測出來;Prewitt算子和Sobel算子相對Roberts算子而言,對強邊的檢測效果較好,對弱邊則反應較遲鈍;Canny算子由于采用雙閾值分割,能較好地檢測出圖像中的強邊和弱邊,且邊緣點的連續性也較好;LOG算子在微分前先對圖像濾波,能較好地抑制噪聲干擾,LOG算子采用過零檢測,對于圖像中對弱邊也較敏感,但邊緣單邊響應不如Canny算子好,邊緣連續性也較Canny算子差。
各種算子的特點不同,相應邊緣檢測也各有優劣,不可簡單地說孰好孰壞。實際應用中,可根據不同場合選擇不同的微分算子對圖像進行分割。例如,在只需大致識別圖像中目標物輪廓,可忽略圖像內部細節時,選用Roberts算子、Prewitt算子或Sobel算子,就能達要求,且計算量相對較小。需對圖像作較全面邊緣檢測時,Canny算子和LOG算子都是不錯的選擇。在提取圖像輪廓時,Canny算子就相對較有優勢。總之,根據需求合理選則圖像分割方法是十分必要的。
在實驗中,通過整合各種邊緣檢測方法,可以達到更好的圖像分割效果。例如,將邊緣檢測與閾值分割聯合使用,對于同一算子,選取不同閾值,分割效果也明顯不同。圖7為利用Sobel算子在不同閾值下進行圖像分割的結果。主要MATLAB源程序如下:



圖7 Sobel算子下不同閾值的分割效果
各種圖像分割方法有著相同的分割基理,即利用圖像中像素間的相似性和跳變性。這是多種圖像分割方法能夠整合的基礎。合理整合多種分割方法,使之兼具不同分割方法的優勢,可以達到更好的分割效果。
本文主要對基于邊緣檢測的圖像分割的常用算子進行了比較分析,指出了不同場合算子的適用情況。基于邊緣檢測的圖像分割技術具有豐富的靈活性,是圖像分割中一種很基礎也很常用的方法。目前,對于各種邊緣檢測算子的優化,也是圖像分割中一個研究的熱點。隨著圖像分割技術的不斷發展,各種分割方法的整合也一定會受到更多研究者的青睞。
[1]章毓晉.圖像工程[M].北京:清華大學出版社,2006.
[2]何東鍵等.數字圖像處理[M].西安:電子科技大學出版社,2003.
[3]劉翠艷.基于MATLAB的圖像處理方法及分析[J].電腦與電信,2009(4):84-86.
[4]Rafael C.等.數字圖像處理:MATLAB版[M].北京:電子工業出版社,2005.