发明内容
本发明提供一种编码模式的选择方法和装置,用于在发生丢包的网络场景中综合考虑丢包情况选择最佳的编码方式。
为了达到上述目的,本发明提供了一种编码模式的选择方法,包括:
编码端获取当前与解码端间信道的丢包系数;
所述编码端根据所述丢包系数以及率失真最优方法,获取各可用编码模式对应的拉格朗日耗值;
所述编码端选择具有最小的拉格朗日耗值的编码模式,作为最优的编码模式;
其中,所述获取各可用编码模式对应的拉格朗日耗值包括:
对于帧内预测的编码方式,
J(intra)=Distortion+λMODE,I*Rate
λMODE,I=(1/L)*0.85*2(QP-12)/3
对于帧间预测的编码方式,
J(inter)=Distortion+λMODE,P*Rate
λMODE,P=L*0.85*2(QP-12)/3
其中J表示拉格朗日耗值,L表示信道的丢包系数,Distortion表示重建图像的质量,Rate表示编码当前一个宏块所需要的比特位数量,QP为常量;对于所述L,0<L≤1,丢包率越大则L的值越小,丢包率为0时,L=1。
其中,所述编码端获取当前与解码端间信道的丢包系数包括:
所述编码端根据经验公式获取当前信道的丢包系数;或
所述编码端以最优信噪比为判别条件对获取当前信道的丢包系数的公式进行自动调整,并根据自动调整后的公式获取当前信道的丢包系数。
其中,还包括:
所述编码端在预定的时间间隔到达时,获取当前信道的丢包系数。
本发明还提供一种编码模式的选择装置,包括:
系数获取单元,用于获取当前与解码端间信道的丢包系数;
参考值获取单元,用于根据所述系数获取单元获取的丢包系数以及率失真最优方法,获取各可用编码模式对应的拉格朗日耗值;
编码模式获取单元,用于根据所述参考值获取单元获取的各可用编码模式对应的拉格朗日耗值,选择具有最小的拉格朗日耗值的编码模式,作为最优的编码模式;
所述参考值获取单元具体用于:
对于帧内预测的编码方式,
J(intra)=Distortion+λMODE,I*Rate
λMODE,I=(1/L)*0.85*2(QP-12)/3
对于帧间预测的编码方式,
J(inter)=Distortion+λMODE,P*Rate
λMODE,P=L*0.85*2(QP-12)/3
其中J表示拉格朗日耗值,L表示信道的丢包系数,Distortion表示重建图像的质量,Rate表示编码当前一个宏块所需要的比特位数量,QP为常量;对于所述L,0<L≤1,丢包率越大则L的值越小,丢包率为0时,L=1。
其中,所述系数获取单元具体用于:
根据经验公式获取当前信道的丢包系数;或
以最优信噪比为判别条件对获取当前信道的丢包系数的公式进行自动调整,并根据自动调整后的公式获取当前信道的丢包系数。
其中,还包括:
定时单元,用于对当前时间进行计时,当预定的时间间隔到达时,通知所述系数获取单元获取当前信道的丢包系数。
与现有技术相比,本发明具有以下优点:
在网络场景中进行丢失的视频数据信息的预测时,在现有的率失真最优方法下综合考虑网络场景中的丢包情况用于编码模式的选择,因此在发生丢包的网络场景中时可以保证能够选择合适的编码方式、得到最优的视频质量。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种编码模式的选择方法,如图1所示,包括:
步骤s101、编码端获取当前与解码端间信道的丢包系数。
步骤s102、编码端根据丢包系数以及率失真最优方法,获取各可用编码模式对应的拉格朗日耗值。
具体的,获取各可用编码模式对应的拉格朗日耗值包括:
对于帧内预测的编码方式,
J(intra)=Distortion+λMODE,I*Rate
λMODE,I=(1/L)*0.85*2(QP-12)/3
对于帧间预测的编码方式,
J(inter)=Distortion+λMODE,P*Rate
λMODE,P=L*0.85*2(QP-12)/3
其中J表示拉格朗日耗值,L表示信道的丢包系数,Distortion表示重建图像的质量,Rate表示编码当前一个宏块所需要的比特位数量,QP为常量;对于所述L,0<L≤1,丢包率越大则L的值越小,丢包率为0时,L=1。
步骤s103、编码端选择具有最小的拉格朗日耗值的编码模式,作为最优的编码模式。
以下结合具体的实施方式,对本发明中提供的编码模式的选择方法的具体实施方式进行详细说明。
现有的H.263/H.264等视频编码标准中,编码器可以选择不同的编码模式,如多参考帧模式、子块模式选择等,对于多参考帧模式,属于帧间预测模式;对于子块模式,根据子块的不同可能属于帧间预测模式或帧内预测模式。因此,为了选择合适的编码模式以获取较佳的编码效果,现有技术中提出了RDO(Rate Distortion Optimized,率失真最优)方法,用于在多种编码模式中选择最优的编码模式。以下首先对现有的根据RDO方法选择最优的编码模式的原理进行描述:
在RDO方法下,对视频序列进行编码时,对于每一种可用的编码模式(包括属于帧间预测模式的编码模式和/或属于帧内预测模式的编码模式),需要从率失真最优的角度选择一种编码模式。具体的,以拉格朗日耗值作为率失真最优的衡量标准,根据参考宏块间的MAD(Mean Absolute Difference,平均绝对差值)值和编码模式所耗费的比特(bit),拉格朗日耗值的计算公式如下:
J=Distortion+λMOTION*Rate (1)
其中λMOTION为拉格朗日乘子,计算方法如下:
λMOTION=0.85×2(QP-12)/3 (2)
其中J表示拉格朗日耗值,Distortion表示重建图像的质量,Rate表示编码当前一个宏块所需要的比特数量,QP为常量。
现有技术中,编码器在选择编码方式时,倾向于根据编码方式的图像质量和所需要的比特之间获取最小的拉格朗日耗值。具体的,对于每一种编码方法,获取该编码方法对应的Distortion和Rate,分别使用上述公式(1)计算该编码方法对应的J。之后,根据各编码方法对应的J,选择具有最小的J的编码方式。
从信源编码的角度,现有技术中所使用的RDO方法是一种最优的实现方案,但该方法没有考虑到信道传输中丢包对图像质量的影响。现有技术中,Distortion的计算通常由SAD(Sum of Absolute Difference,绝对误差和)、SSD(Sum of Squared Difference,平方差和)等公式计算得到,并基于编码端与解码端的信道完全没有丢包发生这一假设而来。因此,在网络环境中应用该方法时,由于网络丢包的存在,会使得Distortion的计算结果并不符合实际情况,导致根据上述公式(1)选择的编码模式并不是最优的编码模式,从而使得解码端无法得到最优的图像质量。
为了解决这个问题,本发明提供了一种编码选择方法,在上述率失真最优方法的基础上,引入一个表征传输中丢包发生情况的变量L,用于表示信道中的丢包系数(0<L≤1)。当传输中的丢包率(丢包率=100%×实际接收到的数据包数量/初始发送的数据包数量)越大,L值越小。L的具体形式可以通过丢包率(%)表示,或者通过其他参数表示并转化到(0,1]之间的区域,当丢包率为0(即没有丢包发生时),L=1;当丢包率趋近于1(即几乎所有包均丢失时),L趋近于0。
对于L值的计算公式,可以由经验公式获得,也可以由编码器以最优信噪比为判别条件自动调整。
本发明的一个应用场景中提供的编码模式获取方法中,关于拉格朗日耗值J的计算公式如下:
J(intra)=Distortion+λMODE,I*Rate
其中,λMODE,I=(1/L)*0.85*2(QP-12)/3 (3)
J(inter)=Distortion+λMODE,P*Rate
其中,λMODE,P=L*0.85*2(QP-12)/3 (4)
对于公式(3),适用于帧内预测模式的情况;即对于属于帧内预测模式的编码模式,使用该公式(3)取代现有技术中的公式(1)进行拉格朗日耗值J的计算,其中涉及了新引入的因子1/L。
对于公式(4),适用于帧间预测模式的情况,即对于属于帧间预测模式的编码模式,使用该公式(4)取代现有技术中的公式(1)进行拉格朗日耗值J的计算,其中涉及了新引入的因子L。
从公式(3)和(4)可以发现,当信道不存在丢包时L等于1,这时,公式(3)和公式(4)等同于公式(1),与现有技术中的RDO方法相同。当有丢包发生时,L的值将小于1,此时对于属于帧内预测模式的编码模式,其对应的拉格朗日耗值J将变大;对于属于帧间预测模式的编码模式,其对应的拉格朗日耗值J将变小。但拉格朗日耗值J的计算还依赖于公式中的Distortion值和Rate值,不同模式下这两个值不相同,L值只对J值起部分调节作用。因此,最后选择哪种编码模式,还得依赖公式(3)和(4)计算得出的最终结果。
对于解码端而言,在接收到编码端发送的码流后,根据码流中携带的信息标识可以获知编码端使用的编码模式,进而进行解码,该过程与丢包率无关。
本发明提供的方法中,为了实现编码模式的动态选择,编码器可以在固定的时间周期内每隔预定的时间即更新一次L的值,并根据更新后的L的值重新选择编码模式。当L的值越小时,公式(3)计算得到的J的值越大;反之,当L的值越大时,公式(3)计算得到的J的值越小。因此,随着丢包系数L的减小(即丢包率变大),编码器将倾向于使用帧间预测的编码模式;而随着丢包系数L的增大(即丢包率变小),编码器将倾向于使用帧内预测的编码模式,以有效的减少解码端因丢包而造成的帧间误差传递,在解码端可以在丢包环境下可以较好的对视频图像进行恢复。
通过使用本发明提供的上述方法,在网络场景中进行丢失的视频数据信息的预测时,在现有的率失真最优方法下综合考虑网络场景中的丢包情况用于编码模式的选择,因此在发生丢包的网络场景中时可以保证能够选择合适的编码方式、得到最优的视频质量。
本发明还提供了一种编码模式的选择装置,如图2所示,包括:
系数获取单元10,用于获取当前与解码端间信道的丢包系数;
参考值获取单元20,用于根据系数获取单元10获取的丢包系数以及率失真最优方法,获取各可用编码模式对应的拉格朗日耗值;具体的:
对于帧内预测的编码方式,
J(intra)=Distortion+λMODE,I*Rate
λMODE,I=(1/L)*0.85*2(QP-12)/3
对于帧间预测的编码方式,
J(inter)=Distortion+λMODE,P*Rate
λMODE,P=L*0.85*2(QP-12)/3
其中J表示拉格朗日耗值,L表示信道的丢包系数,Distortion表示重建图像的质量,Rate表示编码当前一个宏块所需要的比特位数量,QP为常量;对于所述L,0<L≤1,丢包率越大则L的值越小,丢包率为0时,L=1。
编码模式获取单元30,用于根据参考值获取单元20获取的各可用编码模式对应的拉格朗日耗值,选择具有最小的拉格朗日耗值的编码模式,作为最优的编码模式。
该系数获取单元10可以具体用于:
根据经验公式获取当前信道的丢包系数;或
以最优信噪比为判别条件对获取当前信道的丢包系数的公式进行自动调整,并根据自动调整后的公式获取当前信道的丢包系数。
该选择装置还包括:定时单元40,用于对当前时间进行计时,当预定的时间间隔到达时,通知系数获取单元10获取当前信道的丢包系数。
通过使用本发明提供的上述装置,在网络场景中进行丢失的视频数据信息的预测时,在现有的率失真最优方法下综合考虑网络场景中的丢包情况用于编码模式的选择,因此在发生丢包的网络场景中时可以保证能够选择合适的编码方式、得到最优的视频质量。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的单元或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的单元可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的单元可以合并为一个单元,也可以进一步拆分成多个子单元。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。