劉秀峰,庹先國(guó),2,陸 景,劉婷婷
(1.西南科技大學(xué) 信息工程學(xué)院,綿陽(yáng) 621010;2.四川輕化工大學(xué),自貢 643000)
隨著機(jī)器視覺(jué)的發(fā)展,越來(lái)越多的研究人員嘗試將視覺(jué)傳感器應(yīng)用到無(wú)人艇的環(huán)境感知系統(tǒng)中[1],利用視覺(jué)實(shí)現(xiàn)無(wú)人艇的目標(biāo)檢測(cè)與導(dǎo)航[2~4]。在不同的應(yīng)用方向?qū)D像區(qū)域的關(guān)注點(diǎn)常常不同,例如,水面目標(biāo)檢測(cè)則更加關(guān)注水面情況。在獲取到水岸圖像后,先進(jìn)行水岸分割,提取出水岸線的位置,再做后續(xù)處理,將大大提高后續(xù)工作的效率,并且,水岸線的提取也有助于無(wú)人艇的導(dǎo)航與避障。
目前針對(duì)水岸線提取方法的研究主要分為以下幾類:基于邊緣檢測(cè)與擬合的方法,如曾文靜[5]等人提出的基于Canny邊緣檢測(cè)算子和Hough變換的水岸線提取方法,Kr?hnert,M等人[6]提出的基于邏輯回歸和樣條多項(xiàng)式擬合的水岸線提取方法,此類方法對(duì)近似直線的水岸線提取取得了較好的擬合效果,且實(shí)時(shí)性較好,但不適用于不規(guī)則的水岸線提取;基于區(qū)域生長(zhǎng)的方法,如鄭又能[7]等人提出的基于區(qū)域生長(zhǎng)算法的水岸線提取方法,通過(guò)構(gòu)建最小二乘問(wèn)題實(shí)現(xiàn)自動(dòng)生長(zhǎng)點(diǎn)選擇,獲得了較好的提取效果,但是區(qū)域生長(zhǎng)算法屬于迭代算法[8],其實(shí)時(shí)性較差;基于深度學(xué)習(xí)的方法,如L.Steccanella等人[9]提出的基于U-Net分割網(wǎng)絡(luò)的水岸線檢測(cè)方法,此類算法同樣存在實(shí)時(shí)性較差的問(wèn)題。
本文同樣使用區(qū)域生長(zhǎng)算法進(jìn)行水岸線提取。為克服區(qū)域生長(zhǎng)算法實(shí)時(shí)性差、魯棒性低等問(wèn)題,本文提出一種結(jié)合最大熵分割和區(qū)域生長(zhǎng)的水岸圖像水岸線提取方法。采用最大熵分割來(lái)獲取初始生長(zhǎng)區(qū)域,在此基礎(chǔ)上使用區(qū)域生長(zhǎng)法提取水岸線,將初始生長(zhǎng)條件從單一像素變?yōu)樯L(zhǎng)區(qū)域,既能解決種子點(diǎn)自動(dòng)選擇的問(wèn)題,又能加速區(qū)域生長(zhǎng)過(guò)程,同時(shí)還可以增加算法的魯棒性。
基于區(qū)域生長(zhǎng)算法提取水岸線的核心思想是,在水面區(qū)域確定初始生長(zhǎng)點(diǎn),制定生長(zhǎng)規(guī)則并開(kāi)始區(qū)域生長(zhǎng),提取最終生長(zhǎng)區(qū)域的輪廓,從輪廓中提取水岸線。而傳統(tǒng)的區(qū)域生長(zhǎng)算法,初始生長(zhǎng)條件為單一的像素,隨著水面波紋及反光的增加,算法魯棒性降低,且區(qū)域生長(zhǎng)算法本身屬于迭代算法,時(shí)間開(kāi)銷大,處理一張分辨率為640×400的水岸圖像時(shí)間開(kāi)銷在130ms左右,無(wú)法滿足無(wú)人艇實(shí)時(shí)性要求。利用最大熵分割能快速獲取到水岸圖像水面的大部分區(qū)域,但是無(wú)法將水面區(qū)域完全分割出來(lái)。因此本文采用最大熵分割與區(qū)域生長(zhǎng)相結(jié)合的方式進(jìn)行水岸線提取,利用最大熵分割解決區(qū)域生長(zhǎng)時(shí)間消耗大的問(wèn)題,也提升算法魯棒性。
首先將取得的水岸圖像轉(zhuǎn)化為L(zhǎng)ab顏色空間圖像和灰度圖,對(duì)Lab顏色空間L分量進(jìn)行最大熵分割得到二值圖像,為消除過(guò)分割影響,對(duì)二值圖像進(jìn)行形態(tài)學(xué)腐蝕和膨脹相結(jié)合的操作以取得準(zhǔn)確的感興趣區(qū)域,即為初始生長(zhǎng)區(qū)域,將初始生長(zhǎng)區(qū)域載入生長(zhǎng)堆棧并向外開(kāi)始執(zhí)行區(qū)域生長(zhǎng),通過(guò)提取區(qū)域生長(zhǎng)得到的生長(zhǎng)區(qū)域輪廓得到水面輪廓,去除圖像邊界上的點(diǎn)并保留最長(zhǎng)線段即為檢測(cè)到的水岸線。其完整的流程圖如圖1所示。
圖1 水岸線提取算法流程圖
最大熵分割屬于閾值分割法的一種,其思想是通過(guò)統(tǒng)計(jì)圖像灰度直方圖,計(jì)算兩類像素的信息熵之和,找到圖像最佳分割閾值,將圖像分割為只包含前景像素和背景像素的二值化圖像,且此時(shí)兩類像素的信息熵最大[10]。
獲取到的水岸圖像通常為RGB圖像,而RGB圖像中R,G,B三個(gè)顏色分量高度相關(guān),不適宜直接進(jìn)行圖像分割,Lab顏色空間常用作圖像分割的顏色空間[11],其中L分量為亮度分量,保留圖像的細(xì)節(jié)信息,并且能很好的表征水岸圖像的亮度特征。因此本文首先將RGB顏色空間圖像轉(zhuǎn)為L(zhǎng)ab顏色空間以提取初始生長(zhǎng)區(qū)域,轉(zhuǎn)換后L分量的取值范圍為[0,100]。
轉(zhuǎn)換后首先統(tǒng)計(jì)L分量圖像的灰度直方圖,得到圖像每級(jí)灰度的像素量ni,以及像素總數(shù)N,則每級(jí)像素的概率分布為pi。其中N、pi表達(dá)式如下:
然后開(kāi)始搜索0到100級(jí)灰度圖中的每一級(jí)灰度t,以t為分割閾值。計(jì)算其分割后的背景熵EB和前景熵EF,計(jì)算公式如下:
其中pB(i)為背景像素灰度級(jí)i的概率分布,pF(k)為前景像素灰度級(jí)k的概率分布,其表達(dá)式為:
則圖像的后驗(yàn)熵之和為:
取圖像后驗(yàn)熵和E最大的時(shí)對(duì)應(yīng)的閾值t作為分隔閾值,對(duì)圖像進(jìn)行閾值分割得到二值圖像。二值化后的圖像前景像素為高亮度區(qū)域,一般包含天空區(qū)域和水面區(qū)域中的天空倒影部分。圖2為兩幅典型水岸圖像的最大熵分割結(jié)果:
圖2 最大熵分割
可以看出,如圖2所示,樣本1取得了良好的分割效果,而樣本2由于水岸圖像岸體倒影不明顯,最大熵分割后某些部分存在過(guò)分割,導(dǎo)致部分前景像素彌散到水岸線以上的岸體區(qū)域。針對(duì)此類問(wèn)題,本文采用形態(tài)學(xué)操作中腐蝕和膨脹相結(jié)合的方法,首先對(duì)最大熵分割的結(jié)果采用6×6的結(jié)構(gòu)元素進(jìn)行腐蝕運(yùn)算,腐蝕后二值化圖像中因過(guò)分割斷裂開(kāi)來(lái)的水岸線附近區(qū)域重新閉合,且分割后水面區(qū)域的邊界向中心收縮,同時(shí)水面噪點(diǎn)增大。因此,在此基礎(chǔ)上再進(jìn)行一次膨脹運(yùn)算,以消除腐蝕后水面噪點(diǎn)增大的影響,同時(shí)為了避免最大熵分割后水岸輪廓過(guò)于靠近水岸線對(duì)后續(xù)生長(zhǎng)造成影響,膨脹運(yùn)算采用的結(jié)構(gòu)元素應(yīng)小于腐蝕運(yùn)算的結(jié)構(gòu)元素,在本文中采用4×4的結(jié)構(gòu)元素。對(duì)圖2(d)進(jìn)行形態(tài)學(xué)操作后結(jié)果如圖3(a)所示:
圖3 樣本2初始生長(zhǎng)區(qū)域提取
此時(shí),使用文獻(xiàn)[12]提出的邊界追蹤算法,對(duì)操作后的結(jié)果進(jìn)行輪廓提取,保留面積最大的兩個(gè)區(qū)域,通過(guò)計(jì)算兩個(gè)區(qū)域內(nèi)像素Y坐標(biāo)之和找出和最大的區(qū)域即為水面區(qū)域,提取出該輪廓區(qū)域,即為初始生長(zhǎng)區(qū)域,如圖3(b)所示。
區(qū)域生長(zhǎng)其主要思想是利用圖像像素間的鄰接性和連續(xù)性,根據(jù)事先制定的規(guī)則,合并具有相似性的像素構(gòu)成一個(gè)集合區(qū)域達(dá)到分割的目的[13],其一般包含三點(diǎn),初始生長(zhǎng)種子點(diǎn)的確定、生長(zhǎng)規(guī)則和終止規(guī)則制定。
傳統(tǒng)區(qū)域生長(zhǎng)法僅從單一的生長(zhǎng)點(diǎn)開(kāi)始生長(zhǎng),通過(guò)該方法提取水岸線無(wú)法滿足無(wú)人艇水岸線提取的實(shí)時(shí)性要求。而最大熵分割后提取出的水面區(qū)域已經(jīng)包含水面的大部分區(qū)域,因此,本文將最大熵分割后提取得到的感興趣區(qū)域作為初始生長(zhǎng)條件,載入?yún)^(qū)域生長(zhǎng)的生長(zhǎng)點(diǎn)堆棧中,將初始生長(zhǎng)區(qū)域中輪廓線上的點(diǎn)標(biāo)記為待生長(zhǎng)點(diǎn),輪廓線以內(nèi)的點(diǎn)標(biāo)記為已生長(zhǎng)點(diǎn),在灰度圖像上,采用8鄰域區(qū)域生長(zhǎng)的方式開(kāi)始向外進(jìn)行區(qū)域生長(zhǎng),其中生長(zhǎng)準(zhǔn)則制定如下:
其中Th為生長(zhǎng)閾值,Dk為第i個(gè)種子點(diǎn)像素的灰度值與其第k個(gè)未生長(zhǎng)鄰域像素的灰度值之差的絕對(duì)值,即:
RGB圖像轉(zhuǎn)為灰度圖像公式為:
由于上訴公式涉及到浮點(diǎn)運(yùn)算,為了加快轉(zhuǎn)換,本文采取整數(shù)移位法加速灰度圖轉(zhuǎn)換,將公式中的參數(shù)提高128倍并用去尾法去掉小數(shù)部分后得到新的參數(shù),將R、G、B值帶入計(jì)算后通過(guò)移位運(yùn)算右移7位得到最終結(jié)果,優(yōu)化后的轉(zhuǎn)換公式如下:
由前面分析可知,圖像信息熵可以很好地表征圖像特征差異情況,其在圖像處理領(lǐng)域已有較為成熟的應(yīng)用[14]。通過(guò)對(duì)水岸圖像進(jìn)行大量實(shí)驗(yàn)發(fā)現(xiàn),將最大熵分割中前景像素圖像熵乘以一個(gè)經(jīng)驗(yàn)系數(shù)a作為區(qū)域生長(zhǎng)閾值可以取得較好的結(jié)果,因此生長(zhǎng)閾值Th取值如下:
針對(duì)不同的水岸環(huán)境可調(diào)整系數(shù)a獲得精確的分割效果,在本文中,a取值為1.5,對(duì)上訴樣本2用本文所述方法進(jìn)行區(qū)域生長(zhǎng)后得到的結(jié)果如圖4所示。
圖4 水岸輪廓提取
圖4(a)為區(qū)域生長(zhǎng)結(jié)果,圖4(b)白色線條為對(duì)生長(zhǎng)結(jié)果進(jìn)行輪廓提取的結(jié)果,將輪廓中圖像邊緣的像素點(diǎn)去掉后保留最長(zhǎng)的一條線段即為水岸線,如圖4(c)白色線條所示。
為了驗(yàn)證本方法的有效性和魯棒性,本文選用三組不同場(chǎng)景下拍攝的水岸圖像樣本進(jìn)行水岸線提取實(shí)驗(yàn),以驗(yàn)證本文所提方法。三組樣本每組20張,共60張,分辨率均為640×400,每組中具有代表性的水岸圖像樣本如下,第1組水岸圖像采集自人工湖面,水岸輪廓較為復(fù)雜,倒影區(qū)域明顯,第2組水岸圖像采集自狹窄的河道,圖像中并未拍攝到天空區(qū)域,同樣水面區(qū)域倒影明顯,水岸輪廓為兩條相交的曲線構(gòu)成,第3組水岸圖像采集自臨近傍晚光照較暗時(shí)刻的江面,其圖像亮度值低,水岸線近似直線。實(shí)驗(yàn)操作平臺(tái)為Intel(R)Core(TM)i7-4790 CPU@3.60GHz,內(nèi)存為8G。操作系統(tǒng)為Ubuntu16.04,算法基于C++實(shí)現(xiàn),采用OpenCV開(kāi)源圖像處理庫(kù)。
實(shí)驗(yàn)結(jié)果如圖5~圖7所示,其中編號(hào)a為水岸線提取樣本原圖,編號(hào)b為最大熵分割后獲得的初始生長(zhǎng)區(qū)域,編號(hào)c為執(zhí)行區(qū)域生長(zhǎng)后的結(jié)果,編號(hào)d為提取結(jié)果,白色線條為提取到的水岸線(為增強(qiáng)視覺(jué)效果,將線寬設(shè)置為5像素)。從結(jié)果中可以看出,針對(duì)三種不同的水岸環(huán)境圖像,本文所提方法均能完成水岸線提取,且第1、3組的提取結(jié)果與實(shí)際水岸線重合度較高,而第2組由于水岸線附近的岸體上生長(zhǎng)的青苔與水岸線顏色過(guò)于相似,致使提取結(jié)果與實(shí)際情況存在一定的偏差。
圖5 第1組實(shí)驗(yàn)結(jié)果
圖6 第2組實(shí)驗(yàn)結(jié)果
圖7 第3組實(shí)驗(yàn)結(jié)果
本文采用偏移誤差RMSE對(duì)本文所提算法的準(zhǔn)確度進(jìn)行定量評(píng)價(jià),其表征了本文所提算法提取的水岸線與實(shí)際水岸線的偏移量,RMSE值越小說(shuō)明誤差越小[15],其計(jì)算公式為:
其中A為實(shí)際提取到的水岸線按照均勻采樣n次得到的像素采樣矩陣,B為人工提取到的水岸線上,對(duì)A矩陣上各點(diǎn)搜索曼哈頓距離最近的像素坐標(biāo)生成的像素矩陣,曼哈頓距離Di定義為:
本文中,n取200,RMSE向上取整,單位為像素。同時(shí)為了驗(yàn)證本文所提方法的實(shí)時(shí)性,采用傳統(tǒng)區(qū)域生長(zhǎng)算法進(jìn)行對(duì)比,其生長(zhǎng)閾值設(shè)定與本文相同,而初始生長(zhǎng)點(diǎn)采用人工方式確定,實(shí)驗(yàn)同時(shí)統(tǒng)計(jì)了兩種算法下三組樣本水岸線提取的平均耗時(shí),單位為毫秒,其結(jié)果統(tǒng)計(jì)如下:
從表1中可以看出,本文所提算法偏移誤差在3到9像素之間,而在用時(shí)方面,本文平均最大耗時(shí)僅為42ms,大大低于傳統(tǒng)區(qū)域生長(zhǎng)算法,滿足無(wú)人艇水岸線提取實(shí)時(shí)性的要求。
表1 水岸線提取實(shí)驗(yàn)統(tǒng)計(jì)結(jié)果
本文提出一種基于最大熵分割與區(qū)域生長(zhǎng)相結(jié)合的水岸線提取方法,利用最大熵分割算法分割迅速的優(yōu)點(diǎn),解決傳統(tǒng)區(qū)域生長(zhǎng)算法在時(shí)間復(fù)雜度上較大,難以滿足實(shí)時(shí)分割的問(wèn)題。并通過(guò)對(duì)最大熵分割后的二值圖像進(jìn)行膨脹與腐蝕相結(jié)合的形態(tài)學(xué)操作,保證最大熵分割后有效獲得水面初始生長(zhǎng)區(qū)域。而從初始生長(zhǎng)區(qū)域開(kāi)始區(qū)域生長(zhǎng),大幅度提高區(qū)域生長(zhǎng)效率的同時(shí)也增加了算法的魯棒性。實(shí)驗(yàn)結(jié)果表明,該方法能保證良好的水岸線提取精度,并且在此基礎(chǔ)上加速區(qū)域生長(zhǎng),時(shí)間開(kāi)銷平均僅為傳統(tǒng)區(qū)域生長(zhǎng)算法的1/4,具有良好的實(shí)時(shí)性。