计算机视觉(二)图像特征提取

文章目录

  • 颜色特征
    • 量化颜色直方图
      • 适用颜色空间:RGB、HSV等颜色空间
      • 操作
  • 几何特征
    • 边缘 Edge
      • 边缘定义
      • 边缘提取
  • 基于关键点的特征描述子
    • 引入
    • 几何特征:关键点
    • 几何特征:Harris角点
    • FAST角点检测
    • 几何特征:斑点
    • 局部特征:SIFT
    • 预备知识:Haar-like特征
    • 局部特征:SURF
    • BRIEF
    • LBP
  • 其他特征提取
  • 代码实践 pip install opencv-python

颜色特征

量化颜色直方图

适用颜色空间:RGB、HSV等颜色空间

  • HSV空间 计算高效,但存在量化问题和稀疏

操作

  • 颜色空间量化,单元(bin)由单元中心代表
    • 统计落在量化单元上的像素数量

几何特征

边缘 Edge

边缘定义

  • 像素值函数快速变化的区域->一阶导数的极值区域
    在这里插入图片描述

边缘提取

  • 先高斯去噪,再使用一阶导数获取极值
  • 导数对噪声敏感
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

基于关键点的特征描述子

引入

在这里插入图片描述

几何特征:关键点

在这里插入图片描述在这里插入图片描述

几何特征:Harris角点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

FAST角点检测

在这里插入图片描述
在这里插入图片描述

几何特征:斑点

在这里插入图片描述
在这里插入图片描述- –

  • 当sigma较小时,将识别出更为细节的边缘
    在这里插入图片描述
    在这里插入图片描述

局部特征:SIFT

  • 基于尺度空间不变的特征
  • 特点:
    - 具有良好的不变性
    - 独特性好,信息量丰富
    - 多量度
    - 计算快

在这里插入图片描述

  • 计算步骤
    在这里插入图片描述
  • 尺度空间
    LoG和DoG的运行结果差不多,但是DoG(差分)运算效率比LoG(微分)高很多
    在这里插入图片描述
  • 高斯金字塔
    在这里插入图片描述

补充:
1、为什么要构建高斯金字塔
高斯金字塔模仿的是图像的不同的尺度,尺度应该怎样理解?对于一副图像,你近距离观察图像,与你在一米之外观察,看到的图像效果是不同的,前者比较清晰,后者比较模糊,前者比较大,后者比较小,通过前者能看到图像的一些细节信息,通过后者能看到图像的一些轮廓的信息,这就是图像的尺度,图像的尺度是自然存在的,并不是人为创造的。好了,到这里我们明白了,其实以前对一幅图像的处理还是比较单调的,因为我们的关注点只落在二维空间,并没有考虑到“图像的纵深”这样一个概念,如果将这些内容考虑进去我们是不是会得到更多以前在二维空间中没有得到的信息呢?于是高斯金字塔横空出世了,它就是为了在二维图像的基础之上,榨取出图像中自然存在的另一个维度:尺度。因为高斯核是唯一的线性核,也就是说使用高斯核对图像模糊不会引入其他噪声,因此就选用了高斯核来构建图像的尺度。

2、高斯金字塔的构建步骤:
高斯金字塔构建过程中,一般首先将图像扩大一倍,在扩大的图像的基础之上构建高斯金字塔,然后对该尺寸下图像进行高斯模糊,几幅模糊之后的图像集合构成了一个八度,然后对该八度下的最模糊的一幅图像进行下采样的过程,长和宽分别缩短一倍,图像面积变为原来四分之一。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • SIFT-特征点方向估计
    在这里插入图片描述
    在这里插入图片描述
    旋转过程比较复杂,转动特定角度时,点格坐标难表达

  • SIFT-计算特征点描述子
    在这里插入图片描述
    在这里插入图片描述

预备知识:Haar-like特征

  • Haar-like特征分为:边缘特征、线性特征、中心特征和对角线特征。它们组合为特征模板。
    在这里插入图片描述
    Haar特征反映了图像的灰度变化情况。

  • Haar-like特征的快速计算:积分图
    在这里插入图片描述

局部特征:SURF

对SIFT的改进

在这里插入图片描述
用海芬矩阵
在这里插入图片描述

  • 小造型
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
特征点→主方向→64维的向量

在这里插入图片描述
把海森矩阵做分析,形成模板

  • ORB特征描述
    在这里插入图片描述

在这里插入图片描述

BRIEF

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
ORB计算形心。

LBP

在这里插入图片描述
在这里插入图片描述

  • 改进的LBP
    在这里插入图片描述
    在这里插入图片描述
    灰度不变性和旋转不变形

  • Gabor滤波器
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

其他特征提取

代码实践 pip install opencv-python

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

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

相关文章

JavaScript 事件监听

语法:元素对象.addEventListener("事件类型",要执行的函数) 事件监听三要素: 事件源:哪个dom元素被触发了,要获取dom元素事件类型:用什么方式触发,eg:鼠标单击click、鼠标经过mouseover登事件调…

基于WebSocket实现的后台服务

基于WebSocket实现的后台服务,用于接收客户端的心跳消息,并根据心跳消息来维护客户端连接。 具体实现中,服务启动后会创建一个HttpListener对象,用于监听客户端的WebSocket连接请求。当客户端连接成功后,服务会为每个…

Linux环境PostgreSQL安装

今日一语:鲲鹏扶摇而直上九万里,雄鹰展翅高飞,这是因为鲲鹏一出世就得历劫,老鹰刚长出翅膀就会被扔下悬崖 下载安装包,解压到服务器中,然后 make && make install # 登录使用 ./psql # 切换数据库…

