Loading [MathJax]/jax/output/CommonHTML/jax.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >图像匹配中Harris角点特征提取

图像匹配中Harris角点特征提取

作者头像
mythsman
发布于 2022-11-14 06:27:05
发布于 2022-11-14 06:27:05
86900
代码可运行
举报
运行总次数:0
代码可运行

在进行图像检测或者是识别的时候,我们需要提取出一些有特征的点加以识别,最常用的就是基于点的识别。这里所谓的点,其实就是一些重要的点,比如轮廓的拐角,线段的末端等。这些特征比较容易识别,而且不容易受到光照等环境的影响,因此在许多的特征匹配算法中十分常见。

常见的特征点提取算法有Harris算 子(改进后的Shi-Tomasi算法)、Moravec算子、Forstner算子、小波变换算子等。现在就先介绍一下最常用的Harris角点检测算法。

简介

Harris算法的思想很简单,也很容易理解。

我们知道角点附近的区域相比于其他地方有这样一个显著的特点,就是无论沿着哪一个方向看,他灰度的变化率始终是很大的。也就是说假设我们有一个矩形窗口罩在角点附近,将这个窗口顺着任意方向移动一小段距离得到一个新的区域,将这个新的区域与旧的区域对应点的灰度做差得到的值始终很大。相比之下,平滑区域的变化就很小,而边缘区域沿着某些方向变化率大、某些方向变化率小。

Harris算法利用的就是这个特点,他首先定义了一个窗口函数来表示他选择的窗口区域,表示点的坐标,表示这个坐标所占的权值。有时候我们用0-1赋值,表示选定一块区域,也有时候我们用高斯滤波减少噪点的影响;然后定义了一个方向向量,以及表示窗口沿着方向移动后的梯度变化情况。并将做如下定义:

其中表示点的灰度值。

根据上面的介绍我们知道角点的特征就是的值取较大值。那么为了更方便的计算,我们对他需要进行一下化简:

泰勒展开:

其中分别为灰度沿x,y方向的导数。

转化为矩阵形式:

最后定义一个估价函数R:

其中,k是一个控制参数。

为M的特征值。

这个估价函数个特性,就是当R较小时,图像是平坦的;当R小于0时,图像是一个边缘;当R很大时,这个图像是一个角点。因此通常我们会对R设置一个阈值,大于这个阈值的点我们可以看做是角点。

OpenCV调用

OpenCV里封装了Harris算法,调用下看看效果,就不自己实现了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#coding:utf-8
import cv2
import numpy as np

img=cv2.imread('test.png',cv2.IMREAD_GRAYSCALE)
cv2.imshow('gray.png',img)#控制背景为黑色
cv2.imwrite('gray.png',img)
im=np.float32(img)
dst=cv2.cornerHarris(im,3,3,0.04)#生成估价矩阵

height,width=dst.shape
mark=dst>0.01*dst.max()#寻找具有较大权值的像素点
height,width=mark.shape
for i in xrange(height):
    for j in xrange(width):
        if mark[i][j]:
            cv2.circle(img,(j,i),5,255)#标记得到的点
