为课程的笔记
课程地址:http://www.auto-mooc.com/chapter/study?class_id=337397AAE545AB50326C9F8A9AC8AD7D&item_id=B3BD74301BCF3D94380E0E2743912E45

资料库:待更新

文章目录

    • 导论:
    • 基本概念
    • CV 发展
  • 2.0 正常场景中的:车道线检测与寻迹
    • 2.2 数字图像处理
    • 数字图像处理的基本概念
      • 什么是图像?
      • 什么是数字图像?
      • 数字图像的像素表示:
      • 什么是像素?
      • 图像的取样和量化
      • 图像采样
      • 图像的量化
    • 图像的采样和量化
      • 数字图像的表示
  • 安装软件
      • 采用notepad++ 然后运行bat尝试,做自建集成开发环境
    • 2.2 Opencv操作
      • 读取图片:
      • 视频读取
      • 画图
      • 灰度化的几种方法
      • 二值化
  • 3.0 车道检测
    • 数据集
    • 距离处理:
    • 平滑处理
    • 高斯滤波是一种低通滤波,去除高频部分。
  • Canny边缘检测
      • Canny最优准则:
      • 思考:Canny算子的取值方法??
      • 思考:ROI区域的确定??
    • 哈夫变换
      • **明天继续。。。。**

导论:

第一部分介绍计算机视觉与自动驾驶,
第二部分介绍图像处理与视觉基础,
第三部分介绍车道线检测与识别,
第四部分介绍基于深度学习的车道线检测。



基本概念

模式识别 机器学习 计算机视觉 深度学习
通过计算机用数学技术方法来研究模式的自动处理和判读。 是模式识别的方法。 机器学习的应用场景/应用领域 一种机器学习的途径和方法(分支)

传统模式识别的基本框架:从低维感知,预处理,到特征提取和特征选择,最后到预测与感知识别。

CV 发展


2.0 正常场景中的:车道线检测与寻迹

车道线检测系统通过运用数字图像处理及模式识别技术,在道路图像中有效提取车道线的信息并拟合车道线,帮助自动驾驶过程中的道路线识别与纠偏。



不包括以下场景:例如高反差的

目标结果:

2.2 数字图像处理

灰度值:范围一般从0到255,白色为255,黑色为0,故黑白图片也称灰度图像.
在单色图中, intensity 是 强度 gray scale 是灰度。而强度一般由 光源的能量和物体反射能量的比例的乘积 决定。 所以如果能量很低,颜色就很暗,极限就是能量为0,是黑色,而能量很大,就很亮,就是白色。——https://blog.csdn.net/weixin_40883324/article/details/79490176

基本步骤

本章节基本内容:


图片两种类型:

计算机-位图的表示方法:





数字图像处理的基本概念

什么是图像?

定义为二维函数f(x,y),其中,x,y是空间坐标,f(x,y)是点(x,y)的幅值。

灰度图像是一个二维灰度(或亮度)函数f(x,y)。

彩色图像由三个(如RGB,HSV)二维灰度(或亮度)函数f(x,y)组成。

什么是数字图像?

  1. 像素组成的二维排列,可以用矩阵表示。

  2. 对于单色(灰度)图像而言,每个像素的亮度用一个数值来表示,通常数值范围在0到255之间,0表示黑、255表示白,其它值表示处于黑白之间的灰度。

  3. 彩色图像可以用红、绿、蓝三元组的二维矩阵来表示。

通常,三元组的每个数值也是在0到255之间,0表示相应的基色在该像素中没有,而255则代表相应的基色在该像素中取得最大值。

数字图像的像素表示:

什么是像素?

数字图像由二维的元素组成,每一个元素具有一个特定的位置(x,y)和幅值f(x,y),这些元素就称为像素。

图像的取样和量化

大多数传感器的输出是连续电压波形,为了产生一幅数字图像,需要把连续的感知数据转化为数字形式。这包括两种处理:取样和量化。

取样:图像空间坐标的数字化

量化:图像函数值(灰度值)的数字化

图像采样

空间坐标(x,y)的数字化被称为图像采样,确定水平和垂直方向上的像素个数N、M。

图像的量化

函数取值的数字化被称为图像的量化,如量化到256个灰度级。

图像的采样和量化

非统一的图像的采样

在灰度级变化尖锐的区域,用细腻的采样,在灰度级比较平滑的区域,用粗糙的采样。

非统一的图像的量化

在边界附近使用较少的灰度级。剩余的灰度级可用于灰度级变化比较平滑的区域,避免或减少由于量化的太粗糙,在灰度级变化比较平滑的区域出现假轮廓的现象。

数字图像的表示

二维离散亮度函——f(x,y)

