曹山,刘继勇
(西安工业大学 电子信息工程学院,陕西 西安710021)
基于FPGA的Alpha半透明图像叠加算法硬件实现
曹山,刘继勇
(西安工业大学 电子信息工程学院,陕西 西安710021)
文中在FPGA上采用纯verilog逻辑实现了Alpha半透明图像叠加算法,即验证了算法的正确性,同时针对FPGA不善于处理浮点运算的弊端,采用了移位操作的方法,进一步提高了运算速度,实现了Alpha透明系数可调,半透明图像叠加的实时显示,在高清图像显示领域具有很大的实用价值。
Alpha半透明算法;移位操作;高清图像;实时显示
Alpha透明算法被广泛应用于图像处理[1],2D游戏,3D游戏图像混合和渲染等领域。在涉及到高清图像时由于计算量比较大,PC处理速度较慢,图像半透明叠加效果无法实时呈现。本文采用了FPGA并行处理的思想,同时对逻辑中设计到的浮点运算进行了移位操作,极大的提高了运算速度,实现了图像的半透明叠加效果的实时显示。可以在高清图像显示领域中实现视频和半透明滚动字幕的叠加,以及多路视频的实时叠加处理[2]。
Alpha通道是一个8位的灰度通道,该通道用256灰度来记录图像中透明度信息、定义透明、不透明和半透明区域,其中黑表示全透明,白表示不透明,灰表示半透明。
Alpha混合算法公式:
R(A)、G(A)、B(A)分别代表图像A的RGB分量的原色值[3],R(B)、G(B)、B(B)分别代表图像B的RGB分量的原色值,R(C)、G(C)、B(C)分别代表混合后图像C的RGB分量的原色值。alpha为图像的透明度系数,取值为0-1,1为完全透明,0为完全不透明,改变这个值可以得到一个渐变的效果。
透明度alpha的计算。颜色在本质地上是光的产物,可以把透明度理解为玻璃的透光性。例如一个alpha=0.2的颜色,可以将其想象为透光率为80%的彩色玻璃。透过这块玻璃看去,由于80%的光都透过了,因此留下来的颜色只剩20%,即所谓系数为0.2的alpha。
现在通过Matlab[4]来进行两幅图片叠加验证。
将alpha设为0.4和0.6的颜色进行叠加。这时相当于叠加了两块玻璃,一块透光率为60%,另一块为40%。一道光束穿过,经过60%透光率玻璃时,光线强度剩下80%,再经过40%透光率玻璃时,光线进一步被削弱,只剩下60%*40% =24%。这意味着合成的图片有24%的透明性。
Matlab核心代码:
两幅图片的分辨率都是1 024*768,叠加后处理效果图如下:
由效果图可以看出,实现了海鸥在蓝天白云中飞翔的半透明效果。由于蓝天白云图片alpha为0.4,海鸥图片alpha为0.6,所以海鸥透明度明显高于蓝天白云。随着蓝天白云alpha值的提高,透明度也会提升,相反海鸥透明度会随之降低。
虽然实现了半透明叠加效果,但由于图片分辨率过高,Matlab要对每个像素点的RGB三通道分别进行alpha算法公式运算,最后输出合成图片,用了大约0.75 s的时间。对视频图像无法做到实时处理的效果。因此,考虑用FPGA硬件设计来实现此算法。
图1 Matlab实现的半透明图片叠加效果图Fig.1 Matlab achieve translucent images superimposed renderings
本设计硬件采用的市面上常用的开发板,主控芯片是ALTERA公司的Cycelone IV,并带有VGA,百兆网口,RS232串口等一系列接口。FPGA内部产生两幅图片同时进行半透明化叠加,并且通过开发板上的按键来控制alpha系数,从而实现调节两幅图片的之间的透明度,最后在VGA显示器进行显示。
3.1 逻辑设计整体框图
整体框图包括3个模块,alpha_control模块、vga_display模块和vga_driver模块
alpha_control模块:通过外部按键控制alpha半透明参数,实现两幅叠加图片之间透明度实时转换。
vga_display模块:由于FPGA内部的memory容量有限,无法存储高分辨图片,因此通过此模块生成两幅图片,并实现半透明图片的叠加,然后送到VGA显示器进行实时显示。
vga_driver模块:驱动VGA[5]工作在预定的分辨率下,这里驱动显示器工作在1024*768@65MHz的分辨率下。
3.2 VGA驱动原理
VGA驱动本质就是在一定工作频率下,产生准确的时序关系包括:VS-垂直同步信号,HS-水平同步信号,消隐信号之间的关系。
在VGA显示过程中,完成一行扫描所要的时间为水平扫描时间,完成一帧扫描所需要的时间称为垂直扫描时间。每扫描完一行用行同步信号进行同步;扫描完所有行后用场同步信号进行同步。本文设计采用的是1024*768@65MHz模式。依据时序标准,每显示行包含1344个点,其中1024为显示有效区,320点为消隐区,每行的行同步脉冲低电平宽度为136个像素点;同理每场有806行,有效行为768,其中场同步脉冲低电平宽度为6行。
图2 逻辑设计整体框图Fig.2 Overall block diagram of the logic design
图3 行场扫描Fig.3 Field scanning
如上图所示,每一场的扫描都包含若干个行扫描,如此往复循环。
3.3 Alpha算法verilog实现
为了实现快速运算,这里将透明比例按2的N次幂来分级 (Alpha=1/256),同时进行了移位算法,式(1)、式(2)、式(3)变为以下公式:
代码一开始产生了2幅图片:vga_data_ff1为VGA水平驱动 vga_xpos与垂直驱动 vga_ypos乘积产生的分形图;vga_data_ff2为彩条图形,这是将VGA水平驱动vga_xpos分为8部分,分别对应黑、蓝、品、绿、黄、红、紫、白8种颜色。
然后对每个像素的RGB三通道分别进行alpha算法公式运算,叠加后生成16bit的红色通道的red_data,绿色通道gre_data和蓝色通道blu_data.
最后选取红色通道red_data低5位,绿色通道gre_data低6位,蓝色通道blu_data低5位组成RGB565格式图像送到VGA进行显示。
3.4 显示效果
显示效果如图4所示。由效果图可以看出本设计完美实现了实时的半透明图形的叠加,此时即可以看到分形图,又可以看到8条彩条,二者相互融合。
本设计即验证了Alpha混合算法的正确性,又满足了高清图像半透明叠加融合的实时需求。
图4 VGA显示效果Fig.4 VGA display
为解决高清领域中涉及到的图像实时叠加和半透明字幕滚动等问题,本设计利用FPGA并行处理的思想,同时对逻辑中设计到的浮点运算进行了移位操作,极大的提高了运算速度,实现了图像的半透明叠加效果的实时显示[6]。同时对实现多路高清视频叠加显示,也有很大的借鉴意义。
[1]高宏亮,刘彪,李龙龙.基于FPGA的图像采集和预处理技术的研究[J].机械制造自动化2013(13):72-75.GAO Hong-liang,LIU-Biao,LI Long-long.Based on FPGA image acquisition and pre-processing technology[J].Machinery Manufacturing Automation,2013(13):72-75.
[2]王旭东,王新赛,李坚.基于FPGA的视频图像叠加系统的设计与实现[J].电子技术应用,2007,(11):38-40.WANG Xu-dong,WANG Xin-sai,LI Jian.Design and implementation of FPGA-based video overlay system[J]Electronic Technology Applications,2007,(11):38-40.
[3]沈庭芝.数字图像处理及模式识别[M].北京:北京理工大学出版社,1998.
[4]朱富丽.MATLAB在数字图像处理技术中的应用[J].计算机光盘软件与应用,2010,(4):10-11.ZHU Fu-li.Application of MATLAB in digital image processing techniques[J]Computer CD Software and Applications,2010,(4):10-11.
[5]袁堂青,张玉瞞.基于FPGA的VGA汉字显示系统设计与实现[J].济南大学学报:自然科学版,2011(1):36-39.YUAN Tang-qing,ZHANG Yu-lin.FPGA-based VGA character display system design and implementation[J].Jinan U-niversity Journal:Natural Science,2011(1):36-39.
[6]周振波.VGA同步显示在LED大屏幕系统应用设计 [J].硅谷,2009(23):112.ZHOU Zhen-bo.VGA synchronous display LED large screen system application design[J].Silicon Valley,2009(23):112.
Alpha translucent algorithm based on FPGA hardware imp lementation
CAO Shan,LIU Ji-yong
(School of Electronics and Information Engineering,Xi’an Technlogical University,Xi’an 710021,China)
On the FPG pure verilog logic is adopted to accomplish the Alpha semi-transparent image superposition algorithm, namely the validity of the proposed algorithm,at the same time,aiming at the disadvantages of FPGA are not good at dealing with floating point arithmetic,adopt the method of the shift operation,further improves the operation speed,realizes the Alpha coefficient of transparent is adjustable,the real-time display of translucent image overlay,has a great practical value in the field of high-definition image display.
Alpha translucent algorithm;shift operation;high-definition images;real-time display
TN919.85
A
1674-6236(2015)10-0172-03
2014-09-15 稿件编号:201409136
曹 山(1988—),男,山东莱芜人,硕士。研究方向:数字图像处理FPGA实现。