一種遙感二值圖像目標區域分割的方法
2023-06-21 19:52:41 1
一種遙感二值圖像目標區域分割的方法
【專利摘要】本發明公開了一種遙感二值圖像目標區域分割的方法,採用映射表、輔助表「雙表」實時記錄和修正等價標號,完成圖像的最終連通域標記,很好地解決了標記衝突的問題。比傳統算法在處理效率上有顯著提高,具有較好的應用價值。
【專利說明】一種遙感二值圖像目標區域分割的方法
【技術領域】
[0001] 本發明涉及一種圖像分割技術,特指一種遙感二值圖像目標區域分割的方法。
【背景技術】
[0002] 計算機自動解譯遙感影像時,地物目標識別的結果常常會以二值圖的形式輸出以 待後續處理。如環境衛星影像提取湖泊水體,當工程任務要考察其中特定的湖泊時(如計算 單個湖泊面積),就需要區分出二值圖中各個不同的水域,這就必須對生成二值圖進行連通 區域標記。二值圖連通域標記是指將圖中滿足四鄰域或八鄰域連通規則的像素識別為同一 個目標,然後用唯一的標號來標記連通區域內的像素點。二值圖像連通域分割方法,按照處 理對象的不同主要分為基於像素和基於線段兩大類。像素點掃描方式有區域增長法、順序 掃描法、遞歸標記法等。線段掃描算法主要有基於遊程的標記算法以及多種改進算法,此外 還有基於模塊的標記算法。各種算法的主要不同點在於對衝突標記對的處理方式,最終的 標記要通過算法合併或者回溯掃描,將等價標號標記為同一連通域標號。優化算法的目的 在於正確解決好衝突標記的同時,提高標記算法的速度和性能。
[0003] 遙感二值圖像尺寸大,單個連通區域像素多,基於像素的算法容易導致堆棧溢出 或者前景像素多次反覆遍歷,效率不高。而基於線段的傳統標記算法相比基於像素的方法 效率要高,利用鄰接表來記錄衝突標記,一旦遇到等價對就記錄在鄰接表中,在數據量較多 且形狀複雜的遙感二值圖像處理上,容易使鄰接表存儲大量的等價對信息,既浪費存儲空 間也不利於算法合併處理。
【發明內容】
[0004] 本發明針對現有技術存在的上述不足,提供一種遙感二值圖像目標區域分割的方 法。
[0005] 為實現上述目的,本發明採取的技術方案是:一種遙感二值圖像目標區域分割的 方法,其特徵在於,採用以下算法: 功能:二值圖像初步標號,建立標號映射表 輸入:遙感二值圖像Fij 輸出:中間圖像Fij',標號映射表tab_ys (1)定義映射表tab_ys,定義輔助表tab_fz,總標號label= 0,映射表和輔助表各 元素初始化為〇。
[0006](2)從上到下逐行掃描圖像,若在第i行中發現1值段Fi,nTFi,n,為其申請結 點,進行(3);否則返回(2)進行下一行掃描。
[0007] (3)據公式:(LI.beginL2.begin- 1),與第i-I行中線段結點逐個判斷連通性,若都不連通(適合i= 1),則label=label+I賦值給 F'i,nTF'i,n和當前線段結點,tab_ys[label] =label,返回(2);否則有k(k彡1)個 線段結點與之連通,線段標號為label(lriabel(k),用Iabel(I)賦值給當前線段結點 和F'i,nTF'i,n,進行(4)。
[0008] (4)若k=1,返回(2);否則逐個檢查tab_ys[label(X) ] (2 <x<k)與tab_ ys[label(1)]的關係,若不相等,則執行correct(tab_ys[label(1)],tab_ys[label(X)]) 。全部檢查完畢返回(2)。
[0009]根據初步標號結果和映射表,執行Fij' =tab_ysFij',即可完成圖像的最終連 通域標記。
[0010] 上述所述的一種遙感二值圖像目標區域分割的方法,其特徵在於,所述的輔助表 負責記錄各個連通域對應的全部標號,如連通域j對應的全部標號為{a,b,c},貝Utab_fz[j] =a,tab_fz[a] =b,tab_fz[b] =c,tab_fz[c] = 0,從而形成了一個標號鍊表。 toon]上述所述的一種遙感二值圖像目標區域分割的方法,其特徵在於,所述的 correct(tab_ys[label(l)],tab_ys[label(X)])為:voidcorrect(intlabell,intlabelx) { inttmp=labelx; while(tmp) { tab_ys[tmp]=IabelI; tmp=tab_fz[tmp] ;} tmp=labell; while(tab_fz[tmp] )tmp=tab_fz[tmp];tab_fz[tmp]=Iabelx;}
【具體實施方式】: 下面通過具體實施例,對本發明的技術方案作進一步具體的說明,但是本發明並不限 於這些實施例。
[0012] 如下,表1為二值圖像示意圖表,表2為中間圖像示意圖表。
[0013] 雙表的賦值是在逐行掃描圖像,對目標線段進行標號的同時完成的,建立雙表的 過程如下: (1)若當前掃描線段為孤立線段(與上一行無鄰接線段),則賦值新標號label給中間 圖像的當前位置,如表2中第一行標號為1的線段,第二行標號為2、3的線段。執行tab_ ys[label] =label。
[0014] (2)當前線段與上一行唯一一條線段連通,則直接複製上一行的標號賦值給當前 線段。如表2中第三行標號為1、2、3的線段。
[0015] (3)當前線段與上一行多於一條線段連通,則將最左邊連通線段標號賦值給當前 線段,然後找到當前線段標號在映射表中對應的連通域Al,第L(L> 2)次與其連通線段 的標號對應連通域為A2。若Al和A2相同,則不作處理;否則,Al和A2應實現合併,先 將A2在輔助表中對應的全部標號找出,分別以這些標號作下標,修改其在映射表中對應連 通域為Al,然後再在輔助表中找到Al對應的標號鍊表末端元素,將末端元素更改為A2。 具體兩個不同連通區域Iabell和label2連通合併,可用correct函數來表述。
[0016]voidcorrect(intlabell,intlabel2) { inttmp=label2; while(tmp) { tab_ys[tmp]=IabelI;tmp=tab_fz[tmp] ;} tmp=labell; while(tab_fz[tmp] )tmp=tab_fz[tmp];tab_fz[tmp]=label2 ;} 表I二值圖像示意圖表
【權利要求】
1. 一種遙感二值圖像目標區域分割的方法,其特徵在於,採用以下算法: 功能:二值圖像初步標號,建立標號映射表 輸入:遙感二值圖像Fij輸出:中間圖像Fij',標號映射表tab_ys (1) 定義映射表tab_ys,定義輔助表tab_fz,總標號label= 0,映射表和輔助表各 元素初始化為〇 ; (2) 從上到下逐行掃描圖像,若在第i行中發現1值段Fi,nTFi,n,為其申請結點,進 行(3);否則返回(2)進行下一行掃描; (3) 據公式:(Ll.beginL2.begin- 1),與第i- 1 行中線段結點逐個判斷連通性,若都不連通(適合i= 1),則label=label+ 1賦值給 F'i,nTF'i,n和當前線段結點,tab_ys[label] =label,返回(2);否則有k(k彡1)個 線段結點與之連通,線段標號為label(lriabel(k),用label(1)賦值給當前線段結點 和F'i,nTF'i,n,進行(4); (4) 若k=1,返回(2);否則逐個檢查tab_ys[label(x) ] (2 <x<k)與tab_ ys[label(1)]的關係,若不相等,則執行correct(tab_ys[label(1)],tab_ys[label(x)]) 全部檢查完畢返回(2); 根據初步標號結果和映射表,執行Fij' =tab_ysFij',即可完成圖像的最終連通域 記。
2. 根據權利要求1所述的一種遙感二值圖像目標區域分割的方法,其特徵在於,所述 的輔助表負責記錄各個連通域對應的全部標號,如連通域j對應的全部標號為{a,b,c}, 則tab-fz[j] =a,tab-fz[a] =b,tab-fz[b] =c,tab-fz[c] = 0,從而形成了一個 標號鍊表。
3. 根據權利要求1所述的一種遙感二值圖像目標區域分割的方法,其特徵在於,所述 的correct(tab-ys[label(1)],tab-ys[label(x)])為: voidcorrect(intlabell,intlabelx) { inttmp=labelx; while(tmp) { tab_ys[tmp]=labell; tmp=tab_fz[tmp] ;} tmp=labell; while(tab_fz[tmp] )tmp=tab_fz[tmp];tab-fz[tmp]=labelx;} 〇
【文檔編號】G06T7/00GK104376570SQ201410716803
【公開日】2015年2月25日 申請日期:2014年12月2日 優先權日:2014年12月2日
【發明者】莫海棠 申請人:莫海棠