CN106570824A - 一种散图拼接方法和装置 - Google Patents

一种散图拼接方法和装置 Download PDF

Info

Publication number
CN106570824A
CN106570824A CN201610889931.0A CN201610889931A CN106570824A CN 106570824 A CN106570824 A CN 106570824A CN 201610889931 A CN201610889931 A CN 201610889931A CN 106570824 A CN106570824 A CN 106570824A
Authority
CN
China
Prior art keywords
stock layout
scattered
individual
individuality
generation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610889931.0A
Other languages
English (en)
Inventor
徐唐子松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201610889931.0A priority Critical patent/CN106570824A/zh
Publication of CN106570824A publication Critical patent/CN106570824A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4038Image mosaicing, e.g. composing plane images from plane sub-images

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明的实施方式提供了一种散图拼接方法。该散图拼接方法包括:针对待拼接的每一散图,确定该散图对应的凸多边形信息;根据各散图对应的凸多边形信息,利用排样算法和遗传算法确定空间利用率最大的大图。通过确定各散图的凸多边形信息,使用凸多边形而非矩形包络散图,从而显著地降低了空间浪费,提高了大图的空间利用率,减少了内存开销,为用户带来了更好的体验。此外,本发明的实施方式提供了一种散图拼接装置。

Description

一种散图拼接方法和装置
技术领域
本发明的实施方式涉及图片处理技术领域,更具体地,本发明的实施方式涉及一种散图拼接方法和装置。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
应用于移动终端中的游戏客户端,为了提高游戏图片的加载速度,通常将游戏中的散图(没有经过任何拼接的单独的原始图片)通过排样算法拼接成一张大图。
在游戏中加载大图相比于分别加载散图具有以下优势:1.渲染速度更快,移动端渲染普遍使用OpenGL ES(Open Graphics Library for Embedded Systems,嵌入式系统开放图形库),使用大图可以减少纹理切换,提升渲染效率;2.内存占用更小,将大图直接读入内存没有一次性读入大批散图带来的高内存峰值,并且对使用OpenGL ES低版本(如1.0)的GPU(Graphic Processing Unit,图像处理单元)而言,每张边长非2的n次幂的散图都会带来额外的内存消耗,而合成大图之后能规避这些消耗。
现有最常用且功能最强大的大图生成工具为TexturePacker,其使用MaxRects算法将散图打成一张大图。其中,MaxRects算法是一个二维图像排列算法,此算法实现了将一些矩形放到另一个较大的矩形里。利用MaxRects算法,TexturePacker将每张散图生成最小包络矩形,允许每张散图旋转90度或不旋转,然后对这些矩形进行排样,得到排列最佳即空间利用率最高的大图。
评价大图生成工具优劣的一个指标为空间利用率,对于一张由散图拼接成的大图而言,所有散图非透明像素总面积除以生成的大图面积,所得值为空间利用率。由于散图非透明像素总面积难以计算,通常直接计算生成的大图总面积即可,因为对同一批散图而言所有散图非透明像素总面积不变,生成的大图总面积越小则空间利用率越高,而大图总面积越小,游戏内存占用也会更低,因此,大图空间利用率越高意味着游戏内存占用越低。
发明内容
但是,由于大部分的散图为不规则形状,使用矩形包络散图本身就有很多空间浪费的原因,例如,三角形的散图,使用矩形包络周围会有较大的空间浪费。
因此,在现有技术中,将散图打成大图后存在一定的空间浪费,降低了大图的空间利用率,增加了内存开销,这是非常令人烦恼的过程。
为此,非常需要一种改进的散图拼接方法,以提高拼接得到的大图的空间利用率,降低内存开销。
在本上下文中,本发明的实施方式期望提供一种散图拼接方法和装置。
在本发明实施方式的第一方面中,提供了一种散图拼接方法,包括:
针对待拼接的每一散图,确定该散图对应的凸多边形信息;
根据各散图对应的凸多边形信息,利用排样算法和遗传算法确定空间利用率最大的大图。
优选地,针对待拼接的每一散图,确定该散图对应的凸多边形信息,包括:
针对每一散图,获取该散图的像素信息;
根据获取的像素信息,确定该散图非透明像素区域的轮廓曲线;
在所述非透明像素区域的轮廓曲线上选择第一预设数量的点作为该散图非透明像素区域轮廓的顶点;
针对确定出的顶点中任三个连续的顶点,如果该三个连续的顶点方向近似相同,则删除三个连续顶点中的中间顶点;
将保留的顶点序列作为该散图对应的凸多边形信息。
优选地,按照以下流程判断该三个连续的顶点方向是否近似相同:
沿同一方向依次连接三个顶点得到两条线段;
如果该两条线段所在直线的斜率的差值在第一预设范围内,则确定该三个连续的顶点方向相同,否则确定该三个连续的顶点方向不同。
优选地,根据各散图对应的凸多边形信息,利用排样算法和遗传算法确定空间利用率最大的大图,具体包括:
利用排样算法对各散图对应的凸多边形进行排样得到第二预设数量的排样个体,每一排样个体中包含各散图的位置和旋转角度;
将所述第二预设数量的排样个体作为第一代排样个体,利用遗传算法对所述第一代排样个体进行预设次数进化得到末代排样个体;
从所述末代排样个体中选择空间利用率最大的排样个体;
根据选择出的排样个体中各散图的位置和旋转角度拼接各散图得到大图。
优选地,针对每一代排样个体,按照以下流程进行进化得到下一代排样个体:
针对每一代排样个体,对该代排样个体中包含的每一个排样个体分别判断是否需要交叉,如果需要交叉,则将该排样个体与该代排样个体中最优排样个体进行交叉得到子代排样个体,如果不需要交叉,则遗传该排样个体作为子代排样个体,所述最优排样个体为该代排样个体中空间利用率最大的排样个体;
从该代排样个体和得到的所有子代排样个体中,根据空间利用率由高至低的顺序选择第二预设数量的排样个体作为下一代排样个体。
优选地,针对该代排样个体中包含的每一排样个体,按照以下方法确定该排样个体是否需要交叉:
针对该代排样个体中包含的每一排样个体,为该排样个体分配一随机数;
如果所述随机数位于第二预设范围之内,则确定该排样个体需要交叉;否则,确定该排样个体不需要不交叉。
优选地,将该排样个体与该代排样个体中最优排样个体进行交叉得到子代排样个体,具体包括:
根据该排样个体和最优排样个体中散图的排列顺序,随机选择一个排列位置进行交叉得到子代排样个体。
优选地,在从该代排样个体和得到的所有子代排样个体中,根据空间利用率由高至低的顺序选择第二预设数量的排样个体作为下一代排样个体之前,还包括:
针对得到的子代排样个体,按照预设的变异率对得到的子代排样个体进行变异。
优选地,针对得到的子代排样个体,按照预设的变异率判断出需要对子代排样个体进行变异时,则根据子代排样个体中散图的排列顺序,随机选取两个位置进行交换得到变异后的子代排样个体。
优选地,利用排样算法得到第二预设数量的第一代排样个体进一步包括按照以下方法进行排样得到其中一个排样个体:
根据每一散图对应的凸多边形,确定每一散图对应的凸多边形面积;
按照面积由大至小的顺序排列每一散图对应的凸多边形;
利用排样算法对排序后的散图对应的凸多边形进行排样得到相应的排样个体。
在本发明实施方式的第二方面中,提供了一种散图拼接装置,包括:
确定单元,用于针对待拼接的每一散图,确定该散图对应的凸多边形信息;
拼接单元,用于根据各散图对应的凸多边形信息,利用排样算法和遗传算法确定空间利用率最大的大图。
优选地,所述确定单元,包括:
获取子单元,用于针对每一散图,获取该散图的像素信息;
第一确定子单元,用于根据获取的像素信息,确定该散图非透明像素区域的轮廓曲线;
第一选择子单元,用于在所述非透明像素区域的轮廓曲线上选择第一预设数量的点作为该散图非透明像素区域轮廓的顶点;
处理子单元,用于针对选择出的顶点中任三个连续的顶点,如果该三个连续的顶点方向近似相同,则删除三个连续顶点中的中间顶点;
第二确定子单元,用于将保留的顶点序列作为该散图对应的凸多边形信息。
优选地,所述处理子单元,包括:
连接模块,用于针对任三个连续的顶点,沿同一方向依次连接三个顶点得到两条线段;
确定模块,用于如果该两条线段所在直线的斜率的差值在第一预设范围内,则确定该三个连续的顶点方向相同,否则确定该三个连续的顶点方向不同。
优选地,所述拼接单元,包括:
排样子单元,用于利用排样算法对各散图对应的凸多边形进行排样得到第二预设数量的排样个体,每一排样个体中包含各散图的位置和旋转角度;
进化子单元,用于将所述第二预设数量的排样个体作为第一代排样个体,利用遗传算法对所述第一代排样个体进行预设次数进化得到末代排样个体;
第二选择子单元,用于从所述末代排样个体中选择空间利用率最大的排样个体;
拼接子单元,用于根据所述选择子单元选择出的排样个体中各散图的位置和旋转角度拼接各散图得到大图。
优选地,所述进化子单元,包括:
交叉模块,用于针对每一代排样个体,对该代排样个体中包含的每一个排样个体分别判断是否需要交叉,如果需要交叉,则将该排样个体与该代排样个体中最优排样个体进行交叉得到子代排样个体,如果不需要交叉,则遗传该排样个体作为子代排样个体,所述最优排样个体为该代排样个体中空间利用率最大的排样个体;
选择模块,用于从该代排样个体和得到的所有子代排样个体中,根据空间利用率由高至低的顺序选择第二预设数量的排样个体作为下一代排样个体。
优选地,所述交叉模块,包括:
分配子模块,用于针对该代排样个体中包含的每一排样个体,为该排样个体分配一随机数;
确定子模块,用于如果所述随机数位于第二预设范围之内,则确定该排样个体需要交叉;否则,确定该排样个体不需要不交叉。
优选地,所述交叉模块,具体用于根据该排样个体和最优排样个体中散图的排列顺序,随机选择一个排列位置进行交叉得到子代排样个体。
优选地,所述进化子单元,还包括:
变异模块,用于在所述选择模块从该代排样个体和得到的所有子代排样个体中,根据空间利用率由高至低的顺序选择第二预设数量的排样个体作为下一代排样个体之前,针对得到的子代排样个体,按照预设的变异率对得到的子代排样个体进行变异。
优选地,所述变异模块,具体用于针对得到的子代排样个体,按照预设的变异率判断出需要对子代排样个体进行变异时,则根据子代排样个体中散图的排列顺序,随机选取两个位置进行交换得到变异后的子代排样个体。
优选地,所述排样子单元,包括:
第三确定模块,用于根据每一散图对应的凸多边形,确定每一散图对应的凸多边形面积;
排序模块,用于按照面积由大至小的顺序排列每一散图对应的凸多边形;
排样模块,用于利用排样算法对排序后的散图对应的凸多边形进行排样得到相应的排样个体。
在本发明实施方式的第三方面中,提供了一种散图拼接装置,例如,可以包括存储器和处理器,其中,处理器可以用于读取存储器中的程序,执行下列过程:针对待拼接的每一散图,确定该散图对应的凸多边形信息;根据各散图对应的凸多边形信息,利用排样算法和遗传算法确定空间利用率最大的大图。
在本发明实施方式的第四方面中,提供了一种程序产品,其包括程序代码,当所述程序产品运行时,所述程序代码用于执行以下过程:确定单元,用于针对待拼接的每一散图,确定该散图对应的凸多边形信息;拼接单元,用于根据各散图对应的凸多边形信息,利用排样算法和遗传算法确定空间利用率最大的大图。
根据本发明实施方式的散图拼接方法和装置,通过确定各散图的凸多边形信息,使用凸多边形而非矩形包络散图,从而显著地降低了空间浪费,提高了大图的空间利用率,减少了内存开销,为用户带来了更好的体验。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了根据本发明实施方式的应用场景示意图;
图2示意性地示出了根据本发明实施方式的散图拼接方法流程示意图;
图3示意性地示出了根据本发明实施方式的确定散图凸多边形信息流程示意图;
图4a示意性地示出了二值图像的像素结构示意图;
图4b示意性地示出了灰度图像的像素结构示意图;
图5示意性地示出了根据本发明实施方式的确定空间利用率最大的大图流程示意图;
图6示意性地示出了根据本发明实施方式的确定排样个体的流程示意图;
图7a示意性地示出了根据本发明实施方式的确定下一代排样个体的流程示意图;
图7b示意性地示出了根据本发明提供的拼图拼接方法得到的大图示意图;
图8示意性地示出了根据本发明实施方式的拼图拼接装置的结构示意图;
图9示意性地示出了根据本发明实施方式的用于散图拼接的程序产品示意图;
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种散图拼接方法和装置。
在本文中,需要理解的是,所涉及的术语中:
大图,指将一些零散的图片通过排样算法拼接成的一张大图。
散图,和大图相对应,是指没有经过任何拼接的单独的原始图片。
空间利用率,所有散图非透明像素总面积除以生成的大图面积,所得值为空间利用率。由于散图非透明像素总面积难以计算,一般直接看生成的大图总面积即可,因为对同一批散图而言所有散图非透明像素总面积不变,生成的大图总面积越低则空间利用率越高,与此同时大图总面积越低,游戏内存占用也会更低,可以理解为越高的大图空间利用率就意味着越低的内存占用。
MaxRects算法,是一种二维图像排列算法,此算法实现了将一些矩形放到另一个较大的矩形里,使得空间利用率最高。
遗传算法,遗传算法是一种通过模拟自然进化过程搜索最优解的方法。算法简单描述如下:将每组解(如:每张散图的排列位置及旋转角度)编码成为一条染色体,每条染色体具有多个基因(如位于某一排列位置的一张散图及旋转角度),每一代染色体之间会进行交叉,编译,遗传,然后按照优胜劣汰原则(如用空间利用率进行判断),留下优质个体(如最优解),淘汰较差的个体,如此往复一代代进化寻找最优解。
No-fit Polygon(NFP,临界多边形)算法,用于判断两个多边形是否相交。根据两个多边形生成临界多边形,如果第二个多边形上任意点在临界多边形内,则两多边形相交。
此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,现有的将散图打成大图的方法中,使用矩形包络各散图,产生大量空间浪费,降低了生成的大图空间利用率。
有鉴于此,本发明实施例中,通过使用凸多边形包络各散图,充分利用每张散图周围的透明像素区域,使得打出的大图拥有更高的空间利用率。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1,其为本发明实施例的应用场景示意图,本发明实施例提供的散图拼接方法可以应用于移动客户端中,例如游戏客户端或者图像处理客户端等等,通过将散图拼接为一张大图,来提高图片的渲染速度,减少内存占用。
示例性方法
下面结合图1的应用场景,参考图2~图9来描述根据本发明示例性实施方式的散图拼接方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
如图2所示,其为本发明实施例提供的散图拼接方法的实施流程示意图,可以包括以下步骤:
S21、针对待拼接的每一散图,确定该散图对应的凸多边形信息。
具体实施时,在初始化完成后,针对待拼接的每一散图,读取其对应的散图信息,根据读取的散图信息确定该散图对应的凸多边形信息。
S22、根据各散图对应的凸多边形信息,利用排样算法和遗传算法确定空间利用率最大的大图。
本步骤中,在确定出每一散图对应的凸多边形信息之后,再利用排样算法和遗传算法确定出空间利用率最大的大图。例如,对于不同的散图序列(可以由待拼接的散图按照不同的顺序排列得到的)利用排样算法得到对应的大图,根据得到的大图利用遗传算法确定出空间利用率最大(即面积最小)的一张大图。
优选地,步骤S21中,针对每一散图,可以按照图3所示的流程确定该散图对应的凸多边形信息:
S211、针对每一散图,获取该散图的像素信息。
数字图像是由被称作像素的小块区域组成的二维矩阵,将物理图像行列划分后,每个小块区域称为像素。每个像素包括两个属性:位置和色彩。对于单色即灰度图像而言,每个像素的亮度用一个数值来表示,通常数值范围在0~255之间,即可用一个字节来表示,0表示黑,255表示白,而其他表示灰度级别。对于彩色图像而言,其可以用红(R)、绿(G)、蓝(B)三元组的二维矩阵来表示。通常,三元组的每个数值也在0到255之间,0表示相应的基色在该像素中没有,而255则表示相应的基色在该像素中取得最大值,这种情况下,每个像素可用三个字节来表示,如红色可以表示为(255,0,0)。
首先参考图4a所示,其为二值图像的像素结构示意图,二值图像的每个像素只能是黑色或者白色,白色像素对应的像素值为1,黑色像素对应的像素值为0。图4a所示的图像可以用如下的二维矩阵表示:
灰度图像的每个像素的像素值可以为0~255,其中,像素值为0时,像素为黑色,像素值为255时,像素为白色,图4b示意性地示出了灰度图像的像素结构示意图。图4b所示的图像可以用如下的二维矩阵表示:
而在彩色图像中,每个像素由R、G、B分量构成,其中,R、G、B是由不同的灰度级来描述,例如,某3*3彩色图像可以采用以下的二维矩阵表示:将R、G、B分量对应的灰度级叠加,则可以确定相应位置上像素的颜色,例如,根据第一行第一列像素对应的R、G、B分量的灰度级(R分量为255,G分量和B分量均为0),可以确定该彩色图像第一行第一列位置上的像素颜色为红色。
需要说明的是,图4a和图4b中所示的图像仅用于示例,为了便于描述,其均以图像包含3*3个像素为例,实际应用中,数字图像包含的像素要远远多于此,例如,高清图像包含的像素可以达到百万级。
S212、根据获取的像素信息,确定该散图非透明像素区域的轮廓曲线。
本步骤中,在读取了每一散图对应的散图信息之后,可以使用OpenCV库,确定每个散图非透明像素区域的轮廓曲线,该轮廓曲线由颜色区域连续的边界像素组成。
其中,非透明像素域是指相应位置的像素对应的R、G、B的灰度级分别乘以A,如果R乘以A、G乘以A以及B乘以A后全部大于预设值的像素为非透明像素,A为Alpha,代表像素的透明度。
对于一幅图像B来说,假设其透明度为Alpha(取值为0-1,1为完全透明,0为完全不透明),可以按照以下公式确定图像B中任一像素x的透明度:R=A*R(B);G=A*G(B);B=A*B(B),其中,R(x)、G(x)、B(x)分别指像素x的RGB分量原色值。从上面的公式可以知道,Alpha其实是一个决定透明度的数值。
S213、在非透明像素区域的轮廓曲线上选择第一预设数量的点作为该散图非透明像素区域轮廓的顶点。
S214、针对确定出的顶点中任三个连续的顶点,如果该三个连续的顶点方向近似相同,则删除三个连续顶点中的中间顶点。
步骤S214中,针对任三个连续的顶点,可以沿同一方向依次连接相邻的两个顶点得到两条线段,然后,分别确定每一线段所在直线的斜率,如果两条直线的斜率的差值在预设范围内,则确定该三个连续的顶点方向相同,否则确定该三个连续的顶点方向不同,对于方向相同的三个顶点,删除中间的顶点,对于方向不同的顶点,保留全部的顶点。
由此,步骤S213和步骤S214中,通过对得到的轮廓曲线进行离散化处理,即对轮廓线进行简化大大降低算法计算的复杂度。最终,大致留下15个(保留顶点的数量可以根据实际需要进行设定,本发明实施例中以15个为例进行说明,其不构成对本发明的限定)左右的顶点作为散图非透明区域近似轮廓曲线。
S215、将保留的顶点序列作为该散图对应的凸多边形信息。
本步骤中,针对每一散图,将保留的顶点序列作为该散图对应的凸多边形信息,由此,最终得到每张散图的凸多边形轮廓顶点,供之后做排样使用。
在确定出每一散图对应的凸多边形信息之后,根据得到的凸多边形信息,可以利用排样算法和遗传算法来确定空间利用率最大的大图,以下结合具体的实施例来介绍利用排样算法和遗传算法确定空间利用率最大的大图。需要说明的是,本发明实施例中介绍的利用排样算法和遗传算法确定空间利用率最大的大图的方法,仅为本发明较优的实施例,其不构成对本发明的限定。
如图5所示,本发明实施例中,根据各散图对应的凸多边形信息,可以利用排样算法和遗传算法按照以下流程来确定空间利用率最大的大图:
S51、利用排样算法对各散图对应的凸多边形进行排样得到第二预设数量的排样个体。
根据步骤S21中确定出的凸多边形信息,利用排样算法对各散图对应的凸多边形进行多次排样得到第二预设数量的排样个体,其中,每一排样个体中包含各散图的位置和旋转角度。应当理解,每一排样个体即为一组解,或称为一条染色体,每一排样个体中,包含多个基因构成的基因序列,每个排列位置的基因对应一个位于该位置的散图和其旋转角度。
本步骤中,为了保证排样个体的随机性,可以先使用NFP算法对待拼接的散图任意进行至少一次排样,为了便于描述,假设待拼接的散图分别为ABCDEFG,为了保证排样个体的随机性,可以使用NFP算法以CADBFEG为基础对待拼接的散图进行一次排样,也可以使用NFP算法以DCAEBGF为基础对待拼接的散图进行一次排样,依次类推,具体实施时,可以根据实际需要确定散图的排列顺序,每一次排样使用的散图的排列顺序不同。对于N个散图来说,根据散图之间不同的排列顺序,可以得到个排样个体,为了降低算法计算复杂度,具体实施时,可以根据实际需要设定排样个体的数量,例如,可以设定为获得20个排样个体。
优选地,考虑到面积大的图片往往透明区域也大,先对这些散图进行排样再对小图进行排样比较容易让小图排进大图的缝隙,能够充分利用面积大的散图的透明区域,因此,往往按照这种方式排样得到的大图易趋近于最优解,为此,步骤S51中,可以按照图6所示的流程得到其中的一个排样个体:
S511、根据每一散图对应的凸多边形,确定每一散图对应的凸多边形面积。
S512、按照面积由大至小的顺序排列每一散图对应的凸多边形。
仍然以带拼接的散图为ABCDEFG为例,假设按照由大至小的顺序依次为:C、F、G、B、A、D、E。
S513、利用排样算法对排序后的散图对应的凸多边形进行排样得到相应的排样个体。
步骤S513中,使用NFP算法以CFGBADE为基础对待拼接的散图进行一次排样得到一个排样个体。
假设预先设置需要获得20个排样个体,这样,使用NFP算法以随机排列顺序的散图为基础再得到19个排样个体即可。
S52、将第二预设数量的排样个体作为第一代排样个体,利用遗传算法对第一代排样个体进行预设次数进化得到末代排样个体。
延续上例,以步骤S51中获得的20个排样个体为第一代排样个体,利用遗传算法对其进行预设次数的进化得到末代排样个体。
S53、从末代排样个体中选择空间利用率最大的排样个体。
S54、根据选择出的排样个体中各散图的位置和旋转角度拼接各散图得到大图。
优选地,针对每一代排样个体,可以按照图7a所示的流程得到该代排样个体的下一代排样个体:
S521、针对每一代排样个体,对该代排样个体中包含的每一个排样个体分别判断是否需要交叉,如果是,执行步骤S522,否则,执行步骤S523。
本步骤中,针对每一排样个体,可以采用轮盘赌的方式判断该排样个体是否需要交叉。具体的,针对该排样个体,为该排样个体分配一随机数;如果所述随机数位于第二预设范围之内,则确定该排样个体需要交叉;否则,确定该排样个体不需要不交叉。
例如,为针对每一排样个体,为该排样个体随机分配0-1之间的一个小数,若介于0-0.65之间则交叉,若介于0.65-1之间则不交叉。
S522、将该排样个体与该代排样个体中最优排样个体进行交叉得到子代排样个体,执行步骤S524。
具体实施时,交叉过程可以使用单点交叉,根据该排样个体和最优排样个体中散图的排列顺序,随机选择一个排列位置进行交叉,并对交叉后得到的散图重新排样得到子代排样个体。具体的,可以在散图排列序列中随机选取一个位置,以这个位置为界分别取两个父代排样个体的基因(其中,两个父代排样个体即为该代排样个体中最优排样个体和当前判断出需要进行交叉的排样个体)后进行排样得到子代排样个体,以两个父代排样个体携带的基因序列(即散图的排列顺序)分别为abc123,def456为例,如果轮盘赌结果为进行交叉,则随机选取一个交叉单点位置,假设为位置4,则交叉后的基因序列为abc156(分别取abc123的abc1,及def456中的56),之后再根据交叉后得到的基因序列进行排样得到子代排样个体。
其中,最优排样个体为该代排样个体中空间利用率最大的排样个体。
当然,具体实施时,如果针对任一排样个体判断出需要进行交叉,也可以将其与该代排样个体中每一排样个体进行交叉得到多个子代排样个体,采用该方法的计算复杂度显然远远大于将其仅与最优排样个体进行交叉的算法复杂度,但是其覆盖范围也更广。
S523、遗传该排样个体作为子代排样个体。
以排样个体为abc123为例,如果判断出该排样个体不交叉,则遗传该排样个体作为子代排样个体,即子代排样个体仍然为abc123。
这样,针对20个排样个体,根据上例可以得到20个子代排样个体。
S524、从该代排样个体和得到的所有子代排样个体中,根据空间利用率由高至低的顺序选择第二预设数量的排样个体作为下一代排样个体。
即根据从该代排样个体和得到的子代排样个体中,按照空间利用率由高至低的顺序选择第二预设数量的排样个体作为下一代排样个体。延续上例,即从该代20个排样个体和得到的20个子代排样个体中,按照空间利用率由高至低的顺序选择20个排样个体作为下一代排样个体。
根据上述流程,可以根据初代排样个体得到第二代排样个体,再由第二代排样个体得到第三代排样个体,以此类推,直至达到预设的进化次数为止,假设预设的进化次数为20代为止,因此,利用上述方法得到第21代排样个体后,根据第21代排样个体中最优排样个体中各散图的位置和旋转角度拼接各散图得到大图。
优选地,为了保证每一代排样个体的随机性,以免求最优解的趋势太过单一而错过最优解,针对得到的每一代排样个体,在对其进化之前,还可以按照预设的变异率对得到的子代排样个体进行变异。具体实施时,变异率不宜设置过高,变异率设置过高有可能导致算法无法趋向最优解,因为随机性过强,有可能引导种群向错误方向进化,变异本身是为了在不影响算法收敛趋势的情况下又带有一定的随机性,一般用比较低的概率,如果子代发生变异,则随机取两个基因位置互换后进行排样,如子代排样个体为abc156,随机取位置2和位置5进行互换后重新进行排样得到a5c1b6,如果子代不发生变异,则直接应用本轮交叉或遗传的结果。
根据本发明实施例提供的散图拼接方法,通过使用凸多边形包络散图,充分利用了各散图周围的透明像素区域,减少了空间浪费,提高了大图的空间利用率。如图7b所示,其为利用本发明实施例提供的散图拼接方法得到的大图示意图。
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,参考图8对本发明示例性实施方式的散图拼接装置进行说明。
如图8所示,其为本发明实施例提供的散图拼接装置的结构示意图,可以包括:
确定单元81,用于针对待拼接的每一散图,确定该散图对应的凸多边形信息;
拼接单元82,用于根据各散图对应的凸多边形信息,利用排样算法和遗传算法确定空间利用率最大的大图。
优选地,所述确定单元81,包括:
获取子单元811,用于针对每一散图,获取该散图的像素信息;
第一确定子单元812,用于根据获取的像素信息,确定该散图非透明像素区域的轮廓曲线;
第一选择子单元813,用于在所述非透明像素区域的轮廓曲线上选择第一预设数量的点作为该散图非透明像素区域轮廓的顶点;
处理子单元814,用于针对选择出的顶点中任三个连续的顶点,如果该三个连续的顶点方向近似相同,则删除三个连续顶点中的中间顶点;
第二确定子单元815,用于将保留的顶点序列作为该散图对应的凸多边形信息。
优选地,所述处理子单元814,包括:
连接模块,用于针对任三个连续的顶点,沿同一方向依次连接三个顶点得到两条线段;
确定模块,用于如果该两条线段所在直线的斜率的差值在第一预设范围内,则确定该三个连续的顶点方向相同,否则确定该三个连续的顶点方向不同。
优选地,所述拼接单元82,包括:
排样子单元821,用于利用排样算法对各散图对应的凸多边形进行排样得到第二预设数量的排样个体,每一排样个体中包含各散图的位置和旋转角度;
进化子单元822,用于将所述第二预设数量的排样个体作为第一代排样个体,利用遗传算法对所述第一代排样个体进行预设次数进化得到末代排样个体;
第二选择子单元823,用于从所述末代排样个体中选择空间利用率最大的排样个体;
拼接子单元824,用于根据所述选择子单元选择出的排样个体中各散图的位置和旋转角度拼接各散图得到大图。
优选地,所述进化子单元822,包括:
交叉模块,用于针对每一代排样个体,对该代排样个体中包含的每一个排样个体分别判断是否需要交叉,如果需要交叉,则将该排样个体与该代排样个体中最优排样个体进行交叉得到子代排样个体,如果不需要交叉,则遗传该排样个体作为子代排样个体,所述最优排样个体为该代排样个体中空间利用率最大的排样个体;
选择模块,用于从该代排样个体和得到的所有子代排样个体中,根据空间利用率由高至低的顺序选择第二预设数量的排样个体作为下一代排样个体。
优选地,所述交叉模块,包括:
分配子模块,用于针对该代排样个体中包含的每一排样个体,为该排样个体分配一随机数;
确定子模块,用于如果所述随机数位于第二预设范围之内,则确定该排样个体需要交叉;否则,确定该排样个体不需要不交叉。
优选地,所述交叉模块,具体用于根据该排样个体和最优排样个体中散图的排列顺序,随机选择一个排列位置进行交叉得到子代排样个体。
优选地,所述进化子单元822,还包括:
变异模块,用于在所述选择模块从该代排样个体和得到的所有子代排样个体中,根据空间利用率由高至低的顺序选择第二预设数量的排样个体作为下一代排样个体之前,针对得到的子代排样个体,按照预设的变异率对得到的子代排样个体进行变异。
优选地,所述排样子单元,包括:
第三确定模块,用于根据每一散图对应的凸多边形,确定每一散图对应的凸多边形面积;
排序模块,用于按照面积由大至小的顺序排列每一散图对应的凸多边形;
排样模块,用于利用排样算法对排序后的散图对应的凸多边形进行排样得到相应的排样个体。
在介绍了本发明示例性实施方式的方法和装置之后,接下来,介绍根据本发明的另一示例性实施方式的散图拼接装置。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本发明的散图拼接装置可以包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的消息提示方法中的各种步骤。例如,所述处理单元可以执行如图2中所示的步骤S21,针对待拼接的每一散图,确定该散图对应的凸多边形信息,步骤S22,根据各散图对应的凸多边形信息,利用排样算法和遗传算法确定空间利用率最大的大图。
示例性程序产品
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在服务器设备上运行时,所述程序代码用于使所述服务器设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于散图拼接的方法中的步骤,例如,所述服务器设备可以执行如图2中所示的步骤S21、针对待拼接的每一散图,确定该散图对应的凸多边形信息,和步骤S22、根据各散图对应的凸多边形信息,利用排样算法和遗传算法确定空间利用率最大的大图。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
如图9所示,描述了根据本发明的实施方式的用于散图拼接的程序产品90,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在服务器设备上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

