计算机视觉(二)HARRIS角点检测算法与SIFT

article/2025/10/8 2:05:25

文章目录

  • 前言
  • 一、HARRIS角点检测算法
    • 1.什么是角点(corner points)
    • 2.角点检测算法的基本思想
    • 3.什么是好的角点检测算法
    • 4.角点特征的数学刻画
    • 5.度量角点响应
    • 6.HARRIS角点检测器的响应函数
    • 7.HARRIS角点检测算法的优点
    • 8.HARRIS角点检测算法的缺点
    • 9.HARRIS角点检测实例
    • 10.寻找图像中对应点
  • 二、SIFT(尺度不变特征变换)
    • 1.SIFT的目的与意义
    • 2.SIFT算法解决的问题
    • 3.SITF需要查找的特征点
    • 4.SITF特性
    • 5.什么是尺度空间
    • 6.如何实现特征匹配
    • 7.SITF特征生成的一般步骤
    • 8.检测兴趣点
    • 9.关键点检测一 DOG
    • 10.描述子
    • 11.匹配描述子
    • 12.SIFT的不足
  • 总结


前言

本文参考自《Python计算机视觉编程》一书及其他作者的优质博客


一、HARRIS角点检测算法

1.什么是角点(corner points)

角点具有的特征:
局部窗口沿各方向移动,均发生明显变化的点;图像局部曲率突变的点;轮廓之间的交点;对于同一场景,即使发生变化,通常具备稳定性质的特征;
该点附近区域的像素点无论在梯度方向上还是其梯度幅值上有着较大变化
在这里插入图片描述

2.角点检测算法的基本思想

使用一个固定的小窗口在图像上进行任意方向的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。

3.什么是好的角点检测算法

1.检测出图像中“真实的”角点
2.准确的定位性能
3.很高的稳定性
4.具有对噪音的鲁棒性
5.具有较高的计算效率

4.角点特征的数学刻画

当窗口发生[u,v]移动时,滑动前与滑动后对应的窗口中的像素点灰度变化描述如下:
在这里插入图片描述所以得到,当在平坦区域时,窗口向任意方向移动,无灰度变化;在边缘区域时,沿着边缘方向移动,无灰度变化;在角点区域时,沿着任意方向移动,有明显灰度变化
在这里插入图片描述经过一系列的演化之后,E(u,v)可以更新为:
在这里插入图片描述其中矩阵M是一个2x2的矩阵,可由图像导数求得:

在这里插入图片描述在这里插入图片描述

5.度量角点响应

角点响应函数R
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

6.HARRIS角点检测器的响应函数

HARRIS角点检测器的响应函数会返回像素值为HARRIS响应函数值的一幅图像。
代码如下:

def compute_harris_response(im, sigma=3):"""在一幅灰度图像中,对每个像素计算Harris角点检测器响应函数"""# 计算导数imx = zeros(im.shape)filters.gaussian_filter(im, (sigma, sigma), (0,1), imx)    imy = zeros(im.shape)filters.gaussian_filter(im, (sigma, sigma), (1,0), imy)# 计算Harris矩阵的分量Wxx = filters.gaussian_filter(imx*imx, sigma)Wxy = filters.gaussian_filter(imx*imy, sigma)Wyy = filters.gaussian_filter(imy*imy, sigma)# 计算特征值和迹Wdet = Wxx * Wyy - Wxy**2Wtr = Wxx + Wyyreturn Wdet / Wtr

现在,我们需要从这幅图像中挑选出需要的信息。
然后,选取像素值高于阈值的所有图像点;
再加上额外的限制,即角点之间的间隔必须大于设定的最小距离。
这种方法会产生很好的角点检测结果。
为了实现该算法,我们获取所有的候选像素点,以角点响应值递减的顺序排序,
然后将距离已标记为角点位置过近的区域从候选像素点中删除。
代码如下:

