视频数据恢复方法及装置与流程

文档序号:16467428发布日期:2019-01-02 22:51阅读:270来源:国知局
视频数据恢复方法及装置与流程

本发明涉及视频处理技术领域,具体而言,涉及一种视频数据恢复方法及装置。



背景技术:

帧是组成视频数据的基本单位,在视频数据的存储、读取以及传输过程中,若当前帧发生解码错误,不仅当前帧要丢弃,后续帧因为可能对该当前帧存在参考依赖性,也不能正确解码,这样在下一个可独立解码的帧出现之前的帧都要丢弃,从而导致视频数据的存储、读取以及传输过程的可靠性降低。因此,需要对发生解码错误的帧进行恢复。

现有技术中,若当前帧的解码块发生错误,可以在当前帧的参考帧中寻找与错误块相对应位置的解码块作为参考块,并通过该参考块来代替该错误编码块,从而对发生解码错误的帧进行恢复。

但由于不同帧之间的图像通常是不同的,且图像中可能会包括不同方向的纹理,如果直接通过参考帧中寻找与错误编码块相对应位置的解码块,来代替错误编码块,恢复帧的效果较差,难以有效确保视频数据在存储、读取以及传输过程中的可靠性。



技术实现要素:

本发明的目的在于,针对上述现有技术中的不足,提供一种视频数据恢复方法及装置,以对错误或丢失的视频数据进行有效恢复,确保了视频数据在存储、读取以及传输过程中的可靠性。

为实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明实施例提供了一种视频数据恢复方法,包括:若当前帧存在错误块,则从该当前帧的第一参考帧中,获取与错误块对应的参考块;基于针对参考块的第一运动向量,确定针对错误块的预测块;基于当前帧中与错误块相邻的多个像素的梯度数据,确定针对预测块的连续性数据,该连续性数据用于说明预测块的纹理与错误块周围像素的纹理的连续性;若该连续性数据小于或等于连续性数据阈值,则将当前帧中的错误块替换为预测块。

可选地,梯度数据包括梯度方向,相应的,该基于当前帧中与错误块相邻的多个像素的梯度数据,确定针对预测块的连续性数据的步骤包括:基于错误块的高度,获取预测块左边缘的至少一列预测像素、当前帧与错误块左边缘相邻的多列正确像素;基于至少一列预测像素和多列正确像素,确定第一列正确像素的梯度方向以及第二列正确像素的梯度方向,其中,第一列正确像素为多列正确像素中与预测块左边缘相邻列的正确像素,第二列正确像素为多列正确像素中与第一列正确像素相邻的正确像素;基于第一列正确像素的梯度方向和第二列正确像素的梯度方向,确定连续性数据。

可选地,该基于第一列正确像素的梯度方向和第二列正确像素的梯度方向,确定连续性数据的步骤包括:确定第二列正确像素的梯度方向的法线方向,和与第二列正确像素处于第一列正确像素所在直线的第一交点;获取第一列正确像素中距离第一交点最近的像素,作为与第二列正确像素对应的中间列正确像素;确定第二列正确像素的梯度方向,和与第二列正确像素对应的中间列正确像素的梯度方向之间的梯度方向差;将所确定的梯度方向差的绝对值进行累加;将累加结果的平均值确定为连续性数据。

可选地,梯度数据还包括梯度强度,该获取第一列像素中距离第一交点最近的像素,作为与第二列正确像素对应的中间列正确像素,包括:若第二列正确像素的梯度强度为0,则将与第二列正确像素处于同一行的第一列正确像素,确定为与第二列正确像素对应的中间列正确像素。

可选地,梯度数据包括梯度方向,相应的,该基于当前帧中与错误块相邻的多个像素的梯度数据,确定针对预测块的连续性数据的步骤包括:基于错误块的宽度,获取预测块上边缘的至少一行预测像素、当前帧与错误块上边缘相邻的多行正确像素;基于至少一行预测像素和多行正确像素,确定第一行正确像素的梯度方向以及第二行正确像素的梯度方向,其中,第一行正确像素为多行正确像素中与预测块上边缘相邻行的正确像素,第二行正确像素为多行正确像素中与第一行正确像素相邻的正确像素;基于第一行正确像素的梯度方向和第二行正确像素的梯度方向,确定连续性数据。

可选地,在基于针对参考块的第一运动向量,确定针对错误块的预测块之前,该方法还包括:在当前帧中获取与错误块相邻的多个正确块的第一运动向量;将所获取的多个第一运动向量的平均值,确定为针对参考块的第一运动向量。

