《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于组点跳跃的JPEG2000位平面扫描方案
基于组点跳跃的JPEG2000位平面扫描方案
曾昭贵, 仁福林
摘要: 针对超遥感图像实时压缩的需求,提出了基于组的像素点跳跃(GBPS)EBCOT扫描方案。该方案可以大幅度提高扫描效率。本设计用VHDL编写,目标器件为Altera Stratix系列的EP1S25F672C6,模块稳定运行在120MHz,平均每个时钟周期可以产生0.95个上下文信息。
Abstract:
Key words :

  摘 要: 针对超遥感图像实时压缩的需求,提出了基于组的像素点跳跃(GBPS)EBCOT" title="EBCOT">EBCOT扫描方案。该方案可以大幅度提高扫描效率。本设计用VHDL编写,目标器件为Altera Stratix" title="Stratix">Stratix系列的EP1S25F672C6" title="EP1S25F672C6">EP1S25F672C6,模块稳定运行在120MHz,平均每个时钟周期可以产生0.95个上下文信息。
  关键词: JPEG2000" title="JPEG2000">JPEG2000 EBCOT 编码块" title="编码块">编码块 上下文


  EBCOT位平面扫描是JPEG2000硬件实现的瓶颈之一。自从联合摄影专家组织发布JPEG2000标准以来,人们一直在寻找一种高效扫描的硬件实现方案,如Kuan-fu Chen[4]等人提出的GOCS(Group Of Columns Skipping)查询扫描方案,将位平面上相邻八列编成一个Group,在对重要传播通道进行完全扫描的同时,建立后两个扫描过程的编码必要性信息表,在进行幅值细化通道和清除通道时可以直接跳过不需要编码的Group;而Zhu Yue-xin[1]等人提出了基于多级查询表的GOCS改进方案,这种优化方法进一步提高了扫描效率,但是需要额外的存储单元。基于列(Column-Based)的点跳过(Pixel Skipping)技术[3]大大减少了扫描冗余,因而被广泛应用 [1~6]。为减少RAM的访问频率,提出了多列并行存储方案[5],但其本质是基于列的扫描结构。这种基于列的操作,列与列之间的转移需要消耗时钟周期。平面内三个过程并行处理的方案[7],进一步减少了扫描的冗余时间,但这种方法对Tier-2截断的精度和码流组织影响比较大。
  笔者提出了基于组的像素点跳跃GBPS(Group-Based Pixel Skipping)的EBCOT位平面扫描方案。以四列为一组,在组内使用点跳跃(Pixel Skipping)技术。本方案配合流水设计,组之间可实现无缝转移,极大减少了扫描单元之间转移的冗余时钟周期,从而提高了扫描效率。同时亦减少了对缓存RAM的访问频率,降低了系统功耗。
1 JPEG2000标准简介
  JPEG2000标准提供比JPEG更高的压缩率和更好的抗误码特性,支持单分量或多分量的有损和无损编码。支持SNR和分辨率的渐进传输、感兴趣(ROI)编码、码流随机访问,提供灵活的文件格式,支持用户信息加载(如水印等)和动态图像(Motion JPEG2000),已被广泛应用于各个领域的图像处理。如图1所示,JPEG2000 首先对原始图像进行离散小波变换,无失真压缩采用5/3提升小波变换,有失真压缩采用9/7提升小波变换。如果是有失真压缩,还要对小波变换后的系数进行量化。量化后的各个子带被划分成大小相等的编码块(Code Block)。最后采用率失真优化截取的内嵌码块编码算法(EBCOT)对这些编码块进行独立编码。EBCOT分为Tier-1和Tier-2两部分,Tier-1又分为位平面扫描、算术自适应编码器MQ和失真计算;Tier-2对MQ编码输出的数据采用PCRD算法进行码流的截取,得到最终的压缩数据。解码是编码的逆过程,首先对码流进行EBCOT解码,然后对反量化后的数据作小波反变换,最后生成重建图像。


