图像处理与视觉感知---期末复习重点(8)

文章目录

  • 一、图像分类流程
  • 二、梯度方向直方图
    • 2.1 概述
    • 2.2 计算梯度方向直方图
      • 2.2.1 过程
      • 2.2.2 总结
  • 三、SIFT


一、图像分类流程

 流程:输入图像、预处理、特征提取、学习算法、类标。

在这里插入图片描述

二、梯度方向直方图

2.1 概述

 1. 梯度方向直方图(Histogram of Oriented Gradient, HOG):是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。HOG特征结合SVM分类器被广泛应用于图像识别中,尤其在行人检测。

特征描述子就是将图像抽取部分有用信息,丢掉不相关的信息。特征描述子可以将一个 w e i g h t × h e i g h t × 3 weight×height×3 weight×height×3(宽×高×通道数量)的图像转换成一个长为 n n n 的向量或矩阵。例如:一幅 64 × 128 × 3 64×128×3 64×128×3 的图像,经过转换之后可以输出长度为 3780 3780 3780 的图像向量,相比 64 × 128 × 3 64×128×3 64×128×3 肯定是少了的。因为,特征描述子仅仅将所需要显示的图像保留下来了。

比如说,我们想知道一个人有没有带眼镜,在这种情况下,我们仅仅需要提取人的面部特征,并且进行边缘检测,这个时候,我们可以忽略掉图片的彩色特征,将照片转换成变成仅仅有边缘轮廓的特征图。这种特征图不仅仅数据量小,而且具有很强的目标指向性。

 2. 算法思想:(1)HOG特征的核心思想是在一幅图像中,局部目标的表观和形状(appearance and shape)能够被梯度和边缘的方向密度很好地描述。(2)通过将整幅图像分为多个小的连通区域(单元,cells),并计算每个cell的梯度或边缘方向直方图,这些直方图的组合可用于构成特征描述子,为了提高准确率,可以将局部直方图在图像更大范围内(块,block)进行对比度归一化(constrast-normalized)。

2.2 计算梯度方向直方图

2.2.1 过程

 1. 预处理:patch可以是任意的尺寸,但是有一个固定的比例,比如当patch长宽比1:2,那patch大小可以是100×200、128×256或者1000×2000,但不可以是101×205(比例关系不对)。这里有张图是720×475的,我们选100*200大小的patch来计算HOG特征,把这个patch从图片里面抠出来,然后再把大小调整成64×128。

在这里插入图片描述

 2. 计算梯度图像:首先我们计算水平和垂直方向的梯度,再来计算梯度的直方图。
 (1) x轴方向的梯度主要凸显了垂直方向的线条;y轴方向的梯度凸显了水平方向的线条。
 (2) 梯度幅值凸显了像素值有剧烈变化的地方。
 (3) 图像的梯度去掉了很多不必要的信息(比如不变的背景色),加重了轮廓。

在这里插入图片描述

 3. 在每个单元(8×8大小像素)中计算梯度直方图
 (1) 图像会被分割成每个单元( 8×8大小像素)。每个单元都会计算一个梯度直方图。
 (2) 提供一个紧凑或压缩的表示:一个8×8的图像有8×8×3=192个像素值;每个像素有两个值:幅值magnitude和方向direction,3个通道只会将最大的梯度值以及方向角记录下来,加起来就是8×8×2=128。所以说实际的梯度直方图应当含有8×8×2=128个值。

在这里插入图片描述

在这里插入图片描述

 (3) 对于64×128的这幅图像来说,每个单元(8×8大小)已经足够大来表示有趣的特征比如脸,头等等。

 (4) 直方图是有9个bin的向量,角度:0,20,40,60…160。bin的值:每个角度对应的幅值之和。
 以下图为例,此过程是根据梯度和角度来确定bin的过程。蓝色和红色分别是两个过程,先看蓝色。我们可以看到蓝色像素梯度值是2,方向为80°角,于是在第5个bin中加2;对于红色,角度为10、梯度值为4,但是bin中没有10,只有0和20,于是将梯度值分2份各分到bin里面的1和2当中。

在这里插入图片描述

 这里有个细节要注意,如果一个角度大于160度,也就是在160-180度之间,我们知道这里角度0,180度是一样的,所以在下面这个例子里,像素的角度为165度的时候,要把幅值按照比例放到0和160的bin里面去。

