内容提要
本文介绍用OpenCV将图像转换为特征向量以输入机器学习算法。直接展平像素会导致维度过高,HOG和BoW能提取更紧凑、抗光照与尺度变化的表示:HOG计算并归一化梯度方向直方图;BoW用SIFT提取描述子,经k均值聚类生成视觉词并统计直方图。示例中HOG输出81维,BoW输出50维。
延伸解读
为何不直接展平像素
直接展平图像像素会得到与像素数等长的向量,例如20×20图像得到400维向量。维度过高不仅增加计算负担,还可能引发“维数灾难”,影响模型泛化。HOG和BoW通过特征提取降低维度,同时使表示对光照、尺度或视角变化更稳健,更适合机器学习算法处理。
HOG参数如何影响特征
HOG的窗口、细胞、块大小及方向数等参数共同决定特征维度和语义。示例中20×20图像设置细胞10×10、块10×10、步长5×5、9个方向,最终得到81维向量。参数需根据目标物体大小和图像分辨率调整,块归一化还能增强对光照变化的鲁棒性。
BoW词表大小的权衡
BoW先通过SIFT提取局部描述子,再用k均值聚类生成视觉词表,词表大小即聚类数。示例中聚类数设为50,得到50维直方图特征。词表越大表示越精细,但可能过拟合且计算成本增加;词表太小则区分力不足。该值需根据数据经验选择。
没有普适最优方法
文章指出不存在适用于所有情况的单一最佳技术,选择HOG还是BoW需通过受控实验决定。示例中HOG用于digits数据集,BoW用于CIFAR-10子集,仅取100张图像以缩短处理时间。实际应用时应根据图像特性、计算资源和任务目标进行对比测试。
Q&A
为什么不能直接把图像像素展平成一维向量输入机器学习算法?
直接展平像素会导致特征维度过高,例如20x20图像展平后长度为400,对于更大图像维度会急剧增加,引发“维度灾难”,严重影响机器学习算法性能。因此需要降维,提取更紧凑的特征表示。
HOG(方向梯度直方图)技术是如何计算图像特征向量的?
HOG先计算图像水平和垂直方向的梯度(如用Prewitt算子),得到每个像素的梯度幅值和方向;然后将图像划分为固定大小的不重叠细胞单元,为每个细胞单元计算梯度方向直方图;接着将相邻细胞单元的直方图拼接成块并归一化,以增强对光照变化的鲁棒性;最后将所有块的归一化特征向量拼接成整个图像的最终特征向量。
BoW(词袋)技术在计算机视觉中是如何应用的?
在计算机视觉中,BoW将图像视为视觉单词的集合。首先用SIFT等算法提取特征描述子;然后通过k均值聚类生成视觉词汇(聚类中心即视觉单词,聚类数即词汇量);接着将每个特征描述子映射到最近的聚类中心;最后统计视觉单词的直方图作为图像的特征向量。
在OpenCV中实现HOG特征提取时,关键参数有哪些?
关键参数包括:winSize(窗口大小,对应最小检测对象尺寸)、cellSize(细胞单元大小,捕获特征尺寸)、blockSize(块大小,处理光照变化)、blockStride(块步长,控制块重叠程度)、nbins(直方图 bin 数,捕获0-180度梯度)。此外还有derivAperture、winSigma、histogramNormType、L2HysThreshold、gammaCorrection、nlevels等参数通常取默认值。
使用HOG和BoW进行图像向量表示后,特征向量的维度是多少?
在文章示例中,HOG对每张图像输出81维特征向量(基于winSize=(20,20)、blockSize=(10,10)、blockStride=(5,5)、cellSize=(10,10)、nbins=9等参数);BoW输出50维特征向量(由k均值聚类数50决定,即词汇量大小)。
HOG和BoW技术相比直接展平像素有哪些优势?
HOG和BoW能提取更紧凑的特征表示,降低特征维度和冗余,减少计算需求;同时使特征向量对光照、尺度或视角变化更具鲁棒性,有助于机器学习算法更好地泛化。