《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于FPGA的实时图像预处理技术在汽车夜视系统中的应用
基于FPGA的实时图像预处理技术在汽车夜视系统中的应用
白秋果,李志刚,刘树亭
摘要: 针对红外图像的特点,提出了汽车夜视系统中图像增强的预处理方案。给出了基于FPGA的视频格式转换、快速中值滤波、自适应平台直方图双向均衡化的原理、实现方法及仿真结果。仿真结果表明本方案较好地满足了图像处理效果和处理速度的要求。
Abstract:
Key words :

    摘  要: 针对红外图像的特点,提出了汽车夜视系统中图像增强的预处理方案。给出了基于FPGA的视频格式转换、快速中值滤波、自适应平台直方图双向均衡化的原理、实现方法及仿真结果。仿真结果表明本方案较好地满足了图像处理效果和处理速度的要求。 

    关键词: 汽车夜视系统;FPGA;视频格式转换;中值滤波;自适应平台直方图双向均衡化

    汽车红外夜视系统作为辅助驾驶系统的一部分,在提高夜间驾驶的安全性方面起到了重要的作用。但由于受到红外器件发展的限制,其成像效果不够理想,影响了汽车红外夜视系统在实际中的应用。在系统中加入实时图像处理功能是最为经济有效的方法[1]。 

    为保持图像数据传输和处理的连续性,图像数据的处理不能导致图像数据传输的阻塞、中断或图像数据的丢失,因此实时图像处理系统必须具有快速处理巨大数据量的能力。FPGA以其硬件并行性、编程灵活性等特点,非常适合实时大数据量的处理。 

1 FPGA图像预处理功能设计

    针对红外图像噪声大、对比度低、图像细节分辨能力差等特点,采用了基于流水线方式的快速中值滤波方法滤除视频图像中的噪声,采用自适应平台直方图双向均衡化方法增强视频图像的视觉效果。同时为便于视频图像的处理,在图像处理前后对视频图像的格式进行了转换。 

    FPGA图像预处理功能如图1所示。 

 

 

2 视频格式的转换

    汽车红外夜视系统中,视频图像采集部分的摄像机输出的模拟信号经AD转换后变为符合ITU-R BT.656标准的YUV422格式数字数据流,其中行起始和结束标志融合在数据流中。为了使视频数据流的表示更加清晰,将其转换为MHIVF(Mitth?觟gskolans Interlaced Video Format)格式。在图像处理之后,再将其转换回ITU-R BT.656标准数据格式进行DA转换输出。ITU-R BT.656标准的YUV422格式数字视频数据流[2]和MHIVF的时序关系分别如图2和图3所示。 

 

 

 

    图2中Y表示亮度,Cb和Cr是色差信号。数据流中有两个定时基准信号:一个在每个视频数据块的开始(Start of Active Video,SAV),另一个在每个视频数据块的结束(End of Active Video,EAV)。每个定时基准信号由4个字的序列组成,格式如下:FF 00 00 XY(数值以16进制表示,FF00保留仅供定时基准信号用)。头三个是固定前缀,第4个字包含奇偶场标识、场消隐状态和行消隐状态的信息。定时基准信号内的比特分配如表1所示。 

 

 

注:(1)MSB:Most Significant Bit(最高位); 

     LSB:Least Significant Bit(最低位)。 

    (2)F=0 第1场;F=1 第2场。 

    V=1 场消隐期;V=0 其他处。 

    H=0 行起始处;H=1 行结束处。 

    (3)P0,P1,P2,P3为保护位,它们的状态取决于F、V、H的状态。在数据接收端,能够进行一位纠错和两位检错。 

    图3中pclk为像素时钟信号;ofsync和efsync分别为奇场和偶场同步信号,每场起始处第一个时钟周期高电平;rsync为行同步信号,行有效期间为高电平,行间至少一个时钟周期;pdata为像素数据。 

