目录
颜色聚合向量(Color Coherence Vector, CCV)
灰度共生矩阵(Gray-Level Co-occurrence Matrix, GLCM)
局部二值模式(Local Binary Pattern, LBP)
ORB( Oriented FAST and Rotated BRIEF)
1、Harris角点检测大致步骤,特征值远大于远小于会怎么样?
一、特征提取与表示的核心意义
在数字图像处理中,特征提取是将图像转换为可描述、可计算的抽象信息的过程,而特征表示则是将这些信息以数学形式(如向量、矩阵)存储,用于后续的图像分类、检索、识别等任务。特征的质量直接影响算法性能,其本质是从像素级原始数据中提取 “语义信息”。
二、全局特征:描述图像整体特性
全局特征关注图像的整体统计特性,计算复杂度低,适用于简单场景的图像检索与分类,但缺乏局部细节信息。
1. 颜色特征:最直观的视觉信息
颜色是图像最基础的特征,不受旋转、尺度变化影响,但受光照影响较大。
-
颜色直方图(Color Histogram)
- 原理:统计图像中各颜色通道(如 RGB、HSV)的像素分布频率,形成多维直方图向量。
- 示例:在 HSV 空间中,H(色调)直方图可有效区分红、绿、蓝等颜色主导的图像。
- 应用:基于颜色的图像检索(如 Google 图片搜索的颜色过滤功能)。
-
颜色矩(Color Moments)
- 原理:利用颜色分布的一阶矩(均值)、二阶矩(方差)、三阶矩(偏度)描述颜色分布特性。
- 优势:仅用 3~9 维向量即可概括颜色特征,计算极高效。
-
颜色聚合向量(Color Coherence Vector, CCV)
- 原理:区分 “连贯颜色区域” 和 “非连贯区域”,统计各颜色的像素占比及连贯度。
- 应用:处理包含多个颜色块的复杂图像(如自然场景)。
2. 纹理特征:像素灰度的空间分布模式
纹理反映图像中重复的局部模式和结构,用于区分草地、砖墙、织物等材质。
-
灰度共生矩阵(Gray-Level Co-occurrence Matrix, GLCM)
- 原理:统计图像中特定距离和角度下,灰度值对(i,j)的出现频率,生成矩阵后计算能量、对比度、熵等特征。
- 数学表达:
- 原理:统计图像中特定距离和角度下,灰度值对(i,j)的出现频率,生成矩阵后计算能量、对比度、熵等特征。
-
局部二值模式(Local Binary Pattern, LBP)
- 原理:以中心像素为阈值,将邻域像素灰度值转换为二进制编码,生成 LBP 码后统计直方图。
- 变种:圆形 LBP(可适应不同半径邻域)、旋转不变 LBP(消除旋转影响)。
- 应用:人脸检测(如 OpenCV 的 Haar+LBP 级联分类器)。
-
Gabor 滤波器(Gabor Filter)
- 原理:利用不同频率和方向的 Gabor 核与图像卷积,提取多尺度纹理特征。
- 优势:符合人类视觉系统对纹理的感知机制,对方向和尺度敏感。
3. 形状特征:描述目标的轮廓与几何属性
形状特征用于区分不同物体的轮廓结构,需先通过边缘检测或分割提取目标轮廓。
-
几何特征(Geometric Features)
- 基础属性:面积、周长、质心、边界框(Bounding Box)、纵横比(如矩形度 = 面积 / 边界框面积)。
- 圆形度(Circularity):
,值越接近 1 越接近圆形。
- 主轴方向:通过图像矩计算目标的长轴方向,用于旋转不变性表示。
-
Hu 矩(Hu Moments)
- 原理:基于图像矩(Moment)计算 7 个不变矩,对旋转、缩放、平移具有不变性。
- 数学表达:
-
轮廓描述子(Contour Descriptors)
- 链码(Chain Code):用方向序列(如 8 邻域方向)表示轮廓的像素连接关系。
归一化链码
原链码具有平移不变性(平移时不改变指向符),但当改变起点S时,会得到不同的链码表示,即不具备唯一性。
为此可引入归一化链码,其方法是:对于闭合边界,任选一起点S得到原链码,将链码看作由各方向数构成的n位自然数,将该码按一个方向循环,使其构成的n位自然数最小,此时就形成起点唯一的链码,称为归一化链码,也称为规格化链码。 - 傅里叶描述子(Fourier Descriptors):对轮廓坐标进行傅里叶变换,用低频系数描述整体形状,高频表征细节。
- 链码(Chain Code):用方向序列(如 8 邻域方向)表示轮廓的像素连接关系。
三、局部特征:聚焦图像中的关键区域
局部特征对旋转、尺度、光照变化具有较强鲁棒性,适用于复杂场景的目标匹配与识别。
1. 关键点与局部描述子
局部特征通常基于图像中的 “关键点”(如角点、边缘交点),提取其邻域的特征描述。
-
SIFT(尺度不变特征变换)
- 步骤:
- 尺度空间构建:通过高斯卷积生成多尺度图像金字塔,检测极值点(DOG 算子)。
- 关键点定位:筛选稳定关键点,去除边缘和低对比度点。
- 方向分配:基于关键点邻域的梯度方向,分配主方向(保证旋转不变性)。
- 特征描述:将邻域划分为4×4子块,计算每个子块的 8 方向梯度直方图,生成 128 维向量。
- 尺度空间构建:通过高斯卷积生成多尺度图像金字塔,检测极值点(DOG 算子)。
- 优势:高度鲁棒,但计算复杂度高(专利已过期,可自由使用)。
- 步骤:
-
SURF(加速鲁棒特征)
- 优化:用 Haar 小波近似高斯卷积,用积分图像加速计算,速度比 SIFT 快 3 倍以上。
- 特征维数:64 维或 128 维,性能接近 SIFT。
-
ORB( Oriented FAST and Rotated BRIEF)
- 组合策略:
- 关键点检测:FAST 角点 + 金字塔(保证尺度不变性)。
- 描述子:BRIEF 二进制描述子 + 方向校正(利用灰度质心法计算主方向)。
- 优势:完全开源,计算极快(实时性强),但鲁棒性略低于 SIFT/SURF。
- 组合策略:
2. 区域特征:局部区域的统计特性
除关键点外,局部区域的整体特征也可作为描述子。
-
HOG(方向梯度直方图)
- 原理:
- 计算图像梯度幅值和方向,将图像划分为多个单元格(Cell)。
- 对每个 Cell 内的梯度方向统计直方图(如 9 个方向 bin)。
- 将相邻 Cell 组合为块(Block),归一化后拼接成特征向量。
- 应用:行人检测(如 Dalal-Triggs 模型)、车辆识别。
- 原理:
-
局部二值模式(LBP)的扩展应用
- 在局部区域中,LBP 可用于提取微纹理特征,如人脸表情识别中的局部纹理变化。
- 在局部区域中,LBP 可用于提取微纹理特征,如人脸表情识别中的局部纹理变化。
3.局部特征的应用:全景图的构建
检测器检测相同的特征点
用描述子找到每个特征点对应的特征点
四、CNN(卷积神经网络):端到端的特征学习
传统特征提取依赖人工设计,而 CNN 通过多层神经网络自动学习从底层到高层的特征表示,是当前图像处理的主流方法。
1. CNN 的特征提取机制
-
分层特征学习:
- 底层特征(卷积层 1-2):提取边缘、颜色块等基础信息(类似传统局部特征)。
- 中层特征(卷积层 3-4):组合底层特征,形成纹理、简单形状(如车轮、人脸轮廓)。
- 高层特征(卷积层 5 及全连接层):抽象出语义概念(如 “汽车”“人脸”)。
-
核心操作:
- 卷积:通过可学习的卷积核提取局部区域的特征(如 Gabor 滤波器的自适应版本)。
- 池化:降采样(如最大池化),保留关键特征,增强尺度不变性。
- 激活函数:如 ReLU,引入非线性,使网络能学习复杂模式。
- 卷积:通过可学习的卷积核提取局部区域的特征(如 Gabor 滤波器的自适应版本)。
2. 经典 CNN 模型的特征表示
- AlexNet(2012):8 层网络,首次证明深度 CNN 在图像分类中的优势,特征维数约 4096 维。
- VGGNet(2014):通过堆叠 3×3 小卷积核,加深网络(16-19 层),特征具有更强语义性。
- ResNet(2015):引入残差连接,解决深层网络训练退化问题,广泛用于特征提取(如 ResNet-50 提取的特征常用于目标检测)。
3. CNN 特征 vs 传统手工特征
对比维度 | 传统手工特征 | CNN 自动提取特征 |
---|---|---|
设计方式 | 人工设计(依赖经验) | 数据驱动(端到端学习) |
特征层次 | 单一层次(如颜色 / 纹理分离) | 多层抽象(从底层到语义高层) |
鲁棒性 | 对特定变换(如旋转、光照)需特殊设计 | 天然具备较强不变性(通过数据增强) |
计算效率 | 轻量级(如 LBP、HOG) | 需大量计算(依赖 GPU 加速) |
应用场景 | 简单任务(如人脸检测、简单检索) | 复杂任务(如 ImageNet 分类、自动驾驶) |
五、特征提取的实际应用与趋势
- 图像检索:全局颜色 / 纹理特征用于快速匹配(如 Google 图片搜索),局部特征用于精确匹配(如商标识别)。
- 目标检测:CNN 特征(如 Faster R-CNN 中的 RoI Pooling)结合区域建议,实现端到端目标定位与分类。
- 跨模态应用:将图像特征与文本特征映射到同一语义空间(如图文检索、视觉问答)。
- 未来趋势:
- 自监督学习:利用无标签数据学习通用特征(如 MoCo、SimCLR)。
- 轻量化网络:如 MobileNet、ShuffleNet,在移动端实现高效特征提取。
- 多模态特征融合:结合图像、视频、文本特征,提升复杂场景理解能力。
引用知乎博客中的两张图片: https://zhuanlan.zhihu.com/p/104776627
六 、习题
1、Harris角点检测大致步骤,特征值远大于远小于会怎么样?
1.1
使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑 动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑 动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。
1. 2
这张图是 Harris 角点检测算法 的核心原理可视化,用来解释如何通过 特征值(λ₁、λ₂) 判断图像局部区域是角点(Corner)、边缘(Edge)还是平坦区域(Flat)。 下面拆解每个部分:
1. 背景:Harris 算法的核心思想
Harris 角点检测的本质是:用一个 滑动窗口 遍历图像,计算窗口内像素的灰度变化。如果窗口在 多个方向移动 时都产生 显著灰度变化 → 说明是角点;如果仅在 某个方向变化大、其他方向变化小 → 说明是边缘;如果 所有方向变化都小 → 说明是平坦区域。
为了量化这种灰度变化,Harris 算法引入了一个 二阶矩矩阵 M,它的两个 特征值 λ₁、λ₂ 能反映窗口在不同方向的灰度变化强度。
2. 图像区域分类逻辑(按 λ₁、λ₂ 的关系)
图中用 λ₁(横轴)和 λ₂(纵轴)的大小关系,把平面划分成 3 类区域,对应图像的 3 种局部结构:
(1)Flat region(平坦区域)
- 条件:λ₁ 和 λ₂ 都很小
- 含义:窗口在 所有方向移动 时,灰度变化都不明显 → 图像是 “平坦” 的(比如纯色区域、模糊区域)。
(2)Edge(边缘)
- 条件:一个特征值很大,另一个很小(λ₁ >> λ₂ 或 λ₂ >> λ₁)
- 含义:窗口仅在 某个方向移动 时灰度变化大(比如沿着边缘垂直方向移动),但在 其他方向变化小(比如沿着边缘平行方向移动)→ 图像是 “边缘”(比如物体的轮廓、纹理的边界)。
(3)Corner(角点)
- 条件:λ₁ 和 λ₂ 都很大,且数值相当(λ₁ ≈ λ₂)
- 含义:窗口在 所有方向移动 时,灰度变化都很显著 → 图像是 “角点”(比如物体的拐角、交叉点)。
3. 为什么用特征值?
二阶矩矩阵 M 描述了窗口内灰度变化的 “方向性”:
- 特征值的 大小 反映变化的 “强度”(值越大,变化越明显);
- 特征值的 比例 反映变化的 “方向差异”(一个大、一个小 → 只有某个方向变化大;两个都大且接近 → 所有方向变化都大)。
通过 λ₁、λ₂ 的相对大小,就能简洁地分类图像局部结构,这是 Harris 算法的数学本质。
4. 总结
这张图用 “特征值平面” 直观展示了 Harris 角点检测的核心逻辑:
- λ₁、λ₂ 都小 → 平坦区域
- 一个大、一个小 → 边缘
- 都大且接近 → 角点
理解这张图,就掌握了 Harris 算法 “如何判断角点” 的底层原理 ,后续实际实现时,会通过计算响应函数
进一步筛选角点,但本质都是基于这两个特征值的关系。
七、BOVW【BOW补充】
一、起源与基本概念
BOVW 是从自然语言处理(NLP)领域的 “词袋模型(BoW,Bag of Words)” 迁移到计算机视觉领域的方法 。在 NLP 中,BoW 把文本看作无序单词集合,用单词出现频率表示文本;BOVW 则将图像视为 “视觉单词” 集合,用视觉单词的统计信息表征图像,把图像 “文字化”,助力大规模图像检索等任务,也常被称为 Bag-of-Feature(BOF)模型 。
二、核心思想与关键步骤
BOVW 把图像内容转化为视觉单词的频率统计,关键分以下四步:
1. 图像局部特征提取
从图像中提取能代表局部内容的特征,常用 SIFT、SURF、HOG 等:
- SIFT(尺度不变特征变换):提取的特征具平移、缩放、旋转不变性,对光照、仿射变换也有一定鲁棒性,可从图像中检测关键点并生成 128 维等特征向量,捕捉局部纹理、结构信息。
- SURF(加速稳健特征):是 SIFT 的加速版,计算更快,同样用于提取局部特征 。
- HOG(方向梯度直方图):通过统计图像局部区域的梯度方向分布,描述物体外形轮廓,常用于行人检测等场景提取特征 。
这些特征就像 NLP 里文本的 “单词”,是构建 BOVW 的基础元素。
2. 视觉词典(码本)构建
收集所有图像提取的局部特征,用 聚类算法(常用 K-Means) 把特征分组:
- K-Means 聚类流程:
- 随机选 K 个初始聚类中心(K 为预设的视觉单词数量,需根据任务调整,一般几百到上千)。
- 计算每个特征到各中心的距离,按最近邻原则把特征分配到对应聚类。
- 重新计算每个聚类的均值作为新中心,重复上述过程,直到聚类中心不再变化 。
- 视觉单词与词典:最终每个聚类的中心就成为一个 “视觉单词”,所有视觉单词组成 “视觉词典(Codebook)”,相当于图像领域的 “字典”,后续用它量化图像特征。
3. 特征向量量化
用构建好的视觉词典,把图像里每个局部特征向量,通过 最近邻搜索,匹配到视觉词典中距离最近的视觉单词,将多样的局部特征 “归一化” 到有限的视觉单词集合,完成特征量化 。
4. 生成视觉单词直方图(图像表示)
统计一幅图像中每个视觉单词出现的频率,形成直方图向量,作为图像的最终表示。比如视觉词典有 K 个单词,直方图就是 K 维向量,向量每个元素值是对应视觉单词在图像中的出现次数(也可加权处理)。该直方图忽略特征顺序,只关注视觉单词的统计分布,用于后续图像分类、检索等任务 。
三、优势与不足
优势
- 简单高效:把图像转化为低维直方图向量,降低计算复杂度,便于大规模图像检索、分类。
- 鲁棒性强:基于局部特征和聚类,对图像平移、缩放、旋转等变化有一定适应能力,局部特征(如 SIFT)本身也具备不变性 。
- 可解释性:视觉单词对应图像局部模式,直方图统计直观,能一定程度解释图像内容构成 。
不足
- 丢失空间信息:只统计视觉单词频率,忽略特征在图像中的空间位置关系,难以表达物体精确结构(可结合空间金字塔匹配等方法改进,划分图像子区域分别统计直方图再融合 )。
- 依赖手工特征:传统 BOVW 用 SIFT 等手工设计特征,表达能力有限,面对复杂场景、细粒度分类任务,效果不如深度学习方法;不过也可结合 CNN 提取的特征构建 BOVW 。
- 聚类敏感:K-Means 等聚类结果受初始中心、K 值影响大,需调参且对离群点较敏感 。
四、应用场景
- 图像检索:提取数据库图像和查询图像的 BOVW 特征,通过对比直方图向量相似度(如计算距离),检索出相似图像 。
- 图像分类:把图像的 BOVW 直方图作为特征,输入 SVM、随机森林等分类器,训练分类模型,实现场景、物体分类 。
- 视频分析:对视频帧提取 BOVW 特征,用于视频内容理解、行为识别等,捕捉帧间视觉模式变化 。