主要内容

bundleAdjustment

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

描述

例子

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

wpSetRefinedvSetRefinedpointIndex) = bundleAdjustment (wpSetvSetviewIDsintrinsic从世界点集中提炼出3d点,wpSet,并从图像视图集中细化相机姿态,vSetviewIDs中指定相机姿势vSet完善。

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

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

例子

全部折叠

加载初始化数据。

data =负载(“globeBA.mat”);

完善相机的姿势和点。

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

显示改进前后的3d点和相机姿态。

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

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

输入参数

全部折叠

不精细的三维点,指定为-by-3矩阵的[xyz)的位置。

多个图像之间的匹配点,指定为N元组pointTrack对象。每个元素包含多个图像中的两个或多个匹配点。

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

相机的本征,指定为cameraIntrinsics对象或一个N元组cameraIntrinsics对象。N是相机姿势的数量还是id的数量viewIDs.使用一个cameraIntrinsics对象,当使用同一相机捕获图像时。使用一个向量cameraIntrinsics当图像被不同的相机捕获时的对象。

三维世界点,指定为worldpointset对象。

相机姿势,指定为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

精致的3d世界点数,返回为worldpointset对象。

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

指数wpSetRefined精致的3d世界点,作为元数组。

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

检测点与重投影点相邻,重投影误差为两者之间的距离

参考文献

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

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

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

扩展功能

版本历史

介绍了R2016a

全部展开

Baidu
map