在这里插入图片描述

 (5) 把这8*8的单元cell里面所有的像素点都分别加到这9个bin里面去,就构建了一个9-bin的直方图,上面的单元cell对应的直方图如下:

在这里插入图片描述

 4. 16×16(像素)的块(block)归一化:进行归一化的原因是图像梯度对于光线很敏感。
 (1) 可以对向量用L2进行归一化,公式如下所示:

在这里插入图片描述

 (2) 一般不会在每一个9×1的直方图上面做归一化,而是从一个16×16的块上做归一化,也就是4个9×1的直方图组合成一个36×1的向量,然后做归一化,接着,窗口再朝后面挪8个像素。

在这里插入图片描述

 5. 计算HOG特征向量:为了计算这整个patch的特征向量,需要把36×1的向量全部合并组成一个向量。向量的大小可以这么计算:
 (1) 我们有多少个16×16的块?对于64×128的这幅patch:水平7个,垂直15个,总共有7*15=105次移动。

 (2) 每个16×16的块代表了36×1的向量。所以把他们放在一起也就是36×105=3780维向量。

 (3) 可视化HOG:通常HOG特征描述子是画出8×8网格中9×1归一化的直方图。直方图的主要方向捕捉了这个人的外形,特别是躯干和腿。

2.2.2 总结

在这里插入图片描述

三、SIFT

 1. 核心步骤:将一幅图像映射(变换)为一个局部特征向量集;特征向量具有平移、缩放、旋转不变性,同时对光照变化、仿射及投影变换也有一定不变性。

在这里插入图片描述

 2. SIFT算法主要有三大步骤:(1) 提取关键点。 (2) 对关键点附加详细的信息(局部特征)构建描述器。 (3) 通过两特征点(附带上特征向量的关键点)的两两比较找出相互匹配的若干对特征点,建立景物间的对应关系。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ交换机的类型

交换机类型 可以看到,在订阅模型中,多了一个exchange角色,而且过程略有变化: Publisher:生产者,不再发送消息到队列中,而是发给交换机 Exchange:交换机,一方面&#xff…

Backend - DRF 序列化(django-rest-framework)

