android – 使用OpenCV SVM进行对象检测

我在互联网上的一个地方找不到好的解释.有太多的东西,而不是找出该做什么,我变得更加困惑.

我的目标:创建一个使用相机实时检测物体的Android应用程序(我的对象是方向盘和汽车轮胎).

到目前为止,我尝试了哈尔分类器,但是训练困难,花了很多时间,无法正确地训练,所以我决定寻找另一种方式来实现我的目标.

现在我发现了特征检测器和SVM训练.我的问题是:

1:我应该使用哪种算法(SURF,ORB,FREAK等)?

2:你怎么看待HOG Bag-Of-Words?

3:你能告诉如何训练SVM或者给你一个链接? – 我没有找到关于这个的任何教程.我继续搜索,但我的时间有限,我决定问.

4:哪个算法会给出最好的结果?

5:我应该用Android NDK在本机上实现,或者与Java实现不会有太大的区别?

如果您有任何教程或参考资料,请将它们添加到您的答案或评论中.对于长期的问题抱歉,正如我说我的时间有限(这是一个学校项目),而且我认为如果人们可以在一个地方找到这些答案,这将是很好的.我会欣赏每一个答案,即使不是一个完整的答案.先谢谢你!

解决方法

1:对于所有情况,没有最优算法,但是根据应用程序的要求,适合某些非常具体情况的算法.

您可以尝试SIFT和SURF哪些是最流行的描述符,但不是非常有效(缓慢),并且需要大量内存.
如果效率是您的目标,您可以尝试二进制描述符(例如Brief,BRISK,FREAK),这些描述符效率更高,需要更少的存储空间.看一下FAST探测器.

2:图像分类问题的一个词是一种识别对象类别的方法,给出一组包含对象类的正训练图像,以及一组不具有对象类别的负训练图像.

Bag-Of-Words将为您提供每个训练图像的向量表示.

得到这个之后,您将必须训练一个分类器来区分对应于正(方向盘和汽车轮胎)和负面训练图像的矢量.
您可以为此使用SVM分类器.

3:你在这里有一个完整的方法教程(BOW SVM)在OpenCV 2.3.您需要在代码中进行一些更改,但总体思路是:http://www.morethantechnical.com/2011/08/25/a-simple-object-classifier-with-bag-of-words-using-opencv-2-3-w-code/

另外,SVM的OpenCV教程:
http://docs.opencv.org/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html

4:如前所述,没有完美的算法,所以我无法回答你.我认为在用(1)中的替代方法进行一些测试后,你将能够回答我们.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...