基于多核处理器的全方位图像展开优化
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于多核处理器的全方位图像展开优化
陈曈;杨东勇;石洗凡
【摘要】全方位图像展开算法运算量大,在当前的主流处理器中难以满足实时要求,对其仅做简单并行处理效果仍不理想.针对此问题,基于多核处理器改进双线性内插值法的全方位图像展开算法,对其实现并行处理.通过全方位图像展开实验,对展开时间、并行效率、渲染速度等进行分析和比较.实验结果表明,并行优化后,在
E7200(双核2.53 GHz)下实时处理的分辨率能从640x480提高到
1024x768.%Omnidirectional image unwrapping algorithms are complex in calculation, so they are non-real time on present main processor.The direct parallelization effect is not satisfactory.To solve the problem, this paper improves omnidirectional image unwrapping algorithm based on the quadratic interpolation, realizes parallel processing on multiple-core processor, and analyzes the unwrapping time, parallel performance and rendering speed with the unwrapping experiment in different resolution.Experimental results indicate that it improves the real-time resolution 640×480 of the image unwrapping to 1024×768 on Core 2 Duo E7200 2.53 GHz processor.
【期刊名称】《计算机工程》
【年(卷),期】2011(037)001
【总页数】3页(P285-286,289)
【关键词】多核处理器;并行处理;全方位图像;全景图
【作者】陈曈;杨东勇;石洗凡
【作者单位】浙江工业大学计算机科学与技术学院,杭州,310023;浙江工业大学计算机科学与技术学院,杭州,310023;浙江大学计算机科学与技术学院,杭州,310027【正文语种】中文
【中图分类】TP391
1 概述
目前国内外越来越多的学者在研究与全方位图像有关的应用技术,如全景成像技术[1]。
在全方位图像展开算法中,采用基于双线性内插值法[2]较采用基于传统的近邻取样法[3]提高了展开图像的清晰度和边缘平滑度,但是全方位图像展开的处理时间长、实时性差。
针对此问题,文献[4]研究了基于双线性内插值法的全方位图像展开算法并实现其并行处理,但其并行加速比效果仍不够理想,同时也仅能对640×480及以下分辨率的视频进行实时处理,对于高清摄像机难以满足实时应用要求。
因此,必须进一步提高处理速度。
2 基于双线性内插值法的全方位图像展开算法
全方位图像展开算法中展开成全景图所耗时间为展开成透视图像所耗时间的30倍左右,因此,本文针对全方位图像展开成全景图像的算法进行研究。
2.1 全方位图像展开算法
全方位图像的展开过程是全方位图像生成过程的逆过程。
全景图的生成过程就是将全方位图像展开到空间一个圆柱面上[2-4],其展开算法的基本流程如图1所示。
图1 全方位图像展开算法
(1)从设备中读取全方位图像。
(2)将全方位图像和全景图像信息锁定到内存中,通过双线性内插值算法逐行遍历
全景图和全方位图像像素点。
(3)利用全方位图像展开的逆投影过程计算生成全景图像。
2.2 全方位图像展开算法的改进
在读取全方位图像后全,方位图像展开算法需要通过锁定位将图像信息保存在内存中,遍历全方位图像和全景图像每个像素点时,CPU可以直接从内存缓冲区中读
取数据,节约遍历时间。
在全方位图像展开算法中,访问cache属于组相连映射,而在原全方位图像展开
算法中同时将全方位图像和全景图像锁定到内存中属于一路组相连,存在冲突失配。
改进的展开算法将全方位图像预锁定到内存中,将访问 cache的机制变成二路组
相连,这样,主存中保存全方位图像信息的块与全景图像信息的块分别对应到cache的不同组中,减少了冲突失配,同时预锁定全方位图像,避免了开始遍历全方位图像各像素点时的被迫失配,这将提高二级缓存的命中率,缩短平均存储器访问时间(AMT),提高串行速度。
全景图生成过程是全方位图像生成过程的逆过程,通过全景图像(X, Y)和全方位图像(x, y)的对应关系公式[2-4],即逆投影公式(1)生
成全景图。
在遍历全景图像像素点前计算式(1):
其中x∈ [0,2 πL]的所有正弦和余弦值。
遍历全景图像素点时再利用查表操作[2,4],不需要对每个像素点进行重复的三角函数计算,直接得到各相应像素点X的正、
余弦值,从而进一步减少了遍历像素点所需的时间。
最后生成全景图像时采用的像素数据存储格式是32位每像素RGB格式;其中的alpha通道在默认情况下设定为 1,代表不透明,而全景图像显示不需要透明。
因此,计算灰度值时,只需计算红、绿、蓝(RGB)3种颜色的灰度值。
3 全方位图像展开算法的并行实现
在全方位图像和全景图的计算以及灰度重映射时,各像素点之间没有依赖性,可以进行并行化处理。
全方位图像展开算法并行化方案的基本流程如图2所示。
首先
将全景图像数据分成2块计算,在各子块中线程串行处理块内数据,计算相应的
子全景图像,最后将所有线程中的子全景图像归并成一个完整的全景图。
图2 全方位图像展开算法并行化方案
采用的实验机器是双核处理器,其最佳并行效率是使用的线程数等于核数。
因此,设置线程数为2对基于平滑双线性内插值的全方位图像展开算法进行并行处理。
具体是将输入的全方位图像数据分成2块分别计算全景图像的像素值。
本文采用fork-join结构的并行处理模式,程序从主线程开始执行,先将数据存到内存中通
过读取内存数据快速计算,到并行区域时,先将全方位图像数据平均分成2块,
计算全景图像的主线程,增加创建1条子线程,同时遍历各自对应的1/2全景图
像像素点和1/2全方位图像像素点。
这样,由2条线程根据全景图像和全方位图
像灰度映射关系同时分别计算子全景图像上的各像素点的RGB 3个通道的颜色值,计算所有像素点灰度值后并行区域结束,新增的工作线程终止,2条线程归并成1条主线程,将2个1/2的全景图像合并成一个完整的全景图像,并在窗口中显示。
处理生成Height×Widt h大小的全景图像数据,即同时处理 Width(Height/2)大
小的 2个子全景图像。
创建和销毁工作线程将带来一定的时间开销,因此,应该
尽量减少线程的创建和销毁工作,选择逐行遍历全景图像时,增建1条工作线程,由 2条线程同时计算 i列和 Height/2+i列上每行 Width个像素点的256级灰度值,其中,i∈[0, Height/2-1]。
计算过程基于以下的双线性二插值算法:
全方位图像的浮点坐标(x,y)=(i+u, j+v)(i∈Z+,j∈Z+,u ∈ [0,1),v ∈ [0,1))可由表
示全方位源图像中的坐标(i, j)、(i+1,j)、(i, j+1)、(i+1, j+1)所对应的4个像素的
灰度值共同决定,再通过全景图像(X,Y)和全方位图像(x,y)之间的逆投影式(1)生成
全景图像。
以上并行处理共并行计算Height/2次,每次计算 2Width个像素值,计算 Height/2次后,共需计算Height×Width个像素值,3Height×Width个256级灰度值,即每条线程平均处理3Width(Height/2)个数据。
再将2条线程归并成一条主线程,同时将2个子全景图像归并成一个完整的Height×Width大小的全景图像。
最后释放保存全景图像和全方位图像数据的内存。
4 实验结果
实验采用的全方位视觉反射镜头为 VS-C42MR(双曲面镜方程为、上视角15°、下视角60°)和Sony DCR HC-88摄像机(最大垂直视场角30.1°)。
设置全方位图像展开时中心点、内径和外径参数相同,且生成图显示的有效空间区域范围最大。
微机采用Intel Core2 Duo CPU E72002.53 GHz、1 GB内存,操作系统为Windows XP。
4.1 不同分辨率全方位图像的展开时间
通过 100次测试得到的平均展开时间的实验结果如图 3所示,可以看出,并行处理大大缩短了全方位图像的展开时间,随着展开部分像素数的增大,并行处理的性能提升倍数也在增大。
与文献[4]算法的展开时间比较,其串行和并行处理时间分别缩短了70%和80%左右。
图3 各分辨率下展开成全景图的时间性能对比
本次实验的并行处理更有效地缩短了展开时间;并且随着展开部分像素数的增大,并行处理的性能提升也越明显。
一般满足实时要求的流畅速度是24 f/s。
串行处理在640×480分辨率下能达到36.955 f/s,但分辨率提高至800×600时速度为23.256 f/s,不能达到实时要求。
而并行处理后展开1024× 768分辨率的全方位图像只需要38.05 ms,可以达到约26.281 f/s的实时播放速度。
因此,本文算法将全方位视频图像实时展开速度提高至1024×768分辨率,提高了全方位图像的实时展开的分辨率。
4.2 不同分辨率展开成全景图的并行加速比
从图4可以看出并行处理优化了展开性能,得到了1.804的平均加速比,平均并行效率达到 90.2%。
并行效率高于文献[4]的算法,这主要得益于读取全方位图像数据时,将全方位图像提前锁定到内存中,避免了同时锁定全方位图像和全景图像时的cache冲突失配和被迫失配,提高了cache命中率。
图4 各分辨率下展开成全景图的并行加速比
从图5中看出,并行处理后大幅度加快了图像的渲染速度。
并行渲染速度呈非线性提高,随着分辨率的提高,其增幅趋于平缓,基本稳定在 92 ns/pixel左右。
全方位图像为320×240分辨率时并行渲染速度只有121.573 ns/pixel,因此,需要进一步利用二级缓存提高全方位图像展开算法的性能。
图5 各分辨率下展开成全景图的渲染速度
5 结束语
实验结果表明,本文方法实现并行处理后全方位图像展开的平均加速度比达到
1.804,能够将全方位图像实时展开的分辨率从640×480[4]提高至1024×768,有效解决了图像展开算法运算量大所带来的高清晰度视频难以实时展开的问题。
参考文献
[1]王宇, 王涌天, 刘越, 等. 基于全景成像的增强现实系统[J]. 计算机工程, 2010, 36(3): 16-18.
[2]冯永明, 杨东勇, 卢瑾. 全方位图像展开的双线性内插值法[J]. 计算机工程与应用, 2008, 44(15): 54-55.
[3]陈焱, 杨东勇, 沈正伟. 全方位图像展开成全景和透视图的实现方法[J]. 计算机工程, 2007, 33(2): 183-185.
[4]陈曈, 杨东勇, 石洗凡. 全方位图像展开的并行优化[J]. 计算机工程与设计, 2010,
31(22): 4862-4865.。