主要内容

bundleAdjustmentMotion

调整收集3-D点和相机姿势使用运动仅束调整

描述

例子

refinedPose= bundleAdjustmentMotion (xyzPointsimagePointsabsolutePoseintrinsic返回最小化重投影错误的精确相机姿势。

纯运动优化过程是Levenberg-Marquardt算法的一个特例,用于优化过程中固定三维点的束调整。3-D点和相机姿势被放置在相同的世界坐标系中。

refinedPosereprojectionErrors= bundleAdjustmentMotion(___返回一个N-element vector,包含每个3-D世界点的平均重投影误差,使用前面语法中的参数。

___= bundleAdjustmentMotion(___名称,值使用一个或多个名称-值参数指定的其他选项。未指定的参数有默认值。

例子

全部折叠

将初始化数据加载到工作区中。

数据=负载(“globeMotionOnlyBA.mat”);

完善绝对的相机姿势。

refinedPose = bundleAdjustmentMotion(data.xyzPoints,data.imagePoints,data.absPose,data.intrinsic);

显示三维世界点。

pcshow (data.xyzPoints AxesVisibility =“上”VerticalAxis =“y”VerticalAxisDir =“向下”MarkerSize = 45);持有

绘制细化前后的绝对相机姿态。

plotCamera (AbsolutePose = data.absPose,颜色=“r”、大小= 2);plotCamera (AbsolutePose = refinedPose,颜色=“m”、大小= 2);

图中包含一个轴对象。axis对象包含line、text、patch、scatter类型的21个对象。

输入参数

全部折叠

未细化的三维点,指定为的-by-3矩阵xyz)的位置。

数据类型:|

图像点,指定为-by-2矩阵或an点特征类型数组中。

绝对相机姿势,指定为arigidtform3d对象。

相机内部函数,指定为cameraIntrinsics对象。

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:“MaxIterations”,50岁

Levenberg-Marquardt算法停止前的最大迭代次数,指定为正整数。

以像素为单位的均方重投影误差的绝对终止容差,指定为正标量。

迭代之间重投影误差减小的相对终止容差,指定为正标量。

标志表示镜头失真,指定为真正的.当你设置PointsUndistorted时,二维点向内pointTracks一定是镜头失真的图像。要使用未扭曲的点,请使用undistortImage先功能,再设置PointsUndistorted真正的

显示指定为的进度信息真正的

输出参数

全部折叠

精致的绝对姿势的相机,返回作为一个rigidtform3d对象。

重投影错误,返回为元向量。该函数将每个世界点投影回每个相机。然后在每个图像中,该函数计算重投影误差为检测点与重投影点之间的距离。的reprojectionErrors向量包含每个世界点的平均重投影误差。

参考文献

[1]卢拉基斯,马诺利斯,和安东尼斯,阿吉罗斯。SBA:通用稀疏束调整软件包。ACM数学软件汇刊,没有。1(2009年3月):2:1-2:30。

[2]哈特利,理查德和安德鲁·泽瑟曼。计算机视觉中的多视图几何.第二版,英国剑桥 ;纽约:剑桥大学出版社,2003年。

[3]特里格斯,比尔,菲利普F.麦克劳克伦,理查德I.哈特利和安德鲁W.菲茨吉本。“束调整-现代综合。”在视觉算法国际研讨会论文集, 298 - 372。斯普林格出版社,1999年版。

扩展功能

版本历史

R2020a中引入

全部展开