优达学城自动驾驶汽车-Project 1: Finding Lane Lines 学习笔记1

2023-05-16

根据像素的亮度来识别车

车道识别对于Computer vision 来说是一个相对简单的任务。原因是车道一般是白色或黄色 并且很容易和图片中其他的像素区别开来。
在RGB 三信道 的图片中, 白色有很高的R, G, B 的像素值。 所以我们就可以根据这个来threshold并且把低于threshold的像素给filter out 掉。 这里用Python来做演示:

#import necessary libraries
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np

# Read in the image
image = mpimg.imread('test.jpg')

# Grab the x and y size and make a copy of the image
ysize = image.shape[0]
xsize = image.shape[1]
# Note: always make a copy rather than simply using "="
#since "=" will change the original image.
color_select = np.copy(image)

# Define our color selection criteria
red_threshold = 230
green_threshold = 230
blue_threshold = 230
rgb_threshold = [red_threshold, green_threshold, blue_threshold]

# Identify pixels below the threshold. Only if all the RGB channel value
# greater than threshold, will we keep it.
thresholds = (image[:,:,0] < rgb_threshold[0]) \
            | (image[:,:,1] < rgb_threshold[1]) \
            | (image[:,:,2] < rgb_threshold[2])
color_select[thresholds] = [0,0,0]

# Display the image
plt.subplot(121)
plt.imshow(image)
plt.axis('off')
plt.subplot(122)                 
plt.imshow(color_select)
plt.axis('off')
plt.show()

得到的结果如下:
这里写图片描述
因为车道外的其他区域也有很多亮的区域, 我们可以手动来做一个mask 区域然后只threshold这块区域里面的部分:

left_bottom = [0, 539] # left bottom point of the triangle
right_bottom = [900, 300] # right bottom point of the triangle
apex = [400, 0] # vertex of the triangle

# Fit lines (y=Ax+B) to identify the  3 sided region of interest
# np.polyfit() returns the coefficients [A, B] of the fit
fit_left = np.polyfit((left_bottom[0], apex[0]), (left_bottom[1], apex[1]), 1)
fit_right = np.polyfit((right_bottom[0], apex[0]), (right_bottom[1], apex[1]), 1)
fit_bottom = np.polyfit((left_bottom[0], right_bottom[0]), (left_bottom[1], right_bottom[1]), 1)

# Find the region inside the lines
XX, YY = np.meshgrid(np.arange(0, xsize), np.arange(0, ysize))
region_thresholds = (YY > (XX*fit_left[0] + fit_left[1])) & \
                    (YY > (XX*fit_right[0] + fit_right[1])) & \
                    (YY < (XX*fit_bottom[0] + fit_bottom[1]))

# Color pixels red which are inside the region of interest
region_select[region_thresholds] = [255, 0, 0]

# Display the image
plt.imshow(region_select)

这里写图片描述
最后可以把识别到的路线放回到原来的图片里面去:
这里写图片描述

这个方法翠然简单方便但是很不robust, 因为仅仅根据像素的亮度在很多时候会得到错误的结果(比如树荫下或者其他颜色的车道)并且我们事先要知道一个区域才能比较准确的得到结果。 下面, 会介绍更加可靠的方法来解决这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

