特征表示深度解析:颜色、纹理、形状与编码

news2025/3/11 0:14:53

第一部分:颜色与纹理特征(Part 1) 

1. 颜色特征

  1. 颜色直方图(Color Histogram)

    • 定义:统计图像中各颜色通道(R/G/B)的像素分布,形成直方图。

    • 计算步骤

      1. 将每个颜色通道的像素值分为 256 个区间(0-255)。

      2. 统计每个区间内的像素数量,生成三个通道的直方图。

      3. 将三个直方图拼接成一个 768 维的向量(256×3)。

    • 示例

      • 若红色通道的像素集中在高值区域(如 200-255),说明图像偏红色调。

      • 绿色通道的直方图平坦,说明颜色分布均匀。

    • 应用场景:图像检索(按颜色搜索相似图片)。

  2. 颜色矩(Color Moments)

 

 

2. 纹理特征

  1. Haralick 纹理特征

    • 原理:基于灰度共生矩阵(Gray-Level Co-occurrence Matrix, GLCM),统计相邻像素的灰度值对出现的频率。

    • GLCM 构建步骤

      1. 选择距离 d 和方向 a(如水平、垂直、对角线)。

      2. 统计所有满足条件的像素对 (i,j),其中 i 和 j 分别为当前像素和邻域像素的灰度值。

      3. 生成 L×L 的矩阵(L 为灰度级数)。

  1. 局部二值模式(Local Binary Pattern, LBP)

    • 原理:将局部纹理编码为二进制模式,生成纹理描述子。

    • 计算步骤

      1. 对每个像素,比较其与周围 8 邻域像素的灰度值。

      2. 若邻域像素值 ≥ 中心像素值,标记为 1;否则标记为 0。

      3. 将 8 位二进制码转换为十进制(0-255),形成 LBP 值。

      4. 统计图像中每个 LBP 值的频率,生成 256 维直方图。

    • 改进版本

      • 旋转不变 LBP:通过循环移位二进制码,取最小值作为最终编码,减少旋转影响。

      • 多分辨率 LBP:通过不同距离和邻域大小捕捉多尺度纹理。

    • 应用:人脸识别(对光照变化鲁棒)。

  2. 尺度不变特征变换(Scale-Invariant Feature Transform, SIFT)

    • 核心思想:提取图像中的关键点,并生成对尺度、旋转、光照不变的描述子。

    • 四步流程

      1. 尺度空间极值检测

        • 构建高斯金字塔(不同尺度的高斯模糊图像)。

        • 计算高斯差分(DoG)金字塔,检测局部极值点(潜在关键点)。

      2. 关键点定位

        • 剔除低对比度点:通过泰勒展开拟合极值位置,计算精确对比度。

        • 剔除边缘响应点:利用 Hessian 矩阵的特征值比值(如主曲率比),过滤边缘点。

      3. 方向分配

        • 计算关键点邻域内像素的梯度方向和幅值。

        • 构建方向直方图(36 个区间),取主方向作为关键点方向。

      4. 描述子生成

        • 将关键点邻域划分为 4×4 的子区域。

        • 对每个子区域计算 8 方向的梯度直方图,形成 128 维向量(4×4×8)。

    • 应用:图像拼接(全景图生成)、物体识别。


第二部分:形状特征与高级编码(Part 2)

1. 形状特征

  • 凸性(Convexity)

    • 凸包(Convex Hull):包含形状的最小凸集。

    • 凸缺陷(Convex Defect):凸包与原始形状的差异区域。

    • 凸性 = 原始面积凸包面积凸包面积原始面积​,值越接近 1 越凸。

  • 长宽比(Aspect Ratio)

    • 边界框的长宽比,用于区分细长物体(如铅笔)与紧凑物体(如球)。

2. 形状上下文(Shape Context)

  • 原理:通过采样边界点,构建局部极坐标直方图描述形状。

  • 步骤

    1. 采样边界点:使用 Canny 边缘检测提取形状轮廓点。

    2. 构建形状上下文

      • 对每个采样点,以该点为中心,将周围区域分为对数极坐标区间(如 5 距离区间 × 12 角度区间)。

      • 统计其他点落在各区间内的数量,形成 60 维直方图。

    3. 形状匹配

      • 计算两个形状的匹配成本矩阵 C(pi,qj)C(pi​,qj​)。

      • 使用匈牙利算法寻找最优一对一匹配,最小化总成本。

  • 应用:手写数字识别、形状检索。

3.方向梯度直方图(Histogram of Oriented Gradients, HOG)

 

           2.单元格划分

                     将图像划分为 8×8 像素的单元格(Cell)。

                     对每个单元格,统计 9 个方向(0°-180°,每 20°一区间)的梯度幅值直方图。

           3.块归一化

                    将相邻的 2×2 单元格组合为块(Block)。

                    对块内所有单元格直方图进行 L2 归一化,增强光照鲁棒性。

           4.特征向量生成: 

                    将块特征拼接为最终向量。例如,64×128 图像生成 7×15×36 = 3,780 维特征。

  • 应用:行人检测(HOG + SVM)、车辆识别。

