一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种遥感影像像素极值检测方法及系统与流程

2022-11-16 16:10:52 来源:中国专利 TAG:


1.本发明涉及遥感影像像素检测领域,特别是涉及一种遥感影像像素极值检测方法及系统。


背景技术:

2.遥感影像的有效数据覆盖区域和无效数据覆盖区域采用不同的像素值表示。针对8bit的遥感影像,有效数据覆盖区域各个波段像素值要求在1-254之间,无效数据覆盖区域各个波段像素值要求为0。然而,遥感影像在数据获取和数据处理过程中,有效数据覆盖区域会出现像素极值0或者255,需要查找有效数据覆盖区域出现像素极值0或者255的位置,将其修改为其他指定像素值。
3.常规检测遥感影像有效数据覆盖区域出现像素极值0或者255的方法,需要先找到有效数据覆盖区域和无效数据覆盖区域的范围线,然后在有效数据覆盖区域范围线内查找出现像素极值0或者255的位置,该方法需要两次读取遥感影像,而遥感影像的数据量通常比较大,增加了读取数据的时间,基于此,亟需一种遥感影像像素极值检测方法及系统,从而快速检测出遥感影像有效数据覆盖区域出现像素极值0或者255的区域。


技术实现要素:

4.本发明的目的是提供一种遥感影像像素极值检测方法及系统,本方法不需要先区分遥感影像有效数据覆盖区域和无效数据覆盖区域,通过一次读取影像即可快速检测出有效数据覆盖区域出现像素极值0或者255的位置。
5.为实现上述目的,本发明提供了如下方案:
6.一种遥感影像像素极值检测方法,包括:
7.对遥感影像按照预设行数进行分块,并按块将影像数据读取至计算机内存;
8.对每一块影像,检测每行中的连通区域;所述连通区域是指该区域内每个像元位置至少有一个波段的像素值为像素极值0或者255的区域;
9.将具有连通性的连通区域进行合并,得到若干个新连通区域;
10.计算每一所述新连通区域中的像素个数;
11.从所述新连通区域中过滤掉所述像素个数大于设定阈值的区域,得到有效数据覆盖区域的连通区域,所述有效数据覆盖区域的连通区域为像素极值所在的区域。
12.作为一种可选的实施方式,所述将具有连通性的连通区域进行合并,得到若干个新连通区域,具体包括:
13.获取每个连通区域的三元数组,所述三元数组包括所在行号、开始列号、结束列号;
14.建立以所有所述连通区域总个数为大小的标记数组,并将所述标记数组中每一标记数a的值初始化为0,每一所述连通区域与一个所述标记数对应,建立值为零的等价数组e;
15.将第一个连通区域对应的第一标记数值记为a[1]=1,判断其他连通区域是否为同行连通区域,将所述同行连通区域对应的第二标记数值a[i]记为当前连通区域标记数最大值加1,所述同行连通区域为与所述第一个连通区域位于相同行的连通区域;
[0016]
根据所述三元数组,判断非同行连通区域与上一行连通区域的相交情况,得到第一判断结果;所述上一行连通区域为所述非同行连通区域的上一行的连通区域,所述相交情况包括不相交以及有x处相交,x≥1;
[0017]
判断所述非同行连通区域对应的第三标记数值是否为0,得到第二判断结果;
[0018]
根据所述第一判断结果和所述第二判断结果获得所述第三标记数值,并根据所述第一判断结果和所述第二判断结果获得每一所述标记数对应的等价对,将所述等价对存入等价数组;
[0019]
判断所述等价数组是否为零,得到第三判断结果,若所述第三判断结果为是,则对所述等价数组对应的标记数值不进行修改;
[0020]
若所述第三判断结果为否,则根据等价列表,并按具有连通性的多个连通区域标记数值相同的原则,对所述标记数重新赋值;所述等价列表由所述等价数组构成;
[0021]
将重新赋值后值相同的各标记数对应的连通区域组合为新连通区域。
[0022]
作为一种可选的实施方式,所述计算每一所述新连通区域中的像素个数,具体包括:
[0023]
计算所述新连通区域中每一行的结束列号与开始列号的差值,并将所述差值加1,得到每一行新连通区域的像素个数;
[0024]
根据每一行新连通区域的像素个数计算所述新连通区域中的总像素个数。
[0025]
可选的,当所述非同行连通区域与所述上一行连通区域之间满足公式:startcol
cur
≤endcol
pre
1&endcol
cur
≥startcol
pre-1&row
cur
==row
pre
1时,则判定所述非同行连通区域与所述上一行连通区域相交;
[0026]
其中,startcol
cur
表示当前非同行连通区域的开始列号;endcol
pre
表示上一行连通区域的结束列号;endcol
cur
表示当前非同行连通区域的结束列号;startcol
pre
表示上一行连通区域的开始列号;row
cur
表示当前非同行连通区域的行号;row
pre
表示上一行连通区域的行号。
[0027]
可选的,所述根据所述第一判断结果和所述第二判断结果获得所述第三标记数值,并根据所述第一判断结果和所述第二判断结果获得每一所述标记数对应的等价对,将所述等价对存入等价数组,具体包括:
[0028]
当所述第一判断结果为不相交,且所述第二判断结果为是,则将所述第三标记数值a[j]记为当前连通区域标记数最大值加1;
[0029]
当所述第一判断结果为有1处相交,且所述第二判断结果为是,则将所述第三标记数值a[j]记为上一行中相交的连通区域标记数值a[a];所述上一行中相交的连通区域为所述上一行中与当前行相交的连通区域;
[0030]
当所述第一判断结果为有1处相交,且所述第二判断结果为否,则判断所述第三标记数值a[j]与上一行中相交的连通区域标记数值a[a]是否相等,若否,则获得等价对(a[a],a[j]),并存入等价数组e;
[0031]
当所述第一判断结果为有2处及以上相交,且所述第二判断结果为是,则将所述第
三标记数值a[j]记为上一行中第一个与当前行相交的连通区域标记数值a[z],并获得等价对(a[j],a[k]),并存入等价数组e;所述a[k]为上一行中与当前行相交的其他连通区域标记数值,所述其他连通区域为除第一个与当前行相交的连通区域之外的连通区域,所述a[k]不唯一;
[0032]
当所述第一判断结果为有2处及以上相交,且所述第二判断结果为否,则判断所述第三标记数值a[j]与上一行中所有相交的连通区域标记数值是否均不同,若是,则获得等价对(a[j],a[t]),并存入等价数组e,所述a[t]为上一行中与当前行连通区域相交的连通区域标记数值,所述a[t]不唯一。
[0033]
作为一种可选的实施方式,所述根据等价列表,并按具有连通性的多个连通区域标记数值相同的原则,对所述标记数重新赋值,具体包括:
[0034]
获取所述标记数中的最大元素值,建立以所述最大元素值为大小的数组f,并将所述数组f的值初始化为0,建立值为零的新等价数组e';
[0035]
针对等价数组e里面的每一等价对,比较所述等价对中两个值的大小,并将较小值放在所述等价对中的第一个位置,较大值放在第二个位置;
[0036]
对等价数组e中的等价对进行排序,得到有序等价数组;所述排序时,按照等价对中第一个位置的值升序排列,当所述第一个位置的值相等时,再按照等价对中第二个位置的值升序排序;
[0037]
去掉所述有序等价数组中的重复等价对,得到去重等价数组;
[0038]
针对所述去重等价数组中的每一等价对,分别判断所述等价对的两个值对应的f数组是否为零;
[0039]
当f[e
i,1
]=0且f[e
i,2
]=0时,令f[e
i,1
]=e
i,1
,f[e
i,2
]=e
i,1
;其中,e
i,1
指第i个等价对中的第一个值,e
i,2
指第i个等价对中的第二个值;
[0040]
当f[e
i,1
]≠0且f[e
i,2
]=0时,令f[e
i,2
]=f[e
i,1
];
[0041]
当f[e
i,1
]=0且f[e
i,2
]≠0时,令f[e
i,1
]=f[e
i,2
];
[0042]
当f[e
i,1
]≠0且f[e
i,2
]≠0且f[e
i,1
]≠f[e
i,2
]时,记录新的等价对(f[e
i,1
],f[e
i,2
]),存入新的等价数组e';
[0043]
根据所述数组f的值,按条件if f[a[i]]≠0,a[i]=f[a[i]]对连通区域对应的标记数重新赋值;
[0044]
判断所述新的等价数组e'是否为空,若否,则跳转至步骤“获取所述标记数中的最大元素值”;若是,则结束。
[0045]
本发明还提供一种遥感影像像素极值检测系统,包括:
[0046]
分块模块,用于对遥感影像按照预设行数进行分块,并按块将影像数据读取至计算机内存;
[0047]
检查模块,用于对每一块影像,检测每行中的连通区域;所述连通区域是指该区域内每个像元位置至少有一个波段的像素值为像素极值0或者255的区域;
[0048]
合并模块,用于将具有连通性的连通区域进行合并,得到若干个新连通区域;
[0049]
像素个数计算模块,用于计算每一所述新连通区域中的像素个数;
[0050]
像素极值区域确定模块,用于从所述新连通区域中过滤掉所述像素个数大于设定阈值的区域,得到有效数据覆盖区域的连通区域,所述有效数据覆盖区域的连通区域为像
素极值所在的区域。
[0051]
根据本发明提供的具体实施例,本发明公开了以下技术效果:
[0052]
本发明提供一种遥感影像像素极值检测方法及系统,首先,对遥感影像按照预设行数进行分块,并按块将影像数据读取至计算机内存,对每一块影像,检测每行中的连通区域;所述连通区域是指该区域内每个像元位置至少有一个波段的像素值为像素极值0或者255的区域;将具有连通性的连通区域进行合并,得到若干个新连通区域;计算每一所述新连通区域中的像素个数;从所述新连通区域中过滤掉所述像素个数大于设定阈值的区域,得到有效数据覆盖区域的连通区域,所述有效数据覆盖区域的连通区域为像素极值所在的区域。本发明提供的上述方法不需要先区分遥感影像有效数据覆盖区域和无效数据覆盖区域,通过一次读取影像即可快速检测出有效数据覆盖区域出现像素极值0或者255的位置。
附图说明
[0053]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0054]
图1为本发明实施例1提供的遥感影像像素极值检测方法流程图;
[0055]
图2为本发明实施例1提供的第1)种标记数组值获取方法示意图;
[0056]
图3为本发明实施例1提供的第2)种标记数组值获取方法示意图;
[0057]
图4为本发明实施例1提供的第3)种标记数组值示意图;
[0058]
图5为本发明实施例1提供的第4)种标记数组值获取方法示意图;
[0059]
图6为本发明实施例1提供的第5)种标记数组值示意图;
[0060]
图7为本发明实施例1提供的有效数据区域和无效数据区域分布图;
[0061]
图8为本发明实施例1提供的需要检测像素极值的一幅影像图;
[0062]
图9为本发明实施例1提供的所在行号、开始列号、结束列号的记录结果;
[0063]
图10为本发明实施例1提供的标记数记录过程图;
[0064]
图11为本发明实施例1提供的等价对构成等价结果的示意图;
[0065]
图12为本发明实施例1提供的连通区域标记结果示意图;
[0066]
图13为本发明实施例1提供的等价数组处理过程示意图;
[0067]
图14为本发明实施例1提供的数组f赋值图;
[0068]
图15为本发明实施例1提供的新的等价数组图;
[0069]
图16为本发明实施例1提供的标记数重新赋值示意图;
[0070]
图17为本发明实施例1提供的对数组f初始化及赋值示意图;
[0071]
图18为本发明实施例1提供的利用数组f对标记数重新赋值的示意图;
[0072]
图19为本发明实施例1提供的最终的连通区域结果示意图。
具体实施方式
[0073]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0074]
本发明的目的是提供一种遥感影像像素极值检测方法及系统,不需要先区分遥感影像有效数据覆盖区域和无效数据覆盖区域,通过一次读取影像即可快速检测出有效数据覆盖区域出现像素极值0或者255的位置。
[0075]
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0076]
实施例1
[0077]
本实施例提供一种遥感影像像素极值检测方法,请参阅图1,包括:
[0078]
s1、对遥感影像按照预设行数进行分块,并按块将影像数据读取至计算机内存。
[0079]
本实施例中,以每n行为一块对遥感影像进行分块,将每一影像分块读取至计算机内存;所述遥感影像的总行数为m,其中,n《m;则整幅遥感影像读取完毕需要n=int(m/n) 1次,对于前n-1次,每次读取的行数分块大小均为n,对于第n次,读取的行数分块大小为m-n(n-1)。
[0080]
s2、对每一块影像,检测每行中的连通区域;所述连通区域是指该区域内每个像元位置至少有一个波段的像素值为像素极值0或者255的区域。
[0081]
具体的,针对每行的连通区域,按照从左至右的顺序,从第一个像元位置开始查找,如果某个像元位置至少有一个波段的像素值为像素极值0或者255,则继续查找该像元位置的右侧相邻像元位置是否至少有一个波段的像素值为像素极值0或者255,如果是,则继续重复上述查找,直到某个右侧相邻像元位置所有波段的像素值都不为像素极值0或者255,此时一个连通区域查找完成;然后继续往右侧像元位置进行查找,直到所有的像元位置查找完成。
[0082]
s3、将具有连通性的连通区域进行合并,得到若干个新连通区域。
[0083]
作为一种可选的实施方式,所述步骤s3具体包括:
[0084]
s31、获取每个连通区域的三元数组,所述三元数组包括所在行号、开始列号、结束列号;
[0085]
s32、建立以所有所述连通区域总个数为大小的标记数组,并将所述标记数组中每一标记数a的值初始化为0,每一所述行连通区域与一个所述标记数对应,建立值为零的等价数组e;
[0086]
建立了标记数组和等价数组e之后,后续步骤s33-s39开始判断连通区域之间的连通性。
[0087]
s33、将第一个连通区域对应的第一标记数值记为a[1]=1,判断除所述第一个连通区域外的其他连通区域是否为同行连通区域,将所述同行连通区域对应的第二标记数值a[i]记为当前连通区域标记数最大值加1,所述同行连通区域为与所述第一个连通区域位于相同行的连通区域;
[0088]
s34、根据所述三元数组,判断非同行连通区域与上一行连通区域的相交情况,得到第一判断结果;所述上一行连通区域为所述非同行连通区域的上一行的连通区域,所述相交情况包括不相交以及有x处相交,x≥1;
[0089]
可选的,当所述非同行连通区域与所述上一行连通区域之间满足公式:
startcol
cur
≤endcol
pre
1&endcol
cur
≥startcol
pre-1&row
cur
==row
pre
1时,则判定所述非同行连通区域与所述上一行连通区域相交;
[0090]
其中,startcol
cur
表示当前非同行连通区域的开始列号;endcol
pre
表示上一行连通区域的结束列号;endcol
cur
表示当前非同行连通区域的结束列号;startcol
pre
表示上一行连通区域的开始列号;row
cur
表示当前非同行连通区域的行号;row
pre
表示上一行连通区域的行号。
[0091]
s35、判断所述非同行连通区域对应的第三标记数值是否为0,得到第二判断结果;
[0092]
s36、根据所述第一判断结果和所述第二判断结果获得所述第三标记数值,并根据所述第一判断结果和所述第二判断结果获得每一所述标记数对应的等价对,将所述等价对存入等价数组;
[0093]
作为一种可选的实施方式,本实施例中,采用下述方法确定第三标记数a以及等价数组中等价对的值。
[0094]
1)当所述第一判断结果为不相交,且所述第二判断结果为是,则将所述第三标记数值a[j]记为当前连通区域标记数最大值加1;
[0095]
具体请参阅图2,即,如果当前行的某个连通区域,与上一行的所有连通区域均没有交集,且该连通区域对应的标记数未被标记(数值为零),则该连通区域对应的标记数的值a[j]记为当前连通区域标记数最大值加1。
[0096]
2)当所述第一判断结果为有1处相交,且所述第二判断结果为是,则将所述第三标记数值a[j]记为上一行中相交的连通区域标记数值a[a];所述上一行中相交的连通区域为所述上一行中与当前行相交的连通区域;
[0097]
具体请参阅图3,即,如果当前行的某个连通区域,与上一行的某个连通区域存在交集,且该连通区域对应的标记数未被标记,则该连通区域对应的标记数的值记为上一行相交的连通区域标记数的值a[j]=a[a]。
[0098]
3)当所述第一判断结果为有1处相交,且所述第二判断结果为否,则判断所述第三标记数值a[j]与上一行中相交的连通区域标记数值a[a]是否相等,若否,则获得等价对(a[a],a[j]),将所述等价对(a[a],a[j])存入等价数组e;
[0099]
具体请参阅图4,即,如果当前行的某个连通区域,与上一行的某个连通区域存在交集,且该连通区域对应的标记数已被标记,且标记值不相等即a[j]≠a[a],则记录两个连通区域的标记值,形成等价对(a[a],a[j]),存入等价数组e。
[0100]
4)当所述第一判断结果为有2处及以上相交,且所述第二判断结果为是,则将所述第三标记数值a[j]记为上一行中第一个与当前行相交的连通区域标记数值a[z],并获得等价对(a[j],a[k]),将所述等价对(a[j],a[k])存入等价数组e;所述a[k]为上一行中与当前行相交的其他连通区域标记数值,所述其他连通区域为除第一个相交的连通区域之外的连通区域,所述a[k]不唯一;
[0101]
具体请参阅图5,即,如果当前行的某个连通区域,与上一行的两个及以上的连通区域存在交集,且该连通区域对应的标记数未被标记,则该连通区域对应的标记数值记为上一行第一个相交的连通区域标记数的值a[j]=a[z],并且与上一行的其他相交的连通区域形成等价对(a[j],a[k])、(a[j],a[t])等,存入等价数组e。
[0102]
5)当所述第一判断结果为有2处及以上相交,且所述第二判断结果为否,则判断所
述第三标记数值a[j]与上一行中所有相交的连通区域标记数值是否均不同,若是,则获得等价对(a[j],a[t]),存入等价数组e,所述a[t]为上一行中与当前行连通区域相交的连通区域标记数值,所述a[t]不唯一;
[0103]
具体请参阅图6,即,如果当前行的某个连通区域,与上一行的两个及以上的连通区域存在交集,且该连通区域对应的标记数已被标记,则该连通区域对应的标记数与上一行所有相交的连通区域对应的标记数,在标记值不相等的情况下,形成等价对(a[j],a[k])、(a[j],a[t])、(a[j],a[f])等,存入等价数组e。
[0104]
需要说明的是,除开始一行的连通区域,后面每一行的连通区域都与其相邻的上一行的所有连通区域执行1)-5)操作,最后形成标记后的标记数a和等价数组e。
[0105]
s37、判断所述等价数组是否为零,得到第三判断结果,若所述第三判断结果为是,则对所述等价数组对应的所述标记数值不进行修改;
[0106]
s38、若所述第三判断结果为否,则根据等价列表,并按具有连通性的连通区域标记数值相同的原则,对所述标记数重新赋值;所述等价列表由所述等价数组构成;
[0107]
可选的,所述步骤s38具体包括:
[0108]
s381、获取所述标记数中的最大元素值,建立以所述最大元素值为大小的数组f,并将所述数组f的值初始化为0,建立值为零的新等价数组e';
[0109]
s382、针对等价数组e里面的每一等价对,比较所述等价对中两个值的大小,并将较小值放在所述等价对中的第一个位置,较大值放在第二个位置;
[0110]
s383、对等价数组中的等价对进行排序,得到有序等价数组;所述排序时,按照等价对中第一个位置的值升序排列,当所述第一个位置的值相等时,再按照等价对中第二个位置的值升序排序;
[0111]
s384、去掉所述有序等价数组中的重复等价对,得到去重等价数组;
[0112]
s385、针对所述去重等价数组中的每一等价对,分别判断所述等价对的两个值对应的f数组是否为零;
[0113]
当f[e
i,1
]=0且f[e
i,2
]=0时,令f[e
i,1
]=e
i,1
,f[e
i,2
]=e
i,1
;其中,e
i,1
指第i个等价对中的第一个值,e
i,2
指第i个等价对中的第二个值;
[0114]
当f[e
i,1
]≠0且f[e
i,2
]=0时,令f[e
i,2
]=f[e
i,1
];
[0115]
当f[e
i,1
]=0且f[e
i,2
]≠0时,令f[e
i,1
]=f[e
i,2
];
[0116]
当f[e
i,1
]≠0且f[e
i,2
]≠0且f[e
i,1
]≠f[e
i,2
]时,记录新的等价对(f[e
i,1
],f[e
i,2
]),存入新的等价数组e';
[0117]
s386、根据所述数组f的值,按条件if(f[a[i]]≠0),a[i]=f[a[i]]对连通区域对应的标记数重新赋值;
[0118]
s387、判断所述新的等价数组e'是否为空,若否,则跳转至步骤s381;若是,则结束。
[0119]
s39、重新赋值后值相同的各标记数对应的连通区域组合为新连通区域。
[0120]
s4、计算每一所述新连通区域中的像素个数。
[0121]
可选的,所述s4包括:
[0122]
计算所述新连通区域中每一行的结束列号与开始列号的差值,并将所述差值加1,得到每一行新连通区域的像素个数;
[0123]
根据每一行所述新连通区域的像素个数计算所述新连通区域中的总像素个数。
[0124]
步骤s4主要是统计连通区域标记数a里面的标记类型(即a里面的不同元素值),每一种标记类型对应遥感影像里面一个由像素极值0或者255构成的连通区域。标记数a与行连通区域三元数组t(row,startcol,endcol)是一一对应关系,统计一个标记类型对应的像素个数,即统计该标记对应的三元数组里面所有行连通区域的结束列号与开始列号的差值之和,即
[0125]
s5、从所述新连通区域中过滤掉所述像素个数大于设定阈值的区域,得到有效数据覆盖区域的连通区域,所述有效数据覆盖区域的连通区域为像素极值所在的区域。
[0126]
遥感影像里面所有连通区域的像素个数统计完成后,设定阈值t,过滤掉像素个数大于阈值t的连通区域(也就是影像无效数据覆盖区域像素值为0的区域),剩下的连通区域为影像有效数据覆盖区域出现像素极值0或者255的区域,这些连通区域的坐标通过三元数组t(row,startcol,endcol)可以找到像素极值0或者255的位置。
[0127]
通常有效数据覆盖区域出现像素极值0或者255的区域比较分散,无效数据覆盖区域像素值为0的区域比较集中,图7示出了有效数据区域和无效数据区域分布图。采用连通区域检测的方法查找遥感影像像素极值0或者255的位置。本实施例首先检测整幅遥感影像出现像素值0或者255的连通区域,然后过滤掉比较集中的代表无效数据覆盖区域像素值为0的连通区域,剩下的就是代表有效数据覆盖区域出现像素极值0或者255的连通区域。
[0128]
常规检测遥感影像有效数据覆盖区域出现像素极值0或者255的方法,需要先找到有效数据覆盖区域和无效数据覆盖区域的范围线,然后在有效数据覆盖区域范围线内查找出现像素极值0或者255的位置,该方法需要两次读取遥感影像,而遥感影像的数据量通常比较大,增加了读取数据的时间。采用本方法的优点是不需要先区分遥感影像有效数据覆盖区域和无效数据覆盖区域,通过一次读取影像即可快速检测出有效数据覆盖区域出现像素极值0或者255的位置。
[0129]
为了使本领域技术人员更清楚地理解本发明提供的遥感影像像素极值检测方法,现提供一实例进行说明。
[0130]
请参阅图8,图8为需要检测像素极值的一幅影像,图中左侧和上侧的数字用于表示像元的行号、列号坐标,图中阴影正方形表示出现像素极值的像元。
[0131]
按照从上至下、从左至右的顺序,检测每行出现的行连通区域,采用三元数组记录每个行连通区域所在行号、开始列号、结束列号,记录的结果如图9,此时获取的行连通区域总个数为16。
[0132]
针对每行的连通区域,按照从左至右的顺序,从第一个像元位置开始查找,如果某个像元位置至少有一个波段的像素值为像素极值0或者255,则继续查找该像元位置的右侧相邻像元位置是否至少有一个波段的像素值为像素极值0或者255,如果是,则继续重复上述查找,直到某个右侧相邻像元位置所有波段的像素值都不为像素极值0或者255,此时一个行连通区域查找完成;然后继续往右侧像元位置进行查找,直到所有的像元位置查找完成。
[0133]
统一说明,后续图中出现的a[1]、a[2]、e[1]、e[2]、f[1]、f[2]等,表示该数组里面第几个位置的元素值。
[0134]
建立以数字16为大小的标记数组a,将标记数组中每一标记数的值初始为0(图10a),标记数组与三元数组连通区域是一一对应关系;建立大小为零的等价数组e。
[0135]
然后从第一个行连通区域开始,将其标记数记为a[1]=1,接着检测与其相同行的其他连通区域,将其标记数a[i]记为当前连通区域标记数最大值加1,如图12第2行的三个灰色表示的连通区域,先将(2,2,2,)三元组对应的连通区域标记数记为a[1]=1,然后继续标记同行连通区域,将(2,4,4)三元组连通区域标记数记为a[2]=2(当前最大标记数为1再加1),然后再继续标记同行连通区域,将(2,6,6)三元组连通区域标记数记为a[3]=3(当前最大标记数为2再加1)。
[0136]
最后检测非同行与其上一行连通区域的相交关系,对非同行连通区域的标记数赋值,形成等价对存入等价数组e(原理见专利说明书部分),等价对有(1,2)、(1,3)、(4,5)、(4,6)、(4,7)、(7,8)、(1,8)。
[0137]
图10b为标记数组a的结果,相同的标记数表示行连通区域是连通的,不同的标记数表示的行连通区域暂时是不连通的,需要后续对等价数组查找等价列表,对标记数重新赋值,方可最终确定连通关系;图11为等价对构成等价数组的结果,形成的等价数组包括7个等价对;图12为影像图中行连通区域标记后的直观结果。
[0138]
对等价数组e进行处理,查找等价数组里面的等价列表,通过等价列表对标记数a重新赋值。首先判断等价数组e的大小是否为零,如果为零则不做处理,如果不为零,则进行后续的处理。此例的等价数组大小为7,继续后续处理。
[0139]
建立一个以标记数a里面最大元素值为大小的数组f(此时标记数a里面的最大元素为8),并将f的值初始为0,结果如图14a;建立值为零的新等价数组e'。然后对等价数组e里面的每个等价对第一个位置的值、第二个位置的值比较大小,较小的值放在第一个位置,较大的值放在第二个位置。接着对等价数组里面的等价对排序,按照第一个位置的值升序排列,如果第一个位置的值相等,再按照第二个位置的值升序排列。最后去除等价数组里面的重复等价对。
[0140]
此例中等价对两个值的顺序不需要处理,也没有重复等价对,因此只演示了等价数组的排序处理。等价数组e处理过程如图13。
[0141]
等价数组e对数组f的赋值原理见专利说明书。
[0142]
按照顺序分别取图13b等价数组里面的等价对(1,2)、(1,3)、(1,8),分别对数组f赋值,结果如图14b,此时标记值1、2、3、8构成一个等价列表,表示1、2、3、8标记值对应的行连通区域相互连通。
[0143]
接下来再按照顺序分别取图13b等价数组里面的等价对(4,5)、(4,6)、(4,7),分别对数组f赋值,结果如图14c,此时标记值4、5、6、7构成一个等价列表,表示4、5、6、7标记值对应的行连通区域相互连通。
[0144]
再下来按照顺序取图13b等价数组里面的等价对(7,8),由于f[7]!=0且f[8]!=0且f[7]!=f[8],此时形成一个新的等价对(f[7],f[8]),即新的等价对(1,4),将其存入新的等价数组e',结果如图15。
[0145]
用数组f(图14c)对标记数a重新赋值,按照条件if(f[a[i]!=0),则a[i]=f[a[i]],即f[a[i]]不等于零时,a[i]=f[a[i]],重新赋值的标记数a如图16c。
[0146]
以a[1]=f[a[1]]演示赋值过程,a[1]表示标记数组a里面第一个位置的标记数,
该值为1,即a[1]=1,此时f[a[1]]为f[1],而f[1]表示数组f里面第一个位置的值,该值为1,即f[1]=1,最后a[1]=f[a[1]]=f[1]=1,即重新赋值后的标记数a[1]=1。
[0147]
以a[2]=f[a[2]]演示赋值过程,a[2]表示标记数组a里面第二个位置的标记数,该值为2,即a[2]=2,此时f[a[2]]为f[2],而f[2]表示数组f里面第二个位置的值,该值为1,即f[2]=1,最后a[2]=f[a[2]]=f[2]=1,即重新赋值后的标记数a[2]=1。
[0148]
由于新的等价数组e'的大小不为0(此时的大小为1),因此用新赋值的标记数a(图16c)和新的等价数组e'(图15),重复进行等价列表查找,标记数重新赋值的工作。
[0149]
建立一个以标记数a里面最大元素值为大小的数组f(此时标记数a里面的最大元素为4),并将f的值初始为0,结果如图17a;再建立值为零的新等价数组。然后对等价数组e'里面的每个等价对第一个位置的值、第二个位置的值比较大小,较小的值放在第一个位置,较大的值放在第二个位置。接着对等价数组里面的等价对排序,按照第一个位置的值升序排列,如果第一个位置的值相等,再按照第二个位置的值升序排列。最后去除重复等价对。等价数组e'处理后的结果如图15。
[0150]
按照顺序取图15等价数组里面的等价对(1,4)。分别对数组f赋值,结果如图17b,此时标记值1、4构成一个等价列表,表示重新赋值的标识数组a里面1、4标记值对应的行连通区域相互连通。
[0151]
用数组f(图17b)对上一次重新赋值后的标记数a,再次重新赋值,按照条件if(f[a[i]!=0),则a[i]=f[a[i]],即f[a[i]]不等于零时,a[i]=f[a[i]]。重新赋值的标记数a如图18c。
[0152]
由于没有形成新的等价对,所以对标记数a重新赋值的过程结束。
[0153]
从最后重新赋值的标记数a(图18c)知道,标记数组里面只有一个元素1,表示此例中所有的行连通区域构成的新连通区域为一个区域,如图19。
[0154]
后续统计新连通区域的像素个数、过滤连通区域的原理见说明书。新连通区域的像素个数为s=(2-2 1) (4-4 1) (6-6 1) (6-2 1)
……
(17-2 1)=40。
[0155]
实施例2
[0156]
本实施例提供一种遥感影像像素极值检测系统,包括:
[0157]
分块模块m1,用于对遥感影像按照预设行数进行分块,并按块将影像数据读取至计算机内存;
[0158]
检查模块m2,用于对每一块影像,检测每行中的连通区域;所述连通区域是指该区域内每个像元位置至少有一个波段的像素值为像素极值0或者255的区域;
[0159]
合并模块m3,用于将具有连通性的连通区域进行合并,得到若干个新连通区域;
[0160]
像素个数计算模块m4,用于计算每一所述新连通区域中的像素个数;
[0161]
像素极值区域确定模块m5,用于从所述新连通区域中过滤掉所述像素个数大于设定阈值的区域,得到有效数据覆盖区域的连通区域,所述有效数据覆盖区域的连通区域为像素极值所在的区域。
[0162]
可选的,所述合并模块m3具体包括:
[0163]
三元数组获取子模块m31,用于获取每个连通区域的三元数组,所述三元数组包括所在行号、开始列号、结束列号;
[0164]
标记数组和等价数组建立子模块m32,用于建立以所有所述连通区域总个数为大
小的标记数组,并将所述标记数组中每一标记数a的值初始化为0,每一所述连通区域与一个所述标记数对应,建立值为零的等价数组e;
[0165]
同行连通区域获取子模块m33,用于将第一个连通区域对应的第一标记数值记为a[1]=1,判断其他连通区域是否为同行连通区域,将所述同行连通区域对应的第二标记数值a[i]记为当前连通区域标记数最大值加1,所述同行连通区域为与所述第一个连通区域位于相同行的连通区域;
[0166]
第一判断子模块m34,用于根据所述三元数组,判断非同行连通区域与上一行连通区域的相交情况,得到第一判断结果;所述上一行连通区域为所述非同行连通区域的上一行的连通区域,所述相交情况包括不相交以及有x处相交,x≥1;
[0167]
第二判断子模块m35,用于判断所述非同行连通区域对应的第三标记数值是否为0,得到第二判断结果;
[0168]
第三标记数组值获取子模块m36,用于根据所述第一判断结果和所述第二判断结果获得所述第三标记数值,并根据所述第一判断结果和所述第二判断结果获得每一所述标记数对应的等价对,将所述等价对存入等价数组;
[0169]
第三判断子模块m37,用于判断所述等价数组是否为零,得到第三判断结果,若所述第三判断结果为是,则对所述等价数组对应的标记数值不进行修改;
[0170]
重新赋值子模块m38,用于若所述第三判断结果为否,则根据等价列表,并按具有连通性的连通区域标记数值相同的原则,对所述标记数重新赋值;所述等价列表由所述等价数组构成;
[0171]
新连通区域获取子模块m39,用于将重新赋值后值相同的各标记数对应的连通区域组合为新连通区域。
[0172]
可选的,所述像素个数计算模块m4具体包括:
[0173]
差值计算子模块m41,用于计算所述新连通区域中每一行的结束列号与开始列号的差值,并将所述差值加1,得到每一行新连通区域的像素个数;
[0174]
总像素个数计算子模块m42,用于根据每一行新连通区域的像素个数计算所述新连通区域中的总像素个数。
[0175]
可选的,当所述非同行连通区域与所述上一行连通区域之间满足公式:startcol
cur
≤endcol
pre
1&endcol
cur
≥startcol
pre-1&row
cur
==row
pre
1时,则判定所述非同行连通区域与所述上一行连通区域相交;
[0176]
其中,startcol
cur
表示当前非同行连通区域的开始列号;endcol
pre
表示上一行连通区域的结束列号;endcol
cur
表示当前非同行连通区域的结束列号;startcol
pre
表示上一行连通区域的开始列号;row
cur
表示当前非同行连通区域的行号;row
pre
表示上一行连通区域的行号。
[0177]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0178]
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据
本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献