基于空间约束和KD树的语义线段聚集集合的计算方法与流程

文档序号:16672162发布日期:2019-01-18 23:39阅读:167来源:国知局
基于空间约束和KD树的语义线段聚集集合的计算方法与流程

本发明属于图像处理技术领域,基于空间约束和kd树的语义线段聚集集合的计算方法。



背景技术:

合成孔径雷达sar是遥感技术领域的重要方向,用来获取地球表面的高分辨图像。与其他类型的成像技术相比,sar成像技术有着非常重要的优势,它不受云层、降雨或者大雾等大气条件以及光照强度的影响,能够全天时、全天候地获取高分辨遥感数据。sar图像的解译技术对于军事、农业、地理等许多领域具有重要指导意义。sar图像分割是sar图像解译的关键问题之一,也是sar图像解译的基础和前提,受到各国研究者的广泛关注,成为研究的热点。但sar图像由于本身的成像机制造成图像上有相干斑噪声、阴影、迎陂缩短和图像的地物形状发生改变等问题,使得sar图像的解译非常困难。以sketchmap为基础的sar图像聚集区域的提取是根据sar图像的素描模型对地物信息的稀疏表示的结果,以素描线段为基元的聚集区域获取方法对于快速获取图像的聚集区域非常重要。

上世纪八十年代,marr通过总结心理物理学、神经生理学及解剖学等方面关于人类视觉的研究成果,指出人类视觉本质上是一种信息处理的过程,并提出了视觉计算理论的框架原型。后来,guo和朱松纯等人基于marr视觉计算理论中的素描理论,提出了适用于自然图像的初始素描模型和方法,并利用自然图像的素描信息实现了图像的压缩和重构。借鉴朱松纯等人提出的初始素描模型,针对sar图像所具有的统计分布特性、成像时固有的相干特性和不同于一般光学图像的几何特征,在研究sar图像边、线检测方法的基础上,建立了sar图像的素描模型,并设计实现了sar图像素描图(sketchmap)的提取方法。在sar图像素描图的基础上,通过赋予素描线段的语义信息,根据语义素描线段聚集程度的统计分布和语义素描线段空间拓扑结构的关系,建立了求解聚集区域的计算模型和获取聚集区域的方法,在此基础上构建了区域图。在语义空间区域图对sar图像划分的基础上,可以在语义层面上对sar图像进行分析和处理,进而达到对sar图像语义分割和解译的目的。

但是,目前实现方法是基于表的方式,而基于表的方式组织数据的方法无法保存语义线段的k近邻关系,导致在之后需要计算每条语义线段的k近邻语义线段的时候其搜索效率极低,不能适应于大场景的sar图像解译。



技术实现要素:

本发明的目的在于针对基于表的方式组织数据的方法存在时间和空间复杂性较高的不足,提出一种基于空间约束和kd树的语义线段聚集集合的计算方法,以避免资源消耗大、效率低的问题,加快了生长速度,适用于大场景。

本发明是通过以下技术方案来实现:

基于空间约束和kd树的语义线段聚集集合的计算方法,包括如下步骤:步骤1,建立语义线段的kd树,具体为:对于双侧和单侧聚集语义线段构成的集合x={x1,...,xi,...,xn},在2维空间上建立了该集合中语义线段中点的kd树;

步骤2,将语义线段集合x分为单侧聚集语义线段集合xs和双侧聚集语义线段集合xd;

步骤3,定义种子语义线段集合和区域生长集合,具体为:将定义为种子语义线段集合,其中|xd|表示双侧聚集语义线段集合xd中语义线段的条数;将定义为区域生长集合,初始为空,其中表示种子语义线段xi的区域生长集合;将双侧聚集语义线段集合xd中语义线段加入到种子语义线段集合se中,利用种子语义线段集合se中的每条语义线段xi初始化区域生长集合u中每个区域生长集合

步骤4,以种子语义线段集合se的语义线段为种子语义线段,计算种子语义线段的近邻集合,具体为:根据语义线段的聚集度,取出种子语义线段集合se中聚集度最高的种子语义线段xi;获得以聚集度最高的种子语义线段xi中点为圆心,以最优聚集度μbest上界为半径的圆形区域内的所有语义线段xj,并将其构成种子语义线段xi的近邻集合ni;

步骤5,对种子语义线段xi和种子语义线段xi的近邻集合ni中的语义线段xj进行区域合并,具体为:对种子语义线段xi的近邻集合ni中的所有语义线段xj,执行:

