主要内容

bundleAdjustment

调整的3 d点和相机的姿势

描述

例子

(xyzRefinedPoints,refinedPoses)= bundleAdjustment (xyzPoints,pointTracks,cameraPoses,intrinsic)改进3 d分和相机姿势reprojection错误降到最低。细化过程的一种变体Levenberg-Marquardt算法。函数使用相同的全局参考坐标系统返回的3 d点和相机的姿势。

(wpSetRefined,vSetRefined,pointIndex)= bundleAdjustment (wpSet,vSet,viewIDs,intrinsic)改进3 d点的点集,wpSet,改进相机带来了从图像视图集,vSetviewIDs指定相机姿势vSet完善。

(___,reprojectionErrors)= bundleAdjustment (___)返回均reprojection误差为每个3 d世界,除了参数从以前的语法。

(___)= bundleAdjustment (___,名称=值)指定选项使用一个或多个名称参数除了参数从以前的语法的任意组合。例如,MaxIterations = 50设置迭代次数50。未指定的参数有默认值。

例子

全部折叠

加载初始化数据。

data =负载(“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 (refinedPoses、大小= 0.1,颜色=“g”);传奇(“细化”,“细化”之后颜色=“w”);

图包含一个坐标轴对象。坐标轴对象包含102行类型的对象,文本,补丁,散射。这些对象代表之前细化,细化之后。

输入参数

全部折叠

未经提炼的3 d点,指定为一个3的矩阵xyz)的位置。

跨多个图像匹配点,指定为一个N元组pointTrack对象。每个元素包含两个或多个匹配点在多个图像。

相机姿态信息,用列指定为一个两列的表ViewIdAbsolutePose。视图id与IDs的对象pointTracks论点。您可以使用提出了目标函数来获取的cameraPoses表。

相机intrinsic,指定为一个cameraIntrinsics对象或一个N元组cameraIntrinsics对象。N是相机的数量构成或id的数量吗viewIDs。使用一个cameraIntrinsics当图像捕获对象使用相同的相机。使用一个向量cameraIntrinsics当图像捕获的对象不同的相机。

3 d世界点,指定为一个worldpointset对象。

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

视图标识符指定为一个N元数组。的viewIDs代表这相机对完善指定相关的意见imageviewset

名称-值参数

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

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

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

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

绝对终止公差均方reprojection错误的像素,指定为积极的标量。

相对终止公差之间reprojection减少误差的迭代,指定为积极的标量。

国旗表明透镜畸变、指定为真正的。当您设置PointsUndistorted二维点pointTracks或在vSet必须与透镜畸变图像。使用无畸变的点,第一次使用undistortImage函数删除扭曲的图像,然后设置PointsUndistorted

视图id固定相机姿势,指定为一个向量的非负整数。对应于每个IDViewId固定相机的姿势cameraPoses。一个空值FixedViewIDs意味着所有相机进行了优化。

解算器,指定为“sparse-linear-algebra”“preconditioned-conjugate-gradient”。使用“sparse-linear-algebra”解决低稀疏图像。低稀疏表示许多相机视图观察世界一些相同的点。使用“preconditioned-conjugate-gradient”(PCG)解算器,从一般图形优化(g2o)库,对于高稀疏图像。高稀疏表示每个相机视图所观察到的,只有一小部分的世界点,规定xyzPoints

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

输出参数

全部折叠

改进世界的3 d位置点,作为一个返回3的矩阵xyz)的位置。

数据类型:|

精制相机姿势,返回为一个两列的表。表包含的列ViewIdAbsolutePose

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

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

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

Reprojection错误,作为一个返回元向量。功能项目每个世界点回每一个相机。在每一个图像,函数计算reprojection错误检测和reprojected点之间的距离。的reprojectionErrors向量包含每个世界点的平均reprojection错误。

探测点和reprojected点相邻,与reprojection错误它们之间的距离

引用

[1]Lourakis, Manolis i。,Antonis A. Argyros. "SBA: A Software Package for Generic Sparse Bundle Adjustment."ACM交易数学软件36,没有。1(2009年3月):2:1-2:30。

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

[3]组织,比尔,菲利普·f·McLauchlan理查德·哈特利,和安德鲁·w·菲茨吉本。“束调整——现代合成。”In《国际研讨会上视觉算法,298 - 372。斯普林格出版社,1999年版。

扩展功能

版本历史

介绍了R2016a

全部展开