馮朝暉,李 芹,韓留生,薛國超,趙紅穎
(1. 北京大學地球與空間科學學院,北京 100871; 2. 山東理工大學建筑工程學院,山東 淄博 255000; 3. 山東科技大學測繪科學與工程學院,山東 青島 266590)
近年來遙感環(huán)境監(jiān)測技術日新月異,高分衛(wèi)星影像也越來越普及,為遙感信息提取提供了可靠數(shù)據(jù)來源[1]。但高分影像中針對單個像元進行分類的算法因存在瓶頸而制約著很多應用,因此結合目標形態(tài)結構、光譜信息等面向對象的算法在遙感水體提取分割中發(fā)揮著越來越重要的作用[2]。水體提取中較為傳統(tǒng)的有圖像變換方法、單一波段閾值方法。文獻[3]利用TM4和TM5波段設定經(jīng)驗閾值提取水體。單一的波段閾值分割方法原理較簡單,但是對于水體和非水體的過渡區(qū)域無法正確劃分,因此有必要對傳統(tǒng)閾值分割進行改進。應用于遙感圖像目標提取的算法還包括形態(tài)學方法[4]、聚類分割方法、邊緣檢測分割方法[5]和基于分水嶺的算法[6]。分水嶺算法在發(fā)展過程中非常具有代表性的沉浸模型[7]是一種基于地形和區(qū)域增長理論的算法,并且后來針對該算法的過度分割問題也有一些改進[8-9]。但如果將分水嶺算法直接用來提取水體,分割結果特別差[10],這是由于地物類型復雜多樣且存在“同譜異物”現(xiàn)象造成的。單一的分水嶺算法并不能解決復雜的分割問題,一些改進的分水嶺變換算法雖然解決了一部分問題,但依然存在分割目標破碎、地物類型誤判、過度分割導致結果不完整等缺點,因此有必要針對水體本身特性設計提取方法。
綜上,本文針對水體地物本身的光譜和形狀特性,結合目標水體的光譜信息分量和形態(tài)學原理,設計利用改進的分水嶺算法對水體進行分割提取的試驗算法,以期使分水嶺算法對水體提取達到較好的效果。
高分二號(GF-2)衛(wèi)星的多光譜空間分辨率為4 m,全色空間分辨率1 m,輻射分辨率10 bit,重訪周期5 d。高分衛(wèi)星具有較高的空間分辨率、輻射分辨率,重訪周期較短,可以為地方河道信息提取提供很好的數(shù)據(jù)來源。
濰坊位于山東半島中部,區(qū)域內(nèi)有濰河南北貫穿,流入渤海灣,是濰坊地區(qū)最重要的地表水源。本文中選取濰坊市2015年5月16日的高分影像(119.1°E,36.7°N)用于水體提取研究。
2.1.1 標準分水嶺算法
分水嶺分割是以拓撲形態(tài)學理論為基礎的圖像分割算法[11],其核心思想是把圖像想象為地理學中的地貌,各像素值代表這一點海拔高度,那么積水盆地為包含局部極小值點及其影響的區(qū)域,分水嶺則是這些集水盆地的邊界。分水嶺的形成是一個浸入過程,在整個地表的每個局部極小值下部扎孔,再將地表浸入水中,各局部極小值所涵蓋的區(qū)域隨著浸入水深的增加而增加,此時在兩個集水盆之間的部分就是分水嶺[12]。生成分水嶺的過程是通過迭代標注計算的,文獻[7]將其分為兩步,首先對圖像中所有點按灰度級從低到高排序,然后在淹沒時對各極小值點采用先進先出(FIFO)結構判斷和標注其影響域。
2.1.2 基于Canny邊緣檢測的分水嶺算法
該方法是首先采用高斯濾波線性平滑濾波器除去圖像噪聲,然后通過Canny算子[13]計算得到邊緣,最后找到算子提取的邊緣輪廓并存儲,通過這些邊緣極值作為標記進行分水嶺分割。這就相當于文獻[14]中從梯度圖的極小值點作為標記進行分水嶺分割。
2.1.3 基于形態(tài)濾波與標記的分水嶺分割方法
基于形態(tài)濾波與標記的分水嶺分割首先對圖像用混合開閉重構進行濾波,其次計算圖像的Sobel算子梯度圖,接著進行混合開閉重構計算,然后用H-minima方法找到梯度圖的局部最小值并進行標記,最后對標記圖和原圖進行分水嶺變換提取圖像中的水體目標[14]。
本文利用光譜信息分量圖和形態(tài)學原理改進的分水嶺變換提取水體的具體過程如圖1所示。一方面對原始圖像中紅綠藍三波段進行閾值控制提取出水體的光譜信息分量,并進行閉運算修飾,得到光譜信息分量前景標記;另一方面將原始圖像二值化并膨脹得到背景標記。將光譜信息分量前景標記和背景標記疊加得到整體分水嶺變換標記圖,最后由標準分水嶺變換得到水體提取結果。
2.2.1 目標水體光譜分量獲取
遙感圖像中地物的光譜特性是指自然界存在的地物都有吸收、反射、向外發(fā)射太陽輻射能的特性[15],不同的地物本身反射或吸收電磁波的特性也不同。由于不同地物在不同波段的反射特性表現(xiàn)為在不同波段的像素值大小,因此本文利用水體在遙感圖像上呈現(xiàn)暗色,在紅綠藍3個波段的反射率都比較低的特性,提取在3波段像素值都比較低的部分作為遙感圖像中水體的光譜信息分量圖。具體做法是采用閾值控制,使得3個波段像素值都低于20(閾值由多次試驗經(jīng)驗所得)的像素保留,其他的像素值都修改為255。如圖2所示,其中(a)和(b)是原始圖像,分別是濰坊市濰城區(qū)北側和南側的濰河河道,(c)和(d)則分別是(a)和(b)所對應的水體光譜分量圖。
2.2.2 基于形態(tài)學的前景標記修飾和背景標記生成
(1) 基于形態(tài)學膨脹的背景標記生成。形態(tài)學中圖像A由結構元素B膨脹表達為[16]
A⊕B=[ACΘ(-B)]C
(1)
圖3(g)和圖4(g)是分別對原始影像1和原始影像2經(jīng)過閾值分割后的二值圖進行膨脹修飾的結果,如此即可獲取到目標的形狀特征信息圖。
(2) 基于形態(tài)學閉運算[16]的前景標記修飾。閉運算定義為對圖像A先膨脹,再腐蝕
A°B=(A⊕B)ΘB
(2)
它可以連接較近目標物、填充目標細小空洞[17]。圖3(f)是對圖2(c)的水體光譜分量圖先進行二值化并黑白反轉,再進行閉運算的結果,以達到將水體目標內(nèi)部空洞填充的目的,使得接下來的分割操作得到的目標水體更加完整,從而避免內(nèi)部破碎。在通過數(shù)學形態(tài)學運算進行前景標記修飾和背景標記生成之后,疊加前景圖和背景圖得到復合標記圖,如圖3(h)和圖4(h)所示,然后在復合標記圖中進行標準分水嶺分割即可得到本文的試驗結果。
為了驗證本文算法對于水體提取的有效性,本文選擇了山東濰坊地區(qū)濰河水域的高分圖像開展試驗,并且實現(xiàn)了OpenCV[18]中手動標記種子點的分水嶺算法、基于Canny邊緣的分水嶺算法、結合形態(tài)濾波和標記的分水嶺分割方法等多種不同算法與本文算法水體提取效果的比較。本文算法用C++和Matlab實現(xiàn)。
圖3和圖4是文獻[14]和本文分別對原始圖像1和原始圖像2的分割結果。其中圖3(a)和圖4(a)分別為原始圖像1和原始圖像2;圖3(b)和圖4(b)為相應的Sobel梯度圖;圖3(c)和圖4(c)為混合開閉重構形態(tài)修正后的梯度圖像;圖3(d)和圖4(d)為運用擴展極小變換H-minima算法[19]分別對圖3(c)和圖4(c)進行極值標記的結果圖像;圖3(e)和圖4(e)是在圖3(d)和圖4(d)的標記圖中用分水嶺變換進行水體提取的結果。試驗結果對比表明文獻[14]方法只能提取部分輪廓并且不準確,提取的水體破碎不完整,而本文算法先對獲取的光譜信息分量圖進行閉運算修飾(如圖3(f)和圖4(f)所示),再結合膨脹運算獲得背景圖(如圖3(g)和圖4(g)所示),通過疊加得到整體復合標記圖(如圖3(h)和圖4(h)所示),最終得到水體提取的結果(如圖3(i)和圖4(i)所示),以及水體目標的分割線(如圖3(j)和圖4(j)所示)。本文算法明顯對水體提取相對較完整,輪廓較清晰,效果優(yōu)于文獻[14]。
圖5是運用多種不同分割方法對原始圖像1和圖像2的分割結果對比。圖5(b)和圖5(g)是采用了OpenCV[18]中手動標記種子點的分水嶺算法,其中圖5(b)用了3個標記點,圖5(g)用了13個標記點,可以看出種子點過多或過少都會導致提取的水體部分缺失或誤添,很難找到合適種子點的數(shù)目和坐標位置,而即使找到合適標記點,也不能保證它分割的全部是水體,如圖5(b)和圖5(c)與圖5(e)相比主體水塊右上角誤判,非水體部分依然過多地劃分為水體的范圍。而在圖5(g)和圖5(h)中,都會對原始河道水體提取得過寬,這是由于它自動將圖像中河道兩邊的深紅色部分也進行灌水標記,使得最后的結果不準確。另外采用這種方法需要手動標記種子點,無法實現(xiàn)自動提取。
圖5(d)和圖5(i)是運用高斯濾波和Canny邊緣檢測算子提取圖像邊緣,然后通過標記輪廓的方式找到重要的標記點和標記線,最后執(zhí)行分水嶺分割。雖然可以將一些地物分塊,但無法將水體與其他地物區(qū)別開來,并且水體塊破碎,即使改進算法可將相同水體區(qū)域合并也無法得到完整結果,只是破碎會減弱,并且目標水體與周圍地物仍會混淆。
相對于前面提到的幾種分割方法對于水體無法取得理想提取效果而言,本文算法通過試驗對比驗證了它可將水體目標與其他地物相區(qū)別并提取出來,且完整不破碎,也無需人工手動標記,是一種可以自動實現(xiàn)的有效的水體提取方法。
本文針對水體在遙感圖像中的特殊光譜特性,并結合其形狀特性采用了標準分水嶺算法進行分割。將實現(xiàn)結果與多種方法進行了對比分析,證明本文提取的水體目標突出,可與周圍地物明顯區(qū)分,提取結果完整準確,是一種有效的水體提取方法。