MATLAB图像处理:图像特征概念及提取方法HOG、SIFT

图像特征是计算机视觉中用于描述图像内容的关键信息,其提取质量直接影响后续的目标检测、分类和匹配等任务性能。本文将系统解析 全局与局部特征的核心概念,深入讲解 HOG(方向梯度直方图)与SIFT(尺度不变特征变换)的算法原理,并提供MATLAB代码实现及典型应用场景分析。

1. 图像特征基础

1.1 定义与分类
  • 图像特征:能够表征图像中目标形状、纹理或结构的关键信息,可为像素值、几何结构或变换域系数的抽象表达。
  • 分类
    • 全局特征:描述图像整体属性(如颜色直方图、纹理统计量)。
    • 局部特征:捕捉图像中显著点或区域的结构(如角点、边缘、关键点)。
1.2 特征提取核心目标
  • 区分性:不同类别的特征差异显著
  • 鲁棒性:对光照变化、旋转、缩放等干扰不敏感
  • 高效性:计算速度快,适合实时处理

2. 方向梯度直方图(HOG)

2.1 算法原理

HOG通过局部区域的梯度方向分布描述物体形状,适用于行人检测、手势识别等整体轮廓分析任务。

处理流程
  1. 预处理:转为灰度图像,应用Gamma校正减少光照影响
  2. 计算梯度:使用Sobel算子求取水平和垂直方向的梯度幅值G和方向 

  1. 分块统计:将图像划分为细胞单元(Cell),统计每个单元的梯度方向直方图(通常9个区间)
  2. 块归一化:将相邻的2×2细胞单元合并为块(Block),对直方图进行L2归一化提升光照鲁棒性
  3. 特征拼接:所有块的直方图串联成最终的高维特征向量

%% 读取图像并预处理
I = imread('刘亦菲.jpg');        % 替换为你的图像路径
I = imresize(I, [128, 128]);     % 调整图像大小
I_gray = rgb2gray(I);           % 转换为灰度图%% 提取HOG特征
[hogFeatures, hogVisualization] = extractHOGFeatures(I_gray, ...'CellSize', [8 8], ...      % 每单元格大小'BlockSize', [2 2], ...     % 每块含2x2单元格'BlockOverlap', [1 1], ...  % 块间重叠单元格数'NumBins', 9);              % 梯度方向分9个区间%% 可视化结果
figure;
subplot(1,2,1);
imshow(I_gray);
title('原图');subplot(1,2,2);
imshow(I_gray); 
hold on;
plot(hogVisualization, 'Color','red'); % 叠加HOG特征
title('HOG特征可视化');
hold off;%% 输出特征维度
disp(['HOG特征维度: ', num2str(length(hogFeatures))]);

 

关键步骤说明

  1. 图像预处理

    • 调整尺寸 (imresize):统一输入尺寸,特征维度固定。
    • 转灰度图 (rgb2gray):HOG通常处理单通道梯度。
  2. 参数设置

    • CellSize: 8x8 像素的单元格统计直方图。
    • BlockSize: 2x2 单元格的块归一化直方图,提升光照鲁棒性。
    • NumBins: 将梯度方向量化为 9 个区间。
  3. 可视化

    • 红色线条表示梯度方向分布,反映物体轮廓。

3. 尺度不变特征变换(SIFT)

3.1 算法原理

SIFT通过检测并描述尺度空间的极值点,实现对旋转、缩放、亮度变化的不变性,适用于图像匹配、三维重建等任务。

处理流程
  1. 构建尺度空间:通过高斯金字塔生成不同尺度的图像
  2. 检测关键点:在高斯差分(DoG)金字塔中寻找局部极值点
  3. 精确定位:去除低对比度和边缘响应点(通过Hessian矩阵筛选)
  4. 方向分配:计算关键点主方向(利用邻域梯度方向直方图)
  5. 生成描述子:将关键点邻域划分为4×4子区域,统计每个区域的梯度方向直方图(总计128维向量)
