一种运行高效且节约内存的数字图像自适应缩放技术的制作方法

文档序号:18632975发布日期:2019-09-11 21:51阅读:143来源:国知局
一种运行高效且节约内存的数字图像自适应缩放技术的制作方法

本技术着重于城市风景和建筑的图像上的纹理应用。源图像上的纹理通常包含混合材料比如:混凝土、砖块、石头以及结构比如:窗户,门,车道,控制板。我们将这些纹理称为架构纹理。本技术通过对源图像在水平方向上的伸缩,快速生成任意宽度的纹理图像,并可能产生新的构架纹理。



背景技术:

纹理是计算机图形学的基本元素,它们负责我们在计算机生成的图像中感知到的大部分细节,为虚拟环境生成丰富而详细的纹理是计算机图形学的长期目标。纹理合成的研究着眼于如下三个基础问题:保持结果与输入小样本的相似性,生成尽可能多的合理的新细节,以及输出结果的全局视觉美感。

一个典型的困难是,在创建建筑纹理时考虑到了给定的表面大小。例如,从照片中获取的立面纹理只适用于适当大小的建筑。门的图像将只适用于相应的门板。增大或改变表面的尺寸会导致拉伸,不舒服和不现实的外观。此外,通常不可能为每个表面定制每个纹理。第一个问题当然是创作资源有限。第二,主要问题来自于每个表面都有一个独特的纹理所产生的大量数据。在交互式应用程序的上下文中,如此大的纹理数据库在存储和呈现复杂性方面的成本是令人望而却步的。

我们的技术将单向建筑纹理合成问题的公式化为图的寻路问题,并给出一种针对给定图像寻找切割和构建图的构造算法,可以快速生成任意宽度和高度的图像,我们的技术即高效且节约内存,对城市风景和建筑的图像上的纹理应用也有十分不错的效果。



技术实现要素:

为解决上述技术问题,一种运行高效且节约内存的数字图像自适应缩放技术,该技术根据给定的矢量纹理图案缩放后生成新的矢量纹理图案,包括如下步骤:

s1、为实现源图像在水平方向上的伸缩,在源图像中x轴方向上搜索因像数值接近而生成平行的垂直切割线(沿着切线可以观察到相似的颜色)简称切线;

s2、任意一对非交叉的切线和它们中间的像素点都可以组成一个条带,任意一对平行切线组成的条带被丢弃不用来组成图像时,这两条平行切线在图像中链接在一起,平行切线存储在内存中;

s3、选取源图像中的条带并按不同的顺序并排粘贴,快速生成任意宽度和高度的纹理图像,条带不存储在内存中,而是由我们的算法为生成的目标宽度图像快速选择出来,这大量节约了内存;

s4、在像素着色器中,通过适当的滤波,实时重建结果图像。

2、如权利要求2所述的数字图像自适应缩放技术,其特征在于,在所述步骤s1中:为了是源图像在水平方向的伸缩,使源图像′上的点(w,0)与源图像的点(0,0)重合,使源图像′上过点(w,0)且平行于源图像′y轴的垂线与源图像的y轴重合。以δ代表源图像某行上δ个像素点的距离,标记源图像的点(0,0),(δ,0)(2*δ,0)...(w,0)为水平伸缩而产生的垂直切线的起始点。将源图像′沿源图像的y轴向右平移,直到使源图像′上的点(0,0)与源图像的点(0,w)重合,使源图像′的y轴与源图像上过点(w,0)且平行于源图像y轴的垂线重合。在此平移期间,每次平移一个像素点单位,对于源图像的切线起始点(0,0)、(δ,0)、(2*δ,0)...(w,0)一检测到有与其重合的点,如起始点(0,0)在平移过程中会有源图像′(0,0),(1,0)(2,0)...(w,0)等点与其重合,与其重合的点一起向上找一个一个重合像素点直到找到垂直切线上的所有点(x,y),y最大值为h,注意为保证找平行切线是连接不间断的,则要求切线上的点(x,y)为y单调下降(从h减到0),x保持不变或增减一个单位。当平移完毕后,所有的平行切线也找完。

