5

Webカメラのビデオフレームで堅牢な動き検出とトラッキングが必要です。背景は常に同じです。可能であれば影なしでオブジェクトの位置を特定することを目的としていますが、シャドウを除去することはそれほど緊急ではありません。私はバックグラウンドの減算と閾値処理のためのopencvアルゴリズムを試しましたが、これは背景として1つの画像にしか依存しませんが、背景が少し明るさ(またはカメラのオートフォーカス)を変えた場合、明るさや影などの変化はほとんどありません。Opencvトラッキングによる動き検出

答えて

3

トラッキングのための堅牢な方法は、世界中で開発されている幅広い研究上の利益の一部です。 非常に興味深いが幅広く開いている問題を解決する鍵があります。

まず、明るさが一定であると仮定しています(したがって、求めるものは達成するのが難しい)。例えば:

  • ルーカス - カナデ
  • ホーンシュンク
  • ブロックマッチング

を追跡するために広く使用されているが、輝度一定となります。

その後、他の興味深いものは... meanshiftまたはCAMSHIFT追跡、しかし、あなたは堅牢性のために、あなたのニーズに合わせて一定のしきい値に応じて計算された逆投影を使用することができますが...フォローする投影を必要とすることができ

Julien、

3

OpenCVでしきい値処理を試してみると、RGB(赤、緑、青)またはHSV(色相、彩度、値)のカラーフォーマットでこれを行いますか?個人的な経験から、私はHSVエンコーディングが、閾値処理のためにOpenCVと一緒に使用され、ブロブ位置を識別するためにcvBlobsLibと共に使用される場合、ビデオフッテージ内のカラーオブジェクトを追跡するためにはるかに優れていることがわかる。

HSVは、色から色(「色相」)を検出するために単一の番号を使用するという利点があるので、簡単です。より暗い色合い。 (色の量と色の明るさは、それぞれ「彩度」と「値」パラメータによって処理されます)。

Iしきい値HSV基準画像( 'imgHSV')cvInRange()OpenCVのAPIへの呼び出しを使用してバイナリ(白黒)画像取得する:、2上記の例で

cvInRangeS(imgHSV, 
      cvScalar(104, 178, 70 ), 
      cvScalar(130, 240, 124), 
      imgThresh); 

をcvScalarパラメータは、色が青色である色相を表すHSV値の下限と上限です。私自身の実験では、発生した色相/彩度/輝度値の種類を追跡し、観察することに興味があった対象物のスクリーンショットをつかんで、適切な最大/最小値を得ることができました。

コードサンプルを含む詳細な説明は、blog postingにあります。

1

アンドリアーノ私はラインコード検索動作ウェル 幸運

frameDelta = cv2.absdiff(firstFrame, gray) 
thresh = cv2.threshold(frameDelta, 25, 255, cv2.THRESH_BINARY)[1] 
thresh = cv2.dilate(thresh, None, iterations=2) 
(cnts, _) = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, 
cv2.CHAIN_APPROX_SIMPLE) 
同様に静止画像を使用し、私は、その後のクールチュートリアル http://www.pyimagesearch.com/2015/05/25/basic-motion-detection-and-tracking-with-python-and-opencv/

を有し、良好な実験試験 https://youtu.be/HJBOOZVefXA

を有します