基于JPEG图片拼接的超大图片合成方法技术

技术编号:7718807 阅读:826 留言:0更新日期:2012-08-30 03:10
本发明专利技术公开了一种基于JPEG图片拼接的超大图片合成方法,设置待排版面的宽和高,将待排版图片采用矩形件排样算法进行排版,同时记录排版信息;设置JPEG图片压缩取样方式;分块生成每块画布,计算生成画布的块数k;依次循环将已排版照片绘制到每一块画布上;对得到的绘制成功的画布,根据设定的图片压缩取样方式生成JPEG图片,并将图片的数据信息保存于内存中;修改得到的JPEG图片的头部信息,将该头部信息中表示图片宽和高的字节修改为画布总的宽和高,最后将内存中的字节流生成超大图片。本发明专利技术方法内存使用量小且稳定,具有较低的时间复杂度与空间复杂度。

【技术实现步骤摘要】

本专利技术属于图像处理
,具体涉及ー种基于JPEG图片拼接的超大图片合成方法
技术介绍
随着科技的不断进步,人们生活水平的不断提高,数码相机的可用性和普及率也不断提高,数码照片的数量呈现爆炸性增长[I]。现今的大幅婚纱照、写真照片及广告图片等已经十分普遍。对于冲印公司来说,提高打印相纸的利用率,节省资源和成本是他们追求的目标。所以,他们面临的ー个极具挑战性的问题是将大量小照片拼接问题,即如何能在一张画布上不重叠的摆放尽量多的照片,使相纸的利用率达到最大,并合成一张超大的图片以供打印输出。对于照片拼接问题涉及到两方面的技木ー是如何选择ー个较优的排版算法将不同大小的照片尽可能多的排放于固定大小的版面中;ニ是如何生成ー张与已排版面ー样大小的画布,将已排版的照片绘制在画布上从而生成一幅超大照片以供打印输出。目前,对于图片拼接方法,国内外学者已经做了大量的研究工作。文献[2]用一组图片产生了ー个自动的图片拼接的结果,完成了图片拼接的初始工作,但是拼接的结果中包含了大量的空白区域。文献[3]中提出了ー种“数字织锦”的方法,从图片集中自动产生ー个稠密的无缝图片拼接效果,这种方法是图片拼接的真正开端。这种拼接方式是将图片中的有用部分拼接起来组合成一幅大图。文献[4]在图片拼接时没有采用无缝拼接的方式,即以图片的原始内容和大小进行拼接,这种方式被广泛应用于商业软件中。文献[I]至[4]中提到这些技术被广泛应用于图片集中多张照片的拼接浏览中,但没有涉及到图片打印输出的问题。对于冲印公司来说,不仅需要好的排版算法来提高相纸的利用率,而且需要将排好照片的版面(可以看作是ー张超大图)生成JPEG格式的图片,并输出到磁盘上保存起来以供后续打印。因此,如何快速生成超大的图片是需要解决的技术难点。在实际应用中,由于计算机内存的限制无法一次生成一幅超大图片,这样就必须考虑拼接的方法。在现有的应用软件中,首先利用GDI编程在指定的画布上绘制出BMP格式的待拼接小图;其次将所有小图拼接为ー张超大BMP图片;最后利用图像压缩技术将大图压缩为JPEG格式。利用BMP格式进行大图片的合成过程简单,但BMP图片数据量很大,如果直接采用BMP图片拼接会占用大量内存空间。当内存空间不足以存放BMP图片数据时,就需要磁盘文件作为中间文件,这样会产生大量的输入输出,会耗费大量时间,尤其是目前的操作系统及编程工具对能生成的BMP画布大小进行了限制,因此对于超大图片来讲,普通计算机拼接效率很低。參考文献 [I]杨颖振动态图片拼接.浙江大学 2008. 05[2]J.Geigel and A. Loui. Using genetic algoritnms for album Page layouts.IEEE Multimedia,2003,10(4) :16-27[3] C. Rother, S. Kumar, V. Kolmogorov, and A. Blake. Digital tapestry. In Proe.of Computer Vision and pattern Recognition(CVpR),2005[4] J. Wang, J. Sun, L. Quan, X. Tang, and H. -Y. Shum. Picture collage. In Proc.of Computer Vision and pattern Recognition (CVpR), 200
技术实现思路
本专利技术的目的是提供一种基于JPEG图片拼接的超大图片合成方法,内存使用量小且稳定,具有较低的时间复杂度与空间复杂度。本专利技术所采用的技术方案是,一种基于JPEG图片拼接的超大图片合成方法,其特征在于,具体步骤如下步骤I、设置待排版面的宽和高分别为W和H,W和H的単位均为像素,将待排版图片采用矩形件排样算法进行排版,使得待排版图片尽可能多的排列在设定的版面上并保证 各待排版图片之间不相互重合,同时记录已排版照片的路径、大小以及在排版后的版面中的位置信息;步骤2、设置JPEG图片压缩取样方式,确定水平采样因子的最大值Hmax和垂直采样因子的最大值Vmax,Hmax和Vmax的単位均为像素,则JPEG图片的最小编码单元MCU的宽为Hmax*8,咼为 Vmax*8 ;步骤3、分块生成每块画布Cpi = 0,1,2,……:令画布Ci的宽Wi = W,i = 0,1,2,……,计算Wノ (H_*8),如果Wノ (H_*8)的值为整数,则在该画布的每一行上最小编码单元MCU的个数Ri = WiAHmaW);如果Wノ (Hmax*8)的值不为整数,则将该值舍去小数部分并加I后赋值给Ri ;令画布Ci的高Hi包含n个MCU,则Hi = n* (Vmax*8),n为正整数,且n的取值应满足以下条件11* く= 65535 ;计算生成画布的块数k :计算H/故,如果H/故的值为整数,则k = H/故,如果H/氏的值不为整数,则将该值舍去小数部分并加I后赋值给k ;步骤4、根据步骤I得到的已排版照片的路径和其在版面中的位置信息,依次循环将已排版照片绘制到步骤3得到的每ー块画布上;步骤5、对步骤4中得到的第一块绘制成功的画布,根据步骤2设定的图片压缩取样方式生成JPEG图片,并将得到的图片的数据信息保存于内存中;对步骤4得到的除第一块以外其余绘制成功的各块画布,根据步骤2设定的图片压缩取样方式分别生成JPEG图片,并将得到的图片的数据信息去掉本图片头部后的信息后追加到前一幅图片的尾部,在相邻两幅图片的连接处将前一幅图片的结束标志FFD9修改为重入标记FFDn,n为0 7的循环;步骤6、修改步骤5最终得到的JPEG图片的头部信息,将该头部信息中表示图片宽和高的字节修改为全部块画布总的宽和高信息,最后将内存中的字节流生成超大图片。步骤3中,分块生成每块画布Ci的过程中应保证除最后ー块画布外,其余的每块画布中所包含的MCU的总个数必须为该画布每一行MCU个数Ri的整数倍,并且每块画布中MCU的个数要小于内存地址最大值65535 ;同时,如果H/氏的值为整数,则步骤3得到的各块画布的高Hi相等,并且为(V_*8)的整数倍。如果k = H/Hi、小数,则最后ー块画布的高为步骤I得到的排版后的版面与其余各块画布的高Hi之和的差值。本专利技术基于JPEG图片拼接的超大图片合成方法的有益效果是JPEG是经过压缩后的图片格式,与BMP格式的图片相比,数据量大量減少,因此,直接利用JPEG图片拼接能够解决现有BMP拼接中存在的内存和时间问题。本专利技术方法是将排好版的大图进行分块,然后按块生成JPEG图片,然后将JPEG图片直接用写ニ进制文件的方法拼接成超大图片的过程。这种方法内存使用量小且稳定,时间与空间复杂度较低,而且图片拼接过程均在内存中完成,減少了中间过程所产生的大量输入输出,具有很高的拼接效率。附图说明图I是采用本专利技术方法合成不同大小的版面所消耗的时间曲线图和空间曲线图,其中,(a)为时间曲线图,(b)为空间曲线图;图2是利用本专利技术方法生成的50寸*80寸的版面中的各块JPEG图片以及合成的 超大图片,其中,(a)为第一块JPEG图片,(b)为第二块JPEG图片,(c)第三块JPEG本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于JPEG图片拼接的超大图片合成方法,其特征在于,具体步骤如下 步骤I、设置待排版面的宽和高分别为W和H,W和H的単位均为像素,将待排版图片采用矩形件排样算法进行排版,使得待排版图片尽可能多的排列在设定的版面上并保证各待排版图片之间不相互重合,同时记录已排版照片的路径、大小以及在排版后的版面中的位置信息; 步骤2、设置JPEG图片压缩取样方式,确定水平采样因子的最大值Hmax和垂直采样因子的最大值Vmax,Hmax和Vmax的単位均为像素,则JPEG图片的最小编码单元MCU的宽为Hmax*8,咼为U ; 步骤3、分块生成每块画布Ci, i = 0,1,2,……令画布Ci的宽1 = W,i = 0,1,2,……,计算Wノ (Hmax*8),如果Wノ (Hmax*8)的值为整数,则在该画布的每一行上最小编码单 元MCU的个数Ri = WiAHmaj^);如果Wノ (Hmax*8)的值不为整数,则将该值舍去小数部分并加I后赋值给Ri ;令画布Ci的高Hi包含η个MCU,则Hi = n* (Vmax*8),η为正整数,且η的取值应满足以下条件11* く= 65535 ; 计算生成画布的块数k :计算Η/故,如果Η/氏的值为整数,则k = H/Hi;如果Η/氏的值不为整数,则将该值舍去小数部分并加I后赋值给k ; 步骤4...

【专利技术属性】
技术研发人员:孙钦东王倩张景鹏
申请(专利权)人:西安理工大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1