美文网首页
项目二:无人驾驶之车道线检测

项目二:无人驾驶之车道线检测

作者: 南国_ | 来源:发表于2021-03-01 12:05 被阅读0次

一、读取图像常用的三种方式

1.方式一:matplotlib.image

from matplotlib import image
img1 = image.imread('Datas/cat.jpg')
plt.imshow(img1)

2.方式二:opencv读取图像

import cv2
img2 = cv2.imread('Datas/cat.jpg') #opencv读取的图像格式为BGR
img2 = cv2.cvtColor(img2,cv2.COLOR_BGR2RGB) #将BGR转换为RGB
plt.imshow(img2)

3.方式三:PIL库读取图像

from PIL import Image
img3 = Image.open('Datas/cat.jpg')
plt.imshow(img3)

type(img3) #PIL库读取的图像格式为:JpegImageFile类型 
img3 = np.array(img3)#将JpegImageFile转换为np.array

二、canny边缘检测

  • Canny Detector是一种边缘检测算法。通过检测图像亮度(梯度)的急剧变化,并在给定一组阈值的情况下,将其定义为边缘。

  • Canny算法的四个步骤:
    ① 降噪:使用5*5的高斯滤波器进行降噪.
    ② 求梯度
    ③ 非最大抑制:
      如果梯度值是局部最大则保留,否则抛弃.
      非最大抑制使得检测出的边界线较细.
    ④ 滞后阈值:设置阈值minVal和maxVal
      梯度高于maxVal的像素都是边缘;
      梯度低于minVal的像素都不是边缘;
      梯度介于minVal和maxVal之间时,需要进一步判断该像素是否是边缘;(当其与高于maxVal的强像素相连时,才被认为是边缘; 否则不认为是边缘)

三、霍普变换

  • 检测图像中是否包含特定几何形状的物体。
  • 笛卡尔坐标系与霍普空间

    ① 笛卡尔坐标系中的一条线对应霍普空间中的一个点 线点转换.png
② 笛卡尔坐标系中的一个点对应霍普空间中的一条线 点线转换.png

③ 笛卡尔坐标系中直线的检测
 检测笛卡尔坐标中两点是否能连成一条直线,可以在霍普空间中画出这两点对应的直线,当两条直线相交时,就代表这两个点可以连成一条直线,并且霍普空间中的相交点即为笛卡尔坐标系中直线的截距和斜率。


直线检测.png
  • Canny边缘检测出的边缘其实就是一系列的点,我们通过霍普空间来判断其中哪些点可以连接为一条直线,并同时得出这些直线的公式表达式。
  • 实际上我们在使用Canny边缘检测时,使用的并不是笛卡尔坐标,而是Polar坐标(极坐标)。因为笛卡尔坐标系中存在一个数学缺陷:当线是垂直的时候,梯度是无穷大的,不能再霍普空间中表示。

相关文章

网友评论

      本文标题:项目二:无人驾驶之车道线检测

      本文链接:https://www.haomeiwen.com/subject/fcubfltx.html