基于OpenCV的车道线实时检测系统(源码&教程)

这篇具有很好参考价值的文章主要介绍了基于OpenCV的车道线实时检测系统(源码&教程)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.研究背景

随着无人车驾驶技术的飞速发展,对车道线检测技术的实时性也提出了更高的要求.基于OpenCV对车道线进行检测,首先对车载系统采集的图像进行裁剪随、灰度化、然后对灰度化的图像进行滤波,增强图像质量,接着对增强后的图像进行膨胀处理并对其进行边缘检测,最后选取感兴趣区域、概率霍夫直线变换及拟合.从而得出预想车道线检测图像.实验表明:将采集到的图像进行两次裁剪能够使车辆车道线图像进行高效、实时性并且高精度的检测,适用于户外高速行驶的车辆进行车道线检测。

2.图片演示

基于OpenCV的车道线实时检测系统(源码&教程)

基于OpenCV的车道线实时检测系统(源码&教程)
基于OpenCV的车道线实时检测系统(源码&教程)

3.视频演示

基于OpenCV的车道线实时检测系统(源码&教程)_哔哩哔哩_bilibili

4.算法流程图

基于OpenCV的车道线实时检测系统(源码&教程)

5.高斯滤波

高斯滤波经常用于去除图像当中的一些高斯噪声,目前常用的图像滤波技术主要分为空域滤波技术与频域滤波技术,由于本文对车道线检测的实时性要求较高以及在频域滤波时高频信号不会被污染,故选取频域当中的高斯滤波 , 高斯滤波实质上就是低通滤波,如图所示。

基于OpenCV的车道线实时检测系统(源码&教程)
降噪前后对比如图:
基于OpenCV的车道线实时检测系统(源码&教程)

6.图像自适应边缘提取

该博客提出的方案,在对采集到的图形经过灰度化,高斯平滑滤波之后,得到的图像有所增强,但是其灰度等级依旧是 256 级,对后续的车道线检测工作会产生影响。因此本文采用最大类间方差技术和二值化技术对图像进行处理,从而排除图像中的一些干扰,使图像在车道线检测中的准确率和检测效率得以提升。阈值的选择由采集的图像所决定,本文采用最大类间方差法 (otsu)与 OpenCV 库中的函数 CV2.Threshold(img,0,255,cv2.THRESH_BINARY+ CV2.OTSU),如图所示。图像边缘提取的技术主要有:Sobel、Laplace、Canny、Roberts 以及 Prewitt 等边缘检测算法。由于 Canny 算子可以检测更多的车道线边缘信息,本文采用 Canny 边缘检测算子 对最大类间方差处理后的图像进行边缘检测 , 检测图像如图所示:
基于OpenCV的车道线实时检测系统(源码&教程)

7.车道线感兴趣区域划分

由于车载摄像头所采取的图像像素一般为 616×808,分辨率较好,但是其中包含了车辆、天空、行道树、房屋、弱势交通等非车道的信息。为了提高车道线检测的效率与精度以及减少检测时间,故本文对车载摄像头所采集的图像进行感兴趣区域划分与选取。根据实际情况以及大量实验结果分析,车道线的有效信息一般都分布于图像的下半部分,因此本文对采集的图片进行裁剪,仅保留图像的下半部分,这样有利于减少后期检测运算时间以及检测精度。对图像进行裁剪采用的是 PIL 库中的 crop() 函数。在对图像进行边缘检测后,须进一步对其进行感兴趣区域选取,并对所选取的感兴趣区域信息与所选取的掩码 (mask) 进行按位与操作进而得到更为精准的车道线信息,如图所示:
基于OpenCV的车道线实时检测系统(源码&教程)

8.霍夫变换直线检测

在对感兴趣区域划分之后,为了将该区域中的直线检测出来,并实现感兴趣区域图像从笛卡尔 x-y 坐标系到霍夫 k-b坐标系的转换。本文在进行直线检测时选用的是概率霍夫变换函数。为了能更加清楚的检测直线,参考该博客对概率霍夫变换进行了如下改进:
(1)接受直线最小长度。如果检测到的直线很短,则抑制这条直线。
(2)接受直线时允许最大像素间距。如果由多个像素点构成的直线,但是构成直线像素间的像素距离很大,则不接受。
霍夫变换原理如下:
(1)本质为检测直线上的所有像素点,即找到符合一元一次函数 y=kx+b 的所有点 (x0,y0) 的方法;
(2)对笛卡尔坐标系 y=kx+b 变换为 b=-xk+y 的形式,笛卡尔坐标系直线上的点在霍夫坐 标系上都体现出经过(k,b) 的直线,这样将检测点变为检测直线;
(3)图像中所有的点在霍夫坐标系中表示各种直线,如果找到直线的交点那么就找到了笛卡尔坐标系中的直线。霍夫变换本质就是将平面中的任一条直线都用极坐标系表
示,其公式为:
基于OpenCV的车道线实时检测系统(源码&教程)

