图像编码和解码的方法、编码和解码设备以及计算机程序的制作方法

文档序号:9399622阅读:418来源:国知局
图像编码和解码的方法、编码和解码设备以及计算机程序的制作方法
【专利说明】
[0001] 本申请是申请号为201280031335. 9,申请日为2012年6月20日,题为"用于对图 像编码和解码的方法、编码和解码设备以及相应的计算机程序"的中国发明专利申请的分 案申请。
技术领域
[0002] 本发明一般属于图像处理的领域,且更准确地属于数字图像和数字图像序列的编 码和解码。
[0003] 本发明由此可特别应用于在目前的数字视频编码器(MPEG,H. 264等)或未来的视 频编码器(ITU-T/VCEG(H. 265)或IS0/MPEG(HVC))中实现的视频编码。
【背景技术】
[0004] 目前的视频编码器(MPEG、H264等)使用视频序列的逐块表示。图像被分为宏块, 每个宏块本身可以被分为块,并且每个块或宏块通过图像内或图像间预测来编码。于是,特 定的图像通过空间预测(内预测)来编码,而其他图像在相对于一个或多个被编码-解码 的参考图像的时间预测(间预测)、在本领域技术人员已知的运动补偿的帮助下进行编码。 此外,针对每个块,可以对与原始块减去预测相对应的残留块进行编码。该块的系数可以在 变换之后被量化,然后被熵编码器编码。
[0005] 内预测和间预测需要之前已经被编码和解码的特定块可用,从而在解码器上或在 编码器上被用于预测当前块。图1示出了这样的预测编码的示例性例子,其中,图像^被 分为块,该图像的当前块MB 1E在关于预订数量的之前被编码和解码的块MBr pMBrjP MBr 3 进行预测编码,例如如阴影箭头所示。上述三个块特别包含紧接当前块侧的块MBr i, 以及分别仅紧接当前块MB1I方和右上方的两个块MBr 2和MBr 3。
[0006] 熵编码器在这里更为感兴趣。熵编码器以其到达的顺序来编码信息。典型地实 现"光栅扫描"类型的块的逐行遍历,如图1所示通过引用PRS,从图像左上角的块开始。对 于每个块,用来表示块所必须的各个信息项(块的类型、预测模式、残留系数等)被顺序分 发到熵编码器。
[0007] 已知在AVC压缩标准(也被称为IS0-MPEG4第10部分和ITU-T H. 264)中引入的 被称为"CABAC"(上下文适应二进制算术编码器)的足够复杂的有效的算术编码器。
[0008] 熵编码器实现各个概念:
[0009] -算术编码:编码器例如初始在文档J. Rissanen and G. G. Langdon Jr, "Universal modeling and coding," IEEE Trans. Inform. Theory,vol. ΙΤ-27,ρρ· 12 - 23, Jan. 1981中描述的编码器使用符号出现概率来对该符号进行编码;
[0010] -上下文适应:在这里,这包括适应要编码的符号的出现概率。一方面,快速实现 学习。另一方面,依赖于之前被编码的信息的状态,特定的上下文被用于编码。对于每个上 下文,存在固有的符号出现概率与之对应。例如,上下文对应于根据给定配置来编码的符 号的类型(残留系数的表示、编码模式的信号等),或者邻居的状态(例如在邻居中选择的 "内"模式的数量等)。
[0011] -二进制化:实现要编码的符号的比特序列的成形。随后,这些各个比特被相继分 发到二进制熵编码器。
[0012] 于是,针对使用的每个上下文,该熵编码器实现一种系统,针对所考虑的上下文来 快速学习关于之前被编码的符号的概率。该学习基于对这些符号进行编码的顺序。典型地, 根据如上所述的"光栅扫描"类型的顺序来遍历图像。
[0013] 在可以是0或1的给定符号b的编码期间,通过下列方式来更新当前块MB1的该 符号的出现概率Pi的学习:
[0014]
[0015] 其中,α是预定值例如〇. 95, P1 i是在该符号最后出现时计算的符号出现概率。
[0016] 图1示出了这样的熵编码的示例性例子,其中,图像I』勺当前块MB1被熵编码。 在块熵编码开始时,所使用的符号出现概率是之前被编码和解码的块的编码之后获 得的概率,根据上述□光栅扫描□类型的块的逐行遍历,该块正好在当前块MB 1的前面。仅 为了图的清楚,在图1中通过细箭头针对特定的块来表示这样的基于块和块的依赖性的 学习。
[0017] 该类型的熵编码的缺点在于,考虑到块的□光栅扫描□遍历,在对位于一行开始 的符号进行编码时,使用的概率主要对应于在前一行结束位置的符号所看到的那些概率。 现在,考虑到符号概率的可能的空间变化(例如,对于和运动信息项相关的符号,位于图像 右侧部分的运动可以和在左侧部分看到的不同,并且因此对于随后的局部概率来说也是类 似的),可以看到概率的局部一致性的缺失,由此可能增加编码期间的效率损失。
[0018] 为了限制该现象,已经提出了对块的遍历顺序的调整,目标是确保更好的局部一 致性,但编码和解码仍保持顺序。
[0019] 该类型的熵编码器还有另一个缺点。确实,符号的编码和解码依赖于就此学习的 概率,符号的解码可以仅以与在编码期间使用的顺序相同的顺序来实现。典型地,于是解码 可以只是顺序的,由此阻止若干个符号的并行解码(例如从多核架构中受益)。
[0020] 文档 Thomas Wiegand,Gary J. Sullivan,Gisle Bjontegaard,and Ajay Luthra, ^Overview of the H. 264/AVC Video Coding Standard",IEEE Transactions on Circuits and Systems for Video Technology,Vol.l3,No.7,pp. 560-576, July 2003 还指出,CABAC 熵编码器具有将非整数数量的比特分配给要编码的当前字母表的每个符号的特殊特征,这 对于大于0.5的符号出现概率是有利的。特别地,CABAC编码器等待直到它已经读取了若 干个符号,然后将预定数量的比特分配给读取的该符号集,编码器将该比特写到要发送到 解码器的压缩流中。这样的规定由此使其可能使若干个符号上的比特"交互作用",并对 分数数量的比特上的符号进行编码,该数量反映了与通过符号实际发送的信息更接近的信 息。与读取的符号关联的其他比特未在压缩流中发送,而是保持等候,等待被分配给CABAC 编码器读取的一个或多个新的符号,使其可能再次使这些其他比特交互作用。通过已知的 方式,熵编码器在给定的时刻"清空"这些未发送的比特。除非另外说明,在所述给定的时 亥IJ,编码器提取还未被发送的比特,并将它们写入到去往解码器的压缩流中。该清空例如在 已经读取要编码的最后一个符号的时刻进行,以确保压缩流确实包含所有比特,该比特将 允许解码器对字母表中的所有符号进行解码。通过更一般的方式,作为专用于给定编码器 /解码器的性能和功能的函数来确定进行清空的时刻。
[0021] 在 2011 年 4 月 15 号的互联网地址 http://research. microsoft. com/en-us/um/ people/jinl/paper_2002/msri_jpeg. htm 上可用的文档描述了一种对符合 JPEG 2000 压 缩标准的静态图像进行编码的方法。该静态图像经过离散小波变换,然后被量化,由此使其 可能获得量化的小波系数,量化索引分别与之关联。在熵编码器的帮助下对获取的量化索 引进行编码。量化系数之前被分组为称为代码块的矩形块,大小典型为64x 64或32x 32。 每个代码块然后被熵编码独立编码。于是,在对当前的代码块进行编码时,熵编码器不会使 用在之前的代码块的编码期间计算的符号出现概率。熵编码器由此在每次开始代码块的编 码时处于初始化状态。该方法展示了对代码块的数据进行解码而不用对相邻的代码块进行 解码的好处。于是,例如,一个客户端软件可以请求一个服务器软件提供仅客户需要的压缩 代码块来对图像中识别的子部分进行解码。该方法还展示了允许代码块的并行编码和/或 解码的优势。于是,代码块的大小越小,并行化级别就越高。例如,对于固定为2的并行化 级别,两个代码块将被并行编码和/或解码。理论上,并行化级别的值等于图像中要编码的 代码块的数量。但是,考虑到该编码没有利用从当前代码块的中间环境出现的概率,该方法 获得的压缩性能不是最优的。

