jpeg编码器IP设计计划书.docx
《jpeg编码器IP设计计划书.docx》由会员分享,可在线阅读,更多相关《jpeg编码器IP设计计划书.docx(17页珍藏版)》请在冰豆网上搜索。
![jpeg编码器IP设计计划书.docx](https://file1.bdocx.com/fileroot1/2023-2/28/9611888e-bcac-4c02-be0a-b4bc2198bba1/9611888e-bcac-4c02-be0a-b4bc2198bba11.gif)
jpeg编码器IP设计计划书
JPEG2000编码器IP核设计
计划书
一、应用前景
数码照相机、数字监控系统、数字扫描仪,网路传输、无线通讯、医疗影像。
二、项目背景
在过去的十几年来,高质量图像的应用场合越来越多。
但是数字图像的存储和传输的高额费用成为普及其发展的最大障碍。
由此对图像压缩编码的研究提出了很高等要求。
早在1991年,国际标准化组织(ISO)和国际电信联盟(ITU)就制定了静止图像压缩标准JPEG(JointPhotographicExpertsGroup)。
该标准使用离散余弦变换(DCT)作为其核心编码,在中高码率(大于0.25比特/像素)对于连续色调的静止灰度或彩色图像提供了较好的压缩性能。
目前JPEG标准广泛用于数码相机,数字扫描仪等场合,取得了巨大的成功,商用芯片也已经很成熟。
然而随着数字视频捕捉设备和数字相机的普及,以及高清晰度电视(HDTV)和可视电话的应用,对图像压缩编码的要求越来越高,再加上JPEG在低码率下严重的“方块效应”等缺点,新的标准JPEG2000应运而生。
JPEG2000是一种新的静止图像压缩标准(代号ISO15444),于2001年3月正式发布。
JPEG2000的目标是创造一个新的图像压缩系统,能够用于不同类型(双色,灰度,彩色,多基色)、不同特性(自然风景,科学图像,医学影像,遥感图像,文本,绘制图等等)的静止图像,并且在一个统一的体系下允许不同成像模型(客户端/服务器,实时传送,图像图书馆档案,缓冲与带宽受限等等)。
JPEG2000编码系统能够提供低码率条件下(码率小于0.25比特/秒)当前标准JPEG更佳的率失真性能和主观图像质量,同时不牺牲其它方性能。
JPEG2000包含下列优于JPEG的特性:
1、低码率压缩:
当前标准,如JPEG,在中高码率提供较好的率失真性能,但在低码率(如低于0.25比特/秒情况下的高分辨率灰度图)失真严重,主观上不可接受;
2、无损与有损压缩:
当前所有标准都不能在单一码流内提供无损和有损压缩;大图像:
当前JPEG标准不能直接压缩规模大于64K的图像,必须进行拼接;
3、单一解码架构:
当前JPEG标准包含44种模式,其中很多是面向特定的应用而不被大多数JPEG解码器使用。
单一解码架构将使应用程序之间易于交换数据;
4、噪声环境下的传输:
当前JPEG标准提供在间断处重新开始的特性,但发生错误时图像质量变得很差;
5、计算机图形:
当前JPEG标准是为自然风景优化的,在计算机图形上性能不佳;
6、复合文档:
当前JPEG标准很少用于复合文档,因为在双色(文本)情况下性能低下。
除此以外,JPEG2000还包含了很多新的先进特性,可以满足高端应用和新的应用的需求,同时它的应用还可以扩展到某些当前并不使用压缩技术的领域,主要包括如下方面:
1、JPEG2000有一个很好的优点就是误码稳定性好(RobustnesstoBitError)。
因此使用JPEG2000的系统稳定性好,运行平稳,抗干扰性好,易于操作;
2、JPEG2000能实现渐进传输(ProgressiveTransmission),这是JPEG2000的一个极其重要的特征。
它先传输图像的轮廓,然后逐步传输数据,不断提高图像质量,以满足用户的需要。
这在网络传输中有着重大的意义;
3、JPEG2000另一个极其重要的优点就是感兴趣区域(RegionofInterest,ROI)。
用户可以随意指定感兴趣区域。
在这些区域,用户可以在压缩时指定特定的压缩质量,或在恢复时指定特定的解压缩要求。
这给用户带来了极大的方便。
在有些情况下,图像中只有一小块区域对用户是有用的,对这些区域,采用低压缩比,而感兴趣区域之外采用高压缩比,在保证不丢失重要信息的同时,又能有效地压缩数据量,这就是基于ROI的编码方案所采取的压缩策略。
基于ROI的压缩方法的优点,在于它结合了接收方对压缩的主观需求,实现了交互式压缩。
而接收方随着观察,常常会有新的要求,可能对新的区域感兴趣,也可能希望某一区域更清晰些。
这些功能的实现主要在于JPEG2000码流的分层组织。
数据可以分层传输因此可以提供分辨率分级渐进;每增加一级数据,分辨率可以提高一级。
当然,JPEG2000的改进还不仅仅这些,如它考虑了人的视觉特性,增加了视觉权重和掩膜,在不损害视觉效果的情况下大大提高了压缩效率;你可以为一个图像文件加上加密的版权信息,这种经过加密的版权信息在图像编辑的过程(放大、复制)中将没有损失,比目前的“水印”技朮更为先进;此外,JPEG2000对CMYK、ICC、RGB等多种色彩模式都有很好的兼容性,这为用户按照自己需求在不同显示器、打印机等外设进行色彩管理带来了便利。
三、项目立意
当前,JPEG2000的应用还没有到普及的程度,这是因为它相比JPEG性能的提升和更多的特性也带来了硬件实现上的复杂,现有JPEG2000的商用芯片种类很少,IP核的价格也很高,对该标准的普及带来了障碍。
然而它优秀的性能决定了它光明的前途,申请此项目更是为了借OpenHW开放源码设计大赛这个平台,实现一个简单,易用,高效,可靠,方便扩展并且公开源码的JPEG2000编码器IP核,为JPEG2000走向普及做出贡献。
随着时代的发展,又出现了很多JPEG2000结构实现的新方案,如更高效的DWT引擎,更好的EBCOT硬件结构,在此次项目中也想将这些最新的成果应用进来,力图做出一个性能更好的编码器。
四、原理和技术特点
4.1JPEG2000的算法特点
与JPEG相比,JPEG2000算法的显著特点是用DWT取代了DCT,用EBCOT取代了哈夫曼编码(Huffman)。
JPEG2000可以分为三个关键步骤:
先是小波变换,把图像分解为空间频域子带;然后把每个子带分为较小的块,独立编码成为嵌入式比特流;最后,嵌入式比特流被包装成分层码流。
这三部分,简单来说就可以分为DWT、EBCOT第一层编码(Tier-1)和第二层编码(Tier-2)三个模块。
再加上预处理阶段,以及量化阶段,组成完整的编码器。
JPEG2000编码器的框图如图4-1所示
图4-1编码器结构框图
在编码器中,首先对源图像进行前期预处理,对处理的结果进行离散小波变换,得到小波系数。
然后对小波系数进行量化和熵编码,最后组成标准的输出码流。
具体过程如下:
将有多个颜色分量组成的图像分解成单一颜色分量的图像。
分量之间存在一定的相关性,通过分解相关的分量变换,可减少数据之间的冗余度,提高压缩效率;
分量图像被分解成大小统一的矩形片----图像片(Tile)。
图像片是进行变换和编解码的基本单元;
对每个图像片进行小波变换。
产生多级系数图像。
这些不同级数的系数图像可以重构出不同分辨率的图像;
多级分解的结果是由小波系数组成的多个子带。
它们表示图像片中局部区域的频率特性;
对系数子带进行量化,并且组成矩形数组的“码块”(CodeBlock);
对一个码块中的系数位平面(也就是一个码块中整个系数中具有相同权值的那些位)进行熵编码;
将所有码块的压缩位流适当的截取,组织成具有不同质量级的压缩位流层;
将压缩码流以包为单元进行组织,产生JPEG2000文件格式的码流
4.2组成部分
1、预处理
(1)图像分片
图像越大,所占用的内存越大,为此,编码器把图片切分成几个相互独立的矩形切片,对每个切片独立编码。
如图2-3所示,这些切片的格子覆盖在参考网格的上面,每个切片长宽分别为XTsiz和YTsiz。
这些切片格子的原点是(XTOsiz,YTOsiz)。
切片的大小为XTsiz*YTsiz。
各切片的标号由光栅扫描顺序来标记。
图4-2参考网格
图4-3图像切片
(2)DC电平位移
编码器假定输入数据有一个标准的动态范围,并且以0为中心。
如果样本是无符号数,每个样本用p位比特表示,就用2p-1去减样本值。
目的是在解码时,能够从有符号的数值中正确恢复重构的无符号样本值。
直流电平位移是对仅有有符号数组成的图像片的像素进行的。
电平位移并不影响图像的质量,在解码端,在离散小波变换之后,对重构的图像进行反向直流电平位移。
(3)分量变换
彩色图片有3个图像分量RGB组成,分量变换把图像从RGB映射到YCrCb上。
有两种变换模式:
实型的不可逆颜色变化(ICT)和整型的可逆颜色变换(RCT)。
ICT定义为:
U0(x,y)、U1(x,y)、U2(x,y)分别代表红、绿、蓝三种颜色。
V0(x,y)、V1(x,y)、V2(x,y)分别代表Y、Cr和Cb三种。
对于ICT来说,RCT就是一个可逆的整数到整数的类似过程:
2、小波变换
通过小波变换,一个分量将分成多个子带。
由于这些子带具有统计特性,变换后的数据在编码时一般具有更高的效率。
在编码器中,支持可逆的整型小波变换和不可逆的实型小波变换,分别由5/3小波滤波器和9/7小波滤波器实现。
完全重构的均匀极大采样的滤波器组(PR-UMDFB)用来实现小波变换。
提升算法比传统的卷积方法占用更少的内存、效率更高。
一维UMDFB的提升实现如图:
图4-4滤波器组结构
Ai(z)、Qi(z)和si分别是滤波器函数、量化因子和(标量)增益。
(1)5/3小波一维DWT的实现
(2)9/7小波一维DWT的实现
3、量化
量化的目的是通过把系数限制在一个比较小的精度范围,或者是想要的图像质量。
通常,量化器都会采用下式(不同的子带使用不同的量化步长):
其中△就是量化步长,U(x,y)是输入的子带样本,V(x,y)是量化器输出的子带样本。
这里引入了量化死区的概念,即在距离0小于一倍步长的样本值都会量化为0。
4、EBCOT
量化后每个子带的小波系数,在编码之前会分成矩形的编码块。
编码块的大小可以任意,但是要满足两个条件:
1)编码块的宽和高都必须是2的幂次,2)块大小不能超过4096。
一般选择大小为64*64。
每个编码块将进行接下来的Tier-1编码,即位平面编码。
Tier1
每个位平面提供3个通道编码,根据重要性,依次是重要性传播通道、幅度细化通道、清除通道。
位平面上每个元素因其不同情况,进入不同的通道进行编码。
最终每个通道输出编码符号。
通道数据再进过基于上下文的算术编码。
重要性传播通道的编码过程:
如果一个样本还没有被发现是重要的,并被预测为有可能是重要的,那么这个样本的重要性就在这个通道中编码成一个二进制标号。
如果这个样本的确是重要的,紧接着要对它的符号进行编码,同样编码成一个二进制标号。
幅度细化通道的编码过程:
如果一个样本在之前的重要性传播通道中被发现是重要的,那么该样本的第二位将在这里被编码成一个二进制标号。
清除通道的编码过程:
清除通道按顺序每次处理一个垂直扫描列,直至样本处理完毕。
如果垂直扫描的列中有4个样本通过清除通道(即全部样本),我们就要知道4个样本的所有重要性信息,而且如果4个样本都被预测为不重要的话,我们就要进入一个特殊的模式:
集合模式(aggregationmode,就是行程编码)。
在这个模式里,要记录在垂直列上的最前面几个不重要样本的个数。
因此,在这个垂直列上的重要性信息在这个模式上将不被记录,列中剩下的样本将像重要性传播过程那样来编码。
Tier2
在Tier-2中,编码通道的数据将被打包成数据包,这些数据包随后输出成最终的代码流。
如果保留所有的编码数据,就是无失真压缩。
为了满足一定的压缩比,会截断一些不重要的通道数据,为了达到不同的渐进传输方式,打包的顺序也会不同。
码率的伸展是通过(质量)层来实现。
每个切片的编码后数据都被分成L层,那些包含了最重要信息的编码通道数据被放在低层中,而那些包含了更多细节的编码通道数据被放在更高的层中。
通过解码,重构出来的图像质量通过每一个层数据的叠加来提升。
率控制机制就必须决定哪些层包含哪些通道数据。
率控制依靠编码器预先计算出的每个通道对于码率的贡献,和每个通道相关的失真率,选择那些能降低失真的通道,直到数据量达到预先要求。
5、编码流结构和文件结构
为了对图像的编码后数据做一个规范,编码后的数据要组织成一个代码流,包括主文件头、切片文件头、切片主体、主尾部记录这几部分。
一个代码流提供了解码图像时所需要的最基本信息,我们还需要知道图像的其他信息(如版权、产地等)。
为了以上的数据能被显示出来,编码器需要一个额外的文件格式。
文件结构由不同等级的属性框组合而成。
五、硬件实现
5.1目前几款主流JPEG2000编码器实现现状
JPEG2000的特性包括:
有损和无损压缩
图像片大小(TileSize)
硬件资源占用
像素深度
DWT滤波器类型(5/3或9/7)
感兴趣区域选择(ROI)
码率控制方案
码块大小(CodeBlockSzie)
表一介绍了几款JPEG2000编码器的特性:
表一4款JPEG2000编码器的参数
5.2本项目实施方案
1、通过已有的JPEG2000编码器的实现来看,该IP核设计规模较大,以BarcoSilex的BA112JPEG2000E(编码器IP核)的资料来看(见下表),使用XilinxXC2VP30-6实现设计,使用了13056个Slices,两个时钟(101MHz和80MHz),66个RAMB16,2个DSPblocks。
因此本项目希望申请XUPV5-LX110T作为硬件开发平台,并且开发板上丰富的外设资源,为设计成果的验证提供了很好的支持。
举例来讲,待设计完成可以搭建如下的测试方案:
数字CCD摄像头将图像采入,在MCU的控制下传入FPGA,在Contoller的控制下,裁剪、填充、色度变换后存入SDRAM里缓存,再依次读入JPEG2000Encoder处理,编码后结果由MCU控制下通过USB控制器传入PC机分析。
表二BA112JPEG2000E的技术参数
2、方案初步决定由利用Xilinx提供的免费IP编写部分模块,加快设计的进度。
但由于IP核的Verilog或VHDL代码不开源,考虑可移植性,若时间充裕逐步重新编写该部分编写的模块。
根据现有的软件条件,拟用C语言和Matlab做算法仿真,ModelSim软件做功能仿真及时序仿真。
5.3DWT部分的硬件结构
经过这段时间的调用,阅读文献,决定采用“High-SpeedVLSIImplementationof2-DDiscreteWaveletTransform”,ChaoChengandKeshabK.Parhi文中描述的算法。
该算法具有对称统一的结构,可以方便的均衡硬件使用和分解效率,通过选取适当的并行级别,我们可以得到满足需要的DWT分解元件。
具体介绍见下面2部分。
5.3.1基于并行FIR滤波器的1-DDWT结构
为了便于说明问题,假设滤波器的长度为4,初始图像大小为NxN=8x8。
低通滤波器:
H={a,b,c,d};高通滤波器:
G={e,f,g,h};原始图像
首先在行方向通过低通滤波器,并进行下抽样,得到
(2)式
从
(2)式中可以简化得到(2a)式
该式可以转换成矩阵形式,并可变换为(2b)式
从(2b)式,我们看到1-DDWT(2a)已经转换成2个只有原始滤波器一半长度的FIR滤波器。
当对(2b)式使用2输入FIR结构,对于
的计算只需要2个时钟周期,首先得到
,接着得到
。
对
(1)式的行滤波可以用如图1所示的滤波器结构实现。
2输入2抽头系数为{b,d}的滤波器可以用(3)式表达
其中
以上结构所需要的硬件资源为3个乘法器,4个加法器和1个延时元件。
输入数据流见图2所示,对应的输出数据流见图3所示(即mij输出)
从数据流中可以看出,图1(b)中的每个D要用4D代替。
5.3.22-DDWT结构(N2/2结构)
使用1输入的FIR滤波器代替之前的2输入滤波器我们可以得到N2/2速率的结构。
其对应的数据流如图5和图6所示。
进一步,可以进行列方向的分解,具体过程如同行方向分解,如图7所示。
但若将行和列部分同步起来,还存在一个问题,可以从数据流中看出,例如计算出m00和m10需要2个周期,而列分解需同时处理m00和m10。
要在N2/2个时钟周期内完成该分辨率级分解,还需要一个DEM元件,即DelayElementMatrix,其内部结构如图8。
最终我们得到了进行一级分解的完整结构如图9
若进行多级小波分解,还需要缓存HH子带的数据,并进行同样过程的处理。
利用此算法,我们可以轻易的扩展到JPEG2000编码器中所使用的9/7和5/3小波的硬件结构,该结构在计算速率上有着很大的优势,同时也会在资源使用上耗费更多的资源,但硬件资源的耗费可以控制在一个合理的范围内。
一个9/7小波算法实现的技术参数比较见下表: