ARToolkit 摄像头与目标相对位置计算原理浅析.docVIP

ARToolkit 摄像头与目标相对位置计算原理浅析.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARToolkit 摄像头与目标相对位置计算原理浅析

ARToolkit 摄像头与目标相对位置计算原理浅析 前言 好久没有把学习的东西写出来了,最近在研究AR(增强现实)。发现ARToolKit的利用卡片的投影,来判断单摄像头来空间位置的思路很有特点,所以研究了一下。因为国内的资料很少,因此把从日文资料中学习来的内容分享给大家。 希望对在这方面有兴趣的朋友有所启发和帮助。 说明 1,本人正在学习过计算机视觉,还没有入门,有些术语用错的请指教。 2,原理部分涉及到线性代数的知识,本人已经忘光,虽然重新翻阅了同济大 学的线性代数教材,也只是应用其皮毛,此部分理论知识不牢。 一, ARToolkit介绍 对拙文感兴趣的朋友,一定多少了解该技术,我就不班门弄斧了。想了解的朋友随便检索一下会有很多介绍的相关文章。 我仅把官网备忘如下: /artoolkit/ 二, 摄像头相对位置算法思路(arGetTransMat) ARToolkit的核心算法,我个人认为有2个,一个是卡片的识别(研究有心得的时候分享给大家),另外一个就是根据卡片投影的形状,来计算摄像头与卡片的相对位置。下面把该算法的实现原理介绍如下: 1,卡片的形状 正如大家所知道的,卡片的形状一定要是正方形(其他形状也可以,需要修改部分算法),正方型的好处是让算法相对简单。 2,卡片的图形 图形可以是任意的,单一定不能是中心对称的,因为中心对称的话就没有办法分辨出上下。 3,近小远大及投影关系 计算机视觉中,近小远大的投影关系,大家一定知道。ARTool就是巧妙的利用近小远大及投影关系来计算卡片相对摄像机远近,以及旋转(X轴/Y轴/Z轴)的相对位置。再具体点儿, 假设事先拍摄好的一张卡片的正上方图片为A(一定要是垂直的正上方), 在任意角度通过摄像头拍摄取得的卡片图像为B。 A为正视图,正方型是没有任何扭曲的。B则不同,B会相对与A在空间的X/Y/Z轴上有旋转,及有前后的位移。 如果我们能根据A与B的图像关系,分别计算出在X轴/Y轴/Z轴的旋转角度和的前后位移值,就知道了,摄像头相对于卡片的空间位置。问题就解决了。 简单吧,理解上面的1,2,3特别是3,的话,我们就可以往下进行具体实现了。 三, 用线性代数来实现 解决上面3的问题。 假设从摄像头上取得的卡片的坐标为Xc,Yc,Zc(摄像头坐标系),卡片的坐标为Xm,Ym,Zm。则有下面公式 |Xc| |r1 r2 r3| |Xm| |Yc|=|r4 r5 r6| |Ym| |Xc| |r7 r8 r9| |Zm| 再假设相对与X轴的旋转角度为φ,相对与Y轴的旋转角度为θ,相对与Z轴旋转角度为ψ。 上面的行列式求解为 |cosφ –sinφ 0| X=| sinφ conφ 0| |0 0 1| | 1 0 0 | Y= | 0 cosθ –sinθ| |0 sinθ cosθ| |cosψ -sinψ 0| Z=|sinψ cosψ 0| |0 0 1| R= |cosφcosψ-sinφcosθsinψ -cosφsinψ-sinφcosθcosψ  sinφsinθ|
 |sinφcosψ+cosφcosθsinψ -sinφsinψ+cosφcosθcosψ -cosφsinθ|
 |sinθsinψ                  sinθcosψ                  cosθ     | r9 = cosθ
 r7^2+r8^2 = (sinθ)^2 如果sinθ≠0
则 cosφ = -r6/sinθ
 sinφ =  r3/sinθ
 cosψ =  r8/sinθ
 sinψ =  r7/sinθ 前后的前后位移非常简单, |Xc|   |x| |Xm|
 |Yc| = |y| |Ym|
 |Zc|   |z| |Zm| OK,问题解决完了。各位看懂了吗? 如果没有懂,也别灰心,刚学到这里的时候,我也不懂,直到我重新复习了线性代数。 四,线性代数复习 如果您同我一样,看到上面的公式不知所云的时候,请在网上搜索一下线性代数的教材,再回忆一下大学生活。(我看的是同济大学的线性代数教材,觉得讲的深入浅出。推荐给各位) 矩阵和线性变换之间存在的一一对应关系。以2维空间为例。 假设有向量OP(x,y),OP长度为r,辐角为θ
,则x=rcosθ
,y=rsinθ
。 再假设OP1(x1,y1),OP1长度为与OP相同为r,辐角为在θ基础上

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档