目录

一、什么是角点

二、Harris角点检测

1.原理:

2.角点检测的实现:

三、Shi-Tomasi角点检测

1.原理:

2.实现:


一、什么是角点

1.举例:

对于A-F六个小图找到原始图像中的位置:

A和B是平面,图像中很多地方存在,难以准确找到

C和D是边缘,可以近似确定其位置

E和F是角点,可以迅速确定位置

2.角点对图像理解、分析起着重要作用,在三维场景重建运动估计、目标跟踪、目标识别、图像配准与匹配起着重要作用,现实世界里,角点对应物体拐角,道路十字路口、丁字路口

二、Harris角点检测

1.原理:

Harris角点检测是通过图像的局部小窗口观察图像,角点的特征是窗口沿着任意方向移动都会导致图像灰度的明显变化

转化为数学思想,将局部窗口向各个方向移动(u,v)并计算所有灰度差异总和,没有变化或比较小为平坦区域,表达式如下:E(u,v)= 
其中I(x, y)是局部窗口的图像灰度,I(x + u,y + v)是平移后的图像灰度,w(x, y)是窗口函数,该可以是矩形窗口,也可以是对每一个像素赋予不同权重的高斯窗口,如下所示:

利用泰勒级数进行展开I(x+u,y+v)=I(x,y)++

M矩阵决定了E(x,y)的值,M是Ix和Iy的二次项函数,可以表示成椭圆的形状,椭圆的长短半轴由M的特征值入决定,方向由特征矢量决定

 

椭圆函数特征值与图像直线、角点、平面之间的关系:

1>图像中的直线:一个特征值大,另一个特征值小,λ1>>λ2或λ2>>λ1,椭圆函数值在某一方向上大,在其他方向上小
2>图像中的平面:两个特征值都小,且近似相等,椭圆函数数值在各个方向上都小。
3>图像中的角点:两个特征值都大,且近以相等,椭圆函数在所有方向都增大

Harris角点计算方法是通过计算一个角点响应值R来判断
R = detM - 
detM为矩阵M的行列式; traceM为矩阵M的迹; a为常数取值范围为0.04~0.06

detM=,traceM=

2.角点检测的实现:

dst=cv.cornerHarris(src,blockSize,ksize,k)

参数:

src:数据类型为32的输入图像

blockSize:角点检测中需要考虑的邻域大小

k:角点检测中的自由参数,取值[0.04,0.06]

例:

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv
img=cv.imread('building.jpg')
gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
#plt.imshow(img,cmap=plt.cm.gray)
#plt.show()
gray=np.float32(gray)
dst=cv.cornerHarris(gray,2,3,0.05)
img[dst>0.001*dst.max()]=[0,0,255]
plt.figure(figsize=(10,8),dpi=100)
plt.imshow(img[:,:,::])
plt.show()

三、Shi-Tomasi角点检测

1.原理:

Shi-Tomasi算法一般会比Harris算法得到更好的角点,改进的方法是,若矩阵M的两个特征值中较小的一个大于阈值,则认为他是角点,即,R=min(),从下图中可以看出都大于最小值,被认为是角点

2.实现:

corners=cv.goodFeaturesToTrack(image,maxCorners,qualityLevel,minDistance)

参数:

maxCorners:获取角点数的数目

quulityLevel:该参数指出最低可接受的角点质量水平,在0-1之间

minDistance:角点之间最小的欧氏距离,避免得到相邻特征点

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv
img=cv.imread('building.jpg')
gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
corners=cv.goodFeaturesToTrack(gray,1000,0.01,10)
for i in corners:x,y=i.ravel()cv.circle(img,(int(x),int(y)),2,(0,0,255),-1)
plt.imshow(img[:,:,::])
plt.show()

