目标检测+车道线识别+追踪

一种方法:

车道线检测-canny边缘检测-霍夫变换

一、什么是霍夫变换

霍夫变换(Hough Transform)是一种在图像处理和计算机视觉中广泛使用的特征检测技术,主要用于识别图像中的几何形状,尤其是直线、圆和椭圆等常见形状。霍夫变换的核心思想是将图像空间中的形状检测问题转化为参数空间中的峰值检测问题,通过在参数空间中投票累积的方式寻找满足特定形状条件的参数组合,从而有效地识别出图像中的几何特征。

以下是霍夫变换的基本工作原理和步骤:

  1. 图像空间到参数空间的映射: 霍夫变换的关键在于它将图像中的点与参数空间中的曲线参数对应起来。对于直线检测,通常使用极坐标形式表示直线:ρ = xcosθ + ysinθ,其中ρ是直线到原点(通常取图像左上角)的距离,θ是直线的斜率角。对于每个图像中的边缘点(x, y),都可以在ρ-θ参数空间中对应一条曲线。同样,对于圆或椭圆的检测,也有对应的参数表示形式。

  2. 投票累积: 对于图像中的每一个边缘点,计算其在参数空间中对应的所有可能参数组合,并在对应的参数值处进行投票(通常是增加计数或累加)。这意味着在参数空间中,每一条可能的直线(或圆、椭圆)都会有一个累积值。这个过程可以形象地理解为,每个边缘点都在参数空间中“投出”一系列票,支持其可能属于的几何形状。

  3. 峰值检测: 在投票累积完成后,参数空间中会出现一些局部峰值,这些峰值对应于图像中具有大量支持点(即边缘点)的几何形状参数。通过设定阈值或寻找全局/局部极大值,可以识别出这些峰值,即找到了图像中最可能存在的几何形状的参数表示。

  4. 形状重构: 根据识别出的参数,可以在原始图像空间中画出相应的直线、圆或椭圆,完成形状的检测。对于直线,可以使用ρ和θ计算出直线的方程;对于圆或椭圆,根据找到的参数可以直接绘制出来。

霍夫变换的优点包括:

  • 抗噪声:由于采用累加投票的方式,少量噪声点不会对最终结果产生显著影响,除非它们恰好在同一条可能的形状参数线上大量聚集。
  • 对形状完整性的要求较低:即使图像中的几何形状部分遮挡或断裂,只要存在足够多的边缘点支持同一参数,霍夫变换仍能有效识别。

其局限性包括:

  • 计算复杂度较高:尤其在处理高分辨率图像或检测复杂形状时,参数空间的维数增加,导致投票累积和峰值检测的计算成本增大。
  • 对参数选择敏感:霍夫变换的效果很大程度上取决于参数空间的分辨率设置,选择不当可能导致真实形状未能有效识别或产生大量假阳性结果。

尽管现代计算机视觉中出现了许多基于深度学习的高效检测方法,霍夫变换因其简单、直观和鲁棒性,在特定应用场合(如工业检测、低复杂度硬件实现等)中仍然具有实用价值。

1. 基本思想

将传统的图像从X,Y轴坐标系变化到参数空间(m,b)或者霍夫空间(hough space)中,通过参数空间(可称为累加空间)计算局部最大值从而确定原始图像中直线或圆的位置。

二、边缘检测算法

边缘检测算法本质上就是一种滤波算法,区别在于滤波器的选择,其与滤波的规则是一致的。为了理解边缘检测算子,我们引入梯度这个概念,梯度在数字图像处理领域可以理解为像素灰度值变化速度,但在数字图像处理中,实际的应用是不需要求导的,只需要进行简单的加减运算。

几种基本的边缘检测滤波器:sobel、prewitt、roberts算子。

问题:直接使用基本的边缘算子求得的边缘图存在很多问题,如噪声污染没有被排除、边缘线太过粗宽等。因此我们介绍一个先进的边缘检测算子——canny算子。

目前流行的canny算法的具体步骤:
1. 高斯滤波

高斯滤波的原理:根据待滤波的像素点及其邻域点的灰度值按照高斯公式生成的参数规则进行加权平均。

2. 计算梯度图像与角度图像

canny中使用的梯度检测算子是使用高斯滤波器进行梯度计算得到的滤波器,得到的结果也类似于sobel算子,即距离中心点越近的像素点权重越大。
角度图像的计算则较为简单,其作用为非极大值抑制的方向提供指导。

3. 对梯度图像进行非极大值抑制