可选地,该方法还包括:若第一参考帧丢失,则基于第一参考帧和当前帧在视频数据中的位置,确定当前帧的第二参考帧;从第二参考帧中,获取与错误块对应的参考块。

可选地,该视频数据包括i帧,还包括p帧和b帧中的至少一种;相应的,基于第一参考帧和当前帧在视频数据中的位置,确定当前帧的第二参考帧,包括下述任一项:若第一参考帧丢失,且第一参考帧在当前帧之前,则将第一参考帧之前的p帧或b帧,确定为第二参考帧;若第一参考帧丢失,当前帧为b帧,且第一参考帧包括在当前帧之后的帧,则将当前帧之前的p帧或b帧,确定为第二参考帧。

可选地,该方法还包括:基于针对参考块的第一运动向量、当前帧与第一参考帧的时间差、当前帧与第二参考帧的时间差,确定针对参考块的第二运动向量;基于针对参考块的第二运动向量,确定针对错误块的预测块。

第二方面,本发明实施例还提供了一种视频数据恢复装置,该装置包括:第一获取模块,用于若当前帧存在错误块,则从当前帧的第一参考帧中,获取与错误块对应的参考块;第一确定模块,基于针对参考块的第一运动向量,确定针对错误块的预测块;第二确定模块,基于当前帧中与错误块相邻的多个像素的梯度数据,确定针对预测块的连续性数据,该连续性数据用于说明预测块的纹理与错误块周围像素的纹理的连续性;替换模块,若连续性数据小于或等于连续性数据阈值,则将当前帧中的错误块替换为预测块。

可选地,梯度数据包括梯度方向,第二确定模块包括:第一获取子模块,基于错误块的高度,获取预测块左边缘的至少一列预测像素、当前帧与错误块左边缘相邻的多列正确像素;第一确定子模块,基于至少一列预测像素和多列正确像素,确定第一列正确像素的梯度方向以及第二列正确像素的梯度方向,其中,第一列正确像素为多列正确像素中与预测块左边缘相邻列的正确像素,第二列正确像素为多列正确像素中与第一列正确像素相邻的正确像素;第二确定子模块,基于第一列正确像素的梯度方向和第二列正确像素的梯度方向,确定连续性数据。

可选地,第二确定子模块还用于:确定第二列正确像素的梯度方向的法线方向,和与该第二列正确像素处于第一列正确像素所在直线的第一交点;获取第一列正确像素中距离第一交点最近的像素,作为与第二列正确像素对应的中间列正确像素;确定第二列正确像素的梯度方向,和与第二列正确像素对应的中间列正确像素的梯度方向之间的梯度方向差;将所确定的梯度方向差的绝对值进行累加;将累加结果的平均值确定为连续性数据。

可选地,梯度数据还包括梯度强度;第二确定子模块还用于:若第二列正确像素的梯度强度为0,则将与第二列正确像素处于同一行的第一列正确像素,确定为与第二列正确像素对应的中间列正确像素。

可选地,梯度数据包括梯度方向,第二确定模块还包括:第二获取子模块,基于错误块的宽度,获取预测块上边缘的至少一行预测像素、当前帧与错误块上边缘相邻的多行正确像素;第三确定子模块,基于至少一行预测像素和多行正确像素,确定第一行正确像素的梯度方向以及第二行正确像素的梯度方向,其中,第一行正确像素为多行正确像素中与预测块上边缘相邻行的正确像素,第二行正确像素为多行正确像素中与第一行正确像素相邻的正确像素;第四确定子模块,基于第一行正确像素的梯度方向和第二行正确像素的梯度方向,确定连续性数据。

可选地,所述装置还包括:第二获取模块,用于在当前帧中获取与错误块相邻的多个正确块的第一运动向量;第三确定模块,用于将所获取的多个第一运动向量的平均值,确定为针对参考块的第一运动向量。

可选地,该装置还包括:第四确定模块,若第一参考帧丢失,则基于第一参考帧和当前帧在视频数据中的位置,确定当前帧的第二参考帧;第三获取模块,从第二参考帧中,获取与错误块对应的参考块。

可选地,视频数据包括i帧,还包括p帧和b帧中的至少一种;第四确定模块包括:第五确定子模块,用于若第一参考帧丢失,且第一参考帧在当前帧之前,则将第一参考帧之前的p帧或b帧,确定为第二参考帧;第六确定子模块,用于若第一参考帧丢失,当前帧为b帧,且第一参考帧包括在当前帧之后的帧,则将当前帧之前的p帧或b帧,确定为第二参考帧。