2. 特征编码与词袋模型(Bag-of-Words, BoW)

  1. 词袋模型(BoW)

    • 核心思想:将局部特征(如 SIFT)聚类为“视觉单词”,生成全局直方图。

    • 步骤

      1. 构建视觉词典

        • 提取所有训练图像的 SIFT 特征(假设每图提取 1,000 个 128 维描述子)。

        • 使用 k-means 聚类将所有描述子分为 kk 类(如 k=1,000),每个聚类中心即为一个视觉单词。

      2. 特征编码

        • 对每张图像,将其 SIFT 描述子分配到最近的视觉单词。

        • 统计每个视觉单词的出现频率,生成 kk 维直方图。

    • 优点:将变长局部特征转换为定长全局特征,适合分类任务。

    • 应用:图像分类(如 Caltech-101 数据集)。

  2. k-means 聚类

    • 算法流程

      1. 初始化:随机选择 k 个初始聚类中心。

      2. 分配数据点:将每个数据点分配到最近的聚类中心。

      3. 更新中心:计算每个簇的均值作为新中心。

      4. 迭代:重复步骤 2-3,直至中心不再变化或达到最大迭代次数。

    • 关键问题

      • 初始中心敏感:可能陷入局部最优,需多次随机初始化。

      • 计算复杂度:O(n⋅k⋅d⋅t),其中 n 为数据量,d 为维度,t 为迭代次数。

 


第三部分:例题讲解

题目:
以下关于特征描述子的说法中,哪一个是错误的?

A. Haralick 特征是从灰度共生矩阵(GLCM)中提取的。
B. SIFT 通过计算多个尺度上的梯度直方图来实现旋转不变性。
C. LBP 描述局部图像纹理,并且可以具有多分辨率和旋转不变性。
D. 颜色矩比颜色直方图的表示能力更强。

解析:
该题考察的是不同特征描述子的基本概念,我们逐项分析:

  • A 选项:正确。Haralick 特征的计算基于 灰度共生矩阵(GLCM),用于描述纹理特征。
  • B 选项:正确。SIFT 通过 计算不同尺度上的梯度直方图,确保旋转、尺度不变性。
  • C 选项:正确。局部二值模式(LBP)可以扩展为 旋转不变(Rotation Invariant, RI-LBP)多分辨率 LBP(Multi-resolution LBP),所以该选项无误。
  • D 选项:错误。颜色矩的特征向量仅由 9 个元素(RGB 的均值、标准差、偏斜度) 组成,而颜色直方图保留了 更详细的颜色信息,因此颜色直方图的表示能力更强。

答案:D

题目:
给定右侧的图像,其中的对象已被分割,并且需要进行分类。红色和绿色表示两种不同的类别。
我们可以通过计算一个定量的形状度量,并对其进行阈值处理来进行分类。假设计算 圆度(Circularity)偏心率(Eccentricity),哪一个特征可以用于分类?

A. 仅圆度
B. 仅偏心率
C. 既可以使用圆度,也可以使用偏心率
D. 既不能使用圆度,也不能使用偏心率

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

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

相关文章

LeetCode Hot100刷题——反转链表(迭代+递归)

206.反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示例 3&#…

MCU-缓存Cache与CPU中的主存SRAM

缓存(Cache)和主存(SRAM)均属于 ​SRAM,他们的核心区别: 通过 Cache 缓存 Flash 中的指令和数据,可避免 CPU 因等待数据而停滞。主存 SRAM 存储程序运行时的变量、堆栈、临时数据等。通常作为 …

在Windows 11的WSL中安装Kali Linux

Kali Linux 是网络安全从业者和爱好者的首选工具集,但直接在物理机或虚拟机上运行可能占用较多资源。借助 Windows Subsystem for Linux (WSL),我们可以在Windows 11中原生运行Kali Linux,轻量且高效。本教程将手把手教你如何在WSL2中安装并配…

Manus AI Agent 技术解读:架构、机制与竞品对比

目录 1. Manus 是什么? 1.1 研发背景 1.2 技术特点 1.3 工具调用能力 1.4 主要应用场景 2. Manus 一夜爆火的原因何在? 2.1 技术突破带来的震撼 2.2 完整交付的产品体验 2.3 生态与开源策略 3. Manus 与其他 AI Agent 的对比分析 3.1 技术架构…

010---基于Verilog HDL的分频器设计

文章目录 摘要一、时序图二、程序设计2.1 rtl2.2 tb 三、仿真分析四、实用性 摘要 文章为学习记录。绘制时序图,编码。通过修改分频值参数,实现任意整数分频器设计。 一、时序图 二、程序设计 2.1 rtl module divider #(parameter DIV_VALUE 5) (…

