首页 理论教育 智能汽车图像传感器-智能汽车设计与实践基础

智能汽车图像传感器-智能汽车设计与实践基础

时间:2023-09-21 理论教育 版权反馈
【摘要】:CCD图像传感器1)原理介绍CCD图像传感器从功能上可分为线阵CCD和面阵CCD两大类,线阵CCD通常将CCD内部电极分成数组,每组称为一相,并施加同样的时钟脉冲。考虑到价格因素和实际应用需要,智能汽车上的CCD图像传感器选用的是线阵CCD。

智能汽车图像传感器-智能汽车设计与实践基础

图像传感器是利用光电器件的光电转换功能将感光面上的光像转换为与光像成相应比例关系的电信号。与光敏二极管、光敏三极管等“点”光源的光敏元件相比,图像传感器是将感光面上的光像分成许多小单元,将其转换成可用的电信号的一种功能器件。图像传感器分为光导摄像管和固态图像传感器。与光导摄像管相比,固态图像传感器具有体积小、质量轻、集成度高、分辨率高、功耗低、寿命长、价格低等特点,因此在各个行业得到了广泛应用。

图像传感器主要分为CCD(Charge Coupled Device,电荷耦合器件)和CMOS(Complementary Meta Oxide Semiconductor,互补金属氧化物半导体)两种。CCD特有的工艺,具有低照度效果好、信噪比高、通透感强、色彩还原能力佳等优点,在交通医疗等高端领域中广泛应用。CMOS传感器采用一般半导体电路最常用的CMOS工艺,具有集成度高、功耗小、速度快、成本低等特点,最近几年在宽动态、低照度方面发展迅速。

(1)CCD图像传感器

1)原理介绍

CCD图像传感器从功能上可分为线阵CCD和面阵CCD两大类,线阵CCD通常将CCD内部电极分成数组,每组称为一相,并施加同样的时钟脉冲。线阵CCD有单沟道和双沟道之分,其光敏区是MOS电容或光敏二极管结构,由光敏区阵列与移位寄存器扫描电路组成,特点是处理信息速度快,外围电路简单,易实现实时控制,但获取信息量小,不能处理复杂图像。面阵CCD结构复杂,它由很多光敏区排列成一个方阵,并以一定的形式连接成一个器件,获取信息量大,能处理复杂的图像。考虑到价格因素和实际应用需要,智能汽车上的CCD图像传感器选用的是线阵CCD。线阵CCD的核心是由一行光电二极管(每个光电二极管都有各自的积分电路,此电路统称为像素)组成的感光阵列,阵列后面有一排积分电容,光电二极管在光能量冲击下产生光电流,构成有源积分电路,那么积分电容就是用来存储光能转化后的电荷。积分电容存储的电荷越多,说明前方对应的感光二极管采集的光强越大,当光强接近饱和时,像素点灰度趋近于全白,呈白电平。由此可知线阵CCD提取信号是被动接受反射回的光线,因此采集的信号易受外界环境的影响。下面以TSL1401CL为例简单介绍线阵CCD的工作原理。

TSL1401CL线性传感器阵列由一个128×1的光电二极管阵列,相关的电荷放大器电路和一个内部的像素数据保持功能电路组成,它提供了同时集成起始和停止时间的所有像素。该阵列有128个像素,其中每一个像素具有光敏面积3 524.3μm2。像素之间的间隔是8μm,内部逻辑控制简单,只需要用串行输入信号(SI)和时钟信号(CLK)就可以实现。TSL1401CL的引脚功能如表2.1所示,工作时序波形如图2.1所示,操作波形如图2.2所示。

表2.1 TSL1401CL引脚功能

图2.1 TSL1401CL工作时序波形