可选地,该装置还包括:第五确定模块,基于针对参考块的第一运动向量、当前帧与第一参考帧的时间差、当前帧与第二参考帧的时间差,确定针对参考块的第二运动向量;第六确定模块,基于针对参考块的第二运动向量,确定针对错误块的预测块。

本发明的有益效果是:提供了一种视频数据恢复方法,包括:若当前帧存在错误块,则从该当前帧的第一参考帧中,获取与错误块对应的参考块;基于针对参考块的第一运动向量,确定针对错误块的预测块;基于当前帧中与错误块相邻的多个像素的梯度数据,确定针对预测块的连续性数据。由于该连续性数据用于说明预测块的纹理与错误块周围像素的纹理的连续性,因此,若该连续性数据小于或等于连续性数据阈值,则可以确定预测块的纹理与错误块周围像素的纹理的连续性较好,从而将当前帧中的错误块替换为预测块,确保了预测块与当前帧的匹配效果,从而提高了对当前帧的恢复效果,进而有效确保视频数据在存储、读取以及传输过程中的可靠性。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例提供的一种视频数据恢复方法的流程图;

图2为本发明实施例提供的一种当前帧的示意图;

图3为本发明实施例提供的另一种当前帧的示意图;

图4为本发明实施例提供的一种确定中间列正确像素的方法示意图;

图5为本发明实施例提供的一种帧序列示意图;

图6为本发明实施例提供的另一种帧序列示意图;

图7为本发明实施例提供的一种视频数据恢复装置的模块示意图;

图8为本发明实施例提供的另一种视频数据恢复装置的模块示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。

请参照图1,为本发明实施例提供的一种视频数据恢复方法的流程图。

步骤s101,若当前帧存在错误块,则从该当前帧的第一参考帧中,获取与错误块对应的参考块。

视频编解码是以块为单位进行的一种视频文件的转换方式。在视频解码的过程中如果当前帧存在错误块,后续帧因为可能对该当前帧存在参考依赖性,也不能正确解码。而由于视频数据所包括的连续的帧之间的图像可以相似或连续,因此,在当前帧存在错误块时,可以从当前帧的第一参考帧中,获取与该错误块对应的参考块,从而对当前帧进行恢复,提高对视频数据进行解码的可靠性,进而确保视频数据在存储、读取以及传输过程中的可靠性。

其中,帧为组成视频数据中的基本单位,一帧就是一幅图像。

当前帧为当前进行解码的帧。

编码块为对帧进行编码或解码的基本单位。编码块的大小可以是预设设定的。比如编码块可以为4×4大小的像素块。

需要说明的是,像素为图像中的最小单位。

错误块为在对当前帧进行解码过程中发生错误而无法解码得到的编码块。

第一参考帧为对当前帧进行编码或解码时所要参考的帧。第一参考帧可以包括当前帧之前的帧。

参考块为参考帧中对错误块进行恢复所需的编码块。比如,参考块可以包括参考帧中,与错误块在当前帧的位置所对应的位置的参考块。该参考块中像素所表示的事物,可能与错误块所表示的事物相同或相似。

可以在视频数据中,获取当前帧之前的帧(比如当前帧之前且距当前帧最近的帧)作为参考帧,然后基于错误块的大小和位置,从该参考帧中获取相应大小和相应位置的编码块作为参考块。

当然,在实际应用中,还可以通过其它方式来确定参考帧或者参考块。

还需要说明的是,错误块、参考块和预测块的尺寸可以相同。

步骤s102,基于针对参考块的第一运动向量,确定针对错误块的预测块。

由于视频数据能够表现动态的影像,因此同一事物在不同帧中的位置或形态可能不同,相应的,参考块所表示的事物在当前帧中的位置或形态,相比于该事物在参考帧中的位置或形态,可能会发生变化,即可能会发生运动。所以,为了提高对错误块进行恢复的准确性,可以基于针对参考块的第一运动向量,确定针对错误块的预测块。

运动向量用于说明当前的编码块与参考帧中该编码块的参考块之间的相对位移。

其中,运动向量可以包括水平运动向量和竖直运动向量。

在本发明实施例中,第一运动向量即为错误块与参考帧中参考块之间的相对位移。

预测块为用于替代错误块的编码块。

