将任意形状图像区域重塑为N个矩形区域的方法及其系统与流程

文档序号:25525750发布日期:2021-06-18 20:15阅读:196来源:国知局
将任意形状图像区域重塑为N个矩形区域的方法及其系统与流程

本发明涉及图像处理技术领域,尤其涉及一种将任意形状图像区域重塑为n个矩形区域的方法及其系统。



背景技术:

在计算机视觉领域内,常常需要对图片进行多种算法的计算,但很多算法的输入均为矩阵(图片中的矩形区域),在对图片中感兴趣的非矩形区域进行多种算法计算时,不能直接将该区域做为算法的输入,可以将边缘填充成矩形后进行计算,但填充部分和感兴趣区域有明显变化,该变化如作为算法的输入部分,可能会严重影响算法的输出,所以更通用的做法是选取感兴趣区域中的1至n个区域代替目标区域进行算法计算。但目前尚无较为通用的算法实现。



技术实现要素:

本发明的目的在于提供一种将任意形状图像区域重塑为n个矩形区域的方法及其系统,方便对图片任意感兴趣区域进行多种算法计算,以加速智能化应用的开发。

为实现上述目的,本发明采用以下技术方案:

本申请第一个方面提供了一种将任意形状图像区域重塑为n个矩形区域的方法,包括:

获取待处理的原始图像,并确认原始图像的感兴趣区域,所述感兴趣区域为任意形状;

将原始图像进行二值化处理,感兴趣区域的像素标记为1,其它区域的像素标记为0;

对感兴趣区域进行剪切,剪切出感兴趣区域沿水平方向的最小外接矩形;

在剪切出的最小外接矩形中,按照预设规则查找面积最大的矩形,即为最大面积矩形;

以最大面积矩形为中心,将最大面积矩形外、最小外接矩形内的其它标记为1的图像像素采用流沙式填充方式逐步向内聚合为矩形;

当聚合后的矩形的最外侧四条边的数据中,存在全部或部分未填充满1的情形时,则对最外侧四条边进行数据重组,尽可能填充满最多的边;若数据重组后仍存在未填充满1的边,则将该边丢弃;

将上述处理好的矩形切割成n个矩形区域,n为大于1的正整数。

优选地,所述剪切出感兴趣区域沿水平方向的最小外接矩形,包括如下步骤:

从二值化处理后的图像的最外侧四条边中的左边开始,四条边以顺时针方向顺序依次从外向内查找出第一次出现1的坐标,坐标依次记为xmin、ymin、xmax、ymax;

最小外接矩形的区域的左上角坐标记为(xmin,ymin),右下角坐标记为(xmax,ymax)。

优选地,所述在剪切出的最小外接矩形中,按照预设规则查找面积最大的矩形,即最大面积矩形,包括如下步骤:

在所述最小外接矩形中,从上向下逐行遍历;

每个当前行与遍历过的行在y轴方向上连续为1的块构成不同高度的柱状,并记录高度值;

从左向右查找每一点作为右下角坐标在由上一步不同高度的柱状图形中所能构成的最大矩形;

计算最大矩形的面积,并判断是否面积为最大,最大则更新最大矩形的坐标;

重复上述步骤至遍历完所有行,获得最大面积矩形坐标。

在一种优选实施例中,最小外接矩形的相应矩阵为最小外接矩阵a,a的坐标为[xmin:xmax,ymin:ymax],其中,(xmin,ymin)和(xmax,ymax)分别是最小外接矩形的区域的左上角坐标与右下角坐标,所述按照预设规则查找面积最大的矩形,包括矩阵变换步骤和面积计算步骤;其中,

所述矩阵变换步骤,包括:

将最小外接矩阵a变换为高度矩阵b,高度矩阵b中的每个值表示将最小外接矩阵a中该位置在y轴方向往上所能构成的最大矩形高度,即

其中,j表示矩阵的第j行,i表示矩阵的第i列,i、j均为大于等于0的自然数;aji表示最小外接矩阵a中第j行、第i列的像素;bji表示高度矩阵b中第j行、第i列的像素;

所述面积计算步骤,包括:

