前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高吞吐量JPEG 2000(HTJ2K):新的算法和机会

高吞吐量JPEG 2000(HTJ2K):新的算法和机会

作者头像
用户1324186
发布2018-12-07 14:32:58
2K0
发布2018-12-07 14:32:58
举报
文章被收录于专栏:媒矿工厂

摘要:

本文参考D. S. Taubman等人发表在SMPTE Motion Imaging Journal上的文章High Throughput JPEG 2000 (HTJ2K): New Algorithms and Opportunities,描述了一种联合图像专家组(JPEG)2000(J2K)块编码器的直接替代品,它提供了极高的吞吐量,编码效率略有降低,但同时保留了除质量可拓展性之外J2K的所有功能。相对于J2K,它可以实现大约10倍或更多的吞吐量。我们使用优化截取FAST码块编码(FBCOT)的术语来表示本文提出的算法。而由于J2K和FBCOT比特流之间的真正可逆转码在逐块的基础上得到支持,使得J2K的效率和可扩展性与FBCOT的高吞吐量优势相结合的系统成为可能。该算法构成了新标准的基础,该标准将是J2K Part-15(也称为高吞吐量J2K),目前处于国际标准化组织(ISO)工作组(称为JPEG)的委员会草案状态。

引言

联合图像专家组(JPEG)2000(J2K)图像压缩标准提供了高压缩效率以及一组独特的功能,即可直接从编码表示中提取感兴趣的分辨率和空间区域,同时还可享受免版税 IP许可情况。J2K Part-1目前用于全球D-Cinema分发以及以IMF家庭视频分发服务。J2K在娱乐行业中更广泛采用的一个障碍是J2K相对较高的计算复杂度,对于许多高分辨率和帧速率而言,它需要功能强大的工作站计算机或专用硬件来实现实时编码或回放性能。J2K的高复杂性是由于其底层块编码算法的相对高的计算复杂性。本文介绍了J2K块编码算法的直接替代方法,该算法能够提高10倍或更高的吞吐量,并且仅仅略微降低编码效率。此外,新的编码算法在逐块的基础上支持对任何J2K码流的真正可逆转码,这为新的媒体压缩解决方案和系统创造了一系列机会。

基于本文所述算法的早期证据激发了ISO / IEC JTC1 / SC29技术工作组(WG)1(也称为JPEG)中创新的想法。经过征集建议书和仔细评估过程之后,在选择和改进的过程中产生了算法的改进体,成为J2K系列的第15部分(也称为HTJ2K,或简称为JPH)标准。委员会草案(CD)已发布以征询公众意见,最终的国际标准(IS)预计将于2019年7月发布。为避免混淆,在本文中,J2K一词指的是现有的J2K标准(特别是Part-1)和块编码器,区别于HTJ2K(Part-15)及其FAST块编码算法。

JPEG 2000块编码算法的关键概念

J2K基于称为优化截取内嵌码块编码(EBCOT)的算法. 在多分量去相关变换之后,离散小波变换将源图像数据分解为子带图像,这些子带图像被单独编码;这提供了有效压缩所需的能量压缩,以及分辨率可扩展的编码内容访问。每个子带图像被进一步划分为代码块,通常尺寸为64×64或32×32,并且每个代码块经历分数位平面编码处理(fractional bitplane coding process)。此阶段赋予压缩表示(compressed representation)以质量可扩展和基于兴趣区域的可访问性属性,这对于具有高效性且响应式互动访问的大型媒体源尤其重要;它还为算法提供了高水平的宏观并行性,因为其可以并行地对块进行编码/解码。每个块比特流可以在一组丰富的截断点(每个位平面3个)上独立截断,允许在编码后做出率失真(rate-distortion)优化决策,即所谓的后压缩率-失真优化(PCRD-opt)阶段。一组称为Tier-2的编码和打包工具将块比特流片段和相关的辅助信息封装在形成最终码流的J2K数据包流中。

为了理解本文中描述的创新,简要回顾一下J2K块编码算法是有必要的。令X [n]表示代码块内的样本,由位置n =(n1,n2)索引,其中

表示水平位置,

表示垂直位置,W和H是代码块的宽度和高度。令

是采用量化步长Δ评估的关于幅度位平面p的样本幅度,即,在死区量化(deadzone quantization)之后丢弃p最低有效位(LSB)。我们说如果

,那么X [n]相对于位平面p是“重要地”。J2K块编码器逐步编码

的值,从

开始并向下工作到最精细的位平面P=0,其中最粗略的位平面

在J2K分组构造期间被明确地传送作为辅助信息的第2层编码的一部分。通常,

