新闻中心

EEPW首页>嵌入式系统>设计应用> 基于FPGA的实时视频信号处理平台的设计,包括电路图及源代码

基于FPGA的实时视频信号处理平台的设计,包括电路图及源代码

作者: 时间:2017-06-04 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/201706/348676.htm

摘要:

介绍了一种实时视频信号处理平台的设计,该系统接收低帧率数字YCbCr视频信号,利用一片DDR2 SDRAM存储器作为帧缓存,对接收的视频信号进行格式转换、、图像放大、色空间转换,使输入的视频信号可以在VGA显示器上实时显示;并研究了光学镜头中变倍电机和聚焦电机的控制原理,实现了步进电机初始位置检测、图像变倍时变倍电机与聚焦电机的配合驱动,为了适应不同物距变倍跟踪,实现了灰度差分算法,实时计算当前帧图像的聚焦评价函数值,采用爬山搜索策略实现对聚焦电机的控制,使当前图像的聚焦函数值最大,实现图像的。整个设计采用VHDL语言实现,在Xilinx XUPV5-LX110T FPGA开发板上验证。利用该平台还可实现图像的压缩编码、解码、本地存储及以太网传输等功能。

关键词:;DDR2 SDRAM;;FPGA;

1. 引言

随着半导体技术的发展,图像传感器的分辨率有了很大提高,但由于处理数据量巨大,图像传感器输出高分辨率图像时帧率一般较低,其输出图像不能直接在VGA显示器上显示。为了使高分辨率图像传感器采集的图像在VGA显示器上实时显示,需要对其输出的图像进行、色空间转换等后端处理。目前,市场上常用的芯片有PixelWorks公司的PW1226、Tvia公司的TrueView5725、Averlogic公司的AL250、威斯达公司的WSC2000等。采用上述芯片可实现视频图像的帧率提升、图像增强等功能,但由于其功能固定,不能适用于一些特殊应用场合,如图像存储、自动聚焦等。

指内置光学镜头,具有变倍、自动聚焦功能的摄像机,其结构小巧、使用方便、监控范围广,已广泛应用在教学视频展台、视频监控等领域。变焦控制可实现图像的变倍、自动聚焦,是一体化摄像机中的关键技术之一。步进电机可将电脉冲信号转换成角位移,每接收一个脉冲信号就可驱动步进电机转动一个固定角度,实现物体的准确定位,通过控制脉冲的频率可控制电机转动的速度,步进电机已广泛应用于高精度控制系统中。一体化摄像机光学镜头中包含变倍步进电机与聚焦步进电机,变倍电机转动时,为使图像聚焦清晰,聚焦电机也应随之转动,具体转动步数与物距有关,具体参数可由镜头生产厂家提供的变焦跟踪曲线获得。为了适应不同物距的清晰成像,变倍跟踪结束后,还应进行自动聚焦,以显示清晰的图像。

图像聚焦程度与其高频分量有关,图像聚焦时,其包含的高频分量最大,图像最清晰,通常采用聚焦评价函数来描述图像的清晰程度。常用的聚焦评价函数主要有:高频分量法、平滑法、阈值积分法、灰度差分法、拉普拉斯像能函数等。为了提高聚焦速度,本项目采用灰度差分法实时计算每场图像的聚焦函数值,判断当前图像的清晰与否,采用爬山搜索策略,实现图像的快速自动聚焦。快速自动聚焦的实现与变倍跟踪曲线的精度、自动聚焦算法的优劣、搜索策略、电机驱动速度等因素有关。

由于FPGA 器件的可并行处理能力及其可重复在系统编程的灵活性,其应用越来越广泛。同时随着微处理器、专用逻辑器件、以及DSP算法以IP Core的形式嵌入到FPGA中,FPGA可实现的功能越来越强,FPGA在现代电子系统设计中正发挥着越来越重要的作用。本项目设计的实时视频信号处理平台利用XUPV5-LX110T FPGA开发板,并自制了视频图像采集板,采用22倍一体化光学镜头,利用FPGA开发板上的一片DDR2存储器作为帧缓存,已实现的图像的帧率提升、图像放大,并实现灰度差分自动聚焦算法,实时计算当前图像的高频分量,利用爬山搜索策略控制聚焦步进电机的转动,实现图像的自动聚焦,在该开发平台上还可实现视频图像的压缩编码、解压缩、本地存储、网络传输等功能。

2.设计性能指标

该平台可将CMOS彩色图像传感器输出的分辨率为736*576、帧率为12Hz的8位YCbCr视频信号放大到分辨率为1024*768、帧率为60Hz的24位RGB信号,经过Xilinx XUP Virtex-5LX110T开发板上的DVI转换器(CHRONTEL CH7301),可通过DVI接口在显示器上直接显示,或通过DVI-VGA转接口在VGA接口的显示器上显示。同时,实现了图像的变倍跟踪、自动聚焦功能,具体性能指标如下:

