sift、surf、orb 特征提取——三维重建

VIPsift、surf、orb 特征提取——三维重建
参考文章:[sift、surf、orb 特征提取及最优特征点匹配]最近刚刚入门三维重建,在SFM算法的代码中注意到了feature_type( feature extraction method)这个参数,想细致了解一下这几种特征提取算法,在这里做一下笔记。SIFT简介SIFT(Scale-Invariant Feature Transform)——尺度不变特征变换,是一种计算机视觉的特征提取算法,用来侦测与描述图像中的局部特征。实质上,它是在不同的尺度空间上查找关键点(特征点),并计算出关键点的
开通可读全文 ·4.3k 人阅读
最低0.47元/天 解锁文章

参考文章:[sift、surf、orb 特征提取及最优特征点匹配]
最近刚刚入门三维重建,在SFM算法的代码中注意到了feature_type( feature extraction method)这个参数,想细致了解一下这几种特征提取算法,在这里做一下笔记,文章中删除线 的标记都是一些我存疑的点,还请大家评论区不吝赐教。

SIFT

简介

SIFT(Scale-Invariant Feature Transform)——尺度不变特征变换,是一种计算机视觉的特征提取算法,用来侦测与描述图像中的局部特征。

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

特征提取步骤

1.尺度空间的极值检测
尺度空间指一个变化尺度σ的二维高斯函数G(x,y,σ)与原图像I(x,y)卷积(即高斯模糊)后形成的空间:
在这里插入图片描述
L = G*I相当于对图片进行了滤波操作,不同的σ对图片进行的滤波程度不同。

在这里插入图片描述
经过不同程度滤波后的图片进行减法运算,得到DOG图
在这里插入图片描述

尺度不变特征应该既是空间域上又是尺度域上的局部极值。极值检测的大致原理是根据不同尺度下的高斯模糊化图像差异(Difference of Gaussians,DoG)寻找局部极值,这个点不仅要在图像域上是最大值,还要在尺度域上为最大值,寻找方法如图示,这些找到的极值所对应的点被称为关键点或特征点。
在这里插入图片描述
2.关键点定位
在不同尺寸空间下可能找出过多的关键点,有些关键点可能相对不易辨识或易受噪声干扰。该步借由关键点附近像素的信息、关键点的尺寸、关键点的主曲率来定位各个关键点,借此消除位于边上或是易受噪声干扰的关键点。
在这里插入图片描述
讲真。。。下面这张图说的有些看不懂,可能是我有些图像处理的基础知识没掌握
在这里插入图片描述
(r + 1)2/r的值在两个特征值相等的时候最小,随着r的增大而增大,因此,为了检测主曲率是否在某域值r下,只需检测:
在这里插入图片描述
if (α+β)/ αβ> (r+1)2/r, throw it out. 在Lowe的文章中,取r=10。
3. 方向定位
为了使描述符具有旋转不变性,需要利用图像的局部特征为给每一个关键点分配一个基准方向。通过计算关键点局部邻域的方向直方图,寻找直方图中最大值的方向作为关键点的主方向。
上一步中确定了每幅图中的特征点,为每个特征点计算一个方向,依照这个方向做进一步的计算, 利用关键点邻域像素的梯度方向分布特性为每个关键点指定方向参数,使算子具备旋转不变性。
在这里插入图片描述
在实际计算时,我们在以关键点为中心的邻域窗口内采样,并用直方图统计邻域像素的梯度方向。梯度直方图的范围是0~360度,其中每45度一个柱,总共8个柱, 或者每10度一个柱,总共36个柱。Lowe论文中还提到要使用高斯函数对直方图进行平滑,减少突变的影响。直方图的峰值则代表了该关键点处邻域梯度的主方向,即作为该关键点的方向。

4. 关键点描述子
找到关键点的位置、尺寸并赋予关键点方向后,将可确保其移动、缩放、旋转的不变性。此外还需要为关键点建立一个描述子向量,使其在不同光线与视角下皆能保持其不变性。SIFT描述子是关键点邻域高斯图像梯度统计结果的一种表示,见下图。通过对关键点周围图像区域分块,计算块内梯度直方图,生成具有独特性的向量,这个向量是该区域图像信息的一种抽象,具有唯一性。Lowe在原论文中建议描述子使用在关键点尺度空间内44的窗口中计算的8个方向的梯度信息,共44*8=128维向量表征。(opencv中实现的也是128维)
在这里插入图片描述
直方图中的峰值就是主方向,其他的达到最大值80%的方向可作为辅助方向
在这里插入图片描述该步中将建立所有scale中特征点的描述子(128维)。

通过对关键点周围图像区域分块,计算块内梯度直方图,生成具有独特性的向量,这个向量是该区域图像信息的一种抽象,具有唯一性。
在这里插入图片描述
首先将坐标轴旋转为关键点的方向,以确保旋转不变性。以关键点为中心取8×8的窗口。(有个问题,为什么这样就能保证旋转不变性了)
在这里插入图片描述这样就可以对每个feature形成一个4x4x8=128维的描述子,每一维都可以表示4*4个格子中一个的scale. 将这个向量归一化之后,就进一步去除了光照的影响。
在这里插入图片描述
在这里插入图片描述
具体可以参考这篇博客:https://www.cnblogs.com/liuchaogege/p/5155739.html***