cv2.imshow('Harris.png',img)
cv2.imwrite('Harris.png',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

重要的步骤就是在估价矩阵里找到较大的那些点。

效果图

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
OpenCV 之 角点检测
角点 (corners) 的定义有两个版本:一是 两条边缘的交点,二是 邻域内具有两个主方向的特征点。
用户8408908
2021/03/18
6390
OpenCV:特征及角点检测
大多数人都会玩拼图游戏。会得到很多小图像,需要正确组装它们以形成大的真实图像。问题是,你是如何去拼图的?同样地,将相同的理论投影到计算机程序上,以使得计算机也可以玩拼图游戏呢?如果计算机可以玩拼图游戏,为什么不能给计算机提供很多自然风光的真实图像,并告诉计算机将所有这些图像拼接成一个大图像呢?如果计算机可以将多个自然图像缝合在一起,那么如何给建筑物或任何结构提供大量图片并告诉计算机从中创建3D模型呢?
用户3578099
2023/09/01
5320
OpenCV:特征及角点检测
角点检测集锦(Harris,Shi-Tomasi,亚像素级角点检测)原理及相关实现
一个像素所在的区域一般情况下可以分为以下三种情况,平坦,边,角点三种情况,如下图最右边。 在角点处,沿任意方向运动都会引起像素颜色的明显变化等价于:在角点附近,图像梯度具有至少两个主方向。
种花家的奋斗兔
2020/11/13
1.2K0
Harris 像素级角点检测
在现实世界中,角点对应于物体的拐角,道路的十字路口、丁字路口等。从图像分析的角度来定义角点可以有以下两种定义:
为为为什么
2023/04/12
8990
Harris 像素级角点检测
OpenCV角点检测源代码分析(Harris和ShiTomasi角点)
OpenCV中常用的角点检测为Harris角点和ShiTomasi角点。 以OpenCV源代码文件 .\opencv\sources\samples\cpp\tutorial_code\TrackingMotion\cornerDetector_Demo.cpp为例,主要分析其中的这两种角点检测源代码。角点检测数学原理请参考我之前转载的一篇博客 http://www.cnblogs.com/riddick/p/7645904.html,分析的很详细,不再赘述。本文主要分析其源代码: 1. Harris角点检
一棹烟波
2018/03/19
2.1K0
OpenCV角点检测源代码分析(Harris和ShiTomasi角点)
opencv图像角点提取
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/179735.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
5580
图像局部特征提取
图像特征可以包括颜色特征、纹理特征、形状特征以及局部特征点等。其中局部特点具有很好的稳定性,不容易受外界环境的干扰。图像特征提取是图像分析与图像识别的前提,它是将高维的图像数据进行简化表达最有效的方式,从一幅图像的的数据矩阵中,我们看不出任何信息,所以我们必须根据这些数据提取出图像中的关键信息,一些基本元件以及它们的关系。
范中豪
2019/09/30
3K0
图像局部特征提取
通俗易懂的Harris 角点检测
如果这个特征点具有局部差异性,那么以这个特征点为中心,把窗口向360度任意一个方向移动,窗口的变化比较大,则这个特征点的周围环境变化比较大。
3D视觉工坊
2020/12/11
8240
通俗易懂的Harris 角点检测
Sober算子边缘检测与Harris角点检测1「建议收藏」
Harris opencv 的对应代码 cv2.cornerHarris(src, blockSize, ksize, k[, dst[, borderType]]) 参数类型 src – 输入灰度图像,float32类型 blockSize – 用于角点检测的邻域大小,就是上面提到的窗口的尺寸 ksize – 用于计算梯度图的Sobel算子的尺寸 k – 用于计算角点响应函数的参数k,取值范围常在0.04~0.06之间
全栈程序员站长
2022/09/14
5060
Sober算子边缘检测与Harris角点检测1「建议收藏」
特征检测之Harris角点检测
如果有n阶矩阵A,其矩阵的元素都为实数,且矩阵A的转置等于其本身,则称A为实对称矩阵。
Datawhale
2020/07/09
1.4K0
特征检测之Harris角点检测
harris角点检测_那就更详细一点吧
在现实世界中,角点对应于物体的拐角,道路的十字路口、丁字路口等。从图像分析的角度来定义角点可以有以下两种定义:
全栈程序员站长
2022/11/07
1.3K0
Harris角点学习[通俗易懂]
人们普遍认为角点是二维图像亮度变化剧烈的点或图像边缘曲线上曲率极大值的点。这些点在保留图像图形重要特征的同时,可以有效地减少信息的数据量,使其信息的含量很高,有效地提高了计算的速度,有利于图像的可靠匹配,使得实时处理成为可能。其在三维场景重建、运动估计、目标跟踪、目标识别、图像配准与匹配等计算机视觉领域起着非常重要的作用。
全栈程序员站长
2022/11/09
2990
Harris角点学习[通俗易懂]
C++ OpenCV特征提取之Harris角点检测
算法基本思想是使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。
Vaccae
2019/07/24
2.2K0
cv2.cornerHarris()详解 python+OpenCV 中的 Harris 角点检测
参考文献----------OpenCV-Python-Toturial-中文版.pdf 参考博客----------http://www.bubuko.com/infodetail-2498014.
徐飞机
2018/05/15
8.9K0
Harris角点提取后怎么匹配?
对于角点匹配算法的研究本文主要采用Harris算法提取图像中的角点,通过相似测度得到粗匹配点集,然后简单分析了两种提纯匹配点的简单聚类法和视差梯度约束法。 1. Harris算法角点检测 人眼对角点的识别通常是在一个局部的小区域或小窗口完成的。如果在各个方向上移动这个特征的小窗口,窗口内区域的灰度发生了较大的变化,那么就认为在窗口内遇到了角点。如果这个特定的窗口在图像各个方向上移动时,窗口内图像的灰度没有发生变化,那么窗口内就不存在角点;如果窗口在某一个方向移动时,窗口内图像的灰度发生了较大的变化,而在另一
智能算法
2018/04/03
2.5K0
Harris角点提取后怎么匹配?
Harris角点检测
算法:Harris角点检测是属于局部特征检测,利用移动的窗口在图像中计算灰度变化值,其中关键流程包括转化为灰度图像、计算差分图像、高斯平滑、计算局部极值、确认角点。
裴来凡
2022/05/28
3120
Harris角点检测
opencv角点检测学习总结[通俗易懂]
如果一个点在两个正交方向上都有明显的导数,则我们认为此点更倾向于是独一无二的,所以许多可跟踪的特征点都是角点。
全栈程序员站长
2022/09/27
9940
harris角点检测的简要总结
harris角点检测是一种特征提取的方法,而特征提取正是计算机视觉的一种重要手段。尽管它看起来很复杂,其实也是基于数学原理和简单的图像处理来实现的。 本文之前可以参看笔者写的几篇图像处理的文章,将会有助于更深入了解harris角点检测的实现。
charlee44
2019/08/13
1.8K0
VSLAM前端:图像特征提取
 视觉里程计主要是通过图像对运动进行估计。一副中等分辨率的图像就是一个维度巨大的矩阵,我们无法对矩阵直接进行估计,其面临的将是海量的计算,因此我们有必要对图像进行特征提取。特征就是图像中比较特别的地方,例如:角点、边缘等等,并且这些角点在相机运动及不同光照下应该保持稳定。
猫叔Rex
2021/04/07
9400
VSLAM前端:图像特征提取
【论文复现】找出图像中物体的角点
本文复现论文A COMBINED CORNER AND EDGE DETECTOR中提出的图像中的物体角点检测算法,也称Harris算法。原文连接https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=88cdfbeb78058e0eb2613e79d1818c567f0920e2
Eternity._
2024/12/24
910
【论文复现】找出图像中物体的角点
相关推荐
OpenCV 之 角点检测
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验