视讯图像传输的主动防错方法

文档序号:7962147阅读:404来源:国知局
专利名称:视讯图像传输的主动防错方法
技术领域
本发明属于视讯领域,是一种视讯图像传输的主动防错方法。
为了克服上述缺陷,目前一般采用两种技术一种是错误掩盖技术,它是在接收解码端对于已经发生的数据丢失或误码用接收到的正确数据进行预测、掩盖;另一种则是主动防错技术,其由编码端采取措施提高码流的抗误码性能,使其在传输过程中抵抗误码的影响使解码器能够正确解码,它是在错误发生以前进行防止的措施。
由于在H.263中采用了可变长编码和运动预测和运动补偿,因此如果在解码过程中发现错误就会导致同步的丢失,必须跳到下个同步字继续解码过程,因为在H.263中最小的同步单元为块组(GOBGroup OfBlock),因此当错误发生时则会引起整个块组数据的丢失。同时,在解码当前帧时,要用到前一帧数据参考进行运动补偿,因此前一帧中的错误数据会衍生到当前帧,然后继续向下传递,直到出现一个帧内(INTRA帧)为止。
主动防错方法总体上可以分为两类开路和闭路。在闭路方法中,存在一条从接收端到传送端的反馈通路,接收端能够通过这条通道传送当前的解码情况,编码端根据反馈信息调整当前的编码行为。例如当错误发生时,解码端能够传送没有正确解码的图像帧,编码端接收到后将重发该帧直到接收端正确接收为止。这称为自动重传请求ARQ(Automation Retransmission reQuest)恢复方法。在因特网上传输视频数据一般采用实时传输/实时传输控制协议(RTP/RTCP),实时传输协议(RTP)用于传送媒体数据,而实时传输控制协议(RTCP)则负责两端的数据反馈。编解码双方可以根据实时传输控制协议(RTCP)数据包中的信息调节自己的行为。闭路方法中典型技术是H.263附录N的“参考帧选择模式”和附录U的“增强的参考帧选择模式”。开路方法则表示两端并不存在信道,因此错误恢复的工作只能有解码器完成。例如编码器使用前向错误校验(FECForward Error Correction)时,向码流中加入适当的冗余位,解码器接收到数据后,通过这些冗余位完成错误的检测和纠正。闭路技术中典型技术是H.263附录V的方向可变长编码。
闭路方法由于编码器反馈信息完成需要的编码任务,因此会造成一定的延时,不适合实时应用。而且在多点会议中,由于需要通过多点控制单元(MCU)完成会议数据的传送,因此闭路算法实现较为困难。开路算法由于需要在码流中加入附加信息从而增加了带宽的开销。
另外,现有技术的数据编码后打包发送时,其打包也存在着缺陷它一般是前半帧放入一个数据包,后半帧放入一个数据包。如果一个包丢失后,实际上丢失了若干行连续的数据,在解码端根本不可能恢复。
发明目的本发明的目的是提供一种既适合于实时应用,又不增加带宽开销的主动防错方法。
为实现上述目的,本发明的解决方案是一种视讯图像传输的主动防错方法,它由下列步骤组成a、发送端的编码器与接收端的解码器之间采用能够传送图像数据且同时能够进行两端数据反馈的协议,接收端解码器通过该协议定期向发送端编码器发送含有当前网络条件信息的数据包;b、发送端编码器对该数据包中的当前网络条件信息进行分析,对那些待编码的帧或宏块间隔一段时间采取帧内编码;c、对编码器编好的码流打包,在信道上传输;d、接收端恢复包中的数据并解码。
一般来说,步骤a中的能够传送图像数据且同时能够进行两端数据反馈的协议是实时传输/实时传输控制协议(RTP/PTCP)。
在本发明的一个较佳实施例中,步骤b具体包括b1、根据步骤a获得的当前网络条件信息中的丢包率,按照Ifreq=1/p计算出进行帧内编码相隔的帧数,其中,p代表丢包率,Ifreq代表进行帧内编码相隔的帧数;b2、每隔Ifreq帧对那些待编码的宏块进行帧内编码。
在本发明的另一个较佳实施例中,步骤b具体包括;b1′、对于每个待编码的宏块,分别计算在跳过、帧间和帧内三种编码模式下的参数Dq、Dc、R、p、λ,其中,跳过编码模式表示该特定宏块不进行编码,解码时只需复制上一帧相同位置上的宏块数据,Dq是由于量化误差导致的方差,Dc是由于出现误码以后从一个被掩盖处理后的块进行预测所造成的方差,R是编码所得的码率,λ为常数,以上参数编码时能够确定,p代表丢包率,从步骤a获得的当前网络条件信息中获取;b2′、按照公式J=(1-p)*Dq+pDc+λR计算三种不同编码模式下的J值,选择使J值最小的模式作为宏块的编码模式。
步骤b1′中,λ最好取0.85×(Q/2)2,Q为编码所用的量化步长。
对于步骤c中所述的码流打包,本发明又提出了一种较佳的方式,即多重打包方法将每一帧图像编码后码流的每行按次序分别分到若干个数据包中,在第一个数据包以外的每个数据包中复制一份图像头数据;步骤d中,如果多个数据包均正确接收,解码器将每个包的数据恢复原始数据进行编码,将第一个数据包以外的每个数据包中的图像头数据抛弃;如果有数据包丢失,解码器对接收到的包的数据进行解码,再用接收到的数据和前帧数据对丢失的数据进行掩盖。
对于多重打包方式,其特例是双重打包方式将每一帧图像编码后码流的奇数行放到一个数据包中,偶数行放到另一个数据包中,其中一个数据包有原始的图像头数据,另一个数据包复制一份图像头数据;步骤d中,如果两个数据包均正确接收,解码器将每个包的数据恢复原始数据进行编码,将另一个数据包中复制的图像头数据抛弃;如果有数据包丢失,解码器对接收到的包的数据进行解码,再用接收到的数据和前帧数据对丢失的数据进行掩盖。
由于在解码当前帧时,要用到前一帧数据参考进行运动补偿,因此前一帧中的错误数据会衍生到当前帧,然后继续向下传递,直到出现一个帧内帧为止,因此,本发明通过对待编码的帧或宏块间隔一段时间采取帧内编码,防止了错误继续向下传递,达到了主动防错的效果。
由于本发明实际上是开路方式,无反向的反馈信道,因此适合于实时应用,能应用于多点通信。又由于本发明没有在码流中加入冗余信息,不会增大码流带宽的开销,这样就克服了开路、闭路两种方法的缺点。
另外,由于本发明的打包方式是将每一帧图像编码后码流的每行按次序分别分到若干个数据包中,如果有数据包丢失,解码器对接收到的包的数据进行解码,再用接收到的数据和前帧数据对丢失的数据进行掩盖,由于相邻行的信息是邻近的,可以是相邻行的信息对丢失的数据进行预测和掩盖,而现有技术的若干行是连续丢失的,因此就不容易进行恢复,本发明的打包方式提高了本发明的抗误码性能。
图2是本发明的打包方法示意图。
一、发送端的编码器与接收端的解码器之间采用能够传送图像数据/同时能够进行两端的数据反馈的协议,接收端解码器通过该协议定期向发送端编码器发送含有当前网络条件信息的数据包。一般来说,该能够传送图像数据/同时能够进行两端的数据反馈的协议指的是实时传输/实时传输控制协议(RTP/RTCP)。
当前网络条件信息如丢包率、延迟、抖动等。接收端解码器通过该协议定期向发送端编码器发送含有当前网络条件信息的数据包是后面根据网络实时条件及时调整插入帧内编码模式的基础。编码端根据这些信息调整帧内Intra编码宏块的个数,如果网络条件变差,丢包率增加,则增加帧内Intra编码宏块的个数,反之则减少。
二、发送端编码器对该数据包中的当前网络条件信息进行分析,对待编码的帧或宏块间隔一段时间采取帧内编码。
在解码当前帧时,要用到前一帧数据参考进行运动补偿,因此前一帧中的错误数据会衍生到当前帧,然后继续向下传递,直到出现一个帧内Intra帧为止,因此,本发明通过对待编码的帧或宏块间隔一段时间采取帧内编码,这样错误就不会继续向下传递了。但在实时应用中,出于实时性的考虑,不可能过多地加入帧内编码,就需要确定其加入的数量和位置。帧内Intra编码宏块的个数在很大程度上依赖于上述的当前网络条件信息。
本发明对这一部分提供了两个实施例。
实施例1实施例1是这样实现的1、根据前一步骤获得的当前网络条件信息中的丢包率,按照lfreq=1/p计算出进行帧内编码相隔的帧数,p代表丢包率,Ifreq代表进行帧内编码相隔的帧数。在因特网上,评价网络状况的重要数据是丢包率,一般情况下,因特网上会存在5-10%左右的丢包率,因此宏块的编码模式需要根据丢包率进行选择。丢包率越低,代表当前网络状况越好,Ifreq的值越高,帧内帧编码模式的更新频率越低,即编码模式更新的频率与丢包率成正比。如当丢包率为5%时,Ifreq为20,表示每隔20帧对特定的宏块进行Intra编码,如果丢包率上升到20%,在需要每隔5帧进行帧内Intra编码。
2、每隔Ifreq帧对待编码的宏块进行帧内编码。
至于帧内Intra编码宏块的位置,可以任意确定其位置。第一个帧内编码的位置确定后,后续的帧内编码就参照该位置按更新的频率进行更新就可以了。
以上是一种较实用且较简便的方法。
实施例2实施例2是一种更有效但比实施例1烦琐的方法,它基于率失真理论。其实现过程如下b1′、对于每个待编码的宏块,分别计算在跳过、帧间和帧内三种编码模式下的参数Dq、Dc、R、p、λ,其中,跳过编码模式表示该特定宏块不进行编码,解码时只需复制上一帧相同位置上的宏块数据,它是帧间编码模式的特例,Dq是由于量化误差导致的方差,Dc是由于出现误码以后从一个被掩盖处理后的块进行预测所造成的方差,R是编码所得的码率,λ为常数,以上参数编码时能够确定,p代表丢包率,从前面获得的当前网络条件信息中获取;b2′、按照公式J=(1-p)Dq+pDc+λR计算三种不同编码模式下的J值,选择使J值最小的模式作为宏块的编码模式。
上述步骤b1′中的λ最好取0.85×(Q/2)2,Q为编码所用的量化步长。
上述公式是考虑到信道误码影响后的结构,其实在不考虑信道误码影响的情况下,该公式本来是这样的J=D+λR (1)其中D是编码以后的重建数据和原始数据的方差,该方差可以有很多方法计算,最简单的方法是计算对应像素差值的平方和。R表示编码所得的码率,λ为常数,一般取经验值,实验证明,当λ=0.85×(Q/2)2时能够提供最好的效果,其中Q为编码所用的量化步长。对于每一个宏块,我们分别计算在三种模式下的公式的值,选择使上式的值最小的模式作为宏块的编码模式。这个公式没有考虑到信道误码的影响,因此它只对于当解码器正确接收时才能得到的最优化的结果。当存在误差时,帧间编码模式由于使用时域预测导致误差衍生,而使用帧内编码模式则能够抑制误差衍生但是造成了更多的带宽开销。如果编码器端能够知道解码器使用的错误掩盖方法以及网络的丢包率,就可以在压缩效率和抗误码性能之间获得最佳的平衡。在考虑信道误码的情况下,编码所造成的偏差将归结为两个因素其一是由于量化误差导致的方差Dq,其二是由于出现误码以后,从一个被掩盖处理后的块进行预测所造成的方差Dc。假设丢包率为p,则以上的拉格朗日公式变为J=(1-p)Dq+pDc+λR(2)同样计算三种编码模式下上式的值,其中Dc是认为该块已经丢失而进行掩盖所造成的偏差,所以需要乘上误码率p这个系数,Dc可以预先计算并保存。而Dq认为是在没有发生误码时所得到的偏差,因此需要乘上(1-P)各个系数。这样,我们就得到了考虑信道误差时的最优的结果。其中Dq、Dc、λ、R是编码端编码时就可以计算产生,计算方法属于现有技术,p是从前面获得的当前网络条件信息中获取的。
例如在丢包率为5%,λ=5的情况下,跳过编码模式计算出的Dq=200,Dc=50,R=10,则J1=242.5帧内编码模式计算出的Dq=30,Dc=40,R=50,则J2=281;帧间编码模式计算出的Dq=10,Dc=20,R=30,则J3=160.5;由于J3<J1<J2,所以采用帧间编码模式。
如果使用了效果十分完美的误差掩盖方法,则Dc=Dq,这样公式(1)就等同于公式(2)了,那么信道误码没有对模式选择造成影响,即排除了误码的因素。
至于如何帧内编码、帧间编码,则是现有技术的内容。
三、对编码器编好的码流打包,在信道上传输。本发明对这一部分也有改进,是采用一种交叉打包的方法,即多重打包方法将每一帧图像编码后码流的每行按次序分别分到若干个数据包中,在第一个数据包以外的每个数据包中复制一份图像头数据。其特例是一种双重打包方式将每一帧图像编码后码流的奇数行放到一个数据包中,偶数行放到另一个数据包中,其中一个数据包有原始的图像头数据,另一个数据包复制一份图像头数据。
本发明的数据打包主要针对完整块组(GOB)进行,对于宏块级的交叉打包由于其操作比较复杂,与标准不兼容同时由于打乱了宏块正常排列顺序因此需要在解码端进行重整而造成了额外的延时,所以一般只针对块组进行。现在以双重打包方式为例进行说明,如图2,将块组1(GOB1)、块组3(GOB3)、块组5(GOB5)、块组7(GOB7)、块组9(GOB9)放到一个数据包中,该数据包中含有原始的图像头数据,如图2左边数据包中的阴影所示。将块组2(GOB2)、块组4(GOB4)、块组6(GOB6)、块组8(GOB8)放到另一个数据包中,为了在奇数包丢失的情况下另一个数据包能够单独解码,在其中在复制了一份图像头数据,如右边数据包中的阴影所示。这种交叉打包的方式能够使解码器使用时域或空域掩盖方法对丢失的数据进行预测。当视频码流的码率超过300kbps时,这时一帧图像可能会分为多个数据包,就必须用上面的多重打包方法。在图2中,由于加入了冗余的图像头,引入的开销为20字节(IP包头)+8字节(UDP头)+12字节(RTP头)+7字节(RFC2429头数据,其中包含6个字节的图像头)=47个字节。可见其引入的开销是非常小的,几乎没有引入什么开销。
四、接收端恢复包中数据并解码。
对于上述多重打包方法来说,如果多个数据包均正确接收,解码器将每个包的数据恢复原始数据进行编码,将第一个数据包以外的每个数据包中的图像头数据抛弃;如果有数据包丢失,解码器对接收到的包的数据进行解码,再用接收到的数据和前帧数据对丢失的数据进行掩盖。
对于特例双重打包方法来说,如果两个数据包均正确接收,解码器将每个包的数据恢复原始数据进行编码,将另一个数据包中复制的图像头数据抛弃;如果只收到第一个数据包(这可以简单地通过判断接收到的RTP包的序列号是否连续得到),解码器对接收到的包的数据进行解码,再用接收到的数据和前帧数据对丢失的数据进行掩盖;如果只接收到第二个数据包,则解码器首先处理RFC2429的包头得到正确的图像头数据,然后再对包中的码流数据解码,丢失的奇数行数据用偶数行数据和前帧数据掩盖。关于错误掩盖的方法是现有技术,编解码的方法也是已有技术。
本方法经过了在计算机上的模拟实验,证明了在1%丢包率的情况下,能够达到可以接受的图象质量。
权利要求
1.一种视讯图像传输的主动防错方法,其特征在于,它由下列步骤组成a、发送端的编码器与接收端的解码器之间采用能够传送图像数据且同时能够进行两端的数据反馈的协议,接收端解码器通过该协议定期向发送端编码器发送含有当前网络条件信息的数据包;b、发送端编码器对该数据包中的当前网络条件信息进行分析,对待编码的帧或宏块间隔一段时间采取帧内编码;c、对编码器编好的码流打包,在信道上传输;d、接收端恢复包中数据并解码。
2.根据权利要求1所述的视讯图像传输的主动防错方法,其特征在于步骤a中的能够传送图像数据且同时能够进行两端的数据反馈的协议是实时传输/实时传输控制协议。
3.根据权利要求1所述的视讯图像传输的主动防错方法,其特征在于,步骤b具体包括b1、根据步骤a获得的当前网络条件信息中的丢包率,按照Ifreq=1/p计算出进行帧内编码相隔的帧数,其中,p代表丢包率,Ifreq代表进行帧内编码相隔的帧数;b2、每隔Ifreq帧对待编码的宏块进行帧内编码。
4.根据权利要求1所述的视讯图像传输的主动防错方法,其特征在于,步骤b具体包括b1′、对于每个待编码的宏块,分别计算在跳过、帧间和帧内三种编码模式下的参数Dq、Dc、R、p、λ,其中,跳过编码模式表示该待编码宏块不进行编码,解码时只需复制上一帧相同位置上的宏块数据,Dq是由于量化误差导致的方差,Dc是由于出现误码以后从一个被掩盖处理后的块进行预测所造成的方差,R是编码所得的码率,λ为常数,以上参数编码时能够确定,p代表丢包率,从步骤a获得的当前网络条件信息中获取;b2′、按照公式J=(1-p)*Dq+pDc+λR计算三种不同编码模式下的J值,选择使J值最小的模式作为宏块的编码模式。
5.根据权利要求4所述的视讯图像传输的主动防错方法,其特征在于步骤b1′中,λ取0.85×(Q/2)2,其中,Q为编码所用的量化步长。
6.根据权利要求1所述的视讯图像传输的主动防错方法,其特征在于步骤c中所述的码流打包是采用多重打包方法,其具体为将每一帧图像编码后码流的每行按次序分别分到若干个数据包中,在第一个数据包以外的每个数据包中复制一份图像头数据。
7.根据权利要求6所述的视讯图像传输的主动防错方法,其特征在于步骤d所述的接收端恢复包中数据并解码有两种情况d1如果多个数据包均正确接收,解码器将每个包的数据恢复原始数据进行编码,将第一个数据包以外的每个数据包中的图像头数据抛弃;d2如果有数据包丢失,解码器对接收到的包的数据进行解码,再用接收到的数据和前帧数据对丢失的数据进行掩盖。
8.根据权利要求6所述的视讯图像传输的主动防错方法,其特征在于步骤c中所述的码流打包是采用双重打包方法将每一帧图像编码后码流的奇数行放到一个数据包中,偶数行放到另一个数据包中,其中一个数据包有原始的图像头数据,另一个数据包复制一份图像头数据。
9.根据权利要求8所述的视讯图像传输的主动防错方法,其特征在于步骤d中,如果两个数据包均正确接收,解码器将每个包的数据恢复原始数据进行编码,将另一个数据包中复制的图像头数据抛弃;如果有数据包丢失,解码器对接收到的包的数据进行解码,再用接收到的数据和前帧数据对丢失的数据进行掩盖。
全文摘要
一种视讯图像传输的主动防错方法,它由下列步骤组成发送端的编码器与接收端的解码器之间采用能够传送图像数据/同时能够进行两端的数据反馈的协议,接收端解码器通过该协议定期向发送端编码器发送含有当前网络条件信息的数据包;发送端编码器对该数据包中的当前网络条件信息进行分析,对待编码的帧或宏块间隔一段时间采取帧内编码;对编码器编好的码流打包,在信道上传输;接收端恢复包中数据并解码。本发明在达到主动防错效果的同时,还适合于实时应用,且不增加带宽开销。
文档编号H04N7/64GK1466388SQ0212463
公开日2004年1月7日 申请日期2002年6月19日 优先权日2002年6月19日
发明者梁柱, 罗忠, 梁 柱 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1