2.1 ITU-R BT.656转换为MHIVF的方法及实现

    监测到SAV标志到来时,rsync置1(维持一个时钟周期),ofsync和efsync视XY的具体值决定是否置1。同时对像素个数进行计数,如果累计值达到了一行像素的个数上限,则rsync置0,ofsync或efsync也置为0。等待下一行开始信号的到来,如此反复。同时由于系统主要应用在光照条件较弱的场合,采集黑白图像即可,因此后续图像处理只需要亮度信号即可,色差信号可以从数据流中去除。从视频数据流的第二个数据开始每两个数取一个便分离出了亮度信号,MHIVF中的像素时钟可以从对工作时钟的二分频得到。整个模块的功能在有限状态机(FSM)的协调下完成。模块结构如图4所示。 

 

 

2.2 MHIVF转换为ITU-R BT.656的方法及实现

    要完成MHIVF到ITU-R BT.656的转换,需要在视频数据流每一行的起始和结束位置分别添加SAV和EAV标志,同时应添加色差信号Cb和Cr。为实现上述功能,设置了四个8位寄存器和一个二选一选择器,由有限状态机FSM协调工作。具体实现过程如下:模块处于等待状态直到ofsync或efsync和rsync到来,然后视频数据输入到4个8 bit串行寄存器的第一个。因为SAV和EAV均为4 B,所以视频数据依次通过4个寄存器就相当于做了4个时钟周期的延时。在这4个时钟周期内二选一选择器选择FSM产生的SAV或EAV标志输出,这样就在数据流中加入了SAV和EAV标志。在二选一选择器和FSM之间设立握手信号,在添加SAV或EAV标志的同时,如果rsync有效,则二选一选择器选择FSM产生的Cb和Cr信号输出,同时改变握手信号,这样在下一个时钟的上升沿,如果rsync有效,二选一选择器会选择从寄存器传来的数据作为输出。如此反复,就实现了在数据流中添加色差信号Cb和Cr的功能。因为系统中使用的是黑白图像,所以为了简化设计,色差信号Cb和Cr的值均取十进制值128。模块结构如图5所示。 

 

 

    为了检验模块功能的正确性,将格式相互转换的两个子模块综合进行了仿真,得到了预期的波形,说明模块正确完成了预定的功能。仿真波形图6所示。 

 

 

3 流水线快速中值滤波 

3.1 快速中值滤波的原理

    中值滤波[3-4]是一种非线性滤波技术,它能有效抑制图像噪声、提高信噪比而保持图像边缘。它是一种邻域运算,把邻域中的像素按灰度级进行排序,然后选择该组的中间值作为输出像素值。如果采用3×3模板,则中值为窗口内排第五位的像素值。由于只需要取出中值,所以没有必要对窗口内的像素值进行全部排序。 

    将3×3窗口内的各个像素分别定义为P1、P2、P3、P4、P5、P6、P7、P8、P9,像素排列如表2所示。 

 

 

    在3×3窗口中共有9个数据,中值的特点是窗口中至多有4个数比它本身大,至多有4个数比它本身小。算法思想是逐步淘汰,整个过程中如果有两个数据相等,算法不受影响。具体过程如下:第一步将各行数据从小到大分别进行排序,并从小到大存放;第二步对三列数据分别进行排序。在第一列数据中取出最大值,第一列中的另外两个数至少有5个数比它们本身大,不可能为中值。在第二列数据中取出中值。对于第二列数据的最小值,至少有5个数比它本身大(本列中另外两个数和第三列中的三个数),不可能为中值;对于第二列数据的最大值,至少有5个数比它本身小(本列中另外两个数和第一列中的三个数),不可能为中值。在第三列数据中取出最小值,第三列中的另外两个数至少有5个数比它们本身小,不可能为中值。这样窗口中值的可能取值只剩下三种可能。对这三个数排序取中值即为窗口的中值。比较过程如图7所示。 

 

 

    本算法第一步的三行排序可以并行,第二步的三列排序也可以并行,整个过程只需要3个时钟周期。由于中值滤波要选取3×3的模板才能完成一个像素点的运算,所以对于一幅图像中的最外面一圈像素,无法生成3×3的模板。真正能够处理的像素点是从第二行第二列的像素点开始的。对于未覆盖的区域,本系统中采取的方法是用模板的中心值代替。 