目录 一、restful 、django-rest-framework 、swagger 三者的关系 (一)restful API(REST API) 1. rest 2. restful 3. api 4. restfulAPI (二)django-rest-framework(简称DRF&#xff09…

中立分析腾讯云故障相关的事件

最近腾讯云的故障,让一堆云计算爱好者兴奋地远看指点江山、近看沐猴而冠。我比这群爱好者们更了解云计算,但是我尊重我的读者,你们从我这里看到的科普信息,不仅仅只有情绪价值。 在信息爆炸的时代,大家关注和信任某个媒…

如何使用docker-compose安装数据可视化应用JSON Crack并实现远程访问

文章目录 1. 在Linux上使用Docker安装JSONCrack2. 安装Cpolar内网穿透工具3. 配置JSON Crack界面公网地址4. 远程访问 JSONCrack 界面5. 固定 JSONCrack公网地址 JSON Crack 是一款免费的开源数据可视化应用程序,能够将 JSON、YAML、XML、CSV 等数据格式可视化为交互…

微服务中的重要模块

为什么要有微服务? 微服务提高开发效能,避免业务的重复理解,代码重复开发,增加开发效能和代码复用性。 在实际的工作中许多不同的业务有着共同的功能需求,如果我们每遇到一次这种需求就重新去理解构建一次的话会花费大…

msyql中SQL 错误 [1118] [42000]: Row size too large (> 8126)

场景: CREATE TABLE test-qd.eqtree (INSERT INTO test.eqtree (idocid VARCHAR(50) NULL,sfcode VARCHAR(50) NULL,sfname VARCHAR(50) NULL,sfengname VARCHAR(50) NULL,…… ) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_general_ci;或 alter table eqtre…

Ctex+texmaker

最近要准备幻灯片,发现我喜欢的模板是用的Ctex,在Texlive下没有办法运行。 于是进行了很多尝试。最后找到一个快捷的办法,删掉自己笔记本中的texlive,在Ctex官网中下载Ctex套件(下载中心 – CTEX),下载的版本是过时版…

Linux 安装KVM虚拟机

什么是KVM虚拟机? KVM 是 Kernel-based Virtual Machine 的缩写,是一种用于虚拟化的开源硬件虚拟化技术。它使用 Linux 内核的虚拟化模块,将物理服务器划分为多个虚拟机。KVM 允许虚拟机直接访问物理硬件资源,从而提供出色的性能和稳定性,同…

解读科技智慧公厕改变生活的革命性创新之路

公共厕所,作为城市基础设施的一部分,一直以来都备受人们诟病。脏乱差、设施老旧、管理混乱,成为公共厕所长期存在的问题。然而,随着科技的不断进步,智慧公厕应运而生,为解决公厕难题,智慧公厕源…

BetterDisplay Pro for Mac 显示器校准和优化软件

BetterDisplay Pro for Mac是一款适用于Mac电脑的显示器校准和优化软件。它可以帮助用户校准显示器的颜色、亮度、对比度和伽马值等参数,使得显示器更加准确和清晰,提高用户的工作效率。 BetterDisplay Pro for Mac v2.0.11激活版下载 这款软件具有直观的…

电脑不能上网,宽带调制解调器出现问题如何处理

目录 一、问题说明 二、解决方案 一、问题说明 内网的设备能互联,内网的各个设备无法连外网。 电脑在检测网络时,出现以下提示: 二、解决方案 首先重启光猫(我们是电信宽带)。 如果还是有问题,再重启…

springboot+vue全栈开发【3.前端篇之Vue基础语法2】

目录 前言Vue基础语法1.事件绑定指令2.条件渲染指令v-show和v-if指令v-else和v-else-if指令 3.列表渲染指令扩展:v-for中的key 前言 hi,这个系列是我自学开发的笔记,适合具有一定编程基础(html、css那些基础知识要会!…

MAC安装CocoaPods遇到的错误Failed to build gem native extension.

MAC安装CocoaPods遇到的错误Failed to build gem native extension. 配置flutter环境的时候报错cocoapods不可用 发现已经安装了CocoaPods,但是不能用 重新安装CocaPods sudo gem install cocoapods重新安装报错如下: 安装RVM curl -L https://get.r…

HBase的数据模型与架构

官方文档:Apache HBase – Apache HBase™ Homehttps://hbase.apache.org/ 一、HBase概述 1.概述 HBase的技术源自Google的BigTable论文,HBase建立在Hadoop之上,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,用于…

10. Spring MVC 程序开发

本文源码位置: Spring-MVC 1. Spring MVC 概要 摘自Spring官方: Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,” comes …

Redis的Stream 和 实现队列的方式【List、SortedSet、发布订阅、Stream、Java】

Redis队列与Stream、Redis 6多线程详解 Redis队列与StreamStream总述常用操作命令生产端消费端单消费者消费组消息消费 Redis队列几种实现的总结基于List的 LPUSHBRPOP 的实现基于Sorted-Set的实现PUB/SUB,订阅/发布模式基于Stream类型的实现与Java的集成 消息队列问…

权限管理Ranger详解

文章目录 一、Ranger概述与安装1、Ranger概述1.1 Ranger介绍1.2 Ranger的目标1.3 Ranger支持的框架1.4 Ranger的架构1.5 Ranger的工作原理 2、Ranger安装2.1 创建系统用户和Kerberos主体2.2 数据库环境准备2.3 安装RangerAdmin2.4 启动RangerAdmin 二、Ranger简单使用1、安装 R…

使用代理IP实现Python爬虫中的随机IP请求

目录 前言 一、什么是代理IP? 二、 随机IP请求的实现步骤 1. 获取代理IP列表 2. 随机选择代理IP 3. 发送请求 4. 处理响应 总结 前言 在网络爬虫中,使用代理IP是一种常见的技术手段,它可以帮助我们隐藏真实IP地址,提高爬取…

python生成二维码

要在Python中生成二维码,可以使用第三方库qrcode。首先,确保已经安装了qrcode库: pip install qrcode然后,使用以下代码生成二维码: import qrcodedata "https://mp.csdn.net/mp_blog/creation/editor?spm100…

static+单例模式+类的复合继承

汇编语言 汇编语言是最靠谱的验证“编程语言相关知识点”正确性的方式 汇编语言与机器语言一一对应,每一条机器语言都有与之对应的汇编指令 机器语言是计算机使用的语言,它是一串二进制数字 汇编语言可以通过汇编得到机器语言机器语言可以通过反汇编得到…