近年来,基于人工智能的车道检测算法得到了广泛的研讨。与传统的基于特征的方法相比,许多方法表现出了优越的功能。但是,当使用具有应战性的图像时,其准确率通常仍在低80%或高90%之间,甚至更低。

准确牢靠的车道检测是车道保持(LK)、变道自动化(LCA)和车道偏离正告(LDW)功能的关键特性。车道检测的研讨可以追溯到20世纪80年代。世纪之交后,LDW和LK曾经商业化,有些车辆甚至有LCA。DARPA和早期ADAS产品发起的自动驾驶应战进一步推进了车道检测系统的发展。但是,由于不利的光照/天气条件和其他物体的存在,车道检测照旧是一个具有应战性的成绩。

opencv+python智能车道检测,助力无人驾驶-1.jpg (36.75 KB, 下载次数: 0)

2020-12-18 21:12 上传

车道检测可经过运用单目摄像机、平面摄像机、激光雷达等完成[4]。相机因其丰富的内容功能和低廉的价格而最受欢迎。

深度学习(DL)提出了一种新的数据驱动方法,并且比大多数基于特征的方法获得了更好的功能。虽然DL系统在许多运用中获得了优秀的功能,但它们常常被用作"黑匣子",其功能没有保证。这限制了它们在安全关键义务中的运用,例如自动驾驶的车道检测。

opencv+python智能车道检测,助力无人驾驶-2.jpg (40.95 KB, 下载次数: 0)

2020-12-18 21:12 上传

我们也可以从静态的路标和路标中推断出路标和路标。基于特征的方法,如ELAS,通常在执行车道检测/跟踪义务之前预先检测一切能够的场景线索。对于基于卷积神经网络(CNN)的方法,这种场景信息在网络结构中是隐藏/隐含的。假如能先了解场景规划,将整个图像分割成几何区域,再聚焦于车道标识区域,则分类精度有望提高。

opencv+python智能车道检测,助力无人驾驶-3.jpg (30.49 KB, 下载次数: 0)

2020-12-18 21:12 上传

另一个重要的决议是CNN应该生成什么样的车道标签。许多现有的基于CNN的方法生成像素级的车道标记标志、车道区域掩码或参数化车道线。

opencv+python智能车道检测,助力无人驾驶-4.jpg (46.22 KB, 下载次数: 0)

2020-12-18 21:12 上传

对于大多数基于CNN的车道检测方法,输入是图像视图中像素级的车道实例掩码。但是,自主驾驶的希冀输入是控制相关参数,即车辆横向偏移、航向角和曲率。为了填补这一空白,需求一些后处理程序,例如,反透视图(IPM)和车道模型拟合。由于车辆是运动的,道路并不总是平整的,光是摄像机的内参数和外参数不足以计算摄像机与世界坐标之间的变换矩阵。需求更好的车道模型或附加程序,如消逝点估计。

OpenCV+python完成的车道检测

深度学习加速了车道检测的精度,本文先引见一下基于OpenCV的车道检测原理,当然精度虽然没有深度学习的高,但详细思想还是有相似的地方

import cv2import numpy as npdef canny(frame):  gray = cv2.cvtColor(frame,cv2.COLOR_RGB2GRAY)  blur = cv2.GaussianBlur(gray,(5,5),0)  canny = cv2.Canny(blur,50,150)  return canny

首先,我们建立几个子函数,canny子函数用来接收一个需求检测的照片,并运用高斯滤波函数对图像停止处理

高斯滤波是一种线性平滑滤波,适用于消弭高斯噪声,广泛运用于图像处理的减噪过程。

cv2.GussianBlur()函数

语法:GaussianBlur(src,ksize,sigmaX [,dst [,sigmaY [,borderType]]])-> ds

t——src输入图像;图像可以具有恣意数量的通道,这些通道可以独立处理,但深度应为CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。

——dst输入图像的大小和类型与src相反。

——ksize高斯内核大小。 ksize.width和ksize.height可以不同,但​它们都必须为负数和奇数,也可以为零,然后根据sigma计算得出。

——sigmaX X方向上的高斯核标准偏向。

——sigmaY Y方向上的高斯核标准差;

假如sigmaY为零,则将其设置为等于sigmaX;

假如两个sigmas为零,则分别从ksize.width和ksize.height计算得出;

为了完全控制结果,而不管将来能够对一切这些语义停止的修正,建议指定一切ksize,sigmaX和sigmaY。

然后运用cv2.Canny函数停止边缘检测

edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]])

参数解释

· image:源图像

· threshold1:阈值1

· threshold2:阈值2

· apertureSize:可选参数,Sobel算子的大小

其中,较大的阈值2用于检测图像中分明的边缘,但普通状况下检测的效果不会那么完美,边缘检测出来是断断续续的。所以这时分用较小的第一个阈值用于将这些间断的边缘衔接起来。

