CN103024370B - 一种运动矢量二次压缩编解码方法及装置 - Google Patents

一种运动矢量二次压缩编解码方法及装置 Download PDF

Info

Publication number
CN103024370B
CN103024370B CN201110285303.9A CN201110285303A CN103024370B CN 103024370 B CN103024370 B CN 103024370B CN 201110285303 A CN201110285303 A CN 201110285303A CN 103024370 B CN103024370 B CN 103024370B
Authority
CN
China
Prior art keywords
mvd
mvdy
mvdx
motion vector
offset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110285303.9A
Other languages
English (en)
Other versions
CN103024370A (zh
Inventor
林聚财
王宁
左雯
李振纲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN201110285303.9A priority Critical patent/CN103024370B/zh
Priority to PCT/CN2012/081179 priority patent/WO2013040994A1/zh
Publication of CN103024370A publication Critical patent/CN103024370A/zh
Application granted granted Critical
Publication of CN103024370B publication Critical patent/CN103024370B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • H04N19/194Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive involving only two passes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种运动矢量二次压缩编解码方法及装置,该方法包括:统计当前silce中有增益的运动矢量差的个数,和当前slice下的所有运动矢量差的总个数,当二者的比值大于预定的阈值时,则对当前slice下的所有运动矢量差进行二次压缩编码。本发明通过对当前运动矢量与运动矢量预测值之间的残差MVD做进一步压缩,包括设定偏移量和计算MVDD,以降低MVD的幅值并消除MVD运动矢量两个分量之间的相关性,从而提高了视频编解码中运动矢量的压缩效率。

Description

一种运动矢量二次压缩编解码方法及装置
技术领域
本发明涉及视频编解码技术领域,尤其涉及一种运动矢量二次压缩编解码方法及装置。
背景技术
目前,视频编解码方法主要采用帧内和帧间的预测方法。对于帧间预测,主要是在参考帧中搜索当前帧内每个块的最佳区域,得到运动矢量,然后由运动矢量和运动矢量预测值相减得到运动矢量差。
通过对现有视频编解码码流的分析可以发现,运动矢量差的数据占整个码流的比例非常高,尤其是目前的H.264/AVC码流中运动矢量的比特开销约占20%~40%。因此,如果能够对现有的运动矢量压缩方法做一些改进或者做进一步的压缩,则可以很好的提高运动矢量数据的压缩效率。
目前视频编解码标准中,运动矢量编码方法主要按照如下步骤进行:
a)通过运动估计得到当前的运动矢量MV=(mvx,mvy)
b)通过中值运动矢量预测方法得到当前块的运动矢量预测值MVP=(mvpx,mvpy)。
c)计算MVD=MV-MVP,即mvdx=mvx-mvpx,mvdy=mvy-mvpy。
d)然后对MVD(mvdx,mvdy)进行se(v)熵编码,即有符号的指数哥伦布编码方法。
发明内容
本发明解决的技术问题是提供一种运动矢量二次压缩编解码方法及装置,能够提高视频编解码中运动矢量的压缩效率。
为解决上述技术问题,本发明提供了一种运动矢量二次压缩编码方法,包括:
统计当前片(silce)中有增益的运动矢量差的个数,和当前slice下的所有运动矢量差的总个数,当二者的比值大于预定的阈值时,则对当前slice下的所有运动矢量差进行二次压缩编码。
进一步地,所述方法还包括:
根据设定的运动矢量差的偏移量,对所述运动矢量差(mvd)进行修正。
进一步地,所述有增益的运动矢量差,具体判断如下:
若mvdmin>=mvdmax-(2n-1-1),则该运动矢量差为有增益的运动矢量差;
其中,mvdmax=max(|mvdx|,|mvdy|),mvdmin=min(|mvdx|,|mvdy|),mvdx为mvd的x分量,mvdy为mvd的y分量,n为mvdmax的有效比特位数。
进一步地,设定所述运动矢量差的偏移量(mvd_offset),具体包括:计算mvd的x分量和y分量中除零以外的最小绝对值|minmvd|,如果|minmvd|>1,则mvd_offset=|minmvd|-1;否则,mvd_offset=0;
根据所述设定的mvd_offset对运动矢量差(mvd)进行如下修正:
当mvdx<0时,mvdx=mvdx+mvd_offset;
当mvdx>0时,mvdx=mvdx-mvd_offset;
当mvdy<0时,mvdy=mvdy+mvd_offset;
当mvdy>0时,mvdy=mvdy-mvd_offset;
其中,mvdx为mvd的x分量,mvdy为mvd的y分量。
进一步地,按照以下方式对所述运动矢量差进行二次压缩:
如果mvdx=0且mvdy=0,则令mvddx=mvdx,mvddy=mvdy,同时不传送用于标记运动矢量位置的标识mvd_flag;
如果|mvdx|=|mvdy|且不为0,则令mvddx=mvdx,mvddy=0,同时传送mvd_flag标识,用于标记实际mvdy的正负值;
如果|mvdx|不等于|mvdy|,则比较mvdmin和mvdmax,令mvddx=mvdmin,并用se(v)进行编码;计算|mvddy|=|mvdmax|-|mvdmin|,如果mvdmax>=0,则令mvddy=|mvddy|;如果mvdmax<0,则令mvddy=-|mvddy|,并用se(v)进行编码;同时,传送mvd_flag标识,用于标记mvdmin为mvdx或者mvdy。
本发明还提供了一种运动矢量二次压缩解码方法,包括:
判断当前slice是否对运动矢量差进行了二次压缩编码,如果是,则进行二次解码,得到解码后的运动矢量差。
进一步地,所述方法还包括:
获取运动矢量差的偏移量(mvd_offset),并根据获取的所述mvd_offset对解码后得到的运动矢量差(mvd)进行如下修正:
当mvdx<0时,mvdx=mvdx-mvd_offset;
当mvdx>0时,mvdx=mvdx+mvd_offset;
当mvdy<0时,mvdy=mvdy-mvd_offset;
当mvdy>0时,mvdy=mvdy+mvd_offset;
其中,mvdx为mvd的x分量,mvdy为mvd的y分量。
进一步地,所述二次解码的过程,具体包括:
读取码流,得到mvddx和mvddy;
如果mvddx=0且mvddy=0,则令mvdx=mvddx,mvdy=mvddy;
如果mvddy=0且mvddx不等于0时,则继续读取码流中的mvd_flag标识,令mvdx=mvddx,mvdy的模值等于mvdx的模值,并根据所述mvd_flag标识确定mvdy的正负符号;
否则,令mvdx=mvddx,并读取码流中的mvd_flag标识,如果mvddy>0,则令mvdy=|mvddy|+|mvddx|,如果mvddy<0,则mvdy=-(|mvddy|+|mvddx|);并根据所述mvd_flag标识确定是否需要将mvdx和mvdy的值互调。
本发明还提供了一种运动矢量二次压缩编码装置,所述装置包括mvdd模块,
所述mvdd模块用于,统计当前silce中有增益的运动矢量差的个数,和当前slice下的所有运动矢量差的总个数,当二者的比值大于预定的阈值时,则对当前slice下的所有运动矢量差进行二次压缩编码。
进一步地,所述编码装置还包括mvd设定模块,
所述mvd设定模块用于,设定运动矢量差的偏移量,并根据设定的运动矢量差的偏移量对mvd进行修正。
进一步地,所述mvdd模块用于,按照以下方式判断运动矢量差是否为所述有增益的运动矢量差:
若mvdmin>=mvdmax-(2n-1-1),则该运动矢量差为有增益的运动矢量差;其中,mvdmax=max(|mvdx|,|mvdy|),mvdmin=min(|mvdx|,|mvdy|),mvdx为mvd的x分量,mvdy为mvd的y分量,n为mvdmax的有效比特位数。
进一步地,所述mvd设定模块用于,
按照以下方式设定所述运动矢量差的偏移量(mvd_offset):计算mvd的x分量和y分量中除零以外的最小绝对值|minmvd|,如果|minmvd|>1,则mvd_offset=|minmvd|-1;否则,mvd_offset=0;
以及,根据所述设定的mvd_offset对运动矢量差(mvd)进行如下修正:当mvdx<0时,mvdx=mvdx+mvd_offset;当mvdx>0时,mvdx=mvdx-mvd_offset;当mvdy<0时,mvdy=mvdy+mvd_offset;当mvdy>0时,mvdy=mvdy-mvd_offset;其中,mvdx为mvd的x分量,mvdy为mvd的y分量。
进一步地,所述mvdd模块用于,按照以下方式对所述运动矢量差进行二次压缩:
如果mvdx=0且mvdy=0,则令mvddx=mvdx,mvddy=mvdy,同时不传送用于标记运动矢量位置的标识mvd_flag;
如果|mvdx|=|mvdy|且不为0,则令mvddx=mvdx,mvddy=0,同时传送mvd_flag标识,用于标记实际mvdy的正负值;
如果|mvdx|不等于|mvdy|,则比较mvdmin和mvdmax,令mvddx=mvdmin,并用se(v)进行编码;计算|mvddy|=|mvdmax|-|mvdmin|,如果mvdmax>=0,则令mvddy=|mvddy|;如果mvdmax<0,则令mvddy=-|mvddy|,并用se(v)进行编码;同时,传送mvd_flag标识,用于标记mvdmin为mvdx或者mvdy。
本发明还提供了一种运动矢量二次压缩解码装置,所述解码装置包括mvdd解码模块,
所述mvdd解码模块用于,判断当前slice是否对运动矢量差进行了二次压缩编码,如果是,则进行二次解码,得到解码后的运动矢量差。
进一步地,所述解码装置还包括mvd修正模块,
所述mvd修正模块用于,获取运动矢量差的偏移量(mvd_offset),并根据获取的所述mvd_offset对解码后得到的运动矢量差(mvd)进行如下修正:
当mvdx<0时,mvdx=mvdx-mvd_offset;当mvdx>0时,mvdx=mvdx+mvd_offset;当mvdy<0时,mvdy=mvdy-mvd_offset;当mvdy>0时,mvdy=mvdy+mvd_offset;其中,mvdx为mvd的x分量,mvdy为mvd的y分量。
进一步地,所述mvdd解码模块用于,按照以下方式进行所述二次解码:
读取码流,得到mvddx和mvddy;
如果mvddx=0且mvddy=0,则令mvdx=mvddx,mvdy=mvddy;
如果mvddy=0且mvddx不等于0时,则继续读取码流中的mvd_flag标识,令mvdx=mvddx,mvdy的模值等于mvdx的模值,并根据所述mvd_flag标识确定mvdy的正负符号;
否则,令mvdx=mvddx,并读取码流中的mvd_flag标识,如果mvddy>0,则令mvdy=|mvddy|+|mvddx|,如果mvddy<0,则mvdy=-(|mvddy|+|mvddx|);并根据所述mvd_flag标识确定是否需要将mvdx和mvdy的值互调。
本发明提供一种运动矢量的二次压缩编解码方案,通过对当前运动矢量与运动矢量预测值之间的残差MVD做进一步压缩,包括设定偏移量和计算MVDD,以降低MVD的幅值并消除MVD运动矢量两个分量之间的相关性,尽可能地提高视频编解码中运动矢量的压缩效率。这种压缩方法可以应用于已经存在的和目前正在制定中的所有视频编解码标准。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施方式的运动矢量二次压缩编解码方法的编码端流程图;
图2为本发明实施方式的运动矢量二次压缩编解码方法的解码端流程图;
图3为本发明应用于编解码器设备中帧间预测中的位置的示意图;
图4为本发明实施例的编码装置和解码装置的组成示意框图。
具体实施方式
为提高现有视频编解码方法中运动矢量的压缩效率,本实施方式提供一种运动矢量二次压缩编码方法,采用下述技术方案:
第一步:在编码过程中以slice(片)为单位统计得到当前slice中的两个量:MVD偏移量(mvd_offset)和MVD压缩标记(mvdd_encoder_flag),分别表示运动矢量差MVD(mvdx,mvdy)的偏移量,和MVD(mvdx,mvdy)是否需要进一步压缩的标记。
第二步:获得当前运动矢量差MVD(mvdx,mvdy):
将MVD(mvdx,mvdy)的两个分量用mvd_offset进行修正,使这两个分量的绝对值幅值减小;
如果当前slice需要做进一步压缩,即mvdd_encoder_flag为1时,则转到第三步继续执行;
否则,mvdd_encoder_flag为0时,不做进一步处理,直接发送MVDD(mvddx,mvddy)=MVD(mvdx,mvdy),且不发送mvd_flag,转至第六步。
第三步:如果mvdx=0且mvdy=0,则mvddx=mvdx,mvddy=mvdy,同时不传送用于标记运动矢量位置的标识mvd_flag。
第四步:否则,如果|mvdx|=|mvdy|且不为0,则mvddx=mvdx,mvddy=0,同时传送mvd_flag用于表示实际mvdy的正负值;
第五步:否则,如果|mvdx|不等于|mvdy|,比较mvdx和mvdy中绝对值较小的运动矢量mvdmin和绝对值较大的运动矢量mvdmax:
令mvddx=mvdmin,用se(v)进行编码,即指数哥伦布编码;
然后,计算|mvddy|=|mvdmax|-|mvdmin|,如果mvdmax>=0,则mvddy=|mvddy|;如果mvdmax<0,则mvddy=-|mvddy|;并用se(v)进行编码。
同时,传输mvd_flag标记mvdmin为mvdx或者mvdy。
其中,mvdmin可能表示的是|mvdx|或|mvdy|中的任意一个值,这里只是描述其中一种实现方式,即:将其按照统一的规则赋值给mvddx,但本发明并不局限于这种实现方式。
第六步:发送MVDD(mvddx,mvddy),同时根据上述情况确定是否发送mvd_flag。
此外,需要说明的是,上述方法中,是先根据设定的mvd_offset对MVD(mvdx,mvdy)的两个分量进行修正,再进行MVDD处理;但也可以是先进行mvdd处理,再根据mvd_offset进行mvd修正。
相应地,本实施方式还提供一种运动矢量二次压缩解码方法,采用下述技术方案:
第1步:获取是否采用MVDD的句法元素mvdd_encoder_flag以及mvd_otfset。
第2步:从码流中读取se(v)码流得MVDD(mvddx,mvddy):
如果当前slice采用MVDD做进一步压缩,即mvdd_encoder_flag为1时,则转到第三步对运动矢量做进一步解码;
否则当前slice没有采用进一步MVDD压缩,则MVD(mvdx,mvdy)=MVDD(mvddx,mvddy),转至第六步。
第3步:如果mvddx=0且mvddy=0时,则mvdx=mvddx,mvdy=mvddy,且不用继续读取码流中的标识符mvd_flag。
第4步:否则,如果mvddy=0且mvddx不等于0时,则继续读取码流中的标识mvd_flag,mvdx=mvddx,mvdy的模值等于mvdx的模值,其正负符号由mvd_flag确定。
第5步:否则,读取码流中的标识mvd_flag:
mvdx=mvddx,如果mvddy>0,则mvdy=|mvddy|+|mvddx|,否则mvddy<0,则mvdy=-(|mvddy|+|mvddx|)。
根据mvd_flag的值确定是否需要将mvdx和mvdy的值互调。
第6步:对解码得到MVD(mvdx,mvdy)进行mvd_offset修正使其恢复为原值。
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
本实施例具体的实施过程可以结合正在制定的新一代视频编解码标准进行操作,本实施例中,假定MVD=(mvdx,mvdy)=(-10,-5),则具体的操作过程描述如下:
(一)编码端
步骤101,如表1所示,在slice_header中加入句法元素mvd_offset和mvdd_encoder_flag,在编码过程中可以采用如下的统计过程得到这两个句法元素:
①比较当前slice中没有零分量的MVD(mvdx,mvdy),得到当前slice中所有MVD分量中除零以外的绝对值最小值minmvd:
如果|minmvd|>1,则mvd_offset=|minmvd|-1。
否则mvd_offset=0;
表1.MVDD可用性以及偏移量在slice_header中的标识方法
slice_header(){ Descriptor
………………
mvdd_encoder_flag u(1)
mvd_offset ue(v)
………………
表2.ue(v)和se(v)对应的码表
表2是ue(v)和se(v)的码字表,其中最右侧一列Dis为运动矢量差MVD(mvdx,mvdy)分量之间的距离门限表,以se(v)中的码字为参考,Dis表示当mvdmax=max(|mvdx|,|mvdy|)为se(v)码字中的值时,只有满足mvdmin>=Dis才能获得编码增益,从而可以判定当前MVD在采用本专利方法时是否有增益。
②mvdd_encoder_flag可由下述方式确定:
假设表2中se(v)的值等于mvdmax=max(|mvdx|,|mvdy|),以该值为参考得到右边的Dis=mvdmax-(2n-1-1),其中n为mvdmax的有效比特位数。
其中,(2n-1-1)主要是计算mvdmax和最小值mvdmin之间的距离,只有当两者之间的距离小于一定值时编码增益才是明显的,该方法与码流中比特位数有关(如表2中二进制码流这一列所示的比特位数),而2n-1-1表示为表2中二进制码流这一列中相同码流比特长度的最小se(v)码字值,如se(v)这一列中4~-7的码字是一样长的都用3bit表示,其中2n-1-1中n值为3位,则计算2n-1-1得到3,只有当mvdmin>=Dis时,也就是当(2n-1-1)>=mdvmax-mvdmin时才有增益,此时,从表2中二进制码流这一列可知se(v)码字由4到3变化时,对应的二进制码流这一列的bit位数由7位减少为5位,则比特位数减少,即为有增益。
mvdmin=min(|mvdx|,|mvdy|)(即mvd分量中除零以外的最小绝对值分量),当mvdmin>=Dis时,则mvdd_counter自加1,其中mvdd_counter用于统计有增益的运动矢量个数,同时统计当前slice的所有运动矢量个数为mvd_slice;
当mvdd_counter与mvd_slice的比值大于某个阈值时,则mvdd_encoder_flag为1。否则,mvdd_encoder_flag为0。即,通过计算有增益的mvd在当前slice中总共mvd的比例就可以确定mvdd_encoder_flag的值以表示是否对当前slice做下面进一步的处理,也就是mvdd的处理。
步骤102,获得当前运动矢量的残差MVD(mvdx,mvdy)=(-10,-5):
如果当前MVD分量中没有零分量,假定本例中统计得到mvd_offset=0,则当mvdx<0时,mvdx=mvdx+mvd_offset=-10;当mvdy<0时,mvdy=mvdy+myd_offset=-5,得到修正后的MVD(mvdx,mvdy);
当mvdd_encoder_flag为0时,不进行如下编码,直接传输MVDD(mvddx,mvddy)=MVD(mvdx,mvdy)=(-10,-5),且不发送mvd_flag,编码结束;
否则mvdd_encoder_flag为1时,转至步骤103开始执行直至最后得到MVDD(mvddx,mvddy)。
步骤103,如果mvdx=0且mvdy=0,则mvddx=mvdx,mvddy=mvdy,同时不传送用于标记运动矢量运动矢量位置的标识mvd_flag。
步骤104,否则,如果|mvdx|=|mvdy|且不为0,则mvddx=mvdx,mvddy=0,同时传送mvd_flag用于表示实际mvdy的正负值,mvd_flag的实际取值由下面规定:
如果mvdy与mvdx相同的正负表示,则mvd_flag为1;
如果mvdy与mvdx不同的正负表示,则mvd_flag为0;
步骤105,否则,如果|mvdx|不等于|mvdy|,根据下面公式计算mvdmin=-5,mvdmax=-10:
对于mvddx=mvdmin=-5先采用se(v),即指数哥伦布的编码方式;
然后计算|mvddy|=|mvdmax|-|mvdmin|=10-5=5;由于mvdmax=-10<0,则mvddy=-5;并且用se(v)进行编码。
由于mvdmin=-5等于mvdy=-5,则mvd_flag=0。
步骤106,最后编码得到MVDD(mvddx,mvddy)=(-5,-5),且mvd_flag=0。
(二)解码端
步骤201,获取slice_header中的mvdd_encoder_flag和mvd_offset;
步骤202,读取se(v)码流得MVDD(mvddx,mvddy)
如果mvdd_encoder_flag为0时,不用做下一步解码且MVD(mvdx,mvdy)=MVDD(mvddx,mvddy)=(-10,-5),转至步骤206;
否则mvdd_encoder_flag为1时,则MVDD(mvddx,mvddy)=(-5,-5),并转至步骤203继续执行;
步骤203,如果mvddx=0且mvddy=0,则mvdx=mvddx,mvdy=mvddy,且不用继续读取码流中的标识符mvd_flag。
步骤204,否则,如果mvddy=0,则继续读取码流中的标识mvd_flag,mvdx=mvddx,
如果mvd_flag=1,则mvdy=mvdx;
如果mvd_flag=0,则mvdy=-mvdx。
步骤205,否则,读取码流中的标识mvd_flag:
如果mvd_flag=1,则mvdx=mvddx,如果mvddy>0,则mvdy=|mvddy|+|mvddx|,否则mvddy<0,则mvdy=-(|mvddy|+|mvddx|)。
如果mvd_flag=0,则mvdy=mvddx=-5,如果mvddy>0,则mvdx=|mvddy|+|mvddx|,否则mvddy<0,则mvdx=-(|mvddy|+|mvddx|)。因此mvdx=-(5+5)=-10。
步骤206,解码得到MVD(mvdx,mvdy)=(-10,-5)且mvd_offset=0,对于没有零分量的MVD(mvdx,mvdy)进行修正,当mvdx<0时,mvdx=mvdx-mvd_offset=-10-0=-10;当mvdy<0时,mvdy=mvdy-mvd_offset=-5-0=-5,得到最终解码的MVD(mvdx,mvdy)=(-10,-5)。
根据以上描述,本发明利用视频图像中运动矢量残差分量mvdx和mvdy之间的相关性提出一种进一步压缩的方法,该方法在运动矢量残差分量mvdx和mvdy差值较小的情况下能够获得比较好的增益。
此外,如图4所示,本发明实施例中还提供了一种运动矢量二次压缩编码装置,该装置主要包括mvdd模块,
所述mvdd模块用于,统计当前silce中有增益的运动矢量差的个数,和当前slice下的所有运动矢量差的总个数,当二者的比值大于预定的阈值时,则对当前slice下的所有运动矢量差进行二次压缩编码。
进一步地,所述编码装置还包括mvd设定模块,
所述mvd设定模块用于,设定运动矢量差的偏移量,并根据设定的运动矢量差的偏移量对mvd进行修正。
进一步地,所述mvdd模块用于,按照以下方式判断运动矢量差是否为所述有增益的运动矢量差:
若mvdmin>=mvdmax-(2n-1-1),则该运动矢量差为有增益的运动矢量差;其中,mvdmax=max(|mvdx|,|mvdy|),mvdmin=min(|mvdx|,|mvdy|),mvdx为mvd的x分量,mvdy为mvd的y分量,n为mvdmax的有效比特位数。
进一步地,所述mvd设定模块用于,
按照以下方式设定所述运动矢量差的偏移量(mvd_offset):计算mvd的x分量和y分量中除零以外的最小绝对值|minmvd|,如果|minmvd|>1,则mvd_offset=|minmvd|-1;否则,mvd_offset=0;
以及,根据所述设定的mvd_offset对运动矢量差(mvd)进行如下修正:当mvdx<0时,mvdx=mvdx+mvd_offset;当mvdx>0时,mvdx=mvdx-mvd_offset;当mvdy<0时,mvdy=mvdy+mvd_offset;当mvdy>0时,mvdy=mvdy-mvd_offset;其中,mvdx为mvd的x分量,mvdy为mvd的y分量。
进一步地,所述mvdd模块用于,按照以下方式对所述运动矢量差进行二次压缩:
如果mvdx=0且mvdy=0,则令mvddx=mvdx,mvddy=mvdy,同时不传送用于标记运动矢量位置的标识mvd_flag;
如果|mvdx|=|mvdy|且不为0,则令mvddx=mvdx,mvddy=0,同时传送mvd_flag标识,用于标记实际mvdy的正负值;
如果|mvdx|不等于|mvdy|,则比较mvdmin和mvdmax,令mvddx=mvdmin,并用se(v)进行编码;计算|mvddy|=|mvdmax|-|mvdmin|,如果mvdmax>=0,则令mvddy=|mvddy|;如果mvdmax<0,则令mvddy=-|mvddy|,并用se(v)进行编码;同时,传送mvs_flag标识,用于标记mvdmin为mvdx或者mvdy。
此外,本发明还提供了一种运动矢量二次压缩解码装置,如图4所示,该解码装置主要包括mvdd解码模块,
所述mvdd解码模块用于,判断当前slice是否对运动矢量差进行了二次压缩编码,如果是,则进行二次解码,得到解码后的运动矢量差。
进一步地,所述解码装置还包括mvd修正模块,
所述mvd修正模块用于,获取运动矢量差的偏移量(mvd_offset),并根据获取的mvd_offset对解码后得到的运动矢量差(mvd)进行如下修正:
当mvdx<0时,mvdx=mvdx-mvd_offset;当mvdx>0时,mvdx=mvdx+mvd_offset;当mvdy<0时,mvdy=mvdy-mvd_offset;当mvdy>0时,mvdy=mvdy+mvd_offset;其中,mvdx为mvd的x分量,mvdy为mvd的y分量。
进一步地,所述mvdd解码模块用于,按照以下方式进行所述二次解码:
读取码流,得到mvddx和mvddy;
如果mvddx=0且mvddy=0,则令mvdx=mvddx,mvdy=mvddy;
如果mvddy=0且mvddx不等于0时,则继续读取码流中的mvd_flag标识,令mvdx=mvddx,mvdy的模值等于mvdx的模值,并根据所述mvd_flag标识确定mvdy的正负符号;
否则,令mvdx=mvddx,并读取码流中的mvd_flag标识,如果mvddy>0,则令mvdy=|mvddy|+|mvddx|,如果mvddy<0,则mvdy=-(|mvddy|+|mvddx|);并根据所述mvd_flag标识确定是否需要将mvdx和mvdy的值互调。
以上仅为本发明的优选实施案例而已,并不用于限制本发明,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。本发明不限制于任何特定的硬件和软件结合。

Claims (10)

1.一种运动矢量二次压缩编码方法,其特征在于,包括:
统计当前slice中有增益的运动矢量差的个数,和当前slice下的所有运动矢量差的总个数,当二者的比值大于预定的阈值时,则对当前slice下的所有运动矢量差进行二次压缩编码;
其中,所述有增益的运动矢量差,具体判断如下:
若mvdmin>=mvdmax-(2n-1-1),则该运动矢量差为有增益的运动矢量差;
其中,mvdmax=max(|mvdx|,|mvdy|),mvdmin=min(|mvdx|,|mvdy|),mvdx为mvd的x分量,mvdy为mvd的y分量,n为mvdmax的有效比特位数;
所述二次压缩编码是指第二次压缩编码;
其中,按照以下方式对所述运动矢量差进行二次压缩:
如果mvdx=0且mvdy=0,则令mvddx=mvdx,mvddy=mvdy,同时不传送用于标记运动矢量位置的标识mvd_flag;
如果|mvdx|=|mvdy|且不为0,则令mvddx=mvdx,mvddy=0,同时传送mvd_flag标识,用于标记实际mvdy的正负值;
如果|mvdx|不等于|mvdy|,则比较mvdmin和mvdmax,令mvddx=mvdmin,并用se(v)进行编码;计算|mvddy|=|mvdmax|-|mvdmin|,如果mvdmax>=0,则令mvddy=|mvddy|;如果mvdmax<0,则令mvddy=-|mvddy|,并用se(v)进行编码;同时,传送mvd_flag标识,用于标记mvdmin为mvdx或者mvdy;
其中,所述se(v)表示有符号的指数哥伦布编码方法。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
根据设定的运动矢量差的偏移量,对所述所有运动矢量差mvd进行修正。
3.如权利要求2所述的方法,其特征在于,
设定所述运动矢量差的偏移量mvd_offset,具体包括:计算mvd的x分量和y分量中除零以外的最小绝对值|minmvd|,如果|minmvd|>1,则mvd_offset=|minmvd|-1;否则,mvd_offset=0;
根据所述设定的mvd_offset对运动矢量差mvd进行如下修正:
当mvdx<0时,mvdx=mvdx+mvd_offset;
当mvdx>0时,mvdx=mvdx-mvd_offset;
当mvdy<0时,mvdy=mvdy+mvd_offset;
当mvdy>0时,mvdy=mvdy-mvd_offset。
4.一种运动矢量二次压缩解码方法,其特征在于,包括:
判断当前slice是否对运动矢量差进行了二次压缩编码,如果是,则进行二次解码,得到解码后的运动矢量差;
其中,所述二次解码的过程,具体包括:
读取码流,得到mvddx和mvddy;
如果mvddx=0且mvddy=0,则令mvdx=mvddx,mvdy=mvddy;
如果mvddy=0且mvddx不等于0时,则继续读取码流中的mvd_flag标识,令mvdx=mvddx,mvdy的模值等于mvdx的模值,并根据所述mvd_flag标识确定mvdy的正负符号;
否则,令mvdx=mvddx,并读取码流中的mvd_flag标识,如果mvddy>0,则令mvdy=|mvddy|+|mvddx|,如果mvddy<0,则mvdy=-(|mvddy|+|mvddx|);并根据所述mvd_flag标识确定是否需要将mvdx和mvdy的值互调;
所述二次解码是指第二次解码;
其中,所述mvdx为mvd的x分量,所述mvdy为mvd的y分量。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
获取运动矢量差的偏移量mvd_offset,并根据获取的所述mvd_offset对解码后得到的运动矢量差mvd进行如下修正:
当mvdx<0时,mvdx=mvdx-mvd_offset;
当mvdx>0时,mvdx=mvdx+mvd_offset;
当mvdy<0时,mvdy=mvdy-mvd_offset;
当mvdy>0时,mvdy=mvdy+mvd_offset。
6.一种运动矢量二次压缩编码装置,其特征在于,所述装置包括mvdd模块,
所述mvdd模块用于,统计当前slice中有增益的运动矢量差的个数,和当前slice下的所有运动矢量差的总个数,当二者的比值大于预定的阈值时,则对当前slice下的所有运动矢量差进行二次压缩编码;
其中,所述mvdd模块还用于,按照以下方式判断运动矢量差是否为所述有增益的运动矢量差:
若mvdmin>=mvdmax-(2n-1-1),则该运动矢量差为有增益的运动矢量差;其中,mvdmax=max(|mvdx|,|mvdy|),mvdmin=min(|mvdx|,|mvdy|),mvdx为mvd的x分量,mvdy为mvd的y分量,n为mvdmax的有效比特位数;
所述二次压缩编码是指第二次压缩编码;
其中,所述mvdd模块用于,按照以下方式对所述运动矢量差进行二次压缩:
如果mvdx=0且mvdy=0,则令mvddx=mvdx,mvddy=mvdy,同时不传送用于标记运动矢量位置的标识mvd_flag;
如果|mvdx|=|mvdy|且不为0,则令mvddx=mvdx,mvddy=0,同时传送mvd_flag标识,用于标记实际mvdy的正负值;
如果|mvdx|不等于|mvdy|,则比较mvdmin和mvdmax,令mvddx=mvdmin,并用se(v)进行编码;计算|mvddy|=|mvdmax|-|mvdmin|,如果mvdmax>=0,则令mvddy=|mvddy|;如果mvdmax<0,则令mvddy=-|mvddy|,并用se(v)进行编码;同时,传送mvd_flag标识,用于标记mvdmin为mvdx或者mvdy;
其中,所述se(v)表示有符号的指数哥伦布编码方法。
7.如权利要求6所述的编码装置,其特征在于,所述编码装置还包括mvd设定模块,
所述mvd设定模块用于,设定运动矢量差的偏移量,并根据设定的运动矢量差的偏移量对所有运动矢量差mvd进行修正。
8.如权利要求7所述的编码装置,其特征在于,
所述mvd设定模块用于,
按照以下方式设定所述运动矢量差的偏移量mvd_offset:计算mvd的x分量和y分量中除零以外的最小绝对值|minmvd|,如果|minmvd|>1,则mvd_offset=|minmvd|-1;否则,mvd_offset=0;
以及,根据所述设定的mvd_offset对运动矢量差mvd进行如下修正:当mvdx<0时,mvdx=mvdx+mvd_offset;当mvdx>0时,mvdx=mvdx-mvd_offset;当mvdy<0时,mvdy=mvdy+mvd_offset;当mvdy>0时,mvdy=mvdy-mvd_offset。
9.一种运动矢量二次压缩解码装置,其特征在于,所述解码装置包括mvdd解码模块,
所述mvdd解码模块用于,判断当前slice是否对运动矢量差进行了二次压缩编码,如果是,则进行二次解码,得到解码后的运动矢量差;
其中,所述mvdd解码模块还用于,按照以下方式进行所述二次解码:
读取码流,得到mvddx和mvddy;
如果mvddx=0且mvddy=0,则令mvdx=mvddx,mvdy=mvddy;
如果mvddy=0且mvddx不等于0时,则继续读取码流中的mvd_flag标识,令mvdx=mvddx,mvdy的模值等于mvdx的模值,并根据所述mvd_flag标识确定mvdy的正负符号;
否则,令mvdx=mvddx,并读取码流中的mvd_flag标识,如果mvddy>0,则令mvdy=|mvddy|+|mvddx|,如果mvddy<0,则mvdy=-(|mvddy|+|mvddx|);并根据所述mvd_flag标识确定是否需要将mvdx和mvdy的值互调;
所述二次解码是指第二次解码;
其中,所述mvdx为mvd的x分量,所述mvdy为mvd的y分量。
10.如权利要求9所述的解码装置,其特征在于,所述解码装置还包括mvd修正模块,
所述mvd修正模块用于,获取运动矢量差的偏移量mvd_offset,并根据获取的所述mvd_offset对解码后得到的运动矢量差mvd进行如下修正:
当mvdx<0时,mvdx=mvdx-mvd_offset;当mvdx>0时,mvdx=mvdx+mvd_offset;当mvdy<0时,mvdy=mvdy-mvd_offset;当mvdy>0时,mvdy=mvdy+mvd_offset。
CN201110285303.9A 2011-09-23 2011-09-23 一种运动矢量二次压缩编解码方法及装置 Active CN103024370B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110285303.9A CN103024370B (zh) 2011-09-23 2011-09-23 一种运动矢量二次压缩编解码方法及装置
PCT/CN2012/081179 WO2013040994A1 (zh) 2011-09-23 2012-09-10 一种运动矢量二次压缩编解码方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110285303.9A CN103024370B (zh) 2011-09-23 2011-09-23 一种运动矢量二次压缩编解码方法及装置

Publications (2)

Publication Number Publication Date
CN103024370A CN103024370A (zh) 2013-04-03
CN103024370B true CN103024370B (zh) 2018-03-23

Family

ID=47913875

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110285303.9A Active CN103024370B (zh) 2011-09-23 2011-09-23 一种运动矢量二次压缩编解码方法及装置

Country Status (2)

Country Link
CN (1) CN103024370B (zh)
WO (1) WO2013040994A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3111641A4 (en) * 2014-04-01 2017-11-08 MediaTek Inc. Method of motion information coding
CN112806002B (zh) * 2018-12-13 2024-05-31 腾讯美国有限责任公司 视频解码的方法和视频解码器
WO2020177684A1 (en) 2019-03-03 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Enabling dmvr based on the information in the picture header

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1811648A (zh) * 2006-01-10 2006-08-02 中国建筑材料科学研究院 合成石英玻璃中微正压测控方法及系统
CN101198054A (zh) * 2006-12-05 2008-06-11 华为技术有限公司 变长编解码方法及其编解码器

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1146245C (zh) * 1997-12-22 2004-04-14 株式会社大宇电子 隔行二进制形状编码方法和装置
CN100454339C (zh) * 2001-09-14 2009-01-21 诺基亚有限公司 基于上下文的自适应二进制算术编码的方法和系统
AU2006201490B2 (en) * 2005-04-19 2008-05-22 Samsung Electronics Co., Ltd. Method and apparatus for adaptively selecting context model for entropy coding
KR100736086B1 (ko) * 2005-09-06 2007-07-06 삼성전자주식회사 엔트로피 코딩의 성능 향상 방법 및 장치, 상기 방법을이용한 비디오 코딩 방법 및 장치
JP5025286B2 (ja) * 2007-02-28 2012-09-12 シャープ株式会社 符号化装置及び復号装置
EP2154894A1 (en) * 2008-08-15 2010-02-17 Thomson Licensing Video coding with coding of the locations of significant coefficients in a block of coefficients
CN101860754B (zh) * 2009-12-16 2013-11-13 香港应用科技研究院有限公司 运动矢量编码和解码的方法和装置
CN101827269B (zh) * 2010-01-15 2012-10-17 香港应用科技研究院有限公司 视频编码方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1811648A (zh) * 2006-01-10 2006-08-02 中国建筑材料科学研究院 合成石英玻璃中微正压测控方法及系统
CN101198054A (zh) * 2006-12-05 2008-06-11 华为技术有限公司 变长编解码方法及其编解码器

Also Published As

Publication number Publication date
WO2013040994A1 (zh) 2013-03-28
CN103024370A (zh) 2013-04-03

Similar Documents

Publication Publication Date Title
CN102065290B (zh) 视讯译码装置、存储运动矢量信息的方法及存储器分配方法
CN102577378B (zh) 用于对模式信息进行编码和解码的方法和设备
CN103765900B (zh) 绝对或显式的参考画面信号通知
CN103891290B (zh) 运动矢量处理
CN102860006A (zh) 管理预测运动向量候选
CN110149513A (zh) 选择运动向量精度
CN102763418A (zh) 视频信号解码方法和设备
CN108833923A (zh) 视频编码、解码方法、装置、存储介质和计算机设备
CN102668561A (zh) 用于视频编码的方法和设备
CN104837019B (zh) 基于支持向量机的avs到hevc优化视频转码方法
CN104079937B (zh) 一种基于运动矢量分析的由h.264到hevc的快速帧间转码方法及转码装置
CN101420617A (zh) 一种十字六边形运动估计搜索方法
CN101394566A (zh) 一种十字菱形运动估计搜索方法
CN103024370B (zh) 一种运动矢量二次压缩编解码方法及装置
CN104541507A (zh) 处理视频信号的方法和装置
CN108632616A (zh) 一种基于参考质量做帧间加权预测的方法
JP2014504815A (ja) コードストリーム情報の再利用によるh264トランスコード方法
CN102256130A (zh) 一种基于插入宏块亮度特殊值标记视频帧图像序号的方法
EP3741122A1 (en) Restricted overlapped block motion compensation
CN102055987B (zh) 一种解码错误宏块的错误隐蔽方法及装置
CN101309401B (zh) 一种快速的先进视频编码率计算方法及其装置
CN102143362B (zh) 从mpeg2或h.263格式到h.264格式的视频转换编码的处理方法及装置
CN106937168B (zh) 一种利用长期参考帧的视频编码方法、电子设备及系统
CN108810533B (zh) 一种标记参考帧的方法、装置及电子设备
CN105812803B (zh) 一种针对变换单元tu的残差舍弃方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant