我计划为Android手机开发增强现实应用程序.有谁知道现有的增强现实框架是否可以用于此类应用?
当我从 github 下载项目时,我多次遇到这个问题,我正在使用新的 Android studio(bumble bee),如果有人知道请帮助我
https://github.com/fjbatresv/arcore_solar_system.git(这是我在大黄蜂中下载的项目)
没有任何gradle问题
实际上,我已经尝试了 stack over flow 中的许多解决方案,但我得到了 gradle 的解决方案,但这不是与 gradle 相关的错误。
android augmented-reality build.gradle android-gradle-plugin gradle-plugin
我正在OpenCV上开发一个增强现实SDK.我在找到关于该主题的教程,遵循的步骤,可能的算法,快速有效的实时性能编码等方面遇到了一些问题.
到目前为止,我收集了下一个信息和有用的链接.
下载最新版本.
你可以在这里找到安装指南(平台:linux,mac,windows,java,android,iOS).
在线文档.
对于begginers,这里是OpenCV中的一个简单的增强现实代码.这是一个好的开始.
对于任何寻找精心设计的最先进SDK的人,我发现了一些基于标记跟踪的每个增强现实应该具有的一般步骤,考虑到OpenCV功能.
主程序:创建所有类,初始化,从视频捕获帧.
AR_Engine类:控制增强现实应用程序的各个部分.应该有两个主要状态:
还应该有一些算法用于在每一帧中找到摄像机的位置和方向.这是通过检测场景中检测到的标记与我们已离线处理的标记的2D图像之间的单应性变换来实现的.这里对此方法的解释(第18页).姿势估计的主要步骤是:
加载相机内部参数.以前通过校准离线提取.