函数前往的是二值图,包含检测出的边缘,最后子函数前往边缘检测的2值化图片

opencv+python智能车道检测,助力无人驾驶-5.jpg (22.51 KB, 下载次数: 0)

2020-12-18 21:12 上传

代码截图

def region_of_in(frame):  height = frame.shape[0]  polygons = np.array([[(0,height),(500,0),(800,0),(1300,550),(1100,height)]])  mask = np.zeros_like(frame)  cv2.fillPoly(mask,polygons,255)  masked = cv2.bitwise_and(frame,mask)  return masked

此子涵次要用于处理边缘检测后的图片,以便获取mask,只保留车道线

opencv+python智能车道检测,助力无人驾驶-6.jpg (31.13 KB, 下载次数: 0)

2020-12-18 21:12 上传

代码截图

def display_line(frame,lines):  line_image = np.zeros_like(frame)  if lines is not None:    for line in lines:      x1,y1,x2,y2 = line.reshape(4)      cv2.line(line_image,(x1,y1),(x2,y2),(0,255,0),1)    return line_image

此子函数次要用于检测车道线,并显示

opencv+python智能车道检测,助力无人驾驶-7.jpg (25.98 KB, 下载次数: 0)

2020-12-18 21:12 上传

代码截图

img = cv2.imread('7.jpg')image = np.copy(img)canny = canny(image)cropped = region_of_in(canny)lines = cv2.HoughLinesP(cropped,1,np.pi/180,100,minLineLength = 5, maxLineGap=300)line_image = display_line(image,lines)frame = cv2.addWeighted(image,0.8,line_image,1,1)cv2.imshow('canny',frame)cv2.waitKey(0)

我们应用3个子函数对一张照片停止车道检测,首先我们读取一张照片,运用canny子函数停止图片边缘车道检测,然后运用region_of_in子函数停止mask的检测

cv2.HoughLinesP()函数可以查找直线段,我们把边缘检测的图片给到cv2.HoughLinesP()检测图片中的直线,然后运用display子函数显示检测到的直线

cv2.HoughLinesP()函数原型:HoughLinesP(image, rho, theta, threshold, lines=None, minLineLength=None, maxLineGap=None) · image: 必须是二值图像,引荐运用canny边缘检测的结果图像; · rho: 线段以像素为单位的间隔精度,double类型的,引荐用1.0 · theta: 线段以弧度为单位的角度精度,引荐用numpy.pi/180 · threshod: 累加平面的阈值参数,int类型,超过设定阈值才被检测出线段,值越大,基本上意味着检出的线段越长,检出的线段个数越少。根据状况引荐先用100试试· lines:这个参数的意义未知,发现不同的lines对结果没影响,但是不要忽略了它的存在 · minLineLength:线段以像素为单位的最小长度,根据运用场景设置 · maxLineGap:同一方向上两条线段断定为一条线段的最大允许间隔(断裂),超过了设定值,则把两条线段当成一条线段,值越大,允许线段上的断裂越大,越有能够检出潜在的直线段

opencv+python智能车道检测,助力无人驾驶-8.jpg (37.73 KB, 下载次数: 0)

2020-12-18 21:12 上传

代码截图

最后,我们运用图像混合加权完成图片的交融,次要函数为cv2.addWeighted函数

cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]]) → dst参数阐明· src1 – first input array.· alpha – weight of the first array elements.· src2 – second input array of the same size and channel number as src1.· beta – weight of the second array elements.· dst – output array that has the same size and number of channels as the input arrays.· gamma – scalar added to each sum.· dtype – optional depth of the output array; when both input arrays have the same depth,   dtype can be set to -1, which will be equivalent to src1.depth().

此函数可以用一下矩阵表达式来代替:

dst = src1 * alpha + src2 * beta + gamma;

由参数阐明可以看出,被叠加的两幅图像必须是尺寸相反、类型相反的;并且,当输入图像array的深度为CV_32S时,这个函数就不适用了

以上检测方法,只能检测直线的车道线,当检测圆弧过渡的车道线,就不是那么合适了,运用此方法只能简单的对车道检测,有时其检测结果也会出现不尽人意的时分

opencv+python智能车道检测,助力无人驾驶-9.jpg (54.8 KB, 下载次数: 0)

2020-12-18 21:12 上传

车道检测