Python贝壳网二手小区数据爬取(2025年3月更)

文章目录 一、代码整体架构解析二、各部分代码详解1. main()主函数解析2. 会话初始化(伪装浏览器身份)3. 动态参数生成(反爬虫核心机制)4. 列表页抓取(获取小区列表)5. 列表页解析(提取小区信息…

基于SpringBoot的餐厅点餐管理系统设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

Dify使用日常:我是如何按标题级别将word中的内容转存到excel中的

先上效果图 word中的内容 转存到excel之后 实现步骤: 1、在dify中创建一个工作流,如上图 2、在开始节点增加一个支持文件上传的变量 3、添加文档提取器,提取上传的文件中的内容 4、添加大模型节点,将文档提取器提取出来的内容&…

元脑服务器:浪潮信息引领AI基础设施的创新与发展

根据国际著名研究机构GlobalData于2月19日发布的最新报告,浪潮信息在全球数据中心领域的竞争力评估中表现出色,凭借其在算力算法、开放加速计算和液冷技术等方面的创新,获得了“Leader”评级。在创新、增长力与稳健性两个主要维度上&#xff…

Linux一键美化命令行,一键安装zsh终端插件

zsh应该是很多人第一个用的Linux终端美化软件 但是其安装略微复杂,让人有些困扰 所以我花了两天写了一键安装脚本,实测运行后直接安装好 适用于Ubuntu、Debian、Red Hat、macOS等系统 直接安装好zsh 以及常用插件 autojump 跳转插件 zsh-syntax-highlig…

实验一:在Windows 10/11下配置和管理TCP/IP

目录 1.【实训目标】 2.【实训环境】 3.【实训内容】 4.【实训步骤】 1.【实训目标】 1.了解网络基本配置中包含的协议、服务、客户端。 2.了解Windows支持的网络协议及参数设置方法。 3.掌握TCP/IP协议的配置。 2.【实训环境】 硬件环境:每人一台计算机&a…

【愚公系列】《Python网络爬虫从入门到精通》045-Charles的SSL证书的安装

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主&…

同为科技智能PDU在数据中心场景的应用与解决方案

数据中心当前处于一个快速发展和技术变革的特殊时期,全新的人工智能应用正在重塑整个世界,为社会带来便捷的同时,也为数据中心的发展带来了新的机遇和挑战。智能算例的爆发式增长,对数据中心提出了大算力、高性能的新需求&#xf…

《V8 引擎狂飙,Node.js 续写 JavaScript 传奇》

”你没想过也许是这个镇子对你来说太小了吗? 对我而言,这个小镇容不下我的雄心壮志。 “ 什么是 Node.js? Node.js是一个跨平台JS运行环境,使开发者可以搭建服务器端的JS应用程序 作用:使用 Node.js 编写服务器端程序…

【Java代码审计 | 第八篇】文件操作漏洞成因及防范

未经许可,不得转载。 文章目录 文件操作漏洞文件读取漏洞基于 InputStream 的读取基于 FileReader 的读取 文件下载漏洞文件删除漏洞防范 文件操作漏洞 分为文件读取漏洞、文件下载漏洞与文件删除漏洞。 文件读取漏洞 在Java中,文件读取通常有两种常见…

在Linux开发板中使用.NET实现音频开发

本文将以Linux开发板为基础,使用ALSA音频框架和C#语言,演示如何实现基础的音频录制与播放功能。 1. 背景 音频处理是嵌入式开发中常见的需求,无论是语音交互、环境监测还是多媒体应用都离不开音频模块的支持。在Linux系统中,ALSA…

基于RNN+微信小程序+Flask的古诗词生成应用

项目介绍 平台采用B/S结构,后端采用主流的Flask框架进行开发,古诗词生成采用RNN模型进行生成,客户端基于微信小程序开发。是集成了Web后台开发、微信小程序开发、人工智能(RNN)等多个领域的综合性应用,是课…

基于单片机的智慧农业大棚系统(论文+源码)

1系统整体设计 经过上述的方案分析,采用STM32单片机为核心,结合串口通信模块,温湿度传感器,光照传感器,土壤湿度传感器,LED灯等硬件设备来构成整个控制系统。系统可以实现环境的温湿度检测,土壤…

2025-03-08 学习记录--C/C++-PTA 习题8-9 分类统计各类字符个数

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 二、代码&#xff08;C语言&#xff09;⭐️ #include <stdio.h> #define MAXS 15void StringCount( …

OTP单片机调试工具

大部分的OTP单片机开发流程是先用仿真器进行仿真&#xff0c;f仿真完成之后再烧录OTP单片机芯片进行验证&#xff0c;但是很多少时候会发现有一个问题&#xff0c;仿真器仿真都是OK的&#xff0c;但是一旦焊接在板上了&#xff0c;就往往发现有问题&#xff0c;因为硬件条件变化…