发明名称 选择参考场及获取时域运动矢量的方法
摘要 本发明涉及一种在跳过或直接模式中选择参考场及时域运动矢量预测的方法,首先判断当前宏块类型或当前子块类型,后根据不同类型进行下列操作:根据当前块的图像结构,给当前块的不同数值赋值;并定义对场垂直矢量偏移补偿;定义后向参考块与其自身/前向/后向参考块的块距离的公式;对mvRef_y的赋值;根据公式及赋值,计算当前块的前/后向运动矢量。用类似的方法可以计算出当前块的后向运动矢量mvBw。对于典型的隔行视频序列,当直接和跳过模式较适用时,本发明能从总体提高编码效率10%到20%,效果非常显著。而本发明能消除这种低场视频的严重跳动失真,大幅提高原有AVS基准档次场编码码流的主观评价得分。
申请公布号 CN102447902A 申请公布日期 2012.05.09
申请号 CN201110300629.4 申请日期 2011.09.30
申请人 曾志华 发明人 曾志华
分类号 H04N7/26(2006.01)I;H04N7/32(2006.01)I;H04N7/36(2006.01)I 主分类号 H04N7/26(2006.01)I
代理机构 广州科粤专利商标代理有限公司 44001 代理人 黄培智
主权项 一种在跳过或直接模式中选择参考场及时域运动矢量预测的方法,其特征在于:如果当前宏块类型为B_Skip或B_Direct_16*16,或当前子块类型为SB_Direct_8*8,对每个8*8块分别进行如下操作:第一步:(1)、如果后向参考图像中与当前8*8块的左上角样本位置对应的样本所在的编码宏块类型为I_8*8,则当前块的前后向参考图像均为缺省参考图像;(2)、否则,如果当前块所在图像的图像结构等于1,当前块的前后向参考图像均为缺省参考图像,其前后向距离索引分别为DistanceIndexFw和DistanceIndexBw,当前块的前后向块距离分别为BlockDistanceFw和BlockDistanceBw;在后向参考图像中与当前块的左上角样本位置对应的样本所在的编码块的运动矢量mvRef为(mvRef_x,mvRef_y),该编码块的距离索引为DistanceIndexCol,该运动矢量指向的参考块的距离索引为DistanceIndexRef;(3)、否则,如果当前块所在图像的图像结构等于0,当前块的前向参考索引为0和1的参考场中的参考块的距离索引分别为DistanceIndexFw0和DistanceIndexFw1;如果DistanceIndexRef等于DistanceIndexFw0,则当前块的前向参考索引为0,DistanceIndexFw等于DistanceIndexFw0;否则当前块的前向参考索引为1,DistanceIndexFw等于DistanceIndexFw1;当前块的后向参考索引为0和1的参考场中的参考块的距离索引分别为DistanceIndexBw0和DistanceIndexBw1;如果当前块的MbIndex<MbWidth*MbHeight/2,其中MbIndex为宏块索引,MbWidth为图像以宏块表达的宽度,MbHeight为图像以宏块表达的高度,则当前块的后向参考场是参考索引标记为0的场,DistanceIndexBw等于DistanceIndexBw0;(4)、如果当前块属于底场图像,即MbIndex>MbWidth*MbHeight/2时,判断当前块后向参考索引标记为1的场的对应参考块的参考索引是否为0,如果为0,则当前块的后向参考场是参考索引标记为0的场,参考块相对应的宏块位置由MbIndex‑(MbWidth*MbHeight/2)得出,DistanceIndexBw等于DistanceIndexBw0;否则,当前块的后向参考场是参考索引标记为1的场, DistanceIndexBw等于DistanceIndexBw1;(5)、对场垂直矢量偏移补偿delta1和delta2定义如下:如果当前块所在的场为顶场,并且mvRef指向的场为底场,则delta1=2;如果当前块所在的场为底场,并且mvRef指向的场为顶场,则delta1=‑2;如果当前块所在的场为顶场,并且mvFw/mvBw指向的场为底场,则delta2=2;如果当前块所在的场为底场,并且mvFw/mvBw指向的场为顶场,则delta2=‑2;其中mvFw为当前块的前向运动矢量,mvBw为当前块的后向运动矢量;第二步:(1)、BlockDistanceRef=(DistanceIndexCol‑DistanceIndexRef+512)%512;BlockDistanceFw=(DistanceIndexCur‑DistanceIndexFw+512)%512;BlockDistanceBw=(DistanceIndexBw‑DistanceIndexCur+512)%512;其中,DistanceIndexCol为后向参考帧中与当前块同位的块的距离索引,DistanceIndexRef为后向参考帧中同位块的运动矢量指向的块的距离索引,DistanceIndexCur为当前块的距离索引,DistanceIndexFw为当前块的前向参考块的距离索引,DistanceIndexBw为当前块的后向参考块的距离索引,BlockDistanceRef为后向参考块与其自身参考块的块距离,BlockDistanceFw为当前块与其前向参考块的块距离,BlockDistanceBw为当前块与其后向参考块的块距离;(2)、如果当前块所在图像的图像结构等于1,并且后向参考图像的图像结构等于0,则mvRef_y=mvRef_y*2;(3)、如果当前块所在图像的图像结构等于0,并且后向参考图像的图像结构等于1,则mvRef_y=mvRef_y/2;第三步:(1)、当前块的前向运动矢量mvFw为(mvFw_x,mvFw_y);如果mvRef_x小于0,则mvFw_x=‑(((16384/BlockDistanceRef)*(1‑mvRef_x*BlockDistanceFw)‑1)>>14);否则mvFw_x=((16384/BlockDistanceRef)*(1+mvRef_x*BlockDistanceFw)‑1)>>14;如果(mvRef_y+delta1)小于0,则mvFw_y=‑(((16384/BlockDistanceRef)*(1‑(mvRef_y+delta1)*BlockDistanceFw)‑1)>>14)‑delta2;否则mvFw_y=(((16384/BlockDistanceRef)*(1+(mvRef_y+delta1)*BlockDistanceFw)‑1)>>14)‑delta2;(2)、当前块的后向运动矢量mvBw为(mvBw_x,mvBw_y);如果mvRef_x小于0,则mvBw_x=((16384/BlockDistanceRef)*(1‑mvRef_x*BlockDistanceBw)‑1)>>14;否则mvBw_x=‑(((16384/BlockDistanceRef)*(1+mvRef_x*BlockDistanceBw)‑1)>>14);如果(mvRef_y+delta1)小于0,则mvBw_y=(((16384/BlockDistanceRef)*(1‑(mvRef_y+delta1)*BlockDistanceBw)‑1)>>14)‑delta2;否则mvBw_y=‑(((16384/BlockDistanceRef)*(1+(mvRef_y+delta1)*BlockDistanceBw)‑1)>>14‑delta2。
地址 广东省广州市天河南二路29号华兴阁2302