2 JPEG 2000标准定义的EBCOT位平面扫描方法
  如图2所示,编码块中每个有效位平面列方向上每4个相邻的点称为一个编码列(Coding Column),处在同一水平方向上的编码列构成一个带(stripe),EBCOT位平面扫描时,列内对点从上到下, 带内对列从左到右, 编码块内对带从上到下进行Z字型遍历扫描。除了最高有效位平面只需进行一次清理通道扫描外,其余的有效位平面均要进行三次的扫描通道:有效性传播通道(PASS1 Significance Propagation)、幅度细化通道(PASS2 Magnitude Propagation)和清除通道(PASS3 Clearup Pass)。编码块的所有点都对应一个记录其重要性的标志,这个标志在编码块开始编码时被初始化为‘0’,表示其不重要,该点变为重要以后被置为‘1’。如果当前扫描点本身不重要,但其八邻域内有重要的,则进行有效性传播通道编码。如果其本身为重要,则进行幅度细化通道编码;否则进行清除过程编码。有效性传播通道使用零编码(ZC)原语,幅度细化通道使用幅度细化编码(MR)原语,清除通道则使用零编码(ZC)原语或游程编码(RLC)原语。这些原语产生上下文(CONTEXT)和判决位送给自适应编码器MQ进行编码。


3 基于组的EBCOT位平面扫描方案
3.1基于组的点跳跃扫描上下文产生器

  据统计,如果按照JPEG 2000协议给出的通道扫描方法,扫描的冗余时间占总时间的70%以上[2]。基于列的点跳跃(Pixel Skipping)方案[3]与基于启发式扫描的组跳跃(GOCS)[3]结合使用的方案将所需时钟下降到原来的40%左右[2]。但是这种方案需要额外的存储器,并且必须对三个扫描通道中的一个进行完全扫描,所以这种方案有其不理想的地方。同一位平面内三个通道并行的方案[6],进一步减少了扫描的冗余时间,但对Tier-2的动态截断的精度和码流组织影响比较大。笔者提出了如图3所示的基于组的点跳跃扫描GBPS(Group-Based Pixel Skipping)方案。将四列16个点(0~F)看成一个单元,称之为一组(Group)。其左右白色两列分别为该组的左邻域列和右邻域列,其上下两行浅色分别为该组的上邻域行和下邻域行。组和它的上下邻域的位平面小波系数均存在位平面小波系数缓存RAM的同一个单元中。在编码块非边界区域,它的左邻域列为前一个组的最右边一列,右邻域列为下一组的最左边一列。左右邻域分别用一个6位寄存器缓存。当扫描编码块左边界时,左邻域为零,而扫描子块右边界时,右邻域为零。位平面扫描时在16个点中进行跳跃扫描,只对当前过程NBC[2]为1的点进行扫描。
3.2 组间流水操作
  基于组的点跳跃主要是为了减少两相邻处理单元之间转移所消耗的时钟周期,故在硬件实现时组之间采用流水操作。为了实现流水操作,EBCOT扫描被分解成三个处理任务:当前组的上下文扫描编码、下一组的预处理、再下一组的数据预读取。这三个处理任务是并行执行的,所以对于一个组而言,它的预读取过程、预处理过程和上下文的扫描编码过程是流水操作的。如果相邻的两个组均有当前扫描通道需要编码的点,组之间的转移不需要冗余的时钟周期,上下文产生器可以每个时钟周期向算术编码器MQ提供一个数据输出。
  采用GBPS方法的目的,一是跳过当前组当前过程不需要编码的点,二是减少单元之间转移所花费的时间。同时亦减少了对内部存储器的访问频率,从而减少系统的功耗。下面将对三个处理任务进行逐一的介绍。
3.2.1 数据预读取
  在扫描过程中需要对两种数据进行预读取:位平面小波系数和重要性信息(FC表),这两部分数据都分别存储在片内RAM中。FC 系数用于表征当前位平面的点是否已变为重要的数据,其存储方式与位平面小波系数的存储方式相同,如图3所示。每个编码块开始编码时FC系数的初始值为零,并在编码过程中进行更新。
  预读过程的另一个任务是在读取过程中对组的左右邻域寄存器更新数据,使得预处理模块面对一个带邻域的组。