可以基于当前帧中正确解码的解码块的运动向量,确定得到针对错误块所对应的参考块的第一运动向量。比如,可以在当前帧正确解码的解码块中,获取将与该错误块相邻的编码块所对应的参考块的运动向量,确定为针对该参考块的第一运动向量。

当然,在实际应用中,也可以通过其它方式,确定针对该参考块的第一运动向量。

当确定第一运动向量时,可以按照第一运动向量,对参考块进行位移,从而得到该错误块的预测块。

步骤s103,基于当前帧中与错误块相邻的多个像素的梯度数据,确定针对预测块的连续性数据,该连续性数据用于说明预测块的纹理与错误块周围像素的纹理的连续性。

当通过预测块替代错误块对当前帧进行恢复时,为了减少错误块周围的纹理存在一定的倾斜角度,预测块与当前帧的匹配效果不佳的问题,即提高恢复效果,可以基于当前帧中与错误块相邻的多个像素的梯度数据,确定针对预测块的连续性数据,从而确定预测块的纹理与错误块周围像素的纹理的连续性。

梯度为函数在某点处沿着某方向(即梯度的方向)变化最快,变化率最大(即梯度强度)。

在本发明实施例中,梯度数据为说明像素相对周围某一方向像素变化的数据。梯度数据可以包括梯度方向和梯度强度。

可以通过sobel算子来计算梯度数据。

其中,sobel算子是一种边缘检测算子。该sobel算子可以包括横向卷积核和纵向卷积核。

例如,sobel算子的横向卷积核为纵向卷积核为对于图像a,可以通过gd=arctan(gy/gx)计算得到梯度方向,通过计算得到梯度强度。

其中,gd为梯度方向;gs为梯度强度;为图像a与横向卷积核的横向输出结果;为图像a与纵向卷积核的纵向输出结果。

连续性数据为说明预测块的纹理与错误块周围像素的纹理的连续性。

需要说明的,对于一帧图像的任一点像素,可以将该像素以及该像素周围的像素确定为图像a,从而按照上述方式,计算得到该像素的梯度数据。因此,在本发明实施例中,若通过预测块代替错误块,预测块边缘的像素会影响到当前帧中该预测块周围像素的梯度数据,因而,当前帧中与预测块相邻的多个像素的梯度数据,确定针对预测块的连续性数据,从而说明预测块的纹理与错误块周围像素的纹理的连续性。

步骤s104,若该连续性数据小于或等于连续性数据阈值,则将当前帧中的错误块替换为预测块。

若连续性数据小于或等于连续性数据阈值,则说明预测块的纹理与错误块周围像素的纹理的连续性较好,此时可以将当前帧中的错误块替换为预测块,以进一步保证预测块与当前帧的匹配效果,确保对当前帧的恢复效果。

连续性数据阈值可以为事先设定数值。比如,连续性数据阈值可以为0。

可以将连续性数据与连续性数据阈值进行比较,从而确定连续性数据是否小于或等于连续性数据阈值。

当然,若连续性数据大于连续性数据阈值,则说明预测块的纹理与错误块周围像素的纹理的连续性较差,可以从第一参考帧中获取其它编码块作为参考块,或者从视频数据中获取其它的帧,并从获取的帧中选择参考块。

在本发明实施例中,提供了一种视频数据恢复方法,包括:若当前帧存在错误块,则从该当前帧的第一参考帧中,获取与错误块对应的参考块;基于针对参考块的第一运动向量,确定针对错误块的预测块;基于当前帧中与错误块相邻的多个像素的梯度数据,确定针对预测块的连续性数据。由于该连续性数据用于说明预测块的纹理与错误块周围像素的纹理的连续性,因此,若该连续性数据小于或等于连续性数据阈值,则可以确定预测块的纹理与错误块周围像素的纹理的连续性较好,从而将当前帧中的错误块替换为预测块,确保了预测块与当前帧的匹配效果,从而提高了对当前帧的恢复效果,进而有效确保视频数据在存储、读取以及传输过程中的可靠性。

可选地,在基于针对参考块的第一运动向量,确定针对错误块的预测块的步骤之前,该方法还包括:在当前帧中获取与错误块相邻的多个正确块的第一运动向量;将所获取的多个第一运动向量的平均值,确定为针对参考块的第一运动向量。

如图2所示,当前帧中错误块为a,b、c、d和e为与a块相邻的四个正确块,则针对参考块的第一运动向量可由b、c、d和e块针对参考块的水平运动向量和竖直运动向量分别取平均值获得。

