用于非变换编码的扫描次序的制作方法_3

文档序号:9693681阅读:来源:国知局
有特定预测模式和大小的经变换的块时,可使用第一扫描次序。与此同时,当扫描具有与经变换的块相同的预测模式和/或大小的非变换块时,熵编码组件208可确定是使用第一扫描次序还是第二扫描次序。例如,如果非变换块与特定类型的预测相关联(例如,非变换块已经经历了帧内预测),则可使用第二扫描次序。替换地,如果非变换块不与特定类型的预测相关联(例如,非变换块已经经历了帧间预测),则可使用第一扫描次序。在另一示例中,如果非变换块具有比预先确定的大小更小的大小(例如,非变换块为4x4或8x8),则可使用第二扫描次序。然而,如果非变换块具有等于或大于预先确定的大小的大小(例如,非变换块为8x8或更大),则可使用第一扫描次序。
[0043]在还一示例中,熵编码组件208可基于非变换块的预测模式的加权值和非变换块的大小的加权值来确定是否从与经变换的块相关联的预先确定的或默认的扫描次序改变。例如,如果二维阵列的大小大于预先确定的大小达特定量,则该大小可被更多地加权来维持当前扫描次序。替换地或附加地,该大小或预测模式可被选择来相比于对方更多地加权(例如,相比于块的大小,预测模式将对决定具有更大的影响)。
[0044]在图2的示例中,熵编码组件208可确定是否从预先确定的或默认的扫描次序214之一切换到扫描次序216之一。在此,预先确定的扫描次序214可一般地被执行,除了其中块包括如以上讨论的特定特征(例如,非变换块具有特定大小和/或与特定预测模式相关联)的实例之外。与此同时,扫描次序216可对应于预先确定的扫描次序214的逆扫描次序。如此,在一些示例中,熵编码组件208可确定是否从预先确定的扫描次序切换到该预先确定的扫描次序的逆。但是,在其它示例中,扫描次序216可包括除了逆扫描次序之外的其它类型的扫描次序。
[0045]在一些实现中,通过选择性地从一个或多个预先确定的或默认的扫描次序改变扫描次序,各技术可允许与块相关联的特定类型的数据被高效地安排和/或避免不必要地引入由于改变扫描次序而产生的复杂性。例如,由于与帧内预测相关联的非变换块可在与经变换的块相比的相对区域中(例如,在相比于右上侧的右下侧处)一般地包括非零值(例如,残余信息),各技术可通过改变针对与帧内预测相关联的非变换块的扫描次序来高效地将非零值安排在一维阵列的一端处以用于高效的熵编码。此外,由于扫描次序方面的改变可增加扫描块的复杂性(例如,相比于维持扫描次序),当改变不可产生任何增加的益处时,各技术可通过改变针对小于预先确定的大小的非变换块的扫描次序来避免将增加的复杂性引入到扫描。
[0046]虽然扫描过程被描述为由熵编码组件208来执行,但是其它组件可执行扫描过程,诸如量化组件206或另一组件。在至少一个示例中,量化组件206执行扫描过程并输出被输入到熵编码组件208的数据的一维阵列。
[0047]熵编码组件208可对产生自扫描过程的数据的一维阵列执行熵编码。熵编码可包括执行上下文自适应二进制算法编码(CABAC)、上下文自适应可变长度编码(CAVLC)、概率熵编码(PIPE)等。熵编码可生成至少部分地表示视频内容的比特流。如图2中示出的,一个或多个编码块224到编码器114内的输入可产生比特流226的输出。
[0048]编码器114还可包括逆量化组件218以执行当前被编码的块的逆量化。此后,逆变换组件220可选择性地将逆变换应用到该块。如果该块在变换组件204处被变换,则逆变换可在该块上执行。然而,如果该块没有在变换组件204处被变换,则逆变换可不被执行。在任一情况下,可基于来自预测组件202的信息由重构组件222重构该块。该信息可指示出用于形成该块的残余信息的参考块。经重构的块可被用于编码另一块,诸如在与该块相同或不同的帧中的另一块。
[0049]尽管未在图2中示出,但是编码器114可包括其它类型的组件,诸如用于平滑块的边界之间的边缘的去块化过滤器或任意其它组件。
[0050]图3示出图1的解码器128的示例细节。解码器128可一般地执行编码器114的逆操作。解码器128可包括熵编码组件302来对比特流304执行逆熵编码。熵编码可包括根据特定扫描次序(例如,被熵编码组件208使用的扫描次序)来扫描比特流304的数据。扫描次序可在比特流304中或其它地方指定、基于块的特征(例如,块的大小、预测模式、变换模式等)来确定、被先前定义等。例如,扫描过程可从预先确定的或默认的扫描次序306和逆扫描次序308中选择扫描次序来对比特流304执行逆熵编码。在一个示例中,如在图3中显示的,扫描过程可根据特定扫描次序将一维阵列310(例如,比特流304)扫描到二维阵列312中。如果扫描过程开始于一维阵列310的左侧(例如,子单元“al6”),则子单元“al6”、“al2”、“a8”和“a4”可作为二维阵列312的一列被扫描到二维阵列312中。接着,一维阵列310的下一子单元集(例如,“al5”、“all”、“a7”和“a3”)可被扫描到二维阵列312的另一列中,以此类推。替换地,在一些实例中,如果扫描过程开始于一维阵列310的右侧,则可执行逆扫描(例如,针对被执行来编码数据的扫描的逆)。如类似于以上参考图2的熵编码组件208所讨论的,熵编码组件302可选择性地改变被用于扫描比特流304的扫描次序。例如,如果不同的扫描次序被用于编码块(例如,不同于被用于另一块的预先确定的或默认的扫描次序),则熵编码组件302可切换到针对该块的不同的扫描次序。如以上提到的,当例如非变换块与特定类型的预测(例如,帧内预测)相关联和/或具有小于预先确定的大小的大小时,不同的扫描次序可被使用。熵编码组件302可包括与以上参考图2的熵编码组件208所讨论的特征类似的特征。
[0051]解码器128还可包括逆量化组件314、逆变换组件316和预测组件318。组件314-318可一般地包括与图2的组件202-206的特征类似的特征,以执行组件202-206的逆操作。例如,逆量化组件314可对块(例如,经量化的系数或经量化的残余信息)执行逆量化,逆变换组件316可对块(例如,变换系数)执行逆变换,并且预测组件318可对块(例如,残余信息)执行预测。在其中块没有被变换的实例中,逆变换组件316可避免应用逆变换。通过这么做,解码器128可输出表示经解码的视频内容的一个或多个编码块320。
[0052]虽然在示例解码器128的以上讨论中扫描过程由熵编码组件302来执行,但是扫描过程可由另一组件来执行,诸如逆量化组件314或任意其它组件。在一个示例中,逆量化组件314可在数据从一维阵列改变到二维阵列之前或之后来逆量化该数据。
[0053]示例扫描次序
[0054]图4A和4B示出可被用于扫描块的示例扫描次序400-410。扫描次序406-410可分别包括扫描次序400-404的逆扫描次序。在一些实例中,扫描次序400-404可包括被一般应用的默认的扫描次序,而扫描次序406-410可包括可被应用到包括特定特征(诸如特定大小和/或预测模式)的非变换块的替换扫描次序。如果多个默认的扫描次序被使用在一实现中,则可基于块的大小、被用在该块上的预测模式、该块的类型(例如,亮度或色度)等来选择用于该块的默认的扫描次序。在图4A和4B中,扫描次序400-410可一般地沿着实线来扫描并沿着虚线来针对下一扫描重新定位。
[0055]虽然扫描次序400-410被示出在图4A和4B中,但是其它类型的扫描次序可被用于扫描过程。此外,虽然扫描次序400-404被描述为默认的扫描次序,但是其它扫描次序可以是默认的扫描次序,诸如扫描次序406-410、扫描次序400-410中的任意一个或扫描次序400-410的任意组合。
[0056]扫描次序400可包括对角线扫描,其开始于块的子单元412并沿着实线扫描该块来到达子单元414。扫描次序402可包括垂直扫描,其开始于块的子单元416并沿着实线扫描该块来到达子单元418。扫描次序404可包括水平扫描,其开始于块的子单元420并沿着实线扫描该块来到达子单元422。
[0057]与此同时,扫描次序406-410可分别包括扫描次序400-404的逆扫描次序。具体而言,扫描次序406包括开始于子单元424并结束于子单元426的逆对角线扫描,扫描次序408包括开始于子单元428并结束于子单元430的逆垂直扫描,并且扫描次序410可包括开始于子单元432并结束于子单元434的逆水平扫描。
[0058]在一些实现中,如果确定使用与默认的扫描次序不同的扫描次序,则默认次序的逆扫描次序可被使用。为了说明,如果在根据扫描次序402(例如,垂直扫描)编码时确定针对块使用替换的扫描次序,则扫描次序408 (例如,逆垂直扫描)可被使用。该替换的扫描次序可被用于包括特定特征的非变换块,诸如与帧内预测相关联的和/或具有小于预
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1