JPEG 压缩算法在 DM642 上优化及实现.doc

上传人:韩长文 文档编号:3617918 上传时间:2019-09-18 格式:DOC 页数:5 大小:294KB
返回 下载 相关 举报
JPEG 压缩算法在 DM642 上优化及实现.doc_第1页
第1页 / 共5页
JPEG 压缩算法在 DM642 上优化及实现.doc_第2页
第2页 / 共5页
JPEG 压缩算法在 DM642 上优化及实现.doc_第3页
第3页 / 共5页
JPEG 压缩算法在 DM642 上优化及实现.doc_第4页
第4页 / 共5页
JPEG 压缩算法在 DM642 上优化及实现.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《JPEG 压缩算法在 DM642 上优化及实现.doc》由会员分享,可在线阅读,更多相关《JPEG 压缩算法在 DM642 上优化及实现.doc(5页珍藏版)》请在三一文库上搜索。

1、精品论文JPEG 压缩算法在 DM642 上优化及实现魏洪涛,卢伟 武汉理工大学信息工程学院,武汉(430070) E-mail:摘要:在 DM642 上实现了 JPEG 图像压缩算法,并对传统的 DCT 变换进行了改进,针对DM642 的 CACHE 结构和 DMA 对 JPEG 编码程序的内存进行优化,对编码进行测试后表明 在没有降低图像质量的情况下,编码性能提高了 8 帧/秒(CIF 格式)左右。 关键词:JPEG;DM642;DCT 变换;cache 结构;yuv1. 引言JPEG (Joint Photographic Experts Group)它是由 ISO (Internati

2、onal Organization for Standardization) 和 CCITT(Committee Consultation International Technic and Telegraph)联 合指定的一种用于连续色调、多级灰度、彩色或单色静止图像数据压缩的国际标准。相对其 他静止图像压缩算法,它具有算法简单,运算速度快,占用空间小等优点,被广泛用于嵌入 式系统中。美国 TI 公司 TMS320C64x 系列中的 DM642 开发板是用来实现流媒体应用的主 流方式,它的芯片主频达到 600MHz,峰值处理速度达到 4800IPS。它具有小巧灵活、实时 高效的特点,在诸如监

3、视系统、手机、以及可视电话等多媒体嵌入式系统中应用广泛。本文 就是利用 DM642 来研究 JPEG 图像编码相关算法的。2.JPEG 压缩编码的基本原理及算法的优化实现如图 1 所示,JPEG 压缩编码1主要由预处理、DCT 变换、量化、Huffman 编码等流程 构成。JPEG 压缩编码时,先将原始 YV12(4:2:0)图像分为 88 的数据块,按一个 MCU 为单位进行编码,一个 MCU 包含 6 个 8x8 块,其中 Y 分量是 4 个 8x8 块,U 分量和 V 分 量各一个 8x8 块,如果图像高宽不能被 16 整除,则用边缘像素填充;然后将各数据块按从 左到右,从上到下的顺序分

4、别进行 DCT 变换、量化,对 DCT 变换后的 DC 系数要进行 DPCM 编码,并进行“之”字型(Zig-Zag )扫描和 Huffman 编码(量化和 Huffman 编码分别需要量化表 和 Huffman 表的支持)。- 5 -块8x8DCTPDCM量化Zig_Zag熵编码码流量化表码表图 1 JPEG 编码框图在整个编码过程中,DCT 变换的快慢决定了整个 JPEG 算法的速度。传统的 DCT2公式 如下所示:1 77(2i + 1)u(2 j + 1)v F (u, v) =C (u)C(v) f (i, j) coscos4C (u), C (v) = 1 i =0 j =0(其

5、他情况)1616C (u), C (v) = 12(当 u,v=0)如果按照该公式进行计算,虽得到的数值精度较高,但运算量太大,会降低 JPEG 编码 速度,为此可以将二维 DCT 分为两个一维的 DCT,转换如下:1 7( 2 i + 1 ) u 1 7( 2 j + 1 ) v F ( u , v ) =C ( u ) G ( i , v ) c o s2 i = 0 1 6 G ( i , v ) =C ( u ) 2 j = 0f ( i , j ) c o s 1 6 那么,8 点一维序列 xi (0 i 7) 的 DCT 定义:7y0 = xii = 07yk = xi cos (

6、2i + 1)k / 16i = 0(1 k 7)假设: s0 = x0 + x7s1 = x1 + x6s2 = x2 + x5s3 = x3 + x4s4 = x3 x4s5 = x2 x5s6 = x1 x6s7 = x0 x7由上式展开与合并,得到 DCT 的输出:y0 = s0 + s1 + s2 + s3y =s (cos3 sin3)+s (cos sin )+s (sin +cos )+s (cos3 +sin3)141616516166161671616y = s2 cos 6 s2 sin 6 + s2 sin 6 s2 cos 62 0 16 116 216 3 16y

