首页|行业资讯|企业名录|周边产品|数字城市|增强现实|工业仿真|解决方案|虚拟医疗|行业仿真|图形处理|军事战场
资讯首页
行业资讯 >> 学习教程>>正文
ARToolKit教程:摄像头和标识关系
2013年7月18日    评论:    分享:

    来源:第三维度 

    介绍

    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教程:摄像头和标识关系
评论
留名: 验证码:
您可能还需要关注一下内容:
·幻眼科技:让AR增强现实技术融入日常生活
·eSmart:一场属于VR的狂欢
·聚焦eSmart:智能硬件必将崛起,科技改变数字生活
·幻眼-提供最先进的增强现实营销解决方案
·增强现实技术支持的幼儿教育环境研究
·VR眼镜没前途,AR才是未来
·基于ArcGIS创建三维虚拟城市流程
·首款国产增强现实眼镜 HiAR Glasses发布
·以影像辨识实现智能型导览系统
·汽车制造业是驱动AR技术发展的原动力
☏ 推荐产品

Ladybug5全景
商家:力方国际

ProJet®
商家:力方国际

ProJet®
商家:视科创新

Premium1.5
商家:视科创新

巴可HDX主动立体投
商家:德浩科视

巴可HDF-W26投
商家:德浩科视

巴可30000流明2
商家:德浩科视

巴可4万流明2K投影
商家:德浩科视
☞ 外设导航
☏ 企业名录
【广州】中科院广州电子技术有限公司
【北京】第二空间(北京)科技有限公司
【北京】幻维世界(北京)网络科技有限公司
【厦门】厦门惠拓动漫科技有限公司
【厦门】厦门幻眼信息科技有限公司
【深圳】深圳南方百捷文化传播有限公司
【北京】北京思源科安信息技术有限公司
【上海】上海殊未信息科技有限公司
【北京】北京赢康科技开发有限公司
【武汉】武汉科码软件有限公司
友情链接 关于本站 咨询策划 行业推广 广告服务 免责声明 网站建设 联系我们 融资计划
北京第三维度科技有限公司 版权所有 京ICP备09001338
2008-2016 Beijing The third dimension Inc. All Rights Reserved.
Tel:010-57255801 Mob:13371637112(24小时)
Email:d3dweb@163.com  QQ:496466882
扫一扫 第三维度
官方微信号