Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

world2img

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

R2022b 以降

    説明

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

    imagePoints = world2img(worldPoints,tform,intrinsics,ApplyDistortion=distort) は、歪み適用を使用した投影を返します。この構文は、非魚眼カメラの内部パラメーターでのみサポートされます。

    [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

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

    入力引数

    すべて折りたたむ

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

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

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

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

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

    出力引数

    すべて折りたたむ

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

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

    拡張機能

    C/C++ コード生成
    MATLAB® Coder™ を使用して C および C++ コードを生成します。

    バージョン履歴

    R2022b で導入

    すべて展開する