コンテンツにスキップ
ステージングサーバー
開発サーバー

測定結果の処理 (Stereo ace)#

このトピックでは、Basler Stereo aceカメラの測定結果を処理する方法について説明します。

概要#

Basler Stereo aceカメラは、整流化されたステレオ画像ペアを使用して、視差、エラー、および信頼度画像を計算します。

整流化の後、オブジェクト上の点が左右の画像の両方で必ず同じ行に投影されるようになります。ただし、右画像でその点が投影される列は常に左側、つまり、左画像でのその点の列と同じかそれよりも小さくなります。視差は、左右の画像における列の差であり、カメラからオブジェクト点までの深度または距離を表します。視差画像には、左カメラ画像の全ピクセルの視差値が格納されます。視差が大きいほど、オブジェクト点は近くなります。視差が0の場合、オブジェクト点の投影が同じ画像列にあり、オブジェクト点が無限遠にあることを意味します。

視差の信頼性の高い計算を妨げる要因がいくつかあります。

  • オクルージョン: オクルージョンとは、右カメラから見えないオブジェクトの左側の領域のことです。視界から「隠れている」ため、視差を特定できません。
  • テクスチャの欠如: Stereo aceのプロジェクターを使用すると、極端な場合(光をまったく反射しない完全な黒色のオブジェクトなど)を除き、テクスチャを作成できます。

視差を特定できないピクセルには0の視差値が割り当てられ、無効としてマークされます。無効な視差測定値と、無限遠にあるオブジェクトの視差値0を区別するために、後者の視差値は0より大きい最小の可能な視差値に設定されます。

視差値を計算するために、ステレオマッチングアルゴリズムは左右のカメラ画像内で対応するオブジェクト点を検出する必要があります。これらは、シーン内の同じオブジェクト点を表す点です。ステレオマッチングには、Basler Stereo aceはSGM(セミグローバルマッチング)を使用します。

深度画像とポイントクラウドの計算#

視差画像には16ビットの符号なし整数値が含まれています。視差値をピクセル単位で取得するには、これらの値に Scan3dCoordinateScale パラメータで指定されたスケール値を乗算する必要があります d 。視差値から3Dオブジェクト座標を計算するには、焦点距離、ベースライン、および主点が必要です。これらのパラメータは Scan3dFocalLength, Scan3dBaseline, Scan3dPrincipalPointUおよび Scan3dPrincipalPointV 機能で使用可能です。焦点距離と主点は、選択したコンポーネントの画像解像度によって異なります。これらの値がわかっていれば、ピクセル座標と視差をカメラ座標系の3Dオブジェクト座標に変換できます。

情報

読み取る前に Scan3dFocalLength, Scan3dBaseline, Scan3dPrincipalPointUおよび Scan3dPrincipalPointV、これらの値はコンポーネントによって異なるため、 ComponentSelector パラメータを Disparity を設定する必要があります。

d16ik が視差画像の列 i および行 k における16ビット視差値であると仮定すると、ピクセル単位の浮動小数点視差dik は次の式で与えられます。

$$ d_{ik}=d16_{ik} \cdot \mathrm{Scan3dCoordinateScale} $$

メーター単位の3D再構成は、次のパラメータを使用して表すことができます。

$$ P_x=\left(i+0.5-\mathrm{Scan3dPrincipalPointU}\right) \frac{\mathrm{Scan3dBaseline}}{d_{ik}}\ $$

$$ P_y=\left(k+0.5-\mathrm{Scan3dPrincipalPointV}\right) \frac{\mathrm{Scan3dBaseline}}{d_{ik}}\ $$

$$ P_z=\mathrm{Scan3dFocalLength} \frac{\mathrm{Scan3dBaseline}}{d_{ik}} $$

ディスパリティ画像から計算されたすべてのオブジェクトポイントのセットによりポイントクラウドが生成され、これを3Dモデリングアプリケーションに使用できます。ディスパリティ画像は、各ピクセルのディスパリティ値をPzの値に置き換えることで、デプス画像に変換されます。

ヒント

パラメータを直接読み取る代わりに、チャンクデータを使用できます。これにより、3D計算に必要な情報がすべての画像に追加されます。 ChunkScan3dCoordinateScale, ChunkScan3dFocalLength, ChunkScan3dBaseline, ChunkScan3dPrincipalPointUおよび ChunkScan3dPrincipalPointV チャンクパラメータ。チャンクデータを有効にするには、以下を設定します。 ChunkModeActive パラメータを trueこれらのチャンクデータを読み取る前に、以下を設定する必要があります。 ChunkComponentSelector パラメータを Disparity.

距離の計算#

ある点の座標が与えられた場合、 (x,y,z) mm単位でのその点からカメラの光学中心までの距離は、次の式を使用して計算できます。

$$ d = sqrt( x * x + y * y + z * z ) $$