传统CV算法——基于Sift算法实现特征点检测

图像尺度空间

在一定的范围内,无论物体是大还是小,人眼都可以分辨出来。然而,计算机要具备相同的能力却很难。因此,为了让机器能够对物体在不同尺度下有一个统一的认知,就需要考虑图像在不同尺度下所存在的特点。这就是图像尺度空间的概念。

1. 尺度空间的定义

尺度空间是指通过对图像进行多尺度处理,生成一系列图像的集合。每个图像代表了原始图像在不同尺度下的特征。这种处理方式使得计算机能够在不同的尺度上识别和分析图像中的物体。

2. 高斯模糊与尺度空间

尺度空间的获取通常使用高斯模糊来实现。高斯模糊是一种通过卷积操作将图像平滑化的技术,其核心思想是用高斯函数对图像进行加权平均,从而消除图像中的噪声和细节。

2.1 高斯函数

高斯函数的数学表达式为:
G ( x , y , σ ) = 1 2 π σ 2 e − x 2 + y 2 2 σ 2 G(x, y, \sigma) = \frac{1}{2\pi\sigma^2} e^{-\frac{x^2 + y^2}{2\sigma^2}} G(x,y,σ)=2πσ21e2σ2x2+y2
其中:

  • G ( x , y , σ ) G(x, y, \sigma) G(x,y,σ) 是高斯函数的值。
  • ( x , y ) (x, y) (x,y) 是图像中的坐标。
  • σ \sigma σ 是标准差,控制模糊的程度。
2.2 多尺度表示

通过改变标准差 σ \sigma σ 的值,可以生成不同尺度的图像。具体步骤如下:

  1. 选择不同的 σ \sigma σ:根据需要选择一系列的 σ \sigma σ 值,通常从小到大。

  2. 应用高斯模糊:对原始图像应用高斯模糊,生成不同尺度的图像。

  3. 构建尺度空间:将所有模糊后的图像组合在一起,形成尺度空间。

3. 尺度空间的应用

尺度空间在计算机视觉和图像处理领域有广泛的应用,包括但不限于:

  • 特征检测:在尺度空间中,可以有效地检测到不同尺度的特征点,如边缘、角点等。这些特征点对于后续的图像分析和处理至关重要。

  • 物体识别:通过在尺度空间中对物体进行分析,计算机可以更好地识别和分类不同尺度的物体。

  • 图像分割:尺度空间可以帮助在不同尺度下进行图像分割,从而提高分割的准确性。

4. 总结

图像尺度空间是计算机视觉中的一个重要概念,通过高斯模糊等技术实现多尺度图像处理,使得计算机能够在不同尺度上识别和分析图像中的物体。随着计算机视觉技术的发展,尺度空间的应用将越来越广泛,为图像处理和分析提供更强大的支持。
在这里插入图片描述在这里插入图片描述不同σ的高斯函数决定了对图像的平滑程度,越大的σ值对应的图像越模糊。

多分辨率金字塔

多分辨率金字塔

多分辨率金字塔是一种用于图像处理和计算机视觉的技术,旨在通过创建图像的不同分辨率版本来有效地表示和处理图像。金字塔结构使得在不同的尺度上进行图像分析和处理变得更加高效,尤其是在特征提取、图像压缩和图像识别等任务中。

1. 金字塔的构建

多分辨率金字塔通常由多个层级组成,每一层代表图像在不同分辨率下的表示。金字塔的构建过程通常包括以下步骤:

  1. 原始图像:从原始图像开始,作为金字塔的底层。

  2. 下采样:通过对原始图像进行下采样(如使用高斯模糊后再进行降采样),生成较低分辨率的图像。下采样可以通过丢弃某些像素或使用卷积操作来实现。

  3. 重复过程:对每一层生成的图像重复下采样过程,直到达到所需的最小分辨率。

1.1 高斯金字塔

高斯金字塔是最常见的多分辨率金字塔类型。在高斯金字塔中,每一层都是通过对上一层应用高斯模糊和下采样生成的。其构建过程如下:

  • 对原始图像应用高斯模糊。
  • 将模糊后的图像下采样(例如,按比例缩小为原来的 1/2)。
  • 重复上述步骤,直到达到所需的层数。
1.2 拉普拉斯金字塔

拉普拉斯金字塔是另一种金字塔结构,它在高斯金字塔的基础上构建。拉普拉斯金字塔的每一层表示的是当前层与下一层之间的差异,通常用于图像压缩和重建。

  • 首先构建高斯金字塔。
  • 然后计算每一层与其下层之间的差异,形成拉普拉斯金字塔。

2. 多分辨率金字塔的应用