优达学城自动驾驶汽车-Project 1: Finding Lane Lines 学习笔记1 的相关文章

  • ROS系列——如何省略每次运行launch文件前需要source ./devel/setup.bash的问题

    ROS系列 如何省略每次运行launch文件前需要source devel setup bash的问题 说明1 使用echo语句将命令添加到bash会话中或者2 直接打开 bashrc文件 xff0c 在末尾添加如下语句 xff1a 说明
  • 关于DELL Precision 7550设置U盘启动的方法

    关于DELL Precision 7550设置U盘启动的方法 说明步骤 说明 本文测试的电脑为DELL Precision 7550 xff0c 设置U盘启动的方法 是Windows10 Ubuntu18 04 双系统下修复GRUB引导博文
  • windows系统官网下载

    windows系统官网下载 说明步骤 说明 主要记录如何在微软官方网站下载windows系统 xff0c 本文主要讲解下载 iso的方式 步骤 1 进入微软官方网站 https www microsoft com zh cn softwar
  • Everything官网下载

    基于名称快速定位文件和文件夹Everything官方下载 简单说明地址 简单说明 Everything是voidtools开发的一款文件搜索工具 xff0c 官网描述为 基于名称实时定位文件和目录 xff08 Locate files an
  • Android SDK Installed Packages

    1 1 解压Android SKD 1 2 执行如上目录下的文件 xff1a SDK Setup exe xff0c xff08 机器人图标的哪个 xff09 注意 xff1a 一般的话会出现 Failed to fetch URL htt
  • linux下启动tomcat报错APR/native library which is not available的解决方案

    在linux上使用tomcat8配置支持http2 0的时候 xff0c server xml的配置文件里面有这么一段配置 xff1a lt Connector port 61 34 45501 34 protocol 61 34 org
  • 美国出台最严技术出口管制!14项前沿科技面临封锁

    关注ITValue xff0c 查看企业级市场最新鲜 最具价值的报道 xff01 xff08 本文转载自量子位公众号 xff0c ID xff1a QbitAI xff0c 作者 xff1a 乾明 夏乙 问耕 xff09 美国又打出一套七伤
  • Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-135-generic x86_64) 裸机配置静态IP

    1 xff0c os装好后默认有以下文件 xff1a etc netplan 00 installer config yaml 2 xff0c 配置该文件 xff1a sudo vi etc netplan 00 installer con
  • linux nvidia-smi 执行速度很慢问题解决

    老办法 sudo nvidia smi pm 1 比较科学的方法 sudo nvidia persistenced persistence mode 一般四卡会出现上面问题 xff0c 双路主板差多个显卡的时候容易出现
  • 【机器学习】信用卡欺诈检测 (下采样、SMOTE过采样、集成学习、Pytorch)

    2022 4 17 补充 视频 xff1a 参考 xff1a 6 01 信用卡交易欺诈数据检测 哔哩哔哩 bilibili 参考 xff1a 机器学习 Kaggle 信用卡欺诈检测 Tommy 数据不平衡 ipynb myaijarvis
  • ubuntu下makeinfo/texinfo 安装的解决办法

    环境 ubuntu 16 04 sudo apt get install makeinfo 提示找不到包 搜了一圈资料 xff0c 发现makeinfo其实就是texinfo sudo apt get install texinfo 还是找
  • 自平衡机器人DIY(一)

    看到一篇DIY自平衡机器人的文章 xff0c 感觉特别有意思 xff01 正好趁着寒假的工夫 xff0c 也来做一做 参考过程 xff1a 自平衡机器人 蛋黄物语 原理 原理 就是应用负反馈控制 xff0c 由测量到的角度和自身平衡时的自然
  • Go 与 Java 生成grpc代码

    1 背景 xff1a 由于公司的日志系统使用的是plumelog xff0c 最近生产环境老是报 jedis连接池不够 xff0c 导致丢失日志 xff0c 而且服务老是重启 xff0c 怀疑跟日志系统有关 xff0c 于是自己改造plum
  • Ubuntu开机自动挂载Windows分区(NTFS FAT32)教程

    这是我总结网上相关教程 xff0c 结合我的实际操作总结的 在开始实际的操作之前 xff0c 我们必须要了解linux系统下的挂载概念 在linux操作系统中 xff0c 挂载是一个非常重要的功能 xff0c 使用非常频繁 它指将一个设备
  • 第六章 Java FutureTask 示例

    在本教程中 xff0c 我们将看到有关 Java FutureTask 的示例 FutureTask 类已在 JDK 5 中与 Executor Framework 一起引入 FutureTask类是Future对象的具体实现 xff0c
  • ORB-SLAM2系统的实时点云地图构建

    ORB SLAM2系统的实时点云地图构建 这篇博客点云地图构建的流程代码介绍点云地图构建类对象小调整获取关键帧点云地图构建与叠加在地图中设置当前相机位置点云地图到Octomap的转换 地图效果结尾 这篇博客 xff08 PS 修改于2020
  • 查理·芒格:让自己配得上想要的东西

    巴菲特说他一生遇人无数 xff0c 从来没有遇到过像查理这样的人 94岁的查理 芒格毕业于哈佛大学法学院 xff0c 是沃伦 巴菲特的黄金搭档 xff0c 伯克夏 哈撒韦公司的副主席 xff0c 芒格的头脑是原创性的 xff0c 从来不受任
  • react路由传参的几种方式

    params传参 支持多个动态参数 state 61 id 88 name Jack 路由页面 xff1a 路由跳转并传递参数 xff1a 链接方式 xff1a lt Link to 61 pathname code demo this s
  • 对极几何、三角测量、PnP、ICP问题描述

    对极几何 三角测量 PnP ICP问题描述 文章目录 对极几何 三角测量 PnP ICP问题描述前言2D 2D xff1a 对极几何三角测量1 求解空间点深度2 求解空间点坐标 3D 2D xff1a PnP1 直接线性变换 xff08 D
  • springsecurity 登录后依然无法访问页面

    springsecurity 登录后依然无法访问页面 登录成功 点击左侧功能列表报错 org springframework security access AccessDeniedException Access is denied at

