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

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

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

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

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

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

②画像$I_1$と$I_2$、$I_2$と$I_3$それぞれの差分の絶対値を計算し、差分画像を2枚($I_{d1}, I_{d2}$)作ります。
$$ \begin{aligned} 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{aligned} $$

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

$$ I_a(x,y)=I_{d1}(x,y)\land I_{d2}(x,y) $$

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

$$ I_m(x,y)= \begin{cases} 255 & (I_a(x,y) > T) \\ 0 & (I_a(x,y) \leq T) \end{cases} $$

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

関連ページ

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

429 Too Many Requests

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

429 Too Many Requests
記事の監修者
西住技研

在学中はシステム制御理論や画像処理、機械学習を専攻分野として研究していました。就職後は、プログラミング(Python)を活用したデータ分析や作業自動化に取り組み、現在に至ります。そこで得たノウハウをブログで発信しています。
⇓YoutubeやX(旧Twitter)でも情報発信中です

西住技研をフォローする
画像処理

コメント