maven 离线模式打包

遇到问题 由于客户对于安全性的要求比较高 又想要自己打包,但不允许使用外网,这样就出现了没办法在线打包,需要离线打包。其实也很简单,只需要三步。 第一步 将项目中用到的依赖,下载到本地仓库中,然后将…

idea中Easy Code模版配置

首先找到模版位置 找到使用的模版,我用的是MybatisPlus-H,这是我新建的一个模版 controller.java.vm模版 ##导入宏定义 $!{define.vm}##设置表后缀(宏定义) #setTableSuffix("Controller")##保存文件(宏定义&#xff…

qemu搭建arm环境以及文件共享

几乎完全参照该文章 使用QEMU搭建ARM64实验环境 - 简书 ubuntu 14.04,linux3.16, busybox-1.31.0 arm-linux-gnueabi-gcc -v linux3.16以及busybox下载安装可参考链接 Ubuntu14.04安装qemu,运行linux-3.16gdb调试_qemu 安装 ubuntu 14_这个我…

Kamailio常用命令

kamctl --help:显示kamctl命令的帮助信息。 kamctl ps:列出当前的Kamailio进程列表。 kamctl stats:显示Kamailio的统计信息。 kamctl uptime:显示Kamailio的运行时间。 kamctl moni:启动Kamailio的监控模式。 ka…

Django开发股票分析系统

下面是一个简单的示例代码,展示了如何使用Django来创建一个股票管理分析系统。 首先,在你的虚拟环境中安装Django: pip install Django 然后,创建一个新的Django项目: django-admin startproject stock_management 进入…

Centos MySql安装,手动安装保姆级教程

1.删除原有的mariadb,不然mysql装不进去 查询MAriaDB命令 rpm -qa|grep mariadb 删除 rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64 (yum -y remove mysql 如需要清除服务器上以前安装过的MySQL可执行此命令,执行前一…

【数学建模】相关是一个距离指标吗?

一、说明 本文探讨最平凡的数学模型--距离模型。我们知道,任何数学模型如果是个距离模型,那么它是:放心的、自动的、不加任意条件的指标项目。然而另一些度量参数不是距离空间,因此,使用起来必须外加若干条件&#xff…

一款好用的思维导图软件drawio

最近需要画思维导图,结果发现既然被人用来收费了。所以记录一下,免得大家上当。 首先说明,这个东东在github上是免费开源的,收费的是一些不法分子搞得。下面是收费版本得界面。 开源地址: https://github.com/jgraph…

Java基础面试题04(网络编程)

什么是网络编程?它的作用是什么? 网络编程是一种用于在计算机网络中进行数据交换和通信的编程技术。它涉及到使用网络协议和相关工具来实现程序之间的通信。网络编程的目标是允许不同设备或应用程序之间进行数据传输、共享资源和进行远程控制。 网络编…

Java设计模式之 -- 桥接模式

什么是桥接模式 桥接模式是一种结构型设计模式,也被称为“Handle/Body”。这种设计模式主要用于将抽象部分与它的实现部分分离,使它们可以独立地变化。这种方式有助于减少系统中的耦合性,增加了扩展性。 主要解决什么问题 桥接模式主要解决…

MySQL主从复制环境部署

文章目录 MySQL主从复制什么是主从复制:为什么需要主从复制:配置文件修改-主:时间同步:重启服务-主:创建同步用户:查看主上的二进制文件名及位置:配置-从:测试:注: MySQL…

JUC并发编程之CompletableFuture详解

目录 1.Future接口 1.1 Future介绍 1.1.1 FutureTask 1.1.2 代码示例 2. CompletableFuture 2.1 基本概念 2.2 代码示例 2.2.1 创建CompletableFuture 2.2.2 函数式接口(补充) 2.2.3 异步任务组合 1.Future接口 1.1 Future介绍 JUC并发编程中的…

二叉树题目:从根到叶的二进制数之和

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:从根到叶的二进制数之和 出处:1022. 从根到叶的二进制数之和 难度 3 级 题目描述 要求 给你二叉树…

什么是Java的JVM内存模型?

JVM内存模型是Java虚拟机的一种内存管理方式,它可以让Java程序在运行时动态地分配和释放内存,从而提高程序的性能和稳定性。如果你是一个新手,那么你可能会对JVM内存模型感到有些困惑,不知道该如何理解它。别担心,下面…

Git标签管理(对版本打标签,起别名)

tag 理解标签创建标签git tag [name]git show [tagname] 操作标签删除标签git tag -d < tagname > 推送某个标签到远程git push origin < tagname > 理解标签 标签 tag &#xff0c;可以简单的理解为是对某次 commit 的⼀个标识&#xff0c;相当于起了⼀个别名。 …

Docker:开启应用程序开发新篇章的利器

Docker&#xff1a;开启应用程序开发新篇章的利器 引言&#xff1a;1. Docker 的基本概念2. Docker 的优势3. Docker 在应用程序开发中的实际应用如何创建docker镜像如何部署docker镜像结论&#xff1a; 引言&#xff1a; 在现代软件开发领域中&#xff0c;容器化技术正在迅猛…

C# winform子窗口向父窗口传值

这里我使用一个简单的方法。只需要在父窗口定义一个静态变量就行。 父窗体为Form1,子窗体为Form2。 public static int get_num0; 子窗体直接给get_num赋值即可。 Form1.get_num2; 这样父窗体就能获得get_num修改后这个值了