一、基本原理

关于角点特征检测,Chris Harris 和 Mike Stephens 在 1988 年的论文 A Combined Corner and Edge Detector 中进行了一次早期的尝试,所以现在它被称为 Harris Corner Detector。他把这个简单的想法转化为数学形式。它基本上找到了(a,b)在所有方向上的位移的强度差异。这表示如下:

窗口函数是矩形窗口或高斯窗口,它为下面的像素赋予权重。

我们必须最大化这个函数 E(u,v) 来进行角点检测。这意味着我们必须最大化第二项。将泰勒展开式应用于上述方程并使用一些数学步骤(请参阅您喜欢的任何标准教科书以获得完整推导),

我们这里只取一阶导数泰勒函数:

所以,我们得到最终方程::

上式中,令:

故而:

这里,a,b是给定的偏移,w是给定窗口,唯有M矩阵需要具体计算,这里,Ix和Iy分别是x和y方向的导数。(可以很容易的通过cv2.Sobel()得到)。

如下图,角点检测首先是在一个小区域进行。

在上图中,检测到的三个区域:

  • 1)flate平坦区域
  • 2)edge边缘区域
  • 3)coner角度区域

能够分别得到窗口下的E(a,b)值。按道理:根据E(a,b)能够判别角点也是可以的。然而,用谱分解的原理是更加干净的判别方法。

对矩阵求特征值,得到,通过比较 的关系,可以得到角点的判断。如下图所示:

接下来就是重点部分。上述操作结束后,会得到一个分数,基于一个用来决定窗口内是否包含角点的等式。

在以上公式中:

  • 是M的特征值。

所以这些特征值决定了这个区域是角点,还是边缘,还是flat。

  • 当|R|比较小时,也就是lambda 1和lambda 2比较小,区域是flat
  • 当R<0时, 也就是lambda 1远大于lambda 2或反之亦然,区域是边缘
  • 当R比较大时,也就是lambda 1和lambda2都大且相似,区域是角点

可以用下面的图来表示

所以Harris角点检测的结果是一个带着这些分数的灰度图。图像角点检测需要一个合适的阈值。我们将用一个简单的图来实现。

二 参考代码

import cv2
import numpy as npfilename = 'chessboard.jpg'
img = cv2.imread(filename)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)gray = np.float32(gray)
dst = cv2.cornerHarris(gray,2,3,0.04)#result is dilated for marking the corners, not important
dst = cv2.dilate(dst,None)# Threshold for an optimal value, it may vary depending on the image.
img[dst>0.01*dst.max()]=[0,0,255]cv2.imshow('dst',img)
if cv2.waitKey(0) & 0xff == 27:cv2.destroyAllWindows()

