一、特征匹配基本流程

  • 根据特定准则,提取图像中的特征点
  • 提取特征点周围的图像块,构造特征描述符
  • 通过特征描述符对比,实现特征匹配

二、Harris角点

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

何为角点

角点(corner points):

  • 局部窗口沿各方向移动,均产生明显变化的点
  • 图像局部曲率突变的点 

Harris角点检测基本思想

  • 从图像局部的小窗口观察图像特征
  • 角点定义<–窗口向任意方向的移动都导致图像灰度的明 显变化
  • 平坦区域:任何方向移动,无灰度变化
  • 边缘:沿着边缘方向移动,无灰度变化
  • 角点:沿任意方向移动,明显灰度变化

三、SIFT特征

SIFT,(Scale-invariant feature transform,SIFT),尺度不变特征转换。是用于图像处理领域的一种特征描述,具有旋转不变性、尺度不变性、亮度变化保持不变性,也就是说在图片发生旋转、伸缩、明暗变化时,图片的SIFT特征都保持稳定。
SIFT是一种局部特征,可在图像中检测出关键点,SIFT特征提取分为在图片上寻找关键点和提取关键点邻域信息两部分,在提取特征时只关注稳定的关键点及其附近的信息,使得特征更加具有描述性。

实质可以归为在不同尺度空间上查找特征点(关键点)的问题。

SIFT算法可以解决的问题

  • 目标的旋转、缩放、平移(RST)
  • 图像仿射/投影变换(视点viewpoint)
  • 弱光照影响(illumination)
  • 部分目标遮挡(occlusion)
  • 杂物场景(clutter)
  • 噪声

SIFT算法实现特征匹配主要有三个流程

  1. 提取关键点
  2. 对关键点附加 详细的信息(局部特征),即描述符
  3. 通过特征点(附带上特征向量的关 键点)的两两比较找出相互匹配的若干对特征点,建立景物间的对应关系

尺度空间

尺度空间理论是通过对一张原始图像进行尺度变换,获得多张图像,多尺度下的尺度空间表示序列,对这些序列进行尺度空间主轮廓的提取,并以该主轮廓作为一种特征向量,实现边缘、角点检测和不同分辨率上的特征提取等。

高斯核函数

在对有噪声的图像求取边缘点时,可以先用平滑滤波器对图像平滑,然后再对平滑后的图像求两阶微分,并检测局部极值点.
高斯卷积核是实现尺度变换的唯一线性核, 所以SIFT算法中使用了高斯滤波器对图像进行平滑处理
对原始图像做多次的高斯平滑处理,也就得到了一个多尺度图像金字塔

高斯金字塔的构建过程可分为两步:

1、对图像做高斯平滑
2、对图像做降采样

高斯图像金字塔共o组、s层, 则有:σ(s)= σ0 • 2^s/S

σ——尺度空间坐标;
s——sub-level层坐标;
σ0——初始尺度;
S——每组层数(一般为3~5)

关键点检测——DOG

DoG在计算上只需相邻高斯平滑后图像相减,因此简化了计算。

DoG高斯差分金字塔

可以通过高斯差分图像看出图像上的像素值变 化情况。(如果没有变化,也就没有特征。特征必须是变化尽可能多的点。)DOG图像描 绘的是目标的轮廓。

DoG的局部极值点

特征点是由DOG空间的局部极值点组成的。为了寻找DoG函数的极值点, 每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域 的相邻点大或者小。

中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个 点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。

去除边缘响应

由于DoG函数在图像边缘有较强的边缘响应,因此需要排除边缘响应。 DoG函数的峰值点在边缘方向有较大的主曲率,而在垂直边缘的方向有 较小的主曲率。主曲率可以通过计算在该点位置尺度的2×2的Hessian矩 阵得到,导数由采样点相邻差来估计

D的主曲率和H的特征值成正比,令为α最大特征值,β为最小的特征值,则公式的值在两个特征值相等时最小,随着的增大而增大。值越大,说明两个特征值的比值越大,即在某一个方向的梯度值越大,而在另一个方向的梯度值越小,而边缘恰恰就是这种情况。所以为了剔除边缘响应点,需要让该比值小于一定的阈值,因此,为了检测主曲率是否在某域值r下,只需检测

关键点方向分配

通过尺度不变性求极值点,可以使其具有缩放不变的性质。而利用关 键点邻域像素的梯度方向分布特性,可以为每个关键点指定方向参数方向, 从而使描述子对图像旋转具有不变性。

