宋 凱,王舒卉
(沈陽(yáng)理工大學(xué) 信息科學(xué)與工程學(xué)院,遼寧 沈陽(yáng) 110159)
圖像分割是指把圖像按照一定的特征分成若干個(gè)具有其特征的個(gè)體,特征可以分為很多種,如圖像的灰度、顏色、紋理等;同時(shí)分割區(qū)域的大小也需根據(jù)特定的目標(biāo)進(jìn)行分割,目標(biāo)可以對(duì)應(yīng)單個(gè)區(qū)域,也可以對(duì)應(yīng)多個(gè)區(qū)域。最理想的分割結(jié)果就是分割出的每一塊區(qū)域都可以表示其對(duì)象的特征,后續(xù)可以通過(guò)對(duì)其特征的提取進(jìn)行圖像的識(shí)別和重建等任務(wù)。
圖像分割是實(shí)現(xiàn)計(jì)算機(jī)視覺(jué)高層任務(wù)所必需的一個(gè)過(guò)程,它的輸入是一幅圖像而輸出是從圖像中提取的屬性特征[1-3]。圖像中前景物體之間、前景物體與背景之間,存在明顯的灰度過(guò)渡以至于在邊緣處產(chǎn)生灰度突變的現(xiàn)象?;谶吘壍膱D像分割算法,是根據(jù)圖像中灰度突變特征來(lái)分割圖像的。在理想情況下,邊緣檢測(cè)后得到的是表征圖像邊緣和邊界的像素集合。同樣地,待分割的目標(biāo)區(qū)域的像素也會(huì)具有相似性。因此,可以通過(guò)分析圖像不同區(qū)域的特性,尋找一種分類準(zhǔn)則來(lái)分割一幅圖像[4]。圖像像素的突變性和相似性,是圖像分割算法的兩個(gè)主要依據(jù)。
閾值法就是基于圖像的灰度特征進(jìn)行分割的一種算法,因此這種算法一般適用于灰度圖像,其算法核心理念是確定一個(gè)合適的閾值,將每個(gè)像素點(diǎn)的灰度值與閾值進(jìn)行比較,如果像素點(diǎn)的灰度值大于閾值,那么就將其作為目標(biāo)的像素點(diǎn)保留下來(lái);反之,如果像素點(diǎn)的灰度值小于閾值,那么就將其認(rèn)為是背景的像素點(diǎn)并舍棄,最終得到目標(biāo)的全部像素點(diǎn),以此來(lái)將所需的目標(biāo)從圖像中分割出來(lái),這種方法叫做全局閾值。然而在很多情況下,閾值在同一張圖像中并不唯一,因?yàn)閳D像各部分的對(duì)比度并不完全相同,這時(shí)我們就要根據(jù)局部圖像的特征分別確定不同的閾值,并對(duì)圖像進(jìn)行分割,這時(shí)的閾值稱為自適應(yīng)閾值[5-6]。
邊緣分割就是通過(guò)檢測(cè)圖像的不連續(xù)性來(lái)分割圖像。圖像的邊緣常常代表一個(gè)區(qū)域的結(jié)束,同時(shí)也標(biāo)志著另一個(gè)區(qū)域的開始,我們要做的就是通過(guò)算法找到并區(qū)分開這兩個(gè)區(qū)域的邊界,這個(gè)邊界就稱為邊緣。圖像的邊緣往往伴隨著灰度值的突變,通常情況下,將圖片從空間域變換到頻率域(使用傅里葉變換),圖像的邊緣就對(duì)應(yīng)著高頻部分,可以通過(guò)這種方式將其找出。但在分割圖像邊緣時(shí)也存在一定的誤差,例如在分割一些細(xì)小邊緣時(shí)可能存在誤判,或者分割出的邊緣不完整,因此后來(lái)人們又提出了諸如sobel 算子、拉普拉斯算子等方法解決以上問(wèn)題[7]。
所謂基于區(qū)域的分割算法就是直接從尋找某一片特定的區(qū)域入手,通常有以下兩種方式獲得最終的區(qū)域:一種算法叫做區(qū)域生長(zhǎng)算法;另一種算法叫做區(qū)域分裂合并算法。前者是從單個(gè)像素入手,先確定一組代表不同生長(zhǎng)區(qū)域的像素,將其稱為種子像素;其次確定一種生長(zhǎng)準(zhǔn)則,使其能在種子像素的生長(zhǎng)過(guò)程中將符合條件的臨近像素包括進(jìn)來(lái),不斷循環(huán),不斷將新的像素合并進(jìn)來(lái),并將最新的像素作為新的種子像素進(jìn)行尋找,直到?jīng)]有符合條件的像素被找到,則停止算法。后者則是前者的一個(gè)逆過(guò)程,它從整幅圖像出發(fā),將一塊區(qū)域不斷地分為若干子區(qū)域,再將所需的目標(biāo)進(jìn)行整合,最終實(shí)現(xiàn)目標(biāo)的提取。這種算法較為復(fù)雜,計(jì)算量龐大,但是對(duì)圖像的分割效果極好[8]。
以上3 種算法分別根據(jù)圖像的灰度值、邊緣和區(qū)域來(lái)進(jìn)行分割,可以處理大多數(shù)的圖像,但對(duì)一些特定的圖像,其處理能力有限,需要結(jié)合數(shù)學(xué)方法來(lái)進(jìn)行圖像分割。例如小波變換,因其具有多尺度性,能同時(shí)結(jié)合時(shí)域和頻域?qū)D像進(jìn)行研究而成為近年來(lái)應(yīng)用最為廣泛的工具。它通過(guò)檢測(cè)函數(shù)的極值點(diǎn)來(lái)突顯出圖像的邊緣并確定圖像邊緣位于哪個(gè)尺度,且每個(gè)尺度的小波變換都能提供一些邊緣信息,因此處理的圖像較為理想[9-13]。
本文分別實(shí)現(xiàn)了上節(jié)所述的4 類圖像分割算法,分別為Otsu閾值化算法、Canny邊緣檢測(cè)算法、區(qū)域生長(zhǎng)算法和分水嶺算法。實(shí)驗(yàn)平臺(tái)為visual studio 2017,編程語(yǔ)言為C++,實(shí)驗(yàn)的原始圖像如圖1所示。
圖1 原始圖像
Otsu 閾值化算法是基于統(tǒng)計(jì)決策理論基礎(chǔ)之上的,將圖像的像素分成兩組或多組,計(jì)算分類過(guò)程引入平均誤差,選取分類的類間方差最大的閾值為全局化閾值。類間方差σB的定義公式如下所示:
式中,P1和P2分別是兩類發(fā)生的概率;m1和m2分別是兩類的均值;mG是圖像的均值。
實(shí)驗(yàn)的結(jié)果如圖2所示。
圖2 Otsu閾值化算法效果
Canny算法在1986年被提出,自它現(xiàn)世以來(lái)一直都作為一種優(yōu)秀的邊緣檢測(cè)方法而存在,時(shí)至今日Canny 算法及其變種依然是最優(yōu)算法。它對(duì)圖像的處理主要分為以下幾個(gè)步驟:
1)第一,對(duì)圖像進(jìn)行高斯模糊。主要目的是去除噪聲,使圖像變得平滑,因?yàn)樵肼暫瓦吘壎紝儆诟哳l部分,不對(duì)圖像進(jìn)行去噪會(huì)影響邊緣的檢測(cè)。
2)第二,計(jì)算像素的梯度和方向。用來(lái)表示圖像灰度值的變換程度和方向,便于尋找圖像邊緣。
3)第三,使用非極大值抑制算法對(duì)邊緣進(jìn)行細(xì)化處理,這一步是對(duì)上一步的輔助。
4)第四,進(jìn)行邊緣檢測(cè)。一般的算法只使用一個(gè)閾值來(lái)檢測(cè)邊緣,但是這樣誤差較大,故Canny算法同時(shí)使用兩個(gè)閾值進(jìn)行檢測(cè),這樣可以有效提高精確度;
5)第五,對(duì)整幅圖進(jìn)行修整,得到準(zhǔn)確的邊緣。
實(shí)驗(yàn)的結(jié)果如圖3所示。
圖3 Canny邊緣檢測(cè)算法效果
區(qū)域生長(zhǎng)算法是首先初始化一系列種子點(diǎn),再根據(jù)預(yù)先制定的生長(zhǎng)準(zhǔn)則將具有相似性的像素聚合在一起。本文采用的生長(zhǎng)準(zhǔn)則Q如下所示:
實(shí)驗(yàn)的結(jié)果如圖4所示。
分水嶺算法是借助地形學(xué)的概念,形象地將圖像三維化。其基本原理是以圖像的坐標(biāo)為空間坐標(biāo),以圖像灰度函數(shù)為高度值。水滴落在某一區(qū)域的高度最小值處,即局部極小值處,慢慢滴落聚集形成一個(gè)集水盆,逐漸地淹沒(méi)梯度較低的地方。當(dāng)水漫過(guò)程停止后,就會(huì)在集水盆匯合處形成邊界線,這就叫做分水嶺,而圖像也就相應(yīng)地被分割成了幾塊連通區(qū)域,圖像分割就是尋找區(qū)域的邊界線,形成水壩阻止不同區(qū)域混合在一起。
毫無(wú)疑問(wèn),分水嶺表示的是輸入圖像的極大值點(diǎn),而為得到圖像的邊緣信息,通常把梯度圖像g(x,y)作為輸入圖像,即
式中,f(x,y)表示原始圖像;grad{.}表示梯度運(yùn)算。
本文采用人機(jī)交互的方式,用鼠標(biāo)在圖像上選取局部極小值點(diǎn),進(jìn)行區(qū)域分割。實(shí)驗(yàn)的結(jié)果如圖5所示。
圖4 區(qū)域生長(zhǎng)算法效果
圖5 分水嶺算法效果
從以上的實(shí)驗(yàn)結(jié)果可以看出,Otsu 閾值化算法、Canny 邊緣算法、區(qū)域生長(zhǎng)算法和分水嶺算法都能夠根據(jù)圖像自身的特征進(jìn)行分割。Otsu閾值化算法主要依據(jù)圖像的灰度級(jí)進(jìn)行分割,以類間方差最大的閾值為全局化閾值對(duì)圖像進(jìn)行處理;
Canny 邊緣算法是一種多級(jí)檢測(cè)算法,普適性較高;區(qū)域生長(zhǎng)算法最主要的就是確定種子點(diǎn)和生長(zhǎng)準(zhǔn)則,只有兩者都合適才能展現(xiàn)出理想的分割效果;分水嶺算法借助拓?fù)涞孛瞾?lái)考慮圖像的分割。雖然它們各具優(yōu)點(diǎn),但想要得到理想的分割結(jié)果,只用這些算法還遠(yuǎn)遠(yuǎn)不夠,還需要進(jìn)一步處理。
本文系統(tǒng)地介紹并實(shí)現(xiàn)了Otsu 閾值化算法、Canny 邊緣算法、區(qū)域生長(zhǎng)算法以及分水嶺算法這4種典型的圖像分割算法。對(duì)于不同種類的圖像分割應(yīng)選取適用的方法,如果一幅圖像的目標(biāo)和背景灰度級(jí)占據(jù)不同灰度級(jí)范圍,則可以選用Otsu閾值化算法;Canny 邊緣算法不能保證邊緣的連續(xù)性和封閉性,難以形成一個(gè)大區(qū)域,也就是說(shuō)邊緣檢測(cè)只能產(chǎn)生邊緣點(diǎn),所以一般后續(xù)都需要進(jìn)行邊緣連接和形態(tài)學(xué)處理,而且常常需要綜合多種算法一起使用,并非完整意義上的圖像分割;區(qū)域生長(zhǎng)算法對(duì)某些復(fù)雜物體定義的復(fù)雜場(chǎng)景的分割或者對(duì)某些自然景物的分割等類似先驗(yàn)知識(shí)不足的圖像分割效果較為理想;分水嶺算法對(duì)微弱邊緣具有良好的響應(yīng),而且分水嶺算法得到的封閉集水盆也為分析圖像的區(qū)域特征提供了可能。