根据高度矩阵b中的每个像素bji,按如下公式依次计算,得到与高度矩阵b对应的面积矩阵s,即面积矩阵s中的每个值为其对应的最小外接矩阵a中,以相同位置的像素点为矩形右下角坐标,向左向上查找到的最大矩形的像素求和,像素bji的计算公式为:

其中,sji表示面积矩阵s中第j行、第i列的像素;n,n1,n2,……nn均为大于等于0的自然数;

在计算出的面积矩阵s中查找最大值,即最大面积坐标sjimax,如果存在多个值,则取离面积矩阵s的中心距离最近的坐标,如果仍然存在多个值,则随机取其中一个坐标作为最大面积坐标sjimax;在最小外接矩阵a中,以对应最大面积坐标sjimax位置的像素点为矩形右下角坐标,向左向上查找到的最大矩形即为最大面积矩形。

在一种更优选实施例中,在计算面积矩阵s的过程中,通过稀疏矩阵k,记录所述最大面积矩形左上角的坐标;在计算最大面积坐标sjimax的过程中,当最大面积坐标sjimax存在多个值,所述随机取其中一个坐标作为最大面积坐标sjimax的计算公式为:

sjimax=random(min(abs((sj-kj)/2-h/2))+abs((si-ki)/2-w/2))))

其中,h为矩阵k的高,w为矩阵k的宽,kj为矩阵k记录的最大面积坐标sjimax所对应的最大面积矩形的左上角的行坐标,ki为矩阵k记录的最大面积坐标sjimax所对应的最大面积矩形的左上角的列坐标,sj为最大面积坐标sjimax的行坐标,si为最大面积坐标sjimax的列坐标。

优选地,所述以最大面积矩形为中心,将最大面积矩形外、最小外接矩形内的其它标记为1的图像像素采用流沙式填充方式逐步向内聚合为矩形,包括:从最大面积矩形的最外侧四条边中的左边开始,四条边以顺时针方向逐边逐层向外查找与填充;其中,在填充最大面积矩形的外侧的第n边时,n为大于等于1的正整数,第n边中为1的像素不变,为0的像素由第n边相邻的外侧边、即第(n+1)边的最近像素中为1的像素进行填充,所述最近像素为第(n+1)边,且以最大面积矩形为中心、其左右45°夹角左闭右开范围内的像素。

在一种优选实施例中,所述采用流沙式填充方式逐步向内聚合为矩形,包括:从最大面积矩形的最外侧四条边中的左边开始,其外侧的第一列为sk,k为大于等于0的自然数,则第sk列中为1的位置保持不变,第sk列中为0的位置从第(sk-1)列,及以最大面积矩形为中心、其左右45°夹角左闭右开范围内的像素中查找值为1的像素填充在第sk列为0的位置;重复以上步骤,最大面积矩形的最外侧四边按顺时针方向逐边逐层向外查找并填充完所有数据。

优选地,在采用流沙式填充方式将最大面积矩形外、最小外接矩形内的其它像素逐步向内聚合为矩形后,所述对最外侧四条边进行数据重组,尽可能填充满最多的边,若数据重组后仍存在未填充满1的边,则将该边丢弃,包括如下步骤:

将聚合后的矩形的最外侧四条边的数据按照逆时针方向依次向矩形的左上角点汇聚;

从汇聚后的矩形的最外侧四条边中的上边开始,按顺时针方向依次检查四条边的数据,数据填满的边保留,未填满的边丢弃。

优选地,所述将处理好的矩形切割成n个矩形区域,包括如下步骤:

计算短边的长度,短边为处理好的矩形中较短的一边,则较长的另一边为长边;

计算短边和长边各需要切割的份数,分别为x和y,且按x、y切割后的矩形区域最趋近于正方形;

按照x、y计算切割的坐标,并进行矩形切分;

其中,若处理好的矩形为正方形,则短边、长边即为正方形的边长,且x=y。

更优选地,所述将处理好的矩形切割成n个矩形区域,包括如下步骤:

设处理好的矩形的短边长度为h,长边长度为w,w>=h,按如下公式计算短边需要切割的份数x、以及长边需要切割的份数y,x、y均为大于等于1的正整数:

