基于FPGA的星载图像压缩系统

2010-09-17 07:53章勇勤苏贵波吴敏渊黄海波
电视技术 2010年4期
关键词:双口板卡缓冲区

章勇勤 ,苏贵波 ,吴敏渊 ,黄海波 ,艾 勇

(1.武汉大学 电子信息学院,湖北 武汉 430079;2.华北水利水电学院,河南 郑州 450011)

1 引言

随着卫星遥感技术的飞速发展,星载相机的分辨力不断提高,获得的图像数据量越来越大,卫星与地面之间通信的带宽就成为难以克服的瓶颈,导致大量宝贵的原始图像数据无法被地面接收处理。考虑到星载设备的空间、重量、功率、成本等限制苛刻,在不影响人们需要的视觉效果前提下,大多数卫星图像允许略微失真[1]。因此,采用图像压缩技术来减小数据量,缓解信道传输压力。由于遥感图像信息量大,压缩技术要满足实时性强、重构质量高、压缩比大的要求,必须采用高效低复杂度的编码算法来优化多媒体通信所需的带宽。星载设备对处理器芯片的抗辐射与耐高温、稳定性、功耗、速度等指标要求较高,DSP、微处理器等芯片目前难以满足实际需要,而现场可编程门阵列(Field Programmable Gate Array,FPGA)能够有效解决星载设备的技术难题,逐渐成为星载实时图像处理器芯片的主流选择。

以高效、简洁、快速、稳定和高保真压缩编码算法为目标,通过综合分析国内外已有的视频压缩编码标准,本文以具体工程项目为背景,提出了基于JPEG算法框架的压缩编码解决方案[2],采用改进的离散余弦变换(DCT),以及低功耗设计技术,并进行了以FPGA为核心硬件平台的研究与实现。

2 图像压缩原理

该系统结构框图如图1所示,反映系统性能的重要指标包括峰值信噪比(PSNR)、功耗、压缩比等参数。星载CMOS相机图像压缩系统按照具体功能分为CMOS相机板卡、FLASH存储电路、电平转换电路、CMOS相机控制器模块、FLASH控制器模块、图像分割模块、DCT变换模块、量化器模块、熵编码器模块等部分,其主要元器件为CMOS相机、W78M64V-XSBS、DS26LV31和 Actel公司的APA600芯片。图像压缩处理算法流程:首先把图像帧,如大小为640×512,其量化位数10 bit,分成8×8像素块,然后对每块做高保真DCT,DCT变模块把数据从空间域变换到频率域,从而去除数据的冗余度;量化器用加权模块产生对人眼优化的DCT系数;Z形扫描提取直流和低频分量有利于图像压缩;Huffman编码将量化的DCT系数的熵最小化,来完成图像的压缩,从而剔除数据冗余,删除极少视觉信息,利用空间特征进一步压缩数据,减少数字表示的数据量。

2.1 CMOS相机控制器

该系统采用具有CameraLink接口的CMOS相机,工作在其基本模式下。硬件系统上电后,CMOS相机控制器模块完成CMOS相机的帧分辨力、灰度级和曝光时间等初始化设置,若需要改变相机的参数,可通过串口命令来实现,当调节图像帧大小时,先设置窗口原点位置然后设置窗口宽度和高度。CMOS相机控制器把从图像传感器接收到的序列图像数据,根据缓冲区片选信号通过兵乓操作存入内部的双口RAM中,供下一步DCT处理,CMOS相机控制电路的原理图如图2所示。

图2 CMOS相机控制电路的原理图

2.2 离散余弦变换(DCT)模块

2D DCT变换具有可分离特性,可将它分解成一系列一维变换(行、列)进行计算。通常的8点的1D DCT并行运算需要22个乘法器,计算量较大,其蝶形算法流程如图3所示。

笔者采用改进的DCT变换,引入常数项k1=c2/c6,k2=c3/c1-1,k3=sqrt(2),对图 3 蝶形结构优化,把参数 c1,c4,c6提出,与JPEG标准推荐的亮度和色度量化表相结合制成自定义量化表,以供量化步骤使用[3-5]。

图3 1D DCT快速算法信号流图

改进的1D DCT快速算法结构简单,保真度高,减小了DCT系数量化误差带来的影响,能够实现无损变换,其性能优于整数DCT变换[6],并行运算仅需14个乘法器和24个加(减)法器,其数学关系表达式分别为

其硬件具体实现结构如图4所示,引入的8×8量化系数矩阵如表1所示。

图4 1D DCT改进的快速算法结构框图

表1 量化系数矩阵