机器视觉-特征点检测:【2】Harrs角点检测原理相关推荐

  1. OpenCV角点检测之Harris角点检测

    本篇文章中,我们一起探讨了OpenCV中Harris角点检测相关的知识点,学习了OpenCV中实现Harris角点检测的cornerHarris函数的使用方法.此博文一共有两个配套的麻雀虽小但五脏俱全 ...

  2. OpenCV + CPP 系列(卅三)图像特征提取(Harris角点检测、Shi-Tomasi角点检测、自定义角点检测)

    文章目录 一.常用图像特征描述 二.Harris角点检测 演示Harris角点检测 三.Shi-Tomasi角点检测 四.自定义角点检测器 一.常用图像特征描述 SIFT.SURF.HOG.Haar. ...

  3. 角点检测--基于梯度的方法(Moravec角点检测、Harris角点检测、Shi-Tomasi角点检测)

    Moravec Detector Moravec角点检测是第一个提出兴趣点(interest points)的Paper.它的主要思想是:以每个像素为中心,有一个固定的滑动窗口.该方法计算并在八个方向 ...

  4. OpenCV之feature2d 模块. 2D特征框架(1)Harris 角点检测子 Shi-Tomasi角点检测子 定制化创建角点检测子 亚像素级的角点检测 特征点检测

    Harris 角点检测子 目标 本教程中我们将涉及: 有哪些特征?它们有什么用? 使用函数 cornerHarris 通过 Harris-Stephens方法检测角点. 理论 有哪些特征? 在计算机视 ...

  5. 基于光强的角点检测(SUSAN角点检测、FAST角点检测、FAST-ER角点检测)

    Corner Feature Detector(Intensity-Based) 基于光强比较的角点检测,直接比较光强(像素灰度值),而不计算梯度.所以实时性更好,所需的存储空间更小. SUSAN 角 ...

  6. Harris角点检测和Shi-Tomasi角点检测

    文章目录 什么是角点? Harris角点的基本思想 Harris角点特征的数学表达 Harris角点的性质 Harris算法具体步骤 Tshi-Tomasi角点检测和Harris的区别 什么是角点? ...

  7. OpenCV —— 角点检测之 Harris 角点检测、Shi-Tomasi 角点检测、FAST 角点检测

    角点检测 Harris 角点检测 实现原理 OpenCV 函数 优化 Shi-Tomasi 角点检测 实现原理 OpenCV 函数 FAST 角点检测 实现原理 OpenCV 函数 优化 在图像处理和 ...

  8. 自动泊车之停车位检测算法(角点检测/语义分割)

    作者丨机器学习AI算法工程 来源丨希骥智能网联汽车 点击进入->3D视觉工坊学习交流群 一.背景介绍 自动泊车大体可分为4个等级: 第1级,APA 自动泊车:驾驶员在车内,随时准备制动,分为雷达 ...

  9. 角点检测——发现图像的特征

    文章目录 写在最前 角点检测是什么?有什么用? OpenCV中的角点检测 Harris角点检测 Shi-Tomasi 角点检测 特征检测,从ORB说起 写在最后 往期文章 下载 写在最前 不知不觉,漫 ...

最新文章

  1. 1035 插入与归并
  2. DevExpress的下拉框控件LookUpEdit的使用、添加item选项值、修改默认显示值
  3. 十大开源ERP点评 献给深水区的中小企业和CIO们
  4. 文献阅读6-Entity-Relation Extraction as Multi-turn Question Answering(实体关系联合抽取,层次标签依赖关系,multi-turn QA)
  5. 赋值运算符(AssignmentOperator)
  6. VS2012一打开就停止工作的解决方法
  7. Https是如何工作的?
  8. 英文论文中“such as, for example, e.g., i.e., etc., et al. ”的用法分析 (转)
  9. Django2.1迁移数据库出错
  10. 【c++ primer5】重点知识总结
  11. 达梦数据库dm8使用心得
  12. 算法:如何判断两颗二叉树是否相等
  13. 0x03数据类型和变量
  14. 7-40 奥运排行榜
  15. HDU 3636-Dragon Balls
  16. 安装完Vmware-tools后找不到共享文件夹的解决办法-Ubuntu 18有效
  17. python PIL的Image.resize()和Image.thumbnail()函数的区别
  18. 酷讯网创始人陈华离职 或因与资方关系不合
  19. Java中关于字符串特别有意思的事
  20. pycharm/python报错:Traceback (most recent call last): .....

热门文章

  1. 文巾解题1738. 找出第 K 大的异或坐标值
  2. 机器学习中的矩阵向量求导(四) 矩阵向量求导链式法则
  3. c语言怎么删除字符串中的指定字符_Java中你知道几种从字符串中找指定的字符的数量
  4. byte数组转字符串_VS2012 C# 16进制数与字符串的互换
  5. HJ14 字符串排序
  6. 送给 Java 程序员的 Spring 学习指南
  7. encodeURIComponent的用法
  8. CORS support in Spring Framework--官方
  9. 技术高手如何炼成?--转自知乎
  10. Python基础知识(第七天)