4

私はOPENCVを初めて使用するので、ここに欠けている簡単なものがある場合はご容赦ください。

次の前提で、車両の速度を連続的に出力できるカメラベースのシステムを構築しようとしています。2.速度は30KM /時を超えません

表面パターンの変位を検出する光学式マウスのコンセプトから始めたいと思っていました。ただし、車両がフレームに入り始めたときの背景をどのように処理するかについては不明です。

私が試してみたいと思っていた方法が 2 つありますが、さらなる情報を探しています。

  1. 車両がフレームに入り、背景から離れていることを検出します。
  2. cvGoodFeaturesToTrack を使用して、車両上のポイントを見つけます。
  3. 次のフレームでポイントを追跡します。& オプティカル フローの Lucas_Kanade Pyramid 関数を使用して、水平速度を計算します。
  4. 繰り返す

訂正・修正をお願いします。また、ここで使用する最も正しい関数がわからないため、この手順を効率的にコーディングするために、より経験豊富なメンバーにお願いします。

前もって感謝します。

4

1 に答える 1

6

20 fps から 30 fps の単純なカメラを使用し、カメラが道路に対して垂直に、道路から離れて配置されていることを願っています... オブジェクト、つまり、あなたの車はイメージ プレーンで 8 ms-1 の最大速度を持っています.. .使用しているレンズを使用して、イメージ プレーン内の車の速度を計算します...

  ( speed in object plane / distance of camera from road ) = ( speed in image plane / focal length )

各ピクセルの測定値がわかっている場合は、1秒あたりのピクセル数を取得する必要があります...

ステップ...

  1. フレーム微分を使用できます...つまり、前のフレームから現在のフレームを減算し、絶対差をとります...差をしきい値にします...これにより、移動中の車が背景からセグメント化されます...このセグメントはすべて移動していることを覚えておいてくださいオブジェクト...したがって、移動する人ではなく車が必要な場合は、高さと幅の比率である形状特性を使用できます...セグメント化された部分に長方形を合わせ、各フレームで同じ手順を実行します。そのため、各フレームで、境界ボックスの前縁の座標の記録を保持できます...車がビューに入るとき、ビューから出るまで、車が持続した時間を知ることができます...フレーム数、フレームレート、バウンディングボックスの前縁の座標を使用して速度を計算します...

  2. goodfeaturestotrack とオープン CV のオプティカル フローを使用できます...そのようにして、動きの速いオブジェクトとゆっくり動くオブジェクトを区別できます...しかし、goodfeaturestotrack が提供するポイントを更新し続けると、カメラ ビューに新しい車が表示されなくなります。更新される...各フレームでgoodfeaturestotrackによって選択されたポイントのセットの変位を記録します..それは移動オブジェクトの変位です...同じ方法で速度を計算します...速度を計算する基本的な考え方は記録することですオブジェクトがカメラの視野に留まっているフレーム数...カメラが固定されている場合、視野も固定されているため、オブジェクトをキャッチできるフレーム数が重要です...覚えておいてください....opencvのオプティカルフローは、動きの遅いオブジェクトを追跡するために機能します。または、より理論的には、特徴点(追跡するのに適した機能によって決定されます..)の変位は、アルゴリズムが機能する2つの連続するフレーム間で小さくなります...大きな変位には、アルゴリズムによる誤った予測がいくつかあります...そのため、画像平面の速度が重要です..少なくとも定性的には、それを理解する必要があります...

注: どちらの方法も単一オブジェクトの追跡用です..複数のオブジェクト追跡の場合は、いくつかの変更が必要です...ただし、どちらの方法からでも開始できます...うまくいくと思います..

于 2012-09-16T15:39:46.337 に答える