多分辨率金字塔在多个领域中得到了广泛应用,包括但不限于:

  • 特征检测:在多分辨率金字塔中,可以有效地检测到不同尺度的特征点,如边缘、角点等。这对于物体识别和图像匹配非常重要。

  • 图像压缩:拉普拉斯金字塔可以用于图像压缩,通过存储金字塔的各层差异而不是完整图像,从而减少存储空间。

  • 图像融合:在图像融合任务中,可以将来自不同源的图像在金字塔的不同层次上进行融合,以获得更高质量的合成图像。

  • 图像分割:多分辨率金字塔可以帮助在不同尺度下进行图像分割,从而提高分割的准确性。

多分辨率金字塔是一种强大的图像表示技术,通过创建不同分辨率的图像层次,使得在不同尺度上进行图像分析和处理变得更加高效。无论是在特征提取、图像压缩还是图像识别等任务中,多分辨率金字塔都发挥着重要作用,为计算机视觉领域的发展提供了有力支持。
在这里插入图片描述

高斯差分金字塔(DOG)

高斯差分金字塔(Difference of Gaussian, DoG)

高斯差分金字塔(DoG)是一种用于图像处理和计算机视觉的多尺度特征提取方法。它通过计算不同尺度下的高斯模糊图像之间的差异来检测图像中的特征,如边缘和角点。DoG 是一种有效的特征检测工具,广泛应用于图像分析、物体识别和计算机视觉中的其他任务。

1. 高斯差分金字塔的构建

高斯差分金字塔的构建过程通常包括以下步骤:

  1. 构建高斯金字塔

    • 从原始图像开始,生成一系列不同标准差( σ \sigma σ)的高斯模糊图像。每一层的图像都是通过对上一层图像应用高斯模糊得到的。
    • 高斯模糊的公式为:
      G ( x , y , σ ) = 1 2 π σ 2 e − x 2 + y 2 2 σ 2 G(x, y, \sigma) = \frac{1}{2\pi\sigma^2} e^{-\frac{x^2 + y^2}{2\sigma^2}} G(x,y,σ)=2πσ21e2σ2x2+y2
    • 通过选择一系列的 σ \sigma σ 值,生成高斯金字塔。
  2. 计算高斯差分

    • 对于相邻的高斯模糊图像,计算它们之间的差异。具体来说,对于每一对相邻的高斯图像 G ( x , y , σ 1 ) G(x, y, \sigma_1) G(x,y,σ1) G ( x , y , σ 2 ) G(x, y, \sigma_2) G(x,y,σ2),计算它们的差值:
      D ( x , y , σ 1 , σ 2 ) = G ( x , y , σ 1 ) − G ( x , y , σ 2 ) D(x, y, \sigma_1, \sigma_2) = G(x, y, \sigma_1) - G(x, y, \sigma_2) D(x,y,σ1,σ2)=G(x,y,σ1)G(x,y,σ2)
    • 这个差值图像即为高斯差分图像。
  3. 构建 DoG 金字塔

    • 将所有的差分图像组合在一起,形成高斯差分金字塔。

2. 高斯差分金字塔的特性

  • 特征检测:DoG 可以有效地检测图像中的边缘和角点等特征,因为这些特征在不同尺度下的高斯模糊图像之间会产生明显的差异。

  • 尺度不变性:由于 DoG 在多个尺度上进行特征提取,因此它具有一定的尺度不变性,能够识别不同大小的特征。

  • 噪声抑制:高斯模糊的应用有助于抑制图像中的噪声,从而提高特征检测的准确性。

3. 应用场景

高斯差分金字塔在多个领域中得到了广泛应用,包括但不限于:

  • 特征点检测:DoG 是许多特征点检测算法的基础,如 SIFT(尺度不变特征变换)算法。SIFT 使用 DoG 来检测关键点,并提取其描述符。

  • 图像匹配:在图像匹配和拼接任务中,DoG 可以帮助识别和匹配不同图像中的特征点。

  • 物体识别:通过提取和匹配特征,DoG 可以用于物体识别和分类。

高斯差分金字塔(DoG)是一种有效的多尺度特征提取方法,通过计算不同尺度下的高斯模糊图像之间的差异,能够有效地检测图像中的特征。它在计算机视觉和图像处理领域中发挥着重要作用,尤其是在特征点检测和物体识别等任务中。随着技术的发展,DoG 的应用和改进将继续推动计算机视觉领域的进步。
在这里插入图片描述

定义公式

D ( x , y , σ ) = [ G ( x , y , k σ ) − G ( x , y , σ ) ] ∗ I ( x , y ) = L ( x , y , k σ ) − L ( x , y , σ ) D(x, y, \sigma)=[G(x, y, k \sigma)-G(x, y, \sigma)] * I(x, y)=L(x, y, k \sigma)-L(x, y, \sigma) D(x,y,σ)=[G(x,y,)G(x,y,σ)]I(x,y)=L(x,y,)L(x,y,σ)