3、如权利要求2所述的数字图像自适应缩放技术,其特征在于:1.如果切线c是源图像以起始点为(v,0)找到的某条切线切线(v属于0,δ,2*δ,...w),且切线c||是源图像′往水平方向平移了u个像素点单位后与切线c重合的切线,则有:1、切线c与切线c||的对应点(x,y)与(x||,y||),有y=y||、x与x||值距离为|u-v|;2.切线c与切线c||的对应点像素值应当接近;3.两条切线上的所有的对应点的像素值之差总和最小,所以需要使用动态规划的方法找到最佳的平行切线。

4、如权利要求2所述的数字图像自适应缩放技术,其特征在于:由于一般情况下,源图像上距离相近的点的像素值会非常接近,如果切线的起始点距离δ太小,会造成平行切线的数量大量增加,且这些平行切线所组成的条带多次出现在源图像伸缩产生的图像中时,不仅没有现实意义而且产生视觉上的冗余感,因此我们控制δ的取值在19到60个像素点单位。源图像上定义的每个切线起始点上可以找到0到多条具有平行切线的切线。任意一条切线都可以找到除自己外的一到多条平行切线,如在256*256大小的源图像上,通常会找到大约600对平行切线;

5、如权利要求1所述的数字图像自适应缩放技术,其特征在于,在所述步骤s2中,在我们找到的所有平行切线中,为水平伸缩图像而产生的垂直切线以从左至右的顺序排列。那么除了排列最后的切线以外的任意一条切线都可以与位于其后方且不与其交叉的切线组成一条条带。条带选择的多样性使得生成的同样宽度的图像具有多样性。

6、如权利要求5所述的数字图像自适应缩放技术,其特征在于:为了使两条平行切线的像素值接近,一般情况下,垂直切线不会平行于y轴。所以存在很多非平行的切线交叉。因此在排列切线的顺序时,假定点(x1,y1)是垂直切线c的最右点,则垂直切线上的任意一点(x,y)的横坐标x都大于等于x1,垂直切线以其最右点的横坐标大小进行排序。

7、如权利要求5所述的数字图像自适应缩放技术,其特征在于:存在垂直切线c1和c2,当且仅当切线c2上的所有点的横坐标大于等于切线上c1的所有点的横坐标时,才有切线c2位于切线c1后面,切线c1可与切线c2及其中间的所有像素点组成条带,我们称切线c1为条带的右切线,切线c2为条带的左切线。

8、如权利要求1所述的数字图像自适应缩放技术,其特征在于,在步骤s3中,为了生成宽度为w的图像(大于或小于源图像宽度),在水平方向伸缩图像时,从源图像依次选取条带组装图像,要注意几点:1.选取的第一条条带由过原点(0,0)且平行于x轴的直线与找到的某条切线及其中间像素点组成;2.选取的最后一条条带由过点(0,w)且平行于x轴的直线与找到的某条切线及其中间像素点组成;3.选取第一条带后,假定记第一条条带为t1,组成条带t1的左切线为c12,切线c12的最右点为(x12,y12),那么记图像已组装的宽度为x1=x12,有节点(c12,x1),节点指切线在组装图像中的位置,还需要组装的宽度为w-x1;4.选取第二条条带,记这条条带为t2,其右切线为c21,左切线为c22,左切线c21的最右点为(x21,y21),右切线c22的最右点为(x22,y22),可以有三种方式:一、选取由切线c12和位于切线c12的后面的某条切线所组成的条带,此时由于切线c12和切线c21是同一条切线,两条带间不会产生任何的颜色的差异,图像已组装的宽度为x2=x22,有节点(c22,x2),还需要组装的宽度为w-x2。二、选取由切线c12和平行于切线c12且位于切线c12前面的切线所组成的条带,那么平行于切线c12且位于切线c12前面的切线虽然和右切线c21是同一条切线,切线c12和左切线c22是同一条切线,切线c12和右切线c21是虽然不是同一条切线但是由于两条平行切线间的像素值相近,两条带间产生较小的颜色的差异,人的视觉很难看出这种颜色的差异,图像已组装的宽度x2=x1+(x21-x22),有节点(c21,x1)和(c22,x2),还需要组装的宽度为w-x2。三、选取与切线c12平行且位于它后面的某条切线所组成的条带,此时切线c12和切线c21虽然不是同一条切线,但是由于两条平行切线间的像素值相近,两条带间产生较小的颜色的差异,人的视觉很难看出这种颜色的差异,切线c12和切线c21之间的条带被舍弃,图像已组装的宽度为x2=x1+(x22-x21),有节点(c21,x1)和(c22,x2),还需要组装的宽度为w-x2。5,继续像4一样选择第三,四..条条带,直到的图像组装的宽度为w。节点路径的选择可参照图2。

