4

C++ と OpenCV を使用して単純な「レーザー ライン」スキャナーを開発しています。これまでのところ、レーザー ラインの中心を 1 ピクセルの精度で検出できるので、可能な「サブ ピクセル」関数/アルゴリズムの開始点があります。(レーザーラインの幅は約 15 ~ 20 ピクセルです)

今、これをサブピクセルの精度に改良することに興味があります。OpenCVにはサブピクセル検出機能があることは知っていますが、私が知る限り、これらはコーナーを検出するためだけのものです。

誰か提案があれば、聞きたいです。

いくつかの情報;

  • システム: QT フレームワーク、C++、OpenCV ライブラリ

  • カメラ; モノクロ(無彩色)、赤フィルター搭載

  • 画像解像度; 2560×1920

  • 注: 1 つの画像のみがレーザー ラインに対して分析されます。

4

1 に答える 1

9

良い結果を得るために使用した基本的な方法が 2 つあります。

  • 簡単: 1 つのフレームで、しきい値を設定し、レーザー ストライプの画像を含む領域を特定します。次に、放物線を生のピクセル強度に小さな間隔で当てはめます (どれだけ焦点が合っているかに応じて 5 ~ 7 ピクセル)。 、各画像行で。外れ値が発生する可能性が高いため、フィッティング ルーチンにはロバスト化機能が必要です。たとえば、鏡面反射が著しいシーン領域の近くなどです。

  • カメラのフレームレートが十分に高い (またはビームの動きが十分に遅い) 場合は、より難しくなりますが、より正確になります: Curless の時空分析.

「サブピクセル レーザー フィッティング」で検索すると、さらに最近の結果がいくつか表示されます。

実用面では、彩度に細心の注意を払ってください。ビームが物体表面の最も明るい部分に当たった場合でも、センサーが飽和しないように露出時間 (またはレンズの開口部) を設定する必要があります。信号がサチュレーションによってクリッピングされた領域でピークを探すことは、明らかに無意味です。

焦点合わせ (および被写界深度) も注意が必要な領域です。物体表面でのビームの像がぼやけていると、偏ったピークが生じます。

于 2013-05-01T14:54:13.300 に答える