用于对整个图像进行分类的OpenCV中的HOG

HOG in OpenCV for classification of entire images

本文关键字:分类 OpenCV 中的 HOG 图像 用于      更新时间:2023-10-16

我知道OpenCV中的梯度直方图通常用于图像补丁,以便检测和分类图像中的对象。

然而,我想使用HOG来构建一个可以用于对整个图像进行分类的特征向量。使用以下内容:

std::vector<float> temp_FV_out;
cv::HOGDescriptor hog;
hog.compute(img_in, temp_FV_out);

由于图像的大小不同,给出了非常长的特征向量,每个特征向量都有不同的长度——较大的图像有更多的64 x 128个窗口,每个窗口都有助于特征向量的长度。

如何让OpenCV从每个图像中给出一个短的特征向量(约5-20个bin),其中特征向量的长度保持不变,而与图像的大小无关?我宁愿不使用单词袋来建立HOG"单词"词典。

第一步是标准化图像大小-选择要处理的最小大小,并将其余大小调整为该基本大小。您也可以将小尺寸设置为默认尺寸(例如100x100)。如果它们的纵横比不相同,则可能需要裁剪它们。

接下来,您可以根据各种算法从向量中选择一些特征:PCA、决策树、Ada-boost等,这可以帮助您从数据中提取最重要的值。