在图2.1中,SI信号变为高电平后,可在每个CLK信号上升沿到来后进行数据的AD采样,即相应的AO引脚开始不断对外输出电压信号,一直连续输出了128个时钟周期,第129个周期用于结束本次采集。每个SI信号之后采集到的像素均是在SI信号之前曝光所得到的数据。前18个时钟周期是复位时间,不进行积分(曝光),这是因为电容在使用时已被充满,需要将其内部电荷全部释放。第19个CLK信号到下一个SI信号开始的这段时间(SI正脉冲和HOLD正脉冲之间的时间减去18个时钟周期)就是CCD的积分时间,即曝光时间。时序中需要注意以下几点:

①前18个时钟周期是像素复位时间,不进行积分(曝光),但是此时仍然可以进行采集。在每个SI信号之后采集到的像素均是这个SI信号之前曝光所得到的图像。

②每个像素的值可以在CLK信号的下降沿时从AO采集。

③单个像素点的采样时长为500 ns~0.2 ms,那么128个像素点全部采样时间为64μs~24.6 ms。

④在采集了128个像素后,还必须生成第129个CLK信号以结束本次采集。

图2.2 TSL1401CL操作波形

TSL1401CL曝光时间(积分时间)定义为第19个CKL信号到下一个SI信号开始的这段时间,器件具有最大曝光时间,设置曝光时间超过最大曝光时间是没有意义的做法。积分时间可被改变,光线越强,积分时间应越短,因此在不同的比赛场地应注意对积分时间的调试。增加曝光时间,则图像采集周期变长,系统反应能力变弱;相反的,减少曝光时间,图像可能变得模糊,不利于图像处理。即便如此,由于比赛的原因,线阵CCD需采集变化较快的图像,因此应尽量减少曝光时间。

如果竞赛环境各个方向的光线均匀一致,则可以在赛车出发前根据环境光线调节一个合理的曝光时间,以得到合理的输出,这样赛车就能采用一个固定的曝光时间跑完全程。不过由于赛道上方的灯光等光源影响,投射在赛道上的光线也并不均匀一致,因此需要动态调整曝光参数。自适应策略如图2.3所示。曝光量调节器用Kp乘以e(设定的曝光量减去实际曝光量)再加上上次的曝光时间作为新的曝光时间进行曝光。实际曝光量应该是一段时间和一定像素点强度的函数,一种简单的做法为取一次采集到的128个像素点电压的平均值作为曝光当量,设定的曝光量也就是设定的128像素点平均电压。

图2.3 自适应曝光控制

2)线性CCD赛道识别

线性CCD如果扫到白线AD值为一个较高的电压值(接近3 V),扫到黑线即为一个较低的电压值。为了准确判断黑线的位置以及减弱赛道上噪点的干扰,需将CCD采集的图像进行二值化处理,把模拟信号转换成0和1的二值信号,便于后期的数据处理。处于黑线上像素点的模拟量(灰度值)远远小于处于白线上像素点的模拟量,故选取处于黑线和白线两个模拟量之间的一个值作为阈值,灰度值大于该阈值为1,反之为0。虽然说二值化是为了呈现黑白图像,而赛道刚好就是黑白的,但考虑到现场光线的影响,黑线也可能因为反光识别成白线,因此对于阈值的确定还是要有所注意的;同理,若采用了动态曝光时间,也建议采用动态阈值。

图2.4 直道识别

①直道识别

赛道引导线处于赛道两边,在进行边缘检测时(即扫描像素二值化之后0和1的跳变沿),可通过从中心向两边扫描的方式实现(图2.4),从左右两边同时寻找从1跳变到0的像素点位置,具体过程为第64个像素点向第1个像素点扫描,得到左边引导线的位置L,第65个像素点向第128个像素点扫描,得到右边引导线的位置R,L和R符号相反。从中心到两边分别取值为64~1和-64~-1,赛道偏差E=L+R。由于线性CCD采回的数据在左右两个边沿不准确,所以左右各略去4个点,使用120个点的数据,此时60即为期望的中心值。当小车处于期望的赛道中心位置时,E=0;当赛车位置与期望中心出现偏差时,E可为正也可为负,通过一个方向PD算法就可以得到需要的转向值,来控制舵机转向。

