CN109982093B - 视频解码错误补偿方法及装置、存储介质、终端 - Google Patents
视频解码错误补偿方法及装置、存储介质、终端 Download PDFInfo
- Publication number
- CN109982093B CN109982093B CN201711467017.8A CN201711467017A CN109982093B CN 109982093 B CN109982093 B CN 109982093B CN 201711467017 A CN201711467017 A CN 201711467017A CN 109982093 B CN109982093 B CN 109982093B
- Authority
- CN
- China
- Prior art keywords
- macro block
- macroblock
- detected
- decoding
- lost
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/573—Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/587—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal sub-sampling or interpolation, e.g. decimation or subsequent interpolation of pictures in a video sequence
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/89—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一种视频解码错误补偿方法及装置、存储介质、终端,视频解码错误补偿方法包括:对于当前帧中丢失区域的每一丢失宏块,确定丢失宏块的邻近宏块以及位于参考帧的参考宏块,所述参考宏块在所述参考帧的位置与所述丢失宏块在所述当前帧的位置相同;确定所述参考宏块以及所述邻近宏块的候选运动向量;根据解码过程中记录的各个像素的残差值确定各个候选运动向量对应的残差能量,所述残差能量为按照所述丢失宏块的大小计算得到的残差值的绝对值之和;根据各个候选运动向量对应的残差能量的大小确定补偿参考向量,并利用补偿参考向量指向的补偿参考宏块对所述丢失宏块进行补偿。通过本发明技术方案可以提高提高视频解码错误补偿的便捷性和准确性。
Description
技术领域
本发明涉及视频数据处理技术领域,尤其涉及一种视频解码错误补偿方法及装置、存储介质、终端。
背景技术
视频在串流传输播放时,时常由于网路不稳定造成封包丢失或数据出错的情况,造成画面质量损失。
现有技术中,针对封包丢失,会先针对丢失的宏块预测该宏块的运动向量,然后藉由宏块边缘比对演算法(boundary matching algorithm,BMA)在参考帧上找出最可能接近于丢失的原始宏块的宏块做填补。具体做法如下,对于当前帧丢失区域的补偿,先依照固定宏块大小(例如16像素×16像素)求得一组候选运动向量,候选运动向量可以来自当前丢失宏块的相邻宏块,或来自参考帧上相同位置的参考宏块,或是在这两者之间运算求得。在这组候选运动向量中,依照每个候选运动向量的值,在参考帧上得到对应的参考宏块,以补偿丢失宏块。
但是,为了提高宏块边缘比对结果的精准度,现有技术需要多组的候选运动向量做差值计算,来减低补偿宏块与原始宏块的误差,带宽与计算量大;此外由于丢失宏块不会只有单独一个,而是连续一段,造成丢失宏块外围包含正确解码重建的边缘减少,大多情况只剩下一个边缘,使得正确的比对值不多,误差增加,而这误差也会影响下一个邻近丢失宏块的边缘比对运算,造成误差一直传递下去,降低补偿后的视频质量。
发明内容
本发明解决的技术问题是如何提高视频解码错误补偿的便捷性和准确性,减小带宽与计算量。
为解决上述技术问题,本发明实施例提供一种视频解码错误补偿方法,视频解码错误补偿方法包括:对于当前帧中丢失区域的每一丢失宏块,确定丢失宏块的邻近宏块以及位于参考帧的参考宏块,所述参考宏块在所述参考帧的位置与所述丢失宏块在所述当前帧的位置相同;确定所述参考宏块以及所述邻近宏块的候选运动向量;根据解码过程中记录的各个像素的残差值确定各个候选运动向量对应的残差能量,所述残差能量为按照所述丢失宏块的大小计算得到的残差值的绝对值之和;根据各个候选运动向量对应的残差能量的大小确定补偿参考向量,并利用补偿参考向量指向的补偿参考宏块对所述丢失宏块进行补偿。
可选的,所述根据解码过程中记录的各个像素的残差值确定各个候选运动向量对应的残差能量包括:根据解码过程中记录的解码比特确定所述候选运动向量指向的宏块是否是正确解码得到的,所述解码比特可以表示宏块是否是正确解码得到的;如果所述候选运动向量指向的宏块是正确解码得到的,则确定所述候选运动向量对应的残差能量,以用于确定补偿参考向量。
可选的,所述根据解码过程中记录的各个像素的残差值确定各个候选运动向量对应的残差能量还包括:如果无法确定补偿参考向量,则确定剩余候选运动向量对应的残差能量,以用于确定补偿参考向量。
可选的,所述残差能量根据其取值大小选取不同的预设量化阶进行量化后记录的,所述残差能量越大,选取的预设量化阶越大。
可选的,所述利用补偿参考向量指向的补偿参考宏块对所述丢失宏块进行补偿包括:根据所述邻近宏块及其对应的位于所述参考帧的比较宏块的差异确定所述丢失宏块是否平滑,所述比较宏块位于所述参考帧的位置与其对应的所述邻近宏块在所述当前帧的位置相同;根据所述补偿参考向量的水平分量和垂直分量确定平滑参数,所述补偿参考向量的水平分量和垂直分量之和与所述平滑参数正相关;根据所述平滑参数、所述补偿参考宏块以及所述参考宏块对所述丢失宏块进行补偿。
可选的,所述根据所述平滑参数、所述补偿参考宏块以及所述参考宏块对所述丢失宏块进行补偿包括:将所述补偿参考宏块与所述平滑参数的乘积,以及所述参考宏块与修正参数的乘积之和对所述丢失宏块进行补偿,其中,所述平滑参数与所述修正参数负相关。
可选的,所述确定丢失宏块的邻近宏块以及位于参考帧的参考宏块之前还包括:对所述当前帧中的宏块是否发生比特解码错误进行检测;如果检测到发生比特解码错误的错误宏块,则将所述错误宏块加入所述丢失区域。
可选的,所述对所述当前帧中的宏块是否发生比特解码错误进行检测包括:确定解码方向的反方向上的宏块为待检测宏块;以解码过程反馈的发生比特解码错误的初始错误宏块为起始位置,在垂直方向上对所述待检测宏块进行检测,直至连续检测到数量为第一预设值且比特解码正确的待检测宏块,否则将发生比特解码错误的待检测宏块更新为水平方向检测的起始位置;如果在垂直方向上连续检测到数量为所述第一预设值且比特解码正确的待检测宏块,则以所述初始错误宏块为起始位置在水平方向上对所述待检测宏块进行检测,直至连续检测到数量为第二预设值且比特解码正确的待检测宏块,否则将发生比特解码错误的待检测宏块更新为垂直方向检测的起始位置;如果在垂直方向上未连续检测到数量为所述第一预设值且比特解码正确的待检测宏块,则以更新后的水平方向检测的起始位置在水平方向上对所述待检测宏块进行检测,直至连续检测到数量为所述第二预设值且比特解码正确的待检测宏块,否则将发生比特解码错误的待检测宏块更新为垂直方向检测的起始位置;检测完成后,将发生比特解码错误的待检测宏块作为所述错误宏块。
可选的,通过以下方式判断所述待检测宏块是否发生比特解码错误:计算所述待检测宏块与其邻近宏块的边缘在三个方向上的像素差值,所述三个方向选自0度、45度、90度和135度;计算位于所述参考帧上参考边缘在所述三个方向上的像素差值,所述参考边缘在所述参考帧上的位置与所述边缘在所述当前帧上的位置相同;如果任一边缘与其对应的参考边缘值在各个方向上的像素差值的差值最小值大于设定阈值,则所述待检测宏块发生比特解码错误。
可选的,所述确定丢失宏块的邻近宏块以及位于参考帧的参考宏块之前还包括:在片解码过程中,判断所述当前帧的片是否发生重叠;如果所述当前帧的片发生重叠,则记录宏块重叠范围,以加入所述丢失区域。
可选的,所述确定丢失宏块的邻近宏块以及位于参考帧的参考宏块之前还包括:在宏块解码过程中,检测已解码NALU单元的大小是否与设定NALU单元大小一致;如果不一致,则对宏块是否发生比特解码错误进行检测,并记录错误宏块,以加入所述丢失区域。
本发明实施例还公开了一种视频解码错误补偿装置,视频解码错误补偿装置包括:宏块确定模块,适于对于当前帧中丢失区域的每一丢失宏块,确定丢失宏块的邻近宏块以及位于参考帧的参考宏块,所述参考宏块在所述参考帧的位置与所述丢失宏块在所述当前帧的位置相同;候选运动向量确定模块,适于确定所述参考宏块以及所述邻近宏块的候选运动向量;残差能量确定模块,适于根据解码过程中记录的各个像素的残差值确定各个候选运动向量对应的残差能量,所述残差能量为按照所述丢失宏块的大小计算得到的残差值的绝对值之和;补偿模块,适于根据各个候选运动向量对应的残差能量的大小确定补偿参考向量,并利用补偿参考向量指向的补偿参考宏块对所述丢失宏块进行补偿。
本发明实施例还公开了一种存储介质,其上存储有计算机指令,所述计算机指令运行时执行所述视频解码错误补偿方法的步骤。
本发明实施例还公开了一种终端,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行所述视频解码错误补偿方法的步骤。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
本发明技术方案对于当前帧中丢失区域的每一丢失宏块,确定丢失宏块的邻近宏块以及位于参考帧的参考宏块,所述参考宏块在所述参考帧的位置与所述丢失宏块在所述当前帧的位置相同;确定所述参考宏块以及所述邻近宏块的候选运动向量;根据解码过程中记录的各个像素的残差值确定各个候选运动向量对应的残差能量,所述残差能量为按照所述丢失宏块的大小计算得到的残差值的绝对值之和;根据各个候选运动向量对应的残差能量的大小确定补偿参考向量,并利用补偿参考向量指向的补偿参考宏块对所述丢失宏块进行补偿。本发明技术方案基于解码过程中记录的各个运动向量对应的残差值,来确定各个候选运动向量对应的残差能量,并使用残差能量来筛选候选运动向量,相对于现有技术中宏块边缘比对运算,可以减小计算量与带宽。此外,通过直接基于解码系统记录下的参考帧上候选运动向量对应的宏块大小和残差值来确定残差能量,可以降低额外成本。
进一步地,根据解码过程中记录的解码比特确定所述候选运动向量指向的宏块是否是正确解码得到的,所述解码比特可以表示宏块是否是正确解码得到的;如果所述候选运动向量指向的宏块是正确解码得到的,则确定所述候选运动向量对应的残差能量,以用于确定补偿参考向量;如果无法确定补偿参考向量,则确定剩余候选运动向量对应的残差能量,以用于确定补偿参考向量。为了减少误差传递,本发明技术方案在挑选候选运动向量时会优先使用正确解码得到的宏块对应的运动向量,当正确解码得到的宏块对应的运动向量完全不可得时才使用补偿过的宏块对应的运动向量,从而可以获得较优的候选运动向量来参与补偿参考向量的确定,进而提高用于补偿的补偿参考宏块的准确性,进一步提高对丢失宏块的补偿的准确性。
进一步地,所述残差能量根据其取值大小选取不同的预设量化阶进行量化后记录的,所述残差能量越大,选取的预设量化阶越大。本发明技术方案中,如果解码过程记录下来的残差值差异不大,则可被视为同量级;由此在保证判断准确性的基础上,通过使用量化方式将所需存储空间进一步减少。
进一步地,根据所述邻近宏块及其对应的位于所述参考帧的比较宏块的差异确定所述丢失宏块是否平滑,所述比较宏块位于所述参考帧的位置与其对应的所述邻近宏块在所述当前帧的位置相同;根据所述补偿参考向量的水平分量和垂直分量确定平滑参数,所述补偿参考向量的水平分量和垂直分量之和与所述平滑参数正相关;根据所述平滑参数、所述补偿参考宏块以及所述参考宏块对所述丢失宏块进行补偿。在利用补偿参考宏块做补偿时,在静止的场景下容易因为预测误差而出现补偿的画面偏移,进而造成前后帧画面抖动的现象;本发明技术方案中,通过使用像素平滑方式确定平滑参数,并利用平滑参数、所述补偿参考宏块以及所述参考宏块对所述丢失宏块进行补偿,以减缓画面抖动现象,进一步提高对丢失宏块的补偿的准确性。
进一步地,对所述当前帧中的宏块是否发生比特解码错误进行检测;如果检测到发生比特解码错误的错误宏块,则将所述错误宏块加入所述丢失区域。视频在串流传输播放的过程可能产生比特错误,由于视频码流编码方式为可变长编码的缘故,因此很小的错误就会对画面造成严重的损坏。本发明技术方案通过在丢失宏块进行补偿之前进行错误检测,以保证视频解码错误补偿的全面性,进而提高补偿后视频数据的指令。
进一步地,计算所述待检测宏块与其邻近宏块的边缘在三个方向上的像素差值,所述三个方向选自0度、45度、90度和135度;计算位于所述参考帧上参考边缘在所述三个方向上的像素差值,所述参考边缘在所述参考帧上的位置与所述边缘在所述当前帧上的位置相同;如果任一边缘与其对应的参考边缘值在各个方向上的像素差值的差值最小值大于设定阈值,则所述待检测宏块发生比特解码错误。本发明技术方案通过使用宏块边缘的像素差来检测发生比特解码错误的区域,实现了对丢失区域的检测。
附图说明
图1是本发明实施例一种视频解码错误补偿方法的流程图;
图2是本发明实施例一种候选运动向量的示意图;
图3是图1所示步骤S103的一种具体实施方式的流程图;
图4是图1所示步骤S104的一种具体实施方式的流程图;
图5本发明实施例一种邻近宏块与比较宏块的示意图;
图6是本发明实施例的一种具体应用场景的示意图;
图7是本发明实施例一种视频解码错误补偿方法的部分流程图;
图8是待检测宏块与其邻近宏块的示意图;
图9是比特错误检测步骤在具体应用场景中的示意图;
图10是视频解码步骤在具体应用场景中的示意图;
图11是本发明实施例一种视频解码错误补偿装置的结构示意图;
图12是图11所示补偿模块1104的一种具体实施方式的结构示意图;
图13是比特解码错误检测模块的一种具体实施方式的结构示意图。
具体实施方式
如背景技术中所述,为了提高宏块边缘比对结果的精准度,现有技术需要多组的候选运动向量做差值计算,来减低补偿宏块与原始宏块的误差,带宽与计算量大;此外由于丢失宏块不会只有单独一个,而是连续一段,造成丢失宏块外围包含正确解码重建的边缘减少,大多情况只剩下一个边缘,使得正确的比对值不多,误差增加,而这误差也会影响下一个邻近丢失宏块的边缘比对运算,造成误差一直传递下去,降低补偿后的视频质量。
本发明技术方案基于解码过程中记录的各个运动向量对应的残差值,来确定各个候选运动向量对应的残差能量,并使用残差能量来筛选候选运动向量,相对于现有技术中宏块边缘比对运算,可以减小计算量与带宽。此外,通过直接基于解码系统记录下的参考帧上候选运动向量对应的宏块大小和残差值来确定残差能量,可以降低额外成本。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
图1是本发明实施例一种视频解码错误补偿方法的流程图。
图1所示视频解码错误补偿方法可以包括以下步骤:
步骤S101:对于当前帧中丢失区域的每一丢失宏块,确定丢失宏块的邻近宏块以及位于参考帧的参考宏块,所述参考宏块在所述参考帧的位置与所述丢失宏块在所述当前帧的位置相同;
步骤S102:确定所述参考宏块以及所述邻近宏块的候选运动向量;
步骤S103:根据解码过程中记录的各个像素的残差值确定各个候选运动向量对应的残差能量,所述残差能量为按照所述丢失宏块的大小计算得到的残差值的绝对值之和;
步骤S104:根据各个候选运动向量对应的残差能量的大小确定补偿参考向量,并利用补偿参考向量指向的补偿参考宏块对所述丢失宏块进行补偿。
解码系统可以逐帧对视频进行解码,每帧解码完成后,可以进入解码错误补偿的流程。本实施例中步骤S101至步骤S104可以是在对当前帧解码完成后进行的。
对当前帧解码完成后,可以确定当前帧的丢失区域。所示丢失区域可以包括多个丢失宏块;所述丢失宏块可以是解码错误的宏块,也可以是发生丢失的宏块。在步骤S101和步骤S102的具体实施中,对于每一丢失宏块,根据丢失宏块在当前帧的邻近宏块以及位于参考帧的参考宏块,确定候选运动向量,以用于筛选出最终用于补偿的补偿参考宏块。本领域技术人员可以理解的是,当前帧的参考帧可以是预先确定的,确定方式可以是现有技术中任意可实施的方式,此处不做限制。
需要说明的是,邻近宏块的选取方式可以是丢失宏块在各个方向的相邻宏块;邻近宏块的数量可以是4、5、6等,具体数量可以根据实际的应用需求进行适应性配置。
具体地,候选运动向量可以表示当前帧的宏块与参考帧上哪个宏块的相似度最大,也即当前帧的宏块与参考帧上相似度最大的宏块的位移。
请参照图2,对于丢失宏块M,其参考宏块为位于参考帧的宏块1,其邻近宏块为位于当前帧的宏块2、宏块3、宏块4和宏块5。由此,可以确定对应宏块1、宏块2、宏块3、宏块4和宏块5的5个候选运动向量:候选运动向量1、候选运动向量2、候选运动向量3、候选运动向量4和候选运动向量5(图未示)。
在解码过程中会记录当前帧每个像素与参考帧上相似度最大的像素的残差值;残差值可以表征该像素与参考帧上相似度最大的像素之间的相似度。由于每一宏块包括若干个像素,因此在步骤S103的具体实施中,可以利用预先记录的各个像素的残差值确定各个候选运动向量对应的残差能量。残差能量为按照所述丢失宏块的大小计算得到的残差值的绝对值之和。具体而言,候选运动向量对应的残差能量也即候选运动向量指向的两个宏块的残差能量。
不同的编解码标准H.261、H.263、H.264具有不同大小的宏块。例如,宏块大小为16像素×16像素、32像素×32像素等,那么该宏块的残差能量为宏块内各个像素的残差值的绝对值之和。
两个宏块的残差能量越小,表示两个宏块越近似。由此,在步骤S104的具体实施中,根据各个候选运动向量对应的残差能量的大小筛选出最优候选运动向量为补偿参考向量。也就是说,选取残差能量最小的候选运动向量为补偿参考向量。进而,确定补偿参考向量指向的宏块为补偿参考宏块,利用该补偿参考宏块对所述丢失宏块进行补偿。例如,请参照图2,在确定候选运动向量1为补偿参考向量后,可以确定宏块2’为补偿参考宏块。
进一步地,可以利用补偿参考宏块替代所述丢失宏块,以实现对丢失宏块的补偿。
本发明实施例基于解码过程中记录的各个运动向量对应的残差值,来确定各个候选运动向量对应的残差能量,并使用残差能量来筛选候选运动向量,相对于现有技术中宏块边缘比对运算,可以减小计算量与带宽。此外,通过直接基于解码系统记录下的参考帧上候选运动向量对应的宏块大小和残差值来确定残差能量,可以降低额外成本。
在本发明一个优选实施例中,请参照图1和图3,步骤S103可以包括步骤S301和步骤S302,或者步骤S301至步骤S303。
步骤S301:根据解码过程中记录的解码比特确定所述候选运动向量指向的宏块是否是正确解码得到的,所述解码比特可以表示宏块是否是正确解码得到的;
步骤S302:如果所述候选运动向量指向的宏块是正确解码得到的,则确定所述候选运动向量对应的残差能量,以用于确定补偿参考向量。
本实施例中,在对候选运动向量进行筛选的过程中,在确定候选运动的残差能量之前,先判断所述候选运动向量指向的宏块是否是正确解码得到的。具体而言,在解码过程中,可以采用解码比特来表示宏块是否是正确解码得到的。例如,1表示该宏块是正确解码得到的;0表示宏块是经过错误补偿得到的。
进而在步骤S302的具体实施中,可以确定正确解码得到的宏块的候选运动向量对应的残差能量,以用于确定补偿参考宏块。
步骤S303:如果无法确定补偿参考向量,则确定剩余候选运动向量对应的残差能量,以用于确定补偿参考向量。
本实施例中,经过步骤S302无法确定补偿参考向量的话,则可以确定剩余候选运动向量对应的残差能量,以用于确定补偿参考向量。具体地,在各个候选运动向量指向的宏块均为帧内预测或补偿过的宏块时,则可以执行步骤S303。
本发明实施例在挑选候选运动向量时会优先使用正确解码得到的宏块对应的运动向量,当正确解码得到的宏块对应的运动向量完全不可得时才使用补偿过的宏块对应的运动向量;通过采用两个回合筛选候选运动向量,可以减少错误递沿。进而提高用于补偿的补偿参考宏块的准确性,进一步提高对丢失宏块的补偿的准确性。
在本发明另一个优选实施例中,所述残差能量根据其取值大小选取不同的预设量化阶进行量化后记录的,所述残差能量越大,选取的预设量化阶越大。
本实施例中,可以基于解码系统需要记录下的参考帧的宏块大小来记录残差能量,在额外成本上取得较好平衡。如果记录的残差能量值差异不大,则可被视为同个量级,故可使用量化方式将所需存储空间进一步减少,本发明实施例的量化方式可节省至少50%以上存储空间。
具体实施中,对于不同取值范围的残差能量,可以选取对应的量化阶进行量化后存储。量化阶的大小与宏块的大小正相关。
如表1所示,宏块大小为8×8时,对于0-31范围内的残差能量,采用量化阶为2进行量化,量化后的范围为0-15;对于32-223范围内的残差能量,采用量化阶为4进行量化,量化后的范围为16-63;对于224-1752+范围内的残差能量,采用量化阶为8进行量化,量化后的范围为64-255。同理,宏块大小16×16、32×32时,量化方式如上所述。由此,量化后的残差能量的取值大大减小,从而可以减小占用的存储空间。
表1
在本发明又一个优选实施例中,图1所示步骤S104可以包括以下步骤:
步骤S401:根据所述邻近宏块及其对应的位于所述参考帧的比较宏块的差异确定所述丢失宏块是否平滑,所述比较宏块位于所述参考帧的位置与其对应的所述邻近宏块在所述当前帧的位置相同;
步骤S402:根据所述补偿参考向量的水平分量和垂直分量确定平滑参数,所述补偿参考向量的水平分量和垂直分量之和与所述平滑参数正相关;
步骤S403:根据所述平滑参数、所述补偿参考宏块以及所述参考宏块对所述丢失宏块进行补偿。
在利用补偿参考宏块做补偿时,在静止的场景下容易因为预测误差而出现补偿的画面偏移,进而造成前后帧画面抖动的现象;本发明实施例中,通过使用像素平滑方式确定平滑参数,并利用平滑参数、所述补偿参考宏块以及所述参考宏块对所述丢失宏块进行补偿,以减缓画面抖动现象,进一步提高对丢失宏块的补偿的准确性。
在步骤S401的具体实施中,邻近宏块可以是丢失宏块的上下左右四个方向的四个邻近宏块。则比较宏块为位于所述参考帧的位置与四个邻近宏块在所述当前帧的位置相同的宏块。
进一步而言,邻近宏块与比较宏块的差异可以是邻近宏块与比较宏块的亮度差值与色度差值。也就是说,比较邻近宏块与比较宏块的亮度差值的平均值与色度差值的平均值是否小于设定阈值。如果是,则丢失宏块是平滑的,否则,丢失宏块不平滑。
请一并参照图5,邻近宏块A和邻近宏块B分别对应比较宏块A’和比较宏块B’。可以通过以下公式判断丢失宏块是否平滑:
&&∑all_y_pixelsabs(lumaB-lumaB′)+∑all_uv_pixelsabs(chromaB-chromaB′))<(3ll_pixels);其中,lumaA和lumaA′分别表示邻近宏块A和比较宏块A’的亮度,chromaA和chromaA′分别表示邻近宏块A和比较宏块A’的色度,lumaB和lumaB′分别表示邻近宏块B和比较宏块B’的亮度,chromaB和chromaB′分别表示邻近宏块B和比较宏块B’的色度,3为设定阈值。
在步骤S402的具体实施中,可以根据偿参考向量确定平滑参数。所述补偿参考向量的水平分量和垂直分量之和与所述平滑参数正相关。由于补偿参考向量的水平分量和垂直分量之和与所述平滑参数正相关,因此在后续利用平滑参数对丢失宏块进行补偿时,平滑参数越小,用于补偿丢失宏块的宏块会侧重丢失宏块的参考宏块;平滑参数越大,用于补偿丢失宏块的宏块会侧重补偿参考宏块。
更具体地,偿参考向量的水平分量和垂直分量之和max_mv为:max_mv=abs(MVref_x)+abs(MVref_y),其中,MVref_x为补偿参考向量的水平分量,MVref_y为补偿参考向量的垂直分量。
平滑参数a0与偿参考向量的水平分量和垂直分量之和max_mv的对应关系如表2所示,max_mv为0时,平滑参数a0为0,max_mv为1时,平滑参数a0为1/8,max_mv为2时,平滑参数a0为2/8等。需要说明的是,平滑参数a0的具体数值也可以根据实际应用环境进行配置,本发明实施例对此不做限制。
max_mv | 0 | 1 | 2 | 3 | 4 | 5 | >5 |
平滑参数a0 | 0 | 1/8 | 2/8 | 5/8 | 6/8 | 7/8 | 1 |
表2
进一步地,步骤S403可以包括以下步骤:将所述补偿参考宏块与所述平滑参数的乘积,以及所述参考宏块与修正参数的乘积之和对所述丢失宏块进行补偿,其中,所述平滑参数与所述修正参数负相关。
具体实施中,平滑参数与所述修正参数负相关。例如,平滑参数为a0,则修正参数可以为1-a0。
更具体地,可以采用以下公式进行计算补偿后的丢失宏块concealed_block:concealed_ock=a0×ref_block(MV(ref_x,ref_y))+(1-a0×ref_block(MV(0,0));其中,ref_block(MV(ref_x,ref_y))为补偿参考宏块,ref_block(MV(0,0))为向量(0,0)指向的宏块,也即丢失宏块的参考宏块。
由上所述,当平滑参数越小时会越侧重参考宏块,表示丢失区块的小位移应该被忽略,反之平滑参数越大时会越侧重补偿参考宏块,这是因为丢失宏块虽然被判断为平滑区块,但补偿参考向量的偏移过大,不适合再与静止的参考宏块做合并。通过本发明实施例可以减缓静止画面的抖动,同时也保留了微小运动,提高错误补偿画面的质量。
在图6所示的具体应用场景中,当前帧的补偿型态包括帧内补偿和帧间补偿。只有在补偿型态为帧间补偿时,才会使用图1所示视频错误解码补偿方法。
由此,在步骤S601中,判断当前帧的补偿型态是否是帧内补偿,如果是,则进入步骤S602直接进行帧内补偿。否则,进入步骤S603对当前帧的场景变换进行判断,也即判断当前帧与参考帧的内容差异是否达到设定阈值,如果是,则不适合采用帧间补偿,则进入步骤S604进行帧内补偿。否则,进入步骤S605。
本领域技术人员可以理解的是,可以采用任意可实施的现有技术进行帧内补偿。
在步骤S605中,可以计算每一丢失宏块的平滑度。计算平滑度的具体方式可参照图4和图5所示实施例,此处不再赘述。
在步骤S606中,确定候选运动向量并挑选第一轮候选运动向量。在步骤S607中,如果挑选后的第一轮候选运动向量的数量大于0,则进入步骤S612,否则进入步骤S608挑选第二轮候选运动向量。
具体实施方式可参照图1和图3所示实施例,此处不再赘述。
在步骤S609中,判断挑选后的第二轮候选运动向量的数量是否大于0,如果是,则进入步骤S612,否则,进入步骤S611,确定(0,0)为补偿参考向量。在这种情况下,补偿参考宏块为丢失宏块的参考宏块。
在步骤S612中,根据各个候选运动向量对应的残差能量的大小确定补偿参考向量,也即确定残差能量最小的候选运动向量为补偿参考向量。
在步骤S613中,根据步骤S605计算的平滑度计算丢失宏块的平滑参数;并在步骤S614中,根据平滑参数、补偿参考宏块以及参考宏块对丢失宏块进行补偿。具体请参照图4和图5所示实施例,此处不再赘述。
图1所示的视频解码错误补偿方法还可以包括以下步骤:对所述当前帧中的宏块是否发生比特解码错误进行检测;如果检测到发生比特解码错误的错误宏块,则将所述错误宏块加入所述丢失区域。
本实施例中的步骤可以执行在步骤S101之前。上述步骤可以是在对当前帧进行解码的过程中执行的。
视频在串流传输播放的过程可能产生比特错误,由于视频码流编码方式为可变长编码的缘故,因此很小的错误就会对画面造成严重的损坏。本发明实施例通过在丢失宏块进行补偿之前进行错误检测,以保证视频解码错误补偿的全面性,进而提高补偿后视频数据的质量;还可以应用于不稳定的网络环境下的视频解码过程。
如图7所示,对所述当前帧中的宏块是否发生比特解码错误进行检测可以包括以下步骤:
步骤S701:确定解码方向的反方向上的宏块为待检测宏块;
步骤S702:以解码过程反馈的发生比特解码错误的初始错误宏块为起始位置,在垂直方向上对所述待检测宏块进行检测,直至连续检测到数量为第一预设值且比特解码正确的待检测宏块,否则将发生比特解码错误的待检测宏块更新为水平方向检测的起始位置;
步骤S703:如果在垂直方向上连续检测到数量为所述第一预设值且比特解码正确的待检测宏块,则以所述初始错误宏块为起始位置在水平方向上对所述待检测宏块进行检测,直至连续检测到数量为第二预设值且比特解码正确的待检测宏块,否则将发生比特解码错误的待检测宏块更新为垂直方向检测的起始位置;
步骤S704:如果在垂直方向上未连续检测到数量为所述第一预设值且比特解码正确的待检测宏块,则以更新后的水平方向检测的起始位置在水平方向上对所述待检测宏块进行检测,直至连续检测到数量为所述第二预设值且比特解码正确的待检测宏块,否则将发生比特解码错误的待检测宏块更新为垂直方向检测的起始位置;
步骤S705:检测完成后,将发生比特解码错误的待检测宏块作为所述错误宏块。
由于解码系统回报的发生比特错误的宏块(也即初始错误宏块)的位置不一定是第一个发生比特错误的位置,因此比特错误检测可以往回检测搜寻,也即在解码方向的反方向上进行比特错误检测。从解码系统回报的错误位置(X,Y)开始,也即从初始错误宏块的位置(X,Y)开始,先往垂直方向搜寻,一直到连续第一预设值TH_Y个正确宏块为止,然后开始水平方向搜寻,直到连续第二预设值TH_X个正确宏块为止。如果水平方向有检测到错误宏块,则垂直方向需要重新搜寻,同理,若垂直方向有检测到错误宏块,水平方向也需要重新搜寻,一直到垂直方向与水平方向分别满足TH_Y与TH_X个连续正确宏块为止。
通过本发明实施例的比特错误检测路径,可以减少检测次数,同时保证检测准确度。
第一预设值TH_Y和第二预设值TH_X可以是预先设定的。
更具体而言,为了避免搜寻时间过长,会对第一预设值TH_Y与第二预设值TH_X做出限制。例如,TH_Y=MIN(5,Frame_Height/4);TH_X=MIN(10,Frame_Width/4);其中,Frame_Height为当前帧的高度;Frame_Width为当前帧的宽度。第一预设值TH_Y与第二预设值TH_X也可以以其他任意可实施的方式设置,本发明实施例对此不做限制。
通过对第一预设值TH_Y和第二预设值TH_X的限制,可以兼顾检测准确度与检测所花费的时间。
进一步而言,可以通过以下方式判断所述待检测宏块是否发生比特解码错误:
计算所述待检测宏块与其邻近宏块的边缘在三个方向上的像素差值,所述三个方向选自0度、45度、90度和135度;
计算位于所述参考帧上参考边缘在所述三个方向上的像素差值,所述参考边缘在所述参考帧上的位置与所述边缘在所述当前帧上的位置相同;
如果任一边缘与其对应的参考边缘值在各个方向上的像素差值的差值最小值大于设定阈值,则所述待检测宏块发生比特解码错误。
本实施例中,为了确定待检测宏块是否发生比特解码错误,由于待检测宏块是否正确未知,因此需要用于比较的参考值。可以选用参考帧上与待检测宏块的边缘位置相同的参考边缘作为参考,比较参考边缘与待检测宏块的边缘的像素值差异。
本发明实施例通过在多个方向上确定边缘差异,避免了图像单一纹理的限制,提高了检测准确性。
进一步地,所述像素差值像素的亮度值差值。
具体可参照图8,在垂直方向上判断待检测宏块是否发生比特解码错误时,以待检测宏块p与其上邻近宏块q的边缘、左邻近宏块(图未示)的边缘与右邻近宏块(图未示)的边缘作为待检测宏块的边缘。并计算每个边缘在三个方向(0°/90°、45°、135°)上像素差值。还可以计算参考帧上相同位置的边缘在三个方向(0°/90°、45°、135°)上像素差值。之后计算待检测宏块p与参考宏块在三个方向上像素差值的差值平均值,以取值最小值者表示该边缘的代表值,若三个边缘的代表值中有任一值大于设定阈值,则判断该待检测宏块p为错误宏块。
可以采用以下公式计算像素差值:diff=∑block_length(abs(p0-2×p1+p2)+abs(q0-2×q1+q2)),其中,block_length表示宏块边缘长度。
可以采用以下公式计算所述参考边缘与所述边缘在各个方向上的像素差值的差值avg_diff_0,avg_diff_45and avg_diff_135:
avg_diff=abs(diff-diffref)/lock_length。
min_doff=MIN(avg_diff_0,avg_diff_45,avg_diff_135)。
通过以下公式判断待检测宏块发生比特解码错误:(min_diffedge0>5|min_difedge1>5)|(min_diffedge2>5),其中,5为所述设定阈值。所述设定阈值还可以是其他任意可实施的数值,本发明实施例对此不做限制。
同理,在水平方向上判断待检测宏块是否发生比特解码错误时,以待检测宏块p与其左邻近宏块q、上邻近宏块与下邻近宏块的边缘作为待检测宏块的边缘。剩余过程可参照前述在垂直方向上判断待检测宏块是否发生比特解码错误的过程,此处不再赘述。
如图9所示,位置(X,Y)表示检测的起始位置,位置(Xr,Yr)为比特错误检测过程检测出的错误宏块位置。x_cnts为水平方向上比特解码正确的宏块的计数,y_cnts为垂直方向上比特解码正确的宏块的计数,x_loop为1表示发生比特解码错误的待检测宏块在垂直方向上的位置发生变化,水平方向的检测需要重新开始;y_loop为1表示发生比特解码错误的待检测宏块在水平方向上的位置发生变化,垂直方向的检测需要重新开始。
在步骤S901中,初始化x_cnts,y_cnts为0,x_loop为1,解码过程反馈的发生比特解码错误的初始错误宏块位置为(X,Y),将初始错误宏块位置为(X,Y)赋值给错误宏块位置(Xr,Yr)。
在步骤S902中,将位置(X,Y)作为垂直方向上的检测起始位置。
在步骤S903中,检测位置(X,Y)的宏块是否为正确宏块。如果是,则进入步骤S906。否则在步骤S904中初始化垂直方向的计数y_cnts为0,x_loop为1。
在步骤S905中,将位置(X,Y)赋值给错误宏块位置(Xr,Yr),并更新垂直方向检测起始位置(X,Y)为(X,Y-1),然后进入步骤S902重新检测。
在步骤S906中,垂直方向的计数y_cnts加1并判断是否达到第一预设值TH_Y,如果是,则进入步骤S908,开始水平方向的检测。否则,在步骤S907中,更新垂直方向检测起始位置(X,Y)为(X,Y-1),然后进入步骤S902继续检测。
在步骤S908中,初始化y_loop为0。
在步骤S909中,判断x_loop是否为1,如果是,表示水平方向需要检测,进入步骤S910更新水平方向检测起始位置(X,Y)为(Xr-1,Yr)。否则,表示水平方向不需要检测,进入步骤S918,确定错误宏块位置为(Xr,Yr)。
在步骤S911中,将位置(X,Y)作为水平方向上的检测起始位置。
在步骤S912中,检测位置(X,Y)的宏块是否为正确宏块。如果是,则进入步骤S915。否则在步骤S913中初始化水平方向的计数x_cnts为0,y_loop为1。
在步骤S914中,将位置(X,Y)赋值给错误宏块位置(Xr,Yr),并更新水平方向检测起始位置(X,Y)为(X-1,Y),然后进入步骤S911重新检测。
在步骤S915中,水平方向的计数x_cnts加1并判断是否达到第二预设值TH_X,如果是,则进入步骤S917。否则,在步骤S916中,更新水平方向检测起始位置(X,Y)为(X-1,Y),然后进入步骤S911继续检测。
在步骤S917中,判断y_loop是否为1,如果是,表示垂直方向需要检测,进入步骤S919,初始化垂直方向的计数y_cnts为0,x_loop为0。否则进入步骤S918,确定错误宏块位置为(Xr,Yr)。
在步骤S920中,更新垂直方向检测起始位置(X,Y)为(Xr,Yr),并进入步骤S907重新检测。
本发明实施例的更多具体实施方式请参照前述相关实施例,此处不再赘述。
本发明另一个优选实施例中,一并参照图1,在步骤S101之前还可以包括以下步骤:在片解码过程中,判断所述当前帧的片是否发生重叠;如果是,则记录宏块重叠范围,以加入所述丢失区域。
本实施例中,如果当前帧的片发生重叠,在解码过程中会将新的内容覆盖掉旧的,而解码过程中的行缓冲区(line buffer)存储的是前一行的像素,由于重复解码,第二次解码所取得的行缓冲区值是不正确的。因此,本实施例通过记录宏块重叠范围,以加入所述丢失区域,以便在后续步骤中可以针对重叠区块的行缓冲区部分做错误补偿,进一步提高错误补偿后视频的质量。
本发明又一个优选实施例中,一并参照图1,在步骤S101之前还可以包括以下步骤:在宏块解码过程中,检测已解码NALU单元的大小是否与设定NALU单元大小一致;如果不一致,则对宏块是否发生比特解码错误进行检测,并记录错误宏块,以加入所述丢失区域。
在正确解码的情况下,网络提取层(network abstraction layer,NAL)单元的大小是固定的,因此通过检查已解码NALU单元大小,可以判断是否发生解码错误。
如图10所示,在本发明实施例的具体应用场景中,示出的是视频解码的完整流程,也即从片解码到宏块解码的完整流程。
在步骤S1001中,对片的头(header)信息进行解码。解码的具体过程可以是现有技术中任意可实施的方式,此处不做限制。
在步骤S1002中,判断片是否丢失,如果是,进入步骤S1003,否则进入步骤S1006。
在步骤S1003中,判断当前帧是否片解码结束,如果是,进入步骤S1004,进行图像输出处理,也即图中虚线框所示步骤S1018至步骤S1022。否则进入步骤S1009。
在步骤S1005中,判断第一个片是否丢失,如果是,进入步骤S1011记录丢失宏块范围。
在步骤S1006中,判断片是否发生重叠,如果是,进入步骤S1007,否则进入步骤S1012,开始宏块解码。
在步骤S1007中,进行比特错误检测,并记录最后错误位置。在步骤S1008中,记录宏块重叠范围。具体过程请参照图7至图9所示实施例,此处不再赘述。
在步骤S1009中,检查前一个片是否发生比特错误。如果是,则进入步骤S1010,进行比特错误检测,并记录最后错误位置。并在步骤S1011中,记录宏块丢失范围。
在步骤S1013中,判断宏块解码是否错误,如果是,进入步骤S1015,标记发生比特错误。否则进入步骤S1014,检查已解码NALU单元大小是否错误,如果是,进入步骤S1015。否则进入步骤S1016。
在步骤S1016中,判断当前帧是否已结束。如果是,进入步骤S1018,否则进入步骤S1017,进行下一个片解码过程。
在步骤S1018中,检查最后一个片是否发生比特错误。如果是,进入步骤S1021,进行比特错误检测,并记录最后错误位置。
在步骤S1019中,判断是否有宏块需要补偿,如果是,则进入步骤S1022,进行错误补偿。否则进入步骤S1020,输出图像。错误补偿的具体流程强参照图1至图6所示实施例,此处不再赘述。
需要说明的是,图10所示实施例所记录的丢失宏块范围以及宏块重叠范围即为丢失区域,需要进行解码错误补偿。
如图11所示,视频解码错误补偿装置110可以包括:
宏块确定模块1101,适于对于当前帧中丢失区域的每一丢失宏块,确定丢失宏块的邻近宏块以及位于参考帧的参考宏块,所述参考宏块在所述参考帧的位置与所述丢失宏块在所述当前帧的位置相同;
候选运动向量确定模块1102,适于确定所述参考宏块以及所述邻近宏块的候选运动向量;
残差能量确定模块1103,适于根据解码过程中记录的各个像素的残差值确定各个候选运动向量对应的残差能量,所述残差能量为按照所述丢失宏块的大小计算得到的残差值的绝对值之和;
补偿模块1104,适于根据各个候选运动向量对应的残差能量的大小确定补偿参考向量,并利用补偿参考向量指向的补偿参考宏块对所述丢失宏块进行补偿。
优选地,残差能量确定模块1103可以包括解码确定单元,适于根据解码过程中记录的解码比特确定所述候选运动向量指向的宏块是否是正确解码得到的,所述解码比特可以表示宏块是否是正确解码得到的;第一残差能量确定单元,适于在所述候选运动向量指向的宏块是正确解码得到的时,确定所述候选运动向量对应的残差能量,以用于确定补偿参考向量。残差能量确定模块1103还可以包括第二残差能量确定单元,适于在无法确定补偿参考向量时,确定剩余候选运动向量对应的残差能量,以用于确定补偿参考向量。
在本发明一个优选实施例中,如图12所示,补偿模块1104可以包括:平滑确定单元1201,适于根据所述邻近宏块及其对应的位于所述参考帧的比较宏块的差异确定所述丢失宏块是否平滑,所述比较宏块位于所述参考帧的位置与其对应的所述邻近宏块在所述当前帧的位置相同;平滑参数计算单元1202,适于根据所述补偿参考向量的水平分量和垂直分量确定平滑参数,所述补偿参考向量的水平分量和垂直分量之和与所述平滑参数正相关;补偿单元1203,适于根据所述平滑参数、所述补偿参考宏块以及所述参考宏块对所述丢失宏块进行补偿。
本发明另一个优选实施例中,视频解码错误补偿装置110还可以包括:比特解码错误检测模块,适于对所述当前帧中的宏块是否发生比特解码错误进行检测;第一加入模块,适于检测到发生比特解码错误的错误宏块时,将所述错误宏块加入所述丢失区域。
进一步地,如图13所示,比特解码错误检测模块可以包括:待检测宏块确定单元1301,适于确定解码方向的反方向上的宏块为待检测宏块;垂直检测单元1302,适于以解码过程反馈的发生比特解码错误的初始错误宏块为起始位置,在垂直方向上对所述待检测宏块进行检测,直至连续检测到数量为第一预设值且比特解码正确的待检测宏块,否则将发生比特解码错误的待检测宏块更新为水平方向检测的起始位置;
第一水平检测单元1303,适于在垂直方向上连续检测到数量为所述第一预设值且比特解码正确的待检测宏块时,则以所述初始错误宏块为起始位置在水平方向上对所述待检测宏块进行检测,直至连续检测到数量为第二预设值且比特解码正确的待检测宏块,否则将发生比特解码错误的待检测宏块更新为垂直方向检测的起始位置;
第二水平检测单元1304,适于在垂直方向上未连续检测到数量为所述第一预设值且比特解码正确的待检测宏块,则以更新后的水平方向检测的起始位置在水平方向上对所述待检测宏块进行检测,直至连续检测到数量为所述第二预设值且比特解码正确的待检测宏块,否则将发生比特解码错误的待检测宏块更新为垂直方向检测的起始位置;
错误宏块确定单元1305,适于检测完成后,将发生比特解码错误的待检测宏块作为所述错误宏块。
进一步地,如图13所示,比特解码错误检测模块可以包括:第一像素差值计算单元1306,适于计算所述待检测宏块与其邻近宏块的边缘在三个方向上的像素差值,所述三个方向选自0度、45度、90度和135度;
第二像素差值计算单元1307,适于计算位于所述参考帧上参考边缘在所述三个方向上的像素差值,所述参考边缘在所述参考帧上的位置与所述边缘在所述当前帧上的位置相同;
错误判断单元1308,适于在任一边缘与其对应的参考边缘值在各个方向上的像素差值的差值最小值大于设定阈值时,所述待检测宏块发生比特解码错误。
在本发明又一个优选实施例中,视频解码错误补偿装置110还可以包括:重叠判断模块,适于在片解码过程中,判断所述当前帧的片是否发生重叠;第二加入模块,适于在所述当前帧的片发生重叠时,记录宏块重叠范围,以加入所述丢失区域。
或者,视频解码错误补偿装置110还可以包括:检查模块,适于在宏块解码过程中,检测已解码NALU单元的大小是否与设定NALU单元大小一致;第三加入模块,适于在不一致时,对宏块是否发生比特解码错误进行检测,并记录错误宏块,以加入所述丢失区域。
关于所述视频解码错误补偿装置110的工作原理、工作方式的更多内容,可以参照图1至图10中的相关描述,这里不再赘述。
本发明实施例还公开了一种存储介质,其上存储有计算机指令,所述计算机指令运行时可以执行图1至图10中所示的接视频解码错误补偿方法的步骤。所述存储介质可以包括ROM、RAM、磁盘或光盘等。所述存储介质还可以包括非挥发性存储器(non-volatile)或者非瞬态(non-transitory)存储器等。
本发明实施例还公开了一种终端,所述终端可以包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令。所述处理器运行所述计算机指令时可以执行图1至图10中所示的接视频解码错误补偿方法的步骤。所述终端包括但不限于手机、计算机、平板电脑等终端设备。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (20)
1.一种视频解码错误补偿方法,其特征在于,包括:
对于当前帧中丢失区域的每一丢失宏块,确定丢失宏块的邻近宏块以及位于参考帧的参考宏块,所述参考宏块在所述参考帧的位置与所述丢失宏块在所述当前帧的位置相同;
确定所述参考宏块以及所述邻近宏块的候选运动向量;
根据解码过程中记录的各个像素的残差值确定各个候选运动向量对应的残差能量,所述残差能量为按照所述丢失宏块的大小计算得到的残差值的绝对值之和,像素的残差值表征该像素与参考帧上相似度最大的像素之间的相似度;
根据各个候选运动向量对应的残差能量的大小确定补偿参考向量,并利用补偿参考向量指向的补偿参考宏块对所述丢失宏块进行补偿;
所述利用补偿参考向量指向的补偿参考宏块对所述丢失宏块进行补偿包括:
根据所述邻近宏块及其对应的位于所述参考帧的比较宏块的差异确定所述丢失宏块是否平滑,所述比较宏块位于所述参考帧的位置与其对应的所述邻近宏块在所述当前帧的位置相同;
根据所述补偿参考向量的水平分量和垂直分量确定平滑参数,所述补偿参考向量的水平分量和垂直分量之和与所述平滑参数正相关;
将所述补偿参考宏块与所述平滑参数的乘积,以及所述参考宏块与修正参数的乘积之和对所述丢失宏块进行补偿,其中,所述平滑参数与所述修正参数负相关。
2.根据权利要求1所述的视频解码错误补偿方法,其特征在于,所述根据解码过程中记录的各个像素的残差值确定各个候选运动向量对应的残差能量包括:
根据解码过程中记录的解码比特确定所述候选运动向量指向的宏块是否是正确解码得到的,所述解码比特表示宏块是否是正确解码得到的;
如果所述候选运动向量指向的宏块是正确解码得到的,则确定所述候选运动向量对应的残差能量,以用于确定补偿参考向量。
3.根据权利要求2所述的视频解码错误补偿方法,其特征在于,所述根据解码过程中记录的各个像素的残差值确定各个候选运动向量对应的残差能量还包括:
如果无法确定补偿参考向量,则确定剩余候选运动向量对应的残差能量,以用于确定补偿参考向量。
4.根据权利要求1所述的视频解码错误补偿方法,其特征在于,所述残差能量根据其取值大小选取不同的预设量化阶进行量化后记录的,所述残差能量越大,选取的预设量化阶越大。
5.根据权利要求1所述的视频解码错误补偿方法,其特征在于,所述确定丢失宏块的邻近宏块以及位于参考帧的参考宏块之前还包括:
对所述当前帧中的宏块是否发生比特解码错误进行检测;
如果检测到发生比特解码错误的错误宏块,则将所述错误宏块加入所述丢失区域。
6.根据权利要求5所述的视频解码错误补偿方法,其特征在于,所述对所述当前帧中的宏块是否发生比特解码错误进行检测包括:
确定解码方向的反方向上的宏块为待检测宏块;
以解码过程反馈的发生比特解码错误的初始错误宏块为起始位置,在垂直方向上对所述待检测宏块进行检测,直至连续检测到数量为第一预设值且比特解码正确的待检测宏块,否则将发生比特解码错误的待检测宏块更新为水平方向检测的起始位置;
如果在垂直方向上连续检测到数量为所述第一预设值且比特解码正确的待检测宏块,则以所述初始错误宏块为起始位置在水平方向上对所述待检测宏块进行检测,直至连续检测到数量为第二预设值且比特解码正确的待检测宏块,否则将发生比特解码错误的待检测宏块更新为垂直方向检测的起始位置;
如果在垂直方向上未连续检测到数量为所述第一预设值且比特解码正确的待检测宏块,则以更新后的水平方向检测的起始位置在水平方向上对所述待检测宏块进行检测,直至连续检测到数量为所述第二预设值且比特解码正确的待检测宏块,否则将发生比特解码错误的待检测宏块更新为垂直方向检测的起始位置;
检测完成后,将发生比特解码错误的待检测宏块作为所述错误宏块。
7.根据权利要求6所述的视频解码错误补偿方法,其特征在于,通过以下方式判断所述待检测宏块是否发生比特解码错误:
计算所述待检测宏块与其邻近宏块的边缘在三个方向上的像素差值,所述三个方向选自0度、45度、90度和135度;
计算位于所述参考帧上参考边缘在所述三个方向上的像素差值,所述参考边缘在所述参考帧上的位置与所述边缘在所述当前帧上的位置相同;
如果任一边缘与其对应的参考边缘值在各个方向上的像素差值的差值最小值大于设定阈值,则所述待检测宏块发生比特解码错误。
8.根据权利要求1所述的视频解码错误补偿方法,其特征在于,所述确定丢失宏块的邻近宏块以及位于参考帧的参考宏块之前还包括:
在片解码过程中,判断所述当前帧的片是否发生重叠;
如果所述当前帧的片发生重叠,则记录宏块重叠范围,以加入所述丢失区域。
9.根据权利要求1所述的视频解码错误补偿方法,其特征在于,所述确定丢失宏块的邻近宏块以及位于参考帧的参考宏块之前还包括:
在宏块解码过程中,检测已解码NALU单元的大小是否与设定NALU单元大小一致;
如果不一致,则对宏块是否发生比特解码错误进行检测,并记录错误宏块,以加入所述丢失区域。
10.一种视频解码错误补偿装置,其特征在于,包括:
宏块确定模块,适于对于当前帧中丢失区域的每一丢失宏块,确定丢失宏块的邻近宏块以及位于参考帧的参考宏块,所述参考宏块在所述参考帧的位置与所述丢失宏块在所述当前帧的位置相同;
候选运动向量确定模块,适于确定所述参考宏块以及所述邻近宏块的候选运动向量;
残差能量确定模块,适于根据解码过程中记录的各个像素的残差值确定各个候选运动向量对应的残差能量,所述残差能量为按照所述丢失宏块的大小计算得到的残差值的绝对值之和,像素的残差值表征该像素与参考帧上相似度最大的像素之间的相似度;
补偿模块,适于根据各个候选运动向量对应的残差能量的大小确定补偿参考向量,并利用补偿参考向量指向的补偿参考宏块对所述丢失宏块进行补偿;
所述补偿模块包括:
平滑确定单元,适于根据所述邻近宏块及其对应的位于所述参考帧的比较宏块的差异确定所述丢失宏块是否平滑,所述比较宏块位于所述参考帧的位置与其对应的所述邻近宏块在所述当前帧的位置相同;
平滑参数计算单元,适于根据所述补偿参考向量的水平分量和垂直分量确定平滑参数,所述补偿参考向量的水平分量和垂直分量之和与所述平滑参数正相关;
补偿单元,适于将所述补偿参考宏块与所述平滑参数的乘积,以及所述参考宏块与修正参数的乘积之和对所述丢失宏块进行补偿,其中,所述平滑参数与所述修正参数负相关。
11.根据权利要求10所述的视频解码错误补偿装置,其特征在于,所述残差能量确定模块包括:
解码确定单元,适于根据解码过程中记录的解码比特确定所述候选运动向量指向的宏块是否是正确解码得到的,所述解码比特表示宏块是否是正确解码得到的;
第一残差能量确定单元,适于在所述候选运动向量指向的宏块是正确解码得到的时,确定所述候选运动向量对应的残差能量,以用于确定补偿参考向量。
12.根据权利要求11所述的视频解码错误补偿装置,其特征在于,所述残差能量确定模块还包括:
第二残差能量确定单元,适于在无法确定补偿参考向量时,确定剩余候选运动向量对应的残差能量,以用于确定补偿参考向量。
13.根据权利要求10所述的视频解码错误补偿装置,其特征在于,所述残差能量根据其取值大小选取不同的预设量化阶进行量化后记录的,所述残差能量越大,选取的预设量化阶越大。
14.根据权利要求10所述的视频解码错误补偿装置,其特征在于,还包括:
比特解码错误检测模块,适于对所述当前帧中的宏块是否发生比特解码错误进行检测;
第一加入模块,适于检测到发生比特解码错误的错误宏块时,将所述错误宏块加入所述丢失区域。
15.根据权利要求14所述的视频解码错误补偿装置,其特征在于,所述比特解码错误检测模块包括:
待检测宏块确定单元,适于确定解码方向的反方向上的宏块为待检测宏块;垂直检测单元,适于以解码过程反馈的发生比特解码错误的初始错误宏块为起始位置,在垂直方向上对所述待检测宏块进行检测,直至连续检测到数量为第一预设值且比特解码正确的待检测宏块,否则将发生比特解码错误的待检测宏块更新为水平方向检测的起始位置;
第一水平检测单元,适于在垂直方向上连续检测到数量为所述第一预设值且比特解码正确的待检测宏块时,则以所述初始错误宏块为起始位置在水平方向上对所述待检测宏块进行检测,直至连续检测到数量为第二预设值且比特解码正确的待检测宏块,否则将发生比特解码错误的待检测宏块更新为垂直方向检测的起始位置;
第二水平检测单元,适于在垂直方向上未连续检测到数量为所述第一预设值且比特解码正确的待检测宏块,则以更新后的水平方向检测的起始位置在水平方向上对所述待检测宏块进行检测,直至连续检测到数量为所述第二预设值且比特解码正确的待检测宏块,否则将发生比特解码错误的待检测宏块更新为垂直方向检测的起始位置;
错误宏块确定单元,适于检测完成后,将发生比特解码错误的待检测宏块作为所述错误宏块。
16.根据权利要求15所述的视频解码错误补偿装置,其特征在于,所述比特解码错误检测模块还包括:
第一像素差值计算单元,适于计算所述待检测宏块与其邻近宏块的边缘在三个方向上的像素差值,所述三个方向选自0度、45度、90度和135度;
第二像素差值计算单元,适于计算位于所述参考帧上参考边缘在所述三个方向上的像素差值,所述参考边缘在所述参考帧上的位置与所述边缘在所述当前帧上的位置相同;
错误判断单元,适于在任一边缘与其对应的参考边缘值在各个方向上的像素差值的差值最小值大于设定阈值时,所述待检测宏块发生比特解码错误。
17.根据权利要求10所述的视频解码错误补偿装置,其特征在于,还包括:
重叠判断模块,适于在片解码过程中,判断所述当前帧的片是否发生重叠;第二加入模块,适于在所述当前帧的片发生重叠时,记录宏块重叠范围,以加入所述丢失区域。
18.根据权利要求10所述的视频解码错误补偿装置,其特征在于,还包括:
检查模块,适于在宏块解码过程中,检测已解码NALU单元的大小是否与设定NALU单元大小一致;
第三加入模块,适于在不一致时,对宏块是否发生比特解码错误进行检测,并记录错误宏块,以加入所述丢失区域。
19.一种存储介质,其上存储有计算机指令,其特征在于,所述计算机指令被处理器运行时执行权利要求1至9中任一项所述视频解码错误补偿方法的步骤。
20.一种终端,包括存储器和处理器,所述存储器上存储有在所述处理器上运行的计算机指令,其特征在于,所述处理器运行所述计算机指令时执行权利要求1至9中任一项所述视频解码错误补偿方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711467017.8A CN109982093B (zh) | 2017-12-28 | 2017-12-28 | 视频解码错误补偿方法及装置、存储介质、终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711467017.8A CN109982093B (zh) | 2017-12-28 | 2017-12-28 | 视频解码错误补偿方法及装置、存储介质、终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109982093A CN109982093A (zh) | 2019-07-05 |
CN109982093B true CN109982093B (zh) | 2021-05-18 |
Family
ID=67075403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711467017.8A Active CN109982093B (zh) | 2017-12-28 | 2017-12-28 | 视频解码错误补偿方法及装置、存储介质、终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109982093B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114596531B (zh) * | 2022-03-31 | 2022-08-05 | 深圳市海清视讯科技有限公司 | 高空抛物检测方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1166255A (zh) * | 1995-10-26 | 1997-11-26 | 摩托罗拉公司 | 基于宏块的视频编码译码器隐藏和包含错误的方法和装置 |
CN101163250A (zh) * | 2006-10-09 | 2008-04-16 | 北京航空航天大学 | 一种基于边界梯度的视频流容错方法 |
CN101223785A (zh) * | 2005-06-17 | 2008-07-16 | 皇家飞利浦电子股份有限公司 | 改进视频错误隐藏的编解码方法及装置 |
-
2017
- 2017-12-28 CN CN201711467017.8A patent/CN109982093B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1166255A (zh) * | 1995-10-26 | 1997-11-26 | 摩托罗拉公司 | 基于宏块的视频编码译码器隐藏和包含错误的方法和装置 |
CN101223785A (zh) * | 2005-06-17 | 2008-07-16 | 皇家飞利浦电子股份有限公司 | 改进视频错误隐藏的编解码方法及装置 |
CN101163250A (zh) * | 2006-10-09 | 2008-04-16 | 北京航空航天大学 | 一种基于边界梯度的视频流容错方法 |
Non-Patent Citations (1)
Title |
---|
Direction-select motion estimation for motion-compensated frame rate up-conversion;Dong-Gon Yoo et al.;《Journal of display technology》;20131031;正文第Ⅱ节A部分 * |
Also Published As
Publication number | Publication date |
---|---|
CN109982093A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11197007B2 (en) | Sub-block MV inheritance between color components | |
US11792421B2 (en) | Rounding in pairwise average candidate calculations | |
JP7488256B2 (ja) | 隣接サンプル依存パラメトリックモデルに基づいたコーディングモードの簡易化 | |
US9503728B2 (en) | Image processing device, decoding method, intra-frame decoder, method of decoding intra-frame and intra-frame encoder | |
US20160080767A1 (en) | Encoding system using motion estimation and encoding method using motion estimation | |
BR112014011413B1 (pt) | Predição eficaz utilizando codificação de partição | |
BR122020014854B1 (pt) | Codificação de partição eficaz com elevado grau de liberdade de partição | |
US8576911B2 (en) | Method and apparatus for motion estimation | |
US20210044821A1 (en) | Illumination compensation flag in frame rate up-conversion with template matching | |
US20210211647A1 (en) | Utilization of non-sub block spatial-temporal motion vector prediction in inter mode | |
CN111818342B (zh) | 帧间预测方法及预测装置 | |
US20230007288A1 (en) | Decoder with merge candidate reorder based on common motion vector | |
KR20230104895A (ko) | 기하학적 파티션을 사용한 인트라 예측 | |
CN109982093B (zh) | 视频解码错误补偿方法及装置、存储介质、终端 | |
WO2020056095A1 (en) | Improved virtual temporal affine candidates | |
US20240073447A1 (en) | Encoding and decoding method and apparatus, and devices therefor | |
CN105992012B (zh) | 一种错误隐藏的方法和装置 | |
CN115315953A (zh) | 一种帧间预测方法、编码器、解码器及存储介质 | |
WO2020005572A1 (en) | Virtual temporal affine candidates | |
US20140254690A1 (en) | Multi-view video coding and decoding methods and apparatuses, coder, and decoder | |
CN113709457B (zh) | 一种解码、编码方法、装置及其设备 | |
JP2009302786A (ja) | 映像復号化装置及び方法 | |
CN113766234B (zh) | 一种解码、编码方法、装置及其设备 | |
CN112468817B (zh) | 一种编解码方法、装置及其设备 | |
EP4309367A1 (en) | Motion flow coding for deep learning based yuv video compression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |