一种应用于JPEG2000的Tier1接口设计方法与流程

文档序号:11216301阅读:810来源:国知局
一种应用于JPEG2000的Tier1接口设计方法与流程
本发明属于图像压缩编码领域,涉及静态图像压缩标准jpeg2000。
背景技术
:图像信息是人类社会信息组成部分当中极为重要的一部分,有统计表明,一个人一生大概有75%的信息是由视觉获得的,因此图像处理技术的研究一直以来是一个热门领域。图像压缩技术是图像处理领域的一个重要研究课题。在不影响图像信息获取的前提下,对原始图像进行一定程度的压缩,去除冗余信息,可以节省大量的传输资源以及存储资源。jpeg2000是国际标准化组织(iso)于2000年发布的新一代静态图像压缩标准。该标准在原有jpeg标准的基础上,采用了dwt(离散小波变换)和eboct(最优截断嵌入式块编码)两种新的技术,因此具有:(1)在低码率下保持着较高的压缩质量;(2)具有良好的容错纠错能力;(3)支持“感兴趣区域”(roi);(4)支持渐进传输等优点,但编码复杂程度也随之上升,其中eboct(最优截断嵌入式块编码)部分的编码占据整体编码时间的80%以上,复杂度也较高,是当前jpeg2000算法结构优化的主要关注点。eboct(最优截断嵌入式块编码)编码包括tier1编码以及tier2编码两部分,前者承担主要的编码工作。tier1编码由bpc编码器和mq编码器组成,前者产生上下文判决对cxd,后者根据二进制编码原理对上下文判决对cxd进行编码产生压缩码流。bpc编码器的优化目前已实现较大的突破,“skipscanningmethod”等改进方法的提出大大提高了bpc编码器的处理速度,使其在一个时钟周期可以产生10个以上的上下文判决对cxd。然而mq编码器由于本身严格串行的编码特点以及前后上下文判决对cxd输入之间强烈的关联性,吞吐率一直难以提高。目前大部分的mq编码器结构一个时钟周期只能处理1个上下文判决对cxd。tier1编码处理速度是由bpc编码器和mq编码器共同决定的。因此,仅仅提升bpc编码器的吞吐量通常不能取得整体tier1编码性能的提升。基于全局的考虑,必须根据bpc编码器与mq编码器各自编码的特点,对两者的接口进行优化,从而达到二者速度较好匹配,最终提高tier1编码的整体速度。bpc编码器的编码工作由3种编码通道(重要性通道、幅度细化通道、清除通道)根据4种编码原语来完成(zc原语、sc原语、rlc原语、mrp原语)完成。三种通道产生的上下文判决对cxd有所区别。因此mq编码器在进行编码处理时需要根据编码通道的不同分开处理。目前针对tier1编码的优化主要集中在于bpc编码器和mq编码器自身的优化,而对于两者之间接口设计的优化较少。大部分的结构都是采用简单的fifo设计连接两个编码器,将bpc输出的3种不同编码通道的上下文判决对cxd混合在一起输入到同一个mq编码器进行处理。mq编码器内部采用三套编码机制来处理对应通道的上下文判决对cxd。因为mq编码器的吞吐率不高,这样简单的设计将会造成bpc速度的极大浪费。技术实现要素:本发明的目的是提供一种可以提高tier1编码的整体编码效率的应用于jpeg2000的tier1接口设计方法。技术方案如下:一种应用于jpeg2000的tier1接口设计方法,其特征在于,设置三个mq编码器,在bpc编码器输出之前根据通道属性对混在在一起的上下文判决对cxd进行区分,被分开的上下文判决对cxd将根据各自的通道属性,并行的进入对应的接口,分别输入到3个mq编码器;每个编码器单独进行一种编码通道的上下文判决对cxd编码工作;bpc编码器产生的上下文判决对cxd是不连续的,多个有效值之间会夹杂一部分无效值,设计一种重排电路来对输出的上下文判决对cxd重新排序,将上下文判决对cxd当中的有效值与无效值区分开;接口工作流程如下:(1)bpc编码器产生的上下文判决对cxd根据其自身所带的通道属性被分成重要性通道、幅度细化通道、清除通道三组;(2)上下文判决对cxd根据各自通道属性进入对应的重排电路,以向量阵列的形式输出;重排电路包括多个重排单元,有效上下文判决对cxd集中在一起,占据低位向量,优先输出,无效的上下文判决对cxd被清零,同时放到高位向量处,以免影响后续mq编码的处理;(3)输出的上下文判决对cxd向量阵列进入异步并入串出fifo部分,首先进入write_fifo写控制模块,该模块具有两个功能:a.产生后面fifo组所需要的写数据和写信号:write_fifo模块当中的写数据个数与fifo组当中的fifo数目一致且一一对应,写信号的位宽与写数据的个数一致,其每一位表示对应的写数据是否有数据写入;write_fifo模块设置一个写指针;当前进入模块的上下文判决对cxd成功写入对应的多个写数据之后,写指针将指向下一个空的写数据,接下来进入模块的上下文判决对cxd就将从写指针指向的空的写数据开始写入,写信号也随之产生;b.产生bpc编码器的使能控制信号:当剩余的空fifo数目充足时,位平面编码器的使能信号保持高电平,位平面编码器持续工作,当空的fifo数目小于当前产生的有效cxd数目的时候,write_fifo模块会将位平面编码的使能信号拉低,从而暂停位平面编码器的工作,防止fifo溢出;(4)每个写数据被写入fifo组的对定fifo当中;(5)read_fifo读控制模块采用循环取数的方式,每个时钟周期从fifo组取出一个上下文判决对cxd输出给mq编码器。附图说明图1jpeg2000的编码流程图2本发明的结构图图3pcxd数据结构图4重排电路结构图图5重排单元结构图具体实施方式jpeg2000的工作流程如图1所示,本发明主要针对bpc编码器通过三种编码通道产生三种上下文判决对cxd这一工作特点,设计了一种高效率的接口设计,能显著提高mq编码的吞吐率,从而提升tier1编码部分的效率。接口设计包括重排电路以及异步并入串出fifo两部分,结构图如图2所示。下面介绍设计的具体实施方式。1.上下文判决对cxd的归类如前文所述,bpc通过三种编码通道产生三种不同的上下文判决对cxd。每个编码通道工作时又采用了4种编码原语来完成(zc原语、sc原语、rlc原语、mrp原语)。上下文判决对cxd是一个6位的数据,为了表明通道属性,每个编码原语产生上下文判决对cxd时会在最高位向左扩展两位,添加上所属通道说明。扩展后的8位上下文判决对cxd数据结构如图3所示,本发明称之为通道pass-上下文判决对cxd(pass-cxd),下文简称为pcxd对。根据pcxd对最高两位值即可判断其通道属性:00——重要性通道、01——幅度细化通道、10——清除通道。2.重排电路根据三种编码通道,重排电路也分为三套。每套重排电路又由多个重排单元组成。重排电路的工作原理采用了类似冒泡排序的方法。电路结构图如图4、图5所示。每个pcxd对在产生的同时,都会伴随一个有效性状态标志vld。标志为1表示该pcxd对有效,反之则为无效数据。相邻的两个pcxd对会进入重排单元进行比较。重排单元根据当前两个pcxd对的有效性状态(vld_m、vld_r)以及前一个pcxd对的有效性(vld_l)状态来判断当前两个pcxd对的顺序,无效数据将被置零并且向后移位,排列规则如表1所示。经过重排单元排布之后,bpc编码器产生的pcxd对会形成一个数据宽度为8的向量阵列,其中有效数据将集中优先占据低位优先输出,而无效数据则被放到高位。三套重排电路产生向量阵列的数据深度并不一致,取决于每个编码通道每个时钟周期能产生的最大pcxd对数目。如本发明采用的bpc编码器一个时钟周期最多能产生10个pcxd对,根据所用编码原语的不同,表2对pcxd对进行了归类,从而得出每个编码通道生成的向量阵列的数据深度。重排电路输出向量阵列的同时,还会输出一个表示有效数据个数的信号vld_sum。表1重排单元重排规则vld_mvld_lvld_rsel_cxd11-cxd_m10-00-1cxd_r0-00表2上下文判决对cxd归类3.fifo部分经重排电路输出的pcxd向量阵列对以及有效pcxd数目信号vld_sum将进入fifo组部分。由于mq编码器的吞吐量与bpc编码器存在不匹配,本发明采用了异步并入串出fifo来完成传输。fifo部分,分为write_fifo(写控制模块)、fifo组以及read_fifo(读控制模块)三部分。(1)write_fifo(写控制模块)如前文所述,该模块主要完成两个功能:产生给异步fifo组的写数据和写信号、产生位平面编码的使能控制信号。由于三个编码通道重排电路输出的pcxd对向量阵列的深度不同,因此对应的write_fifo设置的写数据数目也不同。以本发明应用的10输出bpc为例,重要性通道的write_fifo设置8个写数据,幅度细化通道设置4个,清除通道设置10个。此外,每个编码通道在每个时钟实际产生的pcxd数目并不固定(不一定是最大数目),所以还需要设置一个写信号fifo_wr。写信号的位宽等于写数据的个数,每一位用来表明对应的写数据是否有值。为了使得每个写数据都可以被赋值,而不被浪费,write_fifo模块采用从低到高循环的并行写入,每个写数据都被编号,并设置一个写指针start_point来记录每次写入的写数据编号。以清除通道为例,该通道一共设置10个写数据(0~9)。假设此时进入的write_fifo模块的有效pcxd对数目是6个,而start_point指向的写数据位置是第8个写数据,那么本次应该被写入数值的写数据为第8、9、0、1、2、3个。首先将有效的pcxd对写入对应的写数据当中,并将写信号fifo_wr[10:0]的低6位置拉高(10’b0000111111);然后根据start_point,fifo_wr向左移8位,被移出的4位再补回到最低4位,最终形成新的fifo_wr(10’b1100001111),表明第8、9、0、1、2、3个数据有数据。最后start_point指向第4个写数据,表明下一次pcxd对的写入从第4个写数据开始。当fifo组的空余fifo能够满足有效pcxd对存储时,write_fifo模块产生的bpc编码器使能信号bpc_en保持高电平,bpc编码器正常工作。如果fifo组剩余空fifo的数目小于有效pcxd数目,此时应该暂停bpc编码器的编码,防止fifo溢出。因此使能信号bpc_en就会被拉低,暂停bpc编码器工作。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1