图像分割模块把每帧图像数据按照8×8的像素块格式,通过乒乓操作从双口RAM缓冲区依次读出,不足部分用0填充,并送入DCT变换模块中的预处理8×8大小双口RAM缓冲区。对单色图像,分割后只有亮度(或灰度)图像块序列。而对彩色图像的处理,需要把RGB分量分别提取进行图像分割,把各个分量按照次序排放,分别为R成分图像块序列、G成分图像块序列和B成分图像块序列;或者从RGB转换成YCrCb空间,减少冗余度,提高压缩效率。对2D图像来说,DCT变换模块把接收到的8×8图像块通过2个1D DCT来实现,先根据行地址生成方式把每行8点从前级双口RAM缓冲区中取出送入1D DCT变换子模块中,待处理完成后将结果按列地址方式存入相应的双口RAM临时缓冲区,等每块内8行变换结束后,再按照行地址从临时缓冲区取出相应内容送入1D DCT变换子模块,待结束后将2D DCT变换系数送出,供Z形扫描和量化步骤处理,其具体电路原理图如图5所示。如果使用2个1D DCT变换子模块,虽然速度几乎提高1倍,但门数将迅速上升,同时还导致用于存放中间结果的RAM容量增大1倍,资源消耗较大。

图5 2D DCT、Z形扫描及量化电路原理图

2.3 量化和Z形扫描模块

DCT将8×8图像块从空域变换到频域,低频分量位于矩阵左上角,高频分量分布在右下角,F(0,0)代表直流DC系数,其他63个元素是交流AC系数,其中低频分量包含了图像的主要信息(如亮度),因此忽略高频分量,从而达到图像压缩的目的[9]。考虑用FPGA实现图像压缩算法时,而综合器一般不能对“/”和“%”运算符直接综合,故采用乘法运算来取代除法操作。该方案采用定点小数运算规则,JPEG标准中量化表为Q(u,v),本文选取量化矩阵Q赞(u,v)=round[2nP(u,v)./Q(u,v)],n=16,经2D DCT 变换后的系数为 F(u,v),量化后系数F赞(u,v)=F(u,v)./Q(u,v)=round[F(u,v).×Q赞(u,v)>>n],实际设计中根据数据要求的精度来对量化表修订。Z形扫描地址映射表如表2所示,量化矩阵如表3所示。如图5所示,每帧内8×8图像块的2D DCT变系数以每次8个系数共8次输出,在Z形扫描和量化模块中,以表2产生的地址方式和量化矩阵表3对系数进行扫描和量化,并把结果按照表2生成的地址方式存入后级双口RAM缓存中,同时纠正了2D DCT系数输出的转置格式,从而完成了2D图像数据转换为1D序列,供下级熵编码使用。

表2 Z形扫描地址映射表

表3 与地址映射表转置对应的改进量化矩阵

2.4 熵编码器设计

在Z形扫描之后,熵编码器模块从图5中后级双口RAM缓冲区中取出系数,对其进行编码,其熵编码电路的结构图如图6所示。熵编码器模块分别完成DC/AC系数查表,获得系数的范围AMP_SIZE与其反码AMP_VAL,以及 Huffman码字 HUFF_WORD和码长HUFF_SIZE,其中Huffman码表中码字的最大长度是16。DC系数有亮度和色度 Huffman码表各1张,AC系数同样有2张Huffman码表[3]。这4张表存储在相应的查找表中,其地址线10根,由 Y,DC,RUN_LEN和SIZE 4个端口控制,Y指示是亮度还是色度,DC指示是AC系数还是DC系数,RUN_LEN和SIZE合起来既是Huffman码表中的行程/尺寸。查找表的每个存储单元存一个 21位的信息,高5位指示Huffman编码后码字的长度,与端口HUFF_SIZE_OUT相连;低16位是Huffman编码的码字,且从最高为开始有效,与 HUFF_WORD_OUT相连。熵编码输出为码长LinkSIZE和码字LinkWORD,LinkSIZE的值是HUFF_SIZE与AMP_SIZE之和。而LinkWORD的值是先把AMP_VAL和HUFF_WORD末尾添零扩展为27位,然后AMP_VAL右移HUFF_SIZE个比特,再与 HUFF_WORD相或。这样就实现了行程/尺度的 Huffman码值与系数的反码连接。从 LinkWORD最高位起LinkSIZE个比特是有效位,然后通过并串转换输出二进制流。

图6熵编码电路结构图

