摄像头组硬件二值化讲解.docx

上传人:b****4 文档编号:4275845 上传时间:2023-05-06 格式:DOCX 页数:19 大小:309.01KB
下载 相关 举报
摄像头组硬件二值化讲解.docx_第1页
第1页 / 共19页
摄像头组硬件二值化讲解.docx_第2页
第2页 / 共19页
摄像头组硬件二值化讲解.docx_第3页
第3页 / 共19页
摄像头组硬件二值化讲解.docx_第4页
第4页 / 共19页
摄像头组硬件二值化讲解.docx_第5页
第5页 / 共19页
摄像头组硬件二值化讲解.docx_第6页
第6页 / 共19页
摄像头组硬件二值化讲解.docx_第7页
第7页 / 共19页
摄像头组硬件二值化讲解.docx_第8页
第8页 / 共19页
摄像头组硬件二值化讲解.docx_第9页
第9页 / 共19页
摄像头组硬件二值化讲解.docx_第10页
第10页 / 共19页
摄像头组硬件二值化讲解.docx_第11页
第11页 / 共19页
摄像头组硬件二值化讲解.docx_第12页
第12页 / 共19页
摄像头组硬件二值化讲解.docx_第13页
第13页 / 共19页
摄像头组硬件二值化讲解.docx_第14页
第14页 / 共19页
摄像头组硬件二值化讲解.docx_第15页
第15页 / 共19页
摄像头组硬件二值化讲解.docx_第16页
第16页 / 共19页
摄像头组硬件二值化讲解.docx_第17页
第17页 / 共19页
摄像头组硬件二值化讲解.docx_第18页
第18页 / 共19页
摄像头组硬件二值化讲解.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

摄像头组硬件二值化讲解.docx

《摄像头组硬件二值化讲解.docx》由会员分享,可在线阅读,更多相关《摄像头组硬件二值化讲解.docx(19页珍藏版)》请在冰点文库上搜索。

摄像头组硬件二值化讲解.docx

摄像头组硬件二值化讲解

CCD图像检测<二>

作者:

一点一滴的Beer  指导教师:

ChenZheng 单位:

WHU

 

二、黑白图像检测的硬件设计 

2.1 电源提供。

 

 

图6:

 CC的D12V电源电压源 

  因为小车的电池电压为7.2V,而CCD摄像头的工作电压为12V,故需要利用芯片搭建升压电路,如图6所示。

2.2 视频信号行场同步信号分离。

 

 

图7:

视频信号行场同步信号分离电路 

   视频信号每场是是不同的行组成,如图5所示,场与场之间,行与行之间都存在同步信号,单片机通过对这些同步信号的捕捉,来控制图像采集的时序,保证图像采集的正确性。

视频信号分离芯片LM1881能将视频信号中的行同步脉冲、消隐脉冲和场同步脉冲提取出来,并将它们转换成数字信号交给单片机的I/O口。

视频信号分离电路如图7所示。

2.3 行视频信号数字化。

 

   由于模拟摄像头采集的图像信号为模拟信号,而计算机系统为离散的数字系统,故需要转换为数字信号才能交付MCU处理。

大赛组委会所推荐的芯片XS系列片内集成了8路AD口,同时还具有丰富的IO接口资源,而且大赛中小车赛道色彩构成的简单性,使得视频信号数字化方案变得多样化。

小车以模拟CCD摄像头为传感器,模拟式的采集先将一路视频信号引用图2电路,通过其可以将摄像头输出的复合视频信号进行分离,得到独立的同步信号和视频模拟量信号,然后通过逐行采样来完成整幅图像的采集。

下面主要介绍三种对行信号的数字化的方法。

2.3.1片内AD模块。

 

   由于XS128本身就含有8路AD,故只需引入一路视频信号至任意一个AD口,然后软件上,先对AD口进行相应的初始化,再在行同步中断函数中执行以下代码即可完成数字化:

