Matlab 相机视角控制

视角参数示意图

The line of sight starts at the center of the plot box and points toward the camera.


视线方向

  • 定义:从plot box的中心到相机中心的方向向量.

  • 角度范围:

    • Az方位角: (-180°,180°], 官网没提,可以经过matlab实测确认.
    • EI仰角: [-90°,90°],与官网一致.

    根据示意图和matlab官网说明,可以看出Az的从[0,-1,0]为起始轴逆时针转动Az角度后再逆时针转动EI角度就可以得到视线方向.

Note: 这里定义的视线方向只适用于plot2和3等matlab传统axes, 实际在matlab近年提供的三维点云处理模块中,视线方向根据Target和camera position来定义, 可以自行验证

在Matlab点云处理中的相机视角控制参数

  1. View : 使用[Az, EI]来描述, 可用于控制整体的视角,不适合细节控制;

个人建议: 在点云处理中,不建议用View来控制相机的视线方向, 一旦进行更加复杂的视角变换后,matlab计算的View参数其实是有问题的. 可以验证只有在box center和target point重合的时候,计算才是对的. 使用view()函数控制视角之后可以看到,matlab会把box center与target point 重合.

  1. Projection: 分为正交投影orthographic和透视投影perspective两种投影方式.

个人理解:如果要根据相机轨迹和姿态来重现观测过程, 建议使用perspective会更好看一点; 如果是要绘制相机观测的整个过程, 还是建议orthographic. 这是我画的示意图, 左边是正交投影,中间是透视投影,右边是图片. [红色和绿色为相机,绿色为当前相机]

  1. CameraPosition: 在世界坐标系中的相机位置[x y z],可以参考最前面的示意图.
  2. CameraTarget: 在世界坐标系中的目标点位置[x y z],可以参考最前面的示意图.

Note:可以从示意图可以看出,CameraTarget 与 CameraPosition构成的向量为光轴方向. 因此可以通过这个向量来控制相机坐标系的深度轴向,一般为z轴. 值得注意的是, CameraTarget的三维点只需要设置在深度轴的正向方向. 我自己写了个一个光轴转换target位置的代码,仅供参考:

>optical_axis=[0;0;1];  %一般取为z轴,也可以换成其他轴, 相机坐标系
>focal_length=10000;  %理论上取(1,)的范围都会让target保持在深度轴正向上,但是取10000在matlab上显示更稳定而且好看一点
>target=focal_length*R(:,:,observe_id)'*optical_axis+t(:,observe_id);%利用x=R(X-t)来进行逆转换 
  1. CameraUpVector: 相机朝向上的方向向量[x y z],可以参考最前面的示意图.

Note:
1.相机的姿态要确定需要确定两根轴, 使用CameraTarget可以固定深度轴, 因此还需要CameraUpVector来固定另一个轴, 实际上就是确定相机坐标系的y或者x轴.
2.CameraUpVector的转换可以参考Target的转换代码部分,几乎一样.相机坐标系下一般取[0;-1;1]. 下图是我画的示意图.
在这里插入图片描述

  1. ViewAngle: 相机的FOV, [0,180)的范围

Note: 通过这个参数可以对3D点云进行类似放大缩小的功能, 官网说不会影响透视畸变的程度.

相机视角控制工具

这部分matlab官网写的很好了,蛮详细的,可以直接参考官网说明.

ps:第一次写blog文章,如果大家感兴趣,后面有时间发一些我自己的SLAM和多视图几何的总结

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SIPANGYIYOU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值