求四边形最大内接矩形,一种不规则多边形的最大内接矩形的快速近似求解方法与流程...

求四边形最大内接矩形,一种不规则多边形的最大内接矩形的快速近似求解方法与流程..._第1张图片

本发明属于几何数学的图像应用领域,可以应用于辅助图像预处理,具体涉及一种不规则多边形的最大内接矩形的快速近似求解方法,实现将图像处理后,比如说分割后的,不规则图像快速转换为神经网络,支持向量机等图像处理方法需要的矩形图像。

背景技术:

在图像解译中,我们主要会进行图像分割和图像分类两部分操作:首先,通过基于对象的分割生成一个个对象实体,例如遥感图像中的河流,山地等;随后,将分割出的实体传入分类器进行分类;然而,图片分类器大都需要输入图片为规则矩形,也就是欧几里得数据。在我们当前选用的能大幅提高精度的基于神经网络的分类器更是如此。而在现有技术中,主要有两种从非欧几里得数据转化到欧几里得数据的方法。

第一种是求取不规则多边形的最小外接矩形,这种方法优势在于能快速产生欧几里得数据,但是存在在外接矩形中却不在超像素的像素需要用镜像,均值等方法填充,这些填充方式生成的像素往往和真实像素大相径庭,从而大大降低了之后进行的分类的精度;第二种则是求取不规则多边形的最大内接矩形,内接矩形中的数据全部为真实数据,因此不会对分类器精度产生影响;然而传统生成最大内接矩形的方法,例如:中心扩散法等需要多次对矩形边界重新定位,降低了运算效率。

因此,如何高效高精度的求取分割图像内部不规则多边形的内接矩形用于神经网络的输入,成为基于神经网络等图片分类器进行图像解译的核心。

技术实现要素:

为解决现有图像解译时,求取非欧几里得数据最大内接矩形从而获取欧几里得数据的方法精度和效率相对不足的问题,本发明提出了一种不规则多边形的最大内接矩形的快速近似求解方法,以达到高效准确实用性强的表现性能。

具体技术方案如下:

步骤1、用divide_size为边长的正方形形成的网格覆盖分割后的图像,(其中divide_size的选取以分割后图像中最小的分割对象为参考,设分割对象水平方向长度为l,divide_size设置为);并确定网格中的每个正方形和分割实体的包含关系,即如果正方形a中包含的所有像素都在一个分割实体object中,即为这个分割实体包含正方形a,并将这个正方形的状态设置为分割实体的序号数;

对于完全在分割实体中的网格设置状态为分割实体序号数,否则设置为-1,从而生成状态矩阵(bool_matrix);

步骤2、对于每一个分割实体序号,在bool_matrix中求取包含这个序号的最大矩形;当所有分割实体都找到最大矩形后,我们便得到了最终的结果。

首先,本发明简化了内接矩形的生成步骤,从而减少了用户处理的时间;只需要用户输入包含不规则多边形的图片(即分割后的图像),而不是裁剪后的对象实体即可处理,从而大大减少预处理的工作量,对于用户友好。传统的内接矩形一次只处理一个对象实体,因此当用户需要对一整张分割图片处理时需要将一个个对象实体进行裁剪再求取内接矩形,而本发明通过以图像为单位,使得用户可以直接传入分割图片来生成内接矩形,减少了冗余的步骤。

其次,在原理层面,本发明利用图片本身的性质,向量化地求取内接矩形,以图片整体为单位进行处理,从而一次性可以处理一张图片中的多个不规则多边形,并将结果批量输出,利用并行处理技巧提升了速度。

最后,为了适应不同应用场景下计算性能的差异,本发明提供了divide_size这一参数来均衡时间复杂度和近似程度,这个参数可以看成是矩形的最小分辨率,参数增大时间近似程度减小,时间复杂度降低,反之,精度提升,时间复杂度提升。通过加入这个参数,可以提升本发明在不同场景下的适应性,用户根据时间和精度要求对参数进行选择,提升了实用性。

综上所述,本发明提出了一种快速求解不规则多边形的内接矩形算法,通过减少处理步骤,利用图像也是矩阵这一特点并行化处理,并采用良好的算法架构,本发明能实时,高效地裁剪出肉眼观感良好的近似最大内接矩形,并拥有对用户友好的特点;除此之外,还能提供参数均衡时间复杂度和近似程度,增加算法的实用性。

附图说明

