最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

plotCamera

3 次元座標でのカメラのプロット

説明

cam = plotCamera() は、現在の座標軸でレンダリングされるカメラ可視化オブジェクトを作成します。

cam = plotCamera(cameraTable) は、現在の座標軸にレンダリングされるカメラ可視化オブジェクトの配列を返します。

cam = plotCamera(Name,Value) は、1 つ以上の Name,Value ペアの引数で指定されたプロパティ値を持つカメラ可視化オブジェクトを作成します。

すべて折りたたむ

y 軸に沿ってカメラのポインティングをプロットします。

    R = [1     0     0;
         0     0    -1;
         0     1     0];

カメラの不透明度を 0 に設定してアニメーションの速度を上げます。

    cam = plotCamera('Location',[10 0 20],'Orientation',R,'Opacity',0);

表示プロパティを設定します。

    grid on
    axis equal
    axis manual

アニメーションに十分な大きさの領域にします。

    xlim([-15,20]);
    ylim([-15,20]);
    zlim([15,25]);

カメラの y 軸についてカメラを回転します。

    for theta = 0:pi/64:10*pi
        T = [cos(theta)  0  sin(theta);
                0        1      0;
             -sin(theta) 0  cos(theta)];
        cam.Orientation = T * R;
        cam.Location = [10 * cos(theta),10 * sin(theta),20];
        drawnow();
    end

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

images = imageSet(fullfile(toolboxdir('vision'),'visiondata',...
    'calibration','slr'));

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

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

左上隅が (0,0) のパターン中心の座標系でチェッカーボードのコーナーのワールド座標を生成します。正方形のサイズを 29 mm に設定します。

squareSize = 29;
worldPoints = generateCheckerboardPoints(boardSize,squareSize);

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

cameraParams = estimateCameraParameters(imagePoints,worldPoints);

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

imOrig = imread(fullfile(toolboxdir('vision'),'visiondata',...
    'calibration','slr','image9.jpg'));
figure; imshow(imOrig,'InitialMagnification',50);
title('Input Image');

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

im = undistortImage(imOrig,cameraParams);

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

[imagePoints,boardSize] = detectCheckerboardPoints(im);

新しい外部パラメーターを計算します。

[rotationMatrix,translationVector] = extrinsics(imagePoints,...
    worldPoints,cameraParams);

ワールド座標点をプロットします。

figure;
plot3(worldPoints(:,1),worldPoints(:,2),zeros(size(worldPoints, 1),1),'*');
hold on

原点をマークします。

plot3(0,0,0,'g*');

カメラの位置と方向を計算します。

orientation = rotationMatrix';
location = -translationVector * orientation;

カメラをプロットします。

cam = plotCamera('Location',location,'Orientation',orientation,'Size',20);

z 軸を下に向けます。

set(gca,'CameraUpVector',[0 0 -1]);

表示パラメーターを設定します。

camorbit(gca,-110,60,'data',[0 0 1]);
axis equal
grid on

3 次元回転をオンにします。

cameratoolbar('SetMode','orbit');

座標軸にラベルを付けます。

xlabel('X (mm)');
ylabel('Y (mm)');
zlabel('Z (mm)');

入力引数

すべて折りたたむ

カメラ可視化オブジェクトのプロパティ。テーブルとして指定します。列には、カメラ可視化オブジェクトの Name,Value プロパティ (表示する軸を指定する Parent を除く) が含まれます。テーブルに 'ViewId' 列が含まれる場合、ビュー ID がカメラのラベルとして使用されます。

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: 'Location'[0,0,0]

カメラの位置座標。'Location' と 3 要素ベクトルで構成されるコンマ区切りのペアとして指定します。[x, y, z] 座標は、親の座標軸のデータ単位で指定されます。

行列の方向。'Orientation' と 3 行 3 列の 3 次元回転行列で構成されるコンマ区切りのペアとして指定します。

カメラの基本幅。'Size' とスカラーとで構成されるコンマ区切りのペアとして指定します。

カメラのラベル。Label と文字ベクトルで構成されるコンマ区切りのペアとして指定します。

カメラの色。'Color' と文字ベクトルまたは範囲 [0 1] 内の RGB 値の 3 要素ベクトルで構成されるコンマ区切りのペアとして指定します。RGB カラーの指定方法の詳細については、colorspec を参照してください。

カメラの不透明度。'Opacity' と [0, 1] の範囲のスカラーで構成されるコンマ区切りのペアとして指定します。

カメラの可視性。'Visible' と logical true または false で構成されるコンマ区切りのペアとして指定します。

カメラの座標軸の可視性。'AxesVisible' と logical true または false で構成されるコンマ区切りのペアとして指定します。

コールバック関数。'ButtonDownFcn' と、カメラをクリックしたときに実行される関数名で構成されるコンマ区切りのペアとして指定します。

出力座標軸。'Parent' と座標軸ハンドルで構成されるコンマ区切りのペアとして指定します。既定値は、現在の座標軸ハンドル gca に設定されます。

R2015a で導入