メインコンテンツ

projectLidarPointsOnImage

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

説明

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 ピクセルに設定します。

すべて折りたたむ

同期されたイメージと点群のペア、カメラの内部パラメーター、および LiDAR からカメラへの変換を含む MAT ファイルを読み込みます。

ld  = load("sampleColoredPtCloud.mat");

イメージと点群データを抽出します。

I = ld.I;
ptCloud = ld.ptCloud;

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

ptCloud = pcdownsample(ptCloud,"gridNearest",0.5);

イメージと点群データを可視化します。

figure
subplot(1,2,1)
imshow(I)
title("Image")

subplot(1,2,2)
pcshow(ptCloud)
title("Point Cloud")

Figure contains 2 axes objects. Axes object 1 with title Point Cloud contains an object of type scatter. Hidden axes object 2 with title Image contains an object of type image.

カメラの内部パラメーターと、LiDAR センサーからカメラへの変換を取得します。

intrinsics = ld.intrinsics;
lidarToCameraTform = ld.lidarToCameraTform;

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

imPts = projectLidarPointsOnImage(ptCloud,intrinsics,lidarToCameraTform);

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

figure
imshow(I)
hold on
plot(imPts(:,1),imPts(:,2),".")

Figure contains an axes object. The hidden 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 の配列を指定する場合、MN はそれぞれオーガナイズド点群の行と列の数を表します。配列の各チャネルに、その点の 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++ コードを生成します。

GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。

バージョン履歴

R2020b で導入

すべて展開する