【发明内容】

[0022] 本发明的一个目标是修复上述现有技术的缺陷。
[0023] 为此,本发明的主题涉及一种对至少一个图像进行编码的方法,包括下列步骤:
[0024] -将图像分割为可以包含属于预定符号集的符号的多个块,
[0025] -将所述块分组为预定数量的块子集,
[0026] -通过熵编码模块、通过将数字信息与所考虑的子集中的每个块的符号进行关联 来对所述块子集中的每个进行编码,该编码步骤包括针对图像的第一块来初始化熵编码模 块的状态变量的子步骤,
[0027] -生成表示被编码的块子集中的至少一个的至少一个数据子流,
[0028] 根据本发明的方法值得注意,在于:
[0029] -在当前块是所考虑的子集中要被编码的第一块的情形下,确定该第一当前块的 符号出现概率,该概率是针对至少一个其他子集的编码和解码的预定块而已经确定的那 些概率,
[0030] _在当前块是所考虑的子集中最后编码的块的情形下:
[0031] 鲁将在所考虑的所述子集中的块的编码期间与所述符号关联的所有数字信息写 入到子流中,该子流表示所考虑的子集,
[0032] ?实现初始化子步骤。
[0033] 上述写入步骤相当于,一旦块子集中的最后一块已被编码,清空还未被发送的数 字信息(比特),如上描述所解释。
[0034] 上述写入步骤和重新初始化熵编码模块的步骤的耦合使其可能产生包含各个数 据子流的被编码的数据流,该数据子流分别对应于该至少一个被编码的块子集,所述流适 合根据各种并行化级别来编码,并且这与应用于块子集的编码类型不管是顺序还是并行无 关。于是,在编码时可以在并行级别的选择上有很大的自由度,该并行级别作为期望的编码 /解码性能的函数。解码的并行级别可变,且甚至可以与编码的并行级别不同,因为在开始 块子集的解码时,解码器总是处于初始化状态。
[0035] 根据第一例子,熵编码模块的状态变量是表示预定符号集的符号中的符号出现概 率的区间的两个边界。
[0036] 根据第二例子,熵编码模块的状态变量是本领域技术人员熟知并且在2011年6 月 21 日在下列互联网地址 http://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv% E2% 80% 93Welch中描述的LZW(Lempel-Ziv-Welch)熵编码器的转换表中包含的符号的 串。
[0037] 使用在所考虑的块子集的第一当前块的熵编码期间使用针对所述其他子集的第 一块来确定的符号出现概率的主要好处是,通过在后者中仅存储所述符号出现概率的更新 而不用考虑通过所述其他子集中的其他连续块来学习的符号出现概率,来节省编码器的缓 冲存储器。
[0038] 在所考虑的块子集中的第一当前块的熵编码期间使用针对所述子集中除了第一 块以外的块例如第二块来确定的符号出现概率的好处是获得更准确且由此更好地学习符 号出现概率,由此提升更好的视频压缩性能。
[0039] 在特定的实施例中,块子集被顺序或者并行编码。
[0040] 子集块被顺序编码的事实所具有的好处是展示符合H. 264/MPEG-4AVC标准的根 据本发明的编码方法。
[0041] 子集块被并行编码的事实所具有的好处是加速编码器处理时间且受益于图像编 码的多平台架构。
[0042] 在另一特定实施例中,当至少两个块子集与至少一个其他的块子集并行编码时, 该至少两个被编码的块子集被包含在相同的数据子流中。
[0043] 该规定使其特别可能节省数据子流的信令。确实,为了使解码单元能够尽可能早 地对子流进行解码,需要在压缩文件中指示所考虑的子流在何处开始
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1