(1)输入视频图像分辨率736*576、帧率12Hz、8位YCbCr视频信号;

(2)输出图像分辨率1024*768、帧率60Hz,以DVI或VGA接口输出;

(3)具有黑白/彩色转换、图像冻结、OSD等功能;

(4)16倍光学变倍;

(5)变倍放大后具有自动聚焦功能,自动聚焦执行时间在2秒以内;

(6)支持输入图像的压缩编码、解码、本地硬盘存储及以太网传输。

3. 系统方案

系统结构如图1所示。

图像传感器输出分辨率为736*576、帧率为12Hz的8位YCbCr视频信号,并输入到FPGA,FPGA利用外部一片DDR2存储器内的两个Bank空间作为帧缓存,采用乒乓存储机制将输入的视频帧率由12Hz提升到60Hz,将视频信号由YCbCr空间转换到RGB色空间,分辨率由736*576放大到1024*768,并产生1024*768@60Hz的行场时序扫描信号,FPGA输出的数字视频信号经D/A转换后,输出到VGA接口,从而图像传感器采集的图像可在VGA显示器上实时显示。

FPGA输出变倍电机和聚焦电机驱动信号,并经H桥驱动电路放大后输出到光学镜头,同时,光学镜头将变倍电机和聚焦电机的位置检测信号反馈输出到FPGA,用以检测当前电机位置。

系统上电后,FPGA判断光学镜头返回的变倍电机位置检测信号和聚焦电机返回的检测信号,若检测信号为低电平则驱动电机向靠近图像传感器方向转动,直至检测信号为高电平,在电平跳变处停止,同理,若检测信号为高电平,则驱动电机向远离传感器方向转动,直至检测信号为低电平,在电平跳变处停止,以上则完成对电机的初始化。初始化结束后,则驱动电机转动到一固定放大倍数位置。电机变倍时,变倍电机转动一定步数,同时驱动聚焦电机转动对应步数,具体步数可根据变倍跟踪曲线获得,变倍结束后,FPGA从输入的视频信号中提取亮度Y信号,采用灰度差分聚焦算法,实时计算当前帧图像的高频分量,图像完全聚焦时,图像聚焦评价函数值最大。利用爬山搜索策略,控制聚焦电机的转动,使当前图像的聚焦函数值最大,即当前图像最清晰,从而实现了图像的自动聚焦,从而可保证每次变倍结束后得到清晰的图像。

该视频信号处理平台可对输入的视频图像进行压缩编码(H.264、AVS等算法),通过硬盘控制器模块实现压缩图像的本地存储,并通过内部以太网控制器模块将压缩后的数据输出到FPGA开发板上的以太网物理层芯片,进而通过RJ45网络接口进行以太网传输,还可通过以太网接收压缩的视频数据流,进行解码,并通过后端处理在本地播放。

4. 系统设计

本项目采用现代EDA设计常用的“自顶向下”的设计方法,进行功能划分并按模块化设计原则,FPGA内部功能模块如图2所示。

数字视频信号输入到FPGA后,首先进入前端处理模块,前端处理模块主要实现了对外部光学电机的控制,该模块对输入的视频信号进行格式转换并提取亮度Y信号,根据亮度Y信号实现了灰度差分自动聚焦算法,并实现了步进电机初始位置检测、图像变倍时变倍电机与聚焦电机的配合驱动,为了适应不同物距变倍跟踪,利用灰度差分自动聚焦算法获得的当前帧图像的聚焦评价函数值,采用爬山搜索策略实现对聚焦电机的控制,使当前图像的聚焦函数值最大,实现图像的自动聚焦。

图像处理模块可实现图像的压缩编码(可实现H.264、AVS等压缩算法)、本地硬盘存储,并通过以太网控制器实现压缩图像的网络传输,该模块还可通过以太网接收压缩视频流,进行解码,并通过后端处理模块进行图像显示。

后端处理模块接收前端处理模块输入的视频信号,或接收图像处理模块解码的视频信号,主要实现了图像的帧率提升、图像放大、色空间转换,使输入的低帧率YCbCr视频信号在DVI接口显示器或VGA显示器上实时显示。下面详细介绍各模块的功能及实现方法。

  1. 前端处理模块

该模块接收输入的YCbCr格式8位数字视频信号,进行格式转换,转换成16位YCbCr(4:2:2)格式,根据亮度Y信号,采用灰度差分算法计算当前帧图像的高频分量。

该模块输出变倍电机和聚焦电机的驱动信号,经H桥驱动放大电路后输出到光学镜头,同时,光学镜头将变倍电机和聚焦电机的位置检测信号反馈输出到该模块,用以检测当前电机位置。

