热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

双车组三轮图像处理总结:18cm三轮摄像头图像处理

LeviKing982021-04-11Sunday前言或许是有幸,参加了第十五届智能车竞赛,在这一年里,经历了很多,少有满


LeviKing98

2021-04-11 Sunday
 

前言


或许是有幸,参加了第十五届智能车竞赛,在这一年里,经历了很多,少有满意,认识了很多人,感谢相识。
比赛将要结束,我也将离智能车越来越远。但毕竟也曾热爱、付出过,希望能把我的一些经验写下来,至少留下一个痕迹,也能给一些准备比赛或像参加比赛的选手提供一些帮助。

可能由于疫情原因,比赛不仅提前了,而且准备时间还相比之前减少了很多,因此第十五届智能车竞速赛的赛道元素相比去年删去了一些,而仅仅新加了一个车库元素。因此,在图像方面,负担减轻了很多。


车模基本参数:
车模:F车模
摄像头:130°普通无畸变摄像头
高度:摄像头镜面中心高度18.5cm
前瞻:前瞻2.5-3m


一.扫线方式

感谢聪聪在八领域方面的帮助@zcc。八领域实现原理在网上可以很容易找到,不再赘述。

主要讲一讲我是如何使用八领域的。


1.寻找赛道


1)种子寻找


定一个底行初始位置,从中间分别向两边寻找边线的种子。


2)八领域寻线


利用八领域,由种子生长出整条边界。


3)在边界中提取边线

通过遍历八领域得到的连续边界,提取出用于计算中值的边线。

图中,左边蓝线与右边绿线为每行的边线,下图为分离图:


4)计算中值


2.赛道信息提取


1)边界生长方向信息


可以把领域的生长方向记录下来,作为边界的特征之一


2)拐点的寻找


【①直角型拐点】

直角型拐点的特征较为明显,边界在直角的顶点会急剧转向接近90°的另一个方向,常出现在十字中。
拿十字举例:


  • 二值图:

▲ 二值图


▲ 二值图


  • 边界图:

▲ 边界图


▲ 边界图


  • 搜索边界方向:

可以通过边界生长方向的变化来寻找:

▲ 搜索边界方向


▲ 搜索边界方向


  • 搜索斜率突变:

或者通过斜率的突变来寻找:
▲ 通过斜率来搜索


▲ 通过斜率来搜索


【②圆弧形拐点】

因为赛道弯曲形成的拐点,回拐的程度较小,常出现在弯道或环岛中。拿小弯举例:


  • 二值图:

▲ 二值图


▲ 二值图


  • 边界图:

▲ 边界图


▲ 边界图


  • 拐点位置:

▲ 拐点位置


▲ 拐点位置


3)边界的方差(或绝对值)计算


【①最小二乘法】

这里使用最简单的拟合一次函数曲线的最小二乘法,网上很多教程与实例,不再赘述。

用最小二乘法拟合出的直线计算与边界像素点的方差(或绝对值)


如图所示,可以直观看出像素点偏移直线程度。


4)边界的斜率

由最小二乘法得到的一次函数得到边界的总体斜率。


二.赛道元素判断


1.正如十字元素

也就是正入十字。


1)判断条件


  • 二值图:

▲ 二值图


▲ 二值图


  • 边界图:

▲ 边界图


▲ 边界图


判断步骤:
① 找到左前拐点
②左边线向左横向生长像素点较多
③找到右前拐点
④右边线向右横向生长像素点较多


2)拉线处理


【①十字前】

分别将左右前后两个拐点相连:

 


【②十字中】

找到两个后拐点,利用最小二乘法前拉边线:


 


2.斜入十字(举一种情况)


1)判断条件


  • 二值图:

▲ 二值图


▲ 二值图


  • 边界图:

▲ 边界图


▲ 边界图


判断步骤:
①找到右前拐点
②右前边界向右横向生长的点数较多
③找到右后拐点
④找到左后拐点


2)拉线处理

①将右边两个拐点相连

②利用最小二乘法前拉左后拐点高行的直线

▲ 拉线处理的过程


▲ 拉线处理的过程


3.环岛元素


1)判断条件

以左环岛为例。


  • 二值图:

▲ 二值图


▲ 二值图


  • 边界图:

▲ 边界图


▲ 边界图


判断步骤:
①左拐点
②左前边线横向生长的点较多
③右边界从底行到高行为直线,方差很小
判断条件较为简单,如果不放心,可以再提取左上圆环特征。


2)拉线处理

整个环岛处理为一个状态机,大致拉线如下:

① 左前直角型拐点与左后圆弧形拐点相连


② 左后圆弧形拐点拉线


③ 入环拐点拉到右边低行

④ 内正常边线


⑤ 开始出环先拉右线


⑥ 左后拐点与左前边线起始处相连


⑦ 二乘法将左后拐点拟线前拉


4.车库元素-入车库


1)判断条件


  • 二值图:

▲ 二值图


▲ 二值图


  • 边界图:

▲ 边界图


