4.1 数字图像采集
传统的电视信号的解码采用模拟的方法,将符合视频信号进行同步分离、模拟锁相及模拟解码,得到视频信号和各种同步时序信号,经过A/D转换得到数字图像数据,该方式受到A/D速度的影响采集速度受到很大的限制。随着大规模集成电路的发展,采用数字图像传感器可以实现对图像的摄取、预处理以及数字化等功能,同时提供系统所需要的控制信号以及时钟、同步脉冲等信号,大大简化了系统的复杂度,降低了系统成本,采集速度高,系统稳定可靠。同时由于数字图像传感器内置视频调节的功能,可以通过单片机发出控制指令自动调整图像的亮度、对比度、锐度、曝光时间等参数,免去了用户进行部分图像处理的工作,大大提高了系统的效率。
4.1.1 CMOS图像传感器OV7620
本系统采用的是OmniVision公司推出的CMOS彩色图像传感器OV7620,这是一种自带图像敏感阵列和A/D转换元件、能直接提供8/16位CCIR601、CCIR656等格式视频数字信号的彩色/黑白图像传感器,5 V电源供电,低功耗CMOS图像传感器,能同时输出数字和模拟视频信号。它具有自动增益、自动曝光、自动白平衡、边缘增强、伽玛校正等控制功能,可以通过I2C总线进行设置。其数据格式有YCrCb 4∶2∶2、GRB 4∶2∶2、RGB三种,采集图像最高速度可达60帧/秒,最大图像分辨率为644×492,通过I2C总线 可灵活改变其工作参数,以使其输出局部黑白图像信息,并实时调整对比度、白平衡、Gamma校正等参数。同时OV7620具有图像开窗的功能,允许用户根据实际使用需要设置有效图像窗口的大小,使其只输出该范围内的图像信息,其范围从4×2到644×492,并且窗口位置可以被放置在图像的任意位置,这对于采集特定范围的图像和提高系统速度有着重要的作用。
由于OV7620的开窗功能仅允许在数字输出方式下使用,考虑到采集速度和后期图像处理的难度,我们通过数字方式采集图像信息。
系统上电复位后,先由单片机I2C总线信号来对OV7620工作寄存器进行初始化,然后OV7620即可开始按要求输出图像信号,包括行同步信号HREF、场同步信号VSYNC、像素时钟信号PCLK和数字图像信号。
OV7620的管脚分布如下:

图4.1 OV7620管脚图
OV7620的同步信号时序如下,垂直同步信号VSYNC两个正脉冲之间为扫描一帧的定时,即完整的一帧图像在两个正脉冲之间;水平同步信号HREF为扫描该帧图像中各行像素的定时,即高电平时为扫描一行像素的有效时间;像素同步信号PCLK为读取有效像素值提供了同步信号,高电平时输出的图像数据有效。若当前图像窗口大小为320×240,则在VSYNC两个正脉冲之间有240个HREF的正脉冲,即240行;在每个HREF正脉冲期间有320个PCLK正脉冲,即每行320个像素。这就是VSYNC、HREF、PCLK三个同步信号之间的关系。7
当系统设置开窗功能后,HREF的宽度将发生变化,它仅在有效像素输出时保持高电平;而PCLK信号持续产生,恒定在13.5MHz,并不随输出图像尺寸的变化而改变。

图4.2 OV7620同步信号时序
4.1.2 FIFO存储器IDT7205
视频高速采集方案通常有三种。
第一种是双口RAM方式。由于双口RAM具有两套独立的地址、数据总线,可以同时对内存进行读写而不产生干扰,可以将视频信号从一个端口写入,另一个端口读出数据。双口RAM可以达到很高的速度,但由于大容量双口RAM价格昂贵,一般需要配合FPGA等才能实现[]16 ,所以并不适合本系统。
第二种方式是利用DMA进行高速存储。DMA,Direct Memory Access,即直接内存访问,是一种高速数据传输操作。它允许外部设备和存储器之间直接进行数据交换,而不需要处理器的干预,因此可以达到很高的速度。这种方式在具有DMA功能的DSP处理器中有着成功的应用[]17。
第三种方式是利用FIFO存储器。FIFO,First In First Out,即先入先出存储器。它没有地址线,写数据和读数据分别有独立的使能信号,可以同时对其中的内存进行读写,互补干扰。因为其没有地址线,所以数据只能够以先入先出的队列顺序进行读写,结构简单。
由于本次大赛规则中指定了处理器的型号,并且不得使用其他可编程器件,我们选用IDT公司出品的FIFO芯片IDT7205作为图像采集的缓存芯片。
IDT7205是8位的FIFO芯片,容量8192×9bit,存取时间最低至12ns,具有空、半满、满三个状态标志位,低功耗、+5V供电。D0~8为数据输入口、Q0~8为数据输出口,W和R分别为写时钟和读时钟,下降沿使能。

