《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > ar技术怎么实现 四种AR的实现方式

ar技术怎么实现 四种AR的实现方式

2017-08-14
关键词: AR Python OpenGL SLAM

导读:我们在实现AR效果时,为了大大减少我们的工程量,我们可以借助一些主流的ARSDK,比如EasyAR,Vuforia,太虚AR等等,当然,作为AR技术的狂热爱好者

  我们在实现AR效果时,为了大大减少我们的工程量,我们可以借助一些主流的AR SDK,比如EasyAR ,Vuforia,太虚AR等等,当然,作为AR技术的狂热爱好者,我们的追求远远不止于此。所以了,我今天给大家介绍了几种“底层”实现AR的方式。

  Opencv和C++ 实现

  大概思路是OpenCV实现对Marker的识别和定位,然后通过OpenGL将虚拟物体叠加到摄像头图像下,实现增强现实。具体思路是:

使用SIFT算法进行识别(特征点的提取并用特征向量对特征点描述,接着当前视图的特征向量与目标对象的特征向量进行匹配)

根据识别出来的原目标和帧图像匹配关系得到变化矩阵,来显示三维物体(使用OpenGL来绘制),实现跟踪。

  对于基于标记的AR的Opencv实现,我们常常用到Marker:

97135f54812041e599c9affe02c63472.jpg.png

  黑色边框中是编码信息,白色为1,黑色为0,将每一行作为一个字,那么每个字有5bits。其中,1、3、5位为校验位,2、4位为信息位。接下来用Opencv实现,其具体思路为:

对输入图像帧进行标记检测,灰度化,找到图像中轮廓,检测和解码标记,

估计标记的三维姿态,这里包括提前对摄像机进行相机标定,获取相机内参数和失真系数,根据这个计算出标记的旋转矩阵和平移矩阵,

由相机内参数和标记的旋转矩阵和平移矩阵,用OpenGL进行渲染三维物体。

  项目地址:https://github.com/GeekLiB/opencv_iphoneAR

  参考资料:

  书籍:深入理解OpenCV 实用计算机视觉项目解析

  (链接: https://pan.baidu.com/s/1mi0oCmG 密码: erh5)

  文章:OpenGL与OpenCV实现增强现实

  (链接http://www.tuicool.com/articles/MNJjyam)

  Python 实现AR效果

  Python是世界上最优雅的语言,目前的计算机视觉项目大都用Python来实现,当然用Python的CV库也可以很轻松的实现AR效果。

  用Python来实现AR效果,我们首先运用到两个工具包----PyGame与PyOpenGL。PyGame是非常流行的游戏开发工具包,它可以非常简单的处理显示窗口,输入设备,事件以及其他内容。PyGame是开源的(http://www.pygame.org/)。PyOpenGL是OpenGL图形煸炒的Python绑定接口。并且它也是开源的(http://www.opengl.org/wiki/Getting_started)。在实现的过程中,我们需要获取照相机矩阵并转换到OpenGL格式,并以平面和标记物进行姿态估计,然后在图像中放置虚拟物体。

  参考资料:

  python计算机视觉:链接: https://pan.baidu.com/s/1geArUUn 密码: fnby

  当然,这里也有一个很好的Python AR框架BAR4Py,它是由百晓通客栈×创客项目群着手开发的“增强现实(AR)”的 Python 开发库。

  项目地址:https://github.com/GeekLiB/AR-BXT-AR4Python

  特点:

  基于 OpenCV,以及 Python 的数学库;

  跨平台,可拓展,免费、开源;

  支持简单的 Mark 标记物以及复杂的图像标记;

  使用遗忘队列结构动态更新相机标定;

  可以看看他们的测试效果:

4cd5682dc58a4fa4a55820a8f0a0ec0a_th.jpg

bab7ae93cf6d48f58f5a7e14f6e8ad04_th.jpg

0ef0d614527b449ebff53af57f891172_th.jpg

  AR+SLAM

  SLAM主要用于地图重建,在AR中,我们主要运用SLAM算法来获取camera pose(SLAM的结果是基于feature的点云,提前重建后可以remap拿到较好的camera pose)。

  在这里,我给大家收集了一些SLAM开发资源与AR-SLAM 项目案例,大家可以下载参考。

  SLAM开发资源汇总:https://github.com/GeekLiB/Lee-SLAM-source

  PTAM-AR:http://www.robots.ox.ac.uk/~bob/research/research_ptamm.html

b86df2e18cc347af842f34cfa87ac55c_th.jpg

81cde31cd94b4c1dba20444f4355a0de_th.jpg

c70c7c7850494e8391bb8d51f45774a0_th.jpg

  OpenCV-Marker-less-AR:https://github.com/takmin/OpenCV-Marker-less-AR

  Stereo_SLAM_AR(基于ORB-SLAM):https://github.com/ygx2011/Stereo_SLAM_AR

  效果:

174e5f78aa554b1bbb1fc6d0db957847_th.jpg

  opencv-markerless-AR-Mobile:https://github.com/meiroo/opencv-markerless-AR-Mobile

  ARToolkit

  这是一个老牌的AR工具包,ARToolKit 它是一个C/C++ 语言编写的库。对于开发一个AR程序来说,最困难的部分在于实时的将虚拟图像覆盖到用户视口,并且和真实世界中的对象精确对齐。ARToolKit使用图像技术计算摄像机和标记卡之间的相对位置,从而使程序员能够将他们的虚拟对象覆盖到标记卡上面。ARToolKit 提供的快速和准确的标记跟踪,能够让你快速的开发出许多更新更有趣的AR程序。

  目前ARToolkit支持以下系统:

  相信大多数开发者学习或开发的第一个AR应用用的就是ARToolkit。ARtoolkit的实现步骤是:程序初始化----抓取一帧进行视频的输入----然后探测标示卡----计算摄像头的转移矩阵----绘制虚拟物体----关闭视频捕捉。

513efa16137445c6a08ed05ff86b1fc3_th.jpg

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。