7、= s2 sin 3 s2 cos s2 sin + s2 cos 33 4 16 516 616 7 16y4 = s0 s1 s2 + s3y = s2 cos 3 + s2 sin s2 sin + s2 cos 35 4 16 516 616 7 16y = s2 cos 6 s2 sin 6 + s2 sin 6 s2 cos 66 0 16 116 216 3 16y = s (sin 3 +cos 3 ) + s (sin + cos ) + s (sin cos ) + s (cos 3 sin 3 )7 4 16 165 16 166 16 16 716 16由上可知:改进后

8、的 DCT 算法由两级构成:第一级为碟形运算,第二级为乘法累加运算, 减少了运算级数,利用 C6000 的乘累加运算指令可大大优化 DCT 算法。3. 基于 DM642 的 CACHE 和 DMA 对编码优化CPU时钟600MHzL1CACHE600MHz存储器大小L2CACHE600MHz外部存储 器小于150MHz图 2 DM642 存储结构图和相应的读取时间DM6423采用的是 C64xDSP 核,时钟频率高达 600MHz,提供了 8 个并行处理单元, 处理能力高达 4800MIPS,片内是两级 CACHE 结构,其机制是透明的,图 2 为 DM642 存 储结构图和相应的读取时间。C

9、PU 和一级程序高速缓存(L1P)及一级数据高速缓存(L1D) 直接相连,L1P 和 L1D 大小分别为 16KByte。第二级缓存 L2 有 256Kbyte,程序空间和数据 空间是共享的,可以设置成存储单元,高速缓存(CACHE),或者是这两个的结合。L2 一 部分配置为 SRAM 时,映像入 C64 寻址空间,CPU 可以直接进行存取,L2 一部分配置为 CACHE,大小为 32KB,64KB,128KB,256KB 中的,任何被配置为 CACHE 的 L2SRAM 不处于存储器映像中,不能被存取。除了片内的 CACHE 外就是外部存储器,容量一般都会 满足要求。DM642 的 DMA

10、是为后台传输服务的,它可以独立于 CPU 工作和以 CPU 时钟 速度进行数据吞吐。CPU请求数据所需数据是 否在L1中NONO所需数据是 否在L2中向片外内存 请求数据YESYES将数据传给CPU将数据导入L1将数据导入L2图 3 两级缓存的访问原理在 JPEG 编码过程中,DCT 变换、量化、熵编码时存在着大量的数据交换,片内的存储有限使得大部分的程序代码和数据不得不放在片外。如图 3 所示两级 CACHE 的工作原理4, CPU 只对 L1 的数据进行访问,程序代码和数据必须经过存储器到 L2,L2 到 L1 的逐级搬 移才能被 CPU 访问。CPU 对于片外数据的存取速度较慢,对于需要

11、频繁访问的内存的处理 会浪费很多的时钟周期,限制了 JPEG 编码的速度。针对这个问题从两个方面进行优化,其一:将程序中频繁使用的数据存放在 L2 中,其次:使用 DMA 操作5,让处理器和内存存 取并行执行。 以下给出一幅 CIF(分辨率为 352x288)编码的优化实例。先将 YV12 图像分为 8X8 块,以 MCU 为单位从左至右,从上至下进行编码。每编码一个 MCU 单元,依次对亮度的 4 个 8x8 块和色度的 2 个 8x8 块进行 DCT 变化、量化、“之” 字型扫描和 Huffman 编码。在对亮度和色度进行量化和熵编码的时候需要调用 6 次量化表 和 Huffman 表,这