是最粗糙的位平面,块中的任何样本都是重要的。块编码器每个位平面构造三个编码通道,分别为Cleanup,SigProp和MagRef,每个通道最多可传输一个新的幅度位,对于新的重要采样,则传输一个符号位。

这种多通道编码策略提供了丰富的截断点集,为表示赋予了卓越质量的可扩展性属性。虽然可以使用优化技巧来避免在每个编码通道中触及所有样本,但J2K块编码器的吞吐量不可避免地还是会随着质量的提高而下降(即,随着位平面数量的增加)。

优化截取Fast码块编码(FBCOT)

这里描述的FAST块编码算法通过在单个通道内编码多个位平面,牺牲质量可扩展性来提升吞吐量。为了在J2K和FAST块比特流之间实现真正的可逆转码,FAST块编码器仍采用具有Cleanup,SigProp和MagRef编码通道的结构,其相对于位平面p定义。然而,重要的是,与位平面p相关的Cleanup通道完全编码了

; 相比之下,J2K Cleanup通道仅编码对于位平面p + 1中不重要的样本的重要性。

同时,快速SigProp和MagRef编码通道与J2K对应的编码具有相同的增量改进信息,但使用的方法更适合软件中的高吞吐量实现。图1比较了快速和J2K编码通道结构。在转码应用中,需要细化通道来精确复制J2K的自适应量化属性。对于使用FAST块编码器直接编码的内容,改进的通道提供了额外的截断点,可提高速率控制性能,当然这并不是严格需求的。

图一. 快速码字段和字节流

FAST块编码器对J2K中与J2K数据包构造相关的语法或Tier-2编码工具没有任何影响。从解码器的角度来看,每个代码块最多可以恢复三个编码通道。第一个是Cleanup通道,其特征取决于上面解释的Pmax值,但在快速变型中,Pmax通常变得较小,因为单个Cleanup通道包含来自较粗糙(coarser)位平面的信息。

在编码器内,可以在每个代码块中处理多个位平面,产生一系列编码通道,随后可以以速率-失真最优方式截断,如在原始EBCOT算法中那样。但是,一旦找到最佳截断点,只有最精细的Cleanup通道以及任何后续的细化通道实际上包含在码流中,因为最精细的快速Cleanup通道会包含所有之前的编码通道。然而J2K块编码器必须按顺序生成所有编码通道,甚至一些在PCRD-opt阶段可能会被丢弃的通道也是如此,智能FAST块编码器可以从稍后的位平面开始编码,生成更小的一系列(有用的)通道作为PCRD-opt阶段的输入。以上,就是优化截取FAST码块编码(FBCOT),其中有涉及FAST块编码器和优化的编码通道选择。

图二. 快速码字段和字节流

代码字段和字节流

快速Cleanup通道中产生一个字节流,其长度会明确地用信号通知解码器,在J2K中称之为码字段。FAST块编码器使用两种类型的段。快速Cleanup通道将三个字节流打包到单个Cleanup码字段中,而SigProp和MagRef编码通道分别将前向和后向增长的字节流分组打包到单个细化码字段中,如图2所示。所有五个字节流对应于可以并行运行的单独编码过程。这有利于软件和硬件实现,增加并发性并减少临时状态变量的数量。Cleanup段的最后两个字节流以相反的方向增长,因此不需要单独传达它们的长度。MagSgn字节流在先验长度上难以绑定,因此我们将其放在第一位,通过12位接口定位器字在两个正向增长流之间传递接口。每个字节流分别进行位填充过程,保证FFh字节后面不会跟随90h-FFh范围内的字节–这是一个J2K的要求,也可用于视频传输应用中的重新同步。快速Cleanup通道的三个字节流携带的信息如下。

  • 使用自适应MELCODE和上下文自适应可变长度代码(CxtVLC)的组合来识别重要样本。 MELCODE最初由Mitsubishi Electric Labs(MEL)开发,使用小型状态机将符号转换为二进制数字,具有与算术编码类似的特性。这些数字构成正向增长的MEL字节流。同时,VLC码位有助于向后增长的VLC字节流。
  • 对于每个重要样本,符号位,0以及其他更多的

的LSBs,在MagSgn字节流中作为原始位打包,仅位填充。

  • 每个重要样本出现的幅度位数由单独的VLC(称为U-VLC)传送。U-VLC位与VLC字节流中的CxtVLC位交错。

幅度指数

在位平面p中,为每个样本分配“幅度指数”

,其定义为:

对于无效的样本,

; 否则,

并且

是来自

的LSBs的数量,它们可以是非零的。

图3. 重要性前后关系

组结构和编码工具

重要性以2×2组编码。 每个组g具有一个4比特位重要性模式,