②弯道识别

弯道识别与直道识别原理一样,当小车处于弯道时,L和R绝对值不同,两个值求和之后就可以计算出赛道偏差。由于小车驱动电机的反应具有滞后性,高速行驶于弯道时容易出现第64个像素点与第65个像素点同时落在黑线上的情况,如图2.5所示,此时从中心到两边像素点都没有从1到0的跳变,E就为0,从而出现丢线的情况。

图2.5 固定扫描中心丢线情况

为了避免这种情况的发生,采用浮动中心点的方法,即扫描并不是固定的从第64、65个像素点向两边进行,而是根据上一次的赛道偏差计算出本次扫描的起始位置。如图2.6所示,当小车处于左转弯时扫描起始位置向左移动,反之向右移动,这样可以很好地避免了因扫描中心点落在黑线上而导致的丢线。

图2.6 浮动扫描中心

(2)CMOS图像传感器(摄像头)

1)原理介绍

外界光照射像素阵列,发生光电效应,在像素单元内产生相应的电荷。行选择逻辑单元根据需要,选用相应的行像素单元,行像素单元内的图像信号通过各自所在列的信号总线传输到对应的模拟信号处理单元以及A/D转换器,转换成数字图像信号输出。其中的行选择逻辑单元可以对像素阵列逐行扫描也可隔行扫描。行选择逻辑单元与列选择逻辑单元配合使用可以实现图像的窗口提取功能。模拟信号处理单元的主要功能是对信号进行放大处理,并且提高信噪比。另外,为保证摄像头质量,芯片中必须包含各种控制电路,如曝光时间控制、自动增益控制等。为了使芯片中各部分电路按规定的节拍动作,还要求芯片能输出一些时序信号,如同步信号、行起始信号、场起始信号等。下面以OV7725为例介绍摄像头工作原理。

OV7725数字摄像头输出图像时,一般都是从左到右、由上到下逐个输出(部分芯片可配置输出顺序),如图2.7所示。有些摄像头有奇偶场,是采用隔行扫描方法,把一帧图像分为奇数场和偶数场两场(OV7725没有奇偶场之分)。图2.8是行中断时序图,图2.9是场中断时序图。

图2.7 OV7725摄像头输出图像顺序

2)图像采集

摄像头图像采集主要有以下四种方法:(www.xing528.com)

①使用for循环延时采集

需要采集图像时,开场中断,场中断信号有效时就开启行中断,关闭场中断;行中断里用for循环延时采集像素,可以在行中断里添加标志位,部分行不采集,即可跨行采集。行中断次数等于需要采集的图像行数时即可关闭行中断,标志图像采集完毕。这种方法最简单,也最常用,但也是采集图像最不稳定的方法,经常出现消隐区等问题。

图2.8 行中断时序图

图2.9 场中断时序

②使用场中断、行中断和DMA传输

需要采集图像时,开场中断,场中断信号有效时,开启行中断和初始化DMA传输;行中断信号有效时就设置DMA地址,启动DMA传输;如果需要过滤部分行不采集,则设置一个控制变量,每次行中断信号有效时,控制变量加1,根据控制变量值来选择采集或不采集某些行。每个PCLK信号上升沿有效时都触发DMA传输,把摄像头输出的值读取到内存数组里,当触发n次(n=图像列数目)后就停止DMA传输。行中断次数等于一幅图像的行数,或者下一个场中断有效时就结束图像采集,关闭行中断和场中断。该方法如果不用DMA传输,直接用for循环延时来采集也可以实现,也不需要用PCLK信号。不过延时值需要设置合适,否则不是采集到消隐区,就是只采集图像的左边部分。

③使用场中断,DMA传输

