OpenCV SVM 分类器图像识别
OpenCV SVM Classifier Image Recognition
我正在使用C++和OpenCV 3.3.1
,我尝试使用OpenCV训练SVM,我的步骤是:
- 预处理图像
- 使用 SURF 进行特征提取
- 创建用于学习正图像和负图像的数据集
- 重塑图像 1 行 1 特征
的形状 - 创建标签,-1 表示负数,+1 表示正数
- 学习支持向量机
- 预测
现在我的问题: 假设我的图像是 128 x 128,特征提取后我得到了一个垫子 重塑后有 16 行和 128 列,我得到了 1 行和 2048 列,现在是用这种大小的行和列训练的 SVM。当我尝试使用我的 SVM 进行预测时,我遇到了一个问题,即 SVM 想要相同大小的特征垫(1 行和 2048 列),但我的预测图像作为学习图像具有更多特征,因此用于预测的垫子根据需要更大。
与我用于学习的相同图像的预测效果很好,所以我想 SVM 有效。
如何将 SVM 用于更大的图像?
使用 SURF/SIFT 描述符,使它们成为 1X 2048 功能并不是一个好主意,原因有两个:
-
您正在限制每个图像的有用要素数量 (=16),如果要素数不同于 16,则会出现错误。即使您每次都强制使用 16 个功能,您最终也可能丢失功能,因此结果会降低
-
您正在训练 2048 维的 SVM 分类器,而不利用提取的特征描述符之间的任何关系。
更健壮和标准的方法是使用单词袋。 您使用词袋和直方图方法从 SIFT 特征中获得 K 维描述符,然后在此 K 维描述符上训练 SVM 分类器,wchih 将为每个图像相同。
此链接可能对您有所帮助,
https://www.codeproject.com/Articles/619039/Bag-of-Features-Descriptor-on-SIFT-Features-with-O
如果你想使用MATLAB;那么vlfeat可以实现整个管道。
相关文章:
- 提升 ASIO 无法识别计时器对象
- 为我的 c++ 类介绍制作一个三角形分类器.我有几个问题
- 只有级联分类器会发出未定义的引用错误
- 将svm分类器设置为HOG检测器
- 如何开发图像识别程序
- 在C /OBJ-C 中运行Tensorflow分类器模型与Python的结果不同
- 贝叶斯和SVM分类器在OpenCV3中的实现
- TensorFlow图像识别输出格式C
- 如何在OpenCV中从3D模型训练HAAR分类器?
- Tensorflow - Deep MNIST 教程 - 将分类器导出到C++
- OpenCV SVM 分类器图像识别
- 使用Caffe从图像中分类手写数字
- 哪个分类器可用于使用C 和OPENCV进行铁路线检测
- CNTK中的二进制分类器,带有C
- 是时候训练分类器了
- SVM 分类器未保存在 ".xml" 中?
- 带有级联或 SVM 分类器的 HOG.C++ OpenCV (V2.4.5) 中的程序
- haar分类器是否可以用于特定ROI中的检测而不是整个图像中的检测
- OpenCV性别分类使用级联分类器与面部识别器(fishface)
- 人脸识别分类器