Claims (10)

1.一种散图拼接方法,包括:
针对待拼接的每一散图,确定该散图对应的凸多边形信息;
根据各散图对应的凸多边形信息,利用排样算法和遗传算法确定空间利用率最大的大图。
2.根据权利要求1所述的方法,针对待拼接的每一散图,确定该散图对应的凸多边形信息,包括:
针对每一散图,获取该散图的像素信息;
根据获取的像素信息,确定该散图非透明像素区域的轮廓曲线;
在所述非透明像素区域的轮廓曲线上选择第一预设数量的点作为该散图非透明像素区域轮廓的顶点;
针对确定出的顶点中任三个连续的顶点,如果该三个连续的顶点方向近似相同,则删除三个连续顶点中的中间顶点;
将保留的顶点序列作为该散图对应的凸多边形信息。
3.根据权利要求2所述的方法,按照以下流程判断该三个连续的顶点方向是否近似相同:
沿同一方向依次连接三个顶点得到两条线段;
如果该两条线段所在直线的斜率的差值在第一预设范围内,则确定该三个连续的顶点方向相同,否则确定该三个连续的顶点方向不同。
4.根据权利要求1、2或3所述的方法,根据各散图对应的凸多边形信息,利用排样算法和遗传算法确定空间利用率最大的大图,具体包括:
利用排样算法对各散图对应的凸多边形进行排样得到第二预设数量的排样个体,每一排样个体中包含各散图的位置和旋转角度;
将所述第二预设数量的排样个体作为第一代排样个体,利用遗传算法对所述第一代排样个体进行预设次数进化得到末代排样个体;
从所述末代排样个体中选择空间利用率最大的排样个体;
根据选择出的排样个体中各散图的位置和旋转角度拼接各散图得到大图。
5.如权利要求4所述的方法,针对每一代排样个体,按照以下流程进行进化得到下一代排样个体:
针对每一代排样个体,对该代排样个体中包含的每一个排样个体分别判断是否需要交叉,如果需要交叉,则将该排样个体与该代排样个体中最优排样个体进行交叉得到子代排样个体,如果不需要交叉,则遗传该排样个体作为子代排样个体,所述最优排样个体为该代排样个体中空间利用率最大的排样个体;
从该代排样个体和得到的所有子代排样个体中,根据空间利用率由高至低的顺序选择第二预设数量的排样个体作为下一代排样个体。
6.根据权利要求5所述的方法,针对该代排样个体中包含的每一排样个体,按照以下方法确定该排样个体是否需要交叉:
针对该代排样个体中包含的每一排样个体,为该排样个体分配一随机数;
如果所述随机数位于第二预设范围之内,则确定该排样个体需要交叉;否则,确定该排样个体不需要交叉。
7.根据权利要求5或6所述的方法,将该排样个体与该代排样个体中最优排样个体进行交叉得到子代排样个体,具体包括:
根据该排样个体和最优排样个体中散图的排列顺序,随机选择一个排列位置进行交叉得到子代排样个体。
8.根据权利要求5所述的方法,在从该代排样个体和得到的所有子代排样个体中,根据空间利用率由高至低的顺序选择第二预设数量的排样个体作为下一代排样个体之前,还包括:
针对得到的子代排样个体,按照预设的变异率对得到的子代排样个体进行变异。
9.根据权利要求8所述的方法,针对得到的子代排样个体,按照预设的变异率对得到的子代排样个体进行变异,包括:
针对得到的子代排样个体,按照预设的变异率判断出需要对子代排样个体进行变异时,则根据子代排样个体中散图的排列顺序,随机选取两个位置进行交换得到变异后的子代排样个体。
10.一种散图拼接装置,包括:
确定单元,用于针对待拼接的每一散图,确定该散图对应的凸多边形信息;
拼接单元,用于根据各散图对应的凸多边形信息,利用排样算法和遗传算法确定空间利用率最大的大图。
CN201610889931.0A 2016-10-12 2016-10-12 一种散图拼接方法和装置 Pending CN106570824A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610889931.0A CN106570824A (zh) 2016-10-12 2016-10-12 一种散图拼接方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610889931.0A CN106570824A (zh) 2016-10-12 2016-10-12 一种散图拼接方法和装置