9.代码实现

import cv2
import numpy as np


def make_coordinates(image,line_parameters):
    slope, intercept = line_parameters
    y1 = image.shape[0]  # Height
    y2 = int(y1 * (3/5))
    x1 = int((y1 - intercept)/slope)
    x2 = int((y2 - intercept)/slope)
    return np.array([x1,y1,x2,y2]) 

def average_slope_intercept(image,lines):
    left_fit = []
    right_fit = []
    for line in lines:
        x1,y1,x2,y2 = line.reshape(4)
        parameters = np.polyfit((x1,x2),(y1,y2),1)
        slope = parameters[0]
        intercept = parameters[1]
        if slope<0:
            left_fit.append((slope,intercept))
        else :
            right_fit.append((slope,intercept))
    left_fit_average = np.average(left_fit,axis=0)
    right_fit_average = np.average(right_fit,axis=0)
    left_line = make_coordinates(image,left_fit_average)
    right_line = make_coordinates(image,right_fit_average)
    return np.array([left_line,right_line])


def canny(image):
    gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)
    blur = cv2.GaussianBlur(gray,(5,5),0)   # Kernel size is 5x5
    canny = cv2.Canny(blur,50,150)
    return canny

def display_lines(image,lines):
    line_image = np.zeros_like(image)
    if lines is not None:
        for line in lines:
            x1,y1,x2,y2 = line.reshape(4)  # Reshaping all the lines to a 1D array.
            cv2.line(line_image,(x1,y1),(x2,y2),(255,0,0),10) # Draw a Blue Line(BGR in OpenCV)
    return line_image

10.系统整合

下图完整源码&环境部署视频教程&自定义UI界面
基于OpenCV的车道线实时检测系统(源码&教程)
参考博客《基于OpenCV的车道线实时检测系统(源码&教程)》

11.参考文献


[1]刘丹萍.基于ROI自适应定位的复杂场景车道线检测[J].长春师范大学学报(自然科学版).2020,(5).

[2]白松让,段敏,曹景胜,等.基于OpenCV的车道线智能检测和识别[J].辽宁工业大学学报(自然科学版).2020,(2).DOI:10.15916/j.issn1674-3261.2020.02.006.

[3]张道芳,张儒良.基于语义分割的车道线检测算法研究[J].科技创新与应用.2019,(6).DOI:10.3969/j.issn.2095-2945.2019.06.005.

[4]姜良超,李传友,殷凡青.基于OpenCV的车道线检测[J].摩托车技术.2018,(8).DOI:10.3969/j.issn.1001-7666.2018.08.004.

[5]唐阳山,李栋梁,朱停仃,等.基于canny和霍夫变换的车道线识别算法研究[J].汽车实用技术.2017,(22).DOI:10.16638/j.cnki.1671-7988.2017.22.029.

[6]王宝锋,齐志权,马国成,等.基于线性逼近的车道线弯道识别方法[J].北京理工大学学报.2016,(5).DOI:10.15918/j.tbit1001-0645.2016.05.006.

[7]贾会群.无人驾驶车辆自主导航关键技术研究[D].2019.

[8]HG Zhu,HG Zhu.An Efficient Lane Line Detection Method Based on Computer Vision[J].Journal of Physics: Conference Series.2021,1802(3).032006 (8pp).DOI:10.1088/1742-6596/1802/3/032006.

[9]Pattas Bastos Franco, Iago Jose,Ribeiro, Tiago Trindade,Scolari Conceicao, Andre Gustavo.A Novel Visual Lane Line Detection System for a NMPC-based Path Following Control Scheme[J].Journal of Intelligent & Robotic Systems: Theory & Application.2021,101(1).DOI:10.1007/s10846-020-01278-x.文章来源地址https://www.toymoban.com/news/detail-459467.html

