>
摘要:描述了在使用32位的嵌入式处理器设计远程图像采集系统时,为了利用处理器的强大处理能力以实现图像数据的软件压缩,对JPEG算法进行了改进,使得在保证图像质量的前提下,提高图像的压缩比,以期获得更快的网络传输速度。
关键词:嵌入式;图像采集;JPEG算法改进
引言
目前,嵌入式系统已逐渐成为后PC时代的主导,但当低端的嵌入式系统无法满足信息化、智能化、网络化时代的更高要求时,32位嵌入式系统应运而生。图像采集系统正从模拟采集向数字采集发展,其中数字图像采集系统中的嵌入式图像采集系统由于其优越的性能越来越受到人们的关注。对于家庭视频监控这样的应用,并不需要很多的功能,只要简单的视频传输和存储就够了,体积也要尽可能的小。正是基于这种考虑,笔者设计了一款基于以太网的嵌入式视频监控系统,该系统具有视频图像采集、压缩、解压、传输和存储等功能。在整个系统中,由于图像数据需在互联网上传输,因此传输的数据流量的大小对系统性能的影响是非常大的,因此采用了改进的JPEG算法使得在保证图像质量的情况下,尽可能的提高压缩比,以实现该系统互联网监控的功能。并且由于使用嵌入式系统,使该系统体积小巧,功能简化,而且使用免费的开源的操作系统ARM-Linux,使系统的成本大为降低。
图像采集系统的构成
图像采集系统主要由4部分构成,分别为图像采集、图像压缩、图像传输和图像显示。图像采集部分由数字摄像头、USB通道和嵌入式处理器构成,其中数字摄像头用来完成图像数据的采集,USB通道将数据传送至处理器进行处理;图像压缩部分主要是由软件完成,将摄像头采集的BMP格式的图像数据通过改进的JPEG算法压缩为JPEG格式的图像数据;图像传输部分则完成由图像数据由本地向远程的传输;图像显示部分则可以将采集到的图像数据在远程的浏览器上显示出来,供用户浏览,保存,编辑等等。该系统如图1所示。
图1 嵌入式图像采集系统框图
图像采集系统中的压缩算法的改进
在系统中采用了ARM920T核的S3C2410嵌入式处理器。为了尽可能的降低成本,对采集的图像采用了软件压缩的方法,同时为实现在保证图像质量的情况下尽可能的提高压缩比,对原有的JPEG算法进行了改进。基本的JPEG算法是由以下步骤完成:①通过离散余弦变换(DCT)消除数据冗余;②使用量化系数矩阵对离散余弦变换系数进行量化;③对量化后的系数进行编码,使其熵最小,熵编码通常采用huffman可变字长编码。
在JPEG图像压缩的技术中,DCT占据重要的位置,因此对它的改进对于整个算法来说,有着非常重要的意义。在JPEG算法中通常是先将图像分成一个个8×8的图像子块,对每一个图像子块进行离散余弦变换,所使用的二维离散余弦变换公式如下:
其逆变换如下:
其中:
在离散余弦变换中,由于要将压缩的图像分成8×8的子块,对于图像压缩会带来块效应,即对相邻的图像子块进行独立的数据处理时会带来的失真,从而使块与块之间的边界不连续;并且相邻块之间的冗余数据也是不容忽视的。经过实验发现,如果能设法使变换后的图像子块的能量下降速度加快,就可以减少块效应并可能使细节部分清晰。正是基于这一点,通过实验发现可以通过收敛性良好的Chebychev多项式来拟合离散余弦变换,使得变换后的图像子块的能量下降速度加快,从而提高图像数据的压缩比,同时还能够改善图像的块效应。这样,在离散余弦变换中如何应用Chebychev多项式来计算就成为问题的关键。
首先离散余弦变换可以通过离散傅里叶变换来实现,其公式如下:
其中Re()为求实部,u,v的取值范围是0~7。并且对于二维的离散傅里叶变换可使用连续的一维的傅里叶变换来实现,即将傅里叶变换核
写成
其中在8×8的图像子块中M,N均为8。在用离散傅里叶变换计算离散余弦变换时需要将序列扩展为偶序列,而对于偶序列的函数可以表示为傅里叶级数:
令cosx=t,由三角函数的恒等变换得:
cos2x=2cos2x-1
cos3x=4cos3x-3cosx
……
从而可得:
由此可知,括弧中的因式恰好满足Chebychev多项式T(n,t)=2xT(n-1,t)-T(n-2,t)。该多项式具有良好的递归性和正交性,并且其展开式的收敛性良好,可以通过一般性的幂函数
来说明。因为函数e-x在(-∞,+∞)内收敛,所以对于x在任意区间[a,b],均可以通过公式y=(2x-b-a)/(b-a)将其映射到[-1,1]。当我们取前4项时使用Cheby2chev多项式展开的最大误差为0。0073444,上式的最大误差为0。0516152,因此用它来表示函数可以使用较少的数据项,达到较高的精度,从而在变换域可以选择更少的系数构成量化码表的编制,减少数据的传输量,提高图像的压缩比。
实验结果及分析
图2中的a)和b)分别是算法改进前后的图像的比较。改进前对一幅230456字节320×240的BMP图像,进行压缩后得到一幅26951字节的JPEG图像,压缩比约为8.5∶1;而改进后得到的一幅8107字节的图像,压缩比约为28∶1,可见压缩比大大提高。
a) 算法改进前的压缩图像 b) 算法改进后的压缩图像
图2 改进前后压缩图像的比较
结论
对于32 位的嵌入式系统,在应用于图像采集,特别是远程的图像采集时,因处理器足以完成复杂的运算,可以使用改进的JPEG算法,以获取更高的图像压缩比,从而提高图像数据在网络上的传输速度。