x*y+z=n,且x、y、z值同时满足以下约束条件,

(1)z取值为0或1;

(2)y>=x;

(3)(y-x)的绝对值为最小;

计算短边切割的位置坐标,短边切割的第x份的坐标为:x*(h/x)并取整(如round取整),x=1,……,x-1;

计算长边切割的位置坐标,当z=0时,长边切割的第y份的坐标为:y*(w/y)并取整(如round取整),y=1,……,y-1;当z=1时,长边切割的第y’份的坐标为:y’*(w/(y+1))并取整(如round取整),y’=1,……,y,即当z为1时,长边的切割份数实际为(y+1)。

本申请第二个方面提供了一种将任意形状图像区域重塑为n个矩形区域的系统,包括:

感兴趣区域确认模块,用于获取待处理的原始图像,并获取原始图像的感兴趣区域,所述感兴趣区域为任意形状;

原始图像二值化处理模块,用于将原始图像进行二值化处理,感兴趣区域的像素标记为1,其它区域的像素标记为0;

最小外接矩形查找模块,用于对感兴趣区域进行剪切,剪切出感兴趣区域沿水平方向的最小外接矩形;

最大面积矩形查找模块,用于在剪切出的最小外接矩形中,按照预设规则查找面积最大的矩形,即为最大面积矩形;

流沙式填充模块,用于以最大面积矩形为中心,将最大面积矩形外、最小外接矩形内的其它标记为1的图像像素采用流沙式填充方式逐步向内聚合为矩形;

数据重组模块,用于当聚合后的矩形的最外侧四条边的数据中,存在全部或部分未填充满1的情形时,对最外侧四条边进行数据重组,尽可能填充满最多的边;若数据重组后仍存在未填充满1的边,则将该边丢弃;

矩形切割模块,用于将上述处理好的矩形切割成n个矩形区域,n为大于1的正整数。

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

本申请提供一种将任意形状图像区域重塑为n个矩形区域的方法,能够对图片中感兴趣的任意形状区域重塑为n个矩形区域,作为多种图像处理的算法输入,方便对任意感兴趣区域进行多种算法计算,提高了图像处理的算法输出的准确性,有效避免了图像处理的失真,加速了智能化应用的开发。

附图说明

构成本申请的一部分附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是本发明提供的将任意形状图像区域重塑为n个矩形区域的方法的流程图;

图2是本发明实施例提供的方法中将原始图像剪切出最小外接矩形的示例图;

图3是本发明实施例提供的方法中将最小外接矩形中的像素变换为高度矩阵的部分变换示例图;

图4是本发明实施例提供的方法中将最小外接矩阵a变换到高度矩阵b的处理结果示例图;

图5是本发明实施例提供的方法中将高度矩阵b变换到面积矩阵s的部分变换示例图;

图6是本发明实施例提供的方法中由高度矩阵b计算得到面积矩阵s的处理结果示例图;

图7是本发明实施例提供的方法中由最小外接矩阵a变换到面积矩阵s的整个过程的逻辑示例图;

图8是本发明实施例提供的方法中流沙式填充的查找方向及填充示例;

图9是本发明实施例提供的方法中对聚合后的矩形的最外侧四条边进行数据重组的示例图;

图10是本发明实施例提供的方法中z=0时的矩形切割举例;

图11是本发明实施例提供的方法中z=1时的矩形切割举例。

图12是本发明实施例提供的将任意形状图像区域重塑为n个矩形区域的系统的结构示意图。

具体实施方式

使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

图1为本发明提供的将任意形状图像区域重塑为n个矩形区域的方法的流程图。如图1所示,一种将任意形状图像区域重塑为n个矩形区域的方法,主要包括如下步骤:

步骤s01:获取待处理的原始图像,并确认该待处理的原始图像的感兴趣区域,所述感兴趣区域为任意形状;

步骤s02:将待处理的原始图像进行二值化处理,感兴趣区域的像素标记为1,其它区域的像素标记为0;

步骤s03:对感兴趣区域进行剪切,剪切出感兴趣区域沿水平方向的最小外接矩形;

