图像局部描述符【计算机视觉】

阅读: 评论:0

图像局部描述符【计算机视觉】

图像局部描述符【计算机视觉】

文章目录

  • 一、Harris角点检测算法
    • 1.什么是角点
    • 2. 角点检测算法基本思想是什么?
    • 3.角点响应函数R
    • 4. 用python实现Harris角点检测
      • (1)Harris角点检测器的响应函数
      • (2)返回Harris角点函数
      • (3)可视化
      • (4)Harris角点检测实例
      • (5)结果展示
    • 5. 用opencv实现Harris角点检测
      • 结果展示
    • 6. Harris角点检测算法优缺点:
      • (1)优点
      • (2)缺点:
  • 二、SIFT(尺度不变特征变换)
    • 1.SIFT概述
    • 2.SIFT特征提取及匹配
      • (1)特征点提取(关键点检测)
      • (2) 尺度空间的构建
      • (3)DOG算子(Difference of Gaussian)
      • (4)DOG局部极值检测
    • 3.特征点描述
    • 4.如何实现特征匹配?
    • 5.用python检测兴趣点
      • (1)将图像转换成.pgm格式文件
      • (2)读取图像特征值属性值
      • (3) 可视化
      • (4)检测兴趣点实例并与Harris角点检测对比
      • (5)结果展示
      • (6)结果分析
    • 6.用SIFT实现特征匹配
      • 代码展示
      • 结果展示
  • 三,匹配地理标记图像
    • 代码
    • 结果展示


一、Harris角点检测算法

1.什么是角点

下面有两幅不同视角的图像,通过找出对应的角点进行匹配

我们可以直观的概括下角点所具有的特征:

轮廓之间的交点;

对于同一场景,即使视角发生变化,通常具备稳定性质的特征;

该点附近区域的像素点无论在梯度方向上还是其梯度幅值上有着较大变化;

2. 角点检测算法基本思想是什么?

移动窗口W,位移为(u,v),比较移动前后的像素变化
其中窗口函数可以是平坦的,也可以是高斯的如下图:

首先,将图像窗口平移[u,v]产生灰度变化的自相关函数如下:

经过一系列E(u,v)表达式的演化, E(u,v)表达式可以更新为:

其中矩阵M是2x2矩阵,可由图像的导数求得:

3.角点响应函数R


其中k是常量,一般取值为0.04~0.06,这个参数仅仅是这个函数的一个系数,它的存在只是调节函数的形状而已。

4. 用python实现Harris角点检测

(1)Harris角点检测器的响应函数

Harris角点检测器的响应函数会返回像素值为 Harris 响应函数值的一幅图像。

from PIL import Image
from numpy import *
from pylab import *
from scipy.ndimage import filtersdef 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)#矩阵分量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

(2)返回Harris角点函数

def get_harris_points(harrisim,min_dist=10,threshold=0.5):#挑选高于阈值corner_threshold = thresholdharrisim_t = (harrisim > corner_threshold) * 1#得到坐标coords = array(o()).T#响应值candidate_values = [harrisim[c[0],c[1]] for c in coords]#按照响应值排序index = argsort(candidate_values)[::-1]#将可行点的位置存放于数组allowed_locations = zeros(harrisim.shape)allowed_locations[min_dist:-min_dist,min_dist:-min_dist] = 1#选择最佳的角点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

(3)可视化

def plot_harris_points(image,filtered_coords):#可视化figure(dpi = 1

本文发布于:2024-01-30 18:59:33,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170661237622150.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:局部   图像   视觉   计算机
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23