其中,水平运动向量可用公式计算得到,xj为b、c、d和e块的水平运动向量,i表示b、c、d和e块中的行数,n1指b、c、d和e块中水平运动向量的个数,若n1=0,取xa=0;竖直运动向量可用公式计算得到,yj为b、c、d和e块的竖直运动向量,i表示b、c、d和e块中的列数,n2指b、c、d和e块中竖直运动向量的个数,若n2=0,取ya=0。

由于帧中的图像是连续的,因此,相邻的多个块的运动向量也可能是相似或者相同的,所以获取在当前帧中与错误块相邻的多个正确块的第一运动向量,并将所获取的多个第一运动向量的平均值,确定为针对参考块的第一运动向量,从而能够提高第一运动向量的可靠性,进而进一步提高预测块的准确性,提高进行视频恢复的准确性和效率。

需要说明的是,为了进一步保证获取预测块的准确性,从而保证恢复效果,在确定参考块的第一运动向量时,搜索的窗口可以小于当前帧的错误块的大小。例如,若当前帧的错误块的大小为(4,4),则搜索的窗口可以为(3,3)。

可选地,梯度数据包括梯度方向,相应的,该基于当前帧中与错误块相邻的多个像素的梯度数据,确定针对预测块的连续性数据的步骤包括:基于错误块的高度,获取预测块左边缘的至少一列预测像素、当前帧与错误块左边缘相邻的多列正确像素;基于至少一列预测像素和多列正确像素,确定第一列正确像素的梯度方向以及第二列正确像素的梯度方向,其中,第一列正确像素为多列正确像素中与预测块左边缘相邻列的正确像素,第二列正确像素为多列正确像素中与第一列正确像素相邻的正确像素;基于第一列正确像素的梯度方向和第二列正确像素的梯度方向,确定连续性数据。

如图3所示,以4×4的错误块为例,可以基于错误块的高度,获取预测块左边缘的一列预测像素n00、n10、n20和n30以及当前帧与错误块左边缘相邻的多列正确像素。基于一列预测像素n00、n10、n20和n30和多列正确像素,确定第一列正确像素l0、l1、l2和l3的梯度方向以及第二列正确像素b0、b1、b2和b3的梯度方向。其中,l0、l1、l2、l3,与错误块左边缘相邻,b0、b1、b2、b3,与l0、l1、l2、l3相邻。

其中,以l1为例,可以通过获取l1以及l1周围的像素,包括b0、l0、n00、n10、n20、l2、b2和b1,基于前述中的梯度算子,计算得到的l1梯度数据,包括梯度方向。

基于第一列正确像素l0、l1、l2和l3的梯度方向以及第二列正确像素b0、b1、b2和b3的梯度方向,确定连续性数据。

在当前帧存在错误块且错误块周围的纹理存在一定的倾斜角度时,可以基于错误块的高度,获取预测块左边缘的至少一列预测像素、当前帧与错误块左边缘相邻的多列正确像素。然后,基于至少一列预测像素和多列正确像素,确定第一列正确像素的梯度方向以及第二列正确像素的梯度方向。最后,基于第一列正确像素的梯度方向和第二列正确像素的梯度方向,确定连续性数据,该连续性数据能够说明预测块的纹理与错误块周围像素的纹理的连续性,从而保证能够在预测块与当前帧中的其它编码块匹配时,通过该预测块对错误块进行替换,提高视频数据的恢复效果。

可选地,该基于第一列正确像素的梯度方向和第二列正确像素的梯度方向,确定连续性数据的步骤包括:确定第二列正确像素的梯度方向的法线方向,和与第二列正确像素处于第一列正确像素所在直线的第一交点;获取第一列正确像素中距离第一交点最近的像素,作为与第二列正确像素对应的中间列正确像素;确定第二列正确像素的梯度方向,和与第二列正确像素对应的中间列正确像素的梯度方向之间的梯度方向差;将所确定的梯度方向差的绝对值进行累加;将累加结果的平均值确定为连续性数据。

梯度方向的法线方向即为梯度方向垂直的方向。

如图4所示,以b2点为例说明如何确定与第二列正确像素对应的中间列正确像素。首先,确定b2点像素的梯度方向的法线方向,该法线方向与l0、l1、l2和l3四个点像素所在直线交于第一交点p。然后,获取l0、l1、l2和l3中距离点p点最近的像素,作为与b2对应的中间列正确像素l2,此时,l2=l1。以此类推,依次获取与b0、b1和b3对应的中间列正确像素。