▲ 边界图


判断步骤:
①找到左前拐点
②右边界为直线,方差较小
③扫到斑马线
④横向生长的点数较多(或左前拐点后的边界斜率很小很小)


2)拉线处理

① 将左后拐点拉到左前拐点纵坐标位置的右边线

② 将左后边线的起始位置拉到右下角


③ 当左后拐点小于一定行数,利用最小二乘法将左后拐点的线拟合到右下角

④ 进入车库,正常扫线


5.车库元素-出库车库


1)判断条件

无需判断,手动预设


2)拉线处理(以右出库为例)

① 在库内,拉直线


② 左前拐点小于某行或丢失,开始拉线


③ 避开斑马线进行扫线,直接拉到左下角


④ 出库基本完成,正常扫线


6.坡道元素


  • 二值图:

  • 边线图:


1)判断条件


判断条件:
① 高行行间距变小
② 高行与低行都是直线,方差很小


2)状态判断

①上坡前,边线延伸至顶行,行间距较大


②上坡时,边线顶端只能够到达中间行


③下坡时,边线又延伸至顶端,高行行间距变小

④下到坡底,行间距变宽

⑤坡道结束,回到正常赛道


3)拉线处理

①在坡顶时,只处理低行中线,减少因坡顶的视野太远导致的误扫边界的影响


②其他时候正常扫线


7.会车


1)判断条件


  • 二值图:

▲ 二值图


▲ 二值图


  • 边界图:

▲ 边界图


▲ 边界图

在道路中间由下往上找种子,找到后车车模并扫线:

①找到车的四个拐点

②拐点前后边界的生长特征

③两个前拐点之间的距离符合正常后车长度


2)拉线处理

①将两个拐点中间的像素点作为后车中点

②将中点与最低行中点拉线


8.弯道


1)小弯道


判断标准:
①多处圆弧型拐点
②边界存在一定的方差
③边界的斜率一定范围内


2)大弯道


判断标准:
①一处圆弧拐点
②边线方差较大
③边界的斜率超出一定范围


9.长直道


判断标准:
①不存在圆弧拐点
②边线方差很小
③边界的斜率稳定在很小范围之内


10.反光判断

利用生长方向的异常来判断是否反光。


  • 二值图:


  • 边界图:


结束语

智能车让我学到了很多。


推荐阅读
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • 本文讨论了同事工资打听的话题,包括同工不同酬现象、打探工资的途径、为什么打听别人的工资、职业的本质、商业价值与工资的关系,以及如何面对同事工资比自己高的情况和凸显自己的商业价值。故事中的阿巧发现同事的工资比自己高后感到不满,通过与老公、闺蜜交流和搜索相关关键词来寻求解决办法。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 如何配置小米wifi放大器来增强家庭无线路由器信号?
    本文介绍了如何通过配置小米wifi放大器来增强家庭无线路由器信号的方法。通过打开米家APP,选择设备添加,搜索并选择需要添加的wifi放大器,根据系统提示进行下一步操作即可完成配置。配置完成后,家庭无线路由器信号将得到增强。 ... [详细]
  • Win10下游戏不能全屏的解决方法及兼容游戏列表
    本文介绍了Win10下游戏不能全屏的解决方法,包括修改注册表默认值和查看兼容游戏列表。同时提供了部分已经支持Win10的热门游戏列表,帮助玩家解决游戏不能全屏的问题。 ... [详细]
  • 本文讨论了如何在不使用SearchBar display controller的情况下,单独使用SearchBar并捕获其textChange事件。作者介绍了实际状况,即左侧SliderMenu中的SearchBar需要在主页TableView中显示搜索结果。然后,作者提供了解决方案和步骤,帮助读者实现这一功能。 ... [详细]
  • 本文介绍了新款奇骏的两个让人上瘾的功能,分别是智能互联系统和BOSE音响。通过对新款奇骏的配置和功能进行评测,探讨了这两个新增功能的使用体验和优势。此外,还介绍了新款奇骏的其他配置和改进,如增加的座椅和驾驶辅助系统,以及内饰的舒适性提升。对于喜欢音响的消费者来说,BOSE音响的升级也是一个亮点。最后,文章提到了BOSE音响的数字还原能力,以及7座版无法配备BOSE音响的原因。 ... [详细]
  • 电脑公司win7剪切板位置及使用方法
    本文介绍了电脑公司win7剪切板的位置和使用方法。剪切板一般位于c:\windows\system32目录,程序名为clipbrd.exe。通过在搜索栏中输入cmd打开命令提示符窗口,并输入clip /?即可调用剪贴板查看器。赶紧来试试看吧!更多精彩文章请关注本站。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • Excel数据处理中的七个查询匹配函数详解
    本文介绍了Excel数据处理中的七个查询匹配函数,以vlookup函数为例进行了详细讲解。通过示例和语法解释,说明了vlookup函数的用法和参数的含义,帮助读者更好地理解和运用查询匹配函数进行数据处理。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
author-avatar
swa乄ycat曼颜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有