Code

特征提取

def sift(filename):
    img = cv2.imread(filename) # 读取文件
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转化为灰度图
    sift = cv2.xfeatures2d_SIFT.create()
    keyPoint, descriptor 
VIP 2.2ORBSLAM3之ORB、SIFT、SURF、Harris角点、Shi-Tomas角点特征点提取方法 本节对ORB特征、SIFT特征、SURF特征、Harris角点、Shi-Tomas角点的提取与描述子计算原理进行总结,其中Harris角点、Shi-Tomas角点是关键点,没有对应的描述子,一般用于光流跟踪(Vins系列算法)。 综合所有的特征检测算法来看,所有的方法本质上都是通过计算像素灰度梯度检测关键点位置,ORB特征通过与邻域像素进行灰度值比较得到,其余SIFT,SURF,Harris角点、Shi-Tomas角点均都涉及到一个Hessian矩阵(由离散像素二阶导得到)求解问题,根据Hessian矩阵 开通可读全文·2.9k 阅读·1 点赞·28 收藏 阅读全文

相关推荐

特征点的检测与匹配(ORB,SIFT,SURFT比较)[opencv-python]

特征点的检测与匹配(ORB,SIFT,SURFT比较)

weixin_43151193的博客 1万+

单目vs双目三维重建效果对比:用Python实测SURF/SIFT/ORB三种特征提取算法

本文通过Python实战对比了单目与双目三维重建系统中SURF、SIFT和ORB三种特征提取算法的表现。实验结果显示,SURF在双目系统中重建完整度最高,ORB在实时性要求高的场景中表现优异,而SIFT则在单目系统中精度最佳。文章提供了详细的代码实现和参数调优建议,帮助开发者根据应用场景选择最优算法组合。

weixin_28706923的博客 325

超越SIFT?图像匹配实战对比:SIFT、ORB、SURF在无人机航拍图中的表现

本文通过实战评测对比了SIFT、ORB和SURF三种经典图像特征提取算法在无人机航拍图像匹配中的表现。实验基于真实数据集,从匹配精度、计算效率和鲁棒性等多维度评估,发现SIFT在精度上表现最佳,而ORB在实时性方面优势明显。文章还探讨了算法选型策略及前沿优化方向,为工程实践提供参考。

weixin_29240343的博客 231

二维图像处理到三维点云处理

下面是opencv和pcl的特点、区别和联系的详细对比表格。OpenCV和PCL虽然有一些相似之处,但它们的应用场景和功能是有所不同的。OpenCV主要用于图像处理和计算机视觉领域,而PCL则主要用于点云处理和三维重建领域。

seek97的博客 7222

Python实战:单目视觉下的三维重建技术解析

本文详细解析了使用Python实现单目视觉三维重建的完整流程。通过相机标定、特征匹配与三角测量等核心步骤,将二维图像转换为三维点云。文章提供了基于OpenCV的实战代码,并探讨了SIFT、SURF等特征算法与RANSAC优化技巧,帮助读者掌握从单张照片恢复三维结构的关键技术。

weixin_29093017的博客 120

视觉算法工程师面试题(个人理解)

我认为视觉算法主要分为传统的机器视觉和现在的计算机视觉。传统机器视觉就是用相机 + 图像处理算法让机器具备 “看” 和 “理解” 的能力。传统视觉基于人工设计,依赖数学模型与先验知识,适合场景固定的任务,常用的机器视觉算法库包括Opencv、Halcon和Visionpro等。计算机视觉是让计算机具备理解图像或视频的能力,按照任务划分可以分为图像分类、目标检测、图像分割、目标跟踪和OCR识别/人脸识别等,近年来还有AIGC等方向。

weixin_45859446的博客 483

Matlab双目测距算法实现与优化指南

双目视觉作为计算机视觉的核心技术,通过模拟人类双眼视差原理实现三维场景感知。其关键技术包括相机标定、立体校正和特征匹配,其中SURF和SIFT特征是保证匹配精度的关键。在Matlab环境下,利用Computer Vision Toolbox可以快速实现从视差计算到深度图生成的完整流程。该技术在自动驾驶障碍物检测、工业机器人三维定位等场景具有重要应用价值。针对实际工程中的视差图空洞、匹配误差等问题,可采用RANSAC算法优化和亚像素精度提升等方案,显著改善基于SGM算法的深度估计效果。

weixin_29574585的博客 143

特征匹配在计算机视觉中的应用

特征匹配是计算机视觉中的重要技术之一,它可以用于目标检测、图像配准、三维重建等多种应用。在特征匹配的过程中,首先需要提取图像中的特征点或描述子,常用的算法包括SIFT、SURF和ORB等。特征匹配是计算机视觉领域中的重要技术之一,用于在图像或视频中寻找相似的特征点或对象。图像配准:通过匹配两幅图像的特征点,可以实现图像配准,即将多幅图像对齐到同一个坐标系中。例如,在人脸识别中,可以通过匹配人脸的特征点来进行人脸检测和识别。三维重建:通过匹配多幅图像中的特征点,可以实现三维场景的重建。