顶层模块JPEGTOP负责将所有低层模块连接起来构成系统,对外接口模块设计最外围输入输出信号的时序控制。串行输出由帧同步、行同步、位时钟同步、门控信号和串行数据流共同协调来实现。在解码端,编码的二进制位流被Huffman解码,量化的DCT系数的2D数组被恢复。把这个2D数组乘以对应的量化矩阵,则每个系数被反量化。对反量化的数组进行DCT逆变换,就得到了近似的原始图像块,然后重构一整帧图像。重构图像块的误差依赖于量化的度量,它受规格化矩阵控制以及受DCT变换中余弦系数精度的影响。

3 实验结果与分析

在实验中选取灰度图像和彩色图像、检测板卡和解压缩显示软件等测试平台对图像压缩系统进行仿真,该检测系统工作流程:在PC机上VC应用程序将CMOS相机拍摄的图像通过USB2.0接口下传到检测板卡,检测板卡将图像码流转换为预定义的接口形式,传送给JPEG图像压缩板卡,经过压缩后的图像码流再传回给检测板卡,而检测板卡将其转换为USB2.0接口相兼容的形式上传到PC机,经主机应用程序解压缩后实现图像显示,通过比较原始图像和压缩后恢复的图像以及计算客观评价指标来验证图像压缩系统的性能。在实验仿真中,采用某单位提供的多帧遥感地图图像进行测试,选取原始灰度图像area.bmp和彩色图像earth.bmp和经过本文方法压缩后的JPEG图像的效果对比,其压缩比(Compression Ratio,CR)分别为17.81和18.17。采用CMOS相机对多种典型场景拍摄的图像进行压缩,实际测量的压缩比远大于10.5,峰值信噪比大于36 dB,满足设计技术指标的要求,抽取部分实验结果如表4所示。

4 总结

笔者对CMOS相机图像压缩算法原理及实现进行了详细的论述,提出了基于FPGA平台的设计方案,并从软硬件联合优化的角度给出了具体解决办法。采用高保真DCT变换,有效地降低了计算复杂度,可实现图像高精度的重构。由于整型DCT变换的粗略近似性,同时增加了量化复杂性,本文中的高保真度快速DCT变换性能优于整数DCT变换,完全可以胜任H.264标准的要求[6]。量化步骤中除法运算由乘法和移位操作实现,Z形扫描通过查找表来完成。在实验中,用Verilog HDL语言进行RTL级描述在Actel公司芯片APA600经过测试验证该系统具有抗辐射、稳定性高、功耗低、高压缩比、效率高、速度快等优点,满足实时图像压缩处理的要求,在保证图像质量的前提下,减少了资源消耗和提高了处理速度。针对图像压缩算法的硬件实现,必须精心考虑逻辑结构和功能时序,结合FPGA内部资源的特征,设计出高性能、高可靠、低功耗的星载设备,是下一步的研究方向。

表4 CMOS相机图像压缩测试结果

[1]文涛,黄俊伟.用ARM926EJ-S处理器实现JPEG图像软件解码[J].电视技术,2008,32(7):31-33.

[2]ISO/IEC10918-1,Informationtechnologydigitalcompressionand coding of continuous-tone still image-requirements and guidelines[S].[S.l.]:CCITT,1993.

[3]AN S,WANG C.Recursive algorithm, architectures and FPGA implementation of the two-dimensional discrete cosine transform[J].IET Image Processing,2008,2(6):286-294.

[4]RIZK M R M,AMMAR M.Low power small area high performance 2D-DCT architecture[C]//International Design and Test Workshop,Cairo,Egypt:[s.n.],2007:120-125.

[5]WAHIDKA,DIMITROVVS,BADAWYW,et al.Error-free arithmetic and architecture for H.264[C]//Asilomar Conference on Signals,Systems and Computers.Pacific Grove,CA:[s.n.], 2005:703-707.

[6]MALVAR S,HALLAPURO A,KARCZEWICZ M,et al.Low-Complexity Transform and Quantization in H.264/AVC[J].IEEE Trans.Circuits and Systems for Video Technology,2003,13(7):598-603.

猜你喜欢
双口板卡缓冲区
双口形式的戴维宁定理在电路分析中的应用
基于PCI9054的多总线通信板卡的研制
基于FPGA的多通道模拟量采集/输出PCI板卡的研制
基于网络聚类与自适应概率的数据库缓冲区替换*
Matching mechanism analysis on an adaptive cycle engine
一种基于光纤数据传输的多板卡软件程序烧写技术
关键链技术缓冲区的确定方法研究
双口RAM读写正确性自动测试的有限状态机控制器设计方法
初涉缓冲区
双口RAM在无人机三余度飞控计算机数据交换中的应用