高保真实时准动态图像采集压缩和远程传输平台的研究与实现
图像解压缩与压缩过程正好相反,即先将压缩的函数数据作行程解码和哈夫曼解码,然后进行反量化,并据此进行IDCT变换。如果此帧是关键帖,,则直接将这个宏块重组即得出还原后的图像;否则,根据运行矢量将各宏块的数据与上一帧进行组合才得出不定期原后的图像。由于解压缩不需要分析图像和网络的情况,也不需要考虑压缩比和压缩质量,只是简单地将图像还原,所以程序比较简单。
通过分析和测试表明,格式转换、对关键帧和非关键帧离散余弦变换DCT、对非关键帧的帧间压缩是最重要最耗时的环节。为此,在设计中对这些环节进行了优化。
具体讲,在格式转换、DCT变换中,一是在采集到的RGB色彩空间图像到压缩算法视频输入格式CIF变换中,用整型算法和移位相结合的优化转换函数代替速度较慢的浮点运算;二是在关键帧和非关键帧的DCT变换中,采用零系数预测策略对DCT变换的输入数据分类,节省了大量无效运算;三是采用多媒体处理指令集MMX实现DCT变换,大幅度提高了运算速度。
此外,为了实现良好的帧间压缩,比较了两种不同的压缩方式。
第一种方式是以象素为基础,首先将其与上一帧作差,得到一个稀疏矩阵。在作差的过程中,采用小范围匹配的方法去掉一部分噪声,然后采用优化的行程编码得到最后结果,并把当前帧保存在指定的内存区,作为下一帧作差的参考帧。
第二种方式是以宏块为基础的运行补偿方式,首先计算运动矢量,然后采用行程编码和哈夫曼编码。用运动补偿技术既可以达到较高的压缩比又有相当好的图像质量。
对于第一种以象素为基础的编码方式,在保证较高的帧频和压缩比的情况下,图像质量好。而对于第二种以宏块为基础的运动补偿编码方式,图像质量稍差,但压缩比较高,适用于数据传输率较低的情况。
为吸收二者的长处,笔者在对H.263源程序分析的基础上进行了优化,采用混合压缩编码方案。此方案将上述两种方式结合起来,从而使系统有效地适用于Internet传输。因为远程站点之间通过Internet进行传输时,信道的数据传输率不是固定的。所以,系统中通过信道测试反馈信息改变量化时的步长,从而调节视频信息的数码率,以便更好地适应信道传输率的变化。
优化方案的思想是:通过传输模块反馈回来的信息,得知当前网络的传输速率,以此来调整压缩算法的各个参数,即压缩质量、每秒帧数等,获得当前最好的帧率和质量。
具体从两方面实施:一是对帧内压缩方法进行优化;二是对帧间压缩方法进行优化。
对帧内压缩方法的优化主要通过改变压缩质量的参数来调节图像质量和压缩比。
对帧间压缩方法的改进是通过改变频率、关键帧间的距离调节传输速率。改变每秒采集和传输图像的数目,以改变传输数据的大小。帧间压缩要用到运动补偿,其关键在于两帧之间的差别大小。如果图像只有微小的变化,那么经过作差后压缩效果较好;如果图像变化很大,那么经过作差后压缩效果较差。为充分利用运行压缩的特点,根据图像变化的大小来调节关键帧间的距离。在图像变化不大的情况下,非关键帧数据较少,此时拉长关键帧间的距离既可以低传输率,又不影响图像的质量;在图像变化较大的情况下,非关键帧数据较多,此时缩短关键帧间的距离,以增加运动补偿的效果。
3.3 用UDP和RTP实现图像传输并进行实时优化
视频图像的实时传输有如下特征:
·数据量大,尤其是高保真活动图像的数据量更大,从而带宽要求高;
·实时性要求高。
上述特点使视频图像传输对传输环境提出很高的要求。但另一方面,图像数据包在少量丢失情况下不影响还原质量。为此,采用建立在UDP基础上的实时传输协议RTP。
用UDP协议进行数据传输的优点是不需要建立连接,传输速度快。缺点是容易丢失数据包,而且数据包的顺序容易混乱。
RTP是基于UDP的网络传输协议,编程时通过时间标签(Time-temping)机制、信息序列编号(Sequence Numbering)机制和有效数据类型标识(Payload Type Identifier)机制的联合使用,在允许的延迟范围中保证数据的实时传输质量,对于少量信息包的丢失,则采用补偿方法解决。时间标签用来标明实时数据块生成时间,接收方可据此正确排列数据接收顺序,并保证实时数据传输同步,一帧图像数据组成的RTP信息包有相同的时间标签。序列编号通过配合时间标签设置,同一帧图像的RTP信息包有相同的时间标签,但有不同的序列编号。有效数据类型标识用来定义各种数据压缩方法,并可通过手动或自动方式动态调整,在信息拥挤时可提高压缩比。
本设计中,对实时可靠性进行了优化,具体程序设计中,采用了如下策略:
·建立一条以UDP作为传输协议的数据通路,在传输时把压缩过的视频流打包,打包时考虑到两个因素:第一,某些压缩的关键帧会很大;第二,关键帧与非关键帧数据量相差很远。这两个因素可能导致数据包乱序,为此,不能