当前位置: 首页 > news >正文

RootSIFT---SIFT图像特征的扩展

RootSIFT是论文 Three things everyone should know to improve object retrieval - 2012所提出的

在这里插入图片描述
A Comparative Analysis of RootSIFT and SIFT Methods for Drowsy Features Extraction - 2020

当比较直方图时,使用欧氏距离通常比卡方距离或Hellinger核时的性能差,但是在使用 SIFT 特征点为什么一直都使用欧氏距离呢?

不论是对 SIFT 特征点进行匹配,还是对 SIFT 特征集合进行聚类得到视觉词汇表,又或者对图像进行BoW编码,都使用的是欧氏距离. 但是 SIFT 特征描述子本质上也是一种直方图,为什么对 SIFT 特征描述子进行比较的时候要使用欧氏距离呢,有没有一种更精确的比较方法呢?

SIFT 描述子统计的是关键点邻域的梯度直方图.

论文作者认为之所以一直使用欧氏距离来测量 SIFT 特征的相似度,是由于在 SIFT 提出时,使用的是欧氏距离的度量,可以找出一种比较欧氏距离更为精确的度量方法. 故,提出了RootSift 对 SIFT 特征进行扩展.

具体操作如下:

在提取到 SIFT 描述向量 x x x 后,进行如下处理,即可得到 RootSIFT:

[1] - 对特征向量 x x x 进行 l 1 l_1 l1 的归一化得到 x ′ x' x ;

[2] - 对 x ′ x' x的每一个元素求平方根;

[3] - 进行 l 2 l_2 l2归一化.(可选)

  • [3]中,是否进行l2归一化,有些不一致. 在[RootSIFT]论文 中并没有指出需要进行 l2 归一化,但是在 presentation, 却有 l2归一化.

参考:图像检索(4):IF-IDF,RootSift,VLAD – RootSIFT

1. RootSIFT 实现

Python 实现如:

  • https://www.pyimagesearch.com/2015/04/13/implementing-rootsift-in-python-and-opencv/
  • https://github.com/jrosebr1/imutils/blob/master/imutils/feature/rootsift.py
