ADAS可行驶区域道路积水反光区域的识别算法

Water logging area reflecting recognition algorithm for ADAS

1. 工程概要

1.1  概述:

随着社会的发展和技术的进步,传统上远、近光灯机械、定向转变的前照灯,已经无法满足人们日益增长的形式安全需要,于是更为智能高效车灯应运而生。未来的车灯能根据周边环境和环境的光源变化调整自身的配光方式,提供更大的照明范围和照明距离,同时也能改善传统前照灯的照明死角,因此可以显著提高行车安全性和驾驶舒适性。

尤其在下雨天,路面交通情况要比晴天情况复杂很多。如果车前方有积水,且本车灯光的照射会使对向来车产生炫目的积水区域,会给驾驶员带来一定的风险。因此,智能化车灯需要检测积水的反光区域,并采取措施。

2. 研究目标

在汽车行驶过程中,道路上不仅仅远光会对驾驶员的眼睛形成炫目,雨天积水受到其他光源的照射形成强烈的反射光也会对驾驶员的形成强烈的炫目。不仅如此由于路面上通常会有多种光源,分别有主动光源和被动光源,并且积水的区域主要出于地面,因此我们需要处理图像识别出哪些是道路哪些是非道路区域,在道路的区域中再识别主动光源和被动光源。

因此本文旨在实时检测前方路面信息,通过特征检测,确定积水区域的中心位置信息,并检测积水区域的面积区域。视觉感知模块通过积水区域的位置信息,由大灯实现对积水区域的实时的自适应反光弱化控制,防止积水区域强烈的反光对来车驾驶员造成眩目。

3. 研究范围定义

- 各种路面上积水反射光的检测。

- 路面上的主动光源和被动光源的检测。

- 反射光的强度和反射光区域的检测。

- 对下雨天、天阴以及各种复杂路况下,路面上积水反射光的多场景识别。

4. 产品要求

4.1综述

运用图像模式识别技术进行湿滑路判别已经成为不利天气下道路交通安全保障技术研究的热点。通过图像的处理和深度学习,我们能够获得路面轮廓,亮度和像素来判断复杂路面上的路况,并进行识别和判断。

开发基于Gauss滤波、canny边缘检测,识别路面区域,识别主动和被动光源。通过反射光的强度确定反射源的位置和坐标以及积水区域的长宽高。开发目标能够在多场景下能够识别路面的积水的反射光情况,并能保证程序的实时性和鲁棒性。

4.2 技术开发方案

1)图像裁剪:通过设定图像ROI区域,拷贝图像获得裁剪图像。

2)图像二值化:就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。

3)形态学滤波:数字图像处理中的形态学处理是指将数字形态学作为工具从图像中提取对于表达和描绘区域形状有用处的图像分量,比如边界、骨架以及凸壳,还包括用于预处理或后处理的形态学过滤、细化和修剪等。图像形态学处理中我们感兴趣的主要是二值图像。

4)Canny边缘检测:Canny边缘检测算子是John F. Canny于1986年开发出来的一个多级边缘检测算法。Canny的目标是找到一个最优的边缘检测算法,最优边缘检测的含义,如下所示:

(A)最优检测:算法能够尽可能多地标识出图像中的实际边缘,漏检真实边缘的概率和误检非边缘的概率都尽可能小;

(B)最优定位准则:检测到的边缘点的位置距离实际边缘点的位置最近,或者是由于噪声影响引起检测出的边缘偏离物体的真实边缘的程度最小;

(C)检测点与边缘点一一对应:算子检测的边缘点与实际边缘点应该是一一对应。

道路交通场景光源来源复杂,积水的反射区域主要来自于路面,因此,我们需要定反射光源路面的反射区域。通过路面的识别,我们可以通过路面色彩和表面的纹理来识别路面的,并进行边缘区域的提取。

5)道路颜色特征的提取

公路路面的材质主要是柏油路面,因此可以根据观察路面的颜色,提取各种路面状态下的颜色特征值进行路面种类的识别。在机器视觉中,常用的颜色模型可以分为RGB模型,HIS模型以及HSV模型。由于每个模型都有大量的数据,我们可以用主成分分析来将数据降维,从而来减少计算量。