3.2.2 组预处理
  组预处理模块首先根据组内16个点各自的邻域信息计算出其在当前扫描过程中的NBC信息,用一个16位的寄存器进行标记;然后根据该寄存器计算出各点的下一个需要编码点的位置,实现这一功能需要用到14个四位的位置寄存器np_0~np_D。EBCOT位平面扫描时根据这14个寄存器的信息进行跳跃查询,例如当前处理点为0,若np_0的值为0xE,那么处理完0后,跳到E点进行处理。极大地提高了扫描的有效性。
3.2.3 上下文编码扫描模块
  有效性传播通道、幅度细化通道和清除通道三个上下文扫描通道产生上下文的复杂度是不一样的,后两个只要进行简单判断就可以得出上下文,这两个过程采用非流水设计,以节省资源。而有效性传播过程则比较复杂,有必要采用流水操作,分解成邻域信息提取、重要性上下文产生、符号位上下文产生和发送四个过程。如果某点进行重要性编码只要一个周期,若要进行符号位编码则需两个周期。
  在扫描过程中点0和点F是必扫的两个点,因为预读取隔组数据和预处理下一组数据需要两个时钟周期,这是本设计唯一会产生冗余时钟周期的地方。1到E点则根据位置寄存器np_0~np_D的值进行跳跃扫描。对于一个有效位平面中的一点,必然被三个扫描通道中的一个扫描(清除通道的RLC有可能是一个扫描列一起扫描),故一个有效位平面每个组的冗余时钟周期小于4。
4 硬件设计
  这是一个专门针对超大幅图像实时压缩的设计,采用了四路编码块并行处理的方案。为了验证系统的性能笔者采用标准的测试图像进行测试。通过C++对MODELSIM仿真输出数据统计,各图像扫描花费的时钟周期数如表1所示。这里除了“本文系统”以外的数据均来自参考文献[2]
  上下文扫描模块资源如表2所示,其中LE和本工程其它模块一起约束综合时会有稍许增加。所用的芯片为ALTERA公司Stratix系列的EP1S25F672C6。它有25660个LE、224个M512 RAM、 138个M4K RAM和80个乘法器,以及丰富的时钟资源。

 


  本文以超大幅图像的实时压缩为应用背景,并根据FPGA目标芯片资源架构的状况,提出了一种新的EBCOT位平面扫描方案——基于组的点跳跃(GBPS)。这个方案所花的时钟周期不到表1中最快方案的三分之一。大量流水操作的应用也使本系统逻辑层次降低,因此获得良好的时序性能,本模块具备每秒处理6幅4096×4096的8位灰度遥感图像的能力。


参考文献
1 朱悦心.基于多级查询表的JPEG2000位平面扫描优化方法.电子学报, 2004;(5)
2 Gangadhar, M.,Bhatia, D.FPGA based EBCOT architecture for JPEG 2000. Field-Programmable Technology (FPT),2003. Proceedings. 2003 IEEE International Conference, 2003;(12):15~17
3 Kuan-Fu Chen. Analysis and architecture design of EBCOT for JPEG-2000.Circuits and Systems, 2001. ISCAS 2001.The 2001 IEEE International Symposium on, 2001;(5)
4 Yun Long. A high-performance parallel mode EBCOT en-coder architecture design for JPEG2000.SOC Conference, 2004. Proceedings. IEEE International,2004;(9):12~15
5 Tien-Wei Hsieh, Youn-Long Lin. A hardware accelerator IP for EBCOT Tier-1 coding in JPEG2000 Standard.Embedded Systems for Real-Time Multimedia, 2004. ESTImedia 2004. 2nd Workshop on,2004;(9):6~7
6 Yijun Li, Aly, R.E,Bayoumi, M.A., Mashali, S.A.Parallel high-speed architecture for EBCOT in JPEG2000.Acoustics, Speech, and Signal Processing, 2003. Proceedings. (ICASSP ’03). 2003 IEEE International Conference on, 2003;(4)

此内容为AET网站原创,未经授权禁止转载。