3.2 MATLAB实现示例
% 读取图像并提取SIFT特征
img1 = rgb2gray(imread('img1.jpg'));
img2 = rgb2gray(imread('img2.jpg'));% 检测SIFT特征点
points1 = detectSIFTFeatures(img1);
points2 = detectSIFTFeatures(img2);% 提取特征描述子
[features1, valid_points1] = extractFeatures(img1, points1);
[features2, valid_points2] = extractFeatures(img2, points2);% 特征匹配
index_pairs = matchFeatures(features1, features2, 'MaxRatio', 0.6);
matched_points1 = valid_points1(index_pairs(:,1));
matched_points2 = valid_points2(index_pairs(:,2));% 可视化匹配结果
figure; imshowpair(img1,img2,'montage') 
title('原图(图1左侧,图2右侧)');
figure; 
showMatchedFeatures(img1, img2, matched_points1, matched_points2, 'montage');
title('SIFT特征匹配结果');

4. HOG与SIFT对比及应用场景

4.1 性能对比
指标HOGSIFT
特征维度较高(数千维度)高(每关键点128维)
鲁棒性对遮挡敏感对旋转、缩放、光照鲁棒
速度较慢(需构建多尺度空间)
适用任务目标检测(整体形状分析)图像匹配、三维重建(局部特征)
4.2 典型应用案例
  • HOG
    • 行人检测(配合SVM分类器)
    • 车牌识别中的字符定位
  • SIFT
    • 全景图像拼接(特征点匹配)
    • 基于内容的图像检索

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

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

相关文章

java枚举类型的查找

