迪娜·加爾肯
(新疆大學(xué)信息科學(xué)與工程學(xué)院,新疆 烏魯木齊 830046)
圖像分割是圖像處理與理解、模式識(shí)別和人工智能等多個(gè)領(lǐng)域中非常關(guān)鍵的問(wèn)題,是計(jì)算機(jī)視覺(jué)技術(shù)中重要步驟,其作用在汽車車型自動(dòng)識(shí)別系統(tǒng)、檢查癌細(xì)胞、精密零件表面缺陷檢測(cè)等領(lǐng)域中不可忽視。圖像分割是通過(guò)將圖像中感興趣的對(duì)象與其背景分割,分割出的區(qū)域作為特征提取的目標(biāo)對(duì)象,特征可以是像素、顏色、紋理等。最理想的分割結(jié)果就是分割出的每一塊區(qū)域都可以表示其對(duì)象的特征,可以通過(guò)對(duì)其特征的提取進(jìn)行圖像的識(shí)別和重建等任務(wù)[1]。本文主要介紹了在MATLAB開(kāi)發(fā)環(huán)境下,基于邊緣檢測(cè)和閾值的圖像分割設(shè)計(jì)方法。
基于矩陣的MATLAB是目前應(yīng)用廣泛的設(shè)計(jì)編程軟件,可將復(fù)雜的邏輯算法以簡(jiǎn)單可靠的函數(shù)形式提供給用戶,并可同時(shí)提供功能性及學(xué)術(shù)性工具箱,便于用戶進(jìn)行系統(tǒng)建模和仿真分析。MATLAB包含很多模塊庫(kù),可以方便快捷的實(shí)現(xiàn)很多功能,如數(shù)據(jù)分析、算法開(kāi)發(fā)、圖像處理和計(jì)算機(jī)視覺(jué)等,大大提高的編程效率。
灰度或結(jié)構(gòu)等信息的突變稱為邊緣。根據(jù)圖像不同區(qū)域邊界像素灰度值變化比較劇烈的特點(diǎn),首先檢測(cè)出圖像可能的邊緣點(diǎn),再按照一定策略連接成輪廓,從而實(shí)現(xiàn)不同區(qū)域的圖像分割。邊緣檢測(cè)可借助空域微分算子卷積完成,空間域的微分在離散數(shù)字圖像可以采用差分來(lái)近似?;谝浑A導(dǎo)數(shù)的邊緣檢測(cè)算子有Roberts算子、Sobel算子、Prewitt算子等,基于二階導(dǎo)數(shù)的邊緣檢測(cè)算子有Laplacian算子、Wallis算子,LOG算子(一種改進(jìn)的方式),Canny算子等。幾種算子模板如表1所示。
表1 不同算子模版
在MATLAB中通過(guò)函數(shù)BW=edge(I)來(lái)實(shí)現(xiàn)。該函數(shù)用于灰度圖像邊緣的提取,輸入I為灰度圖像,輸出BW為黑白二值邊緣圖像,支持多種格式。下面對(duì)五組圖片分別進(jìn)行不同邊緣檢測(cè)算法的比較,結(jié)果如圖1所示??梢酝ㄟ^(guò)結(jié)果得到對(duì)于這五組圖片,canny算子的效果比較明顯。
圖1 基于邊緣檢測(cè)的算法
閾值化圖像分割的基本原理是選取一個(gè)或多個(gè)處于圖像取值范圍之中的灰度閾值,然后將圖像中各個(gè)像素的灰度值與閾值進(jìn)行比較,并根據(jù)比較結(jié)果將圖像中的對(duì)應(yīng)像素分成兩類或多類,從而把圖像劃分成互不交叉重疊的區(qū)域的集合,達(dá)到圖像分割的目的。
對(duì)于單個(gè)目標(biāo),則采用單閾值方法的數(shù)學(xué)模型。對(duì)于多個(gè)目標(biāo)(灰度均勻,背景也灰度均勻且不同于目標(biāo)),則采用多閾值方法的模型。
其中,f(x,y)為原圖像,g(x,y)為分割后的圖像,Th為選定的分割閾值。常用的閾值計(jì)算方法有:直方圖峰谷閾值選取方法(雙峰法)、迭代閾值選取、均勻性度量法、最大類間類內(nèi)方差比法、p-參數(shù)法等。本文主要運(yùn)用雙峰法和迭代閾值選取來(lái)實(shí)現(xiàn)。
2.2.1 雙峰法
雙峰法是先計(jì)算原圖的直方圖,通過(guò)觀察估計(jì)閾值(門限)T,一般取兩個(gè)峰值間的谷值。
下面通過(guò)三組圖片進(jìn)行雙峰法算法的圖像分割,結(jié)果如圖2所示。首先根據(jù)直方圖估計(jì)兩個(gè)閾值,再對(duì)圖片進(jìn)行分割,可以看出不同閾值得到的分割效果是不一樣的。
圖2 雙峰法
2.2.2 迭代閾值選取
在雙峰法的基礎(chǔ)上,為更好的確定閾值,需要根據(jù)目標(biāo)和背景的分布,自動(dòng)確定分割閾值。主要算法步驟如下:(1)初始化閾值T1;(2)用T分割圖像成兩個(gè)集合:G1和G2,其中G1包含所有灰度值小于T的像素,G2包含所有灰度值大于T的像素;(3)計(jì)算G1中像素的平均值m1及G2中像素的平均值m2;(4)計(jì)算新的閾值:T2=(m1+m2)/2;(5)如果新閾值跟原閾值之間的差值小于一個(gè)預(yù)先設(shè)定的范圍,停止循環(huán),否則繼續(xù)2-4步。即如果|T2-T1|<=t(t:收斂條件,是一個(gè)預(yù)先指定的較小的正數(shù),如t=0.5),終止迭代,T2就是所求閾值,否則T1=T2,返回第b步[3]。
下面對(duì)一組圖片進(jìn)行迭代法算法的圖像分割,結(jié)果如圖3所示。從直方圖中可以看出兩個(gè)峰值之間的谷值大約在85附近,通過(guò)迭代法計(jì)算出來(lái)的結(jié)果為89,兩種方法得出的結(jié)果相近。其中雙峰法更適用于直方圖雙峰較明顯的圖,而迭代法更適用于直方圖中難以確定谷值的情況。
圖3 迭代閾值法
本文介紹了圖像分割的常用設(shè)計(jì)算法,給出了基于MATLAB的算法仿真設(shè)計(jì)方法,有助于從直觀上比較不同圖像分割算法的優(yōu)劣,為后續(xù)基于MATLAB的數(shù)字圖像處理方面的教學(xué)與科研提供了一定的參考。
科學(xué)技術(shù)創(chuàng)新2021年26期