Python实现HOG特征提取:从图像到梯度直方图
版权申诉
195 浏览量
更新于2024-08-25
收藏 589KB PDF 举报
"这篇文档是关于使用Python实现方向梯度直方图(Histogram of Oriented Gradients, HOG)的实战教程,主要来源于CSDN平台。文档详细介绍了如何通过OpenCV库处理图像,计算梯度,以及进行HOG特征提取的步骤。"
在计算机视觉领域,方向梯度直方图(HOG)是一种用于对象检测的强大特征描述符。HOG通过捕捉图像局部区域内的边缘和形状信息来识别和定位目标物体。下面是基于Python和OpenCV实现HOG的详细过程:
1. **读取图片**
使用`cv2.imread()`函数读取图像,可以设置参数0以读取灰度图像。`img2`是对原始图像进行归一化的版本,将像素值缩放到0到1之间,而`img1`保持原图像的8位整数格式。`image`则由`color.rgb2gray()`函数将彩色图像转换为灰度图像。
2. **计算梯度**
- **x方向梯度**:使用`cv2.Sobel()`函数计算x方向的梯度。该函数接受输入图像、数据类型(在这里为`cv2.CV_32F`,即32位浮点数)、x方向的差分阶数(1表示向前一像素求导)和y方向的差分阶数(0表示仅计算x方向的梯度),以及可选的卷积核大小(在这里为1x1)。
- **y方向梯度**:同样使用`cv2.Sobel()`函数计算y方向的梯度,但这次改变y方向的差分阶数为1。
3. **计算合梯度的幅值和方向**
使用`cv2.cartToPolar()`函数将x和y梯度转换为极坐标形式,得到梯度的幅值(magnitude)和方向(angle)。`angleInDegrees=True`参数表示返回的角度以度为单位。
4. **可视化**
文档中的这部分代码用于展示各个步骤的结果,包括原始图像、x方向梯度图、y方向梯度图等,以便于理解图像处理的过程。`plt.figure(figsize=(30,30))`创建了一个宽30,高30的图像,`add_subplot()`函数添加了子图,并用`axis('off')`关闭了坐标轴显示。
5. **HOG特征提取**
虽然这部分代码没有展示完整的HOG特征提取,但在实际应用中,接下来的步骤通常会涉及:
- **细胞单元格(Cell)划分**:将图像划分为小的单元格。
- **块(Block)与重叠**:多个相邻的单元格组成一个块,块之间可能有重叠。
- **梯度直方图**:在每个单元格内,根据梯度方向创建直方图。
- **归一化**:对块内的直方图进行局部归一化,以减少光照变化的影响。
- **形成特征向量**:组合所有块的直方图形成最终的HOG特征向量。
HOG特征在行人检测、车辆检测等应用场景中表现出色,但其计算复杂度较高,对于大规模图像处理可能会较慢。随着深度学习的发展,虽然HOG已不再是主流的特征提取方法,但它依然是理解和学习计算机视觉原理的重要工具。
2020-12-21 上传
2022-01-14 上传
2020-03-02 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
一诺网络技术
- 粉丝: 0
- 资源: 2万+
最新资源
- [影音娱乐]无组件音乐防盗链程序(PHP)_ft_php.rar
- 9Gag Simple Extension-crx插件
- profile-generator
- Dédalo:查找连接到ares p2p网络的所有房间。-开源
- 安卓壁纸v5.15.6 清爽版.txt打包整理.zip
- ruishaweigonglvwuxian,易语言c编译器模块源码,c语言
- terraform-aws网站
- MTZODROW-Style-Guide:Meghan Zodrow的更新样式指南
- asyncnio:Java 的 JDK7+ 异步套接字通道的洁净室实现(建立在 JDK1.4+ NIO SocketChannel apis 之上)
- E-commerce-website-with-realtime-tracking:这是一个具有实时跟踪的电子商务网站的项目构建。 使用此网站,您可以在购物车中添加他/她的物品,然后下订单。 该项目使用soket.io提供订单的实时跟踪
- 仿拍鞋网商城首页触屏版html5手机wap购物网站模板_网站开发模板含源代码(css+html+js+图样).zip
- Klumpinatoren-crx插件
- apitest,c语言链表源码代码,c语言
- Rating-System:一个可以对下属进行评分的简单系统
- MartinsAccount:我的个人资料库
- JS-Discord-Bot:我想学习JS