IbcVue的博客 201

多视角匹配:计算机视觉中的关键技术

在计算机视觉领域,多视角匹配是一项重要的技术,它能够通过将来自多个视角的图像进行匹配,从而实现对三维场景的建模和分析。多视角匹配广泛应用于三维重建、目标跟踪、立体视觉等领域,为计算机视觉任务的准确性和鲁棒性提供了强大的支持。本文将介绍多视角匹配的基本原理和常用方法,并提供一些示例代码来说明其实现过程。

GzvDart的博客 1543

Rasa Core开发指南

文章目录1. Rasa Core简介1.1 Rasa Core消息处理流程1.2 安装Rasa Core2. Dialogue模型训练2.1 Story样本数据2.2 Domain2.2.0 intents2.2.1 actions2.2.2 templates2.2.3 entities2.2.4 slots3 .训练和使用对话模型3.1 训练对话模型3.2 使用对话模型4. 搭建CustomA...

老蒋也疯狂 1万+

Ubuntu 20.04下IgH EtherCAT主站部署实战

本文详细介绍了在Ubuntu 20.04系统上部署IgH EtherCAT主站的完整流程,包括环境准备、源码编译、内核模块配置、网络接口设置及实时性优化等关键步骤。通过实战案例和常见问题排查,帮助开发者快速掌握EtherCAT主站部署技巧,提升工业自动化系统的稳定性和实时性。

weixin_30596343的博客 1064

Logisim实战:手把手教你搭建GB2312汉字字库(附完整电路图)

本文提供了一份详尽的Logisim实战指南,手把手教你如何利用存储芯片,通过位扩展和字扩展技术,构建一个完整的GB2312汉字字库。文章深入浅出地讲解了从编码原理、系统架构设计到具体电路实现与调试的全过程,是学习计算机组成原理和数字电路设计的绝佳实践项目。

k6l7m8n9的博客 799

QEMU pcie config空间访问机制

而pci_host_conf/data_le_ops的定义是在hw/pci/pci-host.c里,对于0xCF8端口的处理,因为是地址选通,所以只需要在write的时候记录、read的时候返回记录的值即可。而pci_host_config_write/read_common接口,在前256Bconfig空间的模拟中,也同样是会调用这个接口,所以后续的处理都是一样的。这是真实的硬件设计,而对于QEMU+KVM的虚机场景,显然是要基于硬件实现和虚拟化的需求设计虚机访问config空间的完整流程。

leiyanjie8995的博客 1942

IEC103协议实战指南:报文解析与传输优化策略

本文深入解析IEC103协议在电力自动化系统中的核心应用,重点拆解其固定帧与可变帧两种报文格式,并详细阐述了主从问答与非平衡传输机制。文章结合实战经验,针对报文解析中的常见问题(如字节序、超时重发)提供了解决方案,并探讨了传输层优化策略,旨在帮助工程师实现更可靠、高效的通信链路。

r2s3t4的博客 535

【Zabbix实战之部署篇】Docker部署Zabbix+grafana监控平台

【Zabbix实战之部署篇】docker部署Zabbix+grafana监控平台

jks212454的博客 2574

基于改进YOLOv5的小目标检测 | 添加CBAM注意机制 + 更换Neck网络之BiFPN + 增加高分辨率检测头

本文针对图像中小目标难以检测的问题,提出了一种基于YOLOv5的改进模型。在主干网络中,加入CBAM注意力模块增强网络特征提取能力;在颈部网络部分,使用BiFPN结构替换PANet结构,强化底层特征利用;在检测头部分,增加高分辨率检测头,改善对于微小目标的检测能力。本文算法在无人机数据集VisDrone2019数据集上进行了多次对比实验,结果表明本文算法可以有效地检测小目标。🌈

小哥谈 2925

PCL学习笔记(四)——点云曲面重建

文章目录一、凸包算法二、 单纯的点云数据固然很好,但仅仅是点的话仍是不够的,因为这不利于我们后续对实体对象的渲染与各种应用,如计算实体的表面积、体积等等,所以这就需要我们对实体进行点云的曲面重建。 一、凸包算法 在计算机图形学中,凸包是指在任意维空间中包含某一有限点集P的最小凸集,它由凸包顶点构成,在二维上其表现形式为一个凸多边形,而在三维上则表现为一个凸多面体。在二维层面上来讲,最常用的凸包算法有Graham扫描法和Jarvis卷包裹法,但前者并不适用于三维层面,后者倒是可以扩展到三维。除此之外,在

dayuhaitang1的博客 6899

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: os.rename()方法实现分割数据集
下一篇: FindFundamentalMat(python)函数解析——三维视觉

双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —
ning_ww
博客等级 码龄7年 28粉丝 48原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值