HOG:对比度归一化步骤做了什么?

2024-02-18

根据HOG流程,如论文中所述用于人体检测的定向梯度直方图(参见下面的链接),对比归一化步骤是在分箱和加权投票之后完成的。

我不明白 - 如果我已经计算了细胞的加权梯度,那么图像对比度的归一化现在对我有什么帮助?

据我了解,对比度归一化是在原始图像上完成的,而为了计算梯度,我已经计算了原始图像的 X,Y 导数。因此,如果我标准化对比度并且希望它生效,我应该重新计算所有内容。

有什么我不太明白的吗?

我应该标准化单元格的值吗?

HOG 中的归一化是否与对比度无关,而是与直方图值(每个箱中的细胞计数)有关?

论文链接:http://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf http://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf


对比度归一化是通过每个块的局部直方图的归一化来实现的。

整个 HOG 提取过程在这里得到了很好的解释:http://www.geocities.ws/talh_davidc/#cst_extract http://www.geocities.ws/talh_davidc/#cst_extract

当您标准化块直方图时,如果您的直方图确实包含每个方向的幅度总和,则实际上您标准化了该块中的对比度。

术语“直方图”在这里很令人困惑,因为您没有计算有多少像素方向k,而是对这些像素的大小求和。因此,您可以在计算块的向量之后,甚至在计算整个向量之后,对对比度进行归一化,假设您知道块在向量中的哪些索引开始和结束。

