主要内容

estimateCameraMatrix

(不推荐)估计摄像机投影矩阵从world-to-image点对应关系

自从R2019a

estimateCameraMatrix不推荐。使用estimateCameraProjection函数来代替。有关更多信息,请参见兼容性的考虑

描述

camMatrix= estimateCameraMatrix (imagePoints,worldPoints)返回摄像机投影矩阵决定从已知世界点及其对应的图像预测利用直接线性变换(DLT)方法。

例子

(camMatrix,reprojectionErrors)= estimateCameraMatrix (imagePoints,worldPoints)还返回reprojection误差,量化的准确性投影图像坐标。

例子

全部折叠

加载一个三维点云数据被一个RGB-D传感器到工作区中。

ld =负载(“object3d.mat”);ptCloud = ld.ptCloud;

删除分从点云坐标。

[validPtCloud, validIndices] = removeInvalidPoints (ptCloud);

读世界有效的点坐标。每个条目指定了x,y,z一个点的坐标点云。

worldPoints = validPtCloud.Location;

定义对应的像点坐标的正射投影点云数据上yz飞机。

指数= 1:ptCloud.Count;[y, z] = ind2sub([大小(ptCloud.Location, 1),大小(ptCloud.Location, 2)),指数);imagePoints = [y (validIndices)的z (validIndices)];

生成二维图像投影使用图像点坐标及其颜色值。

projImage = 0 (max (imagePoints(: 1)),马克斯(imagePoints (:, 2), 3);rgb = validPtCloud.Color;j = 1:长度(rgb) projImage (imagePoints (j, 1), imagePoints (j, 2):) = rgb (j:);结束

显示点云数据和相应的二维投影图像。

图次要情节(1、2、1)pcshow (ptCloud)包含(“X”);ylabel (“Y”);zlabel (“Z”);标题(点云数据的,“颜色”(1 1 1))次要情节(1、2、2)imshow (uint8 (projImage))标题(二维图像投影的,“颜色”(1 1 1))

图包含2轴对象。坐标轴对象与标题1点云数据,包含X, Y ylabel包含一个散射类型的对象。坐标轴对象2标题二维图像投影包含一个类型的对象的形象。

估计摄像机投影矩阵和reprojection错误使用已知世界点和图像点。

[camMatrix, reprojectionErrors] = estimateCameraMatrix (imagePoints worldPoints);

使用估计摄像机投影矩阵的输入findNearestNeighbors查询的功能,找到最近的邻居。

点= (0.4 0.3 0.2);%指定查询点K = 1000;%指定最近的邻居的数量待定[指标,经销]= findNearestNeighbors (ptCloud,点K camMatrix);%的指数和距离最近的邻居

使用选择函数得到的点云数据最近的邻居。

ptCloudB =选择(ptCloud、指标);

显示输入的点云和最近的邻国。

图pcshow (ptCloud)plot3 (ptCloudB.Location (: 1) ptCloudB.Location (:, 2), ptCloudB.Location (:, 3),‘*’)举行传奇(“点云”,“最近的邻居的,“位置”,“southoutside”,“颜色”(1 1 1))

图包含一个坐标轴对象。坐标轴对象包含2散射类型的对象,线。一个或多个行显示的值只使用这些对象标记代表点云,最近的邻居。

输入参数

全部折叠

图像投影的坐标点,指定为一个2矩阵(x,y)坐标。是点的数量必须大于或等于6。输入图像点必须对应于一个无畸变的图像平面。

数据类型:|

3 d世界点,指定为一个3矩阵(x,y,z)坐标。是点的数量必须大于或等于6。输入必须non-coplanar世界坐标点。

数据类型:|

输出参数

全部折叠

相机的投影矩阵,作为4-by-3返回矩阵。矩阵图3 d世界点,在齐次坐标的二维图像坐标投影到图像平面上。

数据类型:

Reprojection错误,作为一个返回1的向量。reprojection错误是错误reprojected图像点和输入图像之间的点。reprojection计算上的错误的更多信息,参见算法

数据类型:

提示

您可以使用estimateCameraMatrix函数来估计摄像机投影矩阵:

  • 如果world-to-image点通讯是已知的,相机intrinsic和外在参数不清楚,您可以使用cameraMatrix函数。

  • 计算二维图像点与3 d世界点,参考方程camMatrix

  • 为使用findNearestNeighbors对象的函数pointCloud对象。使用相机的投影矩阵加速最近的邻居搜索一个RGB-D传感器生成的点云,如微软®Kinect®

算法

给世界留下点X和图像分x,摄像机投影矩阵C通过解方程

λx=CX

方程是解决了利用直接线性变换(DLT)方法[1]。这种方法制定一个齐次线性方程组,解决方案是通过广义特征值分解。

因为图像点坐标的像素值,计算摄像机投影矩阵的方法对数值错误十分敏感。为了避免数值错误,输入图像点坐标归一化,所以,他们的重心是在原点。同时,根均方距离图像的点从原点√6 (2)。这些步骤总结估计摄像机投影矩阵的过程。

  1. 正常的输入图像点坐标变换T

  2. 估计摄像机投影矩阵CN从标准化的输入图像点。

  3. 计算出规范化的摄像机投影矩阵C作为CNT1

  4. 计算reprojected像点坐标xE作为CX

  5. 计算reprojection错误

    reprojectionErrors= |xxE|。

引用

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

版本历史

介绍了R2019a

全部展开