主要内容

本页采用了机器翻译。点击此处可查看英文原文。

world2img

将世界点投影到图像中

自 R2022b 起

    说明

    imagePoints = world2img(worldPoints,tform,intrinsics) 根据刚性几何变换 tform,将三维世界点 worldPoints 投影到图像 imagePoints 上的点。intrinsics 可以是 cameraIntrinsicscameraIntrinsicsKBfisheyeIntrinsics 目标。

    示例

    imagePoints = world2img(worldPoints,tform,intrinsics,ApplyDistortion=distort) 返回应用了畸变处理后的投影结果。此语法仅适用于 cameraIntrinsicscameraIntrinsicsKB 对象。

    [imagePoints,validIndex] = world2img(___) 还会返回位于图像边界内的有效图像点的索引。

    示例

    全部折叠

    创建一组标定图像。

    dataDir = fullfile(toolboxdir("vision"),"visiondata", ...
          "calibration","slr");
    images = imageDatastore(dataDir);
    imageSize = size(readimage(images,1));

    检测图像中的棋盘格角点。

    [imagePoints,patternDims] = detectCheckerboardPoints(images.Files);

    生成棋盘格图案各角在以图案为中心的坐标系中的世界坐标,该坐标系的左上角位于 (0,0)。

    squareSize = 29; % in millimeters
    worldPoints = patternWorldPoints("checkerboard",patternDims,squareSize);

    标定相机。

    cameraParams = estimateCameraParameters(imagePoints,worldPoints, ...
        ImageSize=imageSize(1:2));
    intrinsics = cameraParams.Intrinsics;

    将图像加载到新位置。

    imOrig = readimage(images,9);
    imshow(imOrig)

    去畸变图像。

    imUndistorted = undistortImage(imOrig,intrinsics);

    在新图像中找到一个参考目标。

    [imagePoints,patternDims] = detectCheckerboardPoints(imUndistorted);

    计算新的外参。

    camExtrinsics = estimateExtrinsics(imagePoints,worldPoints,intrinsics);

    在世界坐标系中添加一个 z- 坐标。

    zCoord = zeros(size(worldPoints,1),1);
    worldPoints = [worldPoints zCoord];

    将世界坐标系投影回原始图像。

    projectedPoints = world2img(worldPoints,camExtrinsics,intrinsics);
    hold on
    plot(projectedPoints(:,1),projectedPoints(:,2),"g*-");
    legend("Projected Points");
    hold off

    Figure contains an axes object. The hidden axes object contains 2 objects of type image, line. This object represents Projected Points.

    输入参数

    全部折叠

    三维世界坐标点,指定为一个 M 行 3 列的矩阵,其中包含三维世界坐标点的 M [x,y,z] 坐标。worldPoints 的坐标必须与 tform 对象的 Translation 属性使用相同的单位。

    相机在世界坐标系中的变换,指定为一个 rigidtform3d 对象。

    相机内参,指定为 cameraIntrinsicsfisheyeIntrinsicscameraIntrinsicsKB 对象。该对象存储了有关相机内参标定参数的信息,包括镜头畸变参数。

    应用镜头畸变,指定为 falsetrue。当将此参量设置为 true 时,该函数会对输出 imagePoints 应用透镜畸变效果。

    只有当 intrinsics 参量是 cameraIntrinsicscameraIntrinsicsKB 对象时,该参量才有效。

    输出参量

    全部折叠

    图像点,以 M 行 × 2 列的矩阵形式返回,其中包含 M 个 [x,y] 形式的点坐标。

    有效的索引以 M×1 逻辑向量的形式返回,该向量指定了 imagePoints 输出中位于图像边界内的有效图像点的索引。与索引相对应的世界点位于相机的视场内。

    扩展功能

    全部展开

    版本历史记录

    在 R2022b 中推出

    全部展开