import numpy as np
import cv2class RootSIFT:def __init__(self):# initialize the SIFT feature extractor#OpenCV2.4# self.extractor = cv2.DescriptorExtractor_create("SIFT")#OpenCV3+self.extractor = cv2.xfeatures2d.SIFT_create()def compute(self, image, kps, eps=1e-7):# compute SIFT descriptorskps, descs = self.extractor.compute(image, kps)# if there are no keypoints or descriptors, return an empty tupleif len(kps) == 0:return ([], None)# apply the Hellinger kernel by first L1-normalizing and taking the# square-rootdescs /= (descs.sum(axis=1, keepdims=True) + eps)descs = np.sqrt(descs)#descs /= (np.linalg.norm(descs, axis=1, ord=2) + eps)# return a tuple of the keypoints and descriptorsreturn (kps, descs)
#
image = cv2.imread("test.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# detect Difference of Gaussian keypoints in the image
sift = cv2.xfeatures2d.SIFT_create()
kps, descs = sift.detectAndCompute(img1, None)
print "SIFT: kps=%d, descriptors=%s " % (len(kps), descs.shape)# extract RootSIFT descriptors
root_sift = RootSIFT()
(kps, descs) = root_sift.compute(image, kps)
print "RootSIFT: kps=%d, descriptors=%s " % (len(kps), descs.shape)

C++ 实现:

for(int i = 0; i < siftFeature.rows; i ++)
{// Conver to float typeMat f;siftFeature.row(i).convertTo(f,CV_32FC1);normalize(f,f,1,0,NORM_L1); // l1 normalizesqrt(f,f); // sqrt-root  root-siftrootSiftFeature.push_back(f);
}

2. 基于 RootSIFT 的相似图搜索

在这里插入图片描述

相关文章:

RootSIFT---SIFT图像特征的扩展

RootSIFT是论文 Three things everyone should know to improve object retrieval - 2012所提出的 A Comparative Analysis of RootSIFT and SIFT Methods for Drowsy Features Extraction - 2020 当比较直方图时&#xff0c;使用欧氏距离通常比卡方距离或Hellinger核时的性能…...

ChatGPT角色扮演教程,Prompt词分享

使用指南 1、可直复制使用 2、可以前往已经添加好Prompt预设的AI系统测试使用 https://ai.idcyli.comhttps://ai.idcyli.com 雅思写作考官 我希望你假定自己是雅思写作考官&#xff0c;根据雅思评判标准&#xff0c;按我给你的雅思考题和对应答案给我评分&#xff0c;并且按…...

zabbix监控——自定义监控内容

目录 自定义监控项步骤 案例 1、明确需要执行的命令 2、创建 zabbix 的监控项配置文件&#xff0c;用于自定义 key&#xff0c;并重启zabbix-agent2 3、.在服务端验证新建的监控项 4、在 Web 页面创建自定义监控项模板 1&#xff09;创建模板 2&#xff09;创建监控项 …...

中断机制-中断协商机制、中断方法

4.1 线程中断机制 4.1.1 从阿里蚂蚁金服面试题讲起 Java.lang.Thread下的三个方法: 4.1.2 什么是中断机制 首先&#xff0c;一个线程不应该由其他线程来强制中断或停止&#xff0c;而是应该由线程自己自行停止&#xff0c;自己来决定自己的命运&#xff0c;所以&#xff0c;…...

three.js入门 —— 实现第一个3D案例

前言&#xff1a; three.js入门&#xff0c;根据文档实现第一个3D案例 效果图&#xff1a; 代码实现&#xff1a; const scene new THREE.Scene();//创建一个长方体几何对象Geometryconst geometry new THREE.BoxGeometry(100, 100, 100);//创建一个网络基础材质的材质对象…...

《动手学深度学习 Pytorch版》 8.4 循环神经网络

8.4.1 无隐状态的神经网络 对于无隐藏装态的神经网络来说&#xff0c;给定一个小批量样本 X ∈ R n d \boldsymbol{X}\in\mathbb{R}^{n\times d} X∈Rnd&#xff0c;则隐藏层的输出 H ∈ R n h \boldsymbol{H}\in\mathbb{R}^{n\times h} H∈Rnh 通过下式计算&#xff1a; …...

什么是物联网阀控水表?

物联网阀控水表是一种新型的水表&#xff0c;结合了物联网技术和传统水表的功能&#xff0c;可以实现对水的计量、控制和管理。随着人们对水资源的日益重视&#xff0c;物联网阀控水表的应用越来越广泛&#xff0c;为水资源的合理利用和管理提供了有效手段。 物联网阀控水表是由…...

Kafka 开启SASL/SCRAM认证 及 ACL授权(一)认证

Kafka 开启SASL/SCRAM认证 及 ACL授权(一)认证。 kafka安全涉及3部份:传输加密,用户认证与授权,ZK开启ACL(Zookeeper存储了kafka的元数据以及用户信息,默认不开启acl所有用户可改,内网环境机器不对外开放可考虑使用默认不开启ZK ACL)。 官网地址:https://kafka.ap…...

关于智能控制领域中模糊控制算法的概述

智能控制领域中的模糊控制算法是一种基于模糊逻辑的控制策略&#xff0c;它通过对模糊集合的刻画来处理模糊信息&#xff0c;从而获得模糊输出并进行控制。模糊控制算法在实际控制工程中具有良好的应用前景&#xff0c;它不但具有较强的鲁棒性和适应性&#xff0c;而且可以为复…...

剖析伦敦银最新价格走势图

国际金融市场瞬息万变&#xff0c;伦敦银的价格走势会受到诸多因素的影响&#xff0c;比如重要经济数据的公布&#xff0c;国际间的政治博弈&#xff0c;突发的政经大事&#xff0c;都可以令白银价格的走势&#xff0c;在短时间内暴涨暴跌的情况。 要在伦敦银市场实现良好的收益…...

通用人工智能技术(深度学习,大模型,Chatgpt,多模态,强化学习,具身智能)

目录 前言 1.通用人工智能 1.1 生物学分析 1.2具身智能 1.2.1当前的人工智能的局限 1.2.2 具身智能实现的基础 1.2.3 强化学习&#xff08;决策大模型&#xff09; 2.结论 往期文章 参考文献 前言 目前的人工智能实质上只是强人工智能&#xff0c;或者说单个领域的通…...

makefile的特性-部分语法记录

1.变量定义 1.1 来实现a1 $(a2)a2 lib.o1.2 : 来实现, 这种不能通过后面的变量来定义a1 : $(a2) b.0a2 : lib.o1.3 来实现a1 b.0a2 a11.4 ? 来实现,这种方式前面如果定义了&#xff0c;后面定义则无效a1 : a.oa1 ? lib.o //结果 a1 a.o 2.文件查找 2.1 VPATH 目录…...

【Java 进阶篇】JavaScript 正则表达式(RegExp)详解

JavaScript 正则表达式&#xff0c;通常简写为 RegExp&#xff0c;是一种强大的文本匹配工具&#xff0c;它允许你通过一种灵活的语法来查找和替换字符串中的文本。正则表达式在编程中用途广泛&#xff0c;不仅限于 JavaScript&#xff0c;在许多编程语言中也都有类似的实现。 …...

51单片机之串口通信例程

51单片机之串口通信例程 简介原理例程 简介 串行通信是指使用一条数据线&#xff0c;将数据一位一位地依次传输&#xff0c;每一位数据占据一个固定的时间长度。在串行通信中&#xff0c;数据可以以字符为单位进行传输&#xff0c;也可以以帧为单位进行传输。 在51单片机中&a…...

Hadoop高可用集群(HA)一键启动脚本

高可用集群启动时&#xff0c;需要分别在每个节点上都执行zkServer.sh start启动zookeeper&#xff0c;这个过程比较麻烦&#xff0c;并且当我们节点增多时&#xff0c;这个过程无疑不增加了我们的工作量&#xff0c;因此我们可以写一个一键启动所有节点zookeeper的脚本 脚本实…...

C#开发的OpenRA游戏之金钱系统(1)

C#开发的OpenRA游戏之金钱系统(1) 设计一个游戏,肯定要有一个唯一的资源,用这个资源来管理整个游戏的进度,以及相互争夺的焦点。在OpenRA里,就是使用矿产资源。所以在地图上分布几个矿场,玩家就需要相互争夺矿场,谁开采多谁就更有钱,谁有钱了就可以升级更好的科技,以…...

Puppeteer监听网络请求、爬取网页图片(二)

Puppeteer监听网络请求、爬取网页图片&#xff08;二&#xff09; Puppeteer监听网络请求、爬取网页图片&#xff08;二&#xff09;一、爬取需求二、实现讲解三、效果查看 一、爬取需求 首先打开浏览器&#xff0c;打开指定网站监听网站发出的所有请求&#xff0c;记录请求&a…...

GoLang连接mysql数据库

跟着文档走GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly. 1.使用命令拉取 go get -u gorm.io/gorm go get -u gorm.io/driver/sqlite2.开始使用 package mainimport ("fmt""github.com/gin-gonic/gin"&…...

软件工程与计算总结(八)软件设计基础

一.设计思想的发展 1958&#xff1a;软件这个名词第一次在公开刊物上使用~60年代中后期and70年代前中期&#xff1a;结构化编程、逐步求精、自顶向下理念是程序设计主要方法70年代中后期and90年代&#xff1a;结构化设计方法、抽象数据类型、信息隐藏、封装、继承、多态等思想…...

someip 入门

什么是someip&#xff1f; SomeIP&#xff08;Scalable Service-Oriented MiddlewarE over IP&#xff09;是一种基于以太网的通信协议&#xff0c;用于汽车领域的通信。它允许不同的汽车电子控制单元&#xff08;ECUs&#xff09;之间通过网络进行通信&#xff0c;以便在车辆内…...

逆向实战:用X32dbg条件断点精准定位MFC程序的窗口消息处理函数

逆向实战&#xff1a;用X32dbg条件断点精准定位MFC程序的窗口消息处理函数 在逆向分析领域&#xff0c;MFC程序因其复杂的消息映射机制和封装层次&#xff0c;常常让分析者感到无从下手。特别是当我们需要分析某个特定窗口消息&#xff08;如按钮点击、菜单选择&#xff09;的处…...

MTKClient终极指南:5步掌握联发科芯片调试的核心技能

MTKClient终极指南&#xff1a;5步掌握联发科芯片调试的核心技能 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient 你是否曾经遇到过联发科设备刷机失败、系统崩溃无法恢复的困境&#xff1f…...

深度学习优化算法(三)—— 自适应学习率(AdaGrad/RMSProp/Adam/AdamW)(三十五)

1. 定位导航 第 34 篇我们解决了"方向"问题(Momentum 让训练快 10)。本篇解决另一个核心问题:每个参数应该用多大学习率? 第 8 章规划进度: 篇号 主题 状态 33 优化挑战 ✅ 34 SGD + Momentum + Nesterov ✅ 35(本篇) 自适应学习率 🚀 36 参数初始化策略 …...

从SolidWorks到Geant4仿真:我的第一个粒子探测器CAD模型导入全记录(含CADMesh避坑点)

从SolidWorks到Geant4仿真&#xff1a;我的第一个粒子探测器CAD模型导入全记录&#xff08;含CADMesh避坑点&#xff09; 作为一名刚接触粒子探测器仿真的研究生&#xff0c;我花了整整两周时间才成功将SolidWorks设计的模型导入Geant4进行模拟。这个过程远比想象中复杂&#x…...

CoPaw:让AI代码助手深度适配个人项目与团队规范的工程化实践

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫CoPaw&#xff0c;作者是 alexgzx。光看名字可能有点摸不着头脑&#xff0c;但如果你对 AI 辅助编程、代码生成或者想提升自己的开发效率感兴趣&#xff0c;那这个项目绝对值得你花时间研究一下。简单来说…...

LLM Notebooks:从零构建RAG问答系统的实践指南

1. 项目概述&#xff1a;一个面向大语言模型实践的“笔记本”仓库最近在GitHub上闲逛&#xff0c;发现了一个挺有意思的仓库&#xff0c;叫qianniuspace/llm_notebooks。光看名字&#xff0c;llm_notebooks&#xff0c;大语言模型笔记本&#xff0c;这指向性就非常明确了。这大…...

【技术解析】基于主成分分析与神经网络的航空安全风险建模:从QAR数据预处理到实时预警仿真

1. 航空安全风险建模的技术背景 每次坐飞机时&#xff0c;你可能都好奇过&#xff1a;机长是如何确保飞行安全的&#xff1f;其实背后有一整套数据驱动的安全体系在支撑。QAR&#xff08;快速存取记录器&#xff09;就像飞机的"黑匣子"&#xff0c;记录了上百项飞行参…...

VHD2VL终极指南:5分钟快速将VHDL转换为Verilog的免费工具

VHD2VL终极指南&#xff1a;5分钟快速将VHDL转换为Verilog的免费工具 【免费下载链接】vhd2vl 项目地址: https://gitcode.com/gh_mirrors/vh/vhd2vl 在FPGA和ASIC设计领域&#xff0c;VHDL转Verilog是许多工程师面临的共同挑战。手动转换不仅耗时费力&#xff0c;还容…...

城通网盘解析工具终极指南:免费获取高速直连下载地址

城通网盘解析工具终极指南&#xff1a;免费获取高速直连下载地址 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否厌倦了城通网盘那令人抓狂的下载速度&#xff1f;每次下载文件都要面对漫长的等待…...

抖音批量下载神器:5分钟学会免费高效下载视频、音乐和直播

抖音批量下载神器&#xff1a;5分钟学会免费高效下载视频、音乐和直播 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback s…...