COMP 9517 Computer Vision week3

目录

  • 特征表示
    • 图像特征概念(image feature)
      • 图像特征应该具备的属性
    • 图像特征种类
      • 颜色特征
        • 颜色直方图(Color Histogram)
        • 颜色矩(Colour moments)
      • 纹理特征(texture features)
        • Haralick特征
        • 局部二值模式(Local Binary Patterns, LBP)
        • 尺度不变特征变换SIFT(Scale-invariant feature transform)
          • SIFT应用
    • 空间变换的类型
      • 空间坐标变换
        • 拟合和对齐
          • 拟合与对齐总结

特征表示

图像特征概念(image feature)

图像特征是矢量(vector),它们是图像的紧凑表示(compact representation)。它们代表图像中显示的重要信息
图像特征示例:斑点(Blobs)、边缘(Edges)、角点(Corner)、脊线(Ridges)、圆(Circles)、椭圆(Ellipses)、线条(Lines)
我们需要将图像表示为特征向量(represent image as feature vectors),以便**更高效(efficient)、更鲁棒(robust)**地进行进一步处理
进一步处理的示例:
目标探测(Object detection)
图像分割(Image segmentation)
图像分类(Image classification)
图像检索(Image retrieval)
图像拼接(Image stitching)
目标跟踪(Object tracking)

为什么不能直接使用像素值(use pixel values directly)作为图像特征

  • 像素值会随光照强度、颜色和角度变化(angle)
  • 像素值也会随着摄像机的方向(orientation)变化
  • 像素值高度冗余(redundant)

图像特征应该具备的属性

  • 可再现性(鲁棒性)(Reproducibility(robustness))
    尽管存在光照(illumination)和视角(viewpoint)的变化,特征应该能够在不同图像中的相同位置被检测到。
  • 显著性(描述性)(Saliency(descriptiveness))
    不同图像中相似的显著(salient)点应该具有相似的特征
  • 紧凑性(效率)(Compactness(efficiency))
    更少、更小的特征

在这里插入图片描述

图像特征种类

颜色特征、纹理特征、形状特征

颜色特征

  • 计算最简单的一种特征
  • 在图像缩放(scaling)、平移(translation)和旋转时不变(invariant)

例子:基于颜色的图像检索
在这里插入图片描述

颜色直方图(Color Histogram)

表示图像中像素颜色的全局分布(global distribution),它展示了每种颜色在图像中的出现频率。

  • 为每个颜色通道(R,G,B)分别构建直方图。
  • 将所有颜色通道的直方图(向量)连接(Concatenate)起来,形成最终的特征向量(as the final feature vector)
    在这里插入图片描述
颜色矩(Colour moments)

表示颜色分布(colour distributions)的另一种方式,常用的有一阶矩、二阶矩和三阶矩,分别表示颜色分布的均值(mean反映总体趋势)、标准差(standard deviation反应分散程度)和偏度(skewness描述颜色分布的对称性)。
在这里插入图片描述

基于颜色矩(based colour moments)的颜色分布表示

  • 使用颜色矩可以得到一个仅包含9个元素的特征向量(对于RGB图像,每个颜色通道3个矩值,共9个元素)。
  • 颜色矩的表示能力低于颜色直方图

在这里插入图片描述

纹理特征(texture features)

  • 描述物体的视觉特征和外观
  • 用于识别视觉模式的强大区分特征
  • 超越颜色或亮度(intensity)的结构均匀性特性(structural homogeneity)
  • 特别用于纹理分类
Haralick特征

图像模式的统计描述数组:Haralick特征是图像中统计描述纹理模式的一组特征,它们能够通过计算统计量来描述图像的纹理特性。
捕捉邻近像素之间的空间关系:Haralick特征通过分析邻近像素之间的灰度共生矩阵(GLCM),来捕捉图像中像素之间的空间关系,从而描述纹理的局部模式。

  • 步骤1:构建灰度共生矩阵(GLCM):首先从图像中构建一个灰度共生矩阵,表示像素之间的灰度值联合分布情况。
    在这里插入图片描述

  • 步骤2:从GLCM中计算Haralick特征描述符:然后从GLCM中提取各种统计特征(例如对比度、能量、同质性等),这些特征被称为Haralick特征。
    在这里插入图片描述

局部二值模式(Local Binary Patterns, LBP)

