OpenCV:如何确定/检测照片中是否有必要的对象?

时间:2013-11-03 11:46:17

标签: opencv image-processing computer-vision object-detection template-matching

如何确定/检测照片中是否有必要的物体?

我不需要识别对象的类,但我需要知道我是否与模板图片中的对象完全相同。

到目前为止,我尝试使用模板匹配,直方图匹配和类似SIFT的方法,但这些方法都没有我所需的准确度。

有人能建议一种精确的方法吗?

UPD

发布中的数据库大小 - 5.000-10.000个唯一对象

可用的训练数据集--50个对象。

3 个答案:

答案 0 :(得分:2)

如果您只对这个对象(或少量对象)感兴趣,您可以训练分类器 - 例如V& J(级联分类器)或尝试使用Bag of words方法。

您可以在此处阅读有关级联分类器的信息: http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html

关于词袋的理论背景: http://gilscvblog.wordpress.com/2013/08/23/bag-of-words-models-for-visual-categorization/

openCV实现了一揽子单词: http://docs.opencv.org/modules/features2d/doc/object_categorization.html

答案 1 :(得分:1)

照明的差异,一个图像中存在的条带,变形(非线性),旋转,平移,比例等......增加了这个问题的难度。

对于初学者,你或许可以选择这个钱包的10-20张图片。为每个钱包计算直方图,筛选特征或一些基于小波的特征等功能,然后查看钱包的传入图像是否与任何训练图像中的任何点的子集匹配。

如果您在这里取得了一些成功,那么您可以考虑使用机器学习技术构建图像分类器。您需要收集训练数据,从多个视图,方向和变形中识别您想要识别的每个对象。在网上搜索“图像处理中的机器学习”将使您朝着正确的方向前进。

答案 2 :(得分:1)

  1. 我认为如果你需要高精度,一种方法是不够的。您将不得不使用多种方法。就像你已经尝试过模板匹配,直方图匹配和类似SIFT的方法一样。但如果你尝试这些智能组合,它可能会有所帮助。

  2. 除此之外,您还可以尝试机器学习方法。它通常被认为更强大

  3. 分类器也可以是解决方案之一