将图案(标记)加载到轨迹:它是我们要跟踪的平面标记的图像.有必要为此模式提取特征并生成描述符(关键点),以便稍后我们可以与场景中的特征进行比较.此任务的算法:
对于每个帧更新,运行检测算法以从场景中提取特征并生成描述符.我们还有几种选择.
查找模式和场景描述符之间的匹配.
从这些匹配中查找Homography矩阵.之前可以使用RANSAC来查找匹配集中的内点/异常值.
从单应性中提取相机姿势.
我正在尝试估算与太空中QR码相关的设备位置.我正在使用ARKit和Vision框架,两者都在iOS11中引入,但这个问题的答案可能并不依赖于它们.
使用Vision框架,我能够获得在相机框架中限制QR码的矩形.我想将此矩形与从标准位置转换QR码所需的设备平移和旋转相匹配.
例如,如果我观察到框架:
* *
B
C
A
D
* *
Run Code Online (Sandbox Code Playgroud)
如果我距离QR码1米远,以它为中心,假设QR码的边长为10cm,我会看到:
* *
A0 B0
D0 C0
* *
Run Code Online (Sandbox Code Playgroud)
那两个帧之间的设备转换是什么?我知道确切的结果可能是不可能的,因为观察到的QR码可能是略微非平面的,我们试图估计一个不完美的东西上的仿射变换.
我想这sceneView.pointOfView?.camera?.projectionTransform比sceneView.pointOfView?.camera?.projectionTransform?.camera.projectionMatrix后者已经考虑了从ARKit推断的变换更有帮助我对此问题不感兴趣.
我该怎么做
func get transform(
qrCodeRectangle: VNBarcodeObservation,
cameraTransform: SCNMatrix4) {
// qrCodeRectangle.topLeft etc is the position in [0, 1] * [0, 1] of A0
// expected real world position of the QR code in a referential coordinate system
let a0 = SCNVector3(x: -0.05, y: 0.05, z: 1)
let b0 = SCNVector3(x: 0.05, y: 0.05, z: …Run Code Online (Sandbox Code Playgroud) 我很想知道,每个基于视觉的移动增强现实框架的优缺点在哪里?在哪种情况下应该决定什么?你会选择Vuforia,因为它是免费的,没有品牌吗?其中一个框架缺少哪些重要功能?免费版Metaio SDK(品牌和Metaio启动画面除外)是否有限制?
我认为这些是支持iOS和Android的最重要的框架.我知道metaio支持电影纹理和MD2(动画)导出和Vuforia没有(至少不在基本状态).
编辑:
这是一个3小时的会议,回顾了市场上最好的Mobile AR SDK以及如何开始使用它们:教程:面向开发人员的十大增强现实SDK
您还应该从增强现实实验室SL中查看ARLab.它具有用于AR浏览器,图像匹配,图像跟踪,3D引擎,虚拟按钮的不同AR-SDK.但这不是免费的.
Wikitude的ARchitect SDK具有Vuforia-Extension和Blackberry 10支持.这也可能非常有趣.
该拉亚SDK现在可用于iOS和Android的3D,动画,视频AR和QR码扫描仪
DARAM也是适用于Android,iOS,Windows 8和Mac的优秀SDK.
ARPA有Unity-Plugin和Google Glass SDK.
这是增强现实SDK和框架的良好比较图表
Apple收购了Metaio.Metaio的未来不确定.(2015年5月28日)
Magic Leap宣布推出面向虚幻和Unity的增强现实开发者SDK
Vuforia现在已经支付了许可和演示应用程序的能力而没有免费的Starter计划的水印 - 它现在只出现在特定日期的第一个应用程序启动期间.这是为了支持想要在不显示水印的情况下向客户进行演示的开发人员.(2015年5月6日),Qualcomm将其Vuforia业务出售给PTC(2015年10月12日)
ARKit iOS 11引入了ARKit,这是一个新的框架,可让您轻松为iPhone和iPad创建无与伦比的增强现实体验.通过将数字对象和信息与您周围的环境相结合,ARKit将应用程序带到了屏幕之外,使他们能够以全新的方式与现实世界进行交互.(Juni 2017)
8th Wall XR是世界上第一个适用于所有常用iOS和Android手机的AR平台,可与ARKit和ARCore无缝集成.(2017年8月)
ARCore是谷歌对Apple的ARKit的回答.它旨在以相对简单的方式为所有Android手机带来增强现实功能.它还取代了Project Tango,后者需要专门的硬件才能运行.
我在视频(或图像)中有4个共面点代表一个四边形(不一定是方形或矩形),我希望能够在它们顶部显示一个虚拟立方体,其中立方体的角正好位于角落视频四边形.
由于这些点是共面的,我可以计算单位平方的角(即[0,0] [0,1] [1,0] [1,1])和四边形的视频坐标之间的单应性.
根据这个单应性,我应该能够计算出正确的相机姿势,即[R | t],其中R是3x3旋转矩阵,t是3x1平移向量,因此虚拟立方体位于视频四边形上.
我已经阅读了很多解决方案(其中一些是关于SO的)并试图实现它们,但它们似乎仅在一些"简单"的情况下工作(例如当视频四边形是正方形时)但在大多数情况下不起作用.
以下是我尝试过的方法(大多数是基于相同的原理,只是翻译的计算略有不同).设K是摄像机的内在矩阵,H是单应性.我们计算:
A = K-1 * H
Run Code Online (Sandbox Code Playgroud)
设a1,a2,a3为A和r1,r2,r3的列向量,即旋转矩阵R的列向量.
r1 = a1 / ||a1||
r2 = a2 / ||a2||
r3 = r1 x r2
t = a3 / sqrt(||a1||*||a2||)
Run Code Online (Sandbox Code Playgroud)
问题是在大多数情况下这不起作用.为了检查我的结果,我将R和t与OpenCV的solvePnP方法获得的结果进行了比较(使用以下3D点[0,0,0] [0,1,0] [1,0,0] [1,1 ,0]).
由于我以相同的方式显示立方体,我注意到在每种情况下solvePnP都提供了正确的结果,而从单应性中获得的姿势大多是错误的.
理论上,因为我的点是共面的,所以可以从单应性计算姿势,但是我找不到从H计算姿势的正确方法.
我对错误的看法有何见解?
尝试@Jav_Rock的方法后编辑
嗨Jav_Rock,非常感谢你的答案,我尝试了你的方法(以及其他许多方法)似乎或多或少都可以.然而,在基于4个共面点计算姿势时,我仍然遇到一些问题.为了检查结果,我将与solvePnP的结果进行比较(由于迭代重投影误差最小化方法,这将更好).
这是一个例子:

正如你所看到的,黑色立方体或多或少都可以,但看起来并不均匀,尽管矢量看似正交.
EDIT2:我在计算它之后对v3进行了规范化(为了强制执行正交性),它似乎也解决了一些问题.
我想开发实时面部过滤器作为MSQRD/Snapchat实时过滤器,但是如果我使用增强现实框架并检测面部或使用核心图像来检测面部和相应处理,我无法知道如何继续.如果有人知道如何实现这一点,请告诉我?
我现在是计算机科学的本科生,明年我将进入最后一年.我发现增强现实是一个非常有趣的话题,但我不知道从哪里开始学习它.
您从哪里开始了解此主题以及可用的库?
language-agnostic computer-science computer-vision augmented-reality
是否有任何好的教程或示例应用程序,演示如何制作增强现实iPhone应用程序?
我找到了很多方法来检测不同的形状.但是当我去寻找物理对象时,运气不好.根据我的阅读,我们应该在图像周围有一个黑色边框来制作图案文件.如果我遵循这个概念并生成模式,那么我的应用程序会检测打印输出的图像.但在现实世界中,物体不一定在其周围具有黑色边框方形.
更新
虽然我接受了答案,但我的问题仍然没有解决.由于仍然没有检测物理对象的解决方案.
欢迎任何进一步的研究和链接!