x,y说明图像像素的空间坐标,函数值f 代表了在点(x,y)处像素的灰度值

二维矩阵——A[m,n]

m , n说明图像的宽和高。矩阵元素a(i,j)的值,表示图像在第i行,第j 列的像素的灰度值;i,j表示几何位置

安装软件


采用notepad++ 然后运行bat尝试,做自建集成开发环境

2.2 Opencv操作

读取图片:

import cv2image = cv2.imread('E:\\linedetect\\Python baby.jpg')
#print image.size.width
#print image.size.height
h,w = image.shape[:2]
print(h,w)cv2.namedWindow("Image")
cv2.imshow("Image", image)
cv2.waitKey(0) cv2.destroyAllWindows()

视频读取

import cv2  cap = cv2.VideoCapture('E:\\linedetect\\input-video_3.mp4')ret = True  #while(cap.isOpened()):
while(ret):  ret,frame = cap.read()  if ret == True:cv2.imshow('image', frame)  k = cv2.waitKey(20)  #q键退出if (k & 0xff == ord('q')):  cap.release()  cv2.destroyAllWindows()break  cap.release()
cv2.waitKey(0)
cv2.destroyAllWindows()

画图

import cv2
import numpy as np
# Create a black image
#img = np.zeros((512,512,3), np.uint8)
img=cv2.imread('E:\\linedetect\\test1.png')# Draw a diagonal blue line with thickness of 5 px
img = cv2.line(img,(0,0),(511,511),(0,0,255),5)cv2.namedWindow('Image')
cv2.imshow('Image', img)cv2.waitKey(0)
cv2.destroyAllWindows()


img = np.zeros((512,512,3), np.uint8) 语句中(512,512,3)分别指像素高,像素宽,3种RGB颜色

灰度化的几种方法



import cv2
import numpy as npimage = cv2.imread('E:\\linedetect\\test1.png')
sp = image.shape
height = sp[0]
width = sp[1]
#在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值。
new = np.zeros((height,width,3), np.uint8)
for i in range(height): for j in range(width): new[i,j] = 0.3 * image[i,j][0] + 0.59 * image[i,j][1] + 0.11 * image[i,j][2] cv2.namedWindow('Image')
cv2.imshow('Image', new)cv2.imwrite("E:\\linedetect\\test1-gray.jpg", new)cv2.waitKey(0)
cv2.destroyAllWindows()

二值化

3.0 车道检测

数据集




距离处理:

平滑处理


高斯滤波是一种低通滤波,去除高频部分。


通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。

Canny边缘检测

Canny边缘检测是基于求梯度变化最大值的方法来实现边缘检测,其基本原理就是对图像中各个点求梯度,梯度最大的地方就是边缘。

注意:利用CNN的卷积核也可做边缘检测




Canny最优准则:






再Opencv上实现canny边缘检测

思考:Canny算子的取值方法??


思考:ROI区域的确定??


按位操作-bitwise operations:利用掩膜(mask)进行“与”操作,即掩膜图像白色区域是对需要处理图像像素的保留,黑色区域是对需要处理图像像素的剔除,其余按位操作原理类似只是效果不同而已。

cv2.fillPoly()函数可以用来填充任意形状的图型.可以用来绘制多边形,工作中也经常使用非常多个边来近似的画一条曲线.cv2.fillPoly()函数可以一次填充多个图型.

img = np.zeros((1080, 1920, 3), np.uint8)
area1 = np.array([[250, 200], [300, 100], [750, 800], [100, 1000]])
area2 = np.array([[1000, 200], [1500, 200], [1500, 400], [1000, 400]])cv2.fillPoly(img, [area1, area2], (255, 255, 255))plt.imshow(img)
plt.show()

哈夫变换


在完成边缘检测、提取兴趣区域之后,我们得到了区域散点的集合,不仅有多条线,还有一些点状和块状区域,哈夫变换的目的就是找到途中的线,并与原图进行叠加。

明天继续。。。。