【OpenCV--角点特征】相关推荐

  1. 【OpenCV十六新手教程】OpenCV角检测Harris角点检测

    本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/29356187 作者:毛星云(浅墨) ...

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

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

  3. opencv角点检测学习总结

    学习opencv 角点检测 如果一个点在两个正交方向上都有明显的导数,则我们认为此点更倾向于是独一无二的,所以许多可跟踪的特征点都是角点. 一下为角点检测中用到的一些函数 cvGoodFeatures ...

  4. 【OpenCV-Python】28.OpenCV的特征检测——特征点检测

    28.OpenCV的特征检测--特征点检测 文章目录 前言 一.FAST特征检测 二.SIFT特征检测 三.ORB特征检测 四.OpenCV-Python资源下载 总结 前言   特征点是图像中具有唯 ...

  5. OpenCV中的特征匹配+单应性以查找对象

    OpenCV中的特征匹配+单应性以查找对象 1. 效果图 2. 源码 参考 这篇博客将混合calib3d模块中的特征匹配和单应性,在复杂图像中查找已知对象. 1. 效果图 特征匹配 & 单应性 ...

  6. OpenCV中的特征匹配(Feature Matching)

    OpenCV中的特征匹配(Feature Matching) 1. 效果图 2. 原理 3. 源码 3.1 SIFT关键点检测+Knn近邻匹配 3.2 ORB关键点检测+蛮力特征匹配 3.3 SIFT ...

  7. OpenCV仿射变换 SURF特征点描述合辑

    原文:http://blog.csdn.net/poem_qianmo/article/details/33320997?utm_source=tuicool&utm_medium=refer ...

  8. 光流 | 图像特征匹配:特征光流与角点特征

    /********************************************************** github:https://github.com/MichaelBeechan ...

  9. OpenCV检测面部特征点的实例(附完整代码)

    OpenCV检测面部特征点的实例 OpenCV检测面部特征点的实例 OpenCV检测面部特征点的实例 #include "opencv2/objdetect.hpp" #inclu ...

  10. OpenCV AKAZE本地特征匹配

    OpenCV AKAZE本地特征匹配 AKAZE本地特征匹配 简介 源代码 解释 加载图像和单应性 使用AKAZE检测关键点并计算描述符 使用蛮力匹配器查找2-nn个匹配项 检查我们的匹配项是否适合单 ...

最新文章

  1. php引入PHPMailer发送邮件
  2. 剑指offer青蛙跳台阶问题
  3. python 希尔伯特变换_python scipy signal.hilbert用法及代码示例
  4. php毕业设计遇到的问题,常见问题_php毕业设计_php课程设计_php大作业_原创作品下载网...
  5. python tkinter实例_python绘制一个图形示例源码(tkinter)
  6. 21 PP配置-生产计划-定义计划订单编号范围
  7. jQuery 的一个自动向上翻页的效果
  8. Python私有变量的用法
  9. 数据结构系列(四)栈与队列
  10. 微信小程序获取unionid与openid
  11. c语言 统计数量用count_C语言编程中统计输入的行数以及单词个数的方法
  12. 使用DataStudio连接本地虚拟机中的opengauss数据库
  13. OTO电子商务商业模式探析
  14. FireEye 网络攻击危害红队安全工具
  15. 给找机器学习/算法岗工作的同学们的一些建议
  16. 体育计算机培训心得,体育培训心得体会(精选4篇)
  17. 安装ADOBE READER时无法将数值写入键_php_sir_新浪博客
  18. ansible Inventory
  19. QGIS制作精美地图
  20. Broadcast详解

热门文章

  1. OC xcode 两个view重叠,先后层次关系的调整
  2. “转行做程序员”很难?这里有4个建议
  3. 计算机怎么让两个用户独立,两个显示屏如何用同一个电脑_一台主机两个显示器独立工作-win7之家...
  4. c语言中余数恒等于1,费马小定理_KANGMANG201102_新浪博客
  5. 医院挂号系统c语言yan,C语言版医院管理系统
  6. uni-app 微信小程序 用高德sdk获取地理位置,以及天气信息
  7. Content Delivery Networks CDN 内容分发网络
  8. STL 源码分析之string(一)基础篇
  9. 语音识别是不是人工智能?
  10. 计算方法:三次样条插值原理