def get_harris_points(harrisim, min_dist=10, threshold=0.1):"""从一幅Harris响应图像中返回角点。min_dist为分割角点和图像边界的最小像素数目"""# 寻找高于阈值的候选角点corner_threshold = harrisim.max() * thresholdharrisim_t = (harrisim > corner_threshold) * 1# 得到候选点的坐标coords = array(harrisim_t.nonzero()).T# 以及它们的Harris响应值candidate_values = [harrisim[c[0], c[1]] for c in coords]# 对候选点按照Harris响应值进行排序index = argsort(candidate_values)# 将可行点的位置保存到数组中allowed_locations = zeros(harrisim.shape)allowed_locations[min_dist:-min_dist,min_dist:-min_dist] = 1# 按照min_distance原则,选择最佳Harris点filtered_coords = []for i in index:if allowed_locations[coords[i,0], coords[i,1]] == 1:filtered_coords.append(coords[i])allowed_locations[(coords[i,0]-min_dist):(coords[i,0]+min_dist),(coords[i,1]-min_dist):(coords[i,1]+min_dist)] = 0return filtered_coords

7.HARRIS角点检测算法的优点

1.旋转不变性,即转过一定的角度但是其形状保持不变
2.对于图像灰度的仿射变化具有部分的不变性,由于仅仅使用了图像的一阶导数,对于图像灰度平移变化不变;
3.对于图像灰度尺度变化不变。

8.HARRIS角点检测算法的缺点

1.对尺度很敏感,不具备几何尺度不变性
2.提取的角点是像素级的

9.HARRIS角点检测实例

代码:

import filters
from pylab import *
from PIL import Image
from PCV.localdescriptors import harris
# 读入图像if __name__ == '__main__':im = array(Image.open('D:/桌面/总/计算机视觉/第二次试验,SIFT与HARRIS角点/测试集/1.jpg').convert('L'))# 检测harris角点harrisim = harris.compute_harris_response(im)# Harris响应函数harrisim1 = 255 - harrisimfigure()gray()#画出Harris响应图subplot(141)imshow(harrisim1)print (harrisim1.shape)axis('off')axis('equal')threshold = [0.01,0.05,0.1]for i, thres in enumerate(threshold):filtered_coords = harris.get_harris_points(harrisim, 6, thres)subplot(1, 4, i+2)imshow(im)print(im.shape)plot([p[1] for p in filtered_coords], [p[0] for p in filtered_coords], '*')axis('off')show()def compute_harris_response(im, sigma=3):"""在一幅灰度图像中,对每个像素计算Harris角点检测器响应函数"""# 计算导数imx = zeros(im.shape)filters.gaussian_filter(im, (sigma, sigma), (0, 1), imx)imy = zeros(im.shape)filters.gaussian_filter(im, (sigma, sigma), (1, 0), imy)# 计算Harris矩阵的分量Wxx = filters.gaussian_filter(imx * imx, sigma)Wxy = filters.gaussian_filter(imx * imy, sigma)Wyy = filters.gaussian_filter(imy * imy, sigma)# 计算特征值和迹Wdet = Wxx * Wyy - Wxy ** 2Wtr = Wxx + Wyyreturn Wdet / Wtrdef get_harris_points(harrisim, min_dist=10, threshold=0.1):"""从一幅Harris响应图像中返回角点。min_dist为分割角点和图像边界的最小像素数目"""# 寻找高于阈值的候选角点corner_threshold = harrisim.max() * thresholdharrisim_t = (harrisim > corner_threshold) * 1# 得到候选点的坐标coords = array(harrisim_t.nonzero()).T# 以及它们的Harris响应值candidate_values = [harrisim[c[0], c[1]] for c in coords]# 对候选点按照Harris响应值进行排序index = argsort(candidate_values)# 将可行点的位置保存到数组中allowed_locations = zeros(harrisim.shape)allowed_locations[min_dist:-min_dist, min_dist:-min_dist] = 1# 按照min_distance原则,选择最佳Harris点filtered_coords = []for i in index:if allowed_locations[coords[i, 0], coords[i, 1]] == 1:filtered_coords.append(coords[i])allowed_locations[(coords[i, 0] - min_dist):(coords[i, 0] + min_dist),(coords[i, 1] - min_dist):(coords[i, 1] + min_dist)] = 0return filtered_coords

结果展示:
在这里插入图片描述使用HARRIS角点检测器检测角点:第二张图像到第四张图像分别为阈值为0.01、0.05和0.1检测出的角点
原图如下:
在这里插入图片描述结果分析:
增大α的值,将会减小角点响应值R,从而降低角点检测的灵性,减少被检测角点的数量;减小α值,将增大角点响应值R,增加角点检测的灵活性,增加被检测角点的数量。

10.寻找图像中对应点

由于HARRIS角点只能检测出图像中的兴趣点,但是没有给出通过比较图像间的兴趣点来寻找匹配角点的方法。我们需要在每个点上加入描述子信息,并给出一 个比较这些描述子的方法。