需要采集图像时,开场中断,场中断信号有效时,初始化DMA传输,并启动DMA传输;每个PCLK信号上升沿有效时都触发DMA传输,把摄像头输出的值读取到内存数组里。当触发n次(n=图像像素数目)后就停止DMA传输。DMA停止传输时触发中断,中断里关闭场中断,图像采集完毕。或者等待下一个场中断有效时才关闭场中断,标记图像采集完毕。

OV7725的最高帧率为150帧,理论上摄像头的帧率越高越好,但在实际的使用过程中,并不会使用到那么高的帧率,因为图像的解压需要一定的时间,同时还要考虑到其余代码的运行时间。如果取完150帧的图像,就要求在6.67 ms之内完成对图像进行解压、循线及其他一些程序的运行,这对微处理器的主频要求较高,因此在实际的使用过程中,需要根据程序运行时间和需求合理进行摄像头帧率配置。

3)摄像头图像处理

单片机采集到的原始图像信息并不都是有用信息,需要通过软件处理,滤除干扰信息,提取主要的赛道信息。以OV7725为例,图像采集采用DMA方式将硬件二值化后得到的整幅图像数据存入单片机,然后解压成160×120的数组,该数组便代表着一帧图像的信息,如图2.10所示。

图2.10 摄像头一帧图像图示

在图像信号处理中需要提取的赛道信息主要包括:赛道两侧边界位置、赛道中心点位置以及不同赛道类型的判断。采集到赛道图像后,采用循线算法进行处理,确定出赛道两侧边界位置,并计算出对应的赛道中心线位置,从而引导舵机转向和电机的加减速。循线算法的基本思想如下:

①循线首先从离车头最近的第119行开始,找到每一行的左右边界,至第21行结束,第20行到0行的图像畸变过大,不作为循线依据。

②左边界是从上一行中心的列(119行从80列开始)开始,向左边逐列搜索,直至找到最近的由白点跳变到黑点的列(硬件二值化处理后,像素点只有黑点和白点),该列即为该行的左边界。如果该行找不到左边界,则认为该行左边界值为0。

③右边界是从上一行中心的列(119行从80列开始)开始,向右边逐列搜索,直至找到最近的由白点跳变到黑点的列,该列即为该行的右边界。如果该行找不到右边界,则认为该行右边界值为159。

④对于每一行的中心点,该行中心点为该行左右边界值的平均值。

4)摄像头选型

循迹传感器是智能汽车进行路径识别的关键检测元件,选择一款好的循迹传感器有助于提高车模运行的整体性能,对于摄像头的选择,主要考虑7个参数:芯片大小、自动增益、分辨率、最小照度、信噪比、标准功率、扫描方式。市面上的摄像头主要分为模拟和数字两种,模拟摄像头主要有OV5116、BF3003、MT9V136等,数字摄像头主要有OV7620、OV7670、OV7725等。大多数摄像头都支持SCCB通信,可以很好地实现单片机与摄像头之间相互通信。

全国大学生智能汽车竞赛比赛环境干扰较小,对图像的分辨率要求并不高,但是对动态特性要求非常高,特别是车模在高速行驶入弯或者出弯的时候,图像变化较大,这就对摄像头的自动增益有较高的要求。一般来说,在图像发生突变时,感光芯片本身会有一段适应时间,这段时间要求越小越好。

综合前14届比赛情况,常用的摄像头类型有以鹰眼为代表的硬件二值化摄像头OV7725,以及以总钻风摄像头MT9V032和数字摄像头OV7620为代表的灰度摄像头,还有少部分的队伍使用了模拟摄像头OV5116。其中,有超过一半的队伍使用了鹰眼摄像头(OV7725),其次是总钻风摄像头(MT9V032),还有一小部分的队伍使用了数字摄像头(OV7620)和线阵CCD(TSL1401)及模拟摄像头OV5116,使用其余型号摄像头的队伍数量基本可以忽略不计了。

