基于行程编码的任意连通域的水平内接矩形算法及装置的制作方法

文档序号:11145035阅读:738来源:国知局
基于行程编码的任意连通域的水平内接矩形算法及装置的制造方法

本发明涉及图像处理技术领域,尤其涉及对目标区域求取最大内接矩形的算法及装置。



背景技术:

在机器视觉中,对目标区域求取最大内接矩形在工业上有越来越广泛的应用,开发出一种适用性广,准确率高的求最大水平内接矩形图像处理算法对于工业应用意义重大。

现有的算法中,主要针对规则形状求感兴趣区域最大水平内接矩,或针对非规则形状求感兴趣区域最大水平内接矩。

对于规则形状求水平内接矩形比较简单,通常有数学公式可循,如圆形、十字形等。对于非规则的感兴趣区域或者任意形状感兴趣区域求内接矩形则一直是视觉领域一大研究难点,现有算法主要针对的是凸多边形求内接矩形,对于凹多边形并含有孔洞状态下的任意多边形求内接矩形算法在国内还很罕见。而工业应用中,对有孔状态下任意多边形求最大内接矩形是十分常见的应用,如材料切割等领域。

现有常用的算法包括遍历法及中心扩散法,其中,遍历法虽然对噪声具有很强的鲁棒性,但其适用范围比较窄,对于凹多边形以及带有孔洞的多边形无法正确求出最大内接矩形;中心扩散法与遍历法相比,虽然适用范围更广,但其准确率不高,稳定性比较差,同时,这种算法无法针对所有的凹凸多边形,以及带孔洞的多边形正确求出最大内接矩形。因此研发针对有孔状态下的任意多边形求最大水平内接矩形算法是非常有必要的。



技术实现要素:

针对现有技术的上述缺陷,本发明提供一种基于行程编码的任意连通域的水平内接矩形算法及装置,能够求解带孔洞的任意多边形的最大水平内接矩形。

本发明所提供基于行程编码的任意连通域的水平内接矩形算法包括:

获取图像的感兴趣区域;

对图像感兴趣区域进行行程编码;

求取编码后感兴趣区域的最大水平内接矩形。

进一步地,所述行程为同一行或同一列中连续像素点组成的一段区域,包括行行程及列行程,所述行行程以行程所在行号、行程内连续像素点的起始列及终止列标示,所述列行程以行程所在列号、行程内连续像素点的起始行及终止行标示。

进一步地,所述对图像感兴趣区域进行行程编码的步骤包括:自感兴趣区域的最小行最小列像素点开始,逐行逐列取区域内各行程的行号、起始列及终止列,并对其进行记录,所述行程按照行顺序依次进行记录,每行按照列顺序依次进行记录;

或者,自感兴趣区域的最小行最小列像素点开始,逐列逐行取区域内各行程的列号、起始行及终止行,并对其进行记录,所述行程按照列顺序依次进行记录,每列按照行顺序依次进行记录。

进一步地,所述遍历行程,求取编码后感兴趣区域的最大水平内接矩形的步骤包括:

取任意两个行行程组成行程对,在列方向求交,获得列方向的交集为候选矩形的宽,两行行程的行差为候选矩形的高;

遍历该行程对之间的所有行行程,若候选矩形中间存在孔洞,则修正候选矩形的宽使其避开孔洞,保持候选矩形的高不变,求得修正后候选矩形的面积并保存;

穷尽所有行程对,对所获得候选矩形的面积进行对比,取其中面积最大的一个为感兴趣区域的最大水平内接矩形;

或者:

取任意两个列行程组成行程对,在行方向求交,获得行方向的交集为候选矩形的高,两列行程的列差为候选矩形的宽;

遍历该行程对之间的所有列行程,若候选矩形中间存在孔洞,则修正候选矩形的高使其避开孔洞,保持候选矩形的宽不变,求得修正后候选矩形的面积并保存;

穷尽所有行程对,对所获得候选矩形的面积进行对比,取其中面积最大的一个为感兴趣区域的最大水平内接矩形。

进一步地,该算法还包括步骤:

在计算机中开辟一段内存用于对各行程进行记录;

若记录过程中,所述内存容量不够,则重新开辟一段大于原容量的内存;

将原有内存中的数据复制至此段内存中,释放原有内存。

本发明所提供的基于行程编码的任意连通域的水平内接矩形装置,包括:

区域分割模块,用于获取图像的感兴趣区域;

行程编码模块,用于对图像感兴趣区域进行行程编码;

内接矩形求取模块,用于遍历行程,求取编码后感兴趣区域的最大水平内接矩形。

进一步地,所述行程为同一行或同一列中连续像素点组成的一段区域,包括行行程及列行程,所述行行程以行程所在行号、行程内连续像素点的起始列及终止列标示,所述列行程以行程所在列号、行程内连续像素点的起始行及终止行标示。

