一种遥感二值图像目标区域分割的方法

文档序号:6636777阅读:284来源:国知局
一种遥感二值图像目标区域分割的方法
【专利摘要】本发明公开了一种遥感二值图像目标区域分割的方法,采用映射表、辅助表“双表”实时记录和修正等价标号,完成图像的最终连通域标记,很好地解决了标记冲突的问题。比传统算法在处理效率上有显著提高,具有较好的应用价值。
【专利说明】一种遥感二值图像目标区域分割的方法

【技术领域】
[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.begin<L2.end+ 1)Π(LI.end>L2.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.begin<L2.end+ 1)H(Ll.end>L2.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日
【发明者】莫海棠 申请人:莫海棠
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1