OpenCV+Python 角点检测

作者: 音符纸飞机 | 来源:发表于2018-10-12 20:46 被阅读74次

定义

狭义:两条边的交点
广义:图像中具有某些数学特征的坐标。如局部最大或最小的灰度

如上图有三个颜色的框框,如果我们对蓝色框框进行移动,无论是水平还是垂直的方向移动都不会对框框内像素造成很大的变化,这种是内部区域。
如果我们对黑色的框框进行移动,那么水平方向上移动像素值是不会有什么太大的变化的,如果是垂直方向上移动那么就会变化很大,这种一般称为边缘区域。
对红色的框框进行移动,无论是往哪个方向进行偏移都会对框框内的像素值造成很大的变动,那么红色框住的区域的边角点,我们就称为角点。

Harris角点检测

原理

稳定性高,尤其对L型角点(也就是直角)检测精度高。缺点也是明显的,就是运算速度慢,对图片大小敏感。

cv2.cornerHarris(src, block_size, ksize, k)
'''
src 必须是float32
block_size 邻域大小,越大表示用更粗的点标记角点
ksize Sobel求导中的窗口大小
k 自由参数,取值[0.04, 0.06]
''' 
实战
import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('forGrab.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)
dst_block9_ksize19 = cv2.cornerHarris(gray, 9, 19, 0.04)
img1 = np.copy(img)
img1[dst_block9_ksize19 > 0.01 * dst_block9_ksize19.max()] = [0, 0, 255]

dst_block5_ksize19 = cv2.cornerHarris(gray, 5, 19, 0.04)
img2 = np.copy(img)
img2[dst_block5_ksize19 > 0.01 * dst_block5_ksize19.max()] = [0, 0, 255]

dst_block9_ksize5 = cv2.cornerHarris(gray, 9, 5, 0.04)
img3 = np.copy(img)
img3[dst_block9_ksize5 > 0.01 * dst_block9_ksize5.max()] = [0, 0, 255]

dst_block9_ksize31 = cv2.cornerHarris(gray, 9, 31, 0.04)
img4 = np.copy(img)
img4[dst_block9_ksize31 > 0.01 * dst_block9_ksize31.max()] = [0, 0, 255]

dst_block9_ksize19_k6 = cv2.cornerHarris(gray, 9, 19, 0.06)
img5 = np.copy(img)
img5[dst_block9_ksize19_k6 > 0.01 * dst_block9_ksize19_k6.max()] = [0, 0, 255]

dst_block9_ksize19_k6_1e_5 = cv2.cornerHarris(gray, 9, 19, 0.06)
img6 = np.copy(img)
img6[dst_block9_ksize19_k6_1e_5 > 0.00001 * dst_block9_ksize19_k6_1e_5.max()] = [0, 0, 255]

titles = ["Original", "block9_ksize19", "dst_block5_ksize19", "dst_block9_ksize5", "dst_block9_ksize31",
          "dst_block9_ksize19_k6", "dst_block9_ksize19_k6_1e_5"]
imgs = [img, img1, img2, img3, img4, img5, img6]
for i in range(len(titles)):
    plt.subplot(3, 3, i + 1), plt.imshow(imgs[i]), plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()
Harris角点检测

相关文章

  • OpenCV+Python 角点检测

    定义 狭义:两条边的交点广义:图像中具有某些数学特征的坐标。如局部最大或最小的灰度 如上图有三个颜色的框框,如果我...

  • Haars角点检测

    Hessian焦点检测 基本概念 角点检测是检测边缘上的角点。 角点是曲率变大的点,由高斯曲率来描述 高斯曲率公式...

  • python 3+opencv 3.4(五)--图像特征提取

    应用:图像拼接、图像匹配 特征检测和提取算法:Harris(检测角点)SIFT(检测斑点blob)SURF(检测斑...

  • 计算机视觉 OpenCV Android | 特征检测与匹配之角

    本文要点总结(俩算法的联系与区别) Harris角点检测与Shi-Tomasi角点检测都是经典的角点特征提取算法,...

  • OpenCV+Python边缘检测

    Sobel算子 sobel算子计算的是图像的一阶梯度。灰度值变化越快的地方,梯度越大,如下图所示。 使用Sobel...

  • 第 8 章 检测兴趣点

    本章包括以下内容: 检测图像中的角点; 快速检测特征; 尺度不变特征的检测; 多尺度FAST 特征的检测。 8.2...

  • OpenCV+Python直线、圆检测

    霍夫变换 应用范围 只要能用数学方程表示的形状,都能用霍夫变换检测到 直线检测 直线数学方程:或者,其中是原点到直...

  • opencv+python -- 图像边缘检测

    图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图...

  • 核酸的琐事

    我们小区门外有两个核酸检测点,一个在东南角,一个在小区正东方向。 我偏爱东南角那个检测点,此处紧贴 13 号线地铁...

  • CV03_04:角点位置校正

      角点的位置校正也称亚像素角点检测算法,这个算法思想是基于经验与假设的。  (1)经验是:在角点所在的足够小的区...

网友评论

    本文标题:OpenCV+Python 角点检测

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