当确定分别与第二列正确像素对应的中间列正确像素时,可用公式确定针对预测块的连续性数据。其中,s即为针对预测块的连续性数据;gd(bi)为第二列正确像素的梯度方向;gd(li)为与第二列正确像素对应的中间列正确像素的梯度方向;i表示第二列正确像素的序号;n表示bi与相对应li的对数,比如,前述中分别获取到b0、b1、b2和b3所对应的中间列正确像素,则n为4。

需要说明的是,在上述确定连续性数据的过程中,若b1点像素的梯度方向的法线方向不与l0、l1、l2和l3四个点像素所在直线相交,则可以跳过b1点,即不获取b1点像素的中间列正确像素,相应的,在确定针对预测块的连续性数据,不将b1不带入公式也即是,不将b1计入最后的评估范围。

上述确定连续性数据的方法中,通过第二列正确像素的梯度方向与第二列正确像素对应的中间列正确像素的梯度方向之间的梯度方向差代替传统算法中的像素差,将所确定的梯度方向差的绝对值进行累加并将累加结果的平均值确定为连续性数据,提高了连续性数据的准确性,进一步提高了视频数据的恢复效果。

可选地,梯度数据还包括梯度强度,该获取距离第一交点最近的像素,作为与第二列正确像素对应的中间列正确像素的步骤包括:若第二列正确像素的梯度强度为0,则将与第二列正确像素处于同一行的第一列正确像素,确定为与第二列正确像素对应的中间列正确像素。

如图4所示,若b0点的梯度强度为0,则将与b0点处于同一行的第一列正确像素l0确定为与b0点对应的中间列正确像素。

上述过程是确定中间列正确像素中的一个特殊情况,若第二列正确像素的梯度强度为0,则将与第二列正确像素处于同一行的第一列正确像素,确定为与第二列正确像素对应的中间列正确像素,从而确定连续性数据,提高了连续性数据的准确性,进一步提高了视频数据的恢复效果。

可选地,梯度数据包括梯度方向,相应的,该基于当前帧中与错误块相邻的多个像素的梯度数据,确定针对预测块的连续性数据的步骤包括:基于错误块的宽度,获取预测块上边缘的至少一行预测像素、当前帧与错误块上边缘相邻的多行正确像素;基于至少一行预测像素和多行正确像素,确定第一行正确像素的梯度方向以及第二行正确像素的梯度方向,其中,第一行正确像素为多行正确像素中与预测块上边缘相邻行的正确像素,第二行正确像素为多行正确像素中与第一行正确像素相邻的正确像素;基于第一行正确像素的梯度方向和第二行正确像素的梯度方向,确定连续性数据。

其中,该基于第一行正确像素的梯度方向和第二行正确像素的梯度方向,确定连续性数据的步骤包括:确定第二行正确像素的梯度方向的法线方向,和与第二行正确像素处于第一行正确像素所在直线的第一交点;获取第一行正确像素中距离第一交点最近的像素,作为与第二行正确像素对应的中间行正确像素;确定第二行正确像素的梯度方向,和与第二行正确像素对应的中间行正确像素的梯度方向之间的梯度方向差;将所确定的梯度方向差的绝对值进行累加;将累加结果的平均值确定为连续性数据。

另外,该获取第一行像素中距离第一交点最近的像素,作为与第二行正确像素对应的中间行正确像素的步骤包括:若第二行正确像素的梯度强度为0,则将与第二行正确像素处于同一列的第一行正确像素,确定为与第二行正确像素对应的中间行正确像素。

确定第一行正确像素的梯度方向和第二行正确像素的梯度方向的连续性数据,并将该连续性数据与第一列正确像素的梯度方向和第二列正确像素的梯度方向的连续性数据求平均值作为新的连续性数据,从而保证能够在预测块与当前帧中的其它编码块匹配时,通过该预测块对错误块进行替换,提高视频数据的恢复效果。

需要说明的是,在实际应用中,为了确定预测块的纹理与当前帧在该预测块多个周围像素的纹理差异,进而进一步提高确定针对预测块的连续性数据的准确性,还可以同时基于第一行正确像素的梯度方向、第二行正确像素的梯度方向、第一列正确像素的梯度方向和第二列正确像素的梯度方向,来确定针对该预测块的连续性数据。