python仿真智能驾驶_opencv+python智能车道检测,助力无人驾驶相关推荐

  1. 智能驾驶板块_智能驾驶股票有哪些?智能驾驶股票一览

    智能驾驶股票有哪些? 智能驾驶板块5月8日午后拉升,华东数控(002248)涨停,伊之密(300415).斯莱克(300382)股价大涨超过9%,中南建设(000961)涨逾4%,高新兴(300098 ...

  2. 智能驾驶----什么是智能驾驶?

    前言:一直对智能驾驶感兴趣,所以想借助平时的空闲来对智能驾驶由浅入深的进行了解. 一. 智能驾驶简介 智能驾驶是在驾驶的基础上添加了人工智能算法,该智能算法需要包括感知-规划-控制的能力. 1. 感知 ...

  3. 智能驾驶板块_智能驾驶板块龙头股大盘点

    文章摘要:如今,各行各业都在追求智慧.多年前已提出智能驾驶,但近年来的市场动态似乎更为明显.以下小编将向您介绍股票市场中智能驾驶领域的领先股票. [行业分析] 预计超过80%的智能汽车公司将发展其业绩 ...

  4. python仿真界面_基于Python语言的ABAQUS脚本仿真简介

    经常在使用ABAQUS进行仿真的时候,会遇到逆向的仿真需求,如在变形量要求范围内去判定载荷大小,几何尺寸大小等参数,或者有很多重复性的操作.在这个时候其实使用ABAQUS正向分析是比较费时效率也不是很 ...

  5. python仿真图_基于Python的DTN仿真平台

    基于 Python 的 DTN 仿真平台 姚建盛 ; 刘艳玲 ; 李淑梅 [期刊名称] <新型工业化> [年 ( 卷 ), 期] 2016(006)009 [摘要] 延迟容忍网络 (DTN ...

  6. python opencv 录制视频_OpenCV Python 录制视频

    学到实用OpenCV调用笔记本电脑的摄像头,并录制视频保存到本地硬盘的时候,出现了一点故障,那就是获取到的文件总是为0KB.经过一番查找,终于找到了解决办法. 调用摄像头 调用摄像头作为本实验的基础是 ...

  7. python腐蚀膨胀代码_OpenCV+python实现膨胀和腐蚀的示例

    1,概念及原理: 膨胀(Dilating) (或) (1)将图像 A 与任意形状的内核 (B),通常为正方形或圆形,进行卷积. (2)内核 B 有一个可定义的 锚点, 通常定义为内核中心点. (3)进 ...

  8. python仿真搭建_mock搭建——python——搭建一个简单的mock服务——简单版本

    1.无聊的背景.起源: 如今的业务系统越来越复杂庞大,各个功能直接的调用也是多如牛毛,但如果在联调的时候,恰好被调的接口正在开发,怎么办? 傻傻的等么,不存在的!这时会搭建一些server来进行moc ...

  9. python实现运动模糊图像_OpenCV+Python实现图像运动模糊和高斯模糊

    原标题:OpenCV+Python实现图像运动模糊和高斯模糊 运动模糊:由于相机和物体之间的相对运动造成的模糊,又称为动态模糊 OpenCV+Python实现运动模糊,主要用到的函数是cv2.filt ...

最新文章

  1. 阿里巴巴发布《2015移动安全漏洞年报》
  2. 如果你只做自己能力范围内的事,那么你永远没法进步
  3. 他为何能够领跑互联网与AI时代?李彦宏讲述成功之道
  4. [译]HTMLCSS Lesson2: 了解HTML
  5. 那些面试官,都是如何把候选人聊崩溃的
  6. 使用python读取txt坐标文件生成挖空矿山_探矿批量
  7. OpenGL ES之着色语言GLSL的使用说明及API
  8. springboot用户管理系统_Springboot优秀开源项目
  9. python环境变量添加失败_python环境变量设置失败
  10. [原]部署kubernetes dashboard(二)
  11. 【转】AndroidStudio升到最新版本(3.1.2)之后
  12. HttpClient的简单使用--HttpGET和HttpPost
  13. python界面打开为什么是黑的_Pycharm设置界面全黑的方法
  14. Cesium加载GeoJson数据
  15. 如何将Eclipse设置为中文简体
  16. 十进制转十二进制-复试练习
  17. java浏览器下载进度条,在浏览器中异步下载文件监听下载进度
  18. CAD-Cass小结(5)————WIN10安装并运行CAD2006及Cass7.0
  19. Microbiome:粪菌移植改善自闭症Fecal microbiota transplant (FMT)
  20. 射频信号空间衰减计算

热门文章

  1. USB接口芯片汇总(转)
  2. Spring Cloud Gateway中session共享
  3. 高效的SQL写法:行行比较
  4. 【Linux】vim在每行行首或行尾添加/删除内容
  5. json和jackson
  6. 如何在谷歌浏览器进行截图
  7. ambari-2.7.3 + HDP-3.1.0安装步骤
  8. Vue使用虚拟键盘+中英文切换
  9. selenium+chrome抓取淘宝搜索抓娃娃关键页面
  10. 打开关闭 Windows defender 防火墙