到了这里,关于基于OpenCV的车道线实时检测系统(源码&教程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 毕业设计——基于python-contrib-opencv的人脸识别及检测系统设计与实现(实现电脑端摄像头读取视频,实时人脸录入,人脸检测,人脸识别等功能)

    如需完整源码,可以联系博主获取 基于python-contrib-opencv,dlib,pyqt5。能够实现电脑端摄像头读取视频,实时人脸录入,人脸检测,人脸识别等功能。 一、引言 随着计算机视觉和人工智能技术的不断发展,人脸识别技术已成为智能安防、身份验证等领域的关键技术之一。而基于

    2024年04月12日
    浏览(47)
  • 毕业设计选题-基于深度学习的车道线检测算法识别系统 人工智能 机器学习 卷积神经网络

    目录 前言 课题背景和意义 实现技术思路 一、车道线检测方法 1.1 卷积神经网络 1.2 注意力机制 二、 数据集 三、实验及结果分析 3.1 实验环境搭建 3.2 模型训练 实现效果图样例 最后     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学

    2024年02月22日
    浏览(74)
  • 基于MTCNN和FaceNet的实时人脸检测识别系统

    GitHub项目地址:https://github.com/HarmoniaLeo/Face-Recognizer。若该项目帮助到了你,请点个star,谢谢! 多任务卷积神经网络(Multi-task convolutional neural network,MTCNN)是在Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks[1]中提出的网络。MTCNN采用级联卷积神经网络(con

    2024年02月04日
    浏览(37)
  • 【论文阅读】自动驾驶中车道检测系统的物理后门攻击

    论文题目: Physical Backdoor Attacks to Lane Detection Systems in Autonomous Driving(自动驾驶中车道检测系统的物理后门攻击) 发表年份: 2022-MM(ACM International Conference on Multimedia, CCF-A) 作者信息: Xingshuo Han(南洋理工大学), Guowen Xu(南洋理工大学), Yuan Zhou* (南洋理工大学), Xuehu

    2024年02月10日
    浏览(46)
  • OpenCV—自动驾驶实时道路车道检测(完整代码)

    自动驾驶汽车是人工智能领域最具颠覆性的创新之一。在深度学习算法的推动下,它们不断推动我们的社会向前发展,并在移动领域创造新的机遇。自动驾驶汽车可以去传统汽车可以去的任何地方,并且可以完成经验丰富的人类驾驶员所做的一切。但正确地训练它是非常重要

    2024年02月06日
    浏览(41)
  • 毕业设计:python人脸识别系统 实时检测 深度学习 Dlib库 大数据 毕业设计(源码)✅

    🍅 大家好,今天给大家分享一个Python项目,感兴趣的可以先收藏起来,点赞、关注不迷路! 🍅 大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。 技术栈: Python语言、pyqt5图形界面、opencv、ResNet深度卷积神经网络、Dlib库 系统

    2024年02月20日
    浏览(81)
  • 人脸识别实战之基于开源模型搭建实时人脸识别系统(二):人脸检测概览与模型选型

    进行人脸识别首要的任务就是要定位出画面中的人脸,这个任务就是人脸检测。人脸检测总体上算是目标检测的一个特殊情况,但也有自身的特点,比如角度多变,表情多变,可能存在各类遮挡。早期传统的方法有Haar Cascade、HOG等,基本做法就是特征描述子+滑窗+分类器,随

    2024年02月04日
    浏览(42)
  • 基于Flume+spark+Flask的分布式实时日志分析与入侵检测系统

    完整项目地址:https://download.csdn.net/download/lijunhcn/88463174 简介 LogVision是一个整合了web日志聚合、分发、实时分析、入侵检测、数据存储与可视化的日志分析解决方案。聚合采用Apache Flume,分发采用Apache Kafka,实时处理采用Spark Streaming,入侵检测采用Spark MLlib,数据存储使用H

    2024年01月16日
    浏览(44)
  • 毕业设计——基于OpenCV的视频人脸识别检测系统的设计与实现

    如需完整源码,可以联系博主获取 本系统基于OpenCV使用Haar级联与dlib库进行人脸检测及实时跟踪,应用LBPH算法开发了一个功能相对完整的人脸识别系统。系统采用sqlite3进行序列化数据存储,能够对陌生人脸闯入进行报警,并拥有基于PyQt5设计的GUI实现。 一、引言 随着计算机

    2024年04月12日
    浏览(49)
  • 基于深度学习的人脸专注度检测计算系统 - opencv python cnn

    1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的人脸专注度检测计算算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 List item 工作量:3分 创新点:5分 🧿 更多资料, 项目分享:

    2024年03月22日
    浏览(94)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包