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

【计算机视觉】角点检测(Harris、SIFT)

Harris

角点指的是窗口延任意方向移动,都有很大变化量的点。

用数学公式表示为:

E(u,v)反映的移动后窗口的差异,w(x,y)为每个像素的点权值,I(x+u,y+v)是移动的像素值,I(x,y)是移动前的像素值。

将E(u,v)进行泰勒展开,直接建立E(u,v)和u,v的联系

最终:

M称为二阶矩矩阵(second moment matrix)

I_x,I_y 互不影响:

M=\begin{bmatrix} \lambda _1 & 0\\0 & \lambda_2 \end{bmatrix}

假设 \lambda 2 = 0

只有在u方向上变化是E才会变,因此只有 \lambda 1, \lambda 2 都不为0时(x,y)才是角点。

I_x,I_y 相关可以通过正交化变成前面的形式:

M = \begin{bmatrix} a &c \\c & d \end{bmatrix}= R^{-1}\begin{bmatrix} \lambda_1 &0 \\ 0&\lambda_2 \end{bmatrix}R= R^{T}\begin{bmatrix} \lambda_1 &0 \\ 0&\lambda_2 \end{bmatrix}R

\lambda_1,\lambda_2就反映了点在某个方向上的变化率,之后当\lambda_1,\lambda_2都很大时,该点才是角点。

为了减少计算可以用R来判定是否为角点

SIFT

Harris角点检测不具有尺度不变性,窗口大小不同,响应的结果也不同。

所谓的尺度不变性,指的是提取器能够对不同的尺度下的同一个点,有比较大的响应值。

接下来,介绍的SIFT就是具有尺度不变性的特征提取算法。

在边缘提取的时候,用高斯一阶导对信号进行卷积,响应值最大的就是边界。

如果用高斯二阶导对信号进行卷积,0点就是边界点(二阶导等于0的点,对应一阶导的极值点)如果用高斯二阶导在不同的信号上进行卷积,当信号宽度与高斯滤波核匹配的时候,就能得到绝对值最大的信号,这样就建立了尺度和滤波核之间的联系。

用不同的Laplacian对同一个信号进行卷积的时候,随着\sigma的增大,响应值会越来越不明显。

因为\sigma作为分母,\sigma越来越大,卷积后的信号值就会越来越小 ,对于一阶偏导需要对卷积后的信号补偿\sigma,对于二阶偏导需要对卷积后的信息补偿\sigma ^2 ,将响应值固定在一个尺度上。

补偿之后,就能用\sigma反映尺度

二维Laplacian高斯卷积核如下图所示:

当半径值正好与Laplacian为0的值匹配上的时候,响应值最大

假设这个圆是二进制的,简单来说就是找到一个合适的laplacian卷积核,卷积之后使得laplacian卷积核中小于0的部分权值为0,laplacian大于0的部分权值为1。

找到合适的laplacian卷积核,它的\sigma与信号半径有对应关系

SIFT使用的是DoG模版(两个高斯模版的差分),拥有和Laplacian类似的特性

一般而言,随着\sigma的增大,窗口也会变大,Laplacian每一次都会在原图进行卷积,卷积的成本就会增大。而DoG是利用高斯卷积核来做的,可以通过对较小\sigma的卷积核卷积得到较大\sigma的卷积核,减小卷积成本。

在找合适的尺度空间的时候,会进行非极大值抑制,只有当该点是27(上下两个尺度18个,当前尺度9个)个领接点中的极值时,认为该点为特征点,因此,有效DoG 个数为S时,总共的DoG个数为S+2(首尾不能构成三个尺度空间)。

每一个Octave表示对GuassianSpace缩小1/2后卷积,当我们需要更大的尺度的时候,需要跟大的sigma,意味着更大的卷积核更多的计算。SIFT算法中,将这样操作可以转换为,将图像缩小1/2,得到结果后将响应的sigma放大2倍,这样减少了计算的同时也得到了更大的尺度空间。

K的取值同样也很讲究,k=2^{1/s} ,s为有效DoG个数。

K这样取值的好处是,对应高斯空间来说,只要将倒数第三图下采样2倍就能得到下一个Octave的第一个图,对于DoG空间来说,当前最后一个有效DoG的sigma与下一个Octave的第一个有效DoG的sigma是连续的(如图所示)

相关文章:

【计算机视觉】角点检测(Harris、SIFT)

Harris 角点指的是窗口延任意方向移动,都有很大变化量的点。 用数学公式表示为: E(u,v)反映的移动后窗口的差异,w(x,y)为每个像素的点权值,I(xu,yv)是移动的像素值,I(x,y)是移动前的像素值。 将E(u,v)进行泰勒展开&am…...

Python实现张万森下雪了的效果

系列文章 序号文章目录直达链接表白系列1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want595.blog.csdn.net/article/details/1297945183跳动的爱心https://want595.blog.csdn.net/article/details/1295031234漂浮爱心http…...

最长的指定瑕疵度的元音子串 (100%用例)C卷 (JavaPythonNode.jsC语言C++)

开头和结尾都是元音字母(aeiouAEIOU)的字符串为 元音字符串 ,其中混杂的非元音字母数量为其 瑕疵度 。比如 : “ a ” 、 “ aa ”是元音字符串,其瑕疵度都为 0 “ aiur ”不是元音字符串(结尾不是元音字符) “ abira ”是元音字符串,其瑕…...

Qt/C++音视频开发62-电子放大/按下选择区域放大显示/任意选取区域放大

一、前言 电子放大这个功能思考了很久,也是一直拖到近期才静下心来完整这个小功能,这个功能的前提,主要得益于之前把滤镜打通了,玩出花样来了,只要传入对应的滤镜字符串,就可以实现各种各样的效果&#xf…...