,其根据相邻样本的重要性的上下文进行编码,如图3所示。根据这些邻近样本的重要性形成八个不同的编码上下文

; 此外,

=1对应于特殊的全零上下文(AZC),其与该组相邻的所有样本都是无关紧要的。对于AZC组(

=0的那些),首先对二进制组重要性符号

进行编码,指示整个组是否无关紧要(

=0)或该组具有至少一个重要样本(

=1)。该组重要性符号使用类似于JPEG-LS标准所采用的自适应MELCODE进行编码,但使用仅具有13种状态的自定义状态机。实验表明

这种自适应编码引擎与J2K中的“MQ”算术编码器具有基本相同的效率,但由于小状态机和简单的状态转换映射,编码/解码吞吐量可以高得多。

对于非AZC组和重要性AZC组,使用八个CxtVLC表编码重要性模式,每个上下文

一个。 码字长度被限制为最多6位以最小化复杂性。

对于有意义的2×2组,使用另外的VLC来对组中的每个位置n的

的值传递上限

。回想一下,

是来自

的LSBs的数量,它们可以是非零的,因此对于g组中的每个重要样本,

都是包含在MagSgn字节流中一个足够数量级的比特。如果该组只有一个重要样本,则该边界必须是严格的,因此这些

位中最重要的一个肯定是1并且不包含在MagSgn字节流中。

的值表示为

,其中

是单个幅度指数导出的预测器,而

是U-VLC编码的主体的非负偏移。

HTJ2K标准的改进

上一节中描述的算法与JPEG WG开发的HTJ2K标准(J2K Part-15)的早期提议相对应。最终算法包括若干改进,导致编码效率提高约2%,在某些特定条件下甚至能高达4%,且其对吞吐量没有任何显著影响。第一个改进是将CxtVLC代码扩展为variable-to-variable编码方案,该方案编码关于每组中各个样本的幅度指数Ep [n]的一系列信息,在码字长度上受到7位的约束。第二个改进是自适应MEL编码程序的扩展,以促进编码块中第一行组内的幅度边界Ug的有效编码,在这其中是不能形成有意义的预测器kg的;这种改进对于超低延迟配置及其有利,其中推荐使用尺寸为4×1024的短代码编码块。

是什么使他如此高效

FAST块编码器中的所有元素都经过精心选择和参数化,以优化软件和硬件部署中的吞吐量性能权衡。该算法在编码器和解码器中都可以广泛地进行矢量化,能够充分利用AVX512,AVX2,NEON,BMI2等现代指令集的优点,达到预期的程度。快速Cleanup通道的三字节流结构解耦了编码和解码过程的不同阶段,即使对于软件部署也会产生实质性的好处。另外可变长度编码技术也经过仔细挑选,使得基于查找的实现在软件中变得有利。与J2K块编码器一样,每个块都可以并行编码或解码,但FAST块编码器可以同时处理多个位平面,从而编码块样本中的多个顺序通道也可被避免;此外,Cleanup,SigProp和MagRef通道都可以在编码器和解码器中并行处理。

转码应用程序和性能

我们在此提供了有关压缩效率和FAST块编码算法在转码环境中的高吞吐量的证据。原始J2K块比特流被压缩为1,2和4 bpp,然后可逆地转码为FBCOT格式。图4显示了与转码后的FBCOT格式相关的压缩大小的平均增长,大多数图像来自原始J2K测试库(Aerial2,Bike,Café,Cats,Cmp2,Finger,Goldhill,Hotel, Mat,Seismic,Texture1,Texture2,Tools,Ultrasound,Water,Woman和Xray),我们添加了两个高分辨率彩色图像(Waltham1和Waltham2),这些图像后来为评估J2K做出了贡献。作为参考,我们还报告了转码对J2K块编码器的全旁路模式的影响,在此表示为“BYP”-这是J2K块编码器提供的最快可用模式,其中在所有SigProp和MagRef通道中算术编码被绕过。

图4. 可逆转码的相对大小增加

图5. 解码吞吐量,千兆样本/秒