12、两个表在编码过程中频繁被调用,使用 DSP/BIOS 将这些表定位到 L2 中。同时将 YV12 图像的高划分以 MCU 为单位,二级 CACHE 配置为 128KL2SRAM,在 L2SRAM 中设置 2 个容量相等的缓存区 A 和 B。A 和 B 分别为一行图像数据的容量,大小 为 8.25K(352x16+176x8+176x8)/1024),首先读入一行 YV12 图像数据 8.25K(Y 分量 大小为 352x16Byte,U 分量大小为 176x8 Byte,V 分量为 176x8 Byte),CPU 从 L2 A 中读取 数据进行编码,编码的同时 DMA 开始从 SDRAM 中向

13、 B 中搬移数据,当 A 中的一行数据 编码完后,就编码 B 中的一行,同时 DMA 开始从 SDRAM 中向 A 中搬移数据。这样 A 和 B 就构成了一种“跷跷板”的结构。在任意一时刻,一个缓存在受 DMA 控制拷贝数据,另一 个缓存 CPU 控制处理数据,两个缓存区的状态都在不断的处理数据和拷贝数据间切换,这 样就实现了两个目的:(1)提高了数据访问速度,由于 CPU 访问的是 L2SRAM 的数据,速度明显高于直接 访问 SDRAM。(2)DMA 拷贝数据的开销很小,因为 DMA 的拷贝是与 CPU 处理数据并行的,节省 了数据在片内和片外的存储器的搬运时间。4 优化性能比较图 4 优

14、化后输出图像表 1 对 YV12 优化前后性能比较YV12PSNRDCT优化前28.23 帧/秒42.536优化后31 .51 帧/秒42.079CACHE优化前31 .51 帧/秒41.976优化后36.19 帧/秒41.735上图是 JPEG 编码算法在 DM642 上编码出来的 JPEG 图片。表 1 可以发现,使用 DCT快速算法和 CACHE 后,在编码质量没有降低的情况下,编码的性能总体上比优化前提高了8 帧/秒。5. 结束语本文对传统的 DCT 算法进行了改进,并在 DM642 中有效运用 DMA 控制方式和 CACHE,解决了图像数据存取和 CPU 之间数据传送的速度问题,提高

15、了 JPEG 编码的速率, 使 JPEG 编码算法可以满足嵌入式系统需要。为了进一步提高 JPEG 在 DM642 上的编码性 能,下一步的优化将从指令的角度来进行,例如使用内存打包指令等还有待研究。参考文献1 Pennebaker W E.et al. JPEG Still Image Data CompressionM,New York:Van Nostrand Reinhand 1993. 2 The Inplementatin of the 2D-DCTJ.http:/mvs.informatik.tu-chemnitz.de/jan/MPEG/HTML/DCT.html.20003

16、Panda P R,Catthoor F,Dutt N Det al. Data and memory optimization techniques for embeddsd systems J.ACM Transactions on Desgin Automation of Electronic Systems,April 2001,6(2)149-2064 李方慧,王飞.TMS320C6000 系列 DSPs 原理与应用M北京:电子工业出版社,20035 禹卫东,吴淑梅.ADSP2106x 中的 DMA 的应用J.电子技术应用,2000(6):69-73Realization of JP

17、EG Optimize Compression AlgorithmBased on DM642Wei Hongtao, Lu WeiSchool of Information Engineering, Wuhan University of Technology, Wuhan Hubei (430070)AbstractThe JPEG image compression algorithm is realized on DM642, and improved the traditional DCTtransform. According to the DM642 cache structure and DMA , zhe memory of program is optimized, and finally the optimization performance is discussed, the result of research in the article is that the speed of encoding has increased about 8 f/s(CIF)without reducing quality of jpeg.Key words: JPEG; DM642; DCT transform; cache structure; yuv

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1