DoG空间极值检测

为了寻找尺度空间的极值点,每个像素点要和其图像域(同一尺度空间)和尺度域(相邻的尺度空间)的所有相邻点进行比较,当其大于(或者小于)所有相邻点时,该点就是极值点。如下图所示,中间的检测点要和其所在图像的3×3邻域8个像素点,以及其相邻的上下两层的3×3领域18个像素点,共26个像素点进行比较。
在这里插入图片描述

关键点的精确定位

这些候选关键点是DOG空间的局部极值点,而且这些极值点均为离散的点,精确定位极值点的一种方法是,对尺度空间DoG函数进行曲线拟合,计算其极值点,从而实现关键点的精确定位。
在这里插入图片描述
消除边界响应后为:
在这里插入图片描述

特征点的方向

在这里插入图片描述
每个特征点可以得到三个信息(x,y,σ,θ),即位置、尺度和方向。具有多个方向的关键点可以被复制成多份,然后将方向值分别赋给复制后的特征点,一个特征点就产生了多个坐标、尺度相等,但是方向不同的特征点。

生成特征描述

在完成关键点的梯度计算后,使用直方图统计邻域内像素的梯度和方向。
在这里插入图片描述
为了保证特征矢量的旋转不变性,要以特征点为中心,在附近邻域内将坐标轴旋转θ角度,即将坐标轴旋转为特征点的主方向。
在这里插入图片描述
旋转之后的主方向为中心取8x8的窗口,求每个像素的梯度幅值和方向,箭头方向代表梯度方向,长度代表梯度幅值,然后利用高斯窗口对其进行加权运算,最后在每个4x4的小块上绘制8个方向的梯度直方图,计算每个梯度方向的累加值,即可形成一个种子点,即每个特征的由4个种子点组成,每个种子点有8个方向的向量信息。
在这里插入图片描述
论文中建议对每个关键点使用4x4共16个种子点来描述,这样一个关键点就会产生128维的SIFT特征向量。
在这里插入图片描述

代码实现

sift = cv2.SIFT_create()函数是使用OpenCV库中的SIFT算法创建一个SIFT对象。调用cv2.SIFT_create()就可以创建一个SIFT对象。SIFT算法是一种用于图像特征提取的算法,可以用于在图像中检测和描述关键点(特征点),以及计算关键点的描述子。