步骤s04:在剪切出的最小外接矩形中,按照预设规则查找面积最大的矩形,即最大面积矩形;

步骤s05:以最大面积矩形为中心,将最大面积矩形外、最小外接矩形内的其它标记为1的图像像素采用流沙式填充方式逐步向内聚合为矩形;

步骤s06:当聚合后的矩形的最外侧四条边的数据中,存在全部或部分未填充满1的情形时,则对最外侧四条边进行数据重组,尽可能填充满最多的边;若数据重组后仍存在未填充满1的边,则将该边丢弃;

步骤s07:将上述处理好的矩形切割成n个矩形区域,n为大于1的正整数。

实施例

步骤s01:获取待处理的原始图像,并确认该待处理的原始图像的感兴趣区域,所述感兴趣区域可以为任意形状。

步骤s02:将原始图像进行二值化处理,其中,感兴趣区域的像素标记为1,其它区域的像素标记为0,感兴趣区域坐标为其它算法处理结果或手工指定坐标。二值化处理后的图像像素如图2所示,其中,灰色部分为感兴趣区域。

步骤s03:对感兴趣区域进行剪切,剪切出感兴趣区域沿水平方向的最小外接矩形,步骤为:

从二值化处理后的图像的最外侧四条边中的左边开始,四条边以顺时针方向顺序依次从外向内查找出第一次出现1的坐标,坐标依次记为xmin、ymin、xmax、ymax;

最小外接矩形的区域的左上与右下角坐标分别为(xmin,ymin)和(xmax,ymax),即最小外接矩形的相应矩阵为最小外接矩阵a=[xmin:xmax,ymin:ymax]。处理后的最小外接矩形参阅图2中虚线框出的矩形区域。

步骤s04:在剪切出的最小外接矩阵a中,按照预设规则查找面积最大的矩形,即最大面积矩形,具体包括以下步骤:

步骤s041:高度矩阵b的计算。

在所述最小外接矩形中,从上向下逐行遍历,每个当前行与遍历过的行在y轴方向上连续为1的块构成不同高度的柱状,并记录高度值。参阅图3,图3给出了高度矩阵的部分变换示例。例如,最小外接矩形中,位于第三行、第三列的像素为1,位于其上方的两个像素也都是1(虚框部分),即在a22点时,a02、a12都是1,所以第三行、第三列的像素往上所能构成的最大矩形高度为3,则对应的高度矩阵中的第三行、第三列的像素为3。

具体地,将最小外接矩阵a变换为高度矩阵b,高度矩阵b中的每个值表示将最小外接矩阵a中该位置在y轴方向往上所能构成的最大矩形高度,即

其中,j表示矩阵的第j行,i表示矩阵的第i列,i、j均为大于等于0的自然数;aji表示最小外接矩阵a中第j行、第i列的像素;bji表示高度矩阵b中第j行、第i列的像素。

最小外接矩阵a变换后的完整的高度矩阵b的示例图参阅图4所示。

步骤s042:面积矩阵s的计算。

根据高度矩阵b中的每个像素bji,按如下公式依次计算,得到与高度矩阵b对应的面积矩阵s:

其中,sji表示面积矩阵s中第j行、第i列的像素;n,n1,n2,……nn均为大于等于0的自然数。

参阅图5,图5给出了将高度矩阵b变换为面积矩阵s的部分变换示例。例如,在b22点时,先取[1,b22]中最大正整数,这里为3,因为b22相邻前面(即其左侧)没有大于等于3的值,即n1=0,所以s1=(0+1)×3=3(也就是对应图5中最小外接矩阵a中虚线框中像素点构成的矩形);再取(b22-1),即取2时,因为b22相邻前面(即其左侧)没有大于等于2的值,即n2=0,所以s2=(0+1)×(3-1)=2;最后取(b22-2),即取1时,因为b22相邻前面(即其左侧)连续大于等于1的值有2个,即n3=2,所以s3=(2+1)×(3-2)=3(也就是对应图5中最小外接矩阵a中实线框中像素点构成的矩形)。即面积矩阵s中的每个值为其对应的最小外接矩阵a中,以相同相同位置像素点为矩形右下角坐标,向左向上查找到的最大矩形的像素之和。

