def*_*era 10 android opencv object-detection feature-detection opencv4android
我无法在互联网上的某个地方找到好的解释.有太多的东西,而不是找到做什么,我变得更加困惑.
我的目标:创建一个Android应用程序,使用相机实时检测对象(我的对象是方向盘和汽车轮胎.)
到现在为止我尝试了haar分类器,但很难训练,花了很多时间而且无法正确训练所以我决定寻找另一种方法来实现我的目标.
现在我发现了特征检测器和SVM培训.我的问题是:
1:我应该使用哪种算法(SURF,ORB,FREAK等)?
2:你怎么看待HOG + Bag-Of-Words?
3:如果有的话,您会告诉我如何训练SVM或提供链接吗? - 我没有找到任何关于此的教程.我一直在寻找,但我的时间有限,我决定问.
4:哪种算法会得到最好的结果?
5:我应该使用Android NDK在本机中实现它还是与Java实现没有太大的区别?
如果您有任何教程或参考资料,请将其添加到您的答案或评论中.很抱歉这个问题很长,因为我说我的时间有限(这是一个学校项目.)而且我认为如果人们能够在一个地方找到这些答案会很好.我会很感激每一个答案,即使它不是一个完整的答案.先感谢您!
1:对于所有情况都没有最优算法,但根据应用的要求,算法适合某些特定情况.
您可以尝试SIFT和SURF,它们是最流行的描述符,但效率不高(慢)且需要大量内存.如果效率是您的目标,您可以尝试二进制描述符(例如,BRIEF,ORB,BRISK,FREAK),这些描述符效率更高,需要更少的存储空间.再看看FAST探测器.
2:图像分类问题词袋的-是识别给定的一组包含一个对象类阳性训练图像的对象类别的方法,和一组不负的训练图像.
Bag-Of-Words将为您提供每个训练图像的矢量表示.
在得到这个之后,你将需要训练一个分类器来区分对应于正(方向盘和汽车轮胎)和负训练图像的矢量.您可以使用SVM分类器.
3:您在这里有OpenCV 2.3中完整方法(BOW + SVM)的教程.您需要对代码进行一些更改,但总体思路是:http://www.morethantechnical.com/2011/08/25/a-simple-object-classifier-with-bag-of-words-使用-的OpenCV-2-3-W-代码/
此外,SVM的OpenCV教程:http: //docs.opencv.org/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html
4:正如我之前所说,没有完美的算法,所以我无法回答你.我认为在对(1.)中的替代方案进行一些测试后,您将能够回答我们.:)
5.我认为你应该使用Android NDK,但我对Android开发知之甚少.
http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/android_dev_intro.html http://opencv.org/platforms/android.html
| 归档时间: |
|
| 查看次数: |
2818 次 |
| 最近记录: |