【计算机视觉实验二】特征提取与匹配
一、特征匹配基本流程
- 根据特定准则,提取图像中的特征点
- 提取特征点周围的图像块,构造特征描述符
- 通过特征描述符对比,实现特征匹配
二、Harris角点
算法基本思想是使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。
何为角点
角点(corner points):
- 局部窗口沿各方向移动,均产生明显变化的点
- 图像局部曲率突变的点
Harris角点检测基本思想
- 从图像局部的小窗口观察图像特征
- 角点定义<–窗口向任意方向的移动都导致图像灰度的明 显变化
- 平坦区域:任何方向移动,无灰度变化
- 边缘:沿着边缘方向移动,无灰度变化
- 角点:沿任意方向移动,明显灰度变化
三、SIFT特征
SIFT,(Scale-invariant feature transform,SIFT),尺度不变特征转换。是用于图像处理领域的一种特征描述,具有旋转不变性、尺度不变性、亮度变化保持不变性,也就是说在图片发生旋转、伸缩、明暗变化时,图片的SIFT特征都保持稳定。
SIFT是一种局部特征,可在图像中检测出关键点,SIFT特征提取分为在图片上寻找关键点和提取关键点邻域信息两部分,在提取特征时只关注稳定的关键点及其附近的信息,使得特征更加具有描述性。
实质可以归为在不同尺度空间上查找特征点(关键点)的问题。
SIFT算法可以解决的问题
- 目标的旋转、缩放、平移(RST)
- 图像仿射/投影变换(视点viewpoint)
- 弱光照影响(illumination)
- 部分目标遮挡(occlusion)
- 杂物场景(clutter)
- 噪声
SIFT算法实现特征匹配主要有三个流程
- 提取关键点
- 对关键点附加 详细的信息(局部特征),即描述符
- 通过特征点(附带上特征向量的关 键点)的两两比较找出相互匹配的若干对特征点,建立景物间的对应关系
尺度空间
尺度空间理论是通过对一张原始图像进行尺度变换,获得多张图像,多尺度下的尺度空间表示序列,对这些序列进行尺度空间主轮廓的提取,并以该主轮廓作为一种特征向量,实现边缘、角点检测和不同分辨率上的特征提取等。
高斯核函数
在对有噪声的图像求取边缘点时,可以先用平滑滤波器对图像平滑,然后再对平滑后的图像求两阶微分,并检测局部极值点.
高斯卷积核是实现尺度变换的唯一线性核, 所以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个阶段:
- SIFT特征的生成,即从多幅图像中提取对尺度缩放、旋转、亮度变化无关的特征向量。
- SIFT特征向量的匹配。
SIFT特征的生成一般包括以下几个步骤:
- 构建尺度空间,检测极值点,获得尺度不变性。
- 特征点过滤并进行精确定位。
- 为特征点分配方向值。
【计算机视觉实验二】特征提取与匹配相关推荐
- 计算机仿真技术应用报告,计算机仿真技术实验报告-实验二
计算机仿真技术实验报告-实验二 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <仿真技术与应用>实验报告计算机仿真技术实验 ...
- 广州大学计算机视觉实验一:图像处理入门
相关资料 广州大学计算机视觉实验一:图像处理入门 广州大学计算机视觉实验二:摄像机几何 广州大学计算机视觉实验三:图像滤波 广州大学计算机视觉实验四:图像分割 广州大学计算机视觉实验五:简易数字识别 ...
- 计算机视觉:特征提取与匹配
目录 1. 特征提取和匹配 1.1 背景知识 1.2 特征匹配基本流程 1.3 局部特征描述子 2. Harris角点检测 2.1 角点(corner points) 2.2 HARRIS角点检测基本 ...
- 西电计算机视觉实验报告二,计算机视觉实验报告Experiment3
<计算机视觉实验报告Experiment3>由会员分享,可在线阅读,更多相关<计算机视觉实验报告Experiment3(8页珍藏版)>请在人人文库网上搜索. 1.Experim ...
- 过年也学(nei)习 (juan)| 图像特征提取与匹配技术
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:william 链接:https://zhuanlan.zh ...
- 自动驾驶汽车视觉- 图像特征提取与匹配技术
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:william 链接:https://zhuanlan.zhihu.com/p/13330196 ...
- python图像特征提取与匹配_图像特征特点及其常用的特征提取与匹配方法
常用的图像特征有颜色特征.纹理特征.形状特征.空间关系特征. 一颜色特征 (一)特点:颜色特征是一种全局特征,描述了图像或图像区域所对应的景物的表面性质.一般颜色特征是基于像素点的特征,此时所有属于图 ...
- LIRE代码剖析3——常用的特征提取与匹配方法
既然图像检索的思想是将图像处理成长度有限的特征字符串,那常用的特征和匹配方法又有哪些呢? 常用的图像特征有颜色特征.纹理特征.形状特征.空间关系特征.由于一种特征总是存在无法克服的缺陷,或者检索太慢( ...
- 计算机视觉实验:边缘提取与特征检测
秋风阁--北溪入江流:https://focus-wind.com/ 秋风阁--计算机视觉实验:边缘提取与特征检测 文章目录 一:实验内容 二:实验过程 (一)边缘提取 (1)卷积算子 a:rober ...
最新文章
- 三十七、Prim算法--求解最小生成树
- 女生读计算机专业好,女生选择计算机专业就读好吗?
- 00设计模式——指导规则
- Iterator迭代器原理
- lepus监控oracle数据库_一文看懂lepus天兔数据库监控系统如何搭建
- ajax datatype_JavaScript学习笔记(二十七) ajax及ajax封装
- flash挂载到系统 spi_jffs2根文件系统挂载不上spi flash
- 我的世界java版复仇双持_我的世界1.9更新之双持武器
- java 预览office_java在线预览office
- markdown不允许还有人不会
- 零基础如何快速入门深度学习?
- “OpAfrica”行动:匿名者攻击南非武器采购机构
- Linux查看登录日志
- 找到源码了!使用python+机器学习方法进行情感分析(详细步骤)
- Lesson 01 for Plotting in R for Biologists
- node解决request返回内容gzip乱码问题
- 中国首台云电脑全面解析——天霆云计算董事长谈天霆专访
- u盘如何安装xp和linux,怎样从U盘安装Windows XP?
- 维山VS073高拍仪技术规格说明书
- 2021 An Updated Comparison of Four Low Earth Orbit Satellite Constellation Systems to Provide Global
热门文章
- 浅谈SAP公有云:S4 HANA Cloud
- 衢州,“最多跑一次”的先行者
- studio升级后butterknife神坑
- 物联网操作系统HelloX V1.82发布公告
- 循迹模式——红外循迹模块使用介绍
- 立象(ARGOX) 条码标签打印机通用库 PLLB(BWIN-SCAPI)
- 湖南省永州市谷歌高清卫星地图下载
- 阿里技术leader:哪有什么天生的领导力,不过是后期不断磨练罢了
- 技术干货|昇思MindSpore 1.5版本中的亲和算法库——MindSpore Boost
- ATC 19 EROFS: A Compression-friendly Readonly File System for Resource-scarce Devices