由高度矩阵b计算完整面积矩阵s的示例图参阅图6所示。

步骤s043:最大面积矩形左上角坐标记录。

即在上一步计算面积矩阵s的过程中,通过稀疏矩阵k,记录所述最大面积矩形左上角的坐标。

步骤s044:最大面积坐标计算。

在计算出的面积矩阵s中查找最大值,即最大面积坐标sjimax,如果存在多个值,则取离面积矩阵s的中心距离最近的坐标,如果仍然存在多个值,则随机取其中一个坐标作为最大面积坐标sjimax。在最小外接矩阵a中,以对应最大面积坐标sjimax位置的像素点为矩形右下角坐标,向左向上查找到的最大矩形即为最大面积矩形。

具体地,在计算最大面积坐标sjimax的过程中,当最大面积坐标sjimax存在多个值,所述随机取其中一个坐标作为最大面积坐标sjimax的计算公式为:

sjimax=random(min(abs((sj-kj)/2-h/2))+abs((si-ki)/2-w/2))))

其中,h为矩阵k的高,w为矩阵k的宽,kj为矩阵k记录的最大面积坐标sjimax所对应的最大面积矩形的左上角的行坐标,ki为矩阵k记录的最大面积坐标sjimax所对应的最大面积矩形的左上角的列坐标,sj为最大面积坐标sjimax的行坐标,si为最大面积坐标sjimax的列坐标。

本实施例中,最大面积坐标sjimax为图7中的面积矩阵s中的s45=9,可对应到最小外接矩阵a中的实线框,实线框即为查找到的最大面积矩形。

步骤s05:以最大面积矩形为中心,将最大面积矩形外、最小外接矩形内的其它标记为1的图像像素采用流沙式填充方式逐步向内聚合为矩形,具体包括以下步骤:

参阅图8,在最小外接矩阵a中,从最大面积矩形的最外侧四条边中的左边开始,四条边以顺时针方向逐边逐层向外查找与填充;其中,在填充最大面积矩形的外侧的第n边时,n为大于等于1的正整数,第n边中为1的像素不变,为0的像素由第n边相邻的外侧边、即第(n+1)边的最近像素中为1的像素进行填充,所述最近像素为第(n+1)边,且以最大面积矩形为中心、其左右45°夹角左闭右开范围内的像素。

具体地,所述采用流沙式填充方式逐步向内聚合为矩形,包括:从最大面积矩形的最外侧四条边中的左边开始,其外侧的第一列为sk,k为大于等于0的自然数,则第sk列中为1的位置保持不变,第sk列中为0的位置从第(sk-1)列,及以最大面积矩形为中心、其左右45°夹角左闭右开范围内的像素中查找值为1的像素填充在第sk列为0的位置;重复以上步骤,最大面积矩形的最外侧四边按顺时针方向逐边逐层向外查找并填充完所有数据。

图8给出了流沙式填充的查找方向及填充示例,其中,实线框表示的是最大面积矩形,弯曲的虚线箭头表示将第(sk-1)列中为1的像素填充至第sk列中像素为0的位置,弯曲的实线箭头表示的是按顺时针顺序逐边逐层向外查找的查找方向。

步骤s06:当聚合后的矩形的最外侧四条边的数据中,存在全部或部分未填充满1的情形时,则对最外侧四条边进行数据重组,尽可能填充满最多的边,处理方式为:参阅图9,将最外侧四条边的数据按照逆时针方向依次向聚合后的矩形的左上角点汇聚;从汇聚后的矩形的最外侧四条边中的上边开始,按顺时针方向依次检查四条边的数据,数据填满的边保留,未填满的边丢弃。

步骤s07:将上述处理好的矩形切割成n个矩形区域,n为大于1的正整数,具体包括如下步骤:

计算短边的长度,短边为处理好的矩形中较短的一边,则较长的另一边为长边;计算短边和长边各需要切割的份数,分别为x和y,且按x、y切割后的矩形区域最趋近于正方形;按照x、y计算切割的坐标,并进行矩形切分;其中,若处理好的矩形为正方形,则短边、长边即为正方形的边长,且x=y。