【车道线检测与寻迹】2月13日 CV导论+数字图像处理与opencv实践+canny边缘检测相关推荐

  1. 【车道线检测与寻迹】LSD、LBD快速直线检测

    python应用LSD opencv 这个LSD https://github.com/primetang/pylsd是封装好的,不知道哪儿改参数,原始的LSD检测前会将图片缩小至80%,当图片很小是 ...

  2. CVPR 2022 3月7日论文速递(17 篇打包下载)涵盖 3D 目标检测、医学影像、图像去模糊、车道线检测等方向

    CVPR2022论文速递系列: CVPR 2022 3月3日论文速递(22 篇打包下载)涵盖网络架构设计.姿态估计.三维视觉.动作检测.语义分割等方向 CVPR 2022 3月4日论文速递(29 篇打 ...

  3. 鲁汶大学提出可端到端学习的车道线检测算法

    点击我爱计算机视觉标星,更快获取CVML新技术 近日,比利时鲁汶大学提出基于可微最小二乘拟合的端到端车道线检测算法,使该任务的学习过程不再割裂,实现整体的系统最优化. 该文作者信息: 背景 众所周知, ...

  4. 通用汽车研发中心最新提出:3D车道线检测新方法

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作分享,不代表本公众号立场,侵权联系删除 转载于:知乎黄浴博士,已获授权 https://zhuanlan.zhi ...

  5. 基于MATLAB改进Otsu阈值分割的车道线检测

    基于MATLAB改进Otsu阈值分割的车道线检测 摘要:在判断车道偏离以防止车辆碰撞等危害时,车道标线检测需要通过图像处理来进行,检测方法是否适用于各种背景环境条件以及检测的及时性至关重要传统的Ots ...

  6. 毫米波与视觉融合及车道线检测视频分享

    毫米波与视觉融合及车道线检测视频分享 微信公众号:幼儿园的学霸 个人的学习笔记,关于OpenCV,关于机器学习, -.问题或建议,请公众号留言; ADAS项目基本就要结束了,今天将项目中的部分结果视频 ...

  7. 3D车道线检测:Gen-LaneNet

    3D车道线检测:Gen-LaneNet Gen-LaneNet: A Generalized and Scalable Approach for 3D Lane Detection 论文链接:http ...

  8. 车道线检测算法经典编程

    车道线检测算法经典编程 车道线曲线拟合算法编程 计算经过(50,50),(90,120),(70,200)三点的Catmull_Rom样条曲线. IplImage* img = cvCreateIma ...

  9. 【camera】全景驾驶感知网络YOLOP部署与实现(交通目标检测、可驾驶区域分割、车道线检测)

    全景驾驶感知网络YOLOP部署与实现(交通目标检测.可驾驶区域分割.车道线检测) 项目下载地址 包含C++和Python两种版本的程序实现:下载地址 YOLOP开源项目: https://github ...

  10. 【camera】自动驾驶感知系统实现(车道线检测和拟合、目标检测与跟踪、道路可行驶区域分割、深度估计、图像视野到BEV空间映射、像平面到地平面映射)

    自动驾驶感知系统实现(车道线检测和拟合.目标检测与跟踪.道路可行驶区域分割.深度估计.图像视野到BEV空间映射.像平面到地平面映射) 项目下载地址:项目下载地址 推理引擎下载地址:推理引擎下载地址 支 ...

最新文章

  1. github自己的仓库给别人上传代码的操作
  2. 尝试编辑虚拟磁盘时服务器遇到错误,虚拟磁盘Linux服务端测试及故障处理有哪些呢?...
  3. 用boson做vlan的单臂路由实验
  4. 计算机组成原理—— 寻址方式
  5. NOIP2012 D2 T2借教室
  6. Dosbox汇编环境下debug常用调试命令(二)
  7. 检测xcode工程中配置信息是否正确
  8. oracle 10.2 连接超时,debian9 python3.6连接oracle10.2
  9. SpringBoot—jasypt加解密库的使用方法
  10. Report_SRW在RDF中初始化的重要性(案例)
  11. 佛祖保佑代码无bug图片_程序员都有哪些奇趣的代码注释,细思极恐
  12. 沈志勇-百度大数据引擎与分析预测
  13. 命令行传感器和模板的使用之在 Home Assistant 中监控树莓派的 CPU 温度,内存等信息
  14. Windows10本地数据库搭建(MySQL、PostgreSQL)
  15. acm:C语言程序设计:求圆柱的体积等,去除小数点后两位最后一位的四舍五入
  16. ckplayer快速入门
  17. 如何恢复被删短信_手机短信删除了怎么恢复?超级简单的两种方法
  18. 几招紧急应对夏天雷雨天机房断电的方法!
  19. 《C语言程序设计》第4版 何钦铭、颜晖主编 课后习题答案
  20. 巨详细,大电流线性电源(LDO)原理,看完你就明白了

热门文章

  1. PHP curl请求https
  2. Vue笔记--高级入门
  3. java单例模式的7种实现方式
  4. 对于 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针 的简单理解
  5. Linux系统中安装Nginx
  6. 华南理工大学计算机专业研究生分数线,2020华南理工大学研究生分数线汇总(含2016-2020历年复试)...
  7. android AChartEnginee讲解之自定义图表类
  8. 聊一个不常见的面试题:为什么数据库连接池不采用 IO 多路复用
  9. 直播项目之仿全民TV(已开源)
  10. mysql的txid是什么_mysql-存储引擎