进一步地,所述行程编码模块自感兴趣区域的最小行最小列像素点开始,逐行逐列取区域内各行程的行号、起始列及终止列,并对其进行记录,所述行程按照行顺序依次进行记录,每行按照列顺序依次进行记录;或者,所述行程编码模块自感兴趣区域的最小行最小列像素点开始,逐列逐行取区域内各行程的列号、起始行及终止行,并对其进行记录,所述行程按照列顺序依次进行记录,每列按照行顺序依次进行记录。

进一步地,所述内接矩形求取模块包括候选矩形求取模块、候选矩形修复模块及候选矩形对比模块,其中:

所述候选矩形求取模块,用于取任意两个行行程组成行程对,在列方向求交,获得列方向的交集为候选矩形的宽,两行行程的行差为候选矩形的高;

所述候选矩形修复模块,用于遍历该行程对之间的所有行行程,若候选矩形中间存在孔洞,则修正候选矩形的宽使其避开孔洞,保持候选矩形的高不变,求得修正后候选矩形的面积并保存;

所述候选矩形对比模块,用于穷尽所有行程对,对所获得候选矩形的面积进行对比,取其中面积最大的一个为感兴趣区域的最大水平内接矩形;

或者:

所述候选矩形求取模块,用于取任意两个列行程组成行程对,在行方向求交,获得行方向的交集为候选矩形的高,两列行程的列差为候选矩形的宽;

所述候选矩形修复模块,用于遍历该行程对之间的所有列行程,若候选矩形中间存在孔洞,则修正候选矩形的高使其避开孔洞,保持候选矩形的宽不变,求得修正后候选矩形的面积并保存;

所述候选矩形对比模块,用于穷尽所有行程对,对所获得候选矩形的面积进行对比,取其中面积最大的一个为感兴趣区域的最大水平内接矩形。

进一步地,所述用于对行程进行记录的存储空间为计算机的内存。

本发明通过对图像的感兴趣区域采用行程编码数据结构,减少了对计算机内存的占用量、加快了程序运行速度;通过对感兴趣区域取行程对求交集、并根据感兴趣区域内部是否存在孔洞修正该交集的方式,可以获取具有凹、凸边或带有孔洞的感兴趣区域内所有可能存在的内接矩形,通过对上述内接矩形的对比即可获得感兴趣区域的最大内接矩形,在工业应用中更具有实际意义。

附图说明

图1是本发明对感兴趣区域进行行程编码示意图;

图2(a)是本发明求取候选矩形示意图;

图2(b)是本发明修正候选矩形示意图;

图3是本发明算法流程图;

图4是本发明装置示意图。

具体实施方式

以下结合附图及实施例,对本发明进行详细说明。

本发明基于行程编码的任意连通域的水平内接矩形算法包括以下步骤:

获取图像的感兴趣区域;

对图像感兴趣区域进行行程编码;

遍历行程,求取编码后感兴趣区域的最大水平内接矩形。

不同灰度值的像素点组合在一起构成图像,由于像素点灰度值的不同使得图像呈现出不同的图案。图像处理中一般先采用阈值分割等方法对图像进行分割以获得其感兴趣区域,再对感兴趣区域进行描述。现有算法中对感兴趣区域通常直接用像素点表示,如开源库OpenCV的ROI,以8位深度的灰度图来说,若一片感兴趣区域含30万个像素点,则其内存占用量为300000byte,约292KB,因此用像素点表示感兴趣区域存在内存占用大的弊端。而采用行程编码方式,内存占用量可能低至3KB,二者相差近一百倍,可见行程编码图像对减少程序资源的占用是非常有效的。

为了减少内存的占用量,本发明采用行程编码的方式来表示感兴趣区域。如图1所示,图中每一个方格代表一个像素点,感兴趣区域100的每一行或每一列中连续像素点组成的一段区域为一个行程,每一行或每一列均可能包含若干个行程,行程分为行行程与列行程,例如图中的111、112分别为第一行行程、第二行行程,121为第一列行程。行行程结构包含行程所在行号、行程内连续像素点的起始列与终止列;列行程包含行程所在列号、行程内连续像素点的起始行与终止行。唯一标示一个行程需提供其行号、起始列与终止列,或列号、起始行与终止行。一个行程内所包含像素的点数没有限制,若上述行号、列号等每个分量分别用两个字节表示,则一个行程占用6个字节,每一片感兴趣区域由有限个行程组成,行程数量远小于像素点数,因此,采用行程编码的方式表示图像感兴趣区域所占用的内存要远低于用像素点表示的方式。

对图像感兴趣区域进行行程编码的过程,就是将感兴趣区域划分为多个行程、并对各行程予以记录的过程,感兴趣区域可以划分为多个行行程,也可以划分为多个列行程。参考图3,以其划分为多个行行程为例,该过程具体包括以下步骤:

在计算机中开辟一片内存用以对各行程进行记录;

自感兴趣区域的最小行最小列像素点开始,逐行逐列取区域内各行程的行号、起始列及终止列,并将其保存在所开辟的内存中;

记录过程中,若所开辟内存容量不够,则重新开辟一段大于原容量的内存,将原有内存中的数据复制至此段内存中,释放原有内存。