如图4所示,首先,确定a2点像素的梯度方向的法线方向,该法线方向与t0、t1、t2和t3四个点像素所在直线交于第一交点p。然后,获取t0、t1、t2和t3中距离点p点最近的像素,作为与a2对应的中间行正确像素t2,此时,t2=t1。以此类推,依次获取与a0、a1和a3对应的中间行正确像素,并结合前述中与b0、b1和b3对应的中间行正确像素。通过公式确定连续性数据。其中,a2为第二行正确像素的梯度方向;t2为与第二行正确像素对应的中间行正确像素的梯度方向;n表示bi与相对应li的对数以及ai与相对应ti的对数之和。

可选地,该方法还包括:若第一参考帧丢失,则基于第一参考帧和当前帧在视频数据中的位置,确定当前帧的第二参考帧;从第二参考帧中,获取与错误块对应的参考块。

由于第一参考帧也可能丢失或错误,因此,为了提高对当前帧进行恢复的可靠性,在第一参考帧丢失时可以基于第一参考帧和当前帧在视频数据中的位置,确定当前帧的第二参考帧,并从该第二参考帧中获取与错误块对应的参考块。

第二参考帧为当前帧的另一参考帧。

其中,可以选择将在第一参考帧之前的帧作为第二参考帧。当然,在实际应用中,还可以通过其它方式,确定第二参考帧。

可选地,该视频数据包括i帧,还包括p帧和b帧中的至少一种;相应的,基于第一参考帧和当前帧在视频数据中的位置,确定当前帧的第二参考帧,包括下述任一项:若第一参考帧丢失,且第一参考帧在当前帧之前,则将第一参考帧之前的p帧或b帧,确定为第二参考帧;若第一参考帧丢失,当前帧为b帧,且第一参考帧包括在当前帧之后的帧,则将当前帧之前的p帧或b帧,确定为第二参考帧。

其中,i帧是完整编码的帧,可以将全帧图像信息进行压缩编码和传输。

p帧为以i帧为参考帧生成的只包含差异部分编码的帧。

b帧为一种参考前后的帧编码的双向帧。

如图5所示,提供了一种视频数据所包括的帧序列的示意图。该帧序列仅包括i帧和p帧。若当前帧p3的第一参考帧p2丢失,则可以将p2帧之前的p1帧,确定为当前帧p3的第二参考帧。

如图6所示,提供了另一种视频数据所包括的帧序列的示意图。该帧序列包括i帧、p帧和b帧。若当前帧b4的第一参考帧p3丢失,b1和b2改为单向参考解码,p6的参考帧由b5改为b2,b4和b5仍为双向参考解码,b4和b5的参考帧包括第二参考参考帧b2以及另一个参考帧p6。

由于视频数据可以包括i帧,还可以包括p帧和b帧中的至少一种,若第一参考帧丢失,可根据参考帧丢失情况的不同确定当前帧的第二参考帧,从而在第一参考帧丢失时确保能够会根据第二参考帧,对当前帧进行恢复,提高了视频数据恢复的可靠性。

可选地,该方法还包括:基于针对参考块的第一运动向量、当前帧与第一参考帧的时间差、当前帧与第二参考帧的时间差,确定针对参考块的第二运动向量;基于针对参考块的第二运动向量,确定针对错误块的预测块。

其中,第二运动向量为当前帧的参考帧丢失时根据各帧的时间差得到的另一运动向量。如图5所示,第二运动向量可通过公式确定,其中mvest为第二运动向量,mv为第一运动向量,t(p3)-t(p2)表示当前帧(p3)与第一参考帧(p2)的时间差,t(p3)-t(p1)表示当前帧(p3)与第二参考帧(p1)的时间差。

通过基于针对参考块的第一运动向量、当前帧与第一参考帧的时间差、当前帧与第二参考帧的时间差,确定针对参考块的第二运动向量,第二运动向量即能够准确说明第二参考帧中的参考块至预测块的位移,从而确保能够基于该第二运动向量,准确地确定针对错误块的预测块,提高了进行视频数据恢复的准确性和可靠性。

请参照图7,为本发明实施例提供的一种视频数据恢复装置的模块示意图,该装置包括:第一获取模块701,用于若当前帧存在错误块,则从当前帧的第一参考帧中,获取与错误块对应的参考块;第一确定模块702,基于针对参考块的第一运动向量,确定针对错误块的预测块;第二确定模块703,基于当前帧中与错误块相邻的多个像素的梯度数据,确定针对预测块的连续性数据,该连续性数据用于说明预测块的纹理与错误块周围像素的纹理的连续性;替换模块704,若连续性数据小于或等于连续性数据阈值,则将当前帧中的错误块替换为预测块。

