去隔行的FPGA实现

2015-12-20 01:09周文彬
电子科技 2015年3期
关键词:锯齿阈值模块

周文彬

(西安电子科技大学电子工程学院,陕西西安 710071)

随着高清数字视频的发展,人们对视频清晰度的要求也不断提高,隔行扫描带来的虚影、闪烁,以及快速运动时的锯齿现象等问题也变得越来越突出,从而影响了视觉观感。解决上述问题的关键就在于去隔行技术。

所谓去隔行技术就是将隔行扫描的视频转换成逐行扫描的视频。由于隔行扫描中,每场只传送一帧中的1/2数据,所以采用算法补齐缺失的另1/2数据组成完整一帧,是去隔行算法的关键。目前存在以下几种方法:单场插值法、场合并法、运动自适应算法。单场插值法就是利用本场数据,直接通过复制本场前一行的数据或者两行的平均值来填充缺失行。但此方法会使图像变得柔和。场合并法即是将当前场和前一场的数据直接进行合并得到一帧,这种方法对静图像效果较好,但对于运动图像则会出现锯齿现象。运动自适应算法则是根据点是否运动来确定最后结果,此方法效果良好,得到了广泛应用[1]。

文中结合FPGA的优势,提出了一种运动检测算法,该算法对传统算法进行了改进,对运动点的检测更为细致。该算法将图像区分为运动点和静止点,分别采用增强ELA算法插值的结果及前场数据值进行去隔行。最后将该算法在FPGA上得以实现,得到了较为理想的实际效果。

1 系统总体结构

系统的设计目标是为了使输入的隔行视频,通过用FPGA实现去隔行算法,对隔行视频进行处理,从而组成完整的一帧并显示。

图1为系统的总体结构,视频前端数据采集由摄像头的数据经过A/D采集,并且经过BT656解码模块得到最终数据。因为要对视频数据进行4场缓存,所以数据缓存采用一块DDR2 SDRAM。中间过程则是在FPGA内部用程序实现的去隔行算法并得到结果。对于显示去隔行的结果,按照Cameralink协议送给后端的Cameralink转VGA模块进行输出显示,在VGA的显示器上查看最终的去隔行效果。

图1 系统总体结构

2 FPGA各主要模块的原理及功能

图1给出了去隔行的FPGA实现及显示的模块框图,以及各个模块的联系及数据走向。系统采用Altera公司Cyclone III实现,为了提高设计的效果,本系统调用了其自带的DDR2控制器IP核,以下对每部分的实现将做具体说明。

2.1 视频采集进入

BT656是一种标准的视频数据格式,完整的一帧图像数据是由一个625行、每行1728个字节的数据块组成。其中,23~311行是偶场视频数据,336~624行是奇场视频数据,其余行为垂直控制信号。为了后续去隔行的方便运用,在这里对于摄像头输入的BT656格式的视频数据,编写了BT656解码模块,将原本一帧的数据拆分成奇偶场的数据进行输出给后端,并给出了相应的指示奇偶信号及行列计数器,以便后端进行采样[2]。

2.2 DDR2控制模块

因为去隔行的运动检测需要采用4场的数据进行操作,所以本模块的主要功能是对进来的视频数据进行缓存处理。由图1可知,在DDR2 SDRAM中需要开辟4场视频区域的大小。并且由于视频数据是不断进入的,所以需要不断地往DDR2中写入数据。同时后端去隔行模块也要不断读取DDR2 SDRAM中的4场数据。这样 1进 4出,并且每个并行块对 DDR2 SDRAM的访问均为独占方式,就有可能出现资源冲突。所以总线仲裁就是本模块的关键,在对 DDR2 SDRAM的工作频率和数据率,以及视频数据进入的频率评估后,设计出了底层DDR2的控制模块对写入和读出之间的协调。在写操作时,先用FPGA内部的FIFO进行缓存,在其没有达到一次突发写长度时,读状态机依次将总线交给读取 Fn-1、Fn-2、Fn-3、Fn-4中的4个读模块,并且在此期间,不断检查写是否满足突发长度,若写满足了一次突发时,则将内部缓存数据一次性写入DDR2 SDRAM中。这样非写即读的方式,则可以较好地完成对去隔行模块的数据支持[3]。

2.3 去隔行模块

去隔行模块是系统的核心。它主要分为:运动检测部分,增强型ELA算法和结果选择部分。

2.3.1 增强型ELA部分

为保护边缘及消除锯齿,对于完全运动的点,采用增强型ELA算法[4]。该算法的主要思想如下

图2 增强ELA点示意图

以黑点为要求取的结果点X,白点为当前场上下两行的点,则X为

此算法实质是将当前场上下两行缓存后,按上述步骤取出相关点进行计算,从而得到丢失场的对应点。此模块的结果需要在FPGA内部进行一定行数的缓存,因其既要作为最终结果输出,又要被运动检测所用。

2.3.2 运动检测部分

