Main Content

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

birdsEyeView

逆遠近法地図作成を使用して鳥瞰ビューを作成

説明

birdsEyeView オブジェクトを使用して、逆遠近法地図作成で 2 次元シーンの鳥瞰ビューを作成します。イメージを鳥瞰ビューに変換するには、birdsEyeView オブジェクトと対象イメージを関数 transformImage に渡します。鳥瞰ビュー イメージの座標を車両座標 (またその逆) に変換するには、関数 imageToVehicle および vehicleToImage を使用します。これらのすべての関数では、入力イメージにレンズ歪みがないことを前提としています。レンズ歪みを除去するには、関数 undistortImage を使用します。

作成

説明

birdsEye = birdsEyeView(sensor,outView,outImageSize) は、イメージを鳥瞰ビューに変換するための birdsEyeView オブジェクトを作成します。

  • sensor は、カメラ センサーの構成を定義する monoCamera オブジェクトです。この入力は Sensor プロパティを設定します。

  • outView は、鳥瞰ビューに変換されるカメラ ビューの部分を車両座標で定義します。この入力は OutputView プロパティを設定します。

  • outImageSize は、出力される鳥瞰ビュー イメージのサイズをピクセル単位で定義します。この入力は ImageSize プロパティを設定します。

プロパティ

すべて展開する

カメラ センサー構成。monoCamera オブジェクトとして指定します。このオブジェクトには、内部カメラ パラメーター、取り付け高さ、カメラ取り付け角度が含まれます。この構成は、birdsEyeView オブジェクトの車両座標系を定義します。詳細については、車両座標系を参照してください。

鳥瞰ビュー イメージに変換する領域の座標。[xmin xmax ymin ymax] という形式の 4 要素ベクトルとして指定します。単位は、Sensor プロパティで決定されたワールド座標です (メートルやフィートなど)。4 つの座標は、(X、Y) 座標系で出力空間を定義します。原点は、カメラ センサーの位置に配置されます。

Vehicle with camera sensor and rectangular region within the sensor view that is being transformed. Clockwise from top, the sides of the region are labeled ymax, xmax, ymin, and xmin.

オブジェクトを作成するときにこのプロパティを設定できます。オブジェクトの作成後は、このプロパティは読み取り専用です。

出力される鳥瞰ビュー イメージのサイズ (ピクセル単位)。[m n] という形式の 2 要素ベクトルとして指定します。ここで、m と n ではそれぞれ、出力イメージの行ピクセル数と列ピクセル数を指定します。1 つの次元の値を指定した場合、もう 1 つの次元を NaN に設定できます。そうすると、birdsEyeView によってこの値が自動的に計算されます。1 つの次元を NaN に設定すると、XV 軸および YV 軸に沿って、ピクセルとワールド単位の比率が同じままに保たれます。

オブジェクトを作成するときにこのプロパティを設定できます。オブジェクトの作成後は、このプロパティは読み取り専用です。

オブジェクト関数

transformImageイメージを鳥瞰ビューに変換
imageToVehicle鳥瞰ビューのイメージ座標から車両座標への変換
vehicleToImage車両座標から鳥瞰ビューのイメージ座標への変換

すべて折りたたむ

車両に取り付けられた前面カメラによって取得されたイメージから鳥瞰ビュー イメージを作成します。車両座標系およびイメージ座標系を使用して鳥瞰ビュー内の点を表示します。

カメラの内部パラメーターを定義し、これらの内部パラメーターが含まれたオブジェクトを作成します。

focalLength = [309.4362 344.2161];
principalPoint = [318.9034 257.5352];
imageSize = [480 640];

camIntrinsics = cameraIntrinsics(focalLength,principalPoint,imageSize);

カメラの高さを地上約 2 メートルになるように設定します。カメラのピッチを地面に向けて 14 度に設定します。

height = 2.1798;
pitch = 14;

カメラ構成が含まれたオブジェクトを作成します。

sensor = monoCamera(camIntrinsics,height,'Pitch',pitch);

鳥瞰ビューに変換する、カメラの前の領域を定義します。カメラの前に 3 から 30 メートル、カメラの両側に 6 メートルずつの領域を設定します。

distAhead = 30;
spaceToOneSide = 6;
bottomOffset = 3;

outView = [bottomOffset,distAhead,-spaceToOneSide,spaceToOneSide];

出力イメージの幅を 250 ピクセルに設定します。長さを NaN に設定することで、出力の長さを幅から自動的に計算します。

outImageSize = [NaN,250];

前に定義したパラメーターを使用して、鳥瞰ビュー変換を実行するためのオブジェクトを作成します。

birdsEye = birdsEyeView(sensor,outView,outImageSize);

センサーによって取得されたイメージを読み込みます。

I = imread('road.png');
figure
imshow(I)
title('Original Image')

Figure contains an axes object. The axes object with title Original Image contains an object of type image.

入力イメージを鳥瞰ビュー イメージに変換します。

BEV = transformImage(birdsEye,I);

鳥瞰ビュー イメージで、センサーの正面に 20 メートルのマーカーを配置します。関数 vehicleToImage を使用して、車両座標でマーカーの位置を指定します。鳥瞰ビュー イメージでマーカーを表示します。

imagePoint = vehicleToImage(birdsEye,[20 0]);
annotatedBEV = insertMarker(BEV,imagePoint);
annotatedBEV = insertText(annotatedBEV,imagePoint + 5,'20 meters');

figure
imshow(annotatedBEV)
title('Bird''s-Eye-View Image: vehicleToImage')

Figure contains an axes object. The axes object with title Bird's-Eye-View Image: vehicleToImage contains an object of type image.

今度はイメージ座標で、元の鳥瞰ビュー イメージの位置を定義します。関数 imageToVehicle を使用して、イメージ座標を車両座標に変換します。マーカーから車両前面までの距離を表示します。

imagePoint2 = [120 400];
annotatedBEV = insertMarker(BEV,imagePoint2);

vehiclePoint = imageToVehicle(birdsEye,imagePoint2);
xAhead = vehiclePoint(1);
displayText = sprintf('%.2f meters',xAhead);
annotatedBEV = insertText(annotatedBEV,imagePoint2 + 5,displayText);

figure
imshow(annotatedBEV)
title('Bird''s-Eye-View Image: imageToVehicle')

Figure contains an axes object. The axes object with title Bird's-Eye-View Image: imageToVehicle contains an object of type image.

詳細

すべて展開する

拡張機能

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

バージョン履歴

R2017a で導入