JPEG2000编码器IP核设计,包括具体算法与结构
本值都会量化为0。
4、EBCOT
量化后每个子带的小波系数,在编码之前会分成矩形的编码块。编码块的大小可以任意,但是要满足两个条件:1)编码块的宽和高都必须是2的幂次,2)块大小不能超过4096。一般选择大小为64*64。每个编码块将进行接下来的Tier-1编码,即位平面编码。
Tier1
每个位平面提供3个通道编码,根据重要性,依次是重要性传播通道、幅度细化通道、清除通道。位平面上每个元素因其不同情况,进入不同的通道进行编码。最终每个通道输出编码符号。通道数据再进过基于上下文的算术编码。
重要性传播通道的编码过程:
如果一个样本还没有被发现是重要的,并被预测为有可能是重要的,那么这个样本的重要性就在这个通道中编码成一个二进制标号。如果这个样本的确是重要的,紧接着要对它的符号进行编码,同样编码成一个二进制标号。
幅度细化通道的编码过程:
如果一个样本在之前的重要性传播通道中被发现是重要的,那么该样本的第二位将在这里被编码成一个二进制标号。
清除通道的编码过程:
清除通道按顺序每次处理一个垂直扫描列,直至样本处理完毕。如果垂直扫描的列中有4个样本通过清除通道(即全部样本),我们就要知道4个样本的所有重要性信息,而且如果4个样本都被预测为不重要的话,我们就要进入一个特殊的模式:集合模式(aggregation mode,就是行程编码)。在这个模式里,要记录在垂直列上的最前面几个不重要样本的个数。因此,在这个垂直列上的重要性信息在这个模式上将不被记录,列中剩下的样本将像重要性传播过程那样来编码。
Tier2
在Tier-2中,编码通道的数据将被打包成数据包,这些数据包随后输出成最终的代码流。如果保留所有的编码数据,就是无失真压缩。为了满足一定的压缩比,会截断一些不重要的通道数据,为了达到不同的渐进传输方式,打包的顺序也会不同。
码率的伸展是通过(质量)层来实现。每个切片的编码后数据都被分成L层,那些包含了最重要信息的编码通道数据被放在低层中,而那些包含了更多细节的编码通道数据被放在更高的层中。通过解码,重构出来的图像质量通过每一个层数据的叠加来提升。率控制机制就必须决定哪些层包含哪些通道数据。率控制依靠编码器预先计算出的每个通道对于码率的贡献,和每个通道相关的失真率,选择那些能降低失真的通道,直到数据量达到预先要求。
5、编码流结构和文件结构
为了对图像的编码后数据做一个规范,编码后的数据要组织成一个代码流,包括主文件头、切片文件头、切片主体、主尾部记录这几部分。
一个代码流提供了解码图像时所需要的最基本信息,我们还需要知道图像的其他信息(如版权、产地等)。为了以上的数据能被显示出来,编码器需要一个额外的文件格式。文件结构由不同等级的属性框组合而成。
五、硬件实现
5.1 目前几款主流JPEG2000编码器实现现状
JPEG2000的特性包括:
有损和无损压缩
图像片大小(Tile Size)
硬件资源占用
像素深度
DWT滤波器类型(5/3 或9/7)
感兴趣区域选择(ROI)
码率控制方案
码块大小(CodeBlock Szie)
表一介绍了几款JPEG2000编码器的特性:
表一 4款JPEG2000编码器的参数
5.2 本项目实施方案
1、通过已有的JPEG2000编码器的实现来看,该IP核设计规模较大,以Barco Silex的BA112JPEG2000E(编码器IP核)的资料来看(见下表),使用Xilinx XC2VP30-6实现设计,使用了13056个Slices,两个时钟(101MHz和80MHz),66个RAMB16,2个DSP blocks。因此本项目希望申请XUPV5-LX110T作为硬件开发平台,并且开发板上丰富的外设资源,为设计成果的验证提供了很好的支持。举例来讲,待设计完成可以搭建如下的测试方案:数字CCD摄像头将图像采入,在MCU的控制下传入FPGA,在Contoller的控制下,裁剪、填充、色度变换后存入SDRAM里缓存,再依次读入JPEG2000 Encoder处理,编码后结果由MCU控制下通过USB控制器传入PC机分析。
表二 BA112JPEG2000E的技术参数
2、方案初步决定由利用Xilinx提供的免费IP编写部分模块,加快设计的进度。但由于IP核的Verilog或VHDL代码不开源,考虑可移植性,若时间充裕逐步重新编写该部分编写的模块。根据现有的软件条件,拟用C语言和Matlab做算法仿真,ModelSim软件做功能仿真及时序仿真。
5.3 DWT部分的硬件结构
经过这段时间的调用,阅读文献,决定采用"High-Speed VLSI Implementation of 2-D Discrete Wavelet Transform",Chao Cheng and Keshab K. Parhi文中描述的
- 如何通过开源API进行DSP视频处理(02-15)
- 一种输出格式可控的多码率LDPC编码器实现(11-06)
- 基于DM365的视频编码器的硬件设计(10-15)
- 音视频SoC测试要求与应用介绍(07-20)
- H.264在ADSP-BF561上的实现与优化(05-27)
- 一种简单串行鼠标控制的单片机实现(03-19)