for(i=0;i

{

while(ATD0STAT0_SCF!

=1);//AD转换等待

*g_video--=ATD0DR0L;//寄存器读取

}

   此方法的优点在于,不需要进行额外的外围电路设计,直接引入视频信号,利用XS128的片内资源进行AD转换即可得到图片灰度数据。

XS128在超频到64M的情况下,能每行采集96个点,如果对图片横向精度要求不高,选择此方法最为简单。

但如果CCD看得比较远,由于图像的几何畸变,会造成远方的黑线最后AD结果只有一个黑点,这样在黑线提取时造成了较高的误判率,此时此方法就不再适用。

  

2.3.2基于TLC5510的8位并行AD。

 

   为了每行信号得到更高的采样精度,在XS128还有多余的IO口前提下,我们可以考虑用片外A/D法。

TCL5510为一款8位并行高速AD转换芯片,如果采用独立时钟其AD速度能达到20MSPS,然后将数字信号通过8位数据总线并行输出,直接引入到XS128的一组IO口上,在软件设计上只需对此IO口进行读取即可获得数字信号。

相应AD转换电路如图8。

图8:

片外AD转换电路 

   芯片对端口进行读取时,为了防止读取到AD转换的跳变沿,故需要进行时钟同步,XS128含有8路PWM输出,通过对一路PWM进行翻转输出一定频率的脉冲,即可模拟一个同步时钟信号至片外AD模块,较方便地解决了时钟同步问题。

在实际情况下,XS128超频到80M时每行能采集240个点,从而远方黑线消失的现象能得到很好的解决。

   除了采样精度高,更重要的是此方法保存的是灰度信息,能极大程度上防止了图像信息丢失,但是外围电路比较复杂,而且占用了较多的IO口资源(需要XS128额外提供一组8位的IO口进行数字信号读取)。

   如果采集的点比较多,对RAM资源不丰富的XS128来说是个灾难。

 

2.3.3基于电压比较器的硬件二值。

 

   以上两种方法最后得到的都是图像的灰度数据,能够比较逼真地反应CCD所见情景。

但是由于大赛中,赛道仅由黑白两色组成(如图9),所以即使是灰度数据,我们最后处理时也一般要在软件上进行二值化将图像分割成黑白二色图片。

所以,我们可以考虑直接用硬件进行图像二值化,将视频信号转换为一组方波信号,然后直接输入到一位I/O口中,对这一位的端口进行读取,高电平表示1,低电平表示0。

2.3.3.1硬件二值电路 

   在软件上对灰度图片进行黑白分割时,有两种方法:

   固定阈值法,即高于此阈值电压,即认为是1,否则是0,然后再通过软件进行黑线边缘检测。

  直接通过边沿跳变法来检测黑线边缘,即两个相邻点之间灰度值相差一定时,表示到了黑线边缘。

  以上两种方法都能通过电压比较器电路实现。

分别如图10和图11。

图9:

智能车赛道色彩构成 

图10:

固定参考电压二值电路 

图11:

边沿检测的二值电路 

采用固定参考电压的二值电路设计起来比较简单,对参考阈值电压调结也比较方便-只需调结一个电位器阻值即可(为系统增加一个LCD,可直接在调结电位器后采集到的图像),故具有一定的场地适应性。

但在实际使用过程中,我们发现采用固定参考电压的二值电路在CCD视野比较远时,仍然会出现图像无法分割的现象,此时该方法不再适用,故可以考虑采用边沿检测的二值电路。

边沿检测二值电路中,将原始视频信号和滞后处理的视频信号输入到电压比较器两端,在视频信号跳变边沿会在两路输入产生幅度差(如图12),然后当幅度相差到一定程度(由滞回电路控制)时,电压比较器输出端便发生电平翻转,最后以方波形式输出视频信号(如图13,注:

第一个低电平区为行同步区,第二个为黑线区)。

 

图12.原始视频信号(绿色)

和滞后处理的视频信号(黄色)

图13.原始视频信号(绿色)

和输出方波信号(黄色)

 

 

 

2.3.3.2电路中元件参数的整定。

 

   首先我们对一般的RC电路的时间常数进行了解,如下面所陈述:

图14:

普通的RC电路 

  电容两端的输出电压和电源电压的关系如下:

   电压上升幅度和上升时间(滞后时间)对应关系如下:

T(/RC)

1

2

3

4

5

UC/US

0.632

0.865

0.95

0.98

0.993

表一:

滞后时间表

   黑线的视频信号时间为3~4µs(R2=1.3K)

图15:

赛道中央黑线产生的视频信号

   一般为了获得两组视频信号在同样的时间轴点时获得最大的电压差,就要求,滞后信号尽量滞后。

但也不能太滞后。

比如以下情况:

(R2=6.4k)

图16:

当R2比较大时的滞后输出信号 

   下面是几张不同滞后电阻时的视频信号输出图:

 

1.3K的滞后电阻

3K滞后电阻

6.4的滞后电阻

 

图17:

电路在不同滞后电阻下的输出波形 

   那么我们计算出一个大致R2 的参考值。

   我们要求在黑线区,滞后信号时间刚好为一个黑线视频信号的时间,也就是大概3~4µs,在保证在下一次上升沿到来前已经达低谷,以保证上升沿的电压差。

   如表一,大概t=3~5倍RC,我们就可以认为电压已经到了最值。

那么,要求滞后视频信号能在T0 =3~5个RC内能够达到最值,而T0<3~4µs.大致算一下:

3*10-6=4*R2*510*10-12

  得到R2=1.47K能在3µs时间后,电压达到原始跳变点的0.98

  得到R2=1.96K能在4µs(刚好是一个近处的黑线视频信号的宽度)时间后,电压达到原始跳变点的0.98

   所以,一般R2就取其中的某个值。

在实际中,配合LCD,调节R2电位器,结果发现R2=1.85K时有比较好的效果,符合理论计算结果。

  关于R4参数的确定方法。

参考:

图18:

滞回电压比较器I/O电压图 

   滞回电压Vh=R4/(R4+R5)*(Vo_max-Vo_min)

  因为黑线边缘产生约400mV跳变(由示波器上很容易看出),

  所以,滞回电压选择为100-400mV

  实验中,将R4设置为4.5K,产生215mV的滞回电压,一方面能比较好的搞干扰,一方面,使黑线不至于过细

2.3.3.3硬件二值的特点。

   采用边沿检测电路,通过对两个电位器大小的调整,便能适应不同比赛场地光线,而且能适应CCD的不同视野,具有较强的图片分割能力,具有更强的场地适应性。

而对比片外AD,此方案具有以下优点:

1.电路设计更简单。

2.占用芯片IO口只有一位,为片外AD的1/8。

3.不用考虑时钟同步的问题。

4.横向精度可以视为无限(因为直接以模拟电平信号输入,由MCU的一位端口对电平读取),在满足要求的情况下,MCU不用超频甚至还需要分频,8M频率读端口便能每行采集120多个点,所以不会存在当视野比较远时出现黑线断开的现象。

5.采用硬件二值,直接对图片进行了正确有效的分割,减少了CPU的运算量,增加了分割的可靠性。

   显然,因为以上优点使得硬件二值的检测方案对于色彩简单的赛道环境拥有极大的优势。

但是此方案的检测方式也存在局限性,对纵向的黑线检测具有比较高的准确性,但是在小车运动时对于横向黑线检测会出现不稳定现象(即有检测方式问题,也有CCD本身问题,也和采样行的选择有关系),最明显的是对十字交叉线和起跑线的区分,在检测十字交叉线时,因为CCD摄像头安装方式和球面镜头本身原故就会存在一定的失真,使十字线横向线呈弓形(远处为外弓箭形,近处为内弓箭形)

 

 

图19:

用AD模块采集到的正常的十字线和起跑线

图20:

十字交叉线的检测问题

图21:

起跑线的检测问题

   如果出现以上状况,那么起跑线的检测就变得相当困难(基本没法正常检测):

一方面有来自十字交叉线的干扰,另外一方面也因为起跑线本身检测的不稳定。

于是我们为了解决起跑线问题,额外用AD采集了近处的10行(因为是近处,所以对行的精度要求不高,可以占用较少的内存),单独作为起跑线判断依据。

2.3.3.4硬件二值的应用展望。

   硬件二值最大的特点是:

输出的是模拟TTL电平信号,而这种信号是MCU所能处理和识别的电平信号,这就给硬件处理图像提供了很大的发展空间。

图像采集的主要问题就是精度和保真度。

保真度和采集方法有关,而精度的提高则很大程度上受到芯片RAM资源的限制。

在采用硬件二值进行采集时,图片会无法避免的造成一定失真,但是却基本能满足用户需求,故展望之处可以从提高采集精度上着手。

当摄像头视野比较广时,如果采样行比较稀疏,那么,会造成数据的大量丢失,严重时甚至会出现同一图片中黑色引导线不连续的情况,这对黑线提取是极其不利的。

下面介绍两种方法来提高精度,分别是硬件层面和软件层面,供大家参考。

硬件层面:

(1)将硬件二值后的视频信号直接进入单片机的输入捕捉模块,用硬件来提取我们关心的一些信息,然后再对这些数据分析计算出对自己有用的信息,这样一方面硬件为我们承担了一部分的数据处理,另外一方面,使记录一行视频信号所用的数据变得很少,这对高主频但是却低RAM的XS128芯片来说是个很好的消息,这样我们可以在RAM一定时可以极大提高采集的图像的纵向精度。

用HCS12单片机输入捕捉来对微分电路视频输出进行捕捉,检测到跳变时,就计录当前的TCNT,然后存储在一个数组中,显然,这样一行在理想智能汽车赛道中,最多10个,就如以下情况(而且发生的可能极小----三条赛道并行,而且不还有一条起跑线,而且CCD的视角把它们全部拍摄进去了)。

图22:

理想赛道环境时的极限情况

图23:

实际赛道环境

   在实际的赛道中,一方面有来自交叉赛道的黑线正常干扰,另外一方面有来自光线的干扰,特别是赛道边缘地带,会有些杂乱的干扰信号,这个对硬件边缘检测计数是极其不利的。

在用软件处理时也同样有这样的问题,这个问题是用部分搜索来解决的。

因为在近处,CCD因为视野原因,正常情意下基本上不太可能看到赛道外部,于是这样就能确定起始搜索列的位置,然后逐步递推上去在一个小范围内搜索,当然还有些其它容错的思想在此不再赘述。

在硬件层面上,同样也能实现逐步搜索:

在第一行信号进入时,根据上一行的中心,来对视频信号检测时机进行适当延时,跳过干扰地带后,再对跳变点进行检测。

当本行信号检测完毕后,或者,检测的跳变点超过一定数目后,就停止本行检测,再对下一行检测。

   一行只而要以一个大小为10左右的数组就能存储到此极限情况下的有用(边缘跳变)的信息,对于一般存在边缘干扰的情况,通过局部搜索的做法,用10个数据也能存储本行的有用信息。

这样,受储存空间限制而无法提高图像精度的矛盾就解决了,以前4K只能存储横向96列的点列40行,现在可以存储新的点列的行数甚至可以达到320行以上,而CCD的行视频信号只有320行,所以采集多少行已经没有多少意义了。

更重要的是,它能把中心用硬件提取出来,我们要做的只是在软件上进行容错和判断即可。

而且,这样做,横向的分辨率也没有了意义了,因为16位的TCNT计数,远方的黑线不论有多细,只要CCD能在CRT显示器上看到,用TCNT也一定能记录下来,所以,基本上不存在远方黑线的宽度过小甚至消失的现象.

软件层面:

(2)利用新的数据结构,用时间换空间,这样在不采用计数器也能利用有限的空间存储更多的数据,这样就自然提高了图像采集的精度。

将开关量存储在一个位结构数组中,每8个开关量可以存储在一个位中,于是横向存储空间节省了7/8,这样,可以提高纵身精度和横向精度,但这是以牺牲MCU的计算量为代价的,因为XS128不支持位寻址,所以对图片bit的存取效率会变为原来直接对byte存取的1/3,就是不知道这个牺牲能不能忍受。

如果能忍受,图片在4K的空间下,可以存储160横向分辨率的图片200多行。

这个是以时间换取空间,以前片内AD也试过,当时受限于XS128内部的AD频率,而导致图片bit的存储大大影响了AD转换,所以一行还是采集不到96个点。

但是用硬件二值,就不存在AD等待时间,目前8M的频率读取,可以每行采集120个点,如果将频率提高一些,就能够弥补位结构存储时所占用的时间了。

所以采集上理论上不会存在问题。

位结构数据类型如下:

 

代码

 

 

   像操作结构体一样去操作位,然后逐位存储开关量。

此方法有一个缺点:

运算效率低。

因为HCS12系列芯片都不支持位寻址,所以,在对位进行存取时,实际操作还是先读一字节8位,然后再和相应的数据进行位运算提取某一位的数据,这样,数据读取的效率就变得很低了。

所以这是一个以时间换取空间的方法,具体在实际中能否应用,就要看它实际应用时的优和劣的对比了。

2.3.4几种方案比较。

采集方法

优点

缺点

片内AD

电路设计简单,直接利用芯片内部集成模块,采集到的图像失真度小。

图像横向精度难以提高,在处理时会有图像阈值分割的困难。

片外并行AD

采集图像失真度小,而且精度可以满足用户需求。

占用I/O资源过多,电路设计比较繁琐,而且最终也会有图像分割的问题。

硬件二值

采用硬件将图片分割,输出为TTL电平,精度可认为是无限的。

将外界信息直接二值化后交付芯片处理,意味着图片的很多信息的丢失。

同时,在小车运动状态下,采集横向黑线会出现不稳定的现象。

作者:

一点一滴的Beer 

Email/Gtalk:

dreamzsm@ 

出处:

 

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,请尊重作者的劳动成果。

标签:

 电子技术

 

这个帖子时自己当时参加比赛时,

调试硬件二值化电路发的,

当时想利用硬件二值化的优势,

在上一届的基础上进一步提高成绩,

在调试时发现,

当车静止时,采集到的赛道二值化图形很好,

但是当车跑起来的时候,

车跑的不稳定,

容易左右晃。

当时也分析了很长时间,

但是没有找到答案。

由于离比赛只剩下两个月,

还是找不到原因,

最后不得已还是用了内部AD的方法参加比赛。

后来大四一年不做车,

也没有怎么再去关注,

最近在看一些关于电路的分析,

于是想起来当时的这个硬件二值化电路,

发现当时对于这个电路有很大的误解。

偶然到论坛里看看,

发现有很多人关注,

可能也有很多人想使用硬件二值化,

也遇到了当时自己的困惑,

这里写些自己现在对于博客中的电路的一些一些理解,

希望对于大家有些帮助。

前边的电路就不再叙述,

主要说后边两个二值化电路,

第一个固定阈值电路(即图10):

R3,C4,C3组成一个低通滤波电路,

R5,R6,R4构成一个回滞电路,避免抖动。

第二个边沿检测电路(即图11)

R3,C4,C3功能同上,

R2,C2构成一个延时电路,延时时间t=RC(就是这个延时构成了变化时的输出跳变)

R4,R5构成一个回滞电路,避免抖动。

关于R1小些相应速度快。

R2,R4作为滑变,方便调试时调节阻值,如果确定了阻值,可以改成固定电阻。

这里选用c3,c4的是因为一个滤除较高频,一个较滤除低频。

因为电容并不是理想的,所以实际的电容是有小电感,大电容,小电阻组成的,

所以电容有一个谐振点,0805封装的103的谐振点在50MHZ左右,

0805封装510pf的电容应该在几百MHZ了。

关于软件的编写,

检测一行时,开启一个递减计时器,

当有上升沿或下降沿时记录时间,

他们的就是黑线的起始于终止,差值就是黑线的宽度。

也就是博文中说为什么需要的参数会那么少了。

如果说,采集两个黑线,正常会有两个上升沿,两个下降沿,

这样需要存的只有四个数据,如果有干扰可能会增加几个,

但是记录的个数应该差不过10个。

 

自适二值化

(2013-01-1418:

51:

17)

转载▼

标签:

杂谈

分类:

技术

LM311

自适应硬件二值化电路图:

如图,此电路巧妙利用了三极管电流放大作用。

(VCC—0.7—video)/120k得基极电流,8550的β乘以此电流可得集电极的电流。

I*R=U,便得到反向输入的阈值电压。

由分析可知video处电压越小,集电极电流越大,阈值电压越高;video电压越大,阈值电压越小(阈值电压通过RP1调节)。

增加了灵敏度,可跳过运放的线性区。

 

例如:

若输入电压改变0.1V则:

0.1/100000*200*5000=1V;(若8550β=200,120k电阻换成100k,滑动变阻器在5k时)

 

用实验室的实验箱检验此电路,发现效果很好,在阈值附近,输入电压有80mv的改变即可发生电平跳变。

但用CCD模拟摄像头的信号线接入一个放大电路,放大一倍后,接入此二值化电路,发现LM311正反向输入端的压差正常,但输出却和之前的不同。

好像LM311的线性区变大了!

要正反向输入端压差变得更大才能得到0V与5V。

此处变量为输入信号不同,应该是这的问题,测量电流,发现试验箱输出与LM311之间电流为3.5uA,摄像头输出与LM311间电流为4.5uA,相差不大。

那是哪里的问题呢?

看来对电压比较器的性能还是不了解!

 

.................知道是什么问题吗?

用电压表测视频信号?

真是二死了。

视频信号很快,电压表只能取个平均值。

用示波器便可看到正确的图像了。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2