3.2 快速中值滤波的流水线实现

    为了完成中值滤波功能,设置了三个模块:行列计数器模块、3×3模板生成模块、中值滤波模块。模块结构框图如图8所示。 

 

 

    行列计数器模块根据ofsync、efsync、rsync,利用模块内嵌入的计数器对当前像素所处的行数和列数进行标识。3×3模板生成模块对串行输入的图像数据流进行缓存,然后根据当前像素所处的位置调整模板中的数据输出。在模板和图像的相对滑动方面,本文采用固定模板滑动图像的方法,并针对此方法提出了一种缓存方案:利用FPGA内部的BlockRAM开辟两行加三个像素的缓存区域R,如果一行像素的个数为W,则R所占空间为2W+3(地址范围为[0,2W+2])。当有新像素输入时,R(2W+1)~R(0)依次赋值给R(2W+2)~R(1),新像素值存入R(0)。这种方法的优点是3×3模板的9个数与R中元素的对应位置固定不变,给操作带来了极大的方便。由于每个时钟周期都输出一组模板数据,如果中值滤波模块采用串行单次排序的方法,则在完成一次排序之前又会有两组数据到达,这就会造成数据的大量丢失,直接影响图像的质量;如果让模板生成模块每3个周期输出一组数据则会降低系统的运行速度。本文采用3级流水线处理方法,当流水线满负荷运转时,每个时钟周期都可以输出中值滤波的结果,极大地提高了吞吐量。 

    流水操作的中值滤波模块的仿真结果如图9所示。 

 

 

    采用TEXTIO方法读入由单帧图像生成的测试数据进行仿真。中值滤波前后的效果如图10和图11所示。 

 

 

4 自适应平台直方图双向均衡化 

4.1 自适应平台直方图双向均衡化的原理

    自适应平台直方图双向均衡化是在直方图统计的基础上,通过寻找统计直方图中的局部最大值和整体最大值得出适当的平台阈值,然后利用此阈值修正统计直方图,进而在灰度等级和灰度级间距两方面对直方图进行均衡化[3]的一个过程。算法原理如下: 

    首先统计图像的直方图,在统计图像直方图时为落在某一个灰度级上的像素点数设置一个合适的上限阈值(即平台值T),适度限制占有像素数较多的灰度级的空间拉伸。当某一灰度级的像素数大于平台值T,则统计的像素数置为T;当某一灰度级的像素数小于平台值T,则统计的像素数为实际值。因而统计直方图变为: 

    

    其中,m为表示图像灰度级的位数;k表示图像的灰度级,对于8位的灰度图像,0≤k≤255;T是平台阈值;P(k)是图像中第k个灰度级的像素数;PT(k)是图像的平台直方图。当选取的平台值T大于直方图的主峰值时,平台直方图均衡化演化为经典平台直方图均衡化;当选取的平台值过小时,增强图像细节的同时又会增强图像的背景和噪声,达不到预期的效果;因此选择的平台值必须小于统计直方图的主峰值而大于等于直方图中对应于目标的峰值。本文采用一种自适应求取平台值的算法,大大增强了系统的灵活性和适用性。 

    自适应求取平台值的具体算法[5]如下: 

    (1)统计原图像的直方图P(k),0≤k≤M,对P(k)进行3邻域一维中值滤波;然后选取直方图中的非零单元,构成集合{F(l)|0≤l≤L},L为P(k)中非零单元的个数; 

    (2)找出F(l)的局部最大值和整体最大值。对非零单元进行一阶差分运算: 

    F(1)(m)=F(m)-F(m-1) 

