智能车图像处理—阳光算法

本文讨论了OV7725硬件二值化摄像头与MT9V034灰度摄像头的优缺点,着重比较了图像处理流程,包括自动阈值法、大津法的应用,并提出模糊大津阈值法来处理阳光干扰。文中还涉及了DMA传输和图像预处理策略,如直方图分析和多阈值分割以提升识别准确性。
摘要由CSDN通过智能技术生成
 
 

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

阳光算法,其实应该叫灰度图像处理算法才对。灰度图像转二值化图像,具体步骤什么的,不再介绍,不懂得可以去自学《数字图像处理》和matlab。

OV7725硬件二值化与MT9V034比较


1.OV7725硬件二值化摄像头


(1)基本原理:

当扫描到某点时,该点处图像的灰度值被摄像头中的图像传感芯片换成与灰度值对应的电压值,不同的电压值经过硬件二值化电路的处理转化成高低电压,这样就完成电压值的二值化处理(高低电压)。

最后将图像信息数据通过数据端口输出到控制器。


(2)优势


①由硬件自动进行二值化,节约MCU运算时间。
②二值化后处理简单,因为0就是黑,1就是白
③一次传输8个像素,一个字节为8个像素,有效降低像素时钟


(3)劣势


由于二值化后信息量少,导致在复杂的场景可能无法正常判断与识别。


2.灰度摄像头MT9V034


(1)MT9V034优势:


①全局快门是MT9V034最大的优势,可以在MT9V034 PDF中查看全局快门与卷帘快门的区别(OV7725为卷帘快门)


②摄像头输出灰度图像,可以用于实现更加复杂的图像识别。因为包含的信息量较多


③图像输出的速度较快,例如设置FPS为 60,分辨率为120*188,图像输出的时间只有3MS左右,有更多的时间去处理。


(2)劣势


与二值化比较就是信息量比较大,使得运算量也较大,同时处理起来需要更多的知识但是由于现在比赛的环境越来越复杂,简单的摄像头已经开始难以满意要求,因为慢慢的这点已经变得不再是缺点了


3. DMA传输


DMA转移数据程序解析:当摄像头采集到图像时,发出场中断信号,控制器捕捉到这一场中断信号,触发中断,进入场中断服务程序,场中断标志置1。

在场中断服务程序中,初始化 DMA传输,并使能DMA传输。

之后控制器捕捉PCLK时钟信号,PCLK时钟信号为脉冲方波,它的每一个上升沿都将触发一次DMA传输,每次DMA传输将一个字节的图像信息送入控制器寄存器中,当触发n 次后停止DMA传输。

DMA传输停止时触发中断程进入中断复位函数,在中断复位函数里禁止DMA传输关闭场中断,同时标记图像采集完毕。

这样就完成一场图像信息的采集。

灰度图像处理


提取到图像数据后,需要对CMOS传感器采集的数据进行处理,把路况提取出来,这时需要确定图像阈值的大小。

智能车采集到的图像的灰度值是0-255,数值越高表示接近白色,数值越低接近黑线。

如果像素点灰度值小于某一阈值,则确定该点为黑点,否则,确定其为白点。但现在由于加入了阳光,所以综合考虑阳光的影响。

确定阙值的方法有很多,这里介绍自动阈值法(大津(Ostu)法)。


(1)自动阈值法基本原理

是以图像的灰度直方图为依据,以目标和背景的类间方差最大为阈值选取准则,综合考虑了像素邻域以及图像整体灰度分布等特征关系。

由直方统计图确定被阈值t分离后的区域l、区域⒉所占整个图像的面积比,以及整幅图像、区域1、区域2的平均灰度。

(2)介绍一下灰度直方图


灰度直方图:描述图像中每种灰度级像素的个数,反映图像中每种灰度出现的频率,横坐标是灰度级,纵坐标是灰度级出现的频率。

双峰直方图是指直方图中出现两个峰,也就是说有两个频率较高的灰度级,一个在较低灰度级部分,一个在较高灰度级部分。

6fb8aa6eea58ce256602bb024c3e2c5c.png

以两幅尺寸为256*256图片为例,一幅是调车时的实际场地图像,一幅是纯蓝白赛道图。

用MATLAB统计灰度直方图

612a6d90d37e1d4bec85fa086207b6f8.png

灰度图

e31aab4b1240e0046afb72231ae9d6ba.png

灰度直方图

7606d69c88959976666c2b063f718e99.png

由此实际赛道和理想赛道的灰度差异,智能车图像直方图就是一个多峰灰度图。

(3)自动阈值法基本步骤

9ee75ec3c0684b4f80c77731d48e7f5c.png

f6c3f1be7672c9b4d7eea770ee8b8e36.png

(4)阈值分割完图像数组后,便是对其二值化,因为处理器只能识别二进数О和1,因此小于或等于阙值的像素可以设定为黑色,以灰度值0表示,大于阈值的像素设定为白色,以灰度值1表示。

如果有连续均匀地灰度值,那么可以得到相当好的二值化图像。

