首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[推荐]基于ADV212的图像压缩系统设计

[推荐]基于ADV212的图像压缩系统设计

中国科学院西安光学精密机械研究所 中国科学院研究生院
刘永征 刘学斌 胡炳木梁 段晓峰

引言

在早期的压缩技术,如JPEG标准,已不能满足对压缩图像质量进一步提高的要求背景下,研究硬件实现最新压缩标准JPEG2000(ISO/IEC15444-1图像压缩标准)变得意义重大。ADV212是目前市场上用于硬件实现静态图像压缩最新算法标准JPEG2000的图像压缩编解码芯片,适用于多种视频和静止图像格式的数据压缩处理。

ADV212的编解码原理及工作过程

目前,通过专用图像压缩芯片构建压缩系统一般有两种做法:一种是DSP+专用芯片+CPLD,其中,CPLD用于完成逻辑控制,DSP用于辅助数据处理;另外一种是FPGA+专用芯片,FPGA用于逻辑控制和辅助数据转换。比较而言,后者在灵活性方面更有优势。这里采用后一种做法。

ADV212主要由像素接口、小波变换引擎、熵编解码器、嵌入式处理器、存储器系统、内部DMA引擎和外部DMA引擎等组成。图像和像素数据输入像素接口,采样值则经过隔行扫描传输到小波变换引擎中。在小波变换引擎中,每个图块或帧将通过5/3或9/7滤波器分解成许多频率不同的子带,对应的小波系数写入内部存储器中。熵编解码器将小波变换后的系数通过算术编码为符合JPEG2000标准的数据。内部DMA引擎用来完成存储器之间以及各模块和存储器之间的高带宽、高性能传输。

依据JPEG2000的编码流程,结合数据流可将ADV212的压缩编码过程划分为小波分解、熵编码、码流存储、码流输出四个过程。

小波分解

像素或视频数据通过VDATA总线输入,或者像素数据通过HDATA总线进入芯片。在这两种情况下,视频数据/像素数据都要通过像素接口,然后在对视频图像数据解交错后送往小波变换引擎。进入小波变换引擎的数据被分块或分帧,再用5/3定点运算或9/7浮点运算滤波器将其分解到不同的子带上。低频子带是对原图像的近似,高频子带则反映图像的细节。滤波器对每一块或帧图像数据可执行高达6级的小波分解,分解后的小波系数被写入内部存储器。

数据压缩

小波变换后的系数通过3个熵编码器后被分解成码块单元,对这些码块单元进行独立编码产生基本码流,再按照率失真进行基本码流长度截取后按不同要求组织成数据流。对码流的处理是在码块的基础上进行的。对数据的压缩主要通过以下手段实现:

量化:在有损压缩情况下,码块的位流被截断;在无损压缩情况下,码块的位流不用截断。

率失真最优化:量化的数量依赖于对输出率或输出质量的要求,三个熵编码器将进行失真计算以找到最佳的率失真性能。

上下文建模:这个过程是根据每个系数的重要性来构造成上下文模型,然后进行数据打包和分层,形成JPEG2000标准的数据码流。

码流存储

熵编码形成的JPEG2000标准的数据码流被存入内部存储器中。JP2格式的文件由一种被称作"压缩信息盒"(box)的二进制数据结构单元组成。这种信息单元在物理连接上有点类似列车,车厢中压进的是所要传递的信息。而且,一个压缩信息盒中可包含有其他压缩信息盒。每个压缩信息盒长度可变,但都具有如图1所示的结构形式。

其中,LBox部分用来说明该压缩信息盒的长度,其表现形式是32位的无符号二进制整数;TBox部分用来说明信息盒中DBox部分信息数据的类型,包括3大类:标准定义类、添加知识产权信息类、添加开发商指定信息类。其表现形式也是32位无符号二进制数;XLBox用来说明延伸了的信息盒长度,即信息盒实际的长度,该部分包含了LBox和TBox在内的所有信息;DBox部分存放目标数据,数据格式与前面的TBox中指定的信息数据的类型有关,不同的类型对应不同的数据格式。 码流输出

JPEG2000码流通过高速总线进入编码FIFO,以缓冲内部高速总线和低速主机接口。码流数据可通过共用的读写存取协议(CS,RD,WR,ACK,ADDR)从主机接口输出,或者通过DREQ/DACK协议由外部DMA控制器协调下的外部DMA引擎输出。

FIFO主要用于缓冲内部高速总线和低速主机接口。像素FIFO专用于存储像素或分量数据。它用在未压缩像素数据从HDATA总线输出的情形下,此时,像素数据从HDATA总线经像素接口到达像素FIFO。

编码FIFO用于缓冲压缩数据。特征FIFO用于缓冲压缩特征数据,例如失真、失真范围,或字长;辅助FIFO可用于缓冲压缩其他的各种数据。