如果语义线段xj尚未出现在区域生长集合u中,将语义线段xj加入区域生长集合中;

否则将种子语义线段xi所在的区域生长集合和语义线段xj所在的区域生长集合合并为新的区域生长集合

步骤6,判断是否结束区域生长,具体为:从种子语义线段集合se中移除种子语义线段xi,然后执行下面步骤:如果种子语义线段集合se非空时,执行步骤4;否则,结束区域生长过程,得到区域生长集合u。

优选的,步骤4具体按如下步骤进行:

步骤4.1,定义语义线段kd树的节点,具体为:

定义语义线段kd树的任一节点φ为{r,value,split,left,right,parent},其中r表示以φ为根节点的树中所有的语义线段集合,value为语义线段kd树φ节点表示的该条语义线段,split为语义线段kd树φ节点用来划分语义线段集合r的坐标轴,left为语义线段kd树φ节点的左子树的根节点,right为语义线段kd树φ节点的右子树的根节点,parent为语义线段kd树φ节点的父节点;

步骤4.2,从语义线段kd树的根节点root开始查找种子语义线段xi的k近邻集合ni,记每次访问的当前节点为φ,此时φ=root。

进一步的,步骤4.2具体按如下步骤进行:

步骤4.21,查找语义线段kd树中与种子语义线段xi距离最小的叶子结点,记为φ;

步骤4.22,对于双侧聚集语义线段和单侧聚集语义线段构成的集合x的所有的语义线段,从叶子结点开始查找种子语义线段xi的k近邻集合ni;

步骤4.23,对于种子语义线段xi与种子语义线段xi的k近邻集合ni中的所有语义线段xj,如果语义线段xj与种子语义线段xi之间的距离大于最优聚集度μbest上界,则将语义线段xj从种子语义线段xi的k近邻集合ni中移除。

进一步的,步骤4.21具体按如下步骤进行:

步骤a,如果在语义线段kd树当前节点φ的划分轴φ(split)上,种子语义线段xi的值和语义线段kd树当前节点φ表示的语义线段的值满足关系:xi(split)≤φ(value.split),则从语义线段kd树当前节点φ的左子树开始,继续查找与种子语义线段xi距离最小的语义线段kd树叶子结点:将φ(left)作为当前节点,继续记当前节点为φ;

否则,则将从语义线段kd树当前节点φ的右子树开始,继续查找与种子语义线段xi距离最小的语义线段kd树叶子结点:将φ(right)作为当前节点,继续记当前节点为φ;

步骤b,如果语义线段kd树当前节点φ保存的语义线段的集合中元素个数不等于1,继续执行步骤a;

进一步的,步骤4.22具体按如下步骤进行:

步骤a,判断当前节点φ所代表的语义线段是否需要加入到种子语义线段xi的k近邻集合ni中,具体为:如果种子语义线段xi的k近邻集合ni中语义线段的个数|ni|与需要的近邻集合个数k满足:|ni|<k,将该节点表示的语义线段φ(value)加入种子语义线段xi的k近邻集合ni中;

否则,根据定义有:种子语义线段xi与该节点表示的语义线段φ(value)之间的距离为dist(φ(value),xi),把种子语义线段xi的k近邻集合ni中与种子语义线段xi间距离最大的语义线段表示为xmax,该最大距离表示为θ;如果dist(φ(value),xi)和θ满足如下关系:

dist(φ(value),xi)<θ

则从ni中移除语义线段xmax,然后将φ(value)加入到ni中;

步骤b,判断语义线段kd树当前节点φ的父节点表示的语义线段是否需要加入种子语义线段xi的k近邻集合ni中:如果在语义线段kd树当前节点的父节点φ(parent)划分的轴φ(parent.split)上,种子语义线段xi与语义线段kd树中当前节点φ的父节点φ(parent)表示的语义线段φ(parent.value)坐标之差的绝对值与θ满足:

|φ(parent.value.split)-xi(split)|≥θ,

则将语义线段kd树当前节点φ回溯到父节点φ(parent),继续查找种子语义线段xi的k近邻集合,将φ(parent)作为当前节点,继续记当前节点为φ,然后执行步骤a;否则,执行步骤c;

步骤c,继续访问语义线段kd树当前节点φ父节点φ(parent)的另外一棵子树:如果语义线段kd树当前节点φ为其父节点φ(parent)的左子树,即φ(parent.left)=φ,则继续访问语义线段kd树当前节点φ的父节点φ(parent)的右子树:将φ(parent.right)作为当前节点,继续记当前节点为φ;