概念
描述图像局部纹理的空间结构

  • 将图像划分为 N × N N×N N×N像素的网格块
  • 比较每个像素与其 8 个邻域像素的值
  • 如果中心像素的值大于相邻像素的值,写 1;否则写 0
  • 这会给每个像素生成一个 8 位的二进制模式(可以表示为 0 到 255 之间的一个值)
    比较2与周围每个值的大小,生成8位的二进制
    在这里插入图片描述
  • 计算网格单元中每个 8 位二进制数出现的次数
  • 这会生成一个 256 柱的直方图(也称为 LBP 特征向量)
  • 将所有网格单元的直方图组合起来,得到整个图像的 LBP 特征描述符

LBP 可以是多分辨率和旋转不变的

  • 多分辨率:通过改变中心像素和邻域像素之间的距离以及邻域像素的数量来实现。
    P (Points)表示在计算 LBP 时,围绕中心像素选择的邻域像素的数量。它定义了在圆形邻域中使用多少个像素点进行计算。
    R (Radius)表示圆形邻域的半径,即中心像素和邻域像素之间的距离。它定义了邻域的尺度,即邻域像素与中心像素之间的距离。
  • 旋转不变性:通过执行位移(bitwise shift)操作来构建 8 位二进制数,获取(derive)最小的数字以实现旋转不变性。

在这里插入图片描述
最小的模式是 00001111,其对应的值是 15,因此,模式 11110000 的旋转不变表示是 15

尺度不变特征变换SIFT(Scale-invariant feature transform)
  • SIFT 特征描述局部区域(in a localised region)中围绕关键点的纹理。
  • SIFT 描述子对各种变换(various transformations)**缩放、旋转、仿射变形(affine distortion)、光照变化(illumination changes)**保持不变。

SIFT算法概述
在这里插入图片描述1. 尺度空间极值检测 (Scale-Space Extrema Detection):在不同尺度的 DoG(差分高斯)图像中查找极大值和极小值。

  • 在图像的尺度空间(scale space)中检测极大值和极小值
    在这里插入图片描述
  1. 关键点定位 (Keypoint Localization):丢弃低对比度的关键点,并消除边缘响应
    改进并减少找到的关键点集
    • 在尺度空间中使用 3D 二次拟合(quadratic fitting)来获得亚像素级的极值点
    • 使用 Hessian 分析拒绝低对比度(reject low-constrast)点和边缘点。在这里插入图片描述
  2. 方向分配 (Orientation Assignment):通过分配方向,实现旋转不变性。
    使用局部梯度向量(local gradient vectors)估计关键点的方向
    • 生成局部梯度向量的方向直方图
    • 从直方图的主峰中找到主导方向
    • 如果第二高的峰值超过80%,则为其创建额外的关键点
  3. 关键点描述子 (Keypoint Descriptor):计算梯度方向直方图
    表示每个关键点的128维特征向量
    • 4x4的梯度方向直方图阵列,其每个直方图的权重由梯度幅度决定
    • 每个梯度方向直方图包含8个方向(bins)
    • 总共的维度数为8个方向 × 4 × 4 的阵列 = 128维
SIFT应用

匹配两个部分重叠的图像

  1. 在128维特征空间中找到SIFT关键点的最佳匹配
    在这里插入图片描述
    最近邻距离比率(NNDR)
    比较最近邻和次最近邻的描述符距离
    N N D R = d 1 d 2 = ∥ D A − D B ∥ ∥ D A − D C ∥ \mathrm{NNDR}=\frac{d_1}{d_2}=\frac{\left\|D_A-D_B\right\|}{\left\|D_A-D_C\right\|} NNDR=d2d1=DADCDADB
    在这里插入图片描述
    如果比率NNDR > 0.8,则认为这个匹配不可靠,应该舍弃。比率越大,说明第一个匹配的准确性不高,容易产生误匹配。

  2. 找到SIFT关键点和特征对应关系
    在这里插入图片描述

  3. 找到正确的空间变换(spatial transformation)
    在这里插入图片描述

空间变换的类型

  • 刚性变换
    • 平移(Translation)
    • 旋转(Rotation)
  • 非刚性变换
    • 缩放(Scaling)
    • 仿射变换(Affine)
    • 透视变换(Perspective)

空间坐标变换

缩放(scale)、旋转(rotate)、仿射变换(Affine):

在这里插入图片描述
剪切(shear)、平移(translate)、透视变换(perspective)
在这里插入图片描述