运动检测部分是去隔行算法的关键,运动检测好,则最终效果较好。本去隔行算法主要采用5×5领域内的所有点进行相关统计来完成运动检测,这样取的点更多,虽然硬件上更为复杂,但是可以取得更好的效果。具体步骤如下:首先将 Fn-1,Fn-2组成帧 1,然后将 Fn-3,Fn-4组成帧 2,然后两帧相减,以某点为中心,取5×5邻域的所有点进行统计,得到结果d1,然后与预先设定好的阈值进行比较,若其大于或等于阈值,则判定为运动点,若其小于阈值则判定为非运动点。这里的阈值,是通过在软件上对大量实际图像数据进行相关过程的仿真后,从而得出的一个综合值

传统算法一般只进行了第一步的运动检测,这样硬件上实现虽简单,但此时仅用两帧的信息进行判定运动点,若有高于帧频的运动,则可能无法检出。所以在第一步的基础之上,增加了第二步ELA运动检测。即通过增强ELA插值出来的丢失场,再次和前场的图像进行相减得到结果d2,并且和阈值进行比较,这样将两次的运动检测相或,就能够检出第一步未检出的运动点,从而更好地完成运动检测,其中1为运动点,0为静止点[4-6]

2.3.3 结果选择部分

该模块完成的主要功能是对数据进行选择性输出。因为要完整地输出一帧图像,所以当前场的图像便直接进行输出即可。而对于要补充的缺失场,则根据运动检测结果进行输出。若运动检测为静止点,则将前一场的像素点进行输出;若运动检测为运动点,则将ELA插值得到的结果输出。这就完成了整个去隔行结果。

上述模块设计难点在于要用到多个数据点,而且所采用数据点的分布是呈窗状的,所以要使用FPGA内部多条RAM块进行数据缓存和交替切换。同时为了保持数据的处理速度,争取一个周期出一个数,使用了流水线技术进行计算,从而得到所需结果。下面结合实例对RAM条操作:因需对5×5的窗状数据进行统计,将从底层DDR2模块取出的两行数据减后,存入第一条RAM,依次存入到第5条的第5个数据时,便己达到5×5的邻域点,可以进行相关统计,在下一个数存入RAM前,将寄存的5×5数据的第一列丢弃,后4列依次前向寄存。同时将下一列数据从RAM中取出,和寄存的前4列又组成一个新的邻域进行统计。当第6行数据进来时,相当于对第一条RAM进行覆盖写入,这时邻域窗的第5行则等同于第一条RAM的数,依次类推,完成对RAM的操作。

2.4 Cameralink显示模块

本模块的主要功能是将去隔行产生的数据结果按照Cameralink数字时序送给后端的Cameralink转VGA模块,以便在VGA上进行显示,Cameralink时序如图3所示。

图3 Cameralink时序图

图中,cam_fe为帧同步信号;cam_le为行同步信号;cam_de为数据同步信号;cam_data即为送给后端的去隔行的结果。其中行同步信号和数据同步一致,有效数据必须在cam_de为高电平时输出。后端Cameralink转VGA属于另一系统,这里不做详述。

3 实验结果

图4 组合帧结果

图5 单场内插结果

图6 本文算法结果

从实际结果可以看出,组合帧方法对静止图像效果良好,但只要运动就会有锯齿的出现;而单场插值的结果对运动没有锯齿,但图像较为模糊,清晰度不够。本文去隔行实现的效果较为有效地克服了锯齿、模糊等现象,使图像质量得到了明显提高。

4 结束语

在对现有的去隔行算法的分析基础之上,提出了改进的方法,得到了一种新的去隔行算法。使用FPGA在实际的硬件平台上加以实现,实际效果表明,该系统能较好的去除隔行扫描带来的细节模糊以及运动锯齿等现象,适用于工程实践。

[1]Altera Conpration.使用FPGA实现高清晰去隔行功能白皮书[M].San Jose:Altera Conpration,2009.

[2]李娟.基于FPGA的图像预处理及显示系统设计[D].长春:中国科学院长春光学精密机械与物理研究所,2011.

[3]Altera Conpration.DDR and DDR2 SDRAM controller compiler user guide[M].San Jose:Altera Conpration,2009.

[4]蔡玉强,杨刚,蒋泉,等.一种新型去隔行算法的FPGA实现[J].现代显示,2010(1):51-56.

[5]周津,姚素英,柳崎峰.一种基于全局运动统计和边缘平滑滤波的视频去隔行方法[J].电子技术应用,2008,34(8):126-129.

[6]黄敏敏.去隔行算法研究及其FPGA实现[D].厦门:厦门大学,2006.

猜你喜欢
锯齿阈值模块
28通道收发处理模块设计
“选修3—3”模块的复习备考
猛犸杀手——锯齿虎
小波阈值去噪在深小孔钻削声发射信号处理中的应用
基于自适应阈值和连通域的隧道裂缝提取
比值遥感蚀变信息提取及阈值确定(插图)
锯齿线在整形美容领域的应用
室内表面平均氡析出率阈值探讨
集成水空中冷器的进气模块
伤口多了就是锯