import cv2
import numpy as npimg = cv2.imread('test_1.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
sift = cv2.SIFT_create()
kp = sift.detect(gray, None)
img = cv2.drawKeypoints(gray, kp, img)cv2.imshow('drawKeypoints', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
kp, des = sift.compute(gray, kp)
print (np.array(kp).shape)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/419416.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Infiniband网络架构的技术与性能分析

Infiniband格局寡头,性能占优 这篇文章探讨了网络交换机的性能优势,以及如何通过扩大模型参数量来提高语言模型的生成和预测能力。然而,计算约束对这种正向关系产生了重要影响,导致在相同的计算约束下,总存在最佳的模型…

Linux网络编程IO管理

网络 IO 涉及到两个系统对象,一个是用户空间调用 IO 的进程或者线程,一个是内核空间的内核系统,比如发生 IO 操作 read 时,它会经历两个阶段: 等待内核协议栈的数据准备就绪;将内核中的数据拷贝到用户态的…

随机森林Random Forest(RF)回归预测-MATLAB代码实现

一、随机森林RF(代码获取:底部公众号) 随机森林(Random Forest,RF)是一种机器学习方法,常用于回归预测和分类任务。它通过构建多个决策树,并通过组合它们的预测结果来进行回归预测。…

时序预测|基于粒子群优化支持向量机的时间序列预测Matlab程序PSO-SVM 单变量和多变量 含基础模型

时序预测|基于粒子群优化支持向量机的时间序列预测Matlab程序PSO-SVM 单变量和多变量 含基础模型 文章目录 一、基本原理1. 问题定义2. 数据准备3. SVM 模型构建4. 粒子群优化(PSO)5. 优化与模型训练6. 模型评估与预测7. 流程总结8. MATLAB 实现概述 二、…

浅谈人工智能之python调用通义千问API

浅谈人工智能之python调用通义千问API API-KEY建立 第一步:我们登录阿里云百炼 第二步:点击界面上查看我的API-KEY 第三步:在跳出来的界面中,点击创建API-KEY 第四步:在跳出来的界面中,在描述中输入“t…

算法——支持向量机(support vector machines,SVM)

简介:个人学习分享,如有错误,欢迎批评指正 支持向量机(Support Vector Machine, SVM)是一种监督学习算法,广泛用于分类任务,也可以用于回归和异常检测等问题。SVM的核心思想是通过在特征空间中找…

Unity【Colliders碰撞器】和【Rigibody刚体】的应用——小球反弹效果

目录 Collider 2D 定义: 类型: Rigidbody 2D 定义: 属性和行为: 运动控制: 碰撞检测: 结合使用 实用检测 延伸拓展 1、在Unity中优化Collider 2D和Rigidbody 2D的性能 2、Unity中Collider 2D…

2024/9/8周报

文章目录 摘要Abstract数据挖掘数据挖掘的目标数据挖掘的过程数据挖掘的技术应用领域工具与平台代码示例 总结 摘要 智慧水务项目中,需要对采集的总氮、氨氮、化学需氧量、硝态氮、总磷、硝态氮等数据进行数据处理与挖掘,因此本周对数据挖掘相关内容进行…

CommonCollections1

CommonCollections1 poc展示 这是一段POC,运行后会弹出一个计算器。 import org.apache.commons.collections.*; import org.apache.commons.collections.functors.ChainedTransformer; import org.apache.commons.collections.functors.ConstantTransformer; im…

C#使用MQTT(二):MQTT客户端

上一篇我们初步设计了MQTT服务端 C#使用MQTT(一):MQTT服务端-CSDN博客 这里我们设计客户端MQTT Client,接上一篇 新建Windows窗体FormMqttClient 窗体FormMqttClient设计如图: 窗体FormMqttClient设计器相关代码如下 文件FormMqttClient.Designer.cs namespace…

uni-app--》打造个性化壁纸预览应用平台(四)完结篇

🏙️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名前端工程师 🌄个人主页:亦世凡华、 🌆系列专栏:uni-app 🌇座右铭:人生亦可燃烧,亦可腐败&#xf…

论文写作神器!分享5款AI论文写作常用软件推荐

在当今学术研究和写作领域,AI论文写作工具的出现极大地提高了写作效率和质量。这些工具不仅能够帮助研究人员快速生成论文草稿,还能进行内容优化、查重和排版等操作。以下是五款目前最好用的AI论文写作软件推荐: 1. 千笔-AIPassPaper 千笔-…

SpringCache之本地缓存

针对不同的缓存技术,需要实现不同的cacheManager,Spring定义了如下的cacheManger实现。 CacheManger 描述 SimpleCacheManager 使用简单的Collection来存储缓存,主要用于测试 ConcurrentMapCacheManager 使用ConcurrentMap作为缓存技术&…

mac 安装redis

官网下载指定版本的redis https://redis.io/ 目前3.2.0 是最新最稳定的 版本 这里是历史版本下载 下载指定版本 安装 1.放到自定义目录下并解压 2.打开终端,执行命令 cd redis的安装目录下 make test -- 此命令的作用是将redis源代码编译成可执行文件&#xff0c…

java基础概念21-权限修饰符、代码块

一、权限修饰符 1-1、作用 权限修饰符,是用来控制一个成员能够被访问的范围的。 可以修饰:成员变量,方法,构造方法,内部类。 1-2、权限修饰符的分类 二、代码块 局部代码块构造代码块静态代码块 2-1、局部代码块 …

day1 QT

作业 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//设置窗口大小this->resize(1025,533);//固定窗口大小this->setFixedSize(1025,533);//设置窗口背景色,设置弧度//this->setStyleSheet("background-image:url(E:/…

肖扬老师好书《微权力下的项目管理(第3版)》读书笔记1

肖扬老师好书《微权力下的项目管理(第3版)》,的确不错,分别共读之。 第2章 精华 为了在项目过程中成为一名优秀的导演,项目经理要同时修炼领导和管理这两种不同的能 力,因为项目管理模式就是一种游走于领导…

计算机网络知识点复习——TCP协议的三次握手与四次挥手(连接与释放)

TCP协议的三次握手与四次挥手(连接与释放) 一、前言二、简单的知识准备1. TCP协议的主要特点2. TCP报文段 三、TCP连接的建立(三次握手)四、TCP连接的释放(四次挥手)五、TCP连接与释放的总结六、结束语 一、…

MySQL record 01 part

更改密码: alter user rootlocalhost identified with mysql_native_password by ‘123456’; 注意: 在命令行方式下,每条MySQL的命令都是以分号结尾的,如果不加分号,MySQL会继续等待用户输入命令,直到MyS…

vue2-elementUI-初始化启动项目-git

前置基础 资料下载-阿里云盘 vueaxioselement-uinpmvscode 初始化项目 1.创建vue2工程 1.1 vue create projectName1.2 选择 1.3 初始化 vue-cli 的核心步骤: Manually select features (*) Babel ( ) TypeScript ( ) Progressive Web App (PWA) Support …