确定关键点的方向采用梯度直方图统计法, 统计以关键点为原点,一定区域内的图像像 素点对关键点方向生成所作的贡献。

关键点的主方向与辅方向

  • 关键点主方向:极值点周围区域梯度直方图的主峰值也是特征点方向
  • 关键点辅方向:在梯度方向直方图中,当存在另一个相当于主峰值 80%能量的峰值时,则将这个方向认为是该关键点的辅方向。

关键点描述

通过以上步骤,对于每一个关键点,拥有三个信息:位置、尺度以及方向。接下来就是为每个关键点建立一个描述符,用一组向量将这个关键点描述出来,使其不随各种变化而改变,比如光照变化、视角变化等等。这个描述子不但包括关键点,也包含关键点周围对其有贡献的像素点,并且描述符应该有较高的独特性,以便于提高特征点正确匹配的概率。

SIFT描述子是关键点邻域高斯图像梯度统计结果的一种表示。通过对关键点周围图像区域分块,计算块内梯度直方图,生成具有独特性的向量,这个向量是该区域图像信息的一种抽象,具有唯一性。

关键点匹配

关键点的匹配可以采用穷举法来完成,但是这样耗费的时间太 多,一般都采用kd树的数据结构来完成搜索。搜索的内容是以 目标图像的关键点为基准,搜索与目标图像的特征点最邻近的 原图像特征点和次邻近的原图像特征点。

SIFT特征的缺点

  • 相对来说实时性还不够高。
  • 有时特征点较少。
  • 对边缘光滑的目标无法准确提取特征点。

四、实验

Harris角点检测

import cv2
import numpy as np# 读入图像并转化为float类型,用于传递给harris函数img = cv2.imread("school1.jpg")
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray_img = np.float32(gray_img)
# 对图像执行harris
blockSize = 2     # 邻域半径
apertureSize = 3  # 邻域大小
Harris_detector = cv2.cornerHarris(gray_img, blockSize, apertureSize, 0.04)
# 腐蚀harris结果
dst = cv2.dilate(Harris_detector, None)
# 设置阈值
thres = 0.01 * dst.max()
img[dst > thres] = [255, 0, 0]
cv2.imshow('show', img)
cv2.waitKey()

SIFT特征匹配

#这部分主要是提取图像中的SIFT特征点,并在原图中绘制出来。
import cv2
img_path = r'./img1.jpg'
img = cv2.imread(img_path)
# print(img.shape)
# img = cv2.resize(img,(136 * 3,512 * 3))
cv2.imshow("original",img)gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)#使用SIFT
sift = cv2.xfeatures2d.SIFT_create()
keypoints, descriptor = sift.detectAndCompute(gray,None)cv2.drawKeypoints(image = img,outImage = img,keypoints = keypoints,flags = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS,color = (51,163,236))
cv2.imshow("SIFT",img)img = cv2.imread(img_path)
# img = cv2.resize(img,(136 * 3,76 * 3))cv2.waitKey(0)
cv2.destroyAllWindows()
#这部分代码是提取图像中的SIFT特征点,并利用PCA(主成分分析)进行降维,并提取特征值。注:SIFT提取出来的特征是一个128维的矩阵,我在这里利用PCA将其降成100维。
import cv2
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScalerimg_path = r'./photo/2-5-1250-1.bmp'
img = cv2.imread(img_path)
gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
#使用SIFT
sift = cv2.xfeatures2d.SIFT_create()
keypoints, descriptor = sift.detectAndCompute(gray,None)
# print(descriptor.shape)
# m,n=descriptor.shape
# print(m,n)
descriptor = StandardScaler().fit_transform(descriptor)
pca = PCA(n_components = 100)
pca.fit(descriptor)
print(pca.singular_values_)#查看特征值
print(pca.components_)#打印查看特征值对应的特征向量
# print(pca.components_.shape)cv2.drawKeypoints(image = img,outImage = img,keypoints = keypoints,flags = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS,color = (255,0,255))
cv2.imshow("SIFT",img)cv2.waitKey(0)
cv2.destroyAllWindows()

SIFT特征匹配主要包括2个阶段:

  1. SIFT特征的生成,即从多幅图像中提取对尺度缩放、旋转、亮度变化无关的特征向量。
  2. SIFT特征向量的匹配。

SIFT特征的生成一般包括以下几个步骤:

  1. 构建尺度空间,检测极值点,获得尺度不变性。
  2. 特征点过滤并进行精确定位。
  3. 为特征点分配方向值。