图4.3 IDT7205引脚示意图
4.1.3 图像采集电路
我们设计了一个图像采集电路,对OV7620的三个同步信号进行逻辑运算,使摄像头输出的数字视频信号自动地存入FIFO中。
首先通过I2C总线对摄像头进行初始化,确定其开窗的位置,出于处理器运算速度的考虑,在能够满足小车控制的前提下,我们尽量减少图像的大小。同时配置摄像头为黑白模式,在Y口输出灰度图像。
根据OV7620的时序(见图4-2),当VSYN的一个脉冲过后,OV7620开始送出一帧完整的图像,按照从左往右、从上到下的顺序送出8位的黑白图像数据。当HREF为高时,Y口上的数据为有效图像数据。
我们只需要通过一个与非门就能产生符合FIFO要求的写时钟脉冲,如图4.4。复位后V_EN=0,与非门关闭,输出1。VSYN脚接单片机输入口,当VSYN出现上跳后,单片机输出口V_EN为1,打开与非门。当摄像头输出有效像素时,HREF为高,PCLK高电平时像素数据有效,三者与非后输出为0,使信号产生一个下跳,触发FIFO将OV7620输出的图像数据存入RAM。

图4.4 FIFO图像采集原理示意图
经过该电路处理后系统时序如下,Write信号以完全符合FIFOW脚的时序要求,经实际使用,功能正常。

图4.5 图像采集电路时序
当一帧图像写入FIFO后,单片机即可从FIFO中读出图像数据,按照一定格式存入内存,进行后续图像识别的任务。图4-6为摄像头输出60×60像素的赛道图像,图像完整清晰,保障了赛道黑线提取的准确。

图4.6 60×60像素的赛道图像
4.2 基于图像处理的路径识别
4.2.1 目标黑线的提取
赛道信息获得的前提是将黑线和赛道底色区分开来,由于赛道仅仅包括黑和白两种颜色,对比度较大,我们可以使用实现较为简单的图像分割法,选取一个分割阈值,将灰度图像二值化。
虽然图像对比度较大,通常地使用一个固定的阈值也可以取得较好的效果,但出于比赛场地光线条件的不确定性和提高抗干扰能力的原因,应当根据获取图像的灰度直方图动态地计算出分割阈值,以提高对不同光照条件的兼容。
动态阈值的算法采用双峰法。将赛道图像建立灰度直方图,赛道黑线和白色跑道将行程两个山峰,如果将分割阈值选取在两峰之间,即可有效地获取黑线目标。实际应用双峰法得到的二值化图像如图4-7所示。

图4.7 动态阈值算法示意
4.2.2 赛道中心位置的提取
利用双峰法得到的分割阈值,我们可以区分开图像中每个像素是黑线还是白色[]19。鉴于图像中外界干扰不大,在绝大多数情况下可以准确地提取黑线,因此在赛道中心计算中我们使用了较为简单的重心法。
我们采集的图像分辨率为60×12,即共12行,每行60列,灰度数据存入VideoData[line][i]的二维数组内。我们将每行中的各列分配一个权重,即
y[SIZE_X]={
-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,
-20,-19,-18,-17,-16,-15,-14,-13,-12,-11,
-10, -9, -8, -7, -6, -5, -4, -3, -2, -1,
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18,19, 20,
21, 22, 23, 24, 25, 26, 27, 28,29, 30
}
式(2)
其中
为第line行黑线与中心位置的偏差;为每行第i列的权重;
,
即进行二值化。
由此提取出来的赛道中心线较为准确,且噪点对其影响较小,处理速度快,实际测试效果理想。
4.2.3 赛道趋势预测
为了获取更多的赛道信息,我们还对获得的12行赛道中心位置进行进一步的计算,用最小二乘法将赛道拟合成一条直线,得出赛道的性质和趋势,以供速度控制使用。
我们选取如图所示坐标系,原点为图像最远处的中心。

图4.8 最小二乘法拟合赛道示意图
令拟合的直线方程为xayb=+,则拟合残差可以表示为:
式(3)
已知和iyix,欲使残差最小,我们可以对a和b求偏导,并令其等于0,将先前所得的15个赛道中心坐标代入,经计算即可求得a和b,有:
式(4)
其中a为表示前方赛道的斜率,即车身与赛道之间的夹角;b为无穷远处赛道的偏差;![]()
为拟合残差的平方和,在直道和弯道情况下,该值会发生较大变化,可以用来判断前方道路的弯曲情况,以实现入弯判断条件。
表4.1 不同赛道下的道路参数


4.3 小结
利用FIFO芯片IDT7205,通过设计一个图像采集电路,我们能通过I2C总线实时地配置CMOS图像传感器,并实现了其数字图像信号的高速采集。
我们又使用双峰法计算出能区分每一帧图像中赛道黑线和背景的分割阈值,提取出赛道黑线,利用重心法求得图像中每行黑线中心的位置。通过最小二乘法将曲线赛道拟合成直线,得到了赛道进一步的趋势信息,为后续的赛车控制提供了充足的信息和依据。
上一章 模型车机械结构及调整方法 下一章 智能车控制策略的实现