06de0ba53d51145c10f283e646b04e55.png

MATLAB编程对上述测试图片二值化

22928b62f295fdf7ec58e44489d32c01.png

bb3d34e20ef13f960c68c31bff2f534b.png

图像不同部分灰度差别较大,势必造成大津法阈值分割不准确。图片一运行时间为0.017821 秒,图片二为0.013891秒。

阈值不准确的原因﹐在很大一部分上是由于光照不均引起的图像噪声所致,一幅完美的图像,直方图应是谷宽双峰的。

一幅较好的图像,代表蓝色底布和白色赛道的双峰应该是最明显的,而图片一的直方图是三峰,而且前两峰靠的很近,高度也近似,这就引入了极大的噪声。因此我们需要滤除噪声。

采用最简单的均值滤波,得到以下图像

6e4562a2c12d7ebfb281edf64a497b6b.png

可见最简单的均值滤波并不能满足滤波要求,但是均值滤波能很好地去掉由于地面反射引起的光斑。

中值滤波以后的图像

0c11a95bb0f988683f5728bad04ec422.png

中值滤波并没有去掉光斑,但是将光斑区域明显的聚集起来。滤波方法对噪声是否有用,要看噪声的类型,上述中值滤波和均值滤波呈现了不同的效果,说明含有的噪声至少有高斯噪声和椒盐噪声两类。

综合考虑均值滤波和中值滤波,得到以下图像

b97802a8fb6d770e7e83426a351738b4.png

(5)上述提到了三峰图像,而我们采用的是单阙值分割,即只实现了两峰之间的分割,第三峰被忽视了,因此可以考虑多峰阈值分割。

具体如下:

①使用OSTU求出第一个分割阈值t1,将小于等于t1的灰度值设为t1,其他保持不变,得到新图像。

②再度适用OSTU得到第二个阈值t2、将图像中像素灰度值小于等于t2的置为0,大于的置为255,得到所要处理的图像。

运用多峰阙值法,得到如下图像:

步骤一以后

05a8d6b89fd6374fe0fac903b099e33a.png

由此可知,第一次得到的阈值是前两个峰之间的阈值。

步骤二以后

f05a77b8f3c881029b4db93818b76277.png

多阈值分割法的效果显然好于单阀值,而且运行时间为0.037678秒,时间上比起单阈值分割法多了0.02秒。

加入中值滤波得到的图像

093ddbb258eb1a0998eb0affc3c1a315.png

完全可以满足寻线要求,但是时间上为0.112160秒,可见中值滤波很耗费时间。

(6)对于阳光的滤除,模型优化上,以信标车为例

a90f2c1e37cf73c6da4f250f71a92af0.png

模糊OSTU

大津算法的阈值准确度较高,但是遇见多峰图像时,大津阈值法的分割可能无法满足要求,需要判断峰的数目,然后多次使用大津算法,这种情况下运算量较大。

对智能车赛道来讲,究其原因,是因为蓝色底布反光呈现的灰度值与白色赛道灰度值接近,使得图像灰度值呈现模糊化的特点,因此可以运用模糊数学的方法,在大津法的基础上对其进行改进。

1、模糊大津阈值法基本原理

将赛道图像灰度值分为三类,第一类A 蓝色底布,选取较低的一部分灰度值L2,第二类B反光区域,选取中间的一部分灰度值Ll-L4,第三类C白色赛道,选取较高的一部分灰度值L3。

图像被分割为三个区域ABC,图像的每一个灰度值都有一个隶属度或两个隶属度,比如L2点有两个隶属度u(L2)和u,(L2)且u(L2)+ ug(L2)=1,每个区域就相当于一个模糊子集。

9b36f48e8a367130eda877e45e6ccf49.png

2、模糊大津阈值法基本步骤

设图像灰度直方图函数为h(k),h(k)表示当灰度值为k时像素点的个数,如果整幅图像的像素数为N,那么在大津阈值法基础上修改的各个区域的像素面积比为︰

b2da40cdaee5fb3c38d24f3922cd5499.png

由于区域划分受到L1,L2,L3,L4的影响,通过遍历灰度直方图的谷点,求出均值谷点作为灰度直方图分割点,分割点左方为α.区域,右方为β区域,取α区域频率最高灰度值gray1 ,β区域频率灰度最高值gray2 。

Ll = gray1

L2= gray1+20

L4= grav 2

L3滑动取值,比较不同L3下的类问最大方差,当类问最大方差最大时,取阙值为

8ddb5df9a2615b408fd99f93a5461564.png

3、模糊大津阈值法MATLAB图像处理

使用MATLAB编程,得到如下图像。

a366f2b70aaa38069f5ee2449a464517.png

五、方法比较

在反射光较强时,对不加任何滤波的OSTU、多阙值OSTU、模糊OSTU进行比较

9031462ffac73dde223b2b5965ce783a.png

没有反射光的图像,不加任何滤波进行比较

c388e5221d0376665a01efc53f30235d.png

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。


下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。


下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。


交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值