否则,继续访问语义线段kd树当前节点φ的父节点的左子树:将φ(parent.left)作为当前节点,继续记当前节点为φ;

步骤d,如果语义线段kd树当前节点φ不是语义线段kd树的根节点root,则执行步骤a。

进一步的,步骤4.23具体按如下步骤进行:对于种子语义线段xi的k近邻集合ni中的所有语义线段xj,执行:

如果种子语义线段xi与语义线段xj之间的距离dist(xi,xj)与最优聚集度上界μbest之间满足:

dist(xi,xj)>μbest

则将语义线段xj从种子语义线段xi的k近邻集合ni中移除。

优选的,步骤2具体为:将语义线段集合x中双侧聚集的语义线段xi加入一个集合,记为xd={xi|xi∈x且xi为双侧聚集};将语义线段集合x中单侧聚集的语义线段xj加入一个集合,记为xs={xj|xj∈x且xj为单侧聚集}。

与现有技术相比,本发明具有以下有益的技术效果:

本发明利用sketchmap的稀疏表示,在2维空间上构建语义线段中点的kd树,基于表的方式组织数据的方法,无法保存语义线段的k近邻关系,而kd树是对数据点在k维空间中进行划分的一种数据结构,是一种高维索引树形结构,为了能有效地找到最近邻,kd-tree采用分而治之的思想,将整个空间划分为几个小部分,搜索时只需要在指定的空间中进行相关操作,而不需要搜索全部的数据,因此本发明提出的基于kd树的数据组织形式中,由于保存了语义线段间的近邻关系,极大地提高了搜索的效率,节省了时间和空间开销,成功应用在了大场景下sar图像的解译上,拓展了算法的使用范围,为高分辨大场景sar图像语义空间的构建提供了坚实的基础。

附图说明

图1是本发明的实现流程图;

图2是本发明中生成的k=13下的统计直方图;

图3是本发明生成的某一区域的区域生长过程图;

图4是本发明中使用的sar图像的原图(a)和素描图(b);图5为采用本发明的方法在图4中素描图(b)上进行区域生长后的效果图。

具体实施方式

下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。

参照图1,本发明的具体实施步骤如下:将双侧聚集和单侧聚集的语义线段构成的集合x={x1,...,xi,...,xn}以每条语义线段为元素构建kd树,将语义线段划分到双侧聚集语义线段集合xd和单侧聚集语义线段集合xs中,然后用xd初始化种子语义线段se,建立区域生长集合;对语义线段进行区域生长,得到最终的区域生长集合u,每个区域生长集合的元素表示以语义线段xi为种子语义线段的区域生长集合,也是我们要求解的语义线段聚集集合,具体步骤如下。

步骤1,定义语义线段的聚集度并建立语义线段kd树,具体为:对于双侧和单侧聚集语义线段构成的集合x={x1,...,xi,...,xn},把求解语义线段之间近邻关系的问题转化为求解语义线段中点之间的近邻关系;为了更快地计算某个语义线段中点与其它中点之间的k近邻关系,在2维空间上建立了这些语义线段中点的kd树。