【计算机视觉实验二】特征提取与匹配相关推荐

  1. 计算机仿真技术应用报告,计算机仿真技术实验报告-实验二

    计算机仿真技术实验报告-实验二 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <仿真技术与应用>实验报告计算机仿真技术实验 ...

  2. 广州大学计算机视觉实验一:图像处理入门

    相关资料 广州大学计算机视觉实验一:图像处理入门 广州大学计算机视觉实验二:摄像机几何 广州大学计算机视觉实验三:图像滤波 广州大学计算机视觉实验四:图像分割 广州大学计算机视觉实验五:简易数字识别 ...

  3. 计算机视觉:特征提取与匹配

    目录 1. 特征提取和匹配 1.1 背景知识 1.2 特征匹配基本流程 1.3 局部特征描述子 2. Harris角点检测 2.1 角点(corner points) 2.2 HARRIS角点检测基本 ...

  4. 西电计算机视觉实验报告二,计算机视觉实验报告Experiment3

    <计算机视觉实验报告Experiment3>由会员分享,可在线阅读,更多相关<计算机视觉实验报告Experiment3(8页珍藏版)>请在人人文库网上搜索. 1.Experim ...

  5. 过年也学(nei)习 (juan)| 图像特征提取与匹配技术

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:william 链接:https://zhuanlan.zh ...

  6. 自动驾驶汽车视觉- 图像特征提取与匹配技术

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:william 链接:https://zhuanlan.zhihu.com/p/13330196 ...

  7. python图像特征提取与匹配_图像特征特点及其常用的特征提取与匹配方法

    常用的图像特征有颜色特征.纹理特征.形状特征.空间关系特征. 一颜色特征 (一)特点:颜色特征是一种全局特征,描述了图像或图像区域所对应的景物的表面性质.一般颜色特征是基于像素点的特征,此时所有属于图 ...

  8. LIRE代码剖析3——常用的特征提取与匹配方法

    既然图像检索的思想是将图像处理成长度有限的特征字符串,那常用的特征和匹配方法又有哪些呢? 常用的图像特征有颜色特征.纹理特征.形状特征.空间关系特征.由于一种特征总是存在无法克服的缺陷,或者检索太慢( ...

  9. 计算机视觉实验:边缘提取与特征检测

    秋风阁--北溪入江流:https://focus-wind.com/ 秋风阁--计算机视觉实验:边缘提取与特征检测 文章目录 一:实验内容 二:实验过程 (一)边缘提取 (1)卷积算子 a:rober ...

最新文章

  1. 三十七、Prim算法--求解最小生成树
  2. 女生读计算机专业好,女生选择计算机专业就读好吗?
  3. 00设计模式——指导规则
  4. Iterator迭代器原理
  5. lepus监控oracle数据库_一文看懂lepus天兔数据库监控系统如何搭建
  6. ajax datatype_JavaScript学习笔记(二十七) ajax及ajax封装
  7. flash挂载到系统 spi_jffs2根文件系统挂载不上spi flash
  8. 我的世界java版复仇双持_我的世界1.9更新之双持武器
  9. java 预览office_java在线预览office
  10. markdown不允许还有人不会
  11. 零基础如何快速入门深度学习?
  12. “OpAfrica”行动:匿名者攻击南非武器采购机构
  13. Linux查看登录日志
  14. 找到源码了!使用python+机器学习方法进行情感分析(详细步骤)
  15. Lesson 01 for Plotting in R for Biologists
  16. node解决request返回内容gzip乱码问题
  17. 中国首台云电脑全面解析——天霆云计算董事长谈天霆专访
  18. u盘如何安装xp和linux,怎样从U盘安装Windows XP?
  19. 维山VS073高拍仪技术规格说明书
  20. 2021 An Updated Comparison of Four Low Earth Orbit Satellite Constellation Systems to Provide Global

热门文章

  1. 浅谈SAP公有云:S4 HANA Cloud
  2. 衢州,“最多跑一次”的先行者
  3. studio升级后butterknife神坑
  4. 物联网操作系统HelloX V1.82发布公告
  5. 循迹模式——红外循迹模块使用介绍
  6. 立象(ARGOX) 条码标签打印机通用库 PLLB(BWIN-SCAPI)
  7. 湖南省永州市谷歌高清卫星地图下载
  8. 阿里技术leader:哪有什么天生的领导力,不过是后期不断磨练罢了
  9. 技术干货|昇思MindSpore 1.5版本中的亲和算法库——MindSpore Boost
  10. ATC 19 EROFS: A Compression-friendly Readonly File System for Resource-scarce Devices