具体地,设处理好的矩形的短边长度为h,长边长度为w,w>=h,按如下公式计算短边需要切割的份数x、以及长边需要切割的份数y,x、y均为大于等于1的整数:

x*y+z=n,且x、y、z值同时满足以下约束条件,

(1)z取值为0或1;

(2)y>=x;

(3)(y-x)的绝对值为最小;

计算短边切割的位置坐标,短边切割的第x份的坐标为:x*(h/x)并取整(如round取整),x=1,……,x-1;

计算长边切割的位置坐标,当z=0时,长边切割的第y份的坐标为:y*(w/y)并取整(如round取整),y=1,……,y-1;当z=1时,长边切割的第y’份的坐标为:y’*(w/(y+1))并取整(如round取整),y’=1,……,y,即当z为1时,长边的切割份数实际为(y+1)。

图10为z=0时的矩形切割举例,参阅图10,矩形的短边长度为h,矩形的长边长度为w。切割方式为:矩形分割为8个矩形区域,即n=8,其中,短边切割为2份,长边切割为4份,即x=2,y=4。

则短边切割的第一份的坐标为:x1=round(1*(h/2));

长边边切割的第一份的坐标为:y1=round(1*(w/4));

长边边切割的第二份的坐标为:y2=round(2*(w/4));

长边边切割的第三份的坐标为:y3=round(3*(w/4))。

图11为z=1时的矩形切割举例,参阅图11,矩形的短边长度为h,矩形的长边长度为w。切割方式为:矩形分割为7个矩形区域,即n=7,其中,短边切割为2份,长边切割为3份,即x=2,y=3。

则短边切割的第一份的坐标为:x1=round(1*(h/2));

长边边切割的第一份的坐标为:y1’=round(1*(w/(3+1)));

长边边切割的第二份的坐标为:y2’=round(2*(w/(3+1)));

长边边切割的第三份的坐标为:y3’=round(3*(w/(3+1)))。

可见,当z为1时,长边的切割份数实际为4份,即(y+1)份。

参阅图12,本实施例还提供了一种将任意形状图像区域重塑为n个矩形区域的系统100,其包括:

感兴趣区域确认模块101,用于获取待处理的原始图像,并获取原始图像的感兴趣区域,所述感兴趣区域为任意形状;

原始图像二值化处理模块102,用于将原始图像进行二值化处理,感兴趣区域的像素标记为1,其它区域的像素标记为0;

最小外接矩形查找模块103,用于对感兴趣区域进行剪切,剪切出感兴趣区域沿水平方向的最小外接矩形;

最大面积矩形查找模块104,用于在剪切出的最小外接矩形中,按照预设规则查找面积最大的矩形,即为最大面积矩形;

流沙式填充模块105,用于以最大面积矩形为中心,将最大面积矩形外、最小外接矩形内的其它标记为1的图像像素采用流沙式填充方式逐步向内聚合为矩形;

数据重组模块106,用于当聚合后的矩形的最外侧四条边的数据中,存在全部或部分未填充满1的情形时,对最外侧四条边进行数据重组,尽可能填充满最多的边;若数据重组后仍存在未填充满1的边,则将该边丢弃;

矩形切割模块107,用于将上述处理好的矩形切割成n个矩形区域,n为大于1的正整数。

对于以上各模块的具体工作过程,可进一步参考本发明实施例提供的将任意形状图像区域重塑为n个矩形区域的方法,在此不再重复。

综上所述,本申请提供一种将任意形状图像区域重塑为n个矩形区域的方法及其系统,能够对图片中感兴趣的任意形状区域重塑为n个矩形区域,作为多种图像处理的算法输入,方便对任意感兴趣区域进行多种算法计算,提高了图像处理的算法输出的准确性,有效避免了图像处理的失真,以加速智能化应用的开发。

以上对本发明的具体实施例进行了详细描述,但其只是作为范例,本发明并不限制于以上描述的具体实施例。对于本领域技术人员而言,任何对本发明进行的等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作的均等变换和修改,都应涵盖在本发明的范围内。

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