PAL视频去隔行处理
0赞首先来阐明两个基本概念:隔行扫描和逐行扫描。
隔行扫描指显示屏在显示一幅图像时,先扫描奇数行,全部完成奇数行扫描后再扫描偶数行,因此每幅图像需扫描两次才能完成,造成图像显示画面闪烁较大。隔行扫描就是每一帧被分割为两场,每一场包含了一帧中所有的奇数扫描行或者偶数扫描行,通常是先扫描奇数行得到第一场,然后扫描偶数行得到第二场。
每一帧图像由电子束顺序地一行接着一行连续扫描而成,这种扫描方式称为逐行扫描。
隔行扫描最大的问题是容易出现行间闪烁、并行现象或垂直边缘锯齿效应,影响人眼观看的视觉效果。在开发过程中,特权同学也遇到了一些采集的PAL隔行扫描还原时的问题。在摄像头采集的图像静止不动的时候,可以说画面蛮清晰漂亮的,但是画面中的物品如果频繁的运动,如手在镜头前晃动,其轨迹就会有明显的边缘锯齿感,静止时如图2很正常清晰,而一旦运动时就如像图1的效果。
图1 图2
要解决这个问题,其实也不难,问题就是出在隔行扫描的帧频率太慢,奇场和偶场加起来每秒才25Hz,而且奇场偶场的数据是在分别不同的时间进行采集的。因此,当物体运动时在视觉效果上看起来就会有锯齿感。
那么,解决的办法有一个:去隔行处理。所谓去隔行,特权个人的理解,就是用单独的一个奇场还原奇场偶场都有的完整图像,单独的一个偶场也还原奇场偶场都有的完整图像,这样在每秒看到的就是50Hz的图像,从人眼视觉敏感度上来说,就根本很难感觉到锯齿感了。说得难听点,去隔行就是想办法欺骗人的眼睛。
从功能角度来说,对于未去隔行处理的视频信号的还原有如图3所示。也就是说奇场偶场交替的显示到终端,每秒只有25帧的图像。
图3
由于上述隔行扫描的种种问题,所以采取了一些去隔行的处理,如图4所示。处理后每次视频源输出的单场(奇场或者偶场)就会被处理成一个完整的图像,即每秒实际更新的图像是50帧。
图4
图4中的去隔行滤波其实和很多资料中提及的4:2:2到4:4:4转换的算法是一致的。简单的说,也就是通过相近行的图像数据来重构没有数据的图像。
在xilinx的《xapp294_04.pdf》中提到的4:2:2到4:4:4转换的算法有三种:其一如Equation1所示,简单用最近的两个数据的算术平均来重构图像;其二和其三分别如Equation2和Equation3所示,称之为并行FIR滤波方法。
公式2、3涉及FIR滤波,显然实现起来需要付出比较大的资源和面积(换句话说,也就是money),但是效果肯定更佳。而公式1相对简单实现,特权同学对最后的图像还原效果要求也不算太高,选择了公式1来实现,基本功能如图5所示。而最终实现的效果也还是可以,足够欺骗群众的眼睛了。
图5