VTK(二)---相机外参矩阵Tcw转VTK相机,构建VR虚拟相机
VR技术:在VTK中构建一个与真实世界一样的虚拟相机,具有对应的运动映射。
一、解析
当我们使用SLAM技术获得相机的位姿Tcw时(即从世界坐标到相机坐标的映射矩阵),我们需要在VTK中建立一个一模一样的相机,并建立相同的运动映射。相机的位姿总共有六个自由度,在VTK中也应该有六个自由度。我们可以利用vtk的三个函数来进行设定:
aCamera->setFocalPoint(); //f=2
aCamera->setPosition(); //f=3
aCamera->setViewUp(); //f=1
前两个函数决定了5个自由度,最后一个决定了1个自由度
常用相机的坐标系如图所示:
在VTK中相机位姿的表达:
从图中我们可以确定的是,相机的位置(Position
)表达是一样的,focalPoint
是在相机的Z方向的,viewup
是在常用坐标系y轴的负方向,这样我们就可以确定映射关系。
对于外参矩阵Tcw
,可以拆成旋转矩阵Rcw
和平移矩阵 tcw
,相机的位置可以表示为:
Pw=−RcwT⋅tcwP_w = -R_{cw}^T\cdot t_{cw} Pw=−RcwT⋅tcw
对于focalPoint
,由相机的位置postion
和focalPoint
可以确定相机的朝向,这里就是常用坐标系的Z坐标轴方向。旋转矩阵的行、列分别代表了不同的意义:
行:Oxwc,Oywc,Ozwc列:Nxcw,Nycw,Nzcw行:Ox_{wc},Oy_{wc},Oz_{wc}\\ 列:Nx_{cw},Ny_{cw},Nz_{cw} 行:Oxwc,Oywc,Ozwc列:Nxcw,Nycw,Nzcw
行代表相机坐标的x,y,z
轴在世界坐标系下的方向,列代表世界坐标系x,y,z
轴在相机坐标系下的方向。这里只取旋转矩阵的第三行:Rcw.row(2)R_{cw}.row(2)Rcw.row(2)就能得到position
到focalPoint
也就是相机坐标Z轴的方向向量,同时第二行的负值:−Rcw.row(1)-R_{cw}.row(1)−Rcw.row(1)就能代表viewUp.
二、方法
R = Tcw.rotation()
t = Tcw.translation()eye = - R.transpose() * t //位置
focus = eye + R.row(2).transpose() //focalPoint 的位置(相机Z轴)
up = - R.row(1) //up方向(相机y轴负方向)aCamera->setPosition(eye);
aCamera->setFocalPoint(focus);
aCamera->setViewUp(up);
最后重置视平面法向量:
aCamera->ComputeViewPlaneNormal()
显示:
ren->SetActiveCamera(aCamera)
ren->ResetCameraClippingRange();
renwin->Render();
VTK(二)---相机外参矩阵Tcw转VTK相机,构建VR虚拟相机相关推荐
- 【自动驾驶】31.【相机外参标定】、【相机障碍物后处理】【地面的2D点反投影到3D】的过程对比
相机的平移向量一般标定到imu坐标系或者车身坐标系,欧拉角 yaw.pitch.roll\color{red}yaw.pitch.rollyaw.pitch.roll是相对于前向相机坐标系的位姿: 前 ...
- 基于先验时间一致性车道线的IPM相机外参标定
文章:Online Extrinsic Camera Calibration for Temporally Consistent IPM Using Lane Boundary Observation ...
- mlcc激光雷达与相机外参标定初体验
论文阅读模块将分享点云处理,SLAM,三维视觉,高精地图相关的文章.公众号致力于理解三维视觉领域相关内容的干货分享,欢迎各位加入我,我们一起每天一篇文章阅读,开启分享之旅,有兴趣的可联系微信diany ...
- cam_lidar_calibration标定速腾激光雷达和单目相机外参
目录 一.资源链接 二.代码测试 2.1安装依赖 2.2代码下载和修改 2.2.1 optimiser.h文件 2.2.2 feature_extractor.h文件 2.3编译代码 2.4测试数据集 ...
- 【学习总结】激光雷达与相机外参标定:原理与代码1
2023年2月重要补充 这个代码我个人觉得不好用且坑太多,所以后来换了一个.推荐大家用新的代码. 详见更新的一篇博客总结:[学习总结]激光雷达与相机外参标定:代码(cam_lidar_calibrat ...
- Halcon 4点单标相机外参
1. 单标外参使用背景 如果摄像机系统没有变化,只是测量面发生了移动或旋转,此时重标相机外参可以解决问题,这种方法可以解决斜测的问题. 2. 主要函数: vector_to_pose( : : Wor ...
- 小觅相机的相机标定全家桶(相机IMU,相机内参,相机外参)
性感帅哥博主在线标定小觅双目相机!!!(亲测有效系列!) 刚刚入手新小觅相机,结果飘出天际,很让人头疼!所以- 话不多说,开始骚操作! mkdir mynt_ws #创建文件夹 cd ~/mynt_w ...
- 根据相机外参实现单应矩阵计算的理论与实践
论文阅读模块将分享点云处理,SLAM,三维视觉,高精地图相关的文章.公众号致力于理解三维视觉领域相关内容的干货分享,欢迎各位加入我,我们一起每天一篇文章阅读,开启分享之旅,有兴趣的可联系微信diany ...
- 激光雷达与相机外参标定(附open3d python代码)
现在的激光雷达与相机的标定程序基本都是Ubuntu框架下面的,并且都是C++代码,需要安装的依赖也比较复杂,于是自己写了一个python版本的标定程序,依赖非常简单,Windows系统也可以运行.并且 ...
- 使用球面目标自动标定雷达-相机外参
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 泡泡点云时空,带你精读点云领域顶级会议文章 标题:Automatic LiDAR-Camera Cal ...
最新文章
- 一页纸项目管理方法(OOPM)背后的思想
- python 类-Python的类
- ASP.NET 网站管理工具中的“安全”制表页
- elasticsearch in查询_Python Elasticsearch DSL 查询、过滤、聚合操作实例
- linux socket 面试题,面试题
- python 全局变量使用报错没有定义_Python变量作用域代码解析
- 使用PostgREST的RestAPI操作之相关软件生态系统
- C语言函数一章教学,C语言-第1章教学案.doc
- NPOI导出Excel示例
- 线性表_栈_逆波兰计算式(Reverse Polish Notation)
- STM32固件库官方下载地址
- 红月3.8登入器重新设计并且支持窗口化兼容win10
- vf计算机教程,VF教程,打印版.pdf
- 利用shell删除labelme打错的标签
- windows下如何创建bat文件
- 华为手机如何连接到电脑
- win 访问linux加密硬盘分区,手把手教你使用BitLocker给win10硬盘分区加密的方法
- oracle已经创建表空间不存在,oracle表空间的创建、删除、查看、表空间不存在、及修改默认表空间详解...
- 使用spool导出数据
- 通过CAN总线控制VESC驱动直流无刷电机