根据我的理解,算法的步骤对我来说是有效的,成功率为 95%:

  1. 定义以下参数(在本例中,参数类似于用于人体检测的 HOG 论文):

    • 以像素为单位的像元大小(例如 6x6)
    • 以单元格为单位的块大小(例如 3x3 ==> 表示以像素为单位为 18x18)
    • 块重叠率(例如50%==>意味着块宽度和块高度(以像素为单位)必须是偶数。在本例中满足,因为单元格宽度和单元格高度是偶数(6像素),使得块宽度而且身高也均匀)
    • 检测窗口大小。大小必须可以除以块大小的一半而没有余数(因此可以将块精确地放置在其中并具有 50% 的重叠)。例如,块宽度为 18 个像素,因此窗口宽度必须是 9 的乘积(例如 9、18、27、36...)。窗户高度相同。在我们的示例中,窗口宽度为 63 像素,窗口高度为 126 像素。
  2. 计算梯度:

    • 使用向量 [-1 0 1] 卷积计算 X 差异
    • 使用卷积与上述向量的转置计算 Y 差异
    • 使用以下方法计算每个像素中的梯度幅度sqrt(diffX^2 + diffY^2)
    • 使用以下方法计算每个像素的梯度方向atan(diffY / diffX)。注意atan将返回介于-90 and 90,而您可能需要之间的值0 and 180。所以就flip将所有负值相加+180度。请注意,在用于人体检测的 HOG 中,它们使用无符号方向(0 到 180 之间)。如果你想使用带符号的方向,你应该多做一点努力:如果 diffX 和 diffY 是正数,你的atan值将介于0 and 90- 保持原样。如果 diffX 和 diffY 为负值,您将再次获得相同范围的可能值 - 此处添加 +180,因此方向会翻转到另一侧。如果 diffX 为正且 diffY 为负,您将得到介于-90 and 0- 保持不变(如果你想要正值,可以添加+360)。如果 diffY 为正且 diffX 为负,您将再次获得相同的范围,因此添加 +180,以将方向翻转到另一侧。
    • “Bin”指示。例如,9 个未签名的 bin:0-20、20-40、...、160-180。您可以通过将每个值除以 20 并将结果取整来轻松实现这一点。您的新分档路线将介于0 and 8.
  3. 使用原始矩阵的副本分别对每个块进行操作(因为有些块是重叠的,我们不想破坏它们的数据):

    • 拆分为单元格
    • 对于每个单元格,创建一个包含 9 个成员的向量(每个 bin 一个)。对于箱中的每个索引,设置该方向上所有像素的所有大小的总和。一个单元格中总共有 6x6 像素。例如,如果 2 个像素的方向为 0,而第一个像素的大小为 0.231,第二个像素的大小为 0.13,则您应该在向量的索引 0 中写入值 0.361 (= 0.231 + 0.13)。
    • 将块中所有单元格的所有向量连接成一个大向量。这个向量的大小当然应该是NUMBER_OF_BINS * NUMBER_OF_CELLS_IN_BLOCK。在我们的例子中,它是9 * (3 * 3) = 81.
    • 现在,标准化这个向量。使用k = sqrt(v[0]^2 + v[1]^2 + ... + v[n]^2 + eps^2)(我使用 eps = 1)。当你计算完之后k,将向量中的每个值除以k- 因此你的向量将被标准化。
  4. 创建最终向量:

    • 将所有块的所有向量连接成 1 个大向量。在我的例子中,这个向量的大小是 6318
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HOG:对比度归一化步骤做了什么? 的相关文章

  • 使用 python 和 opencv 检测图像中的文本区域

    我想使用 python 2 7 和 opencv 2 4 9 检测图像的文本区域 并在其周围画一个矩形区域 就像下面的示例图片所示 我对图像处理很陌生 所以任何想法如何做到这一点将不胜感激 有多种方法可以检测图像中的文本 我建议看看这个问题
  • 如何从旋转矩阵计算角度

    我使用单个对象的两个图像 该对象从第一个图像旋转一定角度 我计算了每个图像的姿势 并使用 Rodergues 将旋转向量转换为矩阵 现在我如何计算并查看它从第一个位置旋转了多少 我尝试了很多方法 但答案是否定的 编辑 我的相机是固定的 只有
  • Tensorflow 和 Keras 无法加载 .ckpt 保存

    因此 我使用 ModelCheckpoint 回调来保存我正在训练的模型的最佳时期 它保存时没有错误 但是当我尝试加载它时 出现错误 2019 07 27 22 58 04 713951 W tensorflow core util ten
  • 如何使用 Opencv 存储大量图像的分层 K 均值树?

    我正在尝试制作一个程序 可以从图像数据集中找到相似的图像 步骤是 提取所有图像的 SURF 描述符 存储描述符 对存储的描述符应用 knn 使用 kNN 将存储的描述符与查询图像描述符进行匹配 现在每个图像 SURF 描述符将存储为分层 k
  • 相同投影矩阵的不同基本矩阵

    我使用两个投影矩阵 P1 和 P2 例如我使用恐龙数据集 http www robots ox ac uk 7Evgg data1 html 并且我需要计算基本矩阵 F 所以我使用两个Matlab函数 彼得 科维西的函数 www csse
  • TensorFlow 2.0 中不再提供投影变换,我该怎么办?

    我的团队正在切换到 TensorFlow 2 0 我正在研究数据增强管道 TensorFlow 1 X 有tf contrib image transform允许投影变换 TensorFlow 中没有变换函数tf image它肯定没有tf
  • 将 CNN Pytorch 中的预训练权重传递到 Tensorflow 中的 CNN

    我在 Pytorch 中针对 224x224 大小的图像和 4 个类别训练了这个网络 class CustomConvNet nn Module def init self num classes super CustomConvNet s
  • 将点云转换为深度/多通道图像

    我有一个通过使用立体相机扫描平面生成的点云 我已经生成了法线 fpfh 等特征 并使用这些信息我想对点云中的区域进行分类 为了能够使用更传统的 CNN 方法 我想将此点云转换为 opencv 中的多通道图像 我将点云折叠到 XY 平面 并与
  • 将图像与噪声进行模板匹配的最佳方法是什么?

    我有一个大图像 5400x3600 其中有多个我需要检测的闭路电视 旋转检测需要花费大量时间 4 7 分钟 但它仍然无法解决某些闭路电视问题 匹配这样的模板的最佳方法是什么 我正在使用 skImage openCV 不适合我 但我也愿意接受
  • 提高 SURF 在小图像上的性能

    我在网络上遇到的每个 SURF 实现似乎都特别不擅长从小图像 例如 100x100 或更小 中提取有用数量的兴趣点 我尝试了多种方法 1 使用各种放大算法 从简单的最近邻算法到更高级的算法 基本上每个放大器 imagemagick 都提供
  • 如何使用OpenCV通过solvePnP估计距离?

    我尝试估计相机和用于校准的棋盘之间的距离 但棋盘上点的 Z 值 993 1021 毫米 有很大不同 棋盘与相机平行 因此我预计相机中心和棋盘平面上任何点之间的 Z 值应该相同 我做错了什么 Code import numpy import
  • 如何用Python去除图像中的小物体

    我的 python 代码有问题 我想对胸部X光片进行图像处理以获得肺部模式 但我的代码结果仍然有一点污点 如何摆脱这些小物体 这是我的代码 import cv2 import numpy as np from skimage import
  • 相机框架相对于基准点的世界坐标

    我正在尝试确定世界坐标中的相机位置 相对于基于场景中找到的基准标记的基准位置 我确定 viewMatrix 的方法如下所述 确定相机姿势 https stackoverflow com questions 28335954 determin
  • 给定焦点和相机主中心,如何创建透视投影矩阵

    我设法使用 OpenCV 获取相机的内在和外在参数 因此我有 fx fy cx 和 cy 我还有屏幕 图像的宽度和高度 但是如何根据这些参数创建 OpenGL 透视投影矩阵呢 glFrustum 展示了如何在给定 Z 近 Z 远以及图像宽度
  • 如何使用 OpenCV 和 Python 通过检测到的脸部和眼睛来移动鼠标

    我已经成功地通过在脸部和眼睛周围绘制循环来检测它们 并且在 Python 教程的帮助下工作得很好Python教程 https docs python org 3 5 tutorial index html 学习 OpenCV http ww
  • OCR 扑克牌 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我决定做一个有趣的项目 我想将扑克牌的图像作为输入并返回其等级和花色 我认为我只需要查看左上角 因为那里包含了所有信息 它应该是稳健的
  • 如果相机平移也在 Z 方向,单应性在平面场景的两个图像之间是否成立?

    我正在尝试计算两个图像之间的相对姿势 并且我正在使用单应性来过滤特征匹配 我有一个相当平面的场景 只要两个图像之间的平移仅限于 X 和 Y 轴 opencv 约定 基于单应性的相对姿态估计就可以非常准确地工作 一旦我开始使用另一个相机沿 Z
  • 现代 CNN(卷积神经网络)作为 DetectNet 旋转不变吗?

    众所周知 用于目标检测的 nVidia DetectNet CNN 卷积神经网络 基于 Yolo DenseBox 的方法 https devblogs nvidia com parallelforall deep learning obj
  • 查找彼此接近的对象边界

    我正在研究一个计算机视觉问题 其中问题的第一步是找到物体彼此靠近的位置 例如 在下图中 我感兴趣的是找到灰色标记的区域 Input Output 我目前的方法是首先反转图像 然后通过侵蚀进行形态梯度跟随 然后删除一些不感兴趣的轮廓 脚本如下
  • 如何在opencv python中为图像添加边框

    如果我有如下图所示的图像 如何在图像周围添加边框 以便最终图像的整体高度和宽度增加 但原始图像的高度和宽度保持在中间 下面的代码添加了一个大小恒定的边框10像素到原始图像的所有四个边 对于颜色 我假设您想要使用背景的平均灰度值 这是我根据图

