ねほり.com

何もないから何かみつかる

opencvでwebカメラ動画の背景差分(MOG, MOG2, GMG, KNN, CNT, LSBP, GSOC)

   

社内文化祭の為に、あるものを作りました。

その中の一つの技術要素として、OpenCVで背景差分を使いました。

少し前の状態の背景画像と、新たに何かが入ってきた状態の2つの画像の差を取ることで物体検出する手法を背景差分法といいます。

事前に、下記のインストールが必要です。

サンプルコード

で、各背景差分の手法で「手を撮影して5秒動かなかった場合の背景差分」の結果を載せておきます。

cv2.bgsegm.createBackgroundSubtractorCNT()

低スペックな計算機でもほかのアルゴリズムより高速に処理ができる。CNTという名前は「CouNT」の省略。

cv2.bgsegm.createBackgroundSubtractorGSOC()

LSBP特徴を使ってる。ノイズ除去とか穴埋めといった後処理をしている。

cv2.bgsegm.createBackgroundSubtractorLSBP()

Local SVG Binary Pattern。局所的なノイズや隣接画素が類似しているような場合にもロバストにするようにSVD(特異値分解)を使った特徴量で背景差分を行っている。

cv2.createBackgroundSubtractorKNN()

K近傍方に基づく背景差分。前景の画素数が少ない場合は効率が良い。

cv2.bgsegm.createBackgroundSubtractorMOG()

混合正規分布(Gaussian Mixture)を基にした前景・背景の領域分割アルゴリズム。可能性の高い背景色は長く留まり、より静的になる。

cv2.createBackgroundSubtractorMOG2()

混合正規分布を基にした前景・背景の領域分割アルゴリズム。照明の変化などの動的なシーンに対する適応力が優れている。

cv2.bgsegm.createBackgroundSubtractorGMG()

統計的な背景の推定法と画素単位でのベイス推定に基づく領域分割を組み合わせたアルゴリズム。


 

 

こんなの、背景差分じゃないから!!

 

 

フレーム差分じゃん・・・・・。
 

システムトレードの実装ばかりしていて、文化祭向けの基礎技術調査が少なすぎました。 

カメラでなくセンサ使うとか、色々と他の方法あったよね・・・。

 

この状態で次に何をするか?というと、

  • cv2.findContours(cv2.RETR_EXTERNAL)メソッドで、外郭を抽出する
  • cv2.contourArea()メソッドで、輪郭エリアを得る
  • cv2.boundingRect()メソッドで、外接矩形(x座標とy座標、幅、高さ)を得る

サンプルソースコードを載せます。

処理を軽くするために、何フレームかをスキップしています。

また、背景差分の元データも一定期間後に更新させています。

おまけ

上のソースコードは、どこかのサイトのフレーム間差分のソースコードを修正しました。

フレーム間差分の方が矩形の追従率は高いです。

ただし、物体が動かなくなる場合には使えません。

 - 2019年(社会人15年), テクノロジー, 調査結果

  関連記事

NW-X1060のフォルダ再生が公式対応された

2010年02月28日(日) NW-X1060フォルダ再生対応 昨年「MP3のタ …

おみくじの順序を調べてみた

January 15, 2005 探偵ファイルがよく調べずに、「おみくじ」の順序 …

機械学習を使った株価予測(ファンダメンタルズ指標導入でAUC=0.70超え)

株式投資は、予測するものではなくルールに沿って選ぶものです。 その際に、選んだ銘 …

Kaggle の Titanic Prediction Competition でクラス分類(scikit-learn編)

統計学や人工知能(AI)を駆使してデータを分析し、課題の発見や解決に導く「データ …

Bootswatchによる2rowデザイン&軽量化の検討

この2ヶ月間で「ランキング出力のOAuth 2.0対応」「Yahooコメントラン …

次ステージ(フォワードテスト)に進むSSレア手法完成(protraシストレ)

日本株式のシストレでは、順張りはパフォーマンスが低いと言われ、 多くのシステムト …

個人サイト開設1999年より10周年経過

2009年05月14日(木) 個人サイト開設 10周年の御礼! 1999年 5月 …

CSVを読み込み外部データを使えるようにする方法(システムトレード)

「イザナミ」「システムトレードの達人」が羨ましいなぁ・・・と思っている機能の一つ …

Kaggle の Titanic Prediction Competition でクラス分類(Keras Functional API編)

データサイエンティストの転職サイトを見ると年収 600万 ~ 1,200万円ぐら …

6月中旬の検見川浜突堤・稲毛海浜公園の釣果は・・・?潮干狩りは?

以前稲毛周辺の釣り情報をまとめましたが、とりあえず現地に行ってみないと釣れている …