上一步得到的梯度图像存在边缘粗宽、弱边缘干扰等众多问题,现在可以使用非极大值抑制来寻找像素点局部最大值,将非极大值所对应的灰度值置0,极大值点置1,这样可以剔除一大部分非边缘的像素点,因此最后生成的图像应为一副二值图像,边缘理想状态下都为单像素边缘。

4. 使用双阈值进行边缘连接

经过以上三步得到的边缘质量已经很高了,但是还是存在许多伪边缘,因此canny算法采用的算法是双阈值法,具体思路是:选取两个阈值,将小于低阈值的点认为是假边缘置0,将大于高阈值的点认为是强边缘置1,介于中间的像素点需要进一步的检查。

第二种方法:

利用边缘与颜色提取车道线,利用仿射变换转换成鸟瞰图,并利用直方图滑动窗口的算法精确定位车道线,利用最小二乘法进行拟合,实现车道线的检测,并计算车辆偏离车道中心的距离,触发报警装置。

第三种方法:

深度学习车道线检测

第三种方法:

需要实现的yolo+车道线检测

大致思路

目标检测+车道线识别+追踪+测距

数据获取和预处理:
首先,从摄像头或传感器获取图像或视频流,并进行预处理。预处理步骤可能包括图像去噪、色彩校正和尺度调整等。

目标检测:
使用深度学习的目标检测算法YOLO对图像或视频中的目标进行检测和定位。这些算法可以输出每个目标的类别、位置和置信度等信息。

车道线识别:
对于每个图像帧,利用图像处理技术(如边缘检测和霍夫变换)来识别图像中的车道线。这可以提供关于道路结构和车道位置的信息。

追踪:
将目标检测结果与前一帧的跟踪结果进行匹配,以实现目标的连续追踪。使用运动模型和特征匹配等技术来预测和更新目标的位置。这可以提供目标的运动轨迹和速度等信息。

测距:
利用单目视觉或其他深度估计技术,根据目标在图像中的大小、形状和视差等信息,计算目标与相机之间的真实距离。这可以提供关于目标与车辆的相对距离,从而帮助系统做出更准确的决策。

集成和决策:
将目标检测、车道线识别、追踪和测距的结果进行集成,并进行高级决策和规划。例如,根据目标的类别、位置和速度等信息,进行避障、路径规划和车辆控制等决策。

参考文章:目标检测+车道线识别+追踪+测距(代码+部署运行)_车道目标检测和跟踪-CSDN博客


                        
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/290301.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql数据库-DQL查询

Mysql数据库-DQL基本查询 1 DQL基本查询1.1 基础查询1.2 WHERE子句1)算术运算符2)逻辑运算符3)比较运算符A)BETWEEN... AND ...B)IN(列表)C)NULL值判断 4)综合练习 2 DQL高级查询2.1 LIKE 模糊查…

JavaWeb后端——HTTP协议/Tomcat

HTTP HTTP协议:无状态,对事务处理没有记忆能力。每次请求-响应都是独立的。后一次请求不会记录前一次请求数据。缺点:多次请求之间不能共享数据,优点:速度快。 HTTP协议请求报文: HTTP协议响应报文&#x…

HarmonyOS入门--配置环境 + IDE汉化

文章目录 下载安装DevEco Studio配置环境先认识DevEco Studio界面工程目录工程级目录模块级目录 app.json5module.json5main_pages.json通知栏预览区 运行模拟器IED汉化 下载安装DevEco Studio 去官网下载DevEco Studio完了安装 配置环境 打开已安装的DevEco Studio快捷方式…

linux 环境安装配置

安装java17 1.下载安装包 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 2.解压到自定义目录/usr/local/java mkdir /usr/local/java tar zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/java 3.配置环境变量 echo export PATH$PATH:/…

stm32之GPIO寄存器

文章目录 1 背景2 GPIO寄存器的类型2.1 端口配置寄存器2.2 设置/清除寄存器和位清除寄存器 3 总结 1 背景 C51单片机在进行数据的输入输出时,是直接操作与外部引脚关联的内部寄存器,例如,当设置P2_1为0时,就是将外部引脚的P21引脚…

LeetCode.2908. 元素和最小的山形三元组 I