Publications (1)

Publication Number Publication Date
CN106570824A true CN106570824A (zh) 2017-04-19

Family

ID=58532779

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610889931.0A Pending CN106570824A (zh) 2016-10-12 2016-10-12 一种散图拼接方法和装置

Country Status (1)

Country Link
CN (1) CN106570824A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108492342A (zh) * 2018-03-22 2018-09-04 网易(杭州)网络有限公司 合并碎图的方法、装置、处理器、存储介质和终端
CN110458911A (zh) * 2019-08-06 2019-11-15 网易无尾熊(杭州)科技有限公司 图像生成方法、装置、介质和电子设备
CN111652111A (zh) * 2020-05-29 2020-09-11 浙江大华技术股份有限公司 一种目标检测方法及相关装置
CN114611413A (zh) * 2022-05-09 2022-06-10 广东三维家信息科技有限公司 原材料排样方法、装置、电子设备及存储介质
CN115631347A (zh) * 2022-12-21 2023-01-20 济南邦德激光股份有限公司 板材排样方法、设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7529429B2 (en) * 2004-11-12 2009-05-05 Carsten Rother Auto collage
WO2009131644A2 (en) * 2008-04-22 2009-10-29 Eastman Kodak Company Method for creating photo cutouts and collages
CN103093447A (zh) * 2013-01-18 2013-05-08 南京大学 一种计算机图片集中图片剪切拼接方法
CN103176960A (zh) * 2013-02-05 2013-06-26 西安理工大学 基于亲缘关系的照片自动排版方法
CN104281722A (zh) * 2013-07-04 2015-01-14 广州中国科学院先进技术研究所 自动排料方法
CN105913377A (zh) * 2016-03-24 2016-08-31 南京大学 一种保留图片相关性信息的图片拼接方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7529429B2 (en) * 2004-11-12 2009-05-05 Carsten Rother Auto collage
WO2009131644A2 (en) * 2008-04-22 2009-10-29 Eastman Kodak Company Method for creating photo cutouts and collages
CN103093447A (zh) * 2013-01-18 2013-05-08 南京大学 一种计算机图片集中图片剪切拼接方法
CN103176960A (zh) * 2013-02-05 2013-06-26 西安理工大学 基于亲缘关系的照片自动排版方法
CN104281722A (zh) * 2013-07-04 2015-01-14 广州中国科学院先进技术研究所 自动排料方法
CN105913377A (zh) * 2016-03-24 2016-08-31 南京大学 一种保留图片相关性信息的图片拼接方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
郝园 等: "一种基于分裂合并的多边形逼近算法", 《机械设计与制造》 *
顾振华: "二维不规则排样CAD系统的设计", 《中国优秀博硕士学位论文全文数据库-(硕士)信息科技辑》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108492342A (zh) * 2018-03-22 2018-09-04 网易(杭州)网络有限公司 合并碎图的方法、装置、处理器、存储介质和终端
CN108492342B (zh) * 2018-03-22 2022-05-03 网易(杭州)网络有限公司 合并碎图的方法、装置、处理器、存储介质和终端
CN110458911A (zh) * 2019-08-06 2019-11-15 网易无尾熊(杭州)科技有限公司 图像生成方法、装置、介质和电子设备
CN111652111A (zh) * 2020-05-29 2020-09-11 浙江大华技术股份有限公司 一种目标检测方法及相关装置
CN114611413A (zh) * 2022-05-09 2022-06-10 广东三维家信息科技有限公司 原材料排样方法、装置、电子设备及存储介质
CN115631347A (zh) * 2022-12-21 2023-01-20 济南邦德激光股份有限公司 板材排样方法、设备和存储介质