在第十四届全国大学生智能汽车竞赛规则中,对比赛场地光线要求放宽,不再要求遮光,导致赛道干扰因素增加,因此在第十四届竞赛中大部分队伍使用的是灰度摄像头,但灰度摄像头对图像的处理算法以及单片机的主频都要求较高,需要压缩赛道元素处理时间。虽然OV7725在光线分布不均匀或强光斑时处理赛道元素存在较大的缺陷,但其对于场地光线分布均匀,无论是均匀暗光还是均匀强光,其处理效果和速度都比较好。目前大部分比赛场地为体育馆,场地光线一般不会出现大面积光斑直射赛道情况,OV7725信噪比高、速度快、稳定性好、微光灵敏度更高,因此OV7725仍然是较好的选择。竞赛中,摄像头的帧率是十分重要的,因为车模运行速度达到一定值后,图像变化很快,帧率低会导致道路实时性差,不能及时刷新赛道信息,会影响车模提速。OV7725的最高帧率可以设置为150帧,完全满足竞赛要求。同时,硬件自动进行全局域二值化,不占单片机处理资源,节约MCU运算时间。当然,硬件二值化会丢失部分信息,导致在复杂场景可能无法进行正常判断与识别。

(3)MT9V032灰度摄像头

MT9V032灰度摄像头在信标组用得比较多,下面介绍其工作原理。MT9V032的有源像素阵列是752 H×480 V,它在芯片上集成了先进的相机功能,例如2×2和4×4像素着色功能,提高在较小分辨率下工作时的灵敏度以及开窗、列和行镜像。这项功能可以通过简单的双线串口编程实现。MT9V032可以在其默认模式下运行,也可以针对帧大小、曝光、增益设置和其他参数进行编程,默认模式以每秒60帧(fps)的速度输出VGA大小的宽图像。片上模数转换器(ADC)为每个像素提供10 bit分辨率,用户也可通过使能设置为12 bit分辨率,来为图像较暗区域提供更精准的数字化。除了传统的并行逻辑输出外,MT9V032还具有串行低压差分信号(LVDS)输出。MT9V032结构框图见图2.11。

图2.11 MT9V032结构框图

MT9V032的像素陈列配置成782列乘492行,如图2.12(a)所示。左侧的26列和上方的8行像素为光学黑色,用来监测传感器的黑色等级。黑色行数据在内部用于自动黑电平调整。但是,通过将传感器设置为原始数据输出模式,也可以读取中间的四个黑色行。有753列乘481行的光学有源像素。有源像素被光学透明的虚拟行和列包围,以提高有源区内的图像均匀性。像素颜色图案调节如图2.12(b)所示。

MT9V032的图像数据可以按照逐行扫描或者隔行扫描方式输出。有效的图像数据被水平和竖直的空白行包围,如图2.13所示。水平和竖直方向的空白行数可以通过改写寄存器0x05H和0x06H来设置。当输出图中阴影部分时,芯片输出的LINE_VALID信号为高电平。

图2.12 MT9V032像素阵列描述图

图2.13 图像读出的空间展示

MT9V032的像素信息时序如图2.14所示,MT9V032的数据输出和PIXCLK信号输出同步,当LINE_VALID信号为高电平时,每个PIXCLK周期有一个10 bit的像素数据输出。PIXCLK信号通常是时钟信号(SYSCLK)的翻转,PIXCLK可以用作锁住数据的时钟。当数据分箱功能启用时,每一个(column bin为2时)或两个(column bin为4时)主时钟周期,PIXCLK才翻转一次。PIXCLK信号是连续的,即使是在空白数据期间(blanking period),设置寄存器0x74的第四位为1,也可以翻转PIXCLK信号。行和帧的时序关系如图2.15所示,其中,A为活动数据时间,Q为水平消隐时间,P1为帧开始消隐时间,P2为结束消隐时间。

图2.14 像素信息时序

图2.15 行有效和帧有效的时序关系

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