Main Content

world2img

イメージへのワールド ポイントの投影

R2022b 以降

    説明

    imagePoints = world2img(worldPoints,tform,intrinsics) は、剛体幾何学的変換 tform に従って、3 次元のワールド ポイント worldPoints をイメージ上の点 imagePoints に投影します。intrinsics は、cameraIntrinsics オブジェクト、cameraIntrinsicsKB オブジェクト、または fisheyeIntrinsics オブジェクトにすることができます。

    imagePoints = world2img(worldPoints,tform,intrinsics,ApplyDistortion=distort) は、歪み適用を使用した投影を返します。この構文は、cameraIntrinsics オブジェクトおよび cameraIntrinsicsKB オブジェクトでのみ使用します。

    [imagePoints,validIndex] = world2img(___) は、イメージの境界内にある有効なイメージ ポイントのインデックスも返します。

    すべて折りたたむ

    一連のキャリブレーション イメージを作成します。

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

    イメージ内のチェッカーボードのコーナーを検出します。

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

    左上隅が (0,0) のパターン中心の座標系でチェッカーボードのコーナーのワールド座標を生成します。

    squareSize = 29; % in millimeters
    worldPoints = generateCheckerboardPoints(boardSize,squareSize);

    カメラのキャリブレーションを行います。

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

    新しい位置でイメージを読み込みます。

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

    イメージの歪みを補正します。

    imUndistorted = undistortImage(imOrig,intrinsics);

    新しいイメージで参照オブジェクトを検索します。

    [imagePoints,boardSize] = 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

    入力引数

    すべて折りたたむ

    3 次元ワールド ポイント。3 次元ワールド ポイントの座標 M [x,y,z] を含む M 行 3 列の行列として指定します。worldPoints 座標は、tform オブジェクトの Translation プロパティと同じ単位でなければなりません。

    ワールド座標内でのカメラの変換。rigidtform3d オブジェクトとして指定します。

    カメラの内部パラメーター。cameraIntrinsics オブジェクト、fisheyeIntrinsics オブジェクトまたは cameraIntrinsicsKB オブジェクトとして指定します。これらのオブジェクトは、カメラの内部キャリブレーション パラメーターに関する情報を格納します (レンズ歪みパラメーターなど)。

    レンズ歪みの適用。false または true として指定します。この引数を true に設定すると、関数はレンズ歪みを出力 imagePoints に適用します。

    この引数は、引数 intrinsicscameraIntrinsics オブジェクトまたは cameraIntrinsicsKB オブジェクトの場合にのみ有効です。

    出力引数

    すべて折りたたむ

    イメージ ポイント。点の座標 M [x,y] の M 行 2 列の行列として返されます。

    有効なインデックス。イメージの境界内にある imagePoints 出力内の有効なイメージ ポイントのインデックスを指定する M 行 1 列の logical ベクトルとして返されます。インデックスに対応するワールド ポイントは、カメラの視野内にあります。

    拡張機能

    バージョン履歴

    R2022b で導入

    すべて展開する