6)道路纹理特征提取

由于路面状态受地面层的温度和湿度以及大气等多方面的影响,单单通过色彩可能无法准确获得路面区域。因此,我们可以通过获取路面图像的纹理来进行路面的识别。目前对路面纹理提取的方法主要有:灰度共生矩阵,Gabor小波变换灯方法。

灰度共生矩阵:

灰度共生矩阵,指的是一种通过研究灰度的空间相关特性来描述纹理的常用方法。 1973年Haralick等人提出了用灰度共生矩阵来描述纹理特征。由于纹理是由灰度分布在空间位置上反复出现而形成的,因而在图像空间中相隔某距离的两像素之间会存在一定的灰度关系,即图像中灰度的空间相关特性。

直觉上来说,如果图像的是由具有相似灰度值的像素块构成,则灰度共生矩阵的对角元素会有比较大的值;如果图像像素灰度值在局部有变化,那么偏离对角线的元素会有比较大的值。通常可以用一些标量来表征灰度共生矩阵的特征,例如,对比度,能量,相关性,熵等参数。

Gabor小波变换灯方法:

Gabor滤波方法的主要思想是:不同纹理一般具有不同的中心频率及带宽,根据这些频率和带宽可以设计一组Gabor滤波器对纹理图像进行滤波,每个Gabor滤波器只允许与其频率相对应的纹理顺利通过,而使其他纹理的能量受到抑制,从各滤波器的输出结果中分析和提取纹理特征,用于之后的分类或分割任务。Gabor滤波器提取纹理特征主要包括两个过程:①设计滤波器(例如函数、数目、方向和间隔);②从滤波器的输出结果中提取有效纹理特征集。

7)被动光源和主动光源检测

在路面上会有主动光源和被动光源,因此,我们需要判别主动光源和被动光源的差异来进行分类。

夜间路面的反光主要来源于车灯。车灯往往是高色温高亮度的光源,反射光源和主动光源的光照特性不同,因此我们需要找到光源不同的特点并进行筛选主动光源和被动光源的。

8)自适应的灰度调整

由于路面上会有不同的亮度情况,因此我们需要实现自适应的图片二值化算法。在不同的亮度工况下,我们可以通过获得不同亮度区域。

5. 性能指标

1)识别路面积水区域,并能够给出积水区域的中心点物理坐标(x,y,z)

2)积水区域的等效矩形长、宽(或等效不规则图形的各个边长参数)

3)最小识别距离(积水区域下边缘距离本车的最小纵向距离):45m(即本车以80km/h行驶,至少能提前2秒识别到积水区域)

4)能够给出识别最大积水区域识别面积的大小(即摄像头能识别的最大的积水区域面积)。