将语义线段xi和距离语义线段xi最近的k条语义线段放入一个集合,记为ni={xj|j∈ψ(xj),且其中ψ(xj)是由距离语义线段xi最近的k条语义线段的索引组成;

计算语义线段xi与集合ni中每条语义线段xj的距离,计算平均值记为μi,定义μi为语义线段xi的聚集度,如统计直方图2所示,以μi为横坐标,μi出现的次数为纵坐标,出现次数最多的μi记为μpeak,记最优聚集度范围为

μbest=[μpeak-δ,μpeak+δ],

其中μpeak为峰值的横坐标值(如统计直方图2所示),δ是一个超参数,表示偏离最优聚集度的位移量。

步骤2,将语义线段集合x分为单侧聚集语义线段集合和双侧聚集语义线段集合,具体为:将语义线段集合x中双侧聚集的语义线段xi加入一个集合,记为xd={xi|xi∈x且xi为双侧聚集};将语义线段集合x中单侧聚集的语义线段xj加入一个集合,记为xs={xj|xj∈x且xj为单侧聚集}。且xd、xs和x之间满足:

x=xd∪xs;

步骤3,定义种子语义线段和区域生长集合,具体为:

表示种子语义线段集合,其中|xd|表示双侧聚集语义线段集合xd中语义线段的条数,且种子语义线段se与双侧聚集语义线段集合xd满足:表示区域生长集合,初始为空,其中uxi表示种子语义线段xi的区域生长集合。将双侧聚集语义线段集合xd中语义线段加入到种子语义线段集合se中,利用种子语义线段集合se中的每条语义线段xi初始化区域生长集合u中每个区域生长集合

步骤4,以种子语义线段集合se的某一条语义线段为种子语义线段,计算种子语义线段的近邻集合,具体为:根据语义线段的聚集度,取出种子语义线段集合se中聚集度最高的种子语义线段xi;获得以聚集度最高的种子语义线段xi中点为圆心,以最优聚集度μbest上界为半径的圆形区域内的所有语义线段xj,并将其构成种子语义线段xi的近邻集合ni;具体执行下面步骤:

(4.1)定义两条语义线段的距离和定义语义线段kd树的节点,具体为:记任意两条语义线段间的距离:

其中xi,xj为任意两条语义线段,语义线段xi的中点坐标为(xi,yi),语义线段xj的中点坐标为(xj,yj),dist(xi,xj)为语义线段xi和语义线段xj之间的距离。

定义语义线段kd树的任一节点φ为{r,value,split,left,right,parent},其中r表示以φ为根节点的树中所有的语义线段集合,value为语义线段kd树φ节点表示的该条语义线段,split为语义线段kd树φ节点用来划分语义线段集合r的坐标轴,left为语义线段kd树φ节点的左子树的根节点,right为语义线段kd树φ节点的右子树的根节点,parent为语义线段kd树φ节点的父节点;

(4.2)从语义线段kd树的根节点root开始查找种子语义线段xi的k近邻集合ni,记每次访问的当前节点为φ,此时φ=root;具体为:

(4.21)查找语义线段kd树中与种子语义线段xi距离最小的叶子结点,记为φ。按下面步骤进行:

(a)如果在语义线段kd树当前节点φ的划分轴φ(split)上,种子语义线段xi的值和语义线段kd树当前节点φ表示的语义线段的值满足关系:xi(split)≤φ(value.split),则从语义线段kd树当前节点φ的左子树开始,继续查找与种子语义线段xi距离的最小语义线段kd树叶子结点:将φ(left)作为当前节点,继续记当前节点为φ;

否则,则将从语义线段kd树当前节点φ的右子树开始,继续查找与种子语义线段xi距离最小的语义线段kd树叶子结点:将φ(right)作为当前节点,继续记当前节点为φ;

(b)如果语义线段kd树当前节点φ保存的语义线段的集合中元素个数不等于1,即表示语义线段kd树当前节点φ不是语义线段kd树叶子节点,还需要继续从语义线段kd树查找与种子语义线段xi距离最小的语义线段kd树叶子节点,继续执行步骤(a);

(4.22)对于双侧聚集语义线段和单侧聚集语义线段构成的集合x的所有的语义线段,从叶子结点开始查找种子语义线段xi的k近邻集合ni。具体执行下面步骤:

(a)判断当前节点φ所代表的语义线段是否需要加入到种子语义线段xi的k近邻集合ni中,具体为:如果种子语义线段xi的k近邻集合ni中语义线段的个数|ni|与需要的近邻集合个数k满足:|ni|<k,将该节点表示的语义线段φ(value)加入种子语义线段xi的k近邻集合ni中;

否则,根据定义有:种子语义线段xi与该节点表示的语义线段φ(value)之间的距离为dist(φ(value),xi),把种子语义线段xi的k近邻集合ni中与种子语义线段xi间距离最大的语义线段表示为xmax,该最大距离表示为θ。如果dist(φ(value),xi)和θ满足如下关系:

dist(φ(value),xi)<θ

则用该节点表示的语义线段φ(value)替代种子语义线段xi的k近邻集合ni中xmax作为种子语义线段xi新的近邻语义线段,具体为从ni中移除语义线段xmax,然后将φ(value)加入到ni中;

(b)判断语义线段kd树当前节点φ的父节点表示的语义线段是否需要加入种子语义线段xi的k近邻集合ni中:如果在语义线段kd树当前节点的父节点φ(parent)划分的轴φ(parent.split)上,种子语义线段xi与语义线段kd树中当前节点φ的父节点φ(parent)表示的语义线段φ(parent.value)坐标之差的绝对值与满足:

|φ(parent.value.split)-xi(split)|≥θ,

将语义线段kd树当前节点φ回溯到父节点φ(parent),继续查找种子语义线段xi的k近邻集合,将φ(parent)作为当前节点,继续记当前节点为φ,然后执行步骤(a);

(c)继续访问语义线段kd树当前节点φ父节点φ(parent)的另外一棵子树:如果语义线段kd树当前节点φ为其父节点φ(parent)的左子树,即φ(parent.left)=φ,则继续访问语义线段kd树当前节点φ的父节点φ(parent)的右子树:将φ(parent.right)作为当前节点,继续记当前节点为φ;

否则,继续访问语义线段kd树当前节点φ的父节点的左子树:将φ(parent.left)作为当前节点,继续记当前节点为φ;

(d)如果语义线段kd树当前节点φ不是语义线段kd树的根节点root,即φ≠root,执行步骤(a)。

(4.23)对于种子语义线段xi与种子语义线段xi的k近邻集合ni中的所有语义线段xj,如果语义线段xj与种子语义线段xi之间的距离大于最优聚集度μbest上界,则将语义线段xj从种子语义线段xi的k近邻集合ni中移除,按如下步骤进行:对于种子语义线段xi的k近邻集合ni中的所有语义线段xj,执行:

如果种子语义线段xi与语义线段xj之间的距离dist(xi,xj)与最优聚集度上界μbest之间满足:

dist(xi,xj)>μbest

则将xj从ni中移除。

步骤5,对种子语义线段xi和种子语义线段xi的近邻集合ni中的语义线段进行区域合并,生长示意图如图3所示,具体为:将对种子语义线段xi的近邻集合ni中的所有语义线段xj,执行:

如果语义线段xj尚未出现在区域生长集合u中,将语义线段xj加入区域生长集合中;

否则将种子语义线段xi所在的区域生长集合和语义线段xj所在的区域生长集合合并为新的区域生长集合

步骤6,判断是否结束区域生长,具体为:从种子语义线段集合se中移除种子语义线段xi,然后执行下面步骤:如果种子语义线段集合se非空时,执行步骤4;

如果种子语义线段集合se为空时,结束区域生长过程,得到区域生长集合u,每个区域生长集合的元素表示以语义线段xi为种子语义线段的区域生长集合,也是本发明要求解的语义线段聚集集合,其中每个聚集线段集代表了一个区域生长后的集合其中区域生长集合u与双侧聚集语义线段和单侧聚集语义线段构成的集合x之间满足:

并且区域生长集合u内集合间满足:其中∪表示集合的并运算,∩表示集合的交运算,表示空集,

本发明的效果通过以下仿真结果进一步说明。

1.仿真条件

选取terranoerdlin图像,sar图像的波段和分辨率、sketchmap稀疏表示模型中参数取值和区域图参数,如表1所示:

表1

其中sm参数取值分别表示等效视数、编码增益、边缘检测高阈值、边缘检测低阈值,区域图参数k表示k近邻中的取值。

2.仿真内容

仿真内容:利用x-band波段分辨率为1米的terranoerdlin图像,分别用本发明和基于表的方法对图像进行区域生长,其中图4中(a)为terranoerdlin原图,图4中(b)为terranoerdlin的素描图,图5为采用本发明的方法在terranoerdlin的素描图上进行区域生长后的效果图。

将本发明与现有基于表方式组织数据的方法在terranoerdlin的语义线段图上进行聚集区域生长运行时间对比,如表2所示,

表2

3.仿真结果分析:

从表2可以看出,本发明较基于表方式组织数据的方法存在明显优势,为处理大场景下的sar图像提供了可行方案。

因为基于表方式组织数据的方法计算近邻的时候,需要遍历所有点,所以每个点计算一次近邻的时间复杂度为o(n),计算所有语义线段的近邻的时间复杂度为o(n2);而基于语义kd树的算法计算一次近邻时间复杂度为o(lgn),计算所有语义线段近邻的时间复杂度为o(nlgn);因为区域生长的过程涉及到大量的近邻搜索操作,如果语义线段数目剧增,使用基于语义kd树的算法可以大大提高算法的效率。

综上所述,本发明实现了基于空间约束和kd树的语义线段聚集集合的计算方法,不仅在语义线段区域生长上效果良好,而且速度有较大提高,也解决了之前基于表的方式组织数据的计算方法无法直接解译大场景sar图像的缺点。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1