随机推荐

  • TreeView 不显示存储在数据中的子项

    在我的程序中我有一个TreeView具有数据支持 视图模型和数据模型 添加到的每个项目TreeView添加一个子项 但由于某种原因 子项在运行时没有反映 但是 我可以在调试期间看到孩子们以及我的 孩子 属性TreeView s数据模型包括N
  • 我怎样才能得到联系人姓名和他/她的电话号码

    我正在尝试使用 Android 脚本和 Python 开发一个简单的应用程序 现在 我有一个电话号码 我想找出哪个联系人有该号码 我可以执行 contactGet 并搜索号码 但很多程序都使用该功能 我认为有一种更简单的方法 有一个同样的问
  • 如何在 Windows 8 METRO 应用程序中实现错误日志记录?

    您好 我正在开发一个 Windows 8 c xaml Metro 应用程序 我想在我的应用程序中实现错误日志记录 我想以更好的方式处理错误日志 1 如何记录错误信息 以便于开发者纠正错误 2 是否有任何第三方工具 免费库用于在 Metro
  • 当我手动更改 firebase 数据库中的值时,我在列表视图中创建更多项目,而不是更新列表视图中的值

    我不知道我的代码出了什么问题请帮助我 只是尝试检索数据以列表视图 我的 MainActivity java public class MainActivity extends AppCompatActivity ListView listV
  • jQuery 动画和属性值(以百分比表示)

    我试图为 div 制作动画 并尝试使用在其他地方检索到的一些值 我知道该值是正确的 因为我已经打印出了输出 所以我想知道为什么它不能正常工作 animateBar percentage toFixed 2 function animateB
  • Xamarin.Forms WidthRequest 值含义

    在 Xamarin Forms 中 以下属性获得双精度值 WidthRequest HeightRequest Padding Spacing 等 这个数字有什么意义呢 是像素还是其他 我在这些属性中输入的值是否会响应设备屏幕尺寸 考虑到多
  • 无法加载资源:net::ERR_BLOCKED_BY_RESPONSE [重复]

    这个问题在这里已经有答案了 我正在寻找 iframe 这个问题的一些解决方案 domain com 1 Refused to display domain com q node add editor in a frame because i
  • XML 属性可以有空格吗?

    我正在创建一个DTD http www xmlfiles com dtd 对于 xml 文档 我有一个枚举属性 http www xmlfiles com dtd dtd attributes asp对于 xml 元素 我的问题是 属性可以
  • Java:带状态的 ASCII 随机行文件访问

    是否有比创建满足以下条件的流文件读取器类更好的 预先存在的可选 Java 1 6 解决方案 给定一个任意大大小的 ASCII 文件 其中每行都以 n 对于某个方法的每次调用readLine 从文件中读取随机行 并且在文件句柄的生命周期内不会
  • JQuery 最佳实践,在 IIFE 中使用 $(document).ready?

    我正在看一段代码 function other code here document ready function other code here jQuery 我虽然 IIFE 执行 document ready 的功能 但这段代码正确吗
  • SQL Server - 条件语句的查询执行计划

    条件语句 例如如果别的 影响 SQL Server 2005 及更高版本 中的查询执行计划 条件语句是否会导致执行计划不佳 在考虑性能时是否需要警惕任何形式的条件 编辑添加 我特别指的是缓存的查询执行计划 例如 在下面的实例中缓存查询执行计
  • stringByAddingPercentEscapesUsingEncoding 转义的字符是什么?

    我不得不从 stringByAddingPercentEscapesUsingEncoding 切换到 CFURLCreateStringByAddingPercentEscapes 因为它不会转义问号 我很好奇它到底转义了什么 以及部分转
  • tee 和 script 本质上是等价的吗?

    在我想要捕捉的上下文中stdout文件中进程的一个 但仍希望在终端中显示此输出 我可以选择script and tee 在这种情况下 这些工具本质上是等效的 还是有一个 可能是微妙的 理由来选择其中一个而不是另一个 节目script and
  • 如何使用 MsBuild 创建可移植数据库?

    我想在我的解决方案中存储一个包含数据库创建脚本的项目 构建此项目时 它必须生成一个数据库文件 然后该数据库文件将在运行时供该解决方案的该项目和其他项目使用 怎么做 我知道我可以添加预构建任务 但我想知道 哪个命令行可以帮助我 也许 sqli
  • 使用 COM Interop 的 VB6 应用程序在 IDE 中工作正常,但编译后的 EXE 崩溃

    我目前正在开发一个 VB6 中的应用程序 该应用程序使用使用 NET 2 0 框架用 C 编写的 COM 互操作库 我使用 regasm exe 使用 codebase 开关从 NET dll 注册 tlb 文件 然后 我能够在 VB6 I
  • 如何在 Python 中为类型起别名?

    在某些 主要是函数式 语言中 您可以执行以下操作 type row list datum or type row datum 这样我们就可以构建这样的东西 type row datum type table row type databas
  • 为什么 Servlet 不是线程安全的? [复制]

    这个问题在这里已经有答案了 我需要知道为什么 servlet 不是线程安全的 Struts 2 0 框架控制器 servlet 是线程安全的原因是什么 我需要知道为什么 servlet 不是线程安全的 由于 Java 编程语言的多线程特性
  • 使用 adb 从损坏的 Android 设备中回收传感器

    我刚刚把我的s3弄坏了 三年前 它是最好的智能手机之一 Question如何通过 USB 获取手机惯性传感器的值 我想使用设备的加速度计 陀螺仪 磁力计 气压计和 GPS 传感器 假设我们想要得到 沿三个轴的原始加速度数据 我连接了 USB
  • Glassfish 5.0 java.lang.NoSuchMethodError

    当我尝试连接谷歌自定义搜索 api glassfish 时抛出 nosuchmethoderror 这就是代码 private int conn String search throws Exception String key mykey
  • HOG:对比度归一化步骤做了什么?

    根据HOG流程 如论文中所述用于人体检测的定向梯度直方图 参见下面的链接 对比归一化步骤是在分箱和加权投票之后完成的 我不明白 如果我已经计算了细胞的加权梯度 那么图像对比度的归一化现在对我有什么帮助 据我了解 对比度归一化是在原始图像上完