迪娜·加爾肯
(新疆大學信息科學與工程學院,新疆 烏魯木齊 830046)
圖像分割是圖像處理與理解、模式識別和人工智能等多個領域中非常關鍵的問題,是計算機視覺技術中重要步驟,其作用在汽車車型自動識別系統(tǒng)、檢查癌細胞、精密零件表面缺陷檢測等領域中不可忽視。圖像分割是通過將圖像中感興趣的對象與其背景分割,分割出的區(qū)域作為特征提取的目標對象,特征可以是像素、顏色、紋理等。最理想的分割結果就是分割出的每一塊區(qū)域都可以表示其對象的特征,可以通過對其特征的提取進行圖像的識別和重建等任務[1]。本文主要介紹了在MATLAB開發(fā)環(huán)境下,基于邊緣檢測和閾值的圖像分割設計方法。
基于矩陣的MATLAB是目前應用廣泛的設計編程軟件,可將復雜的邏輯算法以簡單可靠的函數(shù)形式提供給用戶,并可同時提供功能性及學術性工具箱,便于用戶進行系統(tǒng)建模和仿真分析。MATLAB包含很多模塊庫,可以方便快捷的實現(xiàn)很多功能,如數(shù)據(jù)分析、算法開發(fā)、圖像處理和計算機視覺等,大大提高的編程效率。
灰度或結構等信息的突變稱為邊緣。根據(jù)圖像不同區(qū)域邊界像素灰度值變化比較劇烈的特點,首先檢測出圖像可能的邊緣點,再按照一定策略連接成輪廓,從而實現(xiàn)不同區(qū)域的圖像分割。邊緣檢測可借助空域微分算子卷積完成,空間域的微分在離散數(shù)字圖像可以采用差分來近似。基于一階導數(shù)的邊緣檢測算子有Roberts算子、Sobel算子、Prewitt算子等,基于二階導數(shù)的邊緣檢測算子有Laplacian算子、Wallis算子,LOG算子(一種改進的方式),Canny算子等。幾種算子模板如表1所示。

表1 不同算子模版
在MATLAB中通過函數(shù)BW=edge(I)來實現(xiàn)。該函數(shù)用于灰度圖像邊緣的提取,輸入I為灰度圖像,輸出BW為黑白二值邊緣圖像,支持多種格式。下面對五組圖片分別進行不同邊緣檢測算法的比較,結果如圖1所示。可以通過結果得到對于這五組圖片,canny算子的效果比較明顯。

圖1 基于邊緣檢測的算法
閾值化圖像分割的基本原理是選取一個或多個處于圖像取值范圍之中的灰度閾值,然后將圖像中各個像素的灰度值與閾值進行比較,并根據(jù)比較結果將圖像中的對應像素分成兩類或多類,從而把圖像劃分成互不交叉重疊的區(qū)域的集合,達到圖像分割的目的。
對于單個目標,則采用單閾值方法的數(shù)學模型。對于多個目標(灰度均勻,背景也灰度均勻且不同于目標),則采用多閾值方法的模型。

其中,f(x,y)為原圖像,g(x,y)為分割后的圖像,Th為選定的分割閾值。常用的閾值計算方法有:直方圖峰谷閾值選取方法(雙峰法)、迭代閾值選取、均勻性度量法、最大類間類內方差比法、p-參數(shù)法等。本文主要運用雙峰法和迭代閾值選取來實現(xiàn)。
2.2.1 雙峰法
雙峰法是先計算原圖的直方圖,通過觀察估計閾值(門限)T,一般取兩個峰值間的谷值。
下面通過三組圖片進行雙峰法算法的圖像分割,結果如圖2所示。首先根據(jù)直方圖估計兩個閾值,再對圖片進行分割,可以看出不同閾值得到的分割效果是不一樣的。

圖2 雙峰法
2.2.2 迭代閾值選取
在雙峰法的基礎上,為更好的確定閾值,需要根據(jù)目標和背景的分布,自動確定分割閾值。主要算法步驟如下:(1)初始化閾值T1;(2)用T分割圖像成兩個集合:G1和G2,其中G1包含所有灰度值小于T的像素,G2包含所有灰度值大于T的像素;(3)計算G1中像素的平均值m1及G2中像素的平均值m2;(4)計算新的閾值:T2=(m1+m2)/2;(5)如果新閾值跟原閾值之間的差值小于一個預先設定的范圍,停止循環(huán),否則繼續(xù)2-4步。即如果|T2-T1|<=t(t:收斂條件,是一個預先指定的較小的正數(shù),如t=0.5),終止迭代,T2就是所求閾值,否則T1=T2,返回第b步[3]。
下面對一組圖片進行迭代法算法的圖像分割,結果如圖3所示。從直方圖中可以看出兩個峰值之間的谷值大約在85附近,通過迭代法計算出來的結果為89,兩種方法得出的結果相近。其中雙峰法更適用于直方圖雙峰較明顯的圖,而迭代法更適用于直方圖中難以確定谷值的情況。

圖3 迭代閾值法
本文介紹了圖像分割的常用設計算法,給出了基于MATLAB的算法仿真設計方法,有助于從直觀上比較不同圖像分割算法的優(yōu)劣,為后續(xù)基于MATLAB的數(shù)字圖像處理方面的教學與科研提供了一定的參考。