首页| 行业资讯| 企业名录| 周边产品| 数字城市| 增强现实| 工业仿真| 解决方案| 虚拟医疗| 行业仿真| 图形处理| 军事战场
用户登录/注册 ×
资讯首页
行业资讯 >> 学习教程
ARToolKit教程:摄像头和标识关系
时间:2013-07-18    评论:0

    来源:第三维度 

    介绍

    ARToolKit 提供了标识在摄像机的坐标系统中的位置,使用 opengl 矩阵系统计算出虚拟物体的位置。在本节教程中,我们会更详细地讲解这些不同的元素及其之间的关系。

    坐标系统

    我们先来介绍 simpleTest 程序。打开它,把下面这句代码加在 arGetTransMat 后:

        printf("%f %f %f\n",patt_trans[0][3],patt_trans[1][3],patt_trans[2][3]);

    重新编译,运行程序。注意输出值。如果把标识往左移动,第一个值就会增加,往上移动,第二个值就减小,往前移动最后一个值也会增加。下面是 ARToolKit 所使用的坐标系统(CS)。

ARToolKit教程:摄像头和标识关系
图 1 ARToolKit 坐标系统(摄像机和标识)

    输出的值与这些坐标系统相对应。标识坐标系统有着和 opengl 坐标系统一样的方位。

    因此任何应用于与标识关联的物体的转换都应遵循 opengl 的转换规则。比如说,如果不想把方块显示在标识坐标系统的中心,而是让它显示在顶部,可以把下面的代码:

            glTranslatef(0.0,0.0,25.0);

    代替为:

            glTranslatef(0.0,20.0,25.0);

    那么就会得到:

ARToolKit教程:摄像头和标识关系
图 2 虚拟物体移动后的 simpleTest

    更直观的是假设标识静止而真正的摄像头在移动。这就是说,我们想要得到摄像头在标识坐标系中的位置。在 bin 目录下运行 exview。这个程序的显示如图 3 所示,同时输出了摄像头在标识坐标系中的位置。另外一个视图显示的是摄像头和标识的三维模型。

ARToolKit教程:摄像头和标识关系
图 3 exview 视频截图

    在上面的图像中,可以看到标识卡的坐标(蓝色 Z 轴,绿色 Y轴,红色 X 轴)。下面的图像展示了摄像头在标识坐标系中的位置你可以把鼠标移动到三维外部视图中,试着操作感受它们之间的关系(图 4 是另外的例子)。

ARToolKit教程:摄像头和标识关系
图 4 摄像头的不同位置

    打开 examples/exview 下的 exview.c 文件。看程序 getResultRaw:

        if( arGetTransMat(marker_info, target_center,target_width, target_trans) < 0 ) return;

        if( arUtilMatInv(target_trans, cam_trans) < 0 ) return;

          sprintf(string," RAW: Cam Pos x: %3.1f y: %3.1f z: %3.1f",cam_trans[0][3], cam_trans[1][3], cam_trans[2][3]);

    可以看到,同样调用了 arGetTransMat,又调用了 arUtilMatInv,得到转换后的位置。

    标识卡和摄像机之间的关系非常重要,它们之间的转换使多个坐标系统的工作成为可能。

    在这些坐标系统的基础上,同样可以得到任何两个不同的坐标系统之间的转换关系。打开examples/relation 目录下的 relationtest.c 文件。可以得到和 simplem 一样的多个物体。主要的区别是增加了以下代码:

        if( object[0].visible >= 0 && object[1].visible >= 0 ) {

            double wmat1[3][4], wmat2[3][4];

            arUtilMatInv(object[0].trans, wmat1);

            arUtilMatMul(wmat1, object[1].trans, wmat2);

            for( j = 0; j < 3; j++ ) {

                for( i = 0; i < 4; i++ ) printf("%8.4f ", wmat2[j][i]);

                  printf("\n");

            }

    printf("\n\n");

    这段代码计算了两个标识之间的相对转移矩阵。object[0].trans 是标识卡 1 在摄像机坐标系里面的转移矩阵,object[1].trans 是标识卡 2 在摄像机坐标系里面的转移矩阵.因此object[0].trans 的转置乘以 object[1].trans 就得到了标识卡 2 在标识卡 1 坐标系里面的转移矩阵。运行程序,把标识卡放在如图所示位置上:

ARToolKit教程:摄像头和标识关系
图 5 relationtest(渲染视图和控制台输出)

     输出的最后一列是标识卡 2 在标识卡 1 坐标系里面的相对转移矩阵。锥体在球体的左侧(X 轴方向上 142mm 处),在标识卡 1 上(Y 轴方向上 27mm),它们几乎在同一平面上(Z 轴方向上 7mm).移动标识卡 1 和标识卡 2,观察输出值,理解它们之间的关系。

    尝试通过修改 relationTest 的代码做相反的操作(标识卡 1 在标识卡 2 坐标系里面的相对转移矩阵)。

标签:ARToolKitAR增强现实
上一篇:ARToolKit教程:跟踪稳定性下一篇:Simbionix推出血管内手术模拟器
网友评论:ARToolKit教程:摄像头和标识关系
留名: 验证码:
最新评论
查看全部评论0
暂无评论
您可能还需要关注一下内容:
·传Magic Leap考虑出售:价格或超100亿美元
·BBC推出文物增强现实应用 Civilisations AR
·关于增强现实技术潜在发展方向的思考
·那款更适合你?2019年VR眼镜性能大比拼
·AR眼镜:挑战下一代个人移动计算平台
·人民日报:虚拟现实 由虚向实
·ArcEngine下基于钻孔的离子型稀土矿三维虚拟仿真方法
·水域模拟三维可视化技术研究
·外媒评Spectacles3:摄像头眼镜而已
·苹果AR眼镜概念曝光,十年内取代iPhone
☏ 推荐产品

小宅 Z5 2018青春版
商家:小宅

杰瑞特运动平台
商家:杰瑞特智能

Dikalis眼动追踪
商家:赢富仪器

魔神 Hawk
商家:魔神运动分析

5DT Binoculars
商家:四维宇宙

Christie DS+750
商家:四维宇宙

Zalman M220W
商家:四维宇宙

全息360°
商家:四维宇宙

PD F10 AS3D
商家:四维宇宙

PHANTOM系列
商家:四维宇宙
☞ 外设导航
☏ 企业名录
【深圳】深圳市观度科技有限公司
【沈阳】沈阳中申高新科技有限公司
【北京】北京未尔锐创科技有限公司
【南昌】南昌虚拟现实检测技术有限公司
【上海】上海桥媒信息科技有限公司
【宁波】宁波维真显示科技股份有限公司
【潍坊】歌尔股份有限公司
【上海】霍尼韦尔(中国)有限公司
【北京】科视Christie-中国
【北京】北京华如科技股份有限公司
关于本站联系我们融资计划免责声明网站建设广告服务咨询策划行业推广
北京第三维度科技有限公司 版权所有 京ICP备15051154号-3
2008-2020 Beijing The third dimension Inc. All Rights Reserved.
Email:d3dweb@163.com  QQ:496466882
Mob:13371637112(24小时)
关注虚拟现实
关注第三维度