1 引言
机动车在夜间行车会车时,对面汽车车灯的强光会对驾驶员产生视觉盲区,从而引发严重的交通事故。为了彻底消除这种由于汽车晕光产生的交通隐患。
本文提出一种基于DSP和图像处理技术的抗晕光图像采集系统解决方案来解除夜间行车眩光。目前获取图像主要采用CCD和CMOS图像传感器,其中。CMOS图像传感器具有功耗小、成本低、单一电源驱动、使用寿命长、易于片上系统集成等特点,适用于抗晕光图像采集系统。本文提出抗晕光图像采集系统采用OmniVision公司推出的CMOS彩色图像传感器OV7620代替传统CCD图像传感器,该传感器可由软件编程控制,能直接输出数字图像信息,而且大大降低系统设计难度,减小系统体积,提高了系统设计的灵活性和稳定性。
2 系统硬件设计
本抗晕光图像采集系统是由图像采集和图像处理组成。其中,图像采集部分由两路OV7620图像传感器实现;图像处理则由TMS320C6414实现。EPM3128通过编程设置输出每个存储器地址。其系统框图如图1所示。
2.1 图像采集部分
在抗晕光图像采集系统中,TMS320C6414通过通用GPIO端口模拟I2C总线,设置OV7620的内部寄存器参数.使其完成相应功能。OV7620可提供00H~7CH共125个寄存器,用于控制传感器,可设置传感器的快门方式、积分时间、A/D转换器工作特性、伽马校正和开窗口位置、输出数据格式、帧频、像素时钟等参数。其中,直接影响像元积分时间的寄存器为曝光量控制寄存器、时钟预分频器寄存器和帧频调整寄存器。OV7620通常默认为I2C总线上的主器件,可将寄存器29的第6位置1,将其改为I2C总线的从器件,因此,I2C总线的主器件TMS320C6414可对0V7620写操作。
当TMS320C6414的引脚SBB为低电平,才能完成I2C总线初始化,此时OV7620作为从器件,支持400 Kbit/s的7位地址数据传输协议。将OV7620内部寄存器28的第5位置1即为逐行扫描方式;寄存器13、14的第5位置0即16位的YUV422-640x480像素的数字图像数据(高8位为亮度信号,低8位为色度信号);输出设置25帧/s。OV7620的视频时序电路产生行同步、场同步、混合视频同步等同步信号和像素时钟等内部时钟信号,EPM3128根据这些同步信号确定图像的读写操作以及相关处理。本系统采用单帧图像数据输出处理方式。
EPM3128通过I/O端口将IS6lLV51216的引脚CE、WE、LB、UB置为低电平,OV7620则将16位图像数据输入至IS6lLV51216。OV7620的内部控制位SRAM信号为高电平表示处于外部RAM状态,此时所有的数据总线变为三态并准备发送数据。OV7620向外部SRAM输出单帧图像数据的时序图如图2所示。
首先判断传感器的内部控制位SRAM,当SRAM为高时OV7620进入外部RAM,接着通过EPM3128发送初始化脉冲至AGCFN来获得一帧数据。但由图2看出移出的数据并不完全是有效图像数据,有效图像数据是由HREF(水平参考输出)、VSYNC(场同步信号)共同确定。因此需判断VSYNC是否为1且HREF上升沿是否到来。如果是上升沿则表明传感器开始输出有效数据。当HRFF=l时,像素时钟PCLK计数,并把计数值传输至外部SRAM的地址总线,同时将OV7620输出的图像数据DATA传输给SRAM的数据总线,对外部SRAM写操作;当HRFF=O时,计数暂停。OV7620发送完一帧数据后VSYNC=0,因此,可通过判断VSYNC是否为O来停止计数器计数并结束图像采集。
2.2 图像处理部分
TMS320C6414是TI公司推出的一款高性能数字处理器,具有强大的硬件结构和软件系统,可适用于抗晕光图像采集系统。TMS320C6414的L2容量为l024KB,通过cache配置寄存器(CCFG)的L2MODE字段把L2配置为第5种模式,即把片内SRAM设置为768 KB。TMS320C6414经EMIFA端口,以EDMA方式将图像数据同步读入内部SRAM。增强型直接存储器访问(EDMA)用于实时图像数字信号处理,可在CPU后台完成存储空间中的数据转移,把外部存储器中的图像数字信息快速、高效地传输到DSP内部SRAM中。设置EER控制寄存器的EVT4位为l,即采用EDMA的第4通道(EDMA4)采集图像数据。该通道配置为32位传输方式,每次中断搬移一帧图像数据存入内部SRAM。
为了同步采样,第一路OV7620的SRAMl和VSYNCl可通过与非门控制两路OV7620同步采样并分别存储到各自连接的IS6lLV51216中;VSYNCl下降沿标志OV7620一帧图像数据输出结束,VSYNCl经反向器接至TMS320C6414的AF5引脚触发EDMA4中断,并同时读取IS6lLV51216中存储的图像数据。CPU采用阈值化分割算法来处理图像信息。在TMS320C6414控制下同步进行图像信息的传输和处理,完全满足系统的实时要求。TMS320C6414外接40 MHz的晶体振荡器,CLOKMODE[l:0]设置为10,使其内部频率高达480 MHz。DSP通过I/O端口检测OV7620的同步信号VSYNC、CHSYNC以及像素时钟PCLK,保证DSP能够准确读取OV7620输出的数字图像数据。在同步信号和像素时钟的干预下保存采集的数字图像数据,保证传输数字图像的完整性。图3所示为第一路图像采集系统硬件电路图。
3 系统软件设计
在CCS(Code Composer Studio)编译环境下,采用C语言和线性汇编进行编程。计算机通过JTAG接口把编译成功的系统程序写到外部Flash中,使软件在硬件平台上高速、稳定、可靠运行。系统软件设计流程如图4所示。
TMS320C6414采用阈值化分割算法,即把第一路OV7620的曝光时间设定为1/50 s,将采集到的图像信息存储到存储器1中(通过EPM3128设置存储器l的地址最高位为0,即为0XXXXXXXXXXXXXXXXX);把第二路OV7620的曝光时间设定为l/l 000 s,把采集到的图像信息存储到存储器2中(通过EPM3128设置存储器2地址的最高位为1,即为lXXXXXXXXXXXXXXXXXX)。两路OV7620在TMS320C6414控制下同步采样同一景物,并设置亮度阈值为245。
TMS320C6414从存储器l中依次读取每一个存储单元的数值并判断其亮度值。如果该像素点的亮度值小于245,无晕光,则把该像素值和地址值暂存到DSP内部的SRAM中;如果该像素点的亮度值大于或等于245,并有晕光产生,则丢弃该存储单元数据,而从存储器2对应地址(0XXXXXXXXXXXXXXXXX换成lXXXXXXXXXXXXXXXXX)单元中读取像素值和地址值。存储完一行像素后。判断所有像素地址的起始位是否为l。若起始位为l,说明有晕光产生。此时取该像素值以及前后各3个像素值,共7个像素值求平均值,把平均值代替该像素值,直到该行像素处理完后输出;若起始位不为l,说明无晕光产生,直接输出像素值。若晕光在一帧图像的开头或者结尾产生,则只取符合条件的像素值求平均值。该算法可以根据具体采样的不同信息自由设置阈值大小,求平均值像素的总数,具有良好的灵活性。
采用索尼DCR—DVD808E数码摄像机及Plink数据采集卡,通过PC机采集单幅静止图像。第一次实验,相机曝光时间设定l/50 s的采集图像,汽车车灯亮度较强,产生晕光,所以无法分辨车灯外部轮廓以及车牌号,而光线相对较暗的远处人群可以看见;第二次试验,相机曝光时间调整为1/1 000 s的采集图像,亮度较强的车灯外部轮廓以及车牌号均可见,而远处人根本看不见。利用MATLAB对两幅图像进行阈值化分割算法仿真,阈值设为245,经过处理后的整体图像比较清晰达到预期效果。图5所示为MATLAB仿真图。