5/3提升小波在DM642上的实现与优化
时间:07-03
来源:
点击:
边界延拓主要是用于计算高频系数。分析发现,水平提升时,当前数据块每一行的最后一个高频系数与下一个块在该行的第一个高频系数相同。所以只要把当前块的这些系数保存起来,在对下一块进行水平提升时第一个高频系数就不需要再进行计算,因此也就不需要再对其左边界进行延拓了。垂直方向的提升也是同样的道理。在程序中添加两个数组,分别用于存放当前块的每一行与每一列的最后一个高频系数。采用这种方法就可以降低程序的复杂度,提高执行效率,减少缺失的发生。
像素扩展函数pix_pand[9]是采用TI的IMGLIB算法库。水平提升与垂直提升函数均由作者用线性汇编语言编写,充分利用64x系列DSP的半字处理指令,采用半字打包技术,最大限度地提高程序的执行效率。
水平提升时,将每行的数据重新排序,变成如图5所示的结构。
使用C64x的ADD2、SHR2和SUB2等半字处理指令,将如下的两个运算并行执行:
H(1)=B-[(A+C)>>1]
H(2)=D-[(C+E)>>1]
垂直提升时则可以安排多列的计算并行执行,如图6所示。
H1(1)=B1-[(A1+C1)>>1]
H2(1)=B2-[(A2+C2)>>1]
3 仿真结果
表1列出了CPU读取L1D时产生的缺失数。其中,水平方向的缺失不可避免。由于要对数据块的右侧和底部进行边界延拓,所以在水平方向的缺失数比传统方法略高;而在垂直方向上,该算法完全避免了缺失的发生。
表2列出了几种方法的计算性能。由于本文采用了多种优化技术,运算速度提高了4~10倍。
本文介绍了5/3提升小波变换及其在DM642上的实现。为了提高其性能提出了多项优化技术,试验证明这些方法十分有效。
- linux下Intel 3945ABG 安装无线网卡驱动(06-25)
- 基于MPC8250的嵌入式Linux系统开发(07-16)
- 基于单片机通用引脚的软件UART设计(10-16)
- 嵌入式实时操作系统μC/OS-II 在P89V51RD2中的移植(04-09)
- 基于MPC755的嵌入式计算机系统设计(05-10)
- 用DSP56F805 PWM模块输出高频正弦波(05-25)