9、如权利要求8所述的数字图像自适应缩放技术,其特征在于:条带并不存储在内存中,只有切线和选则切线的路径需要存储。路径指节点的排列顺序,这不仅大量节约了内存而且加快了图像组装速度。我们的算法可以在几秒内合成目标图像,并在用户拖动按钮要求新的宽度时也在几秒内合成目标图像,在合成新图像时过程中,形成的任意跳转图g上执行了多重前置节点的单元dijkstra有向图最短路径搜索,该有向图允许任意一个非出发节点(即左右节点)存在多重前缀节点。即结果路径在扩展时可以遍历途中某些节点和某些边大于1次。也就是说在dijkstra计算完成后,结果路径带有闭环。闭环的重数和目标图像的宽度有关。这样的结构使得图中实际存储的节点数等于原图像中选取的切线的数量而不会受到合成目标宽度的影响。这在使用节点的多重偏移时(比如大范围拉长图像时)可以节约内存。

10、如权利要求8所述的数字图像自适应缩放技术,其特征在于,对于注意点4中的第二种选取条带的方式,可能会重复多次选取某条条带,组装的图像不仅没有现实意义,而且产生视觉上的冗余感,所以我们会设置一个阈值,一旦某条条带被选取的次数等于阈值,该条带将不可再被选取。阈值越大,某条条带可以出现在目标图像中的数目也越大,由于条带并不存储在内存中,这大量节约了内存。

11、如权利要求1所述的数字图像自适应缩放技术,其特征在于,在步骤s3中,用户选定源图像中的一个区域(该区域必须出现在结果图像中),假定该区域处于切线cm和切线cm之间,切线cm的最右点为(xm,ym),切线cm的最右点为(xm,ym),则若点(x,y)为该区域中的任意一点,对于y∈[y]有m(y)<x≤m(y)。记在组装由切线cm和切线cm组成的条带前图像已组装的宽度为△,且最近的节点为(x△,△),在组装由切线cm和切线cm组成的条带后,那么存在两种情况:一、如果切线cm与切线x△为同一条切线,图像已组装的宽度△+(xm-xm),增加节点{cm,△+(xm-xm)}。二、如果切线cm是平行于切线x△且位于其后方的切线,那么图像已组装的宽度△+(xm-xm)增加节点(cm,△)和{cm,△+(xm-xm)}。这些控制节点被排序并包含在初始开始节点和结束节点之间,这些控制节点应该是输出路径的一部分。然后,计算每对连续节点之间的最短路径。

12、如权利要求1所述的数字图像自适应缩放技术,其特征在于,在所述步骤s4中:为了节约内存,只有源图像,切线以及路径存储在我们的在gpu内存中,渲染时,gpu调用像素着色器,通过路径中的节点,为每一个结果图像中的点找到源图像中的对应点来获取像素颜色。步骤如下:1.第一个节点为(c1,z1),我们可以推测有源图像中的条带t1由源图像原点平行于y轴的直线与切线c1所组成,找出切线c1在源图像中所在位置,假定切线c1的最右点为(x1,y1),为对于节点(c1,z1)前结果图像中的任意一个像素点(x,y),我们可以在源图像中找到他的对应点(x′,y′),其中x=x′,y=y′。2.第二个节点为(c2,z2),假定切线c1的最右点为(x2,y2),我们可以推测有源图像中的条带t2由与切线c1与切线c2所组成,则为对于节点(c1,z1)与节点(c2,z2)中间结果图像中的任意一个像素点(x,y),有我们可以在源图像中找到他的对应点(x′,y′),其中x′=x-z1+x1,y′=y。3、由此一直往后推,直到找完结果图像中所有点在源图像中的对用点的像素颜色并显示出来。