其中,1≤m≤L。找出F(l)中满足下列条件的F(li): 

    F(1)(m-1)>0,F(1)(m)≥0,F(1)(m+1)<0 

即F(1)(m)的符号在m处发生了变化(由正变负),则F(li)为局部最大值,其中0≤li≤L,0≤i≤N,N为局部最大值的个数。然后,由F(li)求出整体最大值F(lk)。 

    (3)求出子集{F(li)|k≤i≤N}中的均值F(lk),F(lk)即为估计的平台阈值。此处取子集{F(li)|k≤i≤N}的中值效果会更好一些,但考虑到子集中数据的个数根据图像的不同而不同,所以要实现排序非常繁琐,不利于实时实现。用均值代替中值,加快了运算速度,同时也取得了令人满意的图像效果。 

    计算出平台阈值得到平台直方图后,对灰度级数目进行统计。假设平台直方图的存储单元为S,灰度级数目为M,令M0=0,则: 

    

    上式完成对灰度范围内不为零的灰度级进行累加计算,从而获得有效的实际灰度级数。Mk表示累积直方图中第k级灰度之前(包括k)的灰度级数目,M2m-1即为处理后图像的实际灰度级数。 

    然后对这些有效灰度级进行重新排序,在整个灰度范围内作等间距排列,变换函数为: 

    

    Tk表示第k级灰度在新直方图中的灰度值,也即灰度值k经平台直方图双向均衡后要显示的新灰度值。 

4.2 自适应平台直方图双向均衡化算法的FPGA实现

    自适应平台直方图双向均衡化的硬件实现主要由直方图统计模块、平台值计算模块、平台直方图灰度级统计模块、灰度间距计算模块、灰度映射模块、控制模块组成,如图12所示。 

 

 

    平台值计算模块的结构框图如图13所示。 

 

 

    输入图像数据在读入的同时进行直方图统计,直方图数据存入由FPGA内部BlockRam后DistributedRam构成的ram1中,然后根据平台值计算模块计算出的平台值对统计直方图进行修正得到平台直方图,存放于ram2中。结束后,从ram2中读取数据统计实际的灰度级数,然后将这些灰度级均匀分布在要显示的灰度级上,从而减少了灰度冗余,使呈现图像更具层次感。最后进行灰度映射将映射关系存于ram3中,输入数据可根据灰度值查表输出。这样就完成了对图像的增强工作。其中灰度间距计算模块采用查表法,以灰度级数做为输入,将把这些灰度级均匀分布在256级灰度上的间距提前存入表中。查表只需一个时钟周期,较除法运算,速度大大提高。 

    采用TEXTIO方法读入由单帧图像生成的测试数据进行仿真。处理前后图像的效果及直方图如图14~图17所示。 

 

 

    快速中值滤波方法有效去除了图像中的噪声,而且很好地保持了图像的边缘,其流水线方式的实现极大地提高了系统的吞吐量。自适应平台直方图双向均衡化可根据图像的不同自动调整用以修正直方图的平台值,增强了图像对比度且保证了图像过渡自然。视频格式的转换使得这两种操作更加方便。图像的预处理将使得汽车夜视系统的成像效果得到极大的改善。 

参考文献

[1] 韩宝玲,黄贞华,何炜.新型汽车红外夜视系统的研究与开发[J].计算机测量与控制,2004(9):874-876. 

[2] 俞斯乐.电视原理(第6版)[M].北京:国防工业出版社,2005:95-145. 

[3] RAFAEL C.Gonzalez Richard E.Woods.数字图像处理(第二版)[M].北京:电子工业出版社,2003:59-112. 

[4] 李雷鸣,张焕春,张波.一种基于FPGA的图像中值滤波器的硬件实现[J].电子工程师,2004(2):48-50. 

[5] 王炳健,刘上乾,拜丽萍.红外图像实时增强的新算法[J].光电工程,2006(1):46-49

此内容为AET网站原创,未经授权禁止转载。