[发明专利]面向多核平台的超大照片并行合成方法有效
申请号: | 201410020282.1 | 申请日: | 2014-01-16 |
公开(公告)号: | CN103778596A | 公开(公告)日: | 2014-05-07 |
发明(设计)人: | 孙钦东;贺毅;贾怀玉;王健;张景鹏 | 申请(专利权)人: | 西安理工大学 |
主分类号: | G06T3/40 | 分类号: | G06T3/40 |
代理公司: | 西安弘理专利事务所 61214 | 代理人: | 李娜 |
地址: | 710048*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 面向 多核 平台 超大 照片 并行 合成 方法 | ||
技术领域
本发明属于图像处理技术领域,涉及一种面向多核平台的超大照片并行合成方法。
背景技术
随着人们生活水平的提高,人们更希望留住美丽的瞬间,因此出现了大量的照片。另一方面伴随着科技的进步,图像的质量也得到极大提高。高质量照片也使得图像文件体积加大。对于冲印公司来说,要把这些数量众多,质量之高的照片打印出来,通常受相纸的规格限制,这些照片要排一个大的版面上输出,然后再裁切一张张照片。小照片数量和质量决定了大版面所占容量之巨大。一般一个大版面所占容量都在几十兆甚至上百兆,这么大的版面受计算机内存限制,无法一次生成一张大图。因此需要考虑分块输出。
传统的分块大图算法是这样的:1)将大版面按一定比例确定每块的大小;2)根据一块大小建立一个画板,并按照片小照片在版面中的位置将小照片绘制到画板上;3)将该画板保存成JPEG数据流加入内存流中。接着重复2)和3)步骤,依次将所有小照片绘制到画板上,并保存到内存流中。最后将内存流的数据输出到磁盘文件上。
由于多核处理器已成为市场上的主流,传统的分块大图算法存在两个不足:一是CPU负载不均衡,通过利用性能分析工具(如Visual Studio2010中的Concurrency Visualizer)可以明显发现算法只在一个CPU上执行,另一个CPU处于空闲状态;二是耗费时间长,通过测试生成一张70M的大图在双核计算机上平均需要时间40秒。
目前伴随CPU技术的发展,冲印过程中使用的计算机的处理器通常是两核、四核甚至更多核。因此,充分利用计算机处理器的多核运算能力在极短时间内生成大照片,具有非常重要的意义。
发明内容
本发明提供了一种面向多核平台的超大照片并行合成方法,解决了现有技术条件下采用的合成大图算法CPU利用率低、耗时长的问题。
本发明采用的技术方案是,一种面向多核平台的超大照片并行合成方法,按照以下步骤实施:
步骤1、设置版面信息
设定生成版面的宽和高、以及水平和垂直分辨率,并新建一个全局变量关联容器C,容器的Key表示块的编号,Value值表示该编号的块所保存成的二进制流;
步骤2、选择待绘制的照片,并对这些照片在版面上的位置进行坐标定位
建立一个列表L,该列表包含所有待排版照片名字,以及由某一排版算法确定各个照片在版面中的坐标位置,还有照片的宽和高;
步骤3、对版面按照一定规则进行分块,确定每块的宽、高
对版面进行分块,对于JPEG格式的照片,按照以MCU为单元进行分块,并对分的块按照0,1,2,3…进行编号,将每块的宽、高设定为相同;
步骤4、开启多任务机制来并行绘制每块
根据块数创建T个任务,然后传递块参数并开启每个任务,块参数包括:块的编号、块的宽和高,每个任务的具体步骤是:
4.1)计算该块的上限和下限:设定块的上限为BT,下限为BB,块号为BN,块高度为BH,则有:
4.2)创建一个与该块的宽和高一样的画板;
4.3)循环遍历列表L,计算每张照片的上限和下限
设定照片在版面中的上限为PT,下限为PB,纵坐标为PY,照片的高度为PH,则有:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安理工大学,未经西安理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410020282.1/2.html,转载请声明来源钻瓜专利网。