フレーム間差分法の原理・特徴・計算式

フレーム間差分法による移動物体の検出原理や特徴、計算式についてまとめました。

フレーム間差分法の原理・アルゴリズム

フレーム間差分法は、移動物体の検出方法の1つです。連続する画像の差分から動体を検出することができます。
この方法の大きな特徴としては、背景差分法と違って背景画像(モデル)を用意する必要がない点です。

アルゴリズムの流れは次の通りです。

①連続する3枚の画像I_1, I_2,I_3を用意します。

②画像I_1I_2I_2I_3それぞれの差分の絶対値を計算し、差分画像を2枚(I_{d1}, I_{d2})作ります。

(1)   \begin{eqnarray*} I_{d1}(x,y)=|I_1(x,y)-I_2(x,y)|\\ I_{d2}(x,y)=|I_2(x,y)-I_3(x,y)| \end{eqnarray*}

③2枚の差分画像I_{d1}, I_{d2}の論理積を計算し、論理積画像I_aを作成します。

(2)   \begin{eqnarray*} I_a(x,y)=I_{d1}(x,y)\land I_{d2}(x,y) \end{eqnarray*}

④論理積画像I_aに二値化処理を行います。
そして、背景(黒色)と前景(白色)に分けたマスク画像(I_m)を作成します。

(3)   \begin{eqnarray*} I_m(x,y)= \left{ \begin{array}{r@{\,}c@{\,}r@{\,}c@{\,}r@{\;\leq\;}r} 255 \hspace{15pt}  (I_a(x,y)>T)\\ 0 \hspace{15pt} (I_a(x,y)\leq T) \end{array}% \right. \end{eqnarray*}


これで移動物体の領域を取り出すことができました。
あとは必要に応じて膨張収縮化フィルタをかけたり、マスク画像を使って元画像から前景部分の画素を取り出したりします。
ただし、前景部分全てを取り出せるわけではないため、一般的には移動物体がカメラの前を通過したかどうかの判定に使います。
例えば、「マスク画像にある白色の画素数が500個以上なら不審な物体が通過した」と判定したりします。

関連ページ

Python版OpenCVによるフレーム間差分法の実装例を以下ページで解説しています。

404 NOT FOUND | アルゴリズム速報

その他の画像処理アルゴリズムについては、以下ページで解説しています。

【画像処理入門】アルゴリズム&プログラミング
この記事では、画像処理における基本的なアルゴリズムとその実装例(プログラム)についてまとめました。

コメント