付航,章秀华,贺武
武汉工程大学电气信息学院,湖北 武汉 430205
多视点去模糊算法在双核DSP上的并行优化
付航,章秀华*,贺武
武汉工程大学电气信息学院,湖北 武汉 430205
为了实现多视点去模糊算法在小型设备上快速运行,提出了一种并行优化的方法.采用TMS320C6657双核数字信号处理器(DSP,Digital signal processor)作为主要运算芯片,使用CCSv5.2作为软件开发环境.为了解决算法在单核上运行时间长的问题,首先使用时间戳计数器对算法中各部分功能函数的运行时间进行了详细的统计和分析;然后将运行时间最长的子函数中矩阵相乘部分的算法进行了优化,采用一个分界点将矩阵相乘部分算法划分为两块,将计算量均等的分配到DSP的两个核心上,使这部分算法能够同时在两个核心上并行运算.结果表明对分界点的求解是正确有效的;优化后的图像去模糊算法极大的缩短了DSP上的运算时间,提高了运算效率.
DSP;双核并行;多视点;去模糊
去模糊是数字图像处理中的一个重要分支,它能将原始的模糊图像处理变成目标可识别的清晰图像[1-3].一般图像去模糊算法主要在PC机上运行处理,但是PC的体积大,成本高,专用性不好,并不适用于特定场合下的专用领域[4].目前DSP在图像处理领域通常采用的是单核DSP,或者是使用多片DSP级联的方式[5-6].经过近几年的发展,陆续出现了各种多核DSP芯片,这种高性能,低功耗的芯片,相比于目前市场上的主流图像处理芯片在性能,外设,架构方面都更加强大,更加适合运行复杂的图像处理算法[7-8],如在医疗影像以及基础设施设备等方面的运用[9].
本研究将多视点去模糊算法移植到了TMS320C6657双核DSP芯片上,使整个图像处理系统的体积,成本,功耗等大大减小,运用范围变得更加广泛.根据DSP的双核架构[10],采用了多核并行处理的思想[11],对程序中矩阵相乘部分作了相应的优化调整.实验结果表明,优化后的算法缩短了多视点去模糊算法在DSP上的运行时间,提高了运算效率.
1.1 多视点去模糊算法的移植与改进方向分析
多视点去模糊算法移植以CCSv5.2作为软件开发平台.在算法程序的移植过程中,主要使用CCSV5.2编译调试程序,查看实验图像,校准实验结果.基本过程为:先在CCS上新建一个工程,将现有的多视点去模糊程序根据开发板的硬件结构,修改定义变量的存储空间,编译通过后,进入软件或硬件调试模式,将图像数据以.dat文件加载到指定的内存中,然后开始运行直至得到实验结果.
多视点去模糊算法相对其他算法来讲更加复杂,各种运算繁多,调用到的子函数种类也很多.如果对程序中的每个函数都进行分析优化,工作量大,具有盲目性,是不切合实际的.为了提高优化效率,让算法更加快速稳定的在硬件上运行,我们需要对算法的初次移植实验结果中各个部分以某一个预定指标来做一个分析对比,找到算法程序中计算效率低,占用资源空间大,耗费时间长的部分,然后对这部分做针对性的改进和优化.
在时间层面上的优化设计是程序优化当中的一个重要指标,通过对整个程序当中各个功能函数的运行时间测定来确定哪个函数是最耗费时间的,然后以减少时间消耗为目标,再来分析算法中的函数,判断是否具有改进的空间,最后进行针对性的修改,从而实现程序的快速运行.
1.2 程序在DSP中运行时间的测定
在调试多视点去模糊程序的过程中,如何精确测量某个函数或某段代码的时间消耗量是必须要解决的问题.在C66xx系列DSP上每个核都具有TSCL,TSCH这两个计数寄存器,我们以这两个寄存器作为计时工具.TSC全称为时间戳计数器,它具有与CPU相同的频率,共同表示一个64 bit数,每当CPU运行一个周期,该寄存器就加1,这两个寄存器的值精确地反映了CPU在某个执行段中消耗的周期数量.使用这种方法测量时间的基本公式为:
式(1)中,a0表示待测试代码段前获取的CPU运行的周期数;a1表示待测试代码段执行完成后获取的CPU运行周期数;f表示CPU的运行频率;a1-a0表示CPU运行的周期数,t为所求的CPU运行时间.TMS320C6657的运行频率f为1 000 MHz,带入公式中就能计算得到时间t.
我们可以将多视点去模糊的程序划分为几个基本的功能函数,然后使用这种方法统计出每个功能函数运行所消耗的时间.表1为以128*128大小的灰度图作为输入图像,运算过程中各部分功能函数所用时间.
表1 4种功能函数运行时间的统计Table 1 Statistics of the running time of four performance functions
从表1的数据分析中可以看到,多视点去模糊最耗费时间的是功能函数03,即求解图像的psf(点扩散函数)部分.为了具体确定功能函数03当中哪一部分子函数的运算时间最长,我们可以再按照这种方法以一幅128*128灰度图为例将求解psf这个功能函数中调用到的5个不同子函数的运行时间做进一步的统计,实验结果如图1所示.
图1 5个不同子函数的运行时间统计Fig.1 Statistics of the running time of five different sub-functions
从图1中可以看到运算量几乎都集中在func03和func05这两个子函数上,其中func03运算量占比最大,消耗时间最长.通过对以上图像复原的时间统计结果的分析,可以得出对函数func03的修改,对整个程序在时间消耗量的优化上的作用是最为明显的.
1.3 对去模糊程序中矩阵相乘算法的改进
通过对图像去模糊算法和程序的分析,可以发现func03内包含了大量的矩阵运算,其中以两个矩阵相乘求解一个对称矩阵当中所用到的输入数据量最多的,运算量也是最大的.其计算公式为:
式(2)中,0<i<m,0<j<n,0<k<l.m表示矩阵A的行数,n表示矩阵B的列数,l表示A的列数.从对应的算法中已知C为对称矩阵,即:矩阵A与矩阵B相乘只需计算0<i<m,0<j<i,0<k<l部分,也就是求出的下三角部分的数据,然后再根据矩阵位置的对应关系直接赋值就能求得整个矩阵C.在这部分函数运算过程中,因为输入的矩阵数组A和矩阵数组B的数据量都十分巨大,所以计算消耗掉了大量的时间.
根据TMS320C6657DSP的双核架构,对于某些带有大量运算的复杂算法可以修改为双核运行.为了实现双核并行处理,我们设定了一个分界点d.这个分界点将矩阵运算过程分解为两块,只要选取的分界点合适就可以将两部分的运算量做到尽量相等,从而每个核都能被得到充分的利用,此时效率也是最高的.图2和图3分别表示矩阵相乘在单核上运行和在双核上运行.
图2 单核运行Fig.2 Single-core operation
图3 双核运行Fig.3 Dual-core operation
从上述矩阵相乘的算法结构中可以看出,算法的运算量与输入的数组A和数组B的行数,列数相关;同时,加法的计算量和乘法的计算量是相等的.单核运行的过程中,A[i][k]×B[k][j]的计算量为m×l次;双核运行过程中,对于A[i][k]×B[k][j]的计算,取0<i<d的部分在核0上运行,取d<i<m的部分在核1上运行,两个核分到的计算量相等,于是可以推导出下列等式:
式(3)中,参数d表示计算量分界点;参数m表示矩阵A的行数,参数l表示矩阵A的列数,公式两边分别表示核0和核1的计算量.由上述等式可以推导出对分界点d的计算公式为:
利用公式(4)将求得的分界点d带入程序中就可以将func03中矩阵相乘求解矩阵C的过程划分为计算量相等的两块,分别在核0与核1上运行,实现程序的双核并行运算.
同样可以用一幅128*128大小的灰度图像为例,仅针对求解矩阵C这部分算法在单核与双核模式下运行时间的测定来验证优化是否有效,结果如表2所示.
表2 不同模式下的运行结果Table 2 The operation results under different mode
通过表2中的实验数据,可以得出同一函数使用不同的算法分别在单核与双核上运行求出结果所需的时间是大不相同的.优化后的算法在双核模式下最长的运算时间与单核模式下的运算时间之比约为1∶2,同时双核模式下两个核的运算时间相近,验证了以上公式对分界点d求解的正确性.
为了验证多视点去模糊算法优化前后的最终效果,采用5个镜头,从5个角度同时拍摄5张图片作为实验图片.这里以拍摄所得的128*128大小的灰度图作为模糊图像进行去模糊实验.先将拍摄的图像转换成带有图像数据的.dat文件,然后在调试模式中下载到程序指定的内存地址上,最后运行程序.计算完成后在图像分析器里配置对应的图像属性查看实验结果,同时在控制台窗口中可以得到打印出的函数运行时间和运行状况等相关实验数据.
图4 模糊图像Fig.4 Blurred images
图5 多视点去模糊图像Fig.5 Multi-view deblurred images
从图4和图5的对比中可以很容易的看出各个角度拍摄到的模糊图像与复原图像的区别.复原图像轮廓更加清晰,对比度更高,达到了预期的复原效果.
表3记录了以上5幅模糊图在整个图像复原中所需时间.通过表3中的整个图像运行时间的对比,可以看出将改进后的算法运用在双核上后,运算时间明显缩短,DSP的计算效率得到提高,达到了减少时间的目标,验证了算法优化的有效性.
表3 多视点去模糊所需的时间统计Table 3 The statistics of time required for multi-view image deblurring
本研究实现了多视点去模糊算法在DSP上的移植,对每个功能函数在运行时间上做出了分析.对求解点扩散函数中矩阵相乘部分算法作了优化,并通过实验结果对比验证了对分界点求解的正确性.优化后的算法在整个去模糊的过程中减少了时间消耗,效果明显,为后续算法在时间层面上的优化改进提供了方向.
致谢
本工作得到国家自然科学基金委员会,湖北省科学技术厅和武汉市科技局提供的资金资助,在此一并致以衷心的感谢!
[1]HONG Han-yu,ZHANG Tian-xu.Fast restoration approach for rotationl motion blurred image based on deconvolution along the blurring paths[J].Optical Engineering,2003,42(12):3471-3486.
[2]ZHANG Hang,LUO Da-yong.Statusanddevelopment of study on blind image restoration algorithm[J].Journal of Image and Graphics,2004,10:1146-1150.
[3]HONG Han-yu,ZHANG Tian-xu,YU Guo-Liang.Regularized restoration algorithm of astronautcal turblencedegraded images using maximum-likelihoodestimation[J].Journal ofInfrared and Millimeter Waves,2005,24(2):130-134.
[4]包正睿,陈芬.基于DSP/BIOS的视频图像复原系统设计[J].微型机与应用,2014,33(24):48-50.
BAO Zheng-rui,CHEN Fen.Design of video image restoration system based on DSP/BIOS[J].Microcomputer&Its Applications,2014,33(24):48-50.(in Chinese)
[5]樊民革,赵剡,许东.基于DSP的时图像复原[J].红外与激光工程,2006,35(增刊):343-348.
FAN Min-ge,ZHAO Yan,XU Dong.Real time image restoration based on DSP[J].Infrared and Laser Engineering,2006,35(Supplement):343-348.(in Chinese)
[6]赵峰,袁东风,张海霞,等.多DSP图像压缩实时并行处理系统[J].光学精密工程,2007,15(9):1451-1455.
ZHAO Feng,YUAN Dong-feng,ZHANG Hai-xia,et al.Multi-DSP real-time parallel processing system for image compression[J].Optics and Precision Engineering,2007,15(9):1451-1455.(in Chinese)
[7]丁有源,汪安民.基于多核任务并行处理的DSP软硬件设计[J].单片机与嵌入式系统应用,2012(5):43-45.
DING You-yuan,WANG An-min.Software and Hardware designs of DSP based on Multi-core task parallel processing[J].Microcontroller&Embedded Systems,2012(5):43-45.(in Chinese)
[8]Texas Instruments.Keystone Architecture Multicore Navigator UserGuide(LiteratureNumber:SPRUGR9F)[OL].(2013-3)http://www.ti.com/lit/ug/sprugr9f/sprugr9f.pdf.
[9]电子工程世界.多核DSP计数在OCT医疗成像中的应用[OL].[2012-01-12]http://www.eeworld.com.cn/medical_electronics/2012/0112/article_2655.html.
[10]Texas Instruments.TMS320C66x DSP CorePac User Guide(Literature Number:SPRUGW0B)[OL].(2013-7)http://www.ti.com/lit/ug/sprugw0c/sprugw0c.pdf.
[11]曹折波,李青.多核处理器并行编程模型的研究与设计[J].计算机工程与设计,2010,31(13):2999-3002.
CAO Zhe-bo,LI Qing.Research and designed of parallel programming model on multi-core[J].Computer Engineering and Design,2010,31(13):2999-3002.(in Chinese)
Parallel optimization of multi-view deblurring algorithm in dual-core digital signal processor
FU Hang,ZHANG Xiu-hua,HE Wu
School of Electrical and Information Engineering,Wuhan Institute of Technology,Wuhan 430205,China
To realize fast running of the multi-view deblurring algorithm in small devices,aparallel optimization algorithm was proposed.TMS320C6657 dual-core digital signal processor(DSP)was used as the primary computing chip,and the CCSv5.2 was used as the software development environment.To solve the problem of time consume of the single core,the time of each sub-function in the algorithm was analyzed by using the time stamp counter.Then the algorithm of matrix multiplication that consumes the longest time in the subfunction was optimized by dividing into two parts using a dividing point,and the amount of calculation was assigned to the two cores of DSP equally to ensure the algorithm run in parallel.The results show that the solving method of the dividing point is correct and effective;the running time of the DSP is reduced significantly by the optimized algorithm of multi-view deblurring and the operation efficiency is improved.
digital signal processor;parallel optimization;multi-views;deblurring
TP391
A
10.3969/j.issn.1674-2869.2015.11.015
1674-2869(2015)11-0074-05
本文编辑:张瑞
2015-10-23
国家自然科学基金面上项目(61175013);湖北省自然科学基金创新群体项目(2012FFA046);武汉市国际科技合作计划项目(2014030709020310)
付航(1991-),男,湖北随州人,硕士研究生.研究方向:图像处理与目标识别.*通信联系人