主要内容

bundleAdjustment

调整3-D点和相机姿势的集合

描述

例子

xyzRefinedPointsrefinedPoses= bundleadadjust (xyzPointspointTrackscameraPosesintrinsic改进3-D点和相机姿势,以尽量减少重投影误差。该算法是Levenberg-Marquardt算法的一种变体。该函数使用相同的全局参考坐标系返回3-D点和相机姿态。

wpSetRefinedvSetRefinedpointIndex= bundleadadjust (wpSetvSetviewIDsintrinsic从世界点集中提炼三维点,wpSet,并从图像视图集中提炼相机姿态,vSetviewIDs中指定相机姿势vSet完善。

___reprojectionErrors= bundleadadjust (___返回每个3-D世界点的平均重投影误差,以及前面语法中的参数。

___= bundleadadjust (___名称=值使用一个或多个名称-值参数以及以前语法中的参数组合指定选项。例如,MaxIterations = 50将迭代次数设置为50.未指定的参数有默认值。

例子

全部折叠

加载数据进行初始化。

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

完善相机的姿势和点。

[xyzRefinedPoints, refinedPoses] =...bundleAdjustment (data.xyzPoints data.pointTracks、data.cameraPoses data.intrinsics);

显示3-D点和相机姿势之前和之后的细化。

pcshowpair (pointCloud (data.xyzPoints) pointCloud (xyzRefinedPoints),...AxesVisibility =“上”VerticalAxis =“y”VerticalAxisDir =“向下”, MarkerSize = 40);持有plotCamera(数据。cameraPoses,Size=0.1, Color=“m”);plotCamera(refinedpose, Size=0.1, Color=“g”);传奇(“细化”“细化”之后颜色=“w”);

图中包含一个轴对象。axis对象包含102个类型为line、text、patch、scatter的对象。这些对象表示在细化之前,细化之后。

输入参数

全部折叠

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

匹配多个图像上的点,指定为N-element数组pointTrack对象。每个元素包含多个图像上的两个或多个匹配点。

相机姿势信息,指定为带有列的两列表ViewId而且AbsolutePose.视图id与对象的id相关联pointTracks论点。您可以使用提出了对象的函数来获取cameraPoses表格

相机内部函数,指定为cameraIntrinsics对象或N-element数组cameraIntrinsics对象。N是相机姿势的数量还是id的数量viewIDs.使用单一的cameraIntrinsics对象在使用同一相机捕获图像时。使用矢量cameraIntrinsics当不同的相机捕捉图像时的对象。

3-D世界点,指定为aworldpointset对象。

相机姿势,指定为imageviewset对象。

视图标识符,指定为N元数组。的viewIDs表示要细化的相机姿态,指定它们的相关视图imageviewset

名称-值参数

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

例子:MaxIterations = 50将迭代次数设置为50

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

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

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

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

标志表示镜头失真,指定为真正的.当你设置PointsUndistorted时,二维点向内pointTracks或在vSet一定是镜头失真的图像。要使用未扭曲的点,首先使用undistortImage函数从图像中删除失真,然后设置PointsUndistorted

查看固定相机姿态的id,指定为一个非负整数向量。每个ID对应于ViewId一个固定的相机的姿势cameraPoses.的空值。FixedViewIDs意味着所有的相机姿势都是优化的。

求解器,指定为“sparse-linear-algebra”“preconditioned-conjugate-gradient”.使用“sparse-linear-algebra”求解低稀疏图像。低稀疏性表示许多摄像机视图观察到一些相同的世界点。使用“preconditioned-conjugate-gradient”(PCG)求解器,来自通用图形优化(g2o)库,用于高稀疏图像。高稀疏性表示每个摄像机视图观察到的,只有一小部分世界点,由xyzPoints

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

输出参数

全部折叠

精炼世界点的三维位置,返回为的-by-3矩阵xyz)的位置。

数据类型:|

精致的相机姿势,返回为一个两列表。该表包含列ViewId而且AbsolutePose

精炼的三维世界积分,返回为worldpointset对象。

精致的相机姿势,指定为imageviewset对象。

指数wpSetRefined的三维世界点,返回为元数组。

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

检测点和重投影点相邻,重投影误差为它们之间的距离

参考文献

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

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

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

扩展功能

版本历史

在R2016a中引入

全部展开