发明内容
本发明的目的在于提出一种自适应的视频反交错方法及其装置,使得视频反交错处理智能化,在交错锯齿被去除的同时,基本没有可觉察的画质下降。
为达此目的,本发明采用以下技术方案:
一种自适应视频反交错方法,包括如下步骤:
帧数据缓存步骤:缓存视频须处理的当前帧的帧数据,如果当前帧不是视频的首帧,还缓存前一帧的帧数据,进入帧交错锯齿检测步骤;
帧交错锯齿检测步骤:利用交错锯齿检测算法检测当前帧的帧内容是否有交错锯齿,如果存在交错锯齿,则进入帧像素小块分割步骤,如果不存在交错锯齿,则保留该帧,进入帧输出步骤;
帧像素小块分割步骤:将当前帧分割为互不重叠的8x8像素小块,进入首帧判断步骤;
首帧判断步骤:判断当前帧是否为首帧,如果是,则进入运动像素小块检测步骤,如果不是,则进入像素小块交错锯齿检测步骤;
运动像素小块检测步骤:将每个像素小块向上下左右方向各扩展4个像素,原来的8x8像素小块变为了相互重叠的16x16像素小块,如果某个方面的扩展像素不在当前的帧的有效范围内,就用帧边界上离这些扩展点最近的像素点来代替,利用当前帧的16x16小块的像素值减去前一帧对应位置的16x16小块像素值,判断像素差的绝对值的和是否超过设定阈值来决定当前8x8像素小块是运动还是静止的,如果超过阈值则是运动的,如果像素小块是运动的,则进入场合并线性混合计算步骤,否则,进入像素小块交错锯齿检测步骤;
像素小块交错锯齿检测步骤:利用交错锯齿检测算法检测当前像素小块是否有交错锯齿,如果存在交错锯齿,则进入场合并线性混合计算步骤,如果不存在交错锯齿,则进入最后像素小块判断步骤;
场合并线性混合计算步骤:利用场合并线性混合算法处理当前像素小块,得到新的像素小块,并进入最后像素小块判断步骤;
最后像素小块判断步骤,判断当前的像素小块是否为最后的像素小块,如果是,则进入帧输出步骤,否则,递进到下一个像素小块,并进入首帧判断步骤;
帧输出步骤:将最后得到的帧输出。
进一步地,所述交错锯齿检测算法为:设当前需要处理的帧的某个8x8像素块的对应位置的像素值分别为Pi,j(i=1~8,j=1~8),它的上面一行对应位置像素值为P0,j(j=1~8),它的底下一行对应位置的像素值为P9,j(j=1~8),对于每一个像素位置利用公式(1)计算Fi,j(i=1~8,j=1~8),如果上面一行或底下一行的像素不存在,那么就分别用这个8x8像素块最上面一行或最底下一行的像素点来代替,
之后利用Fi,j,通过公式(2)计算Ci,j(i=1~6,j=1~6),
最后通过
是否成立来判定是否存在交错锯齿,当成立时,判定为存在交错锯齿,否则不存在交错锯齿,
当用于一帧是否存在交错锯齿的检测时,
和
取较大的值,当用于检测某个8x8像素小块是否存在交错锯齿时,
和
取较小的值。
进一步地,当用于一帧是否存在交错锯齿的检测时,
=16,
=24,当用于检测某个8x8像素小块是否存在交错锯齿时,
=6,
=15。
进一步地,所述场合并线性混合算法为:设当前需要处理的帧的某个8x8像素小块的对应位置的像素值分别为Pi,j(i=1~8,j=1~8),它的上面一行对应位置像素值为P0,j(j=1~8),它的底下一行对应位置的像素值为P9,j(j=1~8),利用公式(3)计算新的8x8像素块的插值结果为Qi,j(i=1~8,j=1~8),
Qi,j=(Pi-1,j+2*Pi,j+Pi+1,j+2)/4,这里有i=1~8,j=1~8。 公式(3),
如果上面一行或底下一行的像素不存在,那么就分别用这个8x8像素小块最上面一行或最底下一行的像素点来代替。
进一步地,运动像素小块检测步骤具体为:设当前需要处理的帧的某个8x8像素块的对应位置的像素值分别为P
i,j(i=1~8,j=1~8),它向上下左右4个方向分别扩展4个像素,得到N
i,j(i=1~16,j=1~16),对于每一个N
i,j,在视频的前一帧的相同位置的像素值设为
,最后通过
是否成立来判定当前8x8像素块是否存在运动,当成立时,判定为存在运动;否则为不存在运动,
=512,如果某个方面的扩展像素不在当前的帧的有效范围内,就用帧边界上离这些扩展点最近的像素点来代替。
本发明还公开了一种自适应的视频反交错装置,包括如下单元:
帧数据缓存单元:缓存视频须处理的当前帧的帧数据,如果当前帧不是视频的首帧,还缓存前一帧的帧数据,进入帧交错锯齿检测单元;
帧交错锯齿检测单元:利用交错锯齿检测算法检测当前帧的帧内容是否有交错锯齿,如果存在交错锯齿,则进入帧像素小块分割单元,如果不存在交错锯齿,则保留该帧,进入帧输出单元;
帧像素小块分割单元:将当前帧分割为互不重叠的8x8像素小块,进入首帧判断单元;
首帧判断单元:判断当前帧是否为首帧,如果是,则进入运动像素小块检测单元,如果不是,则进入像素小块交错锯齿检测单元;
运动像素小块检测单元:将每个像素小块向上下左右方向各扩展4个像素,原来的8x8像素小块变为了相互重叠的16x16像素小块,如果某个方面的扩展像素不在当前的帧的有效范围内,就用帧边界上离这些扩展点最近的像素点来代替,利用当前帧的16x16小块的像素值减去前一帧对应位置的16x16小块像素值,判断像素差的绝对值的和是否超过设定阈值来决定当前8x8像素小块是运动还是静止的,如果超过阈值则是运动的,如果像素小块是运动的,则进入场合并线性混合计算单元,否则,进入像素小块交错锯齿检测单元;
像素小块交错锯齿检测单元:利用交错锯齿检测算法检测当前像素小块是否有交错锯齿,如果存在交错锯齿,则进入场合并线性混合计算单元,如果不存在交错锯齿,则进入最后像素小块判断单元;
场合并线性混合计算单元:利用场合并线性混合算法处理当前像素小块,得到新的像素小块,并进入最后像素小块判断单元;
最后像素小块判断单元,判断当前的像素小块是否为最后的像素小块,如果是,则进入帧输出单元,否则,递进到下一个像素小块,并进入首帧判断单元;
帧输出单元:将最后得到的帧输出。
进一步地,所述交错锯齿检测算法为:设当前需要处理的帧的某个8x8像素块的对应位置的像素值分别为Pi,j(i=1~8,j=1~8),它的上面一行对应位置像素值为P0,j(j=1~8),它的底下一行对应位置的像素值为P9,j(j=1~8),对于每一个像素位置利用公式(1)计算Fi,j(i=1~8,j=1~8),如果上面一行或底下一行的像素不存在,那么就分别用这个8x8像素块最上面一行或最底下一行的像素点来代替,
之后利用Fi,j,通过公式(2)计算Ci,j(i=1~6,j=1~6),
最后通过
是否成立来判定是否存在交错锯齿,当成立时,判定为存在交错锯齿,否则不存在交错锯齿,
当用于一帧是否存在交错锯齿的检测时,
和
取较大的值,当用于检测某个8x8像素小块是否存在交错锯齿时,
和
取较小的值。
进一步地,在交错锯齿检测算法中,当用于一帧是否存在交错锯齿的检测时,
=16,
=24,当用于检测某个8x8像素小块是否存在交错锯齿时,
=6,
=15。
进一步地,所述场合并线性混合算法为:设当前需要处理的帧的某个8x8像素小块的对应位置的像素值分别为Pi,j(i=1~8,j=1~8),它的上面一行对应位置像素值为P0,j(j=1~8),它的底下一行对应位置的像素值为P9,j(j=1~8),利用公式(3)计算新的8x8像素块的插值结果为Qi,j(i=1~8,j=1~8),
Qi,j=(Pi-1,j+2*Pi,j+Pi+1,j+2)/4,这里有i=1~8,j=1~8。 公式(3),
如果上面一行或底下一行的像素不存在,那么就分别用这个8x8像素小块最上面一行或最底下一行的像素点来代替。
进一步地,运动像素小块检测单元具体为:
设当前需要处理的帧的某个8x8像素块的对应位置的像素值分别为P
i,j(i=1~8,j=1~8),它向上下左右4个方向分别扩展4个像素,得到N
i,j(i=1~16,j=1~16),对于每一个N
i,j,在视频的前一帧的相同位置的像素值设为
,最后通过
是否成立来判定当前8x8像素块是否存在运动,当成立时,判定为存在运动;否则为不存在运动,
=512,如果某个方面的扩展像素不在当前的帧的有效范围内,就用帧边界上离这些扩展点最近的像素点来代替。
本发明针对现有技术的的缺陷,做了如下的改进。第一,区分视频每帧画面是否有锯齿,从而将整个视频划分为有去交错锯齿的帧和没有交错锯齿的帧,对没有交错锯齿的帧,不需要做插值计算,细节也得到了保留;第二,对于存在交错锯齿的帧,将视频画面划分为相互重叠的小块,通过前后帧像素在相同小块内的变化来检测该小块区域是否为运动,再通过该小块内两场像素的差值规律来判别是否有交错锯齿,结合两方面来决定是否需要做去交错锯齿插值;第三,画面划分为相互重叠的小块能大幅减少运动与交错锯齿的误检和漏检;第四,由于前两步已经将视频画面做了较好的分类,最后归入需要做交错锯齿插值的画面区域会很少,对于这部分区域,用场合并线性混合算法来改善整个视频的画质,场合并线性混合算法去除交错锯齿比较干净同时便于后续编码压缩。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
本发明智能化地分析待播出视频,具体包括:A.对于每一个需要播放或编码的视频,根据视频每一帧的内容,分析出该帧是否有交错锯齿;B.在有交错锯齿时,将画面划分为一些相互重叠的小块,通过检测这些小块的前后帧间像素以及帧内隔行像素的差值来检测该小块的交错锯齿情况,即分别进行运动像素小块检测或者像素小块交错锯齿检测来检测交错锯齿情况;C.检测出交错锯齿后,再应用反交错的插值算法,去除交错锯齿,改善画质。
具体而言,参见图1,公开了根据本发明的具体实施例的自适应的视频反交错方法的流程图,包括如下步骤:
帧数据缓存步骤S110:缓存视频须处理的当前帧的帧数据,如果当前帧不是视频的首帧,还缓存前一帧的帧数据,进入帧交错锯齿检测步骤S120;
帧交错锯齿检测步骤S120:利用交错锯齿检测算法检测当前帧的帧内容是否有交错锯齿,如果存在交错锯齿,则进入帧像素小块分割步骤S130,如果不存在交错锯齿,则保留该帧,进入帧输出步骤S190;
帧像素小块分割步骤S130:将当前帧分割为互不重叠的8x8像素小块,进入首帧判断步骤S140;
首帧判断步骤S140:判断当前帧是否为首帧,如果是,则进入运动像素小块检测步骤S150,如果不是,则进入像素小块交错锯齿检测步骤S160;
运动像素小块检测步骤S150:将每个像素小块向上下左右方向各扩展4个像素,原来的8x8像素小块变为了相互重叠的16x16像素小块,如果某个方面的扩展像素不在当前的帧的有效范围内,就用帧边界上离这些扩展点最近的像素点来代替,利用当前帧的16x16小块的像素值减去前一帧对应位置的16x16小块像素值,判断像素差的绝对值的和是否超过设定阈值来决定当前8x8像素小块是运动还是静止的,如果超过阈值则是运动的,如果像素小块是运动的,则进入场合并线性混合计算步骤S170,否则,进入像素小块交错锯齿检测步骤S160;
像素小块交错锯齿检测步骤S160:利用交错锯齿检测算法检测当前像素小块是否有交错锯齿,如果存在交错锯齿,则进入场合并线性混合计算步骤S170,如果不存在交错锯齿,则进入最后像素小块判断步骤S180;
场合并线性混合计算步骤S170:利用场合并线性混合算法处理当前像素小块,得到新的像素小块,并进入最后像素小块判断步骤S180;
最后像素小块判断步骤S180,判断当前的像素小块是否为最后的像素小块,如果是,则进入帧输出步骤S190,否则,递进到下一个像素小块,并进入首帧判断步骤S140;
帧输出步骤S190:将最后得到的帧输出。
因此,本发明的方案,区分了每帧的画面,将整个视频划分为有交错锯齿的帧和没有交错锯齿的帧,对没有交错锯齿的帧,不需要做插值计算,细节也得到了保留,对于有交错锯齿的帧,结合运动检测和交错锯齿检测算法来分类一帧视频画面的不同区域,将视频帧重叠块划分方法应用到运动检测和交错锯齿检测上,将场合并线性混合算法结合多项检测算法自适应的应用于帧内像素小块的去交错锯齿。
优选的,在帧交错锯齿检测步骤S120和像素小块交错锯齿检测算法S160中的交错锯齿检测算法为:
设当前需要处理的帧的某个8x8像素块的对应位置的像素值分别为Pi,j(i=1~8,j=1~8),它的上面一行对应位置像素值为P0,j(j=1~8),它的底下一行对应位置的像素值为P9,j(j=1~8),对于每一个像素位置利用公式(1)计算Fi,j(i=1~8,j=1~8),
当用于一帧是否存在交错锯齿的检测时
取较大的值,例如,可以为经验值16,当用于检测某个8x8像素小块是否存在交错锯齿时
取较小的值,例如,可以为比如经验值6;之后利用F
i,j,通过公式(2)计算C
i,j(i=1~6,j=1~6),
最后通过
是否成立来判定是否存在交错锯齿,当成立时,判定为存在交错锯齿,否则不存在交错锯齿,与
相似当,用于一帧是否存在交错锯齿的检测时
取较大的值,例如,可以为经验值24,当用于检测某个8x8像素小块是否存在交错锯齿时
取较小的值例如,可以为经验值15;如果上面一行或底下一行的像素不存在,那么就分别用这个8x8像素块最上面一行或最底下一行的像素点来代替。
其中,在场合并线性混合计算步骤S170的场合并线性混合算法为:
设当前需要处理的帧的某个8x8像素小块的对应位置的像素值分别为Pi,j(i=1~8,j=1~8),它的上面一行对应位置像素值为P0,j(j=1~8),它的底下一行对应位置的像素值为P9,j(j=1~8),利用公式(3)计算新的8x8像素块的插值结果为Qi,j(i=1~8,j=1~8),
Qi,j=(Pi-1,j+2*Pi,j+Pi+1,j+2)/4,这里有i=1~8,j=1~8。 公式(3),
如果上面一行或底下一行的像素不存在,那么就分别用这个8x8像素小块最上面一行或最底下一行的像素点来代替。
其中,运动像素小块检测步骤S150具体为:
设当前需要处理的帧的某个8x8像素块的对应位置的像素值分别为P
i,j(i=1~8,j=1~8),它向上下左右4个方向分别扩展4个像素,得到N
i,j(i=1~16,j=1~16),对于每一个N
i,j,在视频的前一帧的相同位置的像素值设为
,最后通过
是否成立来判定当前8x8像素块是否存在运动,当成立时,判定为存在运动;否则为不存在运动,
为512。如果某个方面的扩展像素不在当前的帧的有效范围内,就用帧边界上离这些扩展点最近的像素点来代替。
实施例1:
对于第1帧,
第一步,首先把1280x720的像素点分割成互不重叠的14400(注:14400=1280x720/64)个8x8小的像素块,然后按照交错锯齿检测算法逐个处理每个像素小块来检测该帧是否为交错锯齿帧,由于是用于帧是否存在交错锯齿的检测,
=16,
=24,检测完所有像素小块都没发现交错锯齿,则判定为不存在交错锯齿;
第二步,此帧直接输出原视频,不做处理,结束该帧处理。
实施例2:
对于第30帧,
第一步,缓存第29帧和30帧的视频数据;
第二步,首先把1280x720的像素点分割成互不重叠的14400个8x8小的像素块,进行帧交错锯齿检测,按照交错锯齿检测算法逐个处理每个像素小块,由于是用于帧是否存在交错锯齿的检测,
=16,
=24,发现直到第1230个小块才发现交错锯齿,立刻停止其他后续小块的处理,判定该帧为有交错锯齿帧;
第三步,将当前帧分割为互不重叠的8x8像素小块,判断当前帧不是首帧,进行运动像素小块判断,一直没检测到像素小块是运动的,随之进行像素小块交错锯齿检测,其中,
=6,
=15,直到第603个像素小块都没有检测到像素小块的运动,也没有检测到像素小块内锯齿;把这些像素小块的像素信息不做处理,用于直接输出;
第四步,继续处理第604个8x8像素小块时,进行运动像素小块判断发现第604个小块存在运动,于是用场合并线性混合算法产生插值的结果,输出插值结果,用于输出;
第五步,继续处理后续每一个8x8像素小块,进行运动像素小块判断,一直没检测到像素小块是运动的,随之进行像素小块交错锯齿检测,直到第910个像素小块都没有检测到像素小块的运动,也没有检测到像素小块内锯齿;把这些像素小块的像素信息不做处理,用于直接输出;
第六步,继续处理第911个8x8像素小块时,进行运动像素小块判断发现第911个像素小块不存在运动,随之进行像素小块交错锯齿检测,发现此像素小块存在交错锯齿,于是用场合并线性混合算法产生插值的结果,输出插值结果,用于输出;
如此循环,直到处理完第30帧的所有像素小块,结束该帧处理,最后将该帧输出。
按照实例1和实例2所介绍的方法处理所有这100帧,完成整个视频的处理。
本发明还公开了一种自适应视频反交错装置,包括如下单元:
帧数据缓存单元210:缓存视频须处理的当前帧的帧数据,如果当前帧不是视频的首帧,还缓存前一帧的帧数据,进入帧交错锯齿检测单元220;
帧交错锯齿检测单元220:利用交错锯齿检测算法检测当前帧的帧内容是否有交错锯齿,如果存在交错锯齿,则进入帧像素小块分割单元230,如果不存在交错锯齿,则保留该帧,进入帧输出单元290;
帧像素小块分割单元230:将当前帧分割为互不重叠的8x8像素小块,进入首帧判断单元240;
首帧判断单元240:判断当前帧是否为首帧,如果是,则进入运动像素小块检测单元250,如果不是,则进入像素小块交错锯齿检测单元260;
运动像素小块检测单元250:将每个像素小块向上下左右方向各扩展4个像素,原来的8x8像素小块变为了相互重叠的16x16像素小块,如果某个方面的扩展像素不在当前的帧的有效范围内,就用帧边界上离这些扩展点最近的像素点来代替,利用当前帧的16x16小块的像素值减去前一帧对应位置的16x16小块像素值,判断像素差的绝对值的和是否超过设定阈值来决定当前8x8像素小块是运动还是静止的,如果超过阈值则是运动的,如果像素小块是运动的,则进入场合并线性混合计算单元270,否则,进入像素小块交错锯齿检测单元260;
像素小块交错锯齿检测单元260:利用交错锯齿检测算法检测当前像素小块是否有交错锯齿,如果存在交错锯齿,则进入场合并线性混合计算单元270,如果不存在交错锯齿,则进入最后像素小块判断单元280;
场合并线性混合计算单元270:利用场合并线性混合算法处理当前像素小块,得到新的像素小块,并进入最后像素小块判断单元280;
最后像素小块判断单元280,判断当前的像素小块是否为最后的像素小块,如果是,则进入帧输出单元290,否则,递进到下一个像素小块,并进入首帧判断单元240;
帧输出单元290:将最后得到的帧输出。
特别的,所述交错锯齿检测算法为:设当前需要处理的帧的某个8x8像素块的对应位置的像素值分别为Pi,j(i=1~8,j=1~8),它的上面一行对应位置像素值为P0,j(j=1~8),它的底下一行对应位置的像素值为P9,j(j=1~8),对于每一个像素位置利用公式(1)计算Fi,j(i=1~8,j=1~8),如果上面一行或底下一行的像素不存在,那么就分别用这个8x8像素块最上面一行或最底下一行的像素点来代替,
之后利用Fi,j,通过公式(2)计算Ci,j(i=1~6,j=1~6),
最后通过
是否成立来判定是否存在交错锯齿,当成立时,判定为存在交错锯齿,否则不存在交错锯齿,
当用于一帧是否存在交错锯齿的检测时,
和
取较大的值,当用于检测某个8x8像素小块是否存在交错锯齿时,
和
取较小的值。
特别的,在交错锯齿检测算法中,当用于一帧是否存在交错锯齿的检测时,
=16,
=24,当用于检测某个8x8像素小块是否存在交错锯齿时,
=6,
=15。
特别的,所述场合并线性混合算法为:设当前需要处理的帧的某个8x8像素小块的对应位置的像素值分别为Pi,j(i=1~8,j=1~8),它的上面一行对应位置像素值为P0,j(j=1~8),它的底下一行对应位置的像素值为P9,j(j=1~8),利用公式(3)计算新的8x8像素块的插值结果为Qi,j(i=1~8,j=1~8),
Qi,j=(Pi-1,j+2*Pi,j+Pi+1,j+2)/4,这里有i=1~8,j=1~8。 公式(3),
如果上面一行或底下一行的像素不存在,那么就分别用这个8x8像素小块最上面一行或最底下一行的像素点来代替。
特别的,运动像素小块检测单元具体为:
设当前需要处理的帧的某个8x8像素块的对应位置的像素值分别为P
i,j(i=1~8,j=1~8),它向上下左右4个方向分别扩展4个像素,得到N
i,j(i=1~16,j=1~16),对于每一个N
i,j,在视频的前一帧的相同位置的像素值设为
,最后通过
是否成立来判定当前8x8像素块是否存在运动,当成立时,判定为存在运动;否则为不存在运动,
=512,如果某个方面的扩展像素不在当前的帧的有效范围内,就用帧边界上离这些扩展点最近的像素点来代替。
本发明改善了隔行采集设备所产生的交织锯齿视频在逐行显示设备(比如电脑,手机等设备)上观看视频的画质,提升了用户体验。
显然,本领域技术人员应该明白,上述的本发明的各单元或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施方式仅限于此,对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单的推演或替换,都应当视为属于本发明由所提交的权利要求书确定保护范围。