SIFI 极值点拟合的详细推导过程
在获得高斯差分金字塔之后,我们可以根据邻近尺度和邻近像素一共 26 个像素点的灰度值和中心像素点的灰度值比较,如果中心像素点的值是最大或者最小的,则作为极值点保留下来。
但是我们知道像素是网格排布的,也就是说是离散的,如果我们想要获得更精确的极值点,就需要根据目前离散的点进行插值拟合,让数据连续起来,然后得到一个比较精确的极值点。
给我的感觉就是 SIFT 算法经历了一个从连续到离散,然后再回归连续的过程,首先是通过离散的高斯差分来近似表示拉普拉斯梯度,减少计算量,然后又对离散的高斯差分进行子像元级别的插值,获得一个连续的曲面,求真正的极值点。
首先,我们的高斯差分函数是通过通过不同尺度的高斯滤波得到的: D ( x , y , σ ) = [ G ( x , y , σ 1 ) − G ( x , y , σ 2 ) ] ∗ I ( x , y ) D(x, y, \sigma) = [G(x, y, \sigma_1 ) - G(x, y, \sigma_2 )] * I(x,y) D(x,y,σ)=[G(x,y,σ1)−G(x,y,σ2)]∗I(x,y)其中, I ( x , y ) I(x, y) I(x,y) 是像素的灰度值。
然后在尺度 σ \sigma σ 下,我们要从离散的高斯差分插值到连续的曲面,需要用到泰勒展开,因为泰勒展开是一种将函数在某一点附近近似为多项式的方法,通过使用一阶和二阶导数来拟合函数。所以可以得到: D ( X ) ≈ D + ∂ D T ∂ X X + 1 2 X T ∂ 2 D ∂ X 2 X D(X) \approx D +\frac{ \partial D^T }{\partial X } X + \frac{1}{2}X^T\frac{\partial^2 D}{\partial X^2}X D(X)≈D+∂X∂DTX+21XT∂X2∂2DX这个公式在别的文章很常见,但是我觉得不够直观,因为是尺度已经确定了是 σ \sigma σ 所以高斯差分函数目前是关于位置 x , y x, y x,y 的函数,上面的式子是一个矩阵的形式,因为要求极值,所以要对 D ( X ) D(X) D(X) 求导,并让其导数 ∂ D ∂ X = 0 \frac{\partial D}{\partial X} = 0 ∂X∂D=0 : ∂ D ∂ X = 0 + ∂ D T ∂ X + 1 2 ( ∂ 2 D ∂ X 2 + ( ∂ 2 D ∂ X 2 ) T ) X \frac{\partial D}{\partial X} = 0 + \frac{\partial D^T}{\partial X}+ \frac{1}{2}\left(\frac{\partial^2 D}{\partial X^2}+\left(\frac{\partial^2 D}{\partial X^2}\right)^T \right)X ∂X∂D=0+∂X∂DT+21(∂X2∂2D+(∂X2∂2D)T)X考虑到 ∂ 2 D ∂ X 2 \frac{\partial^2 D}{\partial X^2} ∂X2∂2D 是 Hessian 矩阵,展开表达式如下: ∂ 2 D ∂ X 2 = ( ∂ 2 D ∂ x 2 ∂ 2 D ∂ x ∂ y ∂ 2 D ∂ x ∂ y ∂ 2 D ∂ y 2 ) \frac{\partial^2 D}{\partial X^2} = \begin{pmatrix} \frac{\partial ^2D}{\partial x^2} & \frac{\partial ^2D}{\partial x\partial y}\\ \frac{\partial ^2D}{\partial x\partial y} & \frac{\partial ^2D}{\partial y^2} \end{pmatrix} ∂X2∂2D=(∂x2∂2D∂x∂y∂2D∂x∂y∂2D∂y2∂2D)可以看出来是对称矩阵,所以 ∂ 2 D ∂ X 2 = ( ∂ 2 D ∂ X 2 ) T \frac{\partial^2 D}{\partial X^2} = (\frac{\partial^2 D}{\partial X^2})^T ∂X2∂2D=(∂X2∂2D)T,我们就可以得到求导之后的式子为: ∂ D ∂ X = ∂ D T ∂ X + ∂ 2 D ∂ X 2 X \frac{\partial D}{\partial X} = \frac{\partial D^T}{\partial X}+ \frac{\partial^2 D}{\partial X^2}X ∂X∂D=∂X∂DT+∂X2∂2DX让导数 ∂ D ∂ X \frac{\partial D}{\partial X} ∂X∂D 为零可以得到: X ^ = ∂ D T ∂ X ( − ∂ 2 D ∂ X 2 ) − 1 \hat{X} = \frac{\partial D^T}{\partial X} \left (- \frac{\partial^2 D}{\partial X^2} \right )^{-1} X^=∂X∂DT(−∂X2∂2D)−1这里的 X ^ \hat{X} X^ 就是我们要求的极值点偏移值,然后将其代入原式,就可以求得极值点的响应值: D ( X ) = D + 1 2 ∂ D T ∂ X X ^ D(X) = D + \frac{1}{2} \frac{\partial D^T}{\partial X} \hat{X} D(X)=D+21∂X∂DTX^
∂ ∂ X ( X T A X ) = ( A + A T ) X \frac{\partial }{\partial X}(X^T A X) = (A+A^T)X ∂X∂(XTAX)=(A+AT)X
相关文章:
SIFI 极值点拟合的详细推导过程
在获得高斯差分金字塔之后,我们可以根据邻近尺度和邻近像素一共 26 个像素点的灰度值和中心像素点的灰度值比较,如果中心像素点的值是最大或者最小的,则作为极值点保留下来。 但是我们知道像素是网格排布的,也就是说是离散的&…...
Kontakt v7.7.2(音频采样器)
Native Instruments Kontakt 7是一款强大的软件采样器,它允许用户从各种来源采样音频并进行编辑和处理。它包含大量预设采样库,包括乐器、合成器、鼓组和声音效果等。此外,Kontakt 7还允许用户创建自己的采样库,以便根据自己的需要…...
Drawer抽屉(antd-design组件库)简单用法
1.Drawer抽屉 屏幕边缘滑出的浮层面板。 2.何时使用 抽屉从父窗体边缘滑入,覆盖住部分父窗体内容。用户在抽屉内操作时不必离开当前任务,操作完成后,可以平滑地回到原任务。 需要一个附加的面板来控制父窗体内容,这个面板在需要时…...
Android控件全解手册 - 多语言切换完美解决方案(兼容7.0以上版本)
Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…...
Android-P CameraSerivce
0 前言 本文重点分析Android-P的CameraService实现。 验证:Goldfish模拟器 1 定义 图1.1 CameraService ICameraServiceframeworks/av/camera/aidl/android/hardware/ICameraService.aidlBnCameraServiceout/soong/.intermediates/frameworks/av/camera/libcamera_client/an…...
21.Oracle的程序包(Package)
Oracle的程序包Package 一、Package的概述1、什么是Oracle11g的Package2、Package的作用是什么3、常见的系统内置Package 二、创建Package的相关语法1、Package的创建语法2、Package的删除3、具体案例4、Package的使用5、与Package相关的其他语法 三、常见内置程序包的使用1、…...
Spring 日志
日志的作用: 1.定位和发现问题 2.系统监控 3.数据采集 观察日志 先写一段打印日志的代码 日志内容 日志级别分类 默认日志级别是Info,级别一下的就不打印了 Spring 帮我们集成了日志框架,我们直接使用即可 我们测试一下用日志框架打印日志是如何 我们就会发现打印的结果跟…...
webpack如何处理浏览器的样式兼容问题postcss
一、准备工作 css/index.css添加样式 .word {color: red;user-select: none; } 为了兼容不同的浏览器我们需要添加前缀比如: -webkit-user-select: none; 这个工作可以通过postcss的插件postcss-preset-env处理 二、安装依赖 pnpm i -D postcss postcss-loader…...
idea方法注释模版设置
方法上面的注释模版: Template text: ** Description $desc$ $param$ $return$* Aauthor yimeng* date $DATE$ $TIME$ **/param: groovyScript("def result ;def params \"${_1}\".replaceAll([\\\\[|\\\\]|\\\\s], ).split(,).toLis…...
NX二次开发UF_CURVE_create_isocline 函数介绍
文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_create_isocline Defined in: uf_curve.h int UF_CURVE_create_isocline(int face_cnt, tag_t faces [ ] , double direction [ 3 ] , const char * start_angle, const ch…...
从0开始学习JavaScript--JavaScript 模板字符串的全面应用
JavaScript 模板字符串是 ES6 引入的一项强大特性,它提供了一种更优雅、更灵活的字符串拼接方式。在本文中,将深入探讨模板字符串的基本语法、高级用法以及在实际项目中的广泛应用,通过丰富的示例代码带你领略模板字符串的魅力。 模板字符串…...
开源 vs 闭源:数字化时代的技术选择
开源 vs 闭源:数字化时代的技术选择 近期,特斯拉CEO马斯克的一番言论引起了广泛关注:OpenAI不该闭源,自家首款聊天机器人将开源。这引发了人们对于开源与闭源软件的辩论,这一话题在技术界一直是热门的讨论焦点。在数字…...
Spring Boot项目Service类单元测试自动生成
在Spring Boot项目中,对Service类进行单元测试对于开发工程师而言具有重大意义和作用: 验证业务逻辑的正确性和完整性 核心业务逻辑的准确实现:Service类通常包含核心业务逻辑。单元测试确保这些逻辑被正确实现,满足业务需求。处…...
Typescript中 interface 和 type 的区别是什么?
在 TypeScript 中,interface 和 type 都用于定义类型,但它们有一些区别。 1. 语法差异: interface 关键字用于声明接口,使用 interface 可以定义对象的形状、函数的签名等。 type 关键字用于声明类型别名,可以给一个…...
W2311294-万宾科技可燃气体监测仪怎么进行数据监测
万宾科技可燃气体监测仪怎么进行数据监测 燃气是现代城市之中重要的能源,它已经渗透到城市生活的方方面面,对燃气管网的管理也在考验着政府人员的工作能力。燃气管网的安全运行和城市的安全和人民的生活直接挂钩。为了及时掌握燃气管网的运行状态&#x…...
Elasticsearch:向量搜索 (kNN) 实施指南 - API 版
作者:Jeff Vestal 本指南重点介绍通过 HTTP 或 Python 使用 Elasticsearch API 设置 Elasticsearch 以进行近似 k 最近邻 (kNN) 搜索。 对于主要使用 Kibana 或希望通过 UI 进行测试的用户,请访问使用 Elastic 爬虫的语义搜索入门指南。你也可以参考文章…...
704 二分查找 day1
class Solution { public: int search(vector<int>& nums, int target) { int left 0; int right nums.size() - 1; // 定义target在左闭右闭的区间里,[left, right] while (left < right) { // 当leftright,区间[left, right]依然有效&…...
Python面试破解:return和yield的细腻差别
更多Python学习内容:ipengtao.com 大家好,我是涛哥,今天为大家分享 Python面试破解:return和yield的细腻差别,全文3000字,阅读大约10钟。 在Python的函数编程中,return和yield是两个常用的关键词…...
云时空社会化商业 ERP 系统 service SQL 注入漏洞复现
0x01 产品简介 时空云社会化商业ERP(简称时空云ERP) ,该产品采用JAVA语言和Oracle数据库, 融合用友软件的先进管理理念,汇集各医药企业特色管理需求,通过规范各个流通环节从而提高企业竞争力、降低人员成本…...
Vue3-Pinia
Pinia是什么 Pinia是Vue的最新状态管理工具,是Vuex的替代品 比Vuex更大的优势在于: 1.提供更加简单的API(去掉了mutation) 2.提供符合,组合式风格的API(和Vue3新语法统一) 3.去掉了modules…...
LeetCode 226. 翻转二叉树 详细技术解析(CSDN版)
LeetCode 226. 翻转二叉树 详细技术解析(CSDN版) 题目概述(Problem Statement) 给定一棵二叉树的根节点 root,要求翻转这棵二叉树(即交换每一个节点的左子树和右子树),最终返回翻转后…...
Fish Speech 1.5语音延迟优化:2-5秒响应背后的推理加速技巧
Fish Speech 1.5语音延迟优化:2-5秒响应背后的推理加速技巧 1. 引言:从分钟级到秒级的突破 还记得早期的文本转语音系统吗?输入一段文字,等待几分钟才能听到结果,那种焦急的体验让很多开发者望而却步。如今ÿ…...
3步攻克iOS激活锁:AppleRa1n工具技术解析与实战指南
3步攻克iOS激活锁:AppleRa1n工具技术解析与实战指南 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 激活锁(苹果设备的防盗验证机制)是一把双刃剑,它在保…...
OpenCore Legacy Patcher:让旧Mac重获新生的完整方案
OpenCore Legacy Patcher:让旧Mac重获新生的完整方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当您的Mac被官方系统更新拒之门外时…...
Debian13安装基于apt的Nvidia闭源驱动+CUDA开发环境
Ubuntu安装NVIDIA驱动实在太容易了,直接在额外驱动里面选择就好,但Debian没有这么简单。以往我们都需要从NVIDIA官网下载.run文件,但现在其实更建议各位使用Nvidia提供的本地apt源来管理。本文只针对apt版本驱动安装过程中特定的坑和CUDA开发…...
如何用Untrunc开源工具拯救损坏的视频文件:从理论到实践的完整指南
如何用Untrunc开源工具拯救损坏的视频文件:从理论到实践的完整指南 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc …...
seo综合查询工具和网站分析工具有什么区别_seo综合查询工具如何分析网站关键词排名
SEO综合查询工具和网站分析工具有什么区别 在当今的数字营销环境中,SEO(搜索引擎优化)工具是企业和营销人员提升网站排名的关键。其中,SEO综合查询工具和网站分析工具虽然都在帮助提升网站的搜索引擎排名,但它们之间有…...
忍者像素绘卷基础教程:3步完成‘火之意志’提示词→像素绘卷生成
忍者像素绘卷基础教程:3步完成火之意志提示词→像素绘卷生成 1. 认识忍者像素绘卷 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工具,它将传统忍者文化与16-Bit复古游戏美学完美结合。不同于常见的暗色调像素艺术,这款工具采用了…...
别再花钱买模板了!用扣子(Coze)和剪映,5分钟搞定城市宣传视频(保姆级节点配置)
零成本打造城市宣传片:Coze剪映全流程实战指南 想象一下这样的场景:你刚接手一个本地文旅推广项目,预算只够买两杯咖啡,但甲方期待的是《航拍中国》级别的视觉大片。传统解决方案要么外包烧钱,要么自己熬夜学剪辑到崩溃…...
靠专业建议收咨询费!传统旅游顾问转型AI行程规划师,如何在高定市场赚大钱
“上个月,我的咨询费增了好多。”说出这个数字时,前旅行社门店顾问小雅脸上带着自信的笑容。曾经的“人肉攻略机器”到如今的AI高端定制规划师,小雅的转型故事,或许能给所有被困在低价内卷里的旅游从业者带来全新的思路。一、转型…...
