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

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

《JPEG 压缩算法在 DM642 上优化及实现》由会员分享,可在线阅读,更多相关《JPEG 压缩算法在 DM642 上优化及实现(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 表的支持)。- 1 -块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 优化后输出图像表 1 对 YV12 优化前后性能比较YV12PSNRDCT优化前28.23 帧/秒42.536优化后31 .51 帧/秒42.079CACHE优化前31 .51 帧/秒41.976优化后36.19 帧/秒41.735上图是 JPEG 编码算法在 DM642 上编码出来的 JPEG 图片。表 1 可以发现,使用 DCT快速算法和 CACH

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号