2つのフレームの比較を通じて動きを決定するアルゴリズム

こんにちは、harazhiteli。

画像処理のベストプラクティスを共有したいと思います。 最近、私は「スマートホーム」用のホームサーバーを作成し、ビデオ監視から始めました。

タスクはそれほど簡単ではありませんでした。 すべてのビデオ監視については、(誰かが興味を持っている場合)個別に記述します。次に、「2つのフレームの比較による動きを決定するアルゴリズム」というトピックに触れたいと思います。

このアルゴリズムは、カメラからのビデオの記録を有効(無効)にするために必要です。

ネット上でこのトピックに関する情報はあまりありません。 元のアルゴリズムは自分で発明しました(非常に単純です)。記事「ビデオ画像の影を検出するアルゴリズム」は、改善に役立ちました

この記事では、アルゴリズムについてのみ説明します(プログラミング言語の例なし)。 アルゴリズム全体はサイクルに基づいており、すべてが基本であり、お気に入りのプログラミング言語で簡単に再作成できます。

アルゴリズムの説明に、「ライブ」テーブルと発明されたテーブルの両方の例を示します(理解のため)。



基本的なアルゴリズム





このアルゴリズムの利点:プログラミングの容易さ、低リソース消費、優れた感度(わずかな動きを見逃しません)。

唯一の欠点があります-照明の変化でトリガーします。 アルゴリズム全体が色分析に基づいているため、曇りの天気では、雲の後ろから太陽が出て部屋が非常に明るくなることを簡単に監視できます。 この時点で、画像全体のブロックが処理されています。 アルゴリズムのステップ4で、過大評価された「デルタ」を持つマスクを示しました。 実際には、動作中のデルタを使用したこの例(p。1を参照)では、マスクはフレーム全体をほぼ閉じます。



(アルゴリズムのパラグラフ4のように)デルタが過大評価されている場合、これは感度に大きく影響し、モーションセンサーは薄暗いオブジェクトで動作しなくなる可能性があります。



したがって、私は問題の解決策を探し始め、喜びのためにハブにヒントを見つけました(本文の最初のリンクを参照)。 アルゴリズムがオブジェクト(透明ではない)でのみ動作するようにしたかったのですが、女の子からの透明な影と壁や床の光がモーションセンサーを動作させませんでした。



改善されたアルゴリズム







MaskFilterフィルターでMoveMaskをフィルター処理するこのアルゴリズムでは、シャドウまたはグレアによってトリガーされるほとんどのブロックをMoveMaskから削除します。 センサーの誤動作を2倍以上減らすことができます。

欠点のうち、膨大な数の「デルタ」と、アルゴリズムのプログラミングと調整の両方の複雑さ。





基本的なアルゴリズムと改善されたアルゴリズム。

この例では、壁と窓の影、まぶしさは完全に除去されました。 床のまぶしさは「やり過ぎ」であり、消えませんでした。 しかし、おそらく、「デルタ」の1つを修正したこの部屋では、床からのフレアを無視するようにフィルターを構成できます。 異なる部屋-アルゴリズムの異なる調整。



他にどのようにアルゴリズムを改善できますか?



RGBをHSVに変換し、輝度チャンネルなしで動作させようとする場合、アルゴリズムの精度を上げることができます。 手はまだチェックしていません。



私の経験とこのアルゴリズムの説明が誰かに役立つことを願っています。 そして、補足、修正、提案があれば-聞いてうれしいです。



All Articles