AllArgsConstructor Getter public enum FileFilterRangeEnum {FILE_NAME("文件名称","fileName"),FILE_CONTENT("文件内容","fileContent");private final String text;private final String value;// 根据传入的字符串值查找对应的枚…

小白win10安装并配置yt-dlp

需要yt-dlp和ffmpeg 注意存放路径最好都是全英文 win10安装并配置yt-dlp 一、下载1.下载yt-dlp2. fffmpeg下载 二、配置环境三、cmd操作四、yt-dlp下视频操作 一、下载 1.下载yt-dlp yt-dlp地址 找到win的压缩包点下载,并解压 2. fffmpeg下载 ffmpeg官方下载 …

【技术解析】MultiPatchFormer:多尺度时间序列预测的全新突破

今天给我大家带来一篇最新的时间序列预测论文——MultiPatchFormer。这篇论文提出了一种基于Transformer的创新模型,旨在解决时间序列预测中的关键挑战,特别是在处理多尺度时间依赖性和复杂通道间相关性时的难题。MultiPatchFormer通过引入一维卷积技术&…

145,【5】 buuctf web [GWCTF 2019]mypassword

进入靶场 修改了url后才到了注册页面 注测后再登录 查看源码 都点进去看看 有个反馈页面 再查看源码 又有收获 // 检查$feedback是否为数组 if (is_array($feedback)) {// 如果是数组&#xff0c;弹出提示框提示反馈不合法echo "<script>alert(反馈不合法);<…

CTF-WEB: 利用iframe标签利用xss,waf过滤后再转换漏洞-- N1ctf Junior display

核心逻辑 // 获取 URL 查询参数的值 function getQueryParam(param) { // 使用 URLSearchParams 从 URL 查询字符串中提取参数 const urlParams new URLSearchParams(window.location.search); // 返回查询参数的值 return urlParams.get(param); } // 使用 DOMPuri…

晶闸管主要参数分析与损耗计算

1. 主要参数 断态正向可重复峰值电压 :是晶闸管在不损坏的情况下能够承受的正向最大阻断电压。断态正向不可重复峰值电压 :是晶闸管只有一次可以超过的正向最大阻断电压,一旦晶闸管超过此值就会损坏,一般情况下 反向可重复峰值电压 :是指晶闸管在不损坏的情况下能够承受的…

el-select 设置宽度 没效果

想实现下面的效果&#xff0c;一行两个&#xff0c;充满el-col12 然后设置了 width100%,当时一直没有效果 解决原因&#xff1a; el-form 添加了 inline 所以删除inline属性 即可

Python创建FastApi项目模板

1. 项目结构规范 myproject/ ├── app/ │ ├── core/ # 核心配置 │ │ ├── config.py # 环境配置 │ │ └── security.py # 安全配置 │ ├── routers/ # 路由模块 │ │ └── users.py # 用户路由 │ ├…

面试完整回答:SQL 分页查询中 limit 500000,10和 limit 10 速度一样快吗?

首先&#xff1a;在 SQL 分页查询中&#xff0c;LIMIT 500000, 10 和 LIMIT 10 的速度不会一样快&#xff0c;以下是原因和优化建议&#xff1a; 性能差异的原因 LIMIT 10&#xff1a; 只需要扫描前 10 条记录&#xff0c;然后返回结果。 性能非常高&#xff0c;因为数据库只…

一款利器提升 StarRocks 表结构设计效率

CloudDM 个人版是一款数据库数据管理客户端工具&#xff0c;支持 StarRocks 可视化建表&#xff0c;创建表时可选择分桶、配置数据模型。目前版本持续更新&#xff0c;在修改 StarRocks 表结构方面进一步优化&#xff0c;大幅提升 StarRocks 表结构设计效率。当前 CloudDM 个人…

数量5 - 平面图形、立体几何

目录 一、平面几何问题1.三角形2.其他图形二、立体几何与特殊几何1.表面积2.体积3.等比放缩(简单)4.几何最值(简单)5.最短路径一、平面几何问题 平面图形: 立体图形: 1.三角形 特殊直角

CAS单点登录(第7版)7.授权

如有疑问&#xff0c;请看视频&#xff1a;CAS单点登录&#xff08;第7版&#xff09; 授权 概述 授权和访问管理 可以使用以下策略实施授权策略以保护 CAS 中的应用程序和依赖方。 服务访问策略 服务访问策略允许您定义授权和访问策略&#xff0c;以控制对向 CAS 注册的…

53倍性能提升!TiDB 全局索引如何优化分区表查询?

作者&#xff1a; Defined2014 原文来源&#xff1a; https://tidb.net/blog/7077577f 什么是 TiDB 全局索引 在 TiDB 中&#xff0c;全局索引是一种定义在分区表上的索引类型&#xff0c;它允许索引分区与表分区之间建立一对多的映射关系&#xff0c;即一个索引分区可以对…

排序(Sortable)

排序&#xff08;Sortable&#xff09; 引言 在计算机科学和数据管理领域&#xff0c;排序算法是一项基本且重要的技能。排序算法能够将一组无序的数据转换为有序的数据&#xff0c;从而便于后续的数据处理和分析。本文将深入探讨排序算法的基本概念、常用排序方法、以及它们…

紫光展锐蜂窝物联网芯片V8850荣获国密一级安全认证

近日&#xff0c;紫光展锐蜂窝物联网芯片V8850荣获国密一级认证&#xff0c;标志着展锐V8850在安全能力方面获得权威认可&#xff0c;位居行业领先水平。这是紫光展锐继短距物联网芯片V5663在2020获得ARM PSA Level 2认证&#xff0c;蜂窝物联网芯片V8811在2021年获得ARM PSA L…

I.MX6ull-I2C

一,I2C总线介绍 I2C(Inter-Integrated Circuit 集成电路)总线是Philips公司在八十年代初推出的一种串行、半双工的总 线&#xff0c;主要用于近距离、低速的芯片之间的通信&#xff1b;I2C总线有两根双向的信号线&#xff0c;一根数据线SDA用于收 发数据&#xff0c;一根时钟线…

书籍推荐:《书法课》林曦

记得樊登老师说过&#xff0c;如果你想了解一个事物&#xff0c;就去读5本相关的书&#xff0c;你会比大部分人都更了解它。这是我读的第4本和“书法”有关的书&#xff0c;作为一个零基础的成年人&#xff0c;林曦这本《书法课》非常值得一读。&#xff08;无论你是否写字&…

【大疆无人机地图测绘技术学习:高精度、高效率的全流程解决方案】

文章目录 大疆无人机地图测绘算法详解一、数据采集&#xff08;一&#xff09;飞行平台与传感器&#xff08;二&#xff09;航线规划&#xff08;三&#xff09;数据类型 二、数据处理与建模&#xff08;一&#xff09;数据导入与预处理&#xff08;二&#xff09;空三计算&…

【删除tomcat默认管理控制台】

停止Tomcat&#xff1a; ./catalina.sh stop 删除管理控制台应用&#xff1a; 进入Tomcat的webapps目录&#xff1a; cd /path/to/tomcat/webapps List item 删除manager和host-manager文件夹&#xff1a; rm -rf manager host-manager 启动Tomcat&#xff1a; ./catali…

工具资料+H3C 交换机常见故障分析排查+高危操作

当我们从客户那里接到一个故障时,我们根据现象让客户收集一堆信息,然后集成商、代理商、设备厂家一级一级的反复咨询与确认,天天经历这样的场景。几乎每个故障我们都要经过多个层级的人处理,信息的交流占据了每个人大部分的时间,反复的收集信息与确认问题现象也会让客户不厌其烦…