Project--3D Rigid Object Tracking -------chapter 4

这周压力很大,感觉得弄个实实在在的项目出来!所以几乎整个一周都在调项目!下午终于有点进展,很开心!(顺便说一下,今天端午节,祝杨老师节日快乐!)
今天更新了这周做的一个基于安卓开发,利用opencv库实现增强现实的小项目! 还有基于c++的ar_marker,还在调试中!
具体介绍看我的 Progress

Team & Project

课程名称: 图像分析与理解
项目名称: 3D Rigid Object Tracking
HeadLine: 6/17/2016
队员姓名:杨梅,许佳琪,罗音
华中科技大学 电子信息与通信学院

Introduction

The objective of 3D rigid object tracking is to associate 3D target objects in consecutive video frames and meanwhile estimate the relative pose (3D translation and 3D rotation) between the 3D targetand the camera. Rigid means the relative position among object components do not change. For instance, a cup, a book and a car are rigid object while a human face and a cat are non-rigid object. It has a variety of uses, some of which are: humancomputer interaction, security and surveillance, video communication and compression, augmented reality, traffic control, medical imaging and video editing.3D object tracking can be especially difficult when the objects are moving fast relative to the frame rate. Another situation that increases the complexity of the problem is when the tracked object changes orientation over time. For these situations the tracking system usually employs a motion model whichdescribes how the image of the target might change for different possible motions of the object.

Progress

一 配置基于eclipse 安卓开发环境

我们采取的方式是;Java(JDK+JRE)+Eclipse+ADT+Android SDK来搭建Android开发环境。
(1)Java(JDK+JRE):可以在Oracle官网下载 Java SE Development Kit 8u66(或者别的版本,根据自己的系统选择),我下的时候出现如下问题:
test
这时候我们可以选择在蝴蝶上下载,版本也很新(1.8.0_74)。我下的是 Newest Version of Eclipse and JDK ,很不错。
这时候我们需要给JDK配置环境变量,参考如下链接:http://blog.my-eclipse.cn/jdk-install-classpath.html
(2)Eclipse :Eclipse 官网下载2015年最新版本Mars,安装Eclipse Mars.或者从蝴蝶上下载名为 eclipse-java-mars-R-win32-x86_64的文件夹,是免安装版的。
(3)在android studio官网下载最新的android-sdk 我的系统是win7 64位,下载的是android-sdk_r24.4.1-windows。官网链接: https://developer.android.com/studio/index.html
(4)至此Eclipse和android-sdk还是分开,独立的,我们需要安装插件ADT将两者联系起来。下载最新的ADT.我下的是ADT-23.0.6。然后安装离线ADT,参考链接如下:
http://jingyan.baidu.com/article/3aed632e66858770108091bf.html
安装完后我们需要重启eclipse.重启之后我们会发现多了两个图标(SDK manager 和虚拟机),还有提示你打开sdk manager去更新我们的sdk工具,这是一个漫长的过程。可参考如下链接:http://www.zhihu.com/question/31935836 确定安装哪些tools.
至此我们就搭建了一个开发环境。这只是第一步!
More info: Android开发环境搭建:Eclipse篇

二 关于项目

先用个小Demo展示一下我们目前的成果:

这是一个小AR的app,用到的卡片如下图:
test
最开始我们是用虚拟机做测试,可是开机特别慢,终于等到开机了,可又一直提示process system is not responding。。。
test 我们点wait之后,显示如下:
test
接着就是http://zhidao.baidu.com/link?url=J0cdwb5C79TKigkQWVR1wHNEPWpRo4BwV_vO8rqVsAC2fz9FuJIrweQjgt7qMKM7-SDI6_zGqBOMmwy4W_k5EK,这样的错误。
最后好不容易没错了,有一直保持下面状态不动,而且虚拟机就没有该App:
test
可能是我的电脑太卡或者安卓本版太高(我装的是6.0)?或者别的原因,总之一直解决不了。于是我们就只能采取真机调试,步骤如下:
(1)为手机装驱动:(这也挺让我这个新手挺抓狂的)
像以前那样直接更新驱动是装不了的(D:\install_file\JAVA\android-sdk-windows\extras\google\usb_driver),会显示找不到设备的驱动文件。
花了好长时间,终于找到下面这位高手写的博客:http://blog.csdn.net/yao_guet/article/details/24106085
大概就是这样的:首先要知道自家手机的VendorID跟ProductID,然后找到android_winusb.inf文件夹,将自家手机的VendorID跟ProductID添加进去。如图:
test
然后找到adb_usb.ini文件,在里面编辑你手机的ID,我的如下:
test
到此,驱动就装好了。
(2)在SDK manager 里下载对应手机的安卓版本的工具(我的手机是4.4.2),如下图:
test
然后选择真机设备运行.
(3)在手机上安装opencv sdk manager:运行成功之后手机上会提示你安装opencv sdk manager,这时候你需要百度你手机对应的cpu架构,然后在该文件夹(E:\Java_project\OpenCV-android-sdk\apk)
找到对应的apk安装到手机即可,最后我的手机如图:
test

注:为了最终做出能够在手机上看AR的一个APP效果,我们先用了一个测试项目————helloandroid,效果如下:
test
写起来感觉很简单,可做的时候由于刚开始什么都不懂,身边也没有懂这方面的朋友,于是都得靠自己摸索,真的遇到很多困难,好几天都感觉没有任何进展。
当看到自己的测试项目能在手机上成为个app,并且打印出了东西,我和我的小伙伴真的不知道有多高兴,多自豪!
虽然感觉不属于追踪,但能找到marker,并且加上虚拟物品还算行吧.

Next Plan

尽力做出3D-Rigid-Object-Tracking!
(上周问老师的问题还没去解决,主要是发现我的vs是2013,然后没有对应的openframeworks,
然后那个opencv里的关于2d-3d的函数还不知道怎么用,不是这个方向的得摸索一段时间。)

参考代码:

见little-AR.zip,要用到的卡片是ARmarkers.pdf。主要是关于AR的。可以运行!
More info: 我的github

References

[1]. Multiple 3D Object Tracking for Augmented Reality, In ISMAR, 2008.
[2]. https://www.ssontech.com/tutes/tuteobj.html
[3]. Manipulator and Object Tracking for In-Hand 3D Object Modeling, IN IJRR, 2011.
[4]. Robust Statistics for 3D Object Tracking, In ICRA 2006.
[5]. Real-time 3D Object Pose Estimation and Tracking for Natural Landmark Based Visual Servo. In IROS.