レーザーライン抽出
カメラセンサによって捕捉された物体のプロファイルのシーケンスから深度マップを作成するためには、レーザライン抽出(LLE)アルゴリズムが必要です。
LLEアルゴリズムの目的は、ユーザ定義の関心領域(ROI)内のセンサフレームの各列の垂直プロファイルに沿ったライン位置を測定することです。
オブジェクト位置のすべてのステップについて、検出はフレームの各列を個別に分析し、グレー値として格納された出力位置の行を生成します。
下の図は、深度マップの生成を示しています。
ELaserLineExtractorクラスは、ELaserLineExtractorでレーザーライン抽出機能を提供します。これは、レーザーラインを抽出するためのいくつかのアルゴリズムを実装しています(詳細については以下を参照してください)。
□ | 最大検出は最大強度のピクセル位置を戻します。最速の方法ですが、サブピクセルの精度はサポートしていません。 |
□ | ピーク検出手法は、極大値を検出します。いくつかの最大値が検出された場合、強度の最も高い値が戻されます。位置はサブピクセル精度で戻ります。 |
□ | 重心 アルゴリズムは、レーザーラインが数ピクセルにわたって広がっている場合に適しています。位置はサブピクセル精度で戻ります。 |
低い強度のピクセルを除外するための閾値を設定することもできます。
レーザーライン抽出アルゴリズムにより戻されるライン位置は、関心領域の底部に関連しています。つまり、深度マップ内の値は0(ROIの底部)からROIの高さまでの範囲になります。
レーザーライン抽出メソッド
最大検出
最大検出アルゴリズムは、ROI列内の全てのピクセルを分析して、最大値を有するものを決定します。下の図は、特定のROI列のレーザーライン位置を示しています。
ROIプロファイルでの最大検出
処理チェーンに含めることもお勧めします。
□ | 画像の高周波変動を低減するためのローパスフィルタ。 |
□ | センサーからバックグラウンドノイズを除去するためのしきい値。 |
ピーク検出
ピーク検出アルゴリズムは、一次導関数の離散単純化に依存しています。
f '(x)はxに沿って特定のf(x)の傾きを出力します。
f(x)とf '(x)プロット
2点形式の直線方程式に基づいて、f ’(x)が信号を変化させる位置を検出することによって、直線位置を計算します。
ここでは、(x1, y1)と(x2, y2)はx2≠ x1をもった直線上の2つの点で、次の式y = 0が得られます。
重心
重心(CoG)法は、画像オブジェクトの重心を計算するアルゴリズムを使用します。「平面図形の重心」としても知られるCoGは、次の式で求められます。
ここでは、と
はCoGの座標で、aはx軸とy軸に沿ったピクセル値です。
ROIプロファイル上の重心
ローパスリニアフィルタ
必要に応じて、画像のノイズおよび高周波数を低減するために、ライン抽出の前にローパスリニアフィルタを適用することができます。
ローパスリニアフィルタは、1x3スライディングウィンドウにコンボリューション演算子を適用します。コンボリューションカーネルの3つの要素(A、BおよびC)は構成可能であり、正の整数を受け入れます。以下の図は、ROI内のコンボリューションカーネル要素の配置を示しています。
ローパスフィルタは、ELaserLineExtractor::SetEnableSmoothing(true/false)
. Parameters A, B and C are set with ELaserLineExtractor::SetSmoothingParameters(A, B, C)
メソッドを用いたレーザ線抽出メソッドのいずれかに対して作動させることができます。