系统工作时,首先判断光学镜头返回的变倍电机位置检测信号和聚焦电机返回的检测信号,若检测信号为低电平则驱动电机向靠近图像传感器方向转动,直至检测信号为高电平,在电平跳变处停止,同理,若检测信号为高电平,则驱动电机向远离传感器方向转动,直至检测信号为低电平,在电平跳变处停止,以上则完成对电机的初始化。初始化结束后,则驱动电机转动到一固定放大倍数位置。电机变倍时,变倍电机转动一定步数,同时驱动聚焦电机转动对应步数,具体步数可根据变倍跟踪曲线获得,变倍结束后,该模块计算当前场图像的高频分量,判断当前图像的清晰度,并采用爬山搜索策略驱动聚焦电机,以实现图像的自动聚焦,从而可保证每次变倍结束后得到清晰的图像。

前端处理模块可分为以下功能子模块:格式转换、电机初始化、变倍跟踪、搜索、自动聚焦算法、系统控制、电机驱动等,如图3所示,下面将详细介绍各模块的实现方法。

  1. 格式转换

该模块功能是将输入的8位视频信号转换成16位YCbCr(4:2:2)格式视频信号。实现方法如下:在输入视频信号的行同步信号有效时,在第一个像素时钟同步下,将第一个8位数据写入8位寄存器1,第二个像素时钟同步下,将第二个8位数据写入8位寄存器3,同时将寄存器1的数据输出到8位寄存器2,第三个像素时钟同步下,将第三个8位输入数据写入寄存器1,同时,将寄存器2、寄存器3的数据写入到16位寄存器4,一直按此规则进行写入,则寄存器4输出16位YCbCr(4:2:2)格式数据,输出速率为原像素时钟的2分频。其内部寄存器格式如图4所示。

(2) 步进电机初始化

该模块功能是实现电机初始位置的判断,并驱动电机转动到某一固定位置。

由于每次系统掉电时,步进电机的停止位置不固定,所以每次系统工作时,首先要进行步进电机位置的判断并驱动步进电机转到某一固定位置,如一倍放大位置。步进电机中用电机位置检测器来判断电机的位置,位置检测器电路如图5所示。其工作原理为,当电机驱动的检测器运动到发光二极管与光敏三极管之间时,阻挡二极管发出的光线,则三极管处于截止状态,输出信号为高电平;当检测器离开中间位置时,发光二极管使三极管导通,则输出信号为低电平。由于二极管和三极管位置固定,所以输出信号电平跳变位置是固定的。

图5 电机位置检测电路

系统上电后,根据电机位置检测器返回的状态信号判断当前电机的运动位置,若返回低电平则驱动电机向图像传感器方向移动,直至检测信号为高电平,在检测信号跳变时,停止电机转动;若检测信号为高电平,则驱动电机向远离传感器方向移动,直至检测信号为低电平,在检测信号跳变时,停止电机转动,由于检测信号跳变位置是固定的,所以系统上电后可驱动电机转动到预设置的固定位置。

(3) 变倍跟踪

(4) 自动聚焦算法

通常采用聚焦评价函数来描述图像的清晰程度,常用的聚焦评价函数有:高频分量法、平滑法、阈值积分法、灰度差分法、拉普拉斯像能函数等。灰度差分法利用图像的相邻像素灰度值差的绝对值之和作为聚焦评价函数,灰度差分算法实现简单,由于没有复杂的运算,易于在FPGA上实现,算法公式描述为:

该算法实现时,缓存四行数据,实现内部功能模块如图6所示。

图6 自动聚焦算法实现内部模块

读写控制模块控制四个行缓存中数据的读写,每场图像第一行数据写入到行缓存1,第二行数据写入到行缓存2,第三行数据写入到行缓存3,第四行数据写入到行缓存4,同时,将行缓存1、2、3中数据读出到算法实现模块,第五行数据写入到行缓存1,同时,将行缓存2、3、4中数据读出到算法实现模块,按此读写规律进行直至一场图像结束。算法实现模块接收从行缓存中读出的数据,并将每个行缓存读出的数据赋值给内部相连的三个寄存器,则第二行中间寄存器对应算法中的像素,根据聚焦评价函数值公式即可求出当前场的聚焦函数值,并将当前场图像的聚焦函数值与前一场图像的聚焦函数值相比较,如当前场图像的聚焦函数值大于前一场图像聚焦函数值,则输出比较信号为高电平,表示当前场比前一场图像清晰,反之输出低电平,表示当前场图像比前一场图像模糊。

(5) 搜索

该模块根据自动聚焦算法模块输出的相邻两场图像聚焦函数值的比较结果,来控制聚焦电机的转动方向,当输出图像的聚焦函数值最大时停止转动,则实现图