拟合和对齐
  • 使用 最小二乘法(Least Squares, LS) 进行拟合和对齐(Fitting and alignment)对应的关键点,以找到图像变换的最佳参数
    找到一个变换 T 的参数向量 p,最小化所有关键点配对之间的平方误差
    E = ∑ i ∥ T ( x i ; p ) − x i ′ ∥ 2 E=\sum_i\left\|T\left(\mathbf{x}_i ; \mathbf{p}\right)-\mathbf{x}_i^{\prime}\right\|^2 E=iT(xi;p)xi2
  • 仿射变换的例子 x i = ( x i , y i ) into  x i ′ = ( x i ′ , y i ′ ) \mathbf{x}_i=\left(x_i, y_i\right) \text { into } \mathbf{x}_i^{\prime}=\left(x_i^{\prime}, y_i^{\prime}\right) xi=(xi,yi) into xi=(xi,yi)
    在这里插入图片描述
    RANSAC(随机采样一致性)
  • 最小二乘法受到离群点影响(hampered by outliers)
  • 需要某种离群点检测(outlier detection)和剔除(rejection)的方法。
  • 最好使用数据的一个子集并检查内点(inlier)的匹配度(agreement)
  • RANSAC以迭代(iterative)的方式进行,以找到最佳解(optimum)
    RANSAC例子线性拟合模型
  • 随机采样:随机采样出拟合模型(fit the model)所需的最少点数。比如,拟合直线时,需要采样两个点。
    在这里插入图片描述
  • 模型拟合:使用采样点来解出模型参数(model parameter)(例如直线的斜率和截距)。
    在这里插入图片描述
  • 评分内点:通过计算与模型(即直线)在设定阈值距离内的点(称为内点)的比例来对模型进行评分。
    图中的直线表示拟合的模型(如直线),两侧的虚线表示允许的误差范围(即阈值 δ)。被蓝圈圈住的点是内点,它们位于模型允许的误差范围内,因此被视为符合模型的点。

在这里插入图片描述

  • 迭代过程:重复步骤1-3,并记录具有最多内点的模型(最佳拟合),直到找到具有高置信度的最佳模型为止。
    在这里插入图片描述
拟合与对齐总结

根据匹配点 A 和 B 估计变换
平移示例:
[ x i B y i B ] = [ x i A y i A ] + [ t x t y ] \left[\begin{array}{l} x_i^B \\ y_i^B \end{array}\right]=\left[\begin{array}{l} x_i^A \\ y_i^A \end{array}\right]+\left[\begin{array}{l} t_x \\ t_y \end{array}\right] [xiByiB]=[xiAyiA]+[txty]
通过这些匹配点,可以计算出从左图到右图的平移向量 t x t_x tx t y t_y ty,从而实现图像对齐。
在这里插入图片描述

  • 写出方程组: A p = b A p=b Ap=b
  • 求解参数: p = ( A T A ) − 1 A T b p=\left(A^T A\right)^{-1} A^T b p=(ATA)1ATb
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Error while loading conda entry point: conda-libmamba-solver

问题 解决方法 conda install --solverclassic conda-forge::conda-libmamba-solver conda-forge::libmamba conda-forge::libmambapy conda-forge::libarchive