Vue(一):Vue 入门与 Vue 指令

Vue 01. Vue 快速上手 1.1 Vue 的基本概念 用于 构建用户界面 的 渐进性 框架 构建用户界面:基于数据去渲染用户看到的界面渐进式:不需要学习全部的语法就能完成一些功能,学习是循序渐进的框架:一套完整的项目解决方案&#x…...

C语言——最古老的树

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 缺乏明确的目标,一生将庸庸…...

dnSpy调试工具断点信息是保存在哪里的呢

本人是C#开发,dnSpy工具用的比较多,有时候想把有用的断点信息保留下来,挪到别的机器上也能使用。我做这个事情的主要目标是在调试我们公司的程序时,顺带把访问的sql也进行输出,就可以偷懒不用每次都去查阅代码了&#…...

融汇贯通 —— 2023年技术与心灵的双重成长旅程

当我们站在2023年的岁末,回望这一年赋予我们的经历和挑战,心中涌动的感慨与启示像朝日初升的光芒,照亮脚下的路,亦照见心中的路。在此,我想分享几个方面的感悟和成长,愿它们能有所触动,成为您前…...

基于element ui封装table组件

效果图&#xff1a; 1.封装表格代码如下 <template> <div><div class"TableList"><el-tablev-loading"loading"selection-change"selectionChange"class"table":data"tableData":border"hasBorde…...

MySQL进阶之(一)逻辑架构

一、逻辑架构 1.1 逻辑架构剖析1.1.1 连接层1.1.2 服务层01、基础服务组件02、SQL Interface&#xff1a;SQL 接口03、Parser&#xff1a;解析器04、Optimizer&#xff1a;查询优化器05、Caches & Buffers&#xff1a; 查询缓存组件 1.1.3 引擎层1.1.4 存储层1.1.5 总结 1.…...

【前端学习指南】开启 Vue 的学习之旅

&#x1f36d; Hello&#xff0c;我是爱吃糖的范同学 秋招终于结束了&#xff08;拿到了比较满意的 offer&#x1f389;&#x1f389;&#x1f389;&#xff0c;后续也会有“面筋”系类给大家分享&#xff09;&#xff0c;目前我终于也有足够的时间和精力来完成我 23 年遗留下…...

编程笔记 html5cssjs 011 HTML页面划分

编程笔记 html5&css&js 011 HTML页面划分 HTML的框架、区块和布局是什么&#xff0c;它们之前的关系是怎样的&#xff1f;框架注意 接下来要看一下网页内的划分。通过框架、区块及布局等方式&#xff0c;将网页从一个长方形整体划分为若干个部分&#xff0c;以合理展示…...

Centos7:Jenkins+gitlab+node项目启动(2)

Centos7&#xff1a;Jenkinsgitlabnode项目启动(1) Centos7&#xff1a;Jenkinsgitlabnode项目启动(1)-CSDN博客 Centos7&#xff1a;Jenkinsgitlabnode项目启动(2) Centos7&#xff1a;Jenkinsgitlabnode项目启动(2)-CSDN博客 Centos7&#xff1a;Jenkinsgitlabnode项目启…...

Qt+Opencv:人脸检测

话接上一篇&#xff0c;我们仍使用在上篇《QtOpencv&#xff1a;Qt中部署opencv》创建的Qt项目来测试opencv提供的sample。 在正式开始本篇之前&#xff0c;我们先说做一下准备工作&#xff1a; 一、opencv官方文档 学习最权威和最可靠的方式&#xff0c;就是阅读官方文档和…...

ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的高级应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…...

Unreal Engine游戏引擎的优势

在现在这个繁荣的游戏开发行业中&#xff0c;选择合适的游戏引擎是非常重要的。其中&#xff0c;Unreal Engine作为一款功能强大的游戏引擎&#xff0c;在业界广受赞誉。那Unreal Engine游戏引擎究竟有哪些优势&#xff0c;带大家简单的了解一下。 图形渲染技术 Unreal Engin…...

[OCR]Python 3 下的文字识别CnOCR

目录 1 CnOCR 2 安装 3 实践 1 CnOCR CnOCR 是 Python 3 下的文字识别&#xff08;Optical Character Recognition&#xff0c;简称OCR&#xff09;工具包。 工具包支持简体中文、繁体中文&#xff08;部分模型&#xff09;、英文和数字的常见字符识别&#xff0c;支持竖…...

字符串序列判定(100%用例)C卷 (JavaPythonNode.jsC语言C++)

输入两个字符串 S 和 L ,都只包含英文小写字母。 S 长度 <=100 , L 长度 <=500,000 。判定 S 是否是 L 的有效字串。 判定规则: S 中的每个字符在 L 中都能找到(可以不连续),且 S 在L中字符的前后顺序与 S 中顺序要保持一致。(例如, S="ace" 是 L=&q…...

ERROR: No matching distribution found for torch==2.0.1解决方案

大家好&#xff0c;我是水滴~~ 本文主要介绍在安装 stable-diffusion-webui 时出现的 ERROR: No matching distribution found for torch2.0.1 问题的解决方案&#xff0c;希望能对你有所帮助。 《Python入门核心技术》专栏总目录・点这里 文章目录 问题描述解决方案离线安装 …...

ClickHouse基础知识(五):ClickHouse的SQL 操作

基本上来说传统关系型数据库&#xff08;以 MySQL 为例&#xff09;的 SQL 语句&#xff0c;ClickHouse 基本都支持&#xff0c; 这里不会从头讲解 SQL 语法只介绍 ClickHouse 与标准 SQL&#xff08;MySQL&#xff09;不一致的地方。 1. Insert 基本与标准 SQL&#xff08;My…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...

LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)

在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...

如何在Windows本机安装Python并确保与Python.NET兼容

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...