其中,所有行程按照行顺序依次进行记录,每行的所有行程又按照列顺序依次进行记录。

当感兴趣区域划分为多个列行程时,则自感兴趣区域的最小行最小列像素点开始,逐列逐行取区域内各行程的列号、起始行及终止行,并对其进行记录。其中,所有行程按照列顺序依次进行记录,每列行程又按照行顺序依次进行记录。

经过上述步骤,图像感兴趣区域被编码为行程表示方式,接下来就要通过遍历行程的方式,对经过行程编码后的感兴趣区域求取最大内接矩形。以感兴趣区域被划分为多个行行程为例,求取其最大水平内接矩形的步骤包括:

如图2(a)所示,取任意两个行行程113、114组成行程对,对两行行程在列方向求交,获得列方向的交集为候选矩形的宽W1,两行行程的行差为候选矩形的高H;

遍历该行程对之间的所有行行程,若候选矩形中间存在孔洞,则修正候选矩形的宽为W2,如图2(b)所示,使候选矩形避开孔洞,保持候选矩形的高不变,求得修正后候选矩形的面积并保存;

穷尽所有行程对,获得所有可能存在的候选矩形,对比其面积,取其中面积最大的一个即为感兴趣区域的最大水平内接矩形。

当感兴趣区域划分为多个列行程时,则取任意两个列行程组成行程对,对两列行程在行方向求交,获得行方向的交集为候选矩形的高,两列行程的列差为候选矩形的宽;

遍历该行程对之间的所有列行程,若候选矩形中间存在孔洞,则修正候选矩形的高,使候选矩形避开孔洞,保持候选矩形的宽不变,求得修正后候选矩形的面积并保存。

穷尽候选矩形,对其其面积,最终获得最大水平内接矩形。

如图4所示,本发明基于行程编码的任意连通域的水平内接矩形装置,包括:

区域分割模块,用于获取图像的感兴趣区域;

行程编码模块,用于对图像感兴趣区域进行行程编码;

内接矩形求取模块,用于遍历行程,求取编码后感兴趣区域的最大水平内接矩形。

其中,行程编码模块自感兴趣区域的最小行最小列像素点开始,逐行逐列取区域内各行程的行号、起始列及终止列,并对其进行记录,行程按照行顺序依次进行记录,每行按照列顺序依次进行记录;或者,行程编码模块自感兴趣区域的最小行最小列像素点开始,逐列逐行取区域内各行程的列号、起始行及终止行,并对其进行记录,行程按照列顺序依次进行记录,每列按照行顺序依次进行记录。

其中,用于对行程进行记录的存储空间为计算机的内存。

内接矩形求取模块包括候选矩形求取模块、候选矩形修复模块及候选矩形对比模块,其中:

候选矩形求取模块,用于取任意两个行行程组成行程对,对两行行程在列方向求交,获得列方向的交集为候选矩形的宽,两行行程的行差为候选矩形的高;

候选矩形修复模块,用于遍历该行程对之间的所有行行程,若候选矩形中间存在孔洞,则修正候选矩形的宽,使候选矩形避开孔洞,保持候选矩形的高不变,求得修正后候选矩形的面积并保存;

候选矩形对比模块,用于穷尽所有行程对,获得所有可能存在的候选矩形,对比其面积,取其中面积最大的一个为感兴趣区域的最大水平内接矩形。

或者:

候选矩形求取模块,用于取任意两个列行程组成行程对,对两列行程在行方向求交,获得行方向交集为候选矩形的高,两列行程的列差为候选矩形的宽;

候选矩形修复模块,用于遍历该行程对之间的所有列行程,若候选矩形中间存在孔洞,则修正候选矩形的高,使候选矩形避开孔洞,保持候选矩形的宽不变,求得修正后候选矩形的面积并保存;

候选矩形对比模块,用于穷尽所有行程对,获得所有可能存在的候选矩形,对比其面积,取其中面积最大的一个为感兴趣区域的最大水平内接矩形。

本发明中图像感兴趣区域经行程编码后,表示图像的最小单位为行程,每个行程可包含的像素点数无限制,因此感兴趣区域的行程数必然比像素点数目少,与现有技术通过遍历所有像素点获得其最大水平内接矩形相比,遍历行程则变得更简单,执行算法耗时也将减少。同时,如前所述,进行行程编码后,内存占用少,使得该算法更适用于对资源有一定限制的嵌入式平台。

本发明通过对感兴趣区域取行程对求交集、并根据感兴趣区域内部是否存在孔洞修正该交集、最终获得感兴趣区域内所有可能存在的内接矩形,并对比得出感兴趣区域的最大水平内接矩形,对于规则、凸、凹、存在孔洞等任意多边形均能够准确求取最大水平内接矩,解决了现有算法无法适用于存在孔洞的任意多边形内接矩形求取,应用单一的问题,稳定性高,能够满足工业现场的各种需求,促进相关工业领域的智能化发展。

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