用于在跳过变换的情况下对块的符号编码的制作方法_4

文档序号:9932927阅读:来源:国知局
码,解码器对第一个符号进行特殊处理,如操作256 所示。如果这是块中按照扫描顺序的第一个符号,则操作258中,基于predSign值和解码的 isNotPredFlag来设置第一符号位。也就是说,如果isNotPredFlag是0,即,该符号和预测相 同,就将该符号位设置为等于predSign值。否则,将其设置为predSign值的相反值。然后,在 操作260中,状态索引自动递增为状态1。然后,方法250回到对下一个符号进行解码的操作。
[0095] 如果其不是操作256中确定的第一个符号,在操作262中,解码器评估状态是否为0 且解码的isNotPredSign标志是否为0。这些条件测试机器是否处于非零状态以及当前解码 的符号与预测符号是否相同。如是,则在操作264中,符号位被重建为等于predSign值,并且 在操作266中,状态索引递增1,且不大于最大值(该情形中为4)。注意,在该情况下,由于 predSign值和刚重建的符号位相同,所以我们不必更新predSign值。然后,方法250回到操 作254,使用对应于递增后的状态索引的上下文对下一个isNotPredSign标志进行解码。 [0096] 在操作262中,如果状态为0或者isNotPredSign为1,则在操作268中,基于 isNotPredSign标志和predSign值来重建当前符号位。如果isNotPredSign标志为1,则将符 号位重建为predSign值的相反值,并且如果isNotPredSign标志位0,则将符号位重建为与 predSign值相同。然后,在操作270中将predSign值设置为等于重建的符号位,并且在操作 272中将状态索引设置为0。然后,方法250回到操作254,使用不基于上下文的编码对下一个 isNotPredSign标志进行解码。
[0097]将要理解的是,在一些实施例中,可以结合基于有限状态机上下文的编码过程来 使用相同符号标志。
[0098] 基于先前编码的标志的上下文确定
[0099] 在又一个方案中,可以使用基于上下文的编码对变换跳过块中的符号位进行编码 和解码,其中所述上下文基于相邻或先前编码的符号位的值。在另一个示例中,可以使用两 个或更多个相邻或先前编码的系数来确定用于符号编码的上下文。
[0100] 作为示例实施例,两个相邻系数可以是当前系数下方的系数和当前系数右方的系 数。当前系数可以表示为X,并且两个相邻系数表示为A和B,如下所示
[0101] X A
[0102] B
[0103]系数的符号可以表示如下:
[0104] sgn(x)= 1,如果x>0
[0105] 0,如果x = 0
[0106] -1,如果 x<0
[0107] 关于X的符号,可以得到以下观察:
[0108] sgn(A)+sgn(B) >0:A和B的主导符号为正,且X更可能为正 [0109] sgn(A)+sgn(B)<0:A和B的主导符号为负,且X更可能为负 [0110] sgn(A)+sgn(B)=0:A和B没有主导符号,且X的符号可能是等概率的 在sgn(A)+sgn(B) = 0的情形中,X的符号没有偏好,并且可被旁路编码,即,每个符 号标志1位。在sgn(A)+sgn(B)!=0的情形中,可以使用基于上下文的编码,且X的符号的示 例模型如下给出: .ctxlnc ( s:ig.n of X )=(),如果《gn (A) + s.gn(B) ; -2 1,如災 sgt\(A) + sgn(B)二;1
[0112] >2,如.果 sgn (A) + s_g:n (B) - - -1 3,如果 (A) + s.gn (13) -'.一 2
[0113] 在一个实施例中,使用以下表达式来推导上下文:
[0114] ctxlnc(sign of X) = sgn(A)+sgn(B) >0?2*(sgn(A)+sgn(B) )_1: 2*(sgn(A)+sgn (B)+2)
[0115] 注意,这仅是基于先前编码的符号来推导用于系数符号编码的上下文的一个示 例,其中A和B是X的两个最接近的空间相邻系数。在另一个示例中,A和B可以是按相反扫描 顺序(或更一般地,系数解码顺序)的两个先前编码的系数。在又一个示例中,在上下文推导 中可以使用两个以上相邻系数的符号。
[0116] 基于相邻系数的预测
[0117] 如上所述,取代符号位本身,可以对isNotPredSign标志进行编码,以信号发送符 号位与预测是否匹配。在上述实施例中,预测基于先前编码的符号。在另一个方案中,预测 可以基于相邻系数的符号和幅值,例如A+B>0。在一个示例中,相邻系数可以包括变换跳过 块中的右邻和下邻。在一个示例中,预测符号predSign可被定义为:
[0118] predSign = 0,如果sgn(A)+sgn(B) > = 0
[0119] 1,如果 sgn(A)+sgn(B) <0 [0120]在另一个示例中,predSign被定义为:
[0121 ] predSign = 0,如果sgn(A)+sgn(B) >0
[0122] 1,如果 sgn(A)+sgn(B) < =0
[0123] 如其他实施例中所述,预测可以基于两个以上的相邻系数,或者可以基于块中按 照扫描顺序的两个或两个以上的先前编码的系数。在又一个实施例中,预测可以基于按照 扫描顺序的先前编码的符号值,即,仅考虑非零系数。
[0124] 标志isNotPredSign可以是上下文编码的。上下文可以使用以上结合符号位描述 的相同模型。也就是说,可以给出如下的上下文模型: .ctxlnc ( isNlotPrudS i gn ) =: 0,如果 sg.n(A) .+ s.gn(B) ; -2 1,如果 sgn(A) + sgt\〇3)'二;1
[0125] >2,如果 s.gtv(A) + sgn (B) - - -1 3,如果 (A) + s.gn (13) -'.一 2
[0126] 在sgn(A)+sgn(B) =0的情形中,isNotPredSign标志不具有偏好,并且可以被旁路 编码,即,不基于上下文的编码。还观察到概率Pr{X为负| sgn(A)+sgn(B) =-a}和概率Pr{X 为正I sgn(A)+sgn(B) =a}相近,其中a = l,2。这表明:
[0127] Pr{ isNotPredSign = 0 | sgn(A)+sgn(B) =~a} x
[0128] Pr{ isNotPredSign = 0 | sgn(A)+sgn(B) = a}
[0129] 因此,可以将条件合并以减少上下文的数量。在该情形中,当sgn(A)+sgn(B)!=0 时,给出如下的用于对isNotPredSign进行编码的示例上下文模型:
[0130] ctxlnc(isNotPredSign)=abs(sgn(A)+sgn(B))-l
[0131] 现在参考图8,其以流程图的形式示出了用于视频编码器中对变换跳过块的符号 进行编码的示例方法300。方法300开始于操作302,如上所述,基于来自变换跳过块的两个 或更多个先前编码的系数,设置predSign值。块的右下方部分中的系数的符号可以具有位 于块边界外的相邻系数,其中,可以假设位于块边界外的这些相邻系数为0。
[0132] 操作304中,将predSign和当前符号(currSign)相比较,如果它们相同,贝lj方法300 前进至操作306,将isNotPredSign标志设置为0,以指示该标志和预测相匹配。否则,在操作 308中将isNotPredSign标志设置为0。接下来,在操作310中,根据来自变换跳过块的两个或 更多个先前编码的系数,确定上下文。如上所述,在一个实施例中,上下文可以基于abs(sgn (A)+sign(B))-l。在其他实施例中,可以地使用更多或更少的相邻系数来确定上下文。然 后,如果块中存在要被编码的附加符号,方法300回到操作302。注意,在一些例子中,操作 310可以包括确定不应使用基于上下文的编码来对isNotPredSign标志进行编码,这时,在 操作312中使用不基于上下文的编码。
[0133] 图9中以流程图的形式示出了用于在视频解码器中重建符号位的对应示例解码方 法320。方法320包括:在操作322中,基于来自块的两个或更多个先前编码的系数设置 predSign值。然后,在操作324中,根据来自块的两个或更多个先前编码的系数,确定上下 文。注意,在一些实施例中,用于确定上下文的系数和用于确定预测符号的系数可以相同, 并且在其他实施例中,用于确定上下文的系数和用于预测符号值的系数可以不同。
[0134] 一旦已确定上下文,在操作3 2 6中,从编码视频数据的比特流中解码 isNotPredSign标志。如果上下文确定导致EP旁路编码,则使用不基于上下文的解码对 isNotPredSign标志进行解码。否则,将所确定的上下文用于isNotPredSign标志的基于上 下文的解码。
[0135] 操作328中,解码器评估已解码的isNotPredSign标志是否为0。如是,则将符号位 重建为具有与predSign值相同的值,如操作332所示。否则,在操作330中,将符号位重建为 具有与predSign值相反的值。
[0136] 符号翻转(flipping)
[0137] 在一些例子中,可以改进计算复杂性并改进上下文适应性以减少所保持和确定的 上下文的数量。在另一个方案中,变换跳过块的符号编码可以使用单个上下文。在变换块的 常规符号编码中,正号和负号出现的概率相等,这意味着基于上下文的编码没有增强压缩。 即使在变换跳过块的情况下,对于多个变换跳过块,正号和负号出现的概率相等,虽然在个 别变换跳过块的情况下,存在着针对一个符号或另一个符号的强偏离。因此,可以控制个别 块的符号,以确保在符号分布中保持偏离,以使得基于上下文的编码得到更好的压缩效率。
[0138] 在一个方案中,为保持偏离而指定主导符号,并且如果变换跳过块的大部分不是 主导符号,则使该块的所有符号翻转。针对每个变换跳过块,引入用于信号发送符号是否已 翻转的标志。本申请中使用的术语"翻转"的含义是将符号反转,即,从正到负或从负到正。
[0139] 在一些例子中,符号翻转条件还允许推测符号。例如,如果主导符号为正,并且在 编码/解码期间几乎大多数的负符号被编码/解码,则可以推测所有剩余符号应当为正,因 而不需要对其进行编码/解码。
[0140]用于信号发送变换跳过块是否使其符号翻转的标志可被表示为flipSign标志。可 以使用单个专用上下文对该标志进行上下文编码/解码。还可以使用单个专用上下文对符 号位本身进行上下文编码。
[0141] 现在参考图10,其以流程图的形式示出了在视频编码器中对变换跳过块的符号位 进行编码的示例方法400。方法400包括在操作402中设置主导符号。可以将其作为编码在序 列首部、图片首部或比特流中的其他位置的标志来信号发送。在一些实施例中,可在编码器 和解码器二者中对其进行默认设置。主导符号被设置为正或负中任一个,
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1