您好,欢迎访问三七文档
JPEGXR标准介绍JPEGXR简介•JPEGXR的前身是微软开发的一种静止图像文件格式HDPhoto。在2007年7月的JPEG大会上,被提案成为国际标准,并成立专门的工作小组,代号为JPEGXR•HDPhoto压缩标准除了具有高效的压缩性能和出众的压缩质量外,还具有计算复杂度低和内存消耗少的特性,非常适合在嵌入式设备,比如数码相机上的应用JPEGXR的新特性•高效的,利于嵌入式设备的压缩方法需要的内存开销很小简单的,基于整数的操作•有损和无损压缩使用相同的算法•支持单色、RGB、CMYK、甚至支持16位无符号整数或者32位定点或者浮点数表示的多通道彩色JPEGXR的新特性•先进的压缩技术,储存与JPEG格式同等画质的影像,所占的文件空间可减半•支持感兴趣区域压缩,以及渐进解码JPEGXR的分层结构•JPEGXR压缩图像具有三个相互正交的分层结构•一是不同的颜色通道分层,如YUV分层。这和一般的图像格式如JPEG类似,其中YUV与RGB的相互转化是可逆的,且都是整数运算,运算后输出数据的位数最多比输入增加一位,计算复杂度低,。与码率控制有关的是每个通道的量化值QP可以不同JPEGXR的分层结构二是不同的空间组织分层。每个像素包含各个颜色通道对应点的值,每4×4个像素组成一个块block,每4×4个block组成一个宏块MB,整数行X整数列个MB组成一个TILE,整幅图则由多个TILE组成。每个TILE独立编码,可以方便地实现图片的ROI功能;编码的基本单元是MB,每个MB可以取不同的量化值QP图像的空间组织分层JPEGXR的分层结构三是不同的频域组织分层,每个MB中所有的block进行LBT变换(LappedBiorthogonalTransform)后,会得到16个DC系数和240个AC系数,这240个AC系数称之为HP层;剩下的16个DC系数进一步去除相关性,再进行一次LBT变换,得到1个DCDC系数和15个DCAC系数,1个DCDC系数称之为DC层,15个DCAC系数称之为LP层。于是每个MB经过LBT变换后的系数都划分为三个频域层,其中整个TILEDC层的系数只能有一个量化值,而每个MB的LP层和HP层系数的量化值QP可以不同,这样也给码率控制提供了很大的灵活性图像的频率组织分层码流结构•码流以一个文件头开始,紧接着是一个索引表,索引表标记了每一个tile在码流中的位置,tile可以按空间或者频率结构组织码流•在空间模式中,每个tile的码流以宏块为次序,宏块编码后数据以光栅扫描顺序排列,扫描顺序是从上到下从左到右。•在频率模式中,每个区域的码流按频率分层结构排列,第一个频带是DC,DC带载荷的信息是光栅扫描顺序决定的每个宏块的DC值。第二个频带是低通分量,它载荷的信息是低通系数,每个宏块有15个。第三个是AC带,载荷着每个宏块剩余的240个系数。最后,第四个带称为Flexbits,它是一个可选的层面,载荷的信息是AC系数的低字节比特,一般用于无损或低损压缩情况。码流结构编码流程1.前置缩放(Pre-scaling)2.色度空间转换(Colorconversion)3.空域频率变换4.系数预测5.量化6.量化后系数扫描7.熵编码8.交织解码流程1.解交织(De-interleaving)2.熵解码3.系数恢复4.反量化5.反变换6.逆色度空间变换7.后置比例缩放(Post-scalings)前置/后置缩放•这个步骤只在输入数据范围大于27/24比特时使用,在编码器端将输入数据右移m比特以使其范围降低到27/24比特以下。在解码器端输出数据左移m比特色度空间转换•色度空间转换的目的是使色彩信息的表达形式更适合人的视力特征,在编码器端色度空间会从RGB转换到YUV•JPEGXR的色度空间转换是可逆的换句话说,它是一个无损的变换•变换方程如下色度空间转换RGBYUV22UGYVGRURBVRVBVGURUYG22色度空间转换CMYKYUVK222YkKUmkYVmcUycVVcyVmUcUYkmYKk222空域频率变换•JPEGXR采用的变换方式是LBT(双正交重叠变换),它在低的计算复杂度情况下提供了很高的编码性能•LBT基于两种变换操作:PhotoCoreTransform(PCT)和PhotoOverlapTransform(POT)空域频率变换•PCT与DCT相似,其不足之处是在低比特率情况下会引发块效应,POT则用来解除块边缘的相关性减缓块效应以弥补PCT的缺陷•POT在功能上与PCT是独立的,在每一步转换的过程中,PCT是必须的而POT可以选择性的使用,POT的使用与否由OVERLAP参数的值控制4x4PCT和POT的操作区域,每个POT块占据了4个PCT块的边界变换步骤1.在编码器允许的情况下应用4x4POT,在区域边界上其缩减为4点一维POT。2.对每个块应用4x4PCT得到一个DC系数和15个AC系数。3.将第一阶段得到的DC系数组合成块,当色度通道没有下采样时这是4x4的块,色度通道进行了下采样则为2x2或2x4的块4.在编码器允许的情况下应该第二阶段的POT。当色度通道进行了下采样时4x4的POT会被一个或两个2x2POT代替,在边界区域应用2点一维POT或4点一维POT5.对DC块进行第二阶段的PCT,色度通道无下采样时应用4x4PCT,有下采样时,一个或两个2x2PCT被应用来处理2x2或2x4的块。量化•每一个色彩平面可能用相同的量化参数QP,亮度和色度通道可能用不同的QP,也可能每个通道都有自己的QP。在空间域中所有tile可能用相同的QP,每个tile也可以有自己的QP。在频率域中每个频带可以共用QP或者有自己的QP。一个tile中的DC分量的QP是固定的,而AC分量和LP分量的QP可以取相同的值或一系列的不同值量化•对无损压缩,取QP=1•对有损压缩,取QP1•在JPEGXR中,量化采用整数操作,它保证了系数经过缩放后的精确性,而且可以使用移位操作来完成除法运算系数预测•系数预测是利用量化后系数间的相关性消除冗余信息以最小化存储开销的手段•DC和LP预测是跨越宏块的边界的,而HP预测只在宏块内部进行DC系数的预测方式系数预测•DC系数的预测有3种方式,分别是从左预测、从上预测和从左上预测,操作时会根据各宏块的DC值判断用何种方式预测•LP系数的预测方式与DC系数的预测方式有关,HP的预测方式由LP系数决定LP系数的预测LP系数有从左预测和从上预测两种方式具体会根据DC系数的预测方式以及量化器的索引值判断使用何种方式左图显示了LP系数的从左预测AD代表了LP系数LP系数的预测•LP系数预测的判断条件lowpass_DCAC_mode=NullpredictIf((DC_mode==Predictfromtop)&&(quantizer_index(currentMB)==quantizer_index(topMB))){lowpass_DCAC_mode=Predictfromtop}Elseif((DC_mode==Predictfromleft)&&(quantizer_index(currentMB)==quantizer_index(leftMB))){lowpass_DCAC_mode=Predictfromleft}HP系数的预测HP系数的预测•上图显示了HP系数从左预测的模式•HP系数的预测条件如下•diff_h=abs(lowpass(4))+abs(lowpass(8))+abs(lowpass(12))•diff_v=abs(lowpass(1))+abs(lowpass(2))+abs(lowpass(3))••If(chrominanceispresent){•If(YUV420){•diff_h=diff_h+abs(lowpass_U(2))+abs(lowpass_V(2))•diff_v=diff_v+abs(lowpass_U(1))+abs(lowpass_V(1))•}•Elseif(YUV422){•diff_h=diff_h+abs(lowpass_U(2))+abs(lowpass_V(2))+abs(lowpass_U(6))+abs(lowpass_V(6))•diff_v=diff_v+abs(lowpass_U(1))+abs(lowpass_V(1))+abs(lowpass_U(5))+abs(lowpass_V(5))•}•Else{•diff_h=diff_h+abs(lowpass_U(4))+abs(lowpass_V(4))•diff_v=diff_v+abs(lowpass_U(1))+abs(lowpass_V(1))•}•}HP系数的预测•If(diff_h*orient_weightdiff_v){•highpass_DCAC_mode=Predictfromtop•}•Elseif(diff_v*orient_weightdiff_h){•highpass_DCAC_mode=Predictfromleft•}•Else{•highpass_DCAC_mode=Nullpredict•}系数的动态扫描•动态扫描将2维矩阵中的元素扫描后排列成一维数组以进行编码1.在每幅图像中tiles以光栅扫描顺序扫描2.每个tile中,宏块以光栅扫描顺序扫描3.每个宏块中,DC系数按光栅扫描顺序扫描4.对于每个宏块LP和HP系数按特定的方式扫描LP和HP系数的扫描存在三种扫描方式分别为lowpass、highpasshorizontal和highpassvertical。从每个tile的开始(tile最左上角的宏块)会初始化一种扫描方式图a是lowpass和highpasshorizontal的扫描顺序图b是highpassvertical的扫描顺序动态系数扫描•扫描顺序可以定义成以光栅扫描顺序表示的一维数组形式,图a的扫描顺序可表示为•Order[]={1,4,5,2,8,6,9,3,12,10,7,13,11,14,15}•扫描时会建立另一个数组记录相应位置系数非零的发生率,其初始化为•Totals[]={28,26,24,22,20,18,16,14,12,10,6,4,2,0}•扫描顺序会根据totals数组的记录发生动态改变,这样,压缩后的总比特数可以平均减少3%动态系数扫描动态系数扫描•扫描过程中如果第N个扫描的元素为非0则相应的数组totals中的元素加一,同时要调整扫描顺序以保证totals数组中的元素按从大到小顺序排列•上图展示了一个根据totals数组调整扫描顺序的例子
本文标题:JPEG XR简介
链接地址:https://www.777doc.com/doc-3972366 .html