随机推荐

  • 前端---vscode插件推荐及GIT一些问题操作说明(持续更新)

    以前都是用sublime xff0c 最近开始使用vscode xff08 v1 50 0 xff09 xff0c 写一些心得记录一下 先安利一些自己使用的插件 TabNine这个插件 xff0c 如果电脑配置ok xff0c 可以装一下
  • http协议之digest(摘要)认证

    参考网址 xff1a RFC 2617 HTTP Authentication Basic and Digest Access Authenti RFC2617 RFC 1321 The MD5 Message Digest Algorit
  • FreeRTOS heap 4 机制解析

    FreeRTOS提供了几个内存管理的方案 xff0c 其中一个实现较好的方式是heap4 本篇就来形象讲述heap4的工作原理 本文暂时只用作自己对heap4的工作机制的总结和记录 xff0c 有空了再修改成教程吧 xff0c 所以 xff
  • 使用Qt写Xml文档,追加节点。

    追加Xml文档就是 xff0c 要 增 一段内容 xff0c 要实现的效果如下 xff1a 因为想临时存储一些东西 xff0c 所以利用xml做个简易的数据库 xff0c 要应用的ARM设备上 xff0c 存放入SD卡 网上找了半天 xff
  • sudo apt-get update 报错 ubuntu xenial InRelease 明文签署文件不可用,结果为‘NOSPLIT’(您的网络需要认证吗?)解决

    一句话总结 xff1a 换可用的国内源 问题的产生 xff1a 今天刚装了个ubuntu 16 04 xff08 还没装新的 xff09 结果想装个vim一直不成功 xff0c sudo apt update多次总是出现下面的 xff1a
  • docker 常用命令

    systemctl start docker 启动docker服务 systemctl stop docker 停止docker服务 systemctl restart docker 重启docker服务 systemctl status
  • 大疆Manifold 制作和恢复镜像及恢复出厂设置卡主不动处理方法

    进入恢复模式 首先你要准备一台运行Ubuntu 14 04或者Ubuntu16 04的电脑 xff0c 将电脑与Manifold 的RECOVERY USB 接口 xff0c 用Manifold自带的USB线连接 连接电源 xff0c 上电
  • Gazebo构建小车模型并通过ROS控制

    Gazebo构建小车模型并通过ROS控制 介绍编写车子的URDF文件编写控制小车移动的插件 与ROS交互 结尾 介绍 突然想试试Gazebo这款仿真软件 xff0c 因为它可以让你在任何时候都有机器人玩 但Gazebo的机制也比较复杂 xf
  • OPENCV面试题

    1 opencv中RGB2GRAY是怎么实现的 答 xff1a 以R G B为轴建立空间直角坐标系 xff0c 则RGB图的每个象素的颜色可以用该三维空间的一个点来表示 xff0c 而Gray图的每个象素的颜色可以用直线R 61 G 61
  • RandomForestClassifier、SVM、xgboost实现二分类算法

    RandomForestClassifier span class token comment coding utf 8 span span class token keyword import span numpy span class
  • 二、Crazepony1无人机源码分析-(4)接受遥控器的数据

    二 Crazepony1无人机源码分析 xff08 4 xff09 接受遥控器的数据 1 程序源码2 流程图 1 程序源码 span class token comment 查询中断 span span class token keywor
  • Linux内核移植和根文件系统制作

    第一章移植内核 1 1 Linux内核基础知识 1 1 1 Linux版本 1 1 2 什么是标准内核 1 1 3 Linux操作系统的分类 1 1 4 linux内核的选择 1 2 Linux内核启动过程概述 1 2 1 Bootload
  • 联发科MT76x8使用1-芯片对比

    上面是我创建的群聊 xff0c 欢迎新朋友的加入 最近新到手一个MT 76X8的板子 xff0c 盖了个铁壳壳 xff0c 丝印上写的是MT 7628 学习一下 特意对比了MT 7628和MT 7688 对比了一下 xff0c 没什么太大区
  • FreeRTOS

    freertos 会接管 systick xff0c 作用时间片基准 xff0c 系统不跑systick不会开始计数 xff0c 所以需要另外的timer作为hal tick来源 freertos 会接管 svc xff0c 作用是用来开跑
  • STM32串口收发、串口中断、串口波特率的理解、普通IO模拟串口

    STM32串口收发 串口中断 一 串口中断二 使用DMA三 串口波特率的理解 开发环境 xff1a stm32cubuMax 43 Keil5 一 串口中断 1 当收到消息的时候 xff0c 立即进入控制程序 实现通过串口控制硬件 xff1
  • apt一键下载所有依赖的包

    apt一键下载所有依赖的包 无外网的局域网安装软件一个烦人的事件就是明明安装包下好了 xff0c 但有时候就是安装不上 xff0c 因为缺少相应依赖的包 那么如何将一个软件依赖的包 库之类的下载下来呢 这里就用到apt的相关功能 方法 首先
  • git合作开发时,没有pull就直接push会怎样

    git的时候总会遇到一些奇怪的问题 目前遇到最麻烦的还是在push之前没有pull 每天上班第一件事pull一下 xff0c 上传代码之前一定要pull 没有pull就push xff0c 会出现merge 即使使用git reset so
  • 关于Python Numpy array 的axis 的用法的总结

    我自己学习numpy已经很长时间了 xff0c 但一直搞不懂它array里面axis的用法 经常就是自己试一下看看axis 61 0 或者 axis 61 1 的时候会怎么样 然后再用到代码里面 xff0c 比如 xff1a 首先导入num
  • 我的STM32艰苦入门经验体会与总结

    我的STM32艰苦入门经验体会与总结 第一章 笔者的入门总结 1 1 为什么要把时间花在 犹豫 上 xff1f 每当我们在入门之前 xff08 ARM 是这样 xff0c DSP 也一样 xff09 xff0c 总会会有很多疑问 xff0c
  • 优达学城自动驾驶汽车-Project 1: Finding Lane Lines 学习笔记1

    根据像素的亮度来识别车 车道识别对于Computer vision 来说是一个相对简单的任务 原因是车道一般是白色或黄色 并且很容易和图片中其他的像素区别开来 在RGB 三信道 的图片中 xff0c 白色有很高的R G B 的像素值 所以我