如何实现事件流操作

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了通道相关的内容,本章回中将介绍StreamProvider组件.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 在Flutter中Stream是经常使用的组件,对该组件的监听可void main() {///让状态栏和程序的appBar融为一体…

zotero WebDAV同步忘记密码

https://www.jianguoyun.com/#/safety 找到应用密码

thinkphp 学习记录

1、PHP配置 (点开链接后,往下拉,找到PHP8.2.2版本,下载的是ZIP格式,解压即用) PHP For Windows: Binaries and sources Releases (这里是下载地址) 我解压的地址是:D:\…

Gitlab flow工作流

Gitlab flow Gitlab flow 是 Git flow 与 Github flow 的综合。它吸取了两者的优点,既有适应不同开发环境的弹性,又有单一主分支的简单和便利。它是 Gitlab.com 推荐的做法。 1 上游优先 Gitlab flow 的最大原则叫做"上游优先"(…

【408计算机考研课程】数据结构-数据结构在学什么?

前言 数据结构在学什么? 如何用程序代码把现实世界的问题信息化如何用计算机高效地处理这些信息从而创造价值 第一章:数据结构在学什么? 总览 什么是数据? 简介:数据是信息的载体,是描述客观事物属性的数、…

el-pagination组件封装

组件使用 源代码&#xff1a; <script setup> import Pagination from /components/pagination/index.vue import {ref} from "vue";const pageNum ref(1) const pageSize ref(10) const total ref(120)function loadData() {// 加载数据 } </script>…

拓扑排序简介

拓扑排序(Topological Sort)是一种重要的图算法,用于对有向无环图(DAG, Directed Acyclic Graph)中的节点进行排序。拓扑排序的结果是一种线性序列,使得对于图中的任意一条有向边(u, v),顶点u都在顶点v之前。这种排序常用于任务调度、编译器依赖关系分析等领域。 拓…

24个AI写作秘技,助你写出震撼人心的佳作!

最近&#xff0c;许多朋友开始尝试使用AI进行写作。然而&#xff0c;他们创作的文章常常显得语言过于正式&#xff0c;不仅缺乏沉浸感&#xff0c;发送后也很容易被系统检测出重复内容。我一直强调&#xff0c;在写作过程中&#xff0c;我们不应完全依赖AI。AI只是一种工具&…

【C语言】分支与循环

文章目录 前言if语句关系操作符逻辑操作符&#xff1a;&& , || , &#xff01;switch语句if语句和switch语句的对比 while循环for循环do-while循环break和continue语句循环嵌套goto语句 前言 C语⾔是结构化的程序设计语⾔&#xff0c;这⾥的结构指的是顺序结构、选择&…

12条职场经验总结

01 事干得好不好尚且不说&#xff0c;但是话一定要说得漂亮。 比如&#xff0c;当领导给你安排工作的时候&#xff0c;你一定要非常积极地响应&#xff0c;拍着胸脯跟领导说“放心吧”。至于后续到底怎么干&#xff0c;再结合实际情况有的放矢地把握。 02 当别人夸奖你的时…

Hugging Face 任意大模型仓库劫持 - 无声的破坏

摘要 在这篇博客中&#xff0c;我们展示了攻击者如何攻击Hugging Face的Safetensors转换空间及其相关的服务机器人。这些服务是一个在Hugging Face上广受欢迎的服务&#xff0c;专门用于将不安全的机器学习模型转换为更安全的版本。我们随后展示了如何通过Hugging Face自身的服…

GoogleNet原理与实战

在2014年的ImageNet图像识别挑战赛中&#xff0c;一个名叫GoogLeNet 的网络架构大放异彩。以前流行的网络使用小到11&#xff0c;大到77的卷积核。本文的一个观点是&#xff0c;有时使用不同大小的卷积核组合是有利的。 回到他那个图里面你会发现,这里的一个通过我们最大的池化…

《Linux从小白到高手》理论篇:Linux用户和组相关的命令

List item 本篇介绍Linux用户和组相关的命令&#xff0c;看完本文&#xff0c;有关Linux用户和组相关的常用命令你就掌握了99%了。Linux用户和组相关的命令可以分为以下六类&#xff1a; 一.用户和用户组相关查询操作命令&#xff1a; Id id命令用于显示用户的身份标识。常见…

职场中的10个“人情世故”,随处可见

职场上&#xff0c;“现实”是主基调。如果不通#人情世故#&#xff0c;可能举步维坚。很多时候&#xff0c;人情世故并不是什么高深的学问&#xff0c;就是在点点滴滴间&#xff0c;只要稍加注意&#xff0c;就能学通。下面这10条&#xff0c;是职场很常见的人情世故。 1、登门…

InnoDB 事务模型

文章目录 InnoDB 事务模型事务ACID特性事务隔离级别 事务操作事务并发问题事务数据读写类型Consistent Nonlocking Reads 快照读Locking Reads 加锁读 MVCC 并发控制实现原理InnoDB 隐藏列Read ViewUndo log实现过程 MVCC与隔离级别MVCC和辅助索引 幻读幻行问题可重复读MVCC会出…

HTB:Synced[WriteUP]

目录 连接至HTB服务器并启动靶机 1.What is the default port for rsync? 2.How many TCP ports are open on the remote host? 3.What is the protocol version used by rsync on the remote machine? 4.What is the most common command name on Linux to interact w…

一些关于上传数据-p7zip-full-压缩包的经验

目录 前言 7z 简介 Windows如何压缩tar.gz格式 一、下载7-ZIP 二、tar文件进一步压缩 说明&#xff1a; 前言 本人每次在linux服务器上执行apt-get install p7zip-full命令&#xff0c;都会有复杂依赖报错&#xff08;因为实验过程中用到的依赖包太多了&#xff09;&…

[Python学习日记-39] 闭包是个什么东西?

[Python学习日记-39] 闭包是个什么东西&#xff1f; 简介 闭包现象 闭包意义与作用 简介 在前面讲函数和作用域的时候应该提到过&#xff0c;当函数运行结束后会由 Python 解释器自带的垃圾回收机制回收函数内作用域已经废弃掉的变量&#xff0c;但是在 Python 当中还有一种…

Linux中的多线程

Linux线程概念 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部的控制序 列” 进程是系统分配资源的基本实体 线程是CPU调度的基本单位 POSIX线程库 创建线程 功能&#xff1a;创建一个新的线程 原…