兴趣点描述子是分配给兴趣点的一个向量,描述该点附近的图像的表观信息。描述子越好,寻找到的对应点越好。我们用对应点或者点的对应来描述相同物体和场景点在不同图像上形成的像素点。
代码如下:

# -*- codeing =utf-8 -*-
# @Time : 2021/3/22 19:23
# @Author : ArLin
# @File : demo2.py
# @Software: PyCharm
# -*- coding: utf-8 -*-
from pylab import *
from PIL import Image
from PCV.localdescriptors import harris
from PCV.tools.imtools import imresizeim1 = array(Image.open("../JMU/9.jpg").convert("L"))
im2 = array(Image.open("../JMU/12.jpg").convert("L"))# resize加快匹配速度
im1 = imresize(im1, (im1.shape[1]//2, im1.shape[0]//2))
im2 = imresize(im2, (im2.shape[1]//2, im2.shape[0]//2))wid = 5
harrisim = harris.compute_harris_response(im1, 5)
filtered_coords1 = harris.get_harris_points(harrisim, wid+1)
d1 = harris.get_descriptors(im1, filtered_coords1, wid)harrisim = harris.compute_harris_response(im2, 5)
filtered_coords2 = harris.get_harris_points(harrisim, wid+1)
d2 = harris.get_descriptors(im2, filtered_coords2, wid)print('starting matching')
matches = harris.match_twosided(d1, d2)figure()
gray()
harris.plot_matches(im1, im2, filtered_coords1, filtered_coords2, matches)
show()

结果展示:
在这里插入图片描述结果分析:
虽然大部分的对应点都匹配成功了,但是我们还是可以明显发现存在一些不正确的匹配,这是因为,与现代的一些方法相比,图像像素块的互相关矩阵具有较弱的描述性。实际运用中,我们通常使用更稳健的方法来处理这些对应匹配。这些描述符还有一个问题,它们不具有尺度不变性和旋转不变性,而算法中像素块的大小也会影响对应匹配的结果。
而且,Harris的算法效率也不高。

二、SIFT(尺度不变特征变换)

1.SIFT的目的与意义

1999年David G.Lowe教授总结了基于特征不变技术的检测方法,在图 像尺度空间基础上,提出了对图像缩放、旋转保持不变性的图像局部 特征描述算子-SIFT(尺度不变特征变换),该算法在2004年完善

2.SIFT算法解决的问题

在这里插入图片描述

3.SITF需要查找的特征点

这些点是一些十分突出的点,不会因光照、尺度、旋转等因素的改变而消 失,比如角点、边缘点、暗区域的亮点以及亮区域的暗点。假定两幅图像中 有相同的景物,那么使用某种算法分别提取各自的特征点,这些点之间会有 相互对应的匹配关系。

在这里插入图片描述

4.SITF特性

1.特性独特性,也就是特征点可分辨性高,类似指纹,适合在海量数据中匹配。
2.多量性,提供的特征多。
3.高速性,就是速度快。
4.可扩展,能与其他特征向量联合使用。

5.什么是尺度空间

尺度空间理论最早于1962年提出,其主要思想是通过对原 始图像进行尺度变换,获得图像多尺度下的空间表示。从而实 现边缘、角点检测和不同分辨率上的特征提取,以满足特征点 的尺度不变性。 尺度空间中各尺度图像的模 糊程度逐渐变大,能够模拟人在 距离目标由近到远时目标在视网 膜上的形成过程。 尺度越大图像越模糊。
在这里插入图片描述

6.如何实现特征匹配

在不同尺度空间上查找特征点(关键点)的问题)
1、提取关键点;
2、对关键点附加详细的信息(局部特征),即描述符;
3、通过特征点(附带上特征向量的关键点)的两两比较找出相互匹配的若干对特征点,建立景物间的对应关系。

7.SITF特征生成的一般步骤

(1)构建尺度空间,检测极值点,获得尺度不变性;
(2)特征点过滤并进行精确定位;
(3)为特征点分配方向值;
(4)计算变换参数
当两幅图像的Sift特征向量生成以后,下一步就可以采用关键点特征向量的欧式距离来作为两幅图像中关键点的相似性判定度量。取图1的某个关键点,通过遍 历找到图像2中的距离最近的两个关键点。在这两个关键点中,如果次近距离除以最近距离小于某个阙值,则判定为一对匹配点。

8.检测兴趣点

代码如下:

# -*- codeing =utf-8 -*-
# @Time : 2021/3/22 19:34
# @Author : ArLin
# @File : demo3.py
# @Software: PyCharm
# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
from PCV.localdescriptors import sift
from PCV.localdescriptors import harris
import os# 添加中文字体支持2
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"C:\Windows\WinSxS\amd64_microsoft-windows-font-truetype-simsun_31bf3856ad364e35_10.0.19041.1_none_b0fa2c8e0f0c57df\SimSun.ttc", size=14)imname = 'D:/桌面/总/计算机视觉/第二次试验,SIFT与HARRIS角点/测试集/2.jpg'
im = array(Image.open(imname).convert('L'))
sift.process_image(imname, 'empire.sift')
l1, d1 = sift.read_features_from_file('empire.sift')figure()
gray()
subplot(131)
sift.plot_features(im, l1, circle=False)
title(u'SIFT特征',fontproperties=font)
subplot(132)
sift.plot_features(im, l1, circle=True)
title(u'用圆圈表示SIFT特征尺度',fontproperties=font)# 检测harris角点
harrisim = harris.compute_harris_response(im)subplot(133)
filtered_coords = harris.get_harris_points(harrisim, 6, 0.1)
imshow(im)
plot([p[1] for p in filtered_coords], [p[0] for p in filtered_coords], '*')
axis('off')
title(u'Harris角点',fontproperties=font)show()def process_image(imagename, resultname, params="--edge-thresh 10 --peak-thresh 5"):"""处理一幅图像,然后将结果保存在文件中"""if imagename[-3:] != 'pgm':# 创建一个pgm文件im = Image.open(imagename).convert('L')im.save('tmp.pgm')imagename = 'tmp.pgm'cmmd = str("sift" + imagename + "--output=" + resultname + " " + params)os.system(cmmd)print('processed', imagename, 'to', resultname)def read_features_from_file(filename):"""读取特征值属性值,然后将其以矩阵形式返回"""f = loadtxt(filename)return f[:, :4], f[:, 4:]  # 特征位置,描述子def plot_features(im, locs, circle=False):"""显示带有特征的图像输入:im(数组图像),locs(每个特征的行、列、尺度和方向角度)"""def draw_circle(c,r):t = arange(0,1.01,.01)*2*pix = r*cos(t) + c[0]y = r*sin(t) + c[1]plot(x,y,'b',linewidth=2)imshow(im)if circle:for p in locs:draw_circle(p[:2],p[2])else:plot(locs[:,0],locs[:,1],'ob')axis('off')return

结果展示:
在这里插入图片描述结果分析:

sift和Harris角点的两种算子选择了不同的坐标
SIFT算法的实质是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT所查找到的关键点是一些十分突出,不会因光照,仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等

9.关键点检测一 DOG

在这里插入图片描述

10.描述子

上面讨论的兴趣点(关键点)位置描述子给出了兴趣点的位置和尺度信息。为了实现旋转不变性,基于每个点周围图像梯度的方向和大小,SIFT 描述子又引入了参考方向。SIFT 描述子使用主方向描述参考方向。主方向使用方向直方图(以大小为权重)来度量。

11.匹配描述子

对于将一幅图像中的特征匹配到另一幅图像的特征,一种稳健的准则(同样是由Lowe提出的)是使用者两个特征距离和两个最匹配特征距离的比率。相比于图像中的其他特征,该准则保证能够找到足够相似的唯一特征。使用该方法可以使错误的匹配数降低。下面的代码实现了匹配函数。
代码:

from PIL import Image
from pylab import *
import sys
from PCV.localdescriptors import siftif len(sys.argv) >= 3:im1f, im2f = sys.argv[1], sys.argv[2]
else:
#  im1f = '../data/sf_view1.jpg'
#  im2f = '../data/sf_view2.jpg'im1f = 'D:/桌面/总/计算机视觉/第二次试验,SIFT与HARRIS角点/测试集/3.jpg'im2f = 'D:/桌面/总/计算机视觉/第二次试验,SIFT与HARRIS角点/测试集/4.jpg'
#  im1f = '../data/climbing_1_small.jpg'
#  im2f = '../data/climbing_2_small.jpg'
im1 = array(Image.open(im1f))
im2 = array(Image.open(im2f))sift.process_image(im1f, 'out_sift_1.txt')
l1, d1 = sift.read_features_from_file('out_sift_1.txt')
figure()
gray()
subplot(121)
sift.plot_features(im1, l1, circle=False)sift.process_image(im2f, 'out_sift_2.txt')
l2, d2 = sift.read_features_from_file('out_sift_2.txt')
subplot(122)
sift.plot_features(im2, l2, circle=False)#matches = sift.match(d1, d2)
matches = sift.match_twosided(d1, d2)
print ('{} matches'.format(len(matches.nonzero()[0])))figure()
gray()
sift.plot_matches(im1, im2, l1, l2, matches, show_below=True)
show()

结果展示:
在这里插入图片描述在这里插入图片描述HARRIS角点匹配对比结果:
在这里插入图片描述对比分析:

从匹配的准确率看来,相较harris算法。sift的算法具有更高的匹配性,显而易见地,sift算法具有较高的准确度及稳健性(对图片亮度不敏感);
从时间上来说,sift算法的效率远高与harris算法,所以sift算法具有更高的计算效率;
总的来说,两个算法由于选择特征点的方法不同,而显示出了差异bo
sift算法综合了许多前人已经整理出的算法的优点,
最后才得到了现在的算法(更优)。

以及在用SIFT检测时,注意要用相同大小的图片,否则在程序中无法运行。

12.SIFT的不足

SIFT采用henssian矩阵获取图像局部最值还是十分稳定的,
但是在求主方向阶段太过于依赖局部区域像素的梯度方向,
有可能使得找到的主方向不准确,后面的特征向量提取以及匹配都严重依赖于主方向,即使不大偏差角度也可以造成后面特征匹配的放大误差,从而匹配不成功;
另外图像金字塔的层取得不足够紧密也会使得尺度有误差,后面的特征向量提取同样依赖相应的度,发明者在这个问题上的折中解决方法是取适量的层然后进行插值。
SIFT是一种只利用到灰度性质的算法,忽略了色彩信息.

总结

总的来说,这篇博客花费的时间挺久的,并且因为在复习考研知识,导致许多地方没有完善清楚。但是,我还是会尽全力把这门课程认真学习,并且会在之后的时间,不断完善我的博客。


http://chatgpt.dhexx.cn/article/ssMUYlDL.shtml

相关文章

【特征检测】Harris角点检测中的数学推导

简介 本文主要是对Harris角点检测的数学公式进行推导,更加深入的掌握原理性的理论知识。 预备知识 椭圆的矩阵方程表示 在高中课本中,我们学习到标准椭圆及其方程(如下图所示): 其实,矩阵在运算中使用非…

Matlab实现Harris角点检测

一、代码 close all; clc; % 读取图像信息(原图为灰度图) img imread(lena.bmp); [m,n] size(img); % 先在原图外围扩展一圈 tmp zeros(m2,n2); tmp(2:m1,2:n1) img; % 初始化各一阶偏导矩阵 Ix zeros(m2,n2); Iy zeros(m2,n2); E zeros(m2,n2);…

角点检测和匹配之Harris与FAST角点检测

这一章主要内容: 1. Harris角点检测 2. FAST特征检测 3. 尺度不变的SURF特征检测 4.SURF检测描述 一、引言 在计算机视觉中,特征点或称兴趣点,角点(即图像的极值点,线段的终点,曲线曲率最大的点或水平、竖直方向上属性…

Matlab实现Harris角点检测算法

角点 一般的角点检测都是对有具体定义的、或者是能够具体检测出来的兴趣点的检测。这意味着兴趣点可以是角点,也可以是在某些属性上强度最大或者最小的孤立点、线段的终点,或者是曲线上局部曲率最大的点。在实践中,通常大部分称为角点检测的…

Harris 角点检测原理及实现

1. 图像中角点定义 沿各个方向,图像灰度均发生变化; 2.Harris原理 Harris中也是根据角点定义经角点定义,Harris中使用该像素点周围像素块和其周围的其它像素块的相关性刻画角点,相关性用平方差之和进行计算(SSD),SS…

基于Python手动实现Harris角点检测

最近在上数字图像处理课程,需要使用Python手动编写Harris角点检测算法,但是网上几乎没有找到手动编写的,只能手敲。 同时作为自己的第一篇博客,在这里记录一下。 一、Harris角点检测 原理(略) 可以参考博…

【OpenCV入门教程之十六】OpenCV角点检测之Harris角点检测

本系列文章由浅墨_毛星云 出品,转载请注明出处。 文章链接: http://blog.csdn.net/poem_qianmo/article/details/29356187 作者:毛星云(浅墨) 微博:http://weibo.com/u/1723155442 知乎:ht…

Harris 角点检测(Harris Corner Detection)(OpenCV实现)

匹配问题 Harris角点检测是Chris Harris和Mike Stephens在1988年提出的。主要用于运动图像的追踪。当时的普遍想法是利用边缘进行追踪,但是当相机或物体运动时你不知道朝哪个方向,相机的几何变换也是未知的,所以边缘匹配很难达到预期的效果。…

图像处理(九)——Harris角点检测

实现Harris角点检测算法,并与OpenCV的cornerHarris函数的结果进行比较。 特征点在图像中一般有具体的坐标,并具有某些数学特征,如局部最大或最小灰度、以及某些梯度特征等。角点可以简单的认为是两条边的交点。如下图所示: 在各个…

Harris角点检测 及 Matlab实验

目录 1 基础知识 1.1 图像变化的类型 1.2 提取点特征的作用 1.3 什么是好的角点检测算法? 2 Harris 角点检测 2.1 Harris角点检测基本思想 2.2 Harris角点检测:数学描述 3 总结 4 Matlab 实验 参考资料 角点是图像重要的特征,对图像…

Harris的角点检测和特征匹配

一.特征检测(提取) 基于特征的图像配准方法是图像配准中最常见的方法之一。它不是直接利用图像像素值,二十通过像素值导出的符号特征(如特征点、特征线、特征区域)来实现图像配准,因此可以克服利用灰度信息…

Harris角点及Shi-Tomasi角点检测

一、角点定义 有定义角点的几段话: 1、角点检测(Corner Detection)是计算机视觉系统中用来获得图像特征的一种方法,广泛应用于运动检测、图像匹配、视频跟踪、三维建模和目标识别等领域中。也称为特征点检测。 角点通常被定义为两条边的交点&#xff0…

Harris角点检测算法详解

Harris角点算法 特征点检测广泛应用到目标匹配、目标跟踪、三维重建等应用中,在进行目标建模时会对图像进行目标特征的提取,常用的有颜色、角点、特征点、轮廓、纹理等特征。现在开始讲解常用的特征点检测,其中Harris角点检测是特征点检测的基…

Harris角点检测算子

Harris角点检测算子是于1988年由CHris Harris & Mike Stephens提出来的。在具体展开之前,不得不提一下Moravec早在1981就提出来的Moravec角点检测算子。 1.Moravec角点检测算子 Moravec角点检测算子的思想其实特别简单,在图像上取一个W*W的“滑动窗…

特征检测之Harris角点检测

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达特征点又叫兴趣点或者角点。常被用于目标匹配,目标跟踪,三维重建等应用中。点特征主要指图像中的明显点,如突出的角点、边缘端点、极值…

Harris角点检测原理分析

主要参考了:http://blog.csdn.net/yudingjun0611/article/details/7991601 Harris角点检测算子 本文将该文拷贝了过来,并做了一些数学方面的补充,以方便对数学已经生疏的小伙伴们参考理解。由于补充的内容还挺多,所以还是将本文标…

【理解】经典角点检测算法--Harris角点

目录 什么是角点角点检测算法的原始思想:Harris角点检测原理Harris角点算法的基本步骤实践:Harris角点检测可能会用到的OpenCV API:手写API:1.展示图片:2.手写Harris特征:3.手写非极大值抑制:4.在原图标注角…

角点检测(Harris角点检测法)

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 目录 原理讲解【1】为何选取角点作为特征?【2】角点的定义&#xff1a…

Harris角点检测原理详解

关于角点的应用在图像处理上比较广泛,如图像匹配(FPM特征点匹配)、相机标定等。网上也有很多博客对Harris角点检测原理进行描述,但基本上只是描述了算法流程,而其中相关细节并未作出解释,这里我想对有些地方做出补充说明&#xff…

OpenCV——Harris角点检测

目录 一、Harris角点检测二、C代码三、python代码四、结果展示1、原始图像2、Harris角点 一、Harris角点检测 角点原理来源于人对角点的感性判断,即图像在各个方向灰度有明显变化。算法的核心是利用局部窗口在图像上进行移动判断灰度发生较大的变化,所以…