附图说明

图1:图像(a)为输入的源图像。图像(b)右为合成图像(b)左找到的切线的显示图,图像(b)中为合成图像(b)所选出的所有条带,条带按从左至右的顺序排列。图像(c)上为合成图像(c)左找到的切线的显示图,图像(c)右为合成图像(c)所选出的所有条带,条带按从左至右的顺序排列。注意,图像(b)左小于源图像,图像(c)左大于源图像。

图2:第一排为条带x(x=1,2..6)排列编号,x’为x右切线,x”为x左切线,lenx为条带宽度,如有len2=len4、len3+len5=len2、1”//3’、3”//5’、3’//3”、5’//5”;则第二三四排为生成同样宽度目标图像但是节点路径选择不同举例,第五排为生成不同目标宽度图像节点路径选择不同举例。

图3a为输入图像。

图3b是本发明为输入的源图像图3a合成不同宽度图像而选出不同切线的举例;

图4是本发明为输入的源图像合成不同宽度图像选出不同条带的举例;

图5为图4条带组合在一起合成的图像效果图。

图6a为本发明为同一张输入源图像合成不同宽度的图像效果图。

图6b为本发明为同一张输入源图像合成不同宽度的图像效果图。

图6c为本发明为同一张输入源图像合成不同宽度的图像效果图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。

本发明的运行高效且节约内存的数字图像自适应缩放技术根据给定的纹理像素图案生成新的高度和宽度的纹理图案,纹理像素图案是由点(一个点就是一个像素)构成的图案。其中像素点的像素值布局常具有一定重复性。本发明的技术具体包括如下步骤:

s1、将为给定的像素图像找出所有平行切线。

本发明的方法接受一个高为h宽为w的像素图像作为纹理像素图案。

每一条垂直切线有切线有最右点cmin=miny∈[h]c(y),对于切线c′位于切线c后方有对于y∈[h]有c(y)≤c′(y),且两切线有距离w(c,c′)=c′min-cmin。

每一条垂直切线在源图像上在y轴方向上都是单调上升的,即对于所有对于每一个y∈[h],有|c(y)-c(y+1)|≤1,也就是说每一条切线都是连续的。

为了使得每一对平行切线之间的相似最大化,要求平行切线上的所有对应点的差值总和最小,这可能使得某个对应点的差值很大,但是总体上看,两平行切线上的像素点值差异小,对于像素值差异,有每一个像素起始点与其他在x轴上的其他点向上寻找总能找到一对平行切线,没对平行切线独有一个δ(c,c||),当p越大时,δ(c,c||)越大,像素差值差对我们选取切线时的影响越大,当δ(c,c||)大于某个值,这对平行切线被舍弃。

找出切线的最小δ(c,c||),等同于找出了切线的路径,这里使用动态规划的办法找出从像素起始点与其他在x轴上的其他点向上找寻直到y=h。

每天切线根据最右点的x值从小到大排序记录在cpu内存上。

图3b是本发明为输入的源图像图3a合成目标宽度图像而选出不同切线的举例;

s2、任意一对非交叉的切线和它们中间的像素点都可以组成一个条带。

每个条带由两条非交叉的切线组成,如果一个图形非交叉的切线有n条,那么它们可以组成n!个不同的条带。

每一条条带由两条切线及其切线间的所有像素点构成,条带的最右点即条带的位置为其右切线的最右点,条带的宽度为左切线的最右点的x值减去右切线的最右点的x值。

条带组成的多样性使得图案生成也有多样性。

图4是本发明为输入的源图像合成不同宽度图像选出不同条带的举例;

