700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【车道线检测与寻迹】2月13日 CV导论+数字图像处理与opencv实践+canny边缘检测

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

时间:2018-10-28 14:30:54

相关推荐

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

为课程的笔记

课程地址:http://www.auto-/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,是黑色,而能量很大,就很亮,就是白色。——/weixin_40883324/article/details/79490176

基本步骤

本章节基本内容:

图片两种类型:

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

数字图像处理的基本概念

什么是图像?

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

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

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

什么是数字图像?

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

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

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

通常,三元组的每个数值也是在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.heighth,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 pximg = 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.shapeheight = 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()

哈夫变换

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

明天继续。。。。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。