具体实施方式
下面参考附图,详细描述本发明的具体实施方式。
图2是根据本发明实施例的获取图像的运动矢量和边界强度的方法的流程图。如图2所示,该方法包括以下步骤:S202,根据当前要解码的分块的类型以及当前要解码的分块所在宏块/子宏块的类型,确定当前要解码的分块的运动矢量预测方向信息和运动矢量计算方法信息;S204,根据当前要解码的分块的运动矢量计算方法信息,利用当前要解码的分块的运动矢量预测方向信息获取计算当前要解码的分块的运动矢量所需的相关信息;以及S206,利用所获取的计算当前要解码的分块的运动矢量所需的相关信息计算当前要解码的分块的运动矢量,并利用当前要解码的分块的运动矢量计算当前要解码的分块的边界强度。
在当前要解码的分块的运动矢量计算方法信息指示通过利用周围块信息的计算方法来计算当前要解码的分块的运动矢量时,在步骤S204中,利用当前要解码的分块的运动矢量预测方向信息获取当前要解码的分块的运动矢量残差和当前要解码的分块的周围块的相关信息,并且在步骤S206中,利用当前要解码的分块的周围块的相关信息计算当前要解码的分块的运动矢量预测值,并通过将当前要解码的分块的运动矢量预测值和当前要解码的分块的运动矢量残差相加来计算当前要解码的分块的运动矢量。
在当前要解码的分块的运动矢量计算方法信息指示通过利用对应位置块信息的计算方法来计算当前要解码的分块的运动矢量时,在步骤S204中,根据当前要解码的分块的运动矢量计算方法信息确定当前要解码的分块的后向参考帧对应位置块的相关信息,利用当前要解码的分块的运动矢量预测方向信息获取当前要解码的分块的参考帧图像顺序号,并且在步骤S206中,利用当前要解码的分块的后向参考帧对应位置块的相关信息和参考帧图像顺序号计算当前要解码的分块的运动矢量。
在当前要解码的分块的运动矢量计算方法信息指示通过利用周围块信息和对应位置块信息相结合的计算方法来计算当前要解码的分块的运动矢量时,在步骤S204中,根据当前要解码的分块的运动矢量计算方法信息获取当前要解码的分块的周围块的相关信息和当前要解码的分块的后向参考帧对应位置块的相关信息,,并且在步骤S206中,利用当前要解码的分块的周围块的相关信息计算当前要解码的分块的运动矢量预测值,并结合当前要解码的分块的后向参考帧对应位置块的相关信息和运动矢量预测值计算当前要解码的分块的运动矢量。可以根据当前要解码的分块的运动矢量计算方法信息从预先存在的当前要解码的分块的后向参考帧的所有信息中确定当前要解码的分块的后向参考帧对应位置块的相关信息。
另外,在上述两种情况中的任意一种情况下,还可以在步骤S204中利用当前要解码的分块的运动矢量预测方向信息获取当前要解码的分块的参考帧图像顺序号,并且可以在步骤206中利用当前要解码的分块的参考帧图像顺序号为当前要解码的分块的运动矢量计算加权预测值。
具体地,可以预先保存获取图像的MV和BS值需要的周围块或宏块的相关信息。在本实施例中,为一个宏块/子宏块中的所有16个4x4块都保存对应的4x4块信息用于计算宏块/子宏块中的任意一个4x4块的MV和BS值。其中,在用于NEI_CALC的基于行缓存的算法中,在宏块级的帧场自适应(MBAFF)情况下,一般至少需要保存与需要解码的4x4块所在宏块相邻的两行4x4块的相关信息用于求解计算该需要解码的4x4块的MV和BS值的过程中;在非MBAFF情况下,一般至少需要保存与需要解码的4x4块所在宏块/子宏块相邻的一行4x4块的相关信息用于求解计算该需要解码的4x4块的MV和BS值的过程中。在用于COLO_CALC的基于帧缓存的算法中,还需要特别保存后向参考帧中的块或宏块的相关信息用于计算,并且一般至少需要为每个参考帧保存整帧的对应位置信息(COLO_INFO)。
其中,图3示出了用于MV计算的MVP_INFO和COLO_INFO、以及用于BS计算的BS_INFO和BSUS_INFO(其用于保存BS计算所需的上一行的宏块信息)。如图3所示,其中运动矢量保存信息(MVP_INFO)包括前向预测方向指示信号(PRED_L0)、前向参考图像索引值(REFIDX_L0)、前向水平方向运动矢量值(MVX_L0)、前向垂直方向运动矢量值(MVY_L0)、后向预测方向指示信号(PRED_L1)、后向参考图像索引值(REFIDX_L1)、后向水平方向运动矢量值(MVX_L1)、后向垂直方向运动矢量值(MVY_L1);对应位置保存信息(COLO_INFO)包括场编码宏块对指示信号(MB_FIELD_DECODING_FLAG)、块运动指示信号(BLK_MOVING)、真实参考图像标记值(PICIDX)、参考帧奇偶场选择信号(PARITY)、水平方向运动矢量值(MVX)、垂直方向运动矢量值(MVY);边界强度保存信息(BS_INFO)包括非零残差块指示信号(IS_NON_ZERO_BLK)、宏块场编码指示信号(IS_MB_FIELD)、宏块帧内编码指示信号(IS_MB_INTRA)、前向参考图像标记值(PICIDX_L0,其唯一记录对应前向的参考图像)、前向参考图像奇偶场选择信号(PICIDX_PARITY_L0)、后向参考图像标记值(PICIDX_L1,其唯一记录对应后向的参考图像)、后向参考图像奇偶场选择信号(PICIDX_PARITY_L1);边界强度宏块保存信息(BSUS_INFO)包括宏块编码模式(MBMODE,其可包括参考帧的帧场选择和宏块帧场自适应(MBAFF)信息)、宏块量化值(QPYC,其可包括亮度块量化值和色度块量化值)。
不论是NEI_CALC还是COLO_CALC,在本实施例中,针对每个宏块的16个4x4块中的每一个都进行基于12拍的迭代计算。其中,在迭代计算开始的时候,根据当前要解码的4x4块所在宏块/子宏块的类型和该当前要解码的4x4块的类型给出关于该当前要解码的4x4块的以下控制信号(用于控制迭代计算中相关操作的执行):PRED_L0和PRED_L1,用于给出当前要解码的4x4块的MV预测方向,分别对应前向预测和后向预测;MVD_EN,用于确定当前要解码的4x4块是否存在相关的运动矢量残差(MVD)信息;MV_EN,用于确定是否需要对当前要解码的4x4块执行MV计算;COLO_EN,用于确定是否需要对当前要解码的4x4块进行COLO_CALC计算;MV_MODE,用于给出当前要解码的4x4块的MV计算类型。
下面针对H.264视频解码标准的主规范和主级别,介绍基于最小划分块(4x4)计算运动矢量(MV)和边界强度(BS)的过程。NEI_CALC的基于4x4块的运动矢量(MV)和边界强度(BS)的计算模式有前向预测(PRED_L0)、后向预测(PRED_L1)、双向预测(PRED_BI)和P跳过宏块(PSKIP)。在NEI_CALC的基于4x4块的运动矢量(MV)和边界强度(BS)的计算过程中:
在第2、第3、第4和第5拍,分别得到当前要解码的4x4块所在分块(其可以是宏块或者子宏块中的分块)的左侧(NEI_A)、上侧(NEI_B)、右上侧(NEI_C)和左上侧(NEI_D)的分块的运动矢量保存信息(MVP_INFO);
在第2和第3拍,分别得到对应于前向预测方向指示信号(PRED_L0)的前向运动矢量残差(MVD_L0)和对应于后向预测方向指示信号(PRED_L1)的后向运动矢量残差(MVD_L1);
在第4和第5拍,分别得到对应于前向预测方向指示信号(PRED_L0)的真实前向参考图像标记值(PICIDX_L0)和对应于后向预测方向指示信号(PRED_L1)的真实后向参考图像标记值(PICIDX_L1);
在第4和第5拍,分别利用当前要解码的4x4块的左侧的垂直边和上侧的水平边以及与该边邻近的边的像素点所在分块的信息,如宏块类型、量化参数、分块划分、分块残差数据的非零个数分别计算对应于当前要解码的4x4块的左侧边界强度(BS_L)和上侧边界强度(BS_T)的初始边界强度值;
在第6和第7拍,分别得到对应于前向预测方向指示信号(PRED_L0)的前向参考帧图像顺序号(POC_L0)和对应于后向预测方向指示信号(PRED_L1)的后向参考帧图像顺序号(POC_L1);
在第6和第8拍,根据当前要解码的4x4块所在分块的左侧(NEI_A)、上侧(NEI_B)、右上侧(NEI_C)和左上侧(NEI_D)的分块的运动矢量保存信息(MVP_INFO)分别得到对应于前向预测方向指示信号(PRED_L0)的前向运动矢量预测值(MVP_L0)和对应于后向预测方向指示信号(PRED_L1)的后向运动矢量预测值(MVP_L1);
在第7和第9拍,将前向运动矢量残差(MVD_L0)和后向运动矢量残差(MVD_L1)分别和前向运动矢量预测值(MVP_L0)和后向运动矢量预测值(MVP_L1)相加得到前向运动矢量(MV_L0)和后向运动矢量(MV_L1)作为运动矢量(MV)计算的结果;
在第8拍,计算当前要解码的4x4块所在帧的图像顺序号(POC_CUR)与前向参考帧图像顺序号(POC_L0)的差值(TD);
在第9拍,计算前向参考帧图像顺序号(POC_L0)与后向参考帧图像顺序号(POC_L1)的差值(TB);
在第10拍,根据差值(TD)和差值(TB)计算加权缩放因子(DistScaleFactor);
在第11拍,根据加权缩放因子(DistScaleFactor)计算前向缩放参数(W0)和后向缩放参数(W1)作为加权预测(Weighted Prediction)计算的结果;
在第10和第11拍,根据当前要解码的4x4块左侧边界强度(BS_L)和上侧边界强度(BS_T)的初始边界强度值和当前要解码的4x4块所在分块的左侧(NEI_A)、上侧(NEI_B)、右上侧(NEI_C)和左上侧(NEI_D)的分块的运动矢量保存信息(MVP_INFO)和当前要解码的4x4块的前向运动矢量(MV_L0)和后向运动矢量(MV_L1)计算当前要解码的4x4块左侧边界强度(BS_L)和上侧边界强度(BS_T)作为边界强度(BS)计算的结果;
最后在第11拍,将当前要解码的4x4块的运动矢量保存信息(MVP_INFO)和对应位置保存信息(COLO_INFO)写回行缓存。
接着,描述空域直接预测模式(Spatial Direct)的基于4x4块的运动矢量(MV)和边界强度(BS)的计算过程:
在第2拍,得到当前要解码的4x4块在后向参考帧中对应位置块的对应位置保存信息(COLO_INFO);
在第3拍,根据对应位置保存信息(COLO_INFO)计算对应块位置运动标记(colZeroFlag);
在第4和第5拍,分别得到对应于前向预测方向指示信号(PRED_L0)的真实前向参考图像标记值(PICIDX_L0)和对应于后向预测方向指示信号(PRED_L1)的真实后向参考图像标记值(PICIDX_L1);
在第4和第5拍,分别利用当前要解码的4x4块的左侧的垂直边和上侧的水平边以及与该边邻近的边的像素点所在分块的信息,如宏块类型、量化参数(Quantize Parameter,QP)、分块划分、分块残差数据的非零个数分别计算对应于当前要解码的4x4块左侧边界强度(BS_L)和上侧边界强度(BS_T)的初始边界强度值;
在第4和第5拍,根据对应块位置运动标记(colZeroFlag)和空域直接预测模式(Spatial Direct)特有的单独计算的默认运动矢量预测值分别得到对应于前向预测方向指示信号(PRED_L0)的前向运动矢量(MVP_L0)和对应于后向预测方向指示信号(PRED_L1)的后向运动矢量(MVP_L1)作为运动矢量(MV)计算的结果;
在第6和第7拍,分别得到对应于前向预测方向指示信号(PRED_L0)的前向参考帧图像顺序号(POC_L0)和对应于后向预测方向指示信号(PRED_L1)的后向参考帧图像顺序号(POC_L1);
在第8拍,计算当前要解码的4x4块所在帧的图像顺序号(POC_CUR)与前向参考帧图像顺序号(POC_L0)的差值(TD);
在第9拍,计算前向参考帧图像顺序号(POC_L0)与后向参考帧图像顺序号(POC_L1)的差值(TB);
在第10拍,根据差值(TD)和差值(TB)计算加权缩放因子(DistScaleFactor);
在第11拍,根据加权缩放因子(DistScaleFactor)计算前向缩放参数(W0)和后向缩放参数(W1)作为加权预测(Weighted Prediction)计算的结果;
在第10和第11拍,根据当前要解码的4x4块左侧边界强度(BS_L)和上侧边界强度(BS_T)的初始边界强度值和当前要解码的4x4块所在分块的左侧(NEI_A)、上侧(NEI_B)、右上侧(NEI_C)和左上侧(NEI_D)的分块的运动矢量保存信息(MVP_INFO)和当前要解码的4x4块的前向运动矢量(MV_L0)和后向运动矢量(MV_L1)计算当前要解码的4x4块左侧边界强度(BS_L)和上侧边界强度(BS_T)作为边界强度(BS)计算的结果;
最后在第11拍,将当前要解码的4x4块的运动矢量保存信息(MVP_INFO)和对应位置保存信息(COLO_INFO)写回行缓存。
接着,描述时域直接预测模式(Temporal Direct Mode)的基于4x4块的运动矢量(MV)和边界强度(BS)的计算过程:
在第2拍,得到当前要解码的4x4块在后向参考帧中对应位置块的对应位置保存信息(COLO_INFO);
在第4拍,得到对应于前向预测方向指示信号(PRED_L0)的前向参考帧图像顺序号(POC_L0)和对应于后向预测方向指示信号(PRED_L1)的后向参考帧图像顺序号(POC_L1);
在第5拍,得到对应于前向预测方向指示信号(PRED_L0)的真实前向参考图像标记值(PICIDX_L0)和对应于后向预测方向指示信号(PRED_L1)的真实后向参考图像标记值(PICIDX_L1);
在第5拍,计算当前要解码的4x4块所在帧的图像顺序号(POC_CUR)与前向参考帧图像顺序号(POC_L0)的差值(TD);
在第6拍,计算前向参考帧图像顺序号(POC_L0)与后向参考帧图像顺序号(POC_L1)的差值(TB);
在第7拍,根据差值(TD)和差值(TB)计算加权缩放因子(DistScaleFactor);
在第4和第5拍,根据对应块位置运动标记(colZeroFlag)和空域直接预测模式(Spatial Direct)特有的单独计算的默认运动矢量预测值分别得到对应于前向预测方向指示信号(PRED_L0)的前向运动矢量(MVP_L0)和对应于后向预测方向指示信号(PRED_L1)的后向运动矢量(MVP_L1)作为运动矢量(MV)计算的结果;
在第8和第9拍,分别得到对应于前向预测方向指示信号(PRED_L0)的前向水平方向运动矢量(MVP_L0_MVX)和对应于后向预测方向指示信号(PRED_L1)的后向水平方向运动矢量(MVP_L1_MVX)的值和对应于前向预测方向指示信号(PRED_L0)的前向垂直方向运动矢量(MVP_L0_MVY)和对应于后向预测方向指示信号(PRED_L1)的后向垂直方向运动矢量(MVP_L1_MVY)运动矢量(MV)计算的结果;
在第11拍,根据加权缩放因子(DistScaleFactor)计算前向缩放参数(W0)和后向缩放参数(W1)作为加权预测(Weighted Prediction)计算的结果;
在第10和第11拍,根据当前要解码的4x4块左侧边界强度(BS_L)和上侧边界强度(BS_T)的初始边界强度值和当前要解码的4x4块所在分块的左侧(NEI_A)、上侧(NEI_B)、右上侧(NEI_C)和左上侧(NEI_D)的分块的运动矢量保存信息(MVP_INFO)和当前要解码的4x4块的前向运动矢量(MV_L0)和后向运动矢量(MV_L1)计算当前要解码的4x4块左侧边界强度(BS_L)和上侧边界强度(BS_T)作为边界强度(BS)计算的结果;
最后在第11拍,将当前要解码的4x4块的运动矢量保存信息(MVP_INFO)和对应位置保存信息(COLO_INFO)写回行缓存。
从以上描述可以看出,通过本发明,只需进行一次遍历求解宏块的所有最小划分块(此处为4x4块)的过程,就可以得到该宏块的MV和BS值。并且在每次迭代求解最小划分块的过程中,都可以得到该最小划分块的MV和BS值。
图4是根据本发明实施例的用于获取图像的运动矢量和边界强度的系统的框图。如图4所示,该系统包括:第一装置402,用于根据当前要解码的分块的类型以及当前要解码的分块所在宏块/子宏块的类型,确定当前要解码的分块的运动矢量预测方向信息和运动矢量计算方法信息;第二装置404,用于根据当前要解码的分块的运动矢量计算方法信息,利用当前要解码的分块的运动矢量预测方向信息获取计算当前要解码的分块的运动矢量所需的相关信息;以及第三装置406,用于利用所获取的计算当前要解码的分块的运动矢量所需的相关信息计算当前要解码的分块的运动矢量,并利用当前要解码的分块和其周围块的运动矢量计算当前要解码的分块的边界强度。
在当前要解码的分块的运动矢量计算方法信息指示通过利用周围块信息的计算方法来计算当前要解码的分块的运动矢量的情况下,第二装置利用当前要解码的分块的运动矢量预测方向信息获取当前要解码的分块的运动矢量残差和当前要解码的分块的周围块的相关信息,并且第三装置利用当前要解码的分块的周围块的相关信息计算当前要解码的分块的运动矢量预测值,并通过将当前要解码的分块的运动矢量预测值和当前要解码的分块的运动矢量残差相加来计算当前要解码的分块的运动矢量。
在当前要解码的分块的运动矢量计算方法信息指示通过利用对应位置块信息的计算方法来计算当前要解码的分块的运动矢量的情况下,第二装置根据当前要解码的分块的运动矢量计算方法信息确定当前要解码的分块的后向参考帧对应位置块的相关信息,利用当前要解码的分块的运动矢量预测方向信息获取当前要解码的分块的参考帧图像顺序号,并且第三装置利用当前要解码的分块的后向参考帧对应位置块的相关信息和参考帧图像顺序号计算当前要解码的分块的运动矢量。
在当前要解码的分块的运动矢量计算方法信息指示通过利用周围块信息和对应位置块信息相结合的计算方法来计算当前要解码的分块的运动矢量的情况下,第二装置根据当前要解码的分块的运动矢量计算方法信息获取当前要解码的分块的周围块的相关信息和当前要解码的分块的后向参考帧对应位置块的相关信息,并且第三装置利用当前要解码的分块的周围块的相关信息计算当前要解码的分块的运动矢量预测值,并结合当前要解码的分块的后向参考帧对应位置块的相关信息和运动矢量预测值计算当前要解码的分块的运动矢量。
另外,第二装置还可以利用当前要解码的分块的运动矢量预测方向信息获取当前要解码的分块的参考帧图像顺序号,并且第三装置还可以利用当前要解码的分块的参考帧图像顺序号为当前要解码的分块的运动矢量计算加权预测值。
根据本发明实施例的获取图像的运动矢量和边界强度的系统,还可以包括:第四装置408,用于利用当前要解码的分块所在宏块/子宏块的类型和获取当前要解码的分块的初始边界强度所需的其他信息获取当前要解码的分块的初始边界强度,并利用当前要解码的分块的初始边界强度和当前要解码的分块和其周围块的运动矢量来计算当前要解码的分块的边界强度。
具体地,当前要解码的分块是4×4大小的块。在当前要解码的分块的运动矢量计算方法信息指示通过利用周围块信息的计算方法来计算当前要解码的分块的运动矢量的情况下,该系统在完成了对于所述当前要解码的分块所在宏块/子宏块中所有分块的运动矢量的计算后,保存所述当前要解码的分块所在宏块/子宏块最下方的一行4×4大小的块的相关信息。进一步地,第一装置还可以用于根据当前要解码的分块的类型以及当前要解码的分块所在宏块/子宏块的类型生成以下信号:运动矢量预测方向控制信号、运动矢量残差存在性指示信号、运动矢量计算控制信号、对应位置计算控制信号、以及运动矢量计算类型指示信号。
本领域技术人员将理解,还存在可用于实现本发明实施例的更多可选实施方式和改进方式,并且上述实施方式和示例仅是一个或多个实施例的说明。因此,本发明的范围仅由所附权利要求书限制。