压缩系统的总体考虑

ADV212芯片接口灵活,在数据处理量大的场合,可进行多片组合同步处理。构建压缩系统首先考虑所需ADV212的数量,这也是系统的总体考虑因素。

数据吞吐率

数据吞吐率=有效垂直分辨率子行椒直媛首像素分量数壮÷?单位:MSPS)。对VDATA总线,在150MHz主频下,最大输入吞吐率为65MSPS。

每幅图像的采样数

单片ADV212每幅图像的采样点数限于1.048M个采样点。图像采样点数=有效垂直分辨率子行椒直媛首像素分量数(单位:MSPS)。例如,在PAL视频格式下,YCbCr在4:2:2格式下每个像素点采样两次。则标准精度NTSC每场含有720?88?=414720个采样点,小于1.048M个采样点,故只需一片ADV212即可。

对静态图像压缩,ADV212单分量图像支持最大长宽为4096个像素点的图像,更大的图像必须先分块再处理。

图像压缩系统结构

图2是图像压缩系统的结构图,本系统中使用的FPGA为Virtex II Pro系列中的XC2VP40,它实现系统的主要控制。其利用IP植入技术,无缝嵌入了32位的IBM PowerPC 405 RISC处理器内核和Rocket IO多路吉比特串行收发器MGT(Multi-Gigabit Transceiver)。

PROM采用XQ17V16存储FPGA的配置程序,6片SDRAM用来存储编码过程中的数据。ADV212专门负责编码FPGA递交的图像数据。参照数据手册推荐,将ADV212入口数据宽度和出口数据宽度都设置为10bit。

系统与外部数据交换采用CompactPCI(简称CPCI)总线,它读写速度快、性能稳定,支持热插拔并易于扩展,可同时支持多达256个的标准CPCI总线设备。

本系统中图像数据经CPCI总线读入并经FPGA缓冲后,交给ADV212进行压缩编码,编码后的码流数据经FPGA缓冲后从CPCI输出。FPGA除了完成对ADV212的输入/输出数据进行控制外,还完成CPCI总线的控制协议。

ADV212的工作模式是在初始化固件中通过写寄存器的状态字来设定的,大小约为32KB的固件程序以后缀为*.sea的格式存在,在本系统中通过USB接口下载到ADV212的间接存储器中,其地址段为0x00050000-0x0005EFF,数据宽度32bit。采用C语言的ADV212程序编码流程如图3所示。

系统开始工作前,要确保ADV212加载了正确的固件,在FPGA主控程序中通过四个步骤来实现:第一步是向外部中断使能寄存器中写入0X0400来屏蔽软件中断0位;第二步等待到中断引脚IRQ被拉低,第三步检查外部中断标记寄存器的EIRQFLG[10]位是否被设置,第四步从软件标记寄存器中读应用标识,如果读到的是0XFF82,则说明固件加载正确,系统可以开始工作。

干涉图在压缩后,如果丢失信息过多,或是丢失了部分重要信息,则无法复原出真实的光谱。利用干涉成像则是利用目标的特征光谱信息进行目标识别和反伪装。一般认为直接干涉图压缩很难实现较大的压缩比,故该系统的一个任务就是探讨JPEG2000用于直接干涉图压缩的可能压缩比大小。

测试试验结果

用该系统对国际标准图片lena进行压缩的测试,在压缩比为4:1和8:1下生成了jp2格式的图像文件,验证了硬件系统的可用性和正确性。其次,对大量的干涉图进行压缩和比对,对比对结果的分析认为,系统在保留足够干涉信息的前提下,干涉图像的数据量得到了一定程度的压缩,表明该系统可用于干涉图压缩。

系统之所以能对普通图像实现比干涉图大的压缩比可以做到比干涉图高,主要有两方面的原因:其一是ADV212所实现的JPEG2000压缩主要针对的是二维空间图像,所以能在对普通二维图像的压缩上表现出其优越性,而干涉图是包含有光谱维信息的准三维图像(另一维是光谱信息),直接将二维图像压缩方法应用到干涉图,没有利用另外一维的相关性,其二是干涉图要保留光谱维信息,不允许压缩时损失过多细节信息,也即干涉图的直接压缩倾向于无损或近无损压缩。

结语

基于FPGA+ADV212结构的图像系统具有可靠性高、调整灵活、压缩信号易恢复等优点,可以应用于非线性编辑系统、图像采集处理系统等。随着JPEG2000的广泛应用,专用图像压缩芯片ADV212必将被越来越多地应用到视频和图像压缩方面的各种编解码系统中。

虽然没能仔细看,但是很精彩。
活到老学到老永不满足
返回列表