基于FPGA的视频图像叠加系统的设计与实现
2008-07-16
作者:王旭东,王新赛,李 坚
摘 要: 介绍一种基于FPGA的视频叠加系统的硬件设计与软件实现,克服了市面上大多采用的用专用字符叠加芯片设计视频叠加系统的不足,而且系统中叠加到视频图像" title="视频图像">视频图像上的瞄准十字线可以单像素移动,并且可以根据背景灰度值的不同,实时改变自身灰度值以形成反差,更有利于观察瞄准,这是以往视频叠加系统做不到的。作为一种新型的视频叠加技术,它具有灵活性强、体积小、功耗低等特点。
关键词: FPGA 视频叠加 实时 VHDL
图像处理技术广泛应用于科学研究、工农业生产、军事技术、医疗卫生等领域。 在军事领域中的应用主要有:海防监控、电视跟踪、目标识别、成像制导等。本文设计针对装备观瞄系统中的视频信息的叠加,主要是接收上位机传来的瞄准十字线参数和目标位置信息,利用FPGA实现在视频图像中叠加用于瞄准的高精度可控,能实时根据背景灰度值自动调整自身灰度值的十字线和目标参数等。在以往的视频叠加系统中,通常采用专用字符叠加芯片调用字符库中字符以实现叠加,而这种方式实现的字符叠加不能提供字符的单像素移动操作,只能整字模一起读写,整个系统适应性差,显示的十字线或字符精度和灵活性不够,不能根据实时需要在图像任意方位叠加各种精度的信息。而利用本文技术实现的视频叠加,整个系统在单片FPGA中实现,可减少系统的体积和功耗,而且用FPGA模拟的显示时序可以使叠加的字符或十字线精度得到提高,灵活性得到增强,满足了不同的应用要求。
1 工作原理
为实现图像叠加,必须先了解图像传送的原理。图像是由明暗不同的部分构成的,一幅图像可以分解成许多个基本单元,叫“像素”。要想成功地传送一幅图像,必须把它所有的像素分别转换成相应的电信号,再一一加以传送。现代电视技术中,采用顺序(轮流)传送像素的方法,在发送端按照各个像素的行列位置逐个变成电信号,发送到接收端" title="接收端">接收端;在接收端屏幕上,各个像素也是逐个相继出现的。因此,要想在接收端的屏幕上得出正确的影像,应该符合两个条件:①是发送与接收两个端的扫描时间应该相等,即扫描频率一致;②每一行和每一场开始扫描的时刻也要一样,即扫描的相位一致。所以,严格地保证接收端和发送端的扫描运动互相同步是非常重要的。目前在传送视频信号时,把影像信号、消隐信号和复合同步信号" title="同步信号">同步信号三者按一定比例混合在一起,发送到接收端去控制显像管中电子束的扫描运动,以保证影像中各像素的位置在荧光屏上正确重显。我国采用的电视信号是PAL制,场扫描频率为50Hz,行扫描频率为15 625Hz,它的行同步信号和场同步信号的基本波形如图1所示,实际传送的视频信号波形如图2所示。
本系统中,要求对摄像头获得的图像叠加上瞄准十字线光标和目标位置信息,用户可以通过串口" title="串口">串口命令控制光标的移动。按此要求,在图像传送过程中,截取从摄像头传出的视频信号,叠加一些图形信号,再传送到接收端(本系统中为监视器)。所谓叠加,实质上是在像素级为每个像素点选择电信号。这其中有两个问题:一是精确定位像素点,即确定它的行、列位置;二是定位之后,控制电信号的输出,即选择在监视器上的某一像素点为显示现场图像像素的电信号,还是叠加图形的像素电信号。本系统解决这两问题的办法是:采集视频图像时,根据视频图像的复合同步信息实时将图像的灰度值按顺序采集到一双口" title="双口">双口RAM中,供显示时读取,而显示的“复合同步信号”是采用VHDL在FPGA中模拟出来的,这样可以直接得到行同步信号及场同步信号,以控制行/场计数器准确计数及定位像素点,从而可以在视频图像的任意位置叠加字符图像。另外,还可以在显示图像之前读取双口RAM中的视频灰度值以实现图像处理的各种算法。
2 硬件设计
系统的核心控制在FPGA芯片中,选用ALTERA公司的Stratix EP1S10F672I7芯片,配置方式采用PS并行配置模式。配置存储器选用ALTERA的EPC8Q100,它拥有8个存储分区,合计8Mbit的存储空间,通过拨码开关选择不同的上电程序。可以根据用户需要选择不同的系统程序。对配置芯片的下载和在线调试采用JTAG口模式。视频信号通过采集芯片SAA7113采集并解码成标准的“VPO”数字信号存储在FPGA内嵌的双口RAM中,视频合成的全部过程在FPGA中实现,最后通过显示芯片ADV7123 显示到监视器。RS485用来传输从上位机过来的目标位置信息和十字线调整命令。整个硬件电路实际上是一个图像处理平台,实现视频合成只用到系统资源的21%,其余资源可用来实现图像处理的多种算法。系统结构框图如图3所示。
3 软件实现
系统硬件相对比较简单,大量工作需要用硬件描述语言(VHDL)在集成芯片FPGA中完成。软件采用模块化设计方法,对各模块进行增量编译,通过在FPGA物理位置进行区域性约束来完成整个系统软件设计,继承每一个模块编译的成果,使模块与模块之间有一定的物理隔离带,减少了各模块之间的信号干扰,保证每个模块的时序要求,并且软件流程清晰、可读性强,便于修改和升级。总体流程如图4所示。
3.1 图像采集模块
本模块主要作用是采集从芯片SAA7113过来的数字视频信号、行场同步信号,及SAA7113内部锁相环(LLC)向外界提供的27MHz系统时钟信号。根据复合同步信息将视频图像灰度值存入FPGA内嵌的双口RAM中,供图像算法实现模块调用。FPGA内部的存储空间可以配置为各种存储器,本系统将其配置为双口RAM,用于存储视频图像灰度值。
3.2 图像算法实现模块
本系统涉及到的图像处理算法是为了使叠加到视频图像上的瞄准十字线能够根据视频图像背景灰度值的变化而自动调整自身灰度以便于观察。模块采用领域处理的方法以模板运算的形式实现。模板运算的思想是将赋予某个像素的灰度值作为它本身灰度值和相邻像素灰度值的函数。考虑图5(a)所示十字线中心的子图区域,并用以准心z5为中心的3×3区域中像素值的模板运算值来代替z5的值。
利用图5(b)的模板,将模板中心放在z5之上,用模板上对应的系数与模板下的像素相乘并累加结果:
令wi=1/9,i=1,2,…,9,将运算结果与灰度值150比较,大于150则给出一信号,令d等于1,否则将d置0。十字线的灰度值则根据d的值而调整。
式(1)在图像处理中得到广泛应用,恰当地选择系数并在图像的各个像素位置运用模板可以得到一系列有用的运算,如噪声消除、细化区域和边缘提取等。本系统中主要用来消除噪声的干扰。
3.3 显示合成模块
利用VHDL实现的PAL制式显示合成模块,主要由串口数据分配器、可移动的十字线生成器、字符生成器和字符ROM、视频信号合成器组成。其结构框图如图6所示。
串口数据分配器把从字符叠加FIFO中读取的十字线参数及目标信息分解并传给可移动的十字线生成器和字符生成器。
可移动的十字线生成器利用PAL制式复合同步信号发生器中模拟出来的行场信号和像素时钟来同步,按照从串口数据分配器中传来的十字线位置信息,定位相应图像的行和列,并产生灰度级10位的图像数据,通过视频信号合成器合成到视频图像中。
字符生成器和字符ROM,其原理和十字线生成器很相似,同样是由PAL制式复合同步信号发生器中模拟出来的行场信号和像素时钟驱动。与十字线生成器不同的是:字符生成器是按照从串口数据分配器中读出的目标信息,然后生成相应的字符ROM地址并查找相应字符送入视频信号合成器合成显示。字符ROM和FIFO一样用Stratix系列中自带的TriMatrix存储器实现,另外在系统编译前要做一个字符MIF文件固化到ROM中去。
视频信号合成器是把从字符生成器中生成的字符、可移动的十字线生成器生成的十字线和从双口RAM读取的图像数据异或,最后生成PAL制式电视信号,完成视频信号的叠加。
系统级的FPGA设计以其可靠性、先进性、高效性、体积小的特点,正逐步成为设计者的首选。随着对视频叠加要求的提高,很多领域要求在视频图像上叠加各种复杂的图形并且要求精度高和可控性好。以往的单片机控制的视频叠加系统已逐渐不能满足需求,而基于FPGA设计的图像叠加系统可以高效地完成任务。目前基于FPGA的视频叠加系统已在某装备观瞄设备上成功使用,效果很好。
参考文献
[1] 宋传明,陈宁,陈文芗.车载视频系统中字符叠加技术的应用.厦门大学学报(自然科学版),2005.
[2] McGraw.hill.VHDL Programming by Example.2004.
[3] 吴继华.Altera FPGA/CPLD设计(高级篇).北京:人民邮电出版社,2005.
[4] 任爱锋.基于FPGA的嵌入式系统设计.西安:西安电子科技大学出版社,2005.