Similar Documents

Publication Publication Date Title
CN106570824A (zh) 一种散图拼接方法和装置
CN110599492B (zh) 图像分割模型的训练方法、装置、电子设备及存储介质
US9875519B2 (en) Overlap aware reordering of rendering operations for efficiency
WO2024051445A1 (zh) 图像生成方法以及相关设备
CN110443863B (zh) 文本生成图像的方法、电子设备和存储介质
CN110990631A (zh) 视频筛选方法、装置、电子设备和存储介质
US10068518B2 (en) Method, apparatus and system for dithering an image
CN110189336A (zh) 图像生成方法、系统、服务器及存储介质
CN106575442A (zh) 使用通过自适应着色的纹理查找的带宽缩减
CN103632337B (zh) 实时的顺序无关透明渲染
CN107832794A (zh) 一种卷积神经网络生成方法、车系识别方法及计算设备
WO2020238120A1 (en) System and method for single-modal or multi-modal style transfer and system for random stylization using the same
US8854385B1 (en) Merging rendering operations for graphics processing unit (GPU) performance
CN112991143A (zh) 一种图元装配的方法、装置及计算机存储介质
CN118230081B (zh) 图像处理方法、装置、电子设备、计算机可读存储介质及计算机程序产品
JP2023001926A (ja) 画像融合方法及び装置、画像融合モデルのトレーニング方法及び装置、電子機器、記憶媒体、並びにコンピュータプログラム
CN109670141A (zh) 预测方法、系统、介质和电子设备
US20230351655A1 (en) Automatic design-creating artificial neural network device and method, using ux-bits
CN112184538B (zh) 图像加速方法、相关装置、设备及存储介质
CN108924557A (zh) 图像处理方法、装置、电子设备及存储介质
CN113591472A (zh) 歌词生成方法、歌词生成模型训练方法、装置及电子设备
CN115953597B (zh) 图像处理方法、装置、设备及介质
JP6078878B2 (ja) 2次元コード
JP6270178B2 (ja) 2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体
CN109460226A (zh) 测试证件图像生成方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170419