当前位置:   article > 正文

基于KITTI数据集的无人驾驶感知与传感器融合实现—(7)— Shi-Tomasi 角点检测&FAST角点检测_检测车道或路标上的角点

检测车道或路标上的角点

学习前言

  之前是对道路图片进行了 Harris角点检测算法.,不过角点检测常用的还有FAST角点检测算法.和Shi-Tomasi 算法.。这一篇博客就是进行==FAST角点检测 & Shi-Tomasi 角点检测对车道线的检测。==也是比较简单的。
  老样子,我还是把原作者的项目连接放上面啦~ 连接.在这里插入图片描述

一、 Shi-Tomasi 角点检测 & FAST角点检测

  这边就简单介绍一下这两种算法,给有基础的当是个回顾和复习,对于没学过的同学可以点进去看看,FAST角点检测算法.,Shi-Tomasi 算法
  自己觉得应该是把算法讲明白了,算法也不难,加油加油~

 1、Shi-Tomasi 角点检测

  Shi-Tomasi 角点检测算法其实是建立在Harris角点检测算法的基础上的,可以说是Harris角点检测算法的升级版
  Shi-Tomasi 角点检测算法其实就是修改了Harris角点检测算法对于角点判断原理,这里直接上图:


在这里插入图片描述
在这里插入图片描述
  对于Harris角点检测算法,它的角点响应值 R R R是如上图一样计算的,但是Shi-Tomasi 角点检测算法的角点响应值 R R R是这样的:
R = m i n ( λ 1 , λ 2 ) R=min(λ_1,λ_2) R=min(λ1λ2)
  和 Harris 一样,如果该分数大于设定的阈值,我们就认为它是一个角点。在这里插入图片描述

  2、FAST角点检测

  FAST角点检测也简单,上图:
在这里插入图片描述
  FAST角点检测的方法主要是考虑像素点附近的圆形窗口上的16个像素,如下图所示, p p p为中心像素点,而白框标示的点像素则是我们需要考虑的点。

  最初的检测方法就是检测在这样的圆环上的16个像素点中,如果有 n n n个连续的点都比中心像素 p p p的强度都大,或都小的话,这样的中心点就是角点,实际上比较强度时,需要加上阈值 t t t

  一般情况下,n是取12,所以这个标准定义为FAST-12,而实际上当n=9时,往往能取得较好的效果。


 3、为什么要考虑Shi-Tomasi 角点检测&FAST角点检测

  基于我们要实现的目的:无人驾驶感知与传感器融合实现,我们处理的图像一定是视频流,而上一章我们使用的Harris角点检测算法在对视频的处理中,如果图像旋转和光强变化依然可以保留较高的检测率,但对目标大小(scale)和仿射变换(affine transformation)比较敏感,检测率较低。这样我们就改用Shi-Tomasi 角点检测算法,得到更好的效果。

  同时也可以使用更快的Corner Detector算法FAST角点检测,牺牲一定的精度,但速度更快:


二、主要API介绍

  1、corners = cv2.goodFeaturesToTrack(image, maxCorners, qualityLevel, minDistance[, corners[, mask[, blockSize[, useHarrisDetector[, k]]]]])

    API功能:该功能可以找到图像中或指定图像区域中最突出的角

    参数:
      src: 输入8位或浮点32位单通道图像。
      maxCorners:返回的最大角数。如果角落多于找到的角落,则返回最强的角落。maxCorners <= 0表示没有设置最大值限制,并且返回了所有检测到的角。
      qualityLevel:质量水平系数(小于1.0的正数,一般在0.01-0.1之间),该参数表征图像角的最低可接受质量。参数值乘以最佳角质量度量,即最小特征值。指标小于产品指标的边角将被拒收。例如,如果最佳角的质量度量为1500,而qualityLevel = 0.01,则拒绝质量度量小于15的所有角。(推荐值:0.01)
      minDistance:返回的角之间的最小可能欧几里得距离。(推荐值:10)
      mask:可选的感兴趣区域。如果图像不为空(它的类型必须为CV_8UC1且大小与image相同),则它指定检测到拐角的区域。
      blockSize: w w w窗口尺寸,用于计算每个像素邻域上的导数协方差矩阵的平均块的大小。
      useHarrisDetector: 是否使用Harris检测器(False表示使用)。
      k:Harris角点检测的 α α α 值。
    返回:
      corners:检测到的角的输出向量。

  如果使用参数qualityLevel的不同值A和B以及A> B调用函数,则返回带有qualityLevel = A的角的向量将是带有qualityLevel = B的输出向量的前缀。

  2、retval = cv2.FastFeatureDetector_create([, threshold[, nonmaxSuppression])

    API功能:初始化FAST对象,创建一个FAST角点检测器。 cv2.FastFeatureDetector类。

    参数:
      threshold:阈值 t t t(就是上面提到的那个阈值 t t t);默认值为10.
      nonmaxSuppression:是否开启非极大值抑制。默认为Ture。
    返回:
      retval :一个FAST角点检测器


  3、keypoints = cv2.FastFeatureDetector.detect(image)

    API功能:查找角点

    参数:
      image: 需要进行角点检测的图像。
    返回:
      keypoints :输出角点。列表的形式。


  4、outImage = cv2.drawKeypoints( image, keypoints, outImage[, color[, flags]])

    API功能:绘制关键点。

    参数:
      image: 源图像。
      keypoints:(列表)源图像中的关键点。
      color:关键点的颜色。RGB格式,如:(255, 0, 0)
    返回:
      outImage:输出图像。它的内容取决于标志值,该标志值定义了在输出图像中绘制的内容。


三、代码&效果图

import numpy as np
import cv2
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

# 读入图片+高斯滤波+灰度
image = cv2.imread('test_image/0000000086.png')
image2 = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
Blur = cv2.GaussianBlur(image2, ksize=(9, 9), sigmaX=1.0)
gray = cv2.cvtColor(Blur, cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)

# 使用Shi-Tomasi
keypoint_ST = cv2.goodFeaturesToTrack(gray, maxCorners=100, qualityLevel=0.01, minDistance=10, useHarrisDetector=False,
                                      k=0.04, blockSize=10)
keypoint_ST = np.int0(keypoint_ST)
# 逐个标出角点
img1 = np.copy(Blur)
for i in keypoint_ST:
    x, y = i.ravel()
    cv2.circle(img1, center=(x, y), radius=5, color=255, thickness=-1)

# 使用FAST
fast = cv2.FastFeatureDetector_create(nonmaxSuppression=True)
keypoint_FAST = fast.detect(Blur, None)
# 标出角点
img2 = np.copy(Blur)
cv2.drawKeypoints(img2, keypoint_FAST, img2, color=(255, 0, 0))

# 可视化
f, (ax1, ax2,) = plt.subplots(1, 2, figsize=(18, 9))
f.tight_layout()
ax1.imshow(img1)
ax1.set_title('Shi-Tomasi Method', fontsize=25)
ax2.imshow(img2)
ax2.set_title('FAST Method', fontsize=25)
plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)
plt.show()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/458607
推荐阅读
相关标签
  

闽ICP备14008679号