题目 2908. 元素和最小的山形三元组 I 分析 首先,看到这道题,第一反应就是暴力方法,三层for循环,枚举每一种情况,代码如下 class Solution {public int minimumSum(int[] nums) {int min Integer.MAX_VALUE;for(i…

【详细讲解PostCSS如何安装和使用】

🌈个人主页:程序员不想敲代码啊🌈 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家🏆 👍点赞⭐评论⭐收藏 🤝 希望本文对您有所裨益,如有不足之处,欢迎在评论区提…

GPU算力池管理工具Determined AI部署与使用教程(2024.03)

1. 概念 1.1 什么是Determined? Determined AI 是一个全功能的深度学习平台,兼容 PyTorch 和 TensorFlow。它主要负责以下几个方面: 分布式训练:Determined AI 可以将训练工作负载分布在多个 GPU(可能在多台计算机上…

Untiy 布局控制器Aspect Ratio Fitter

Aspect Ratio Fitter是Unity中的一种布局控制器组件,用于根据指定的宽高比来调整包含它的UI元素的大小。实际开发中,它可以确保UI元素保持特定的宽高比,无论UI元素的内容或父容器的大小如何变化。 如图为Aspect Ratio Fitter组件的基本属性&…

开源 OLAP 及其在不同场景下的需求

目录 一、开源 OLAP 综述 二、OLAP场景思考 2.1 面向客户的报表 2.2 面向经营的报表 2.3 末端运营分析 2.4 用户画像 2.5 订单分析 2.6 OLAP技术需求思考 三、开源数据湖/流式数仓解决方案 3.1 离线数仓体系——Lambda架构 3.2 实时数据湖解决方案 3.3 实时分析解决…

Spark基于DPU Snappy压缩算法的异构加速方案

一、总体介绍 1.1 背景介绍 Apache Spark是专为大规模数据计算而设计的快速通用的计算引擎,是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些不同之处使 Spark 在某些工作负载方面表现得更加优越。换句话说&am…

Android开发 --- Android12外部存储权限问题

1.问题 Android 11中强制启用Scoped Storage是为了更好地保护用户的隐私,以及提供更加安全的数据保护。拥有对整个SD卡的读写权限,在Android 11上被认为是一种非常危险的权限,同时也可能会对用户的数据安全造成比较大的影响。Android12使用如…

html安装及入门

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、简单介绍一下前端三大件开发工具 二、安装VSCode三、VSCode相关配置1.汉化2.live server3.使用前 总结 提示:以下是本篇文章正文内容,下…

【热门话题】Yarn:新一代JavaScript包管理器的安装与使用

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 Yarn:新一代JavaScript包管理器的安装与使用引言一、Yarn的安装1. 系…

探索多种数据格式:JSON、YAML、XML、CSV等数据格式详解与比较

title: 探索多种数据格式:JSON、YAML、XML、CSV等数据格式详解与比较 date: 2024/3/28 17:34:03 updated: 2024/3/28 17:34:03 tags: 数据格式JSONYAMLXMLCSV数据交换格式比较 1. 数据格式介绍 数据格式是用于组织和存储数据的规范化结构,不同的数据格…

腾讯云邮件推送功能有哪些?如何有效使用?

腾讯云邮件推送如何设置?怎么用邮件推送做高效营销? 腾讯云作为业界领先的云服务提供商,其邮件推送功能在便捷性、稳定性和安全性上都有着出色的表现。那么,腾讯云邮件推送功能究竟有哪些呢?让AokSend来探个究竟。 腾…

Mac添加和关闭开机应用

文章目录 mac添加和关闭开机应用添加开机应用删除/查看 mac添加和关闭开机应用 添加开机应用 删除/查看 打开:系统设置–》通用–》登录项–》查看登录时打开列表 选中打开项目,点击“-”符号

第十二届蓝桥杯物联网试题(省赛)

思路: 这个考了一个RTC的配置,RTC我只配过一次,所以有些生疏,还是不能大意,一些偏僻的考点还是要多练,在获取RTC时间的时候也遇到一些bug,这个后续会用一篇博客将最近遇到的BUG都总结一下 主要的难点还是…

【Django学习笔记(二)】CSS语言介绍

CSS语言介绍 前言正文1、CSS 快速了解2、CSS 应用方式2.1 在标签上应用2.2 在head标签中写style标签2.3 写到文件中 3、问题探讨:用Flask框架开发不方便4、选择器4.1 ID选择器4.2 类选择器4.3 标签选择器4.4 属性选择器4.5 后代选择器4.6 注意事项 5、样式5.1 高度和…

2.8、下拉刷新与上拉加载

页面的下拉刷新与上拉加载功能在移动应用中十分常见,例如,新闻页面的内容刷新和加载。这两种操作的原理都是通过响应用户的触摸事件,在顶部或者底部显示一个刷新或加载视图,完成后再将此视图隐藏。 实现思路 以下拉刷新为例,其实现主要分成三步: 监听手指按下事件,记录…