基于FPGA的图像增强视频处理系统
这里设计一个基于FPGA的实时视频图像处理系统,包含增强对比度扩展和色饱和度两种处理方法,相比于DSP和ASIC方案来说,FPGA在性能和灵活性方面具有绝对优势,应用FPGA设计视频通信系统更普遍。
1 原理和算法
图像增强处理可以在频域和空间域进行,典型的频域方法如直方图增强处理,适合于软件系统实现;而硬件系统更适合于空间域处理,因此本文所述的处理方法都将在空间域进行。
1. 1 对比度扩展
对比度扩展又称灰度变换,其目的是在拓展感兴趣的灰度区间的同时,压缩不感兴趣的灰度区间。最简单有效的方法是线性变换,满足以下关系:
![公式](http://m.amcfsurvey.com/editerupload/fetch/20140213/225947_1_0.jpg)
f(x,y)和g(x,y)分别表示输入图像和输出图像的灰度值。经过变换,线性拉伸了在a~b内的灰度值,同时对[0,a]和[b,255]灰度区间进行抑制。从显示设备的角度来说,一般民用级别的显示器都不具备完美表现256灰阶的能力,因此抑制过暗[0,a]和过亮[b,255]的灰度区间而增强中间区域的动态范围,可以避免灰阶的浪费。从另一个角度来讲,通常一幅图像所包含的过暗和过亮的像素点本来就是少数,有目的有针对性地扩展中间范围灰度而压缩两头的灰度,可增强图像质量,得到更好视觉效果,而图像信息的损失却很小。
1.2 色彩增强
色彩增强的目的是在保证颜色不失真的前提下,有针对性地增加图像的色彩饱和程度,使其看起来更鲜艳生动,层次感更强。
1.2.1 HSI模型简介
在彩色图像处理中,RGB、YCbCr、CMYK等是常用的色彩模型,其算法和相互间的转换很易用硬件实现,但是它们都不能很好适应实际上从人的角度来解释的颜色。
研究表明,从人的角度来观察一个彩色物体时,一般用色调、色饱和度和亮度这3个参量来描述该物体。色调描述纯色的属性,而饱和度给出一种纯色被白光稀释的程度的度量。亮度即图像的明暗程度,是一个主观的描述量。基于这3个参量建立的HSI彩色模型是开发基于彩色描述的图像处理方法的理想工具。下面简单阐述HSI模型的原理。
图1所示是一个RGB彩色空间的立方体模型,边长归一化为1,原点处为黑色,相对的顶点处为白色。连接黑白两点得到灰度轴,这根轴上的饱和度为0,即没有彩色分量。在灰度轴上有相同投影点的点具有相同的亮度,即垂直于灰度轴的平面内的点具有相同的亮度值。
![](http://m.amcfsurvey.com/editerupload/fetch/20140213/225947_1_1.jpg)
在立方体内任取一点P,它与灰度轴确定一个平面。根据颜色学的理论,所有颜色都是由位于那些颜色定义的三角形内的3种颜色产生的,在这个平面内,三角形的3个顶点分别是黑色、白色和P的颜色,而黑色和白色是不能改变色调的,所以这个平面内的点具有与P点相同的色调,即等色调面。直观地说,越靠近灰度轴的点,颜色越淡,所以色饱和度的定义就是该点与灰度轴的距离:距离越远,饱和度越强;距离越近,饱和度越弱;距离为0则饱和度也为0,这时就完全没有彩色。
实际上,用垂直于灰度轴的平面内的彩色点轨迹来表示HSI空间(等亮度面)。当平面沿灰度轴上下移动时,由于立方体边界的切割而构成的横截面所决定的边界呈三角形或呈六边形。这里以六边形为例,如图2所示。
![](http://m.amcfsurvey.com/editerupload/fetch/20140213/225947_1_2.jpg)
由图2看出,三原色是按120°分割的,青、品红和黄被称为二次色,也是按120°分割,一次色与二次色之间相隔60°。图中任给出一点Q,若以红轴作参考,则Q向量与红轴的夹角H决定其色调,而向量长度S决定其饱和度,整个平面在灰度轴上的位置决定了平面内所有点的亮度I。于是得到由RGB到HSI的转换关系:
![](http://m.amcfsurvey.com/editerupload/fetch/20140213/225947_1_3.jpg)
![公式](http://m.amcfsurvey.com/editerupload/fetch/20140213/225947_1_4.jpg)
1.2.2 色饱和度增强算法
HSI模型可以方便地对色调和饱和度进行调整,但是其运算比较复杂,很难用硬件来实现。不过根据其原理,可以直接在RGB空间进行色饱和度的调整。这里假设RGB立方体内任一点P(r,g,b),容易求出其在灰度轴上的投影点P*
![公式](http://m.amcfsurvey.com/editerupload/fetch/20140213/225947_1_5.jpg)
![色饱和度增强算法](http://m.amcfsurvey.com/editerupload/fetch/20140213/225947_1_6.jpg)
只要在P*P的延长线上找到合适的点(如P1或P2),就可以对P点的饱和度进行增强。由于已知P和P*的坐标,可以求得直线P*P方程:
![公式](http://m.amcfsurvey.com/editerupload/fetch/20140213/225947_1_7.jpg)
令式(6)的值为t,可求得直线P*P的参数方程:
![公式](http://m.amcfsurvey.com/editerupload/fetch/20140213/225947_1_8.jpg)
则色饱和度的调整就可通过调整t的取值来实现。当t∈(-1,0)时,得到的点在P*和P之间,饱和度减弱;当t>O时,得到的点在P*P之外,饱和度增强。
2 设计思路
2.1 对比度扩展
用硬件实现浮点运算效率较低,这里采用查表的方法,在YCbCr空间进行灰度变换,如图4所示。
![查表进行灰度变换](http://m.amcfsurvey.com/editerupload/fetch/20140213/225947_1_9.jpg)
2.2 色饱和度增强
色饱和度调整在RGB空间进行,设计为流水线操作,如图5所示。
![流水线操作](http://m.amcfsurvey.com/editerupload/fetch/20140213/225947_1_10.jpg)
色饱和度增强是有针对性的,对于不同色饱和度的像素要作不同的处理。可以把一幅图像的色饱和度分为4个等级,对于色饱和度低的像素进行增强处理,而对于饱和度很高的像素则不进行处理甚至是抑制处理。图5所示是进行2级的色饱和度调整的流水线操作:第1级令t=1,运算结果若溢出则转入第2级调整(t=0.5)。若运算结果还是溢出,则输出保持原输入值(iR,iC,iB)。流水线操作使得平均每个像素的饱和度调整只需1个时钟周期就能完成,只是输入相对输出有6个时钟周期的延时。为了达到更好的效果,可以增加饱和度调整运算的级数,后果是需要占用更多的硬件资源以及带来更长的延时。
3 系统结构
该实验平台为Ahera公司的DE2开发板。系统结构如图6所示。
![](http://m.amcfsurvey.com/editerupload/fetch/20140213/225947_1_11.jpg)
4 测试结果
用ModelSim对灰度变换模块进行仿真的结果,如图7所示。对色饱和度增强模块进行仿真的结果,如图8所示。
![测试结果](http://m.amcfsurvey.com/editerupload/fetch/20140213/225947_1_12.jpg)
视频图像测试对比效果如图9和图10所示。
![视频图像测试对比效果](http://m.amcfsurvey.com/editerupload/fetch/20140213/225947_1_13.jpg)
![视频图像测试对比效果](http://m.amcfsurvey.com/editerupload/fetch/20140213/225947_1_14.jpg)
5 结论
由实验结果可知,该方法能有效改善图像画质,提升视觉效果。色饱和度增强处理由于其算法的特点,用硬件系统很难做到实时处理。从基本原理出发,找到一种比较简便的,在RGB空间就能进行的色饱和度增强处理方法,在满足实时性要求的同时,能有效达到色彩增强的目的。但也是由于视频图像处理的实时性要求以及硬件系统实现的特点,该方法更多地讲究效率,某些细节部分还不够完善,比如色彩失真等问题。进一步研究重点可能就在于如何优化硬件配置以及解决算法中浮点
评论