ADAS可行驶区域道路积水反光区域的识别算法的更多相关文章

  1. 2017年研究生数学建模竞赛-E题 MATLAB 作战区域道路示意图

    MATLAB 画区域作战图 clear load('output_path1.mat') k = 1:130; gplot(edge(k,k),loc(k,:),'c-') title('作战区域道路 ...

  2. Java内存区域和判断对象“死”“活”算法

    转载自: http://www.cnblogs.com/aigongsi/archive/2012/04/06/2434771.html java与C,c++有很大的不同就是java语言开发者不需要关 ...

  3. 洛谷P3639 [APIO2013] 道路费用 [生成树的特殊算法]

    题目传送门 道路费用 格式难调,题面就不放了. 分析: 这是一道要细(yan)心(jing)的生成树的好(gui)题. 首先我们看到$k$的范围非常小,那么我们就可以直接$2^k$枚举每一条加边是否选 ...

  4. 基于候选区域的深度学习目标检测算法R-CNN,Fast R-CNN,Faster R-CNN

    参考文献 [1]Rich feature hierarchies for accurate object detection and semantic segmentation [2]Fast R-C ...

  5. 使用Python基于VGG/CTPN/CRNN的自然场景文字方向检测/区域检测/不定长OCR识别

    GitHub:https://github.com/pengcao/chinese_ocr https://github.com/xiaofengShi/CHINESE-OCR |-angle 基于V ...

  6. ADAS芯片解决方案汇总

    ADAS(高级辅助驾驶系统),是指利用安装于车上各式各样的传感器,在第一时间收集车内的环境数据,进行静.动态物体的辨识.侦测与追踪等技术上的处理,从而能够让驾驶者在最快的时间察觉可能发生的危险. 在过 ...

  7. mser 最大稳定极值区域(文字区域定位)算法 附完整C代码

    mser 的全称:Maximally Stable Extremal Regions 第一次听说这个算法时,是来自当时部门的一个同事, 提及到他的项目用它来做文字区域的定位,对这个算法做了一些优化. ...

  8. 【Unity游戏开发】UGUI不规则区域点击的实现

    一.简介 马三从上一家公司离职了,最近一直在出去面试,忙得很,所以这一篇博客拖到现在才写出来.马三在上家公司工作的时候,曾处理了一个UGUI不规则区域点击的问题,制作过程中也有一些收获和需要注意坑,因 ...

  9. 《深入java虚拟机》读书笔记之Java内存区域

    前言 该读书笔记用于记录在学习<深入理解Java虚拟机--JVM高级特性与最佳实践>一书中的一些重要知识点,对其中的部分内容进行归纳,主要是方便之后进行复习. 运行时数据区域 Java虚拟 ...

随机推荐

  1. ThnikPHP3.2 学习链接整理

    ThnikPHP3.2 学习链接整理 ThinkPHP3.2.3 U()方法的使用总结 看云手册 ThinkPHP3.2完全开发手册 TP3.2单字母函数 TP3.x中 M方法和D方法的区别

  2. Windows之磁盘管理

    0x01 磁盘管理概述 ​ 磁盘管理是一项计算机使用时的常规任务,它是以一组磁盘管理应用程序的形式提供给用户的,他们位于计算机管理控制台中,它包括查错程序和磁盘碎片整理程序以及磁盘整理程序.(来源百度 ...

  3. hdu4882 水贪心

    题意:      给你n个任务,每个任务有两个权值,t[i],b[i],前面的是完成任务所需时间,后面的那个是个参数,每个任务完成的代价是完成当前任务总时间(之前的+现在的) sumt * b[i], ...

  4. 编译Android 4.4.4 r1的源码刷Nexus 5手机详细教程

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/54562606 网上关于编译Android源码的教程已经很多了,但是讲怎么编译And ...

  5. 安全之路 —— 无DLL文件实现远程进程注入

    简介 在之前的章节中,笔者曾介绍过有关于远程线程注入的知识,将后门.dll文件注入explorer.exe中实现绕过防火墙反弹后门.但一个.exe文件总要在注入时捎上一个.dll文件着实是怪麻烦的,那 ...

  6. Python技术栈性能测试工具Locust入门

    Locust是一款Python技术栈的开源的性能测试工具.Locust直译为蝗虫,寓意着它能产生蝗虫般成千上万的并发用户: Locust并不小众,从它Github的Star数量就可见一斑: 截止文章写 ...

  7. 动手实现一个适用于.NET Core 的诊断工具

    前言 大家可能对诊断工具并不陌生,从大名鼎鼎的 dotTrace,到 .NET CLI 推出的一系列的高效诊断组件(dotnet trace,dotnet sos,dotnet dump)等, 这些工 ...

  8. 【JavaScript】Leetcode每日一题-矩形区域不超过K的最大值和

    [JavaScript]Leetcode每日一题-矩形区域不超过K的最大值和 [题目描述] 给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大 ...

  9. 文件描述符fd

    java 后台运行程序命令 nohup java -jar babyshark-0.0.1-SNAPSHOT.jar > log.file 2>&1 & 命令解释:后台启动 ...

  10. 利用实体bean对象批量数据传输处理

    利用实体bean对象批量数据传输处理 需求 现在有两方数据库表结构相同,一方A.另一个方B,现想从A处查询出多个表的数据,传输到B地保存起来. 解决方案1 最简单粗暴的方法就是,查询出A处相关表的数据 ...