Main Content

projectLidarPointsOnImage

LiDAR 点群データをイメージ座標系に投影

R2020b 以降

説明

imPts = projectLidarPointsOnImage(ptCloudIn,intrinsics,tform) は、LiDAR センサーとカメラの間の剛体変換 tform と一連のカメラの内部パラメーター intrinsics を使用して、LiDAR 点群データをイメージ座標系に投影します。出力 imPts には、投影された点のイメージ フレームにおける 2 次元座標が格納されます。

imPts = projectLidarPointsOnImage(worldPoints,intrinsics,tform) は、ワールド座標系の 3 次元座標として指定された LiDAR 点をイメージ座標系に投影します。

[imPts,indices] = projectLidarPointsOnImage(___) は、前述の構文の任意の入力引数の組み合わせを使用して、投影された点の点群における線形インデックスを返します。

[___] = projectLidarPointsOnImage(___,Name,Value) は、前述の構文の任意の引数の組み合わせに加え、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、'ImageSize',[250 400] は、点を投影するイメージのサイズを 250 x 400 ピクセルに設定します。

すべて折りたたむ

グラウンド トゥルース データを MAT ファイルからワークスペースに読み込みます。イメージと点群のデータをグラウンド トゥルース データから抽出します。

dataPath = fullfile(toolboxdir('lidar'),'lidardata','lcc','sampleColoredPtCloud.mat');
gt  = load(dataPath);
img = gt.im;
pc = gt.ptCloud;

カメラの内部パラメーターをグラウンド トゥルース データから抽出します。

intrinsics = gt.camParams;

カメラから LiDAR への変換行列をグラウンド トゥルース データから抽出し、反転して LiDAR からカメラへの変換行列を求めます。

tform = invert(gt.tform);

点群データをダウンサンプリングします。

p1 = pcdownsample(pc,'gridAverage',0.5);

点群をイメージ フレームに投影します。

imPts = projectLidarPointsOnImage(p1,intrinsics,tform);

投影された点をイメージに重ね合わせます。

figure
imshow(img)
hold on
plot(imPts(:,1),imPts(:,2),'.','Color','r')
hold off

Figure contains an axes object. The axes object contains 2 objects of type image, line. One or more of the lines displays its values using only markers

入力引数

すべて折りたたむ

点群。pointCloud オブジェクトとして指定します。

ワールド座標系における点。M 行 3 列の行列または M×N×3 の配列として指定します。M 行 3 列の行列を指定する場合、合計 M 個の点を含むアンオーガナイズド点群に含まれる点の 3 次元ワールド座標が各行に格納されます。M×N×3 の配列を指定する場合、M と N はそれぞれオーガナイズド点群の行と列の数を表します。配列の各チャネルに、その点の 3 次元ワールド座標が格納されます。

データ型: single | double

カメラの内部パラメーター。cameraIntrinsics オブジェクトとして指定します。

LiDAR からカメラへの剛体変換。rigidtform3d オブジェクトとして指定します。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。

例: ImageSize=[250 400] は、点を投影するイメージのサイズを 250 x 400 ピクセルに設定します。

R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name引用符で囲みます。

例: 'ImageSize',[250 400] は、点を投影するイメージのサイズを 250 x 400 ピクセルに設定します。

イメージ座標系への投影対象として選択されたインデックス。正の整数のベクトルとして指定します。

データ型: single | double

点が投影されるイメージのサイズ (ピクセル単位)。[width height] の形式の 2 要素行ベクトルとして指定します。関数は、指定された寸法を使用して、カメラの視野から外れる投影された点をフィルターで除外します。

'ImageSize' 引数を指定しない場合、関数はカメラの内部パラメーター intrinsics から ImageSize プロパティを使用してカメラの視野を推定します。

メモ

指定した 'ImageSize' 引数が既定の引数よりも大きい場合、関数は既定の引数を使用します。

データ型: single | double

出力引数

すべて折りたたむ

イメージに投影された点。M 行 2 列の行列として返されます。イメージ フレームにおける点の 2 次元座標が [x y] の形式で各行に格納されます。

データ型: single | double

投影された点の点群における線形インデックス。正の整数のベクトルとして返されます。

データ型: single | double

拡張機能

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

バージョン履歴

R2020b で導入

すべて展開する