图1为遥感图像经过分割后图像;

图2为本算法在图一上采用不同的divide_size得到的效果对比图;

图3为在不规则多边形均较大时的图上改变divide_size的测试对比图。

具体实施方式

为了对本发明进一步说明,下面在两张分割实体有不同尺寸和形状的分割后图片上,改变divide_size进行了实验,并对实验时间和效果进行了展示。本实施例基于sublimetext平台python和opencv编程实现。

步骤1、用divide_size为边长的正方形形成的网格覆盖分割后的图像,并确定网格中的每个正方形和分割实体的包含关系,即如果正方形a中包含的所有像素都在一个分割实体object中,即为这个分割实体包含正方形a,并将这个正方形的状态设置为分割实体的序号数;

对于完全在分割实体中的网格设置状态为分割实体序号数,否则设置为-1,从而生成状态矩阵(bool_matrix);假设一张图中只有3个分割实体,则可能的bool_matrix如表1所示;

表1:生成的bool_matrix示例,灰色部分代表0,1,2号分割实体的最大矩形区域

步骤2、对于每一个分割实体序号,在bool_matrix中求取包含这个序号的最大矩形;

例如:对于表1,序号为1的对象实体包含的面积最大的矩形应该是灰色部分;当所有分割实体都找到最大矩形后,我们便得到了最终的结果;

实验一:在拥有1563个分割实体的图片上进行实验,在divide_size=2,5时分别测试并进行效果对比。

实验结果表明,当divide_size为2,以样图中1563个不规则多边形为对象,生成他们的内接矩形只需要96.5s,因此生成一个不规则多边形的内接矩形平均只需要0.06s,且求取的内接矩形通过人眼判别近似程度好。因此本发明在精度达到要求的基础上,相比其他方法大大提高了速度并达到了实时处理的要求。

图2示出了不同的divide_size对比图,divide_size=2(a),divide_size=5(b)divide_size=2右下角放大图(c),divide_size=5右下角放大图(d)

下面通过实验和对比图说明divide_size对精度和效率的影响。从上面对比图可以看出,当divide_size为2比divide_size为5近似效果更好。时间上,对于有1563个不规则多边形的分割图片而言,当divide_size为2时,处理时间为148.5s;而divide_size=5时处理时间为96.5s,进一步提高了处理速度,从而说明调节参数divide_size可以达到近似效果和处理时间之间的平衡;

实验二:扩大不规则多边形的大小,在同样大小但是仅有100个对象实体的图上实验,当divide_size=10,5,2,1时进行测试并展示实验结果。

当divide_size=10,5,2,1时,实验消耗时间分别为:0.9s,3.1s,6.0s,22.6s,实验效果如图3所示:图3在不规则多边形均较大时的图上改变divide_size进行测试对比divide_size=10(a),divide_size=5(b)divide_size=2(c),divide_size=1(d)。可见,当不规则多边形均较大时,精度受到divide_size的影响较小,但是时间复杂度依旧没有减小,因此,在对象实体较大时可以采用较大的divide_size降低运行时间。

因此,综上所示,该方法在算法层面通过应用了以下几个处理方式提升了算法。

首先,从本方法简化了内接矩形的生成步骤,从而减少了用户处理的时间。传统的内接矩形一次只处理一个对象实体,因此当用户需要对一整张分割图片处理时需要将一个个对象实体进行裁剪再求取内接矩形,而本方法通过以图像为单位,使得用户可以直接传入分割图片来生成内接矩形,减少了冗余的步骤。

其次,在原理层面,本方法利用图片本身的性质,向量化地求取内接矩形,结果批量输出,进一步提升了速度。

最后,本方法设计了divide_size这一参数来均衡时间复杂度和近似程度,提升了实用性。

本发明通过并行化处理和良好的算法架构,本发明能实时、高效地裁剪出肉眼观感良好的近似内接矩形,并拥有预处理步骤少,对用户友好的特点;除此之外,还能提供参数均衡时间复杂度和近似程度。该方法可以通过divide_size参数对近似程度和时间复杂度二者进行平衡,实验结果表明生成1563个不规则多边形的最大内接矩形只需要96.5s,平均生成一个矩形的内接矩形只需要0.06s,大大地提高了裁剪速度;能在拥有1563个分割实体的720*680图片上近似裁剪内接矩形,且近似效果良好。

你可能感兴趣的:(求四边形最大内接矩形)