s3、选取源图像中的条带并按不同的顺序并排粘贴,快速生成任意宽度和高度的纹理图像。

选取条带的方法:1.选取的第一条条带由过原点(0,0)且平行于x轴的直线与找到的某条切线及其中间像素点组成;2.选取的最后一条条带由过点(0,w)且平行于x轴的直线与找到的某条切线及其中间像素点组成;3.选取第一条带后,假定记第一条条带为t1,组成条带t1的左切线为c12,切线c12的最右点为(x1,y1),那么记图像已组装的宽度为x1,还需要组装的宽度为w-x1;4.选取第二条条带可以有两种方式:一、选取由切线c12和位于它后面的某条切线所组成的条带,记这条条带为t2,其右切线为c21,左切线为c22,左切线c22的最右点为(x2,y2),此时由于切线c12和切线c21是同一条切线,两条带间不会产生任何的误差,图像已组装的宽度为x2,还需要组装的宽度为w-x2。二、选取与切线c12平行的某条切线和位于它后面的某条切线所组成的条带,记这条条带为t2,其右切线为c21,左切线为c22,左切线c22的最右点为(x2,y2),此时切线c12和切线c21虽然不是同一条切线,但是由于两条平行切线间的像素值相近,两条带间产生较小的误差,人的视觉很难看出这种误差,切线c12和切线c21之间的条带被舍弃,图像已组装的宽度为x2,还需要组装的宽度为w-x2。5,继续像4一样选择第三,四..条条带,直到的图像组装的宽度为w。

用户选定源图像中的一个区域(该区域必须出现在结果图像中)时选取条带:假定该区域处于切线cm和切线cm之间,切线cm的最右点为(xm,ym),切线cm的最右点为(xm,ym),则若点(x,y)为该区域中的任意一点,对于y∈[y]有m(y)<x≤m(y)。记在组装由切线cm和切线cm组成的条带前图像已组装的宽度为△,且最近的节点为(x△,△),在组装由切线cm和切线cm组成的条带后,那么存在两种情况:一、如果切线cm与切线x△为同一条切线,图像已组装的宽度△+(xm-xm),增加节点{cm,△+(xm-xm)}。二、如果切线cm是平行于切线x△且位于其后方的切线,那么图像已组装的宽度△+(xm-xm)增加节点(cm,△)和{cm,△+(xm-xm)}。

图5是本发明的效果的举例图。

s4、在像素着色器中,通过适当的滤波,实时重建结果图像。

重建步骤如下:1.第一个节点为(c1,z1),我们可以推测有源图像中的条带t1由源图像原点平行于y轴的直线与切线c1所组成,找出切线c1在源图像中所在位置,假定切线c1的最右点为(x1,y1),为对于节点(c1,z1)前结果图像中的任意一个像素点(x,y),我们可以在源图像中找到他的对应点(x′,y′),其中x=x′,y=y′。2.第二个节点为(c2,z2),假定切线c1的最右点为(x2,y2),我们可以推测有源图像中的条带t2由与切线c1与切线c2所组成,则为对于节点(c1,z1)与节点(c2,z2)中间结果图像中的任意一个像素点(x,y),有我们可以在源图像中找到他的对应点(x′,y′),其中x′=x-z1+x1,y′=y。3、由此一直往后推,直到找完结果图像中所有点在源图像中的对用点的像素颜色并显示出来。

图6是本发明的其合成图像效果的举例图。

实验证明,本技术的合成结果可以形成一个稳固的图像,没有破碎问题。

本发明的技术可以通过计算机软件来实现,例如使用c++编写,开发环境例如是windows7系统和microsoftvisualstudio2010sp1。软件的二维视图例如使用了windowsgpiplus平面显示程序函数包,软件的三维视图例如使用了工业标准的opengl4.0图形绘制程序函数包。

实验证明,本发明能获得效果很好的结果图像,即局部微结构更加丰富,且避免了传统方法导致的单纯结构的集中重复出现的缺陷。

以上所述的具体实施例,对本技术的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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