可选地,梯度数据包括梯度方向,第二确定模块包括:第一获取子模块,基于错误块的高度,获取预测块左边缘的至少一列预测像素、当前帧与错误块左边缘相邻的多列正确像素;第一确定子模块,基于至少一列预测像素和多列正确像素,确定第一列正确像素的梯度方向以及第二列正确像素的梯度方向,其中,第一列正确像素为多列正确像素中与预测块左边缘相邻列的正确像素,第二列正确像素为多列正确像素中与第一列正确像素相邻的正确像素;第二确定子模块,基于第一列正确像素的梯度方向和第二列正确像素的梯度方向,确定连续性数据。

可选地,第二确定子模块还用于:确定第二列正确像素的梯度方向的法线方向,和与该第二列正确像素处于第一列正确像素所在直线的第一交点;获取第一列正确像素中距离第一交点最近的像素,作为与第二列正确像素对应的中间列正确像素;确定第二列正确像素的梯度方向,和与第二列正确像素对应的中间列正确像素的梯度方向之间的梯度方向差;将所确定的梯度方向差的绝对值进行累加;将累加结果的平均值确定为连续性数据。

可选地,梯度数据还包括梯度强度;第二确定子模块还用于:若第二列正确像素的梯度强度为0,则将与第二列正确像素处于同一行的第一列正确像素,确定为与第二列正确像素对应的中间列正确像素。

可选地,梯度数据包括梯度方向,第二确定模块还包括:第二获取子模块,基于错误块的宽度,获取预测块上边缘的至少一行预测像素、当前帧与错误块上边缘相邻的多行正确像素;第三确定子模块,基于至少一行预测像素和多行正确像素,确定第一行正确像素的梯度方向以及第二行正确像素的梯度方向,其中,第一行正确像素为多行正确像素中与预测块上边缘相邻行的正确像素,第二行正确像素为多行正确像素中与第一行正确像素相邻的正确像素;第四确定子模块,基于第一行正确像素的梯度方向和第二行正确像素的梯度方向,确定连续性数据。

可选地,所述装置还包括:第二获取模块,用于在当前帧中获取与错误块相邻的多个正确块的第一运动向量;第三确定模块,用于将所获取的多个第一运动向量的平均值,确定为针对参考块的第一运动向量。

可选地,该装置还包括:第四确定模块,若第一参考帧丢失,则基于第一参考帧和当前帧在视频数据中的位置,确定当前帧的第二参考帧;第三获取模块,从第二参考帧中,获取与错误块对应的参考块。

可选地,视频数据包括i帧,还包括p帧和b帧中的至少一种;第四确定模块包括:第五确定子模块,用于若第一参考帧丢失,且第一参考帧在当前帧之前,则将第一参考帧之前的p帧或b帧,确定为第二参考帧;第六确定子模块,用于若第一参考帧丢失,当前帧为b帧,且第一参考帧包括在当前帧之后的帧,则将当前帧之前的p帧或b帧,确定为第二参考帧。

可选地,该装置还包括:第五确定模块,基于针对参考块的第一运动向量、当前帧与第一参考帧的时间差、当前帧与第二参考帧的时间差,确定针对参考块的第二运动向量;第六确定模块,基于针对参考块的第二运动向量,确定针对错误块的预测块。

上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。

以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(applicationspecificintegratedcircuit,简称asic),或,一个或多个微处理器(digitalsingnalprocessor,简称dsp),或,一个或者多个现场可编程门阵列(fieldprogrammablegatearray,简称fpga)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessingunit,简称cpu)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。

图8为本发明一实施例提供的视频数据恢复装置的示意图,该装置可以集成于终端设备或者终端设备的芯片,该终端可以是具备视频数据恢复功能的计算机设备。

该装置包括:存储器801、处理器802。

存储器801用于存储程序,处理器802调用存储器801存储的程序,以执行上述方法实施例。具体实现方式和技术效果类似,这里不再赘述。

本发明还提供一种程序产品,例如计算机可读存储介质,包括程序,该程序在被处理器执行时用于执行上述方法实施例。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取存储器(英文:randomaccessmemory,简称:ram)、磁碟或者光盘等各种可以存储程序代码的介质。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1