图5显示了J2K,BYP和FAST块编码算法的平均解码吞吐量,以每秒千兆样本表示。这些结果是通过在配备2.6 GHz Skylake CPU的2016 15英寸Macbook Pro笔记本电脑上测量块解码器的吞吐量而获得的。测试是单线程的,但是需要将处理每个代码块所花费的测量时间除以4,因为其CPU有四个内核。结果与上述相同的测试图像基本保持一致。我们注意到,吞吐量计算中未包含的变换和量化步骤可以在这里使用的CPU的单核上每个样本执行大约1.5个时间,这至少可以部分地被i7 CPU中的超线程所抵消。相对于J2K的整体加速比在1,2和4pp时分别为10.5×,15×和21×。所有这些结果都是使用众所周知的J2K商用Kakadu工具包(版本7.9.2)获得的,这通常被认为是一种非常有效的实现。但请注意,Kakadu的高度优化的Speed-Pack版本可以进一步加速J2K块编码和解码约1.5倍。值得注意的是,大多数原始测试图像都是灰度图像。为了更好地了解可预期的吞吐量,我们注意到与库中的五个RGB测试图像相关的平均解码吞吐量,以每秒千兆像素表示,在1 bpp时为2.4 Gp / s,2 bpp时为1.5 Gp / s和4 bpp时为0.88 Gp / s。作为参考,3840×2160 4:4:4 24p视频对应于大约0.2Gp / s。

实现高性能端到端视频压缩

在这里,我们提出了FBCOT算法的吞吐量和效率,包括FAST块编码器和动态估计一系列用于编码每个代码块的编码通道的有效方案,之后由PCRD-opt算法决定在每个帧的码流中包括哪些编码通道。我们每块最多生成六个编码通道(2×Cleanup,SigProp和MagRef)。该算法使用统计收集的压缩早期帧来确定实际编码的通道。图6比较了两个众所周知的4K 4:4:4 60-Hz视频序列的平均PSNR(来自所有信道和帧的平均平方误差)。 比较涉及常规J2K,全旁路变体(BYP)和FBCOT(快速); 结果是使用32×32码块(由J2K D-Cinema / IMF配置文件指定)和比特率1,2和4 bpp获得的。在2 bpp时,整个视频编码过程的吞吐量,包括小波和颜色变换,数据转换,量化,块编码和速率控制,在基本时钟频率为3.4 GHz的4核i7 Skylake CPU上约为70帧/秒。对于相同平台上相同的4K 4:4:4内容,整个视频解码过程的吞吐量约为108帧/秒。

图6. FBCOT与K2L及其全旁路(BYP)模式的视频压缩效率比较

HTJ2K标准的未来展望

上面给出的所有实验结果都与HTJ2K标准的早期提案(J2K Part-15)相对应。最终在该标准的CD中采用的算法包含许多改进,如上所述。TABLE 1相对于使用众所周知的Kakadu工具包实现的完整J2K Part-1块编码算法,总结了最终算法在编码效率和吞吐量改进方面的独立评估。这些结果均基于从专业视频内容中获取的19个标准HTJ2K评估图像。

这些结果证实,HTJ2K标准将为吞吐量带来巨大的好处,使更多的应用程序和系统能够从J2K的丰富功能集中受益。实际上,除了比JPEG-1(ISO / IEC 10918-1)更高效之外,HTJ2K实现起来也可能更快。

由于FAST块编码算法是J2K块编码器的直接替代品,因此支持J2K的所有功能,包括从内容中提取和解码任意分辨率的任意感兴趣的区域。因为8K捕获将变得更加普遍,这可能在专业视频处理应用中会变得越来越重要。

目前,J2K的质量可扩展性属性并未广泛用于专业视频应用。然而,质量可扩展性对于通过带限网络的J2K媒体的高响应性交互式流传输非常重要,这是由J2K第9部分(JPIP)启用的-请参阅Taubman和Prandolini2以获得JPIP的概述。尽管FAST块编码器一定程度上牺牲了质量可扩展性,但HTJ2K标准提供了保留与质量可扩展J2K码流相关的所有信息的机制。此外,可以按照需求使用J2K的可逆转码来恢复质量可扩展性,即使在逐个编码块的基础上,也可以在任意感兴趣的窗口实现高效的图像/视频内容交互流。

这种性能和功能的结合为HTJ2K解决方案在摄像机,服务器,浏览器和移动设备中的应用提供了强有力的论据,尤其在高分辨率和VR和360°内容的情况下更甚。

参考文献

1. D. Taubman, “High Performance Scalable Image Compression with EBCOT,” IEEE Trans. Image Proc., 9(7):1158–1170, 2000.

2. D. Taubman and R. Prandolini, “Architecture, Philosophy and Performance of JPIP: Internet Protocol Standard for JPEG 2000,” Int. Symp. Visual Comm. Image Proc., 5150:649–663, 2003.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 媒矿工厂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
媒体处理
媒体处理(Media Processing Service,MPS)是智能、强大、全面的多媒体数据处理服务,行业支持最全面的音视频编码标准,基于自研编码内核和AI算法,提供音视频转码和增强、媒体智能、质检评测等能力,帮助您提升媒体质量、降低成本,满足各类场景的音视频处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档