微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 基于LPC2292的手持JPEG图像显示器设计

基于LPC2292的手持JPEG图像显示器设计

时间:10-28 来源:微计算机信息 点击:

1510)的码字在Huffman表中没有出现,则在2张预查表中,最后一个数据均为0,构造的预查表如下:

码长表

{2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 0 }

真实值表

{0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 0}

预查找解码时,收到一串2进制数据,我们先将前4个bit(HUFF_LOOKAHEAD = 4)的数据读入移位缓存,假设为01012(510),则我们在2张预查表中分别读取序号为5的数据(第6个数据),得到码长为3,真实值为1,因此解码得到第一个真实数据为1,丢弃缓存中前3个bit,从接收到的数据流中重新移入3个bit的数据,与之前的最后一位1组成一个新的4bit数据,进行下一次预查找解码。

3.2.2 反量化及IDCT变换的实现

在进行IDCT变换前,先要将数据进行反量化及重排列处理。将8×8块中的数据对应的乘上量化表中的系数,再将64个数据进行Z字型的重新排列,用于后面的IDCT变换。

IDCT可以用下面的计算公式来实现:

其中x,y=0...7 当u=v=0时,C(u)=C(v)=0.5,其他情况 C(u)=C(v)=1

由于ARM7芯片在数据处理方面性能远不及DSP,如果简单按照这个公式来计算IDCT变换,则会因为运算量太大而严重影响解码速度。因此,文献[2]中提到了IDCT变换的另一种实现算法。该算法的思想是将二维8×8数组的IDCT转换为行和列的2个一维数组的IDCT,进而再转换成一系列简单的加减法及与常数相乘的乘法运算,大大减小了运算量。

3.2.3 色彩转换的实现:

经过IDCT变换后,JPEG数据被解码成YCrCb信号。图像数据要在液晶显示器上显示,还需要进行最后一步变换,即将YCrCb信号转换成RGB信号,两者对应的转换公式如下:

R = Y + 1.402 ×(Cr-128)

G = Y - 0.34414×(Cb-128) - 0.71414×(Cr-128)

B = Y + 1.772 ×(Cb-128)

其中,R、G、B、Y、Cr、Cb都是0~255的无符号数据。

公式中有浮点数的乘法运算,为了提高性能,软件事先将1.402×(0~255)、0.34414×(0~255)、0.71414×(0~255)以及1.772×(0~255)的结果制成表格,计算时只要查表即可得到结果,免去了由于浮点运算而占用的大量处理时间。

4 结论

由于采用了Huffman预解码查找表,用简单的查表语句代替了Huffman解码过程中大量繁琐的循环和移位操作;优化的IDCT算法及色彩转换算法,减少了大量复杂的乘法运算;提高了解码的效率,大大压缩了解码所需的时间,使得原本复杂的解码算法在数据处理能力并不出色的ARM7芯片上得以很好的实现。

设计完成的手持JPEG图像显示器如图3所示,其已经在自行设计的电缆排管疏通监视机器人项目中取得了很好的效果,在320×240的液晶屏上显示的JPEG解码图像效果如图4所示:

图3 手持JPEG图像显示器

图4 JPEG显示器图像显示效果

本文作者创新点:将计算量庞大的JPEG解码算法成功地在数据处理性能并不出众的ARM7系统上实现了移植,并由此设计完成了手持式彩色图像显示器。

参考文献:

[1]邢赛鹏,平西建,詹杰勇.JPEG图像数据格式简明分析[J].微计算机信息,2005,12-3:166-168

[2]魏忠义,朱磊,基于DSP的JPEG图像解码算法的实现 [J],陕西 西安,2005年

[3]Information Technology Digital Compression And Coding Of Continuous-Tone Still Images Requirements And Guidelines CCITT Recommendation T.81

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top