以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の1つである。
[第1の実施形態]
先ず、本実施形態に係る画像処理装置の機能構成例について、図2のブロック図を用いて説明する。なお、本実施形態では、図2に示した機能構成を示す画像処理装置を用いるが、以下に説明する各処理を実現可能な構成であれば、図2に示した構成は適宜変形若しくは変更可能であり、本実施形態に適用可能な構成は、図2に示した構成に限るものではない。
映像入力部201は、各フレームの画像をフレーム画像として入力し、該入力したフレーム画像を後段の特徴量抽出部202に送出する。フレーム画像の取得元については特定の取得元に限るものではなく、適当なメモリに格納されている動画像から順次各フレームのフレーム画像を読み出しても良いし、動画像を撮像可能な撮像装置から順次送出される各フレームのフレーム画像を取得しても良い。特徴量抽出部202は、映像入力部201から受けたフレーム画像を構成する各矩形領域について、該矩形領域の画像特徴量を取得する。
比較部203は、特徴量抽出部202が矩形領域ごとに取得した画像特徴量と、背景モデル記憶部204に格納されている背景モデルと、を比較する。背景モデル記憶部204は、フレーム画像中の各矩形領域の状態を画像特徴量で代表させた背景モデルを保持している。
背景モデル更新部205は、比較部203による比較の結果に応じて、背景モデル記憶部204内の背景モデルを更新する処理を行う。前景背景判定部206は、比較部203による比較の結果に応じて、フレーム画像中の各矩形領域が、前景を構成する矩形領域である前景矩形領域か、それとも背景を構成する矩形領域である背景矩形領域か、を判定する。
シーンチェンジ検知部207は、シーンチェンジの有無を検知する。背景化時間閾値変更部208は、シーンチェンジ検知部207による検知結果に応じて、前景背景判定部206が上記の判定を行うために用いる閾値の制御を行う。物体領域出力部209は、フレーム画像中に写っている物体の領域を示す領域情報と、該物体が写っている期間長と、を含む物体領域情報を出力する。
次に、本実施形態に係る画像処理装置が行う処理について、同処理のフローチャートを示す図3を用いて説明する。ステップS301では、映像入力部201は、1フレーム分のフレーム画像fを取得し、該取得したフレーム画像fを後段の特徴量抽出部202に対して送出する。
ステップS302では、特徴量抽出部202は、映像入力部201から受けたフレーム画像fを構成する各矩形領域の画像特徴量を取得する。そして比較部203は、特徴量抽出部202が矩形領域ごとに取得した画像特徴量と、背景モデル記憶部204に格納されている背景モデルと、を比較する。ステップS302における処理の詳細について、図4のフローチャートを用いて説明する。
ステップS401では、特徴量抽出部202は、映像入力部201から受けたフレーム画像f中の矩形領域の画像特徴量を取得する。ステップS401における処理を最初に行う場合は、フレーム画像fにおいて左上隅の位置にある矩形領域の画像特徴量を取得し、2回目のステップS401では、1つ右隣の矩形領域の画像特徴量を取得する。このように、フレーム画像fを構成する各矩形領域を左上隅から右下隅までラスタースキャン順に参照し、参照した矩形領域の画像特徴量を取得する。なお、参照する順はラスタースキャン順以外の順でも良い。
本実施形態では、矩形領域を1画素分の矩形領域とし、画像特徴量を画素値(輝度値)とする。然るに本実施形態では、ステップS401では、フレーム画像f中の画素位置(x、y)における画素の画素値を取得することになる(0≦x≦フレーム画像fのx方向の画素数−1、0≦y≦フレーム画像fのy方向の画素数−1)。
ステップS401における処理を最初に行う場合は、フレーム画像fにおいて左上隅の画素位置(0,0)にある画素の画素値を取得し、2回目のステップS401では、1つ右隣の画素位置(x+1,y)の画素の画素値を取得する。このように、フレーム画像fを構成する各画素を左上隅から右下隅までラスタースキャン順に参照し、参照した画素の画素値を取得する。上記の通り、参照する順はラスタースキャン順以外の順でも良い。
なお、矩形領域が複数画素(例えば8画素×8画素)から成る矩形画素ブロックである場合、画像特徴量は、この矩形画素ブロックに含まれる画素の画素値の平均値であっても良い。また、画像特徴量には、DCT係数を用いても良い。DCT係数とは、画像を離散コサイン変換(Discrete Cosine Transform)した結果である。然るに、フレーム画像がJPEG形式で圧縮符号化されている場合は、既に画像圧縮時に特徴量が抽出されていることになる。従ってこの場合は、JPEG形式のフレーム画像よりDCT係数を直接取り出し、これを画像特徴量として使用するようにしてもよい。本実施形態では、フレーム画像の左上墨の画素位置を開始点とし、以降、左から右へ、行ごとに下へ(ラスタスキャン順に)移動しながら以降の処理を行うものとする。ステップS402では、比較部203は、背景モデル記憶部204内に格納されている背景モデルから、画素位置(x、y)に対応する背景モデル情報を読み出す。
ここで、背景モデルの構成例について、図5を用いて説明する。図5に示す如く、背景モデルは、背景モデル管理情報と、背景モデル情報と、を含む。背景モデル管理情報は、フレーム画像中の各画素位置(座標)に対して、該画素位置に対応する背景モデル情報へのポインタが登録されたテーブル情報である。なお、矩形領域を矩形画素ブロックとした場合、背景モデル管理情報は、フレーム画像中の各矩形画素ブロックに対して、該矩形画素ブロックに対応する背景モデル情報へのポインタが登録されたテーブル情報となる。
背景モデル情報は、状態番号、画像特徴量、作成時刻、の各情報を含む。
状態番号とは、1画素に対して登録されるそれぞれの画像特徴量(本実施形態では画素値)を識別するためのもので、同一の画像特徴量には同じ状態番号が発行され、異なる画像特徴量には異なる状態番号が発行される。例えば、青い壁の前に赤い車が走ってきて静止すると、赤い車が静止した領域に含まれる画素については、青い特徴量の状態と、赤い特徴量の二つの状態が保持されることになる。
図5では、最初に発行される状態番号は「1」としている。そのため、画素位置(0,0)について最初に登録された画像特徴量「100」に対しては状態番号「1」が発行されている。また、該画像特徴量「100」の取得もとのフレーム画像のフレーム番号(作成時刻)は「0」となっている。そして、状態番号「1」、画像特徴量「100」、作成時刻「0」はセットになって1200番地に格納されている。なお、作成時刻については、背景モデルにこれらの情報(若しくは画像特徴量)を登録した時刻であっても良い。
そして、図5の場合、画素位置(0,0)に対しては番地1200へのポインタが対応づけられており、画素位置(1,0)に対しては番地1202へのポインタが対応づけられている。然るに、この場合、画素位置(0,0)に対しては番地1200及び番地1201に登録されている背景モデル情報が対応づけられていることになる。即ち、1つの画素位置に対応する背景モデル情報は、連続した番地に登録することが好ましい。
よって、ステップS402では、次のような処理を行うことになる。即ち、背景モデル管理情報において、画素位置(x、y)に対応するポインタが示す番地から、画素位置(x、y)の1つ下の段に登録されている画素位置に対応するポインタが示す番地から1を引いた番地、までの各番地に対応する背景モデル情報を読み出す。
なお、「画素位置(x、y)の1つ下の段に登録されている画素位置」とは、図5の背景モデルの構成に限った表現であり、以下ではこの表現を用いる。しかし、画素位置A1,A2,A3,…の順に該画素位置に対応するポインタを管理している場合、「画素位置A1の1つ下の段に登録されている画素位置」は、画素位置A2に相当するので、この表現は、画素位置の管理順に応じて解釈すればよい。
ステップS403では、比較部203は、ステップS402で読み出した背景モデル情報のうち1つを選択背景モデル情報として選択する。そして比較部203は、この選択背景モデル情報中の画素値を取得する。
ステップS404では、比較部203は、ステップS401で取得した画素値と、ステップS403で取得した画素値と、の差分を求める。差分を求める方法については様々な方法が考えられ、特定の方法を使用することに限るものではない。例えば、単にそれぞれの画素値の差の絶対値を差分として求めても良いし。それぞれの画素値の差の二乗を差分として求めても良い。そして比較部203は、この求めた差分を、ステップS403で選択した選択背景モデル情報と、関連づけて一時的に保持する。
ステップS405では、比較部203は、ステップS402で読み出した背景モデル情報の全てを選択背景モデル情報として選択したか否かを判断する。この判断の結果、全てを選択した場合は、処理はステップS407に進み、まだ選択していない背景モデル情報が残っている場合は、処理はステップS406に進む。
ステップS406では、比較部203は、まだ選択していない背景モデル情報のうち1つを選択背景モデル情報として選択し、処理はステップS404に進む。ステップS407では、比較部203は、ステップS404で求めた差分のうち最小の差分を特定する。
ステップS408では、比較部203は、ステップS407で特定した最小の差分と、予め設定されている閾値Aとの大小比較を行う。この大小比較の結果、ステップS407で特定した最小の差分が閾値Aよりも小さい場合は、処理はステップS411に進み、ステップS407で特定した最小の差分が閾値A以上である場合は、処理はステップS409に進む。
ステップS409では、比較部203は、状態番号0を発行する。なお、発行する状態番号は0に限るものではなく、適当な数値であっても良い。但し、図5に示すように、それぞれの状態に対応する状態番号と混同しないような値であることが必須である。
ステップS410では、比較部203は、フレーム画像fのフレーム番号を作成時刻として取得する。もちろん、画像処理装置内のタイマが計時している現在時刻を作成時刻として取得しても良い。
ステップS410からステップS411に処理が進んだ場合、ステップS411では、比較部203は、次のような処理を行う。即ち、ステップS409で発行した状態番号0、ステップS410で取得したフレーム番号、ステップS401で取得した画素位置(x、y)における画素の画素値、のセットを画像処理装置内の適当なメモリに格納する。
一方、ステップS408からステップS411に処理が進んだ場合、ステップS411では、比較部203は、次のような処理を行う。即ち、ステップS407で特定した最小の差分と関連づけてステップS404で保持している選択背景モデル情報、即ち、該選択背景モデル情報に含まれている状態番号、画素値、フレーム番号、のセットを画像処理装置内の適当なメモリに格納する。
ステップS412では、比較部203は、フレーム画像fを構成する全ての画素についてステップS401〜ステップS411の各ステップの処理を行ったか否かを判断する。この判断の結果、全ての画素について行った場合は、処理はステップS414に進み、まだステップS401〜ステップS411の各ステップの処理を行っていない画素が残っている場合は、処理はステップS413に進む。ステップS413では、比較部203は、参照する画素位置を1つ移動させ、移動後の画素位置について、ステップS401以降の各ステップにおける処理を行う。
ステップS414に進んだ時点で、画像処理装置内のメモリには、図7に示す如く、フレーム画像fの各画素位置に対して、状態番号、画素値、作成時刻のセットが登録されたテーブルが作成されていることになる。然るにステップS414では比較部203は、このテーブルを、比較部203による比較結果情報として、背景モデル更新部205及び前景背景判定部206に対して送出する。
なお、本画像処理装置の動作開始時は、背景モデル記憶部204には背景モデルが格納されていない。この場合、差分の値として、該値が取り得る最大値などを設定しておく。これにより、状態番号0、フレーム画像fのフレーム番号、フレーム画像fの画素位置(x、y)における画素の画素値、のセットが登録されることになる。このように、起動時のフレーム画像によって、背景モデルの初期化ができる。
次に、ステップS303では、背景モデル更新部205は、比較部203から受けた比較結果情報(図7)を用いて、背景モデル記憶部204に格納されている背景モデルを更新する。ステップS303における処理の詳細について、図6のフローチャートを用いて説明する。
ステップS601では、背景モデル更新部205は、比較部203から送出された比較結果情報中の画素位置(x,y)に対応する状態番号を読み出す(0≦x≦フレーム画像fのx方向の画素数−1、0≦y≦フレーム画像fのy方向の画素数−1)。なお、ステップS601における処理を最初に行う場合、x=y=0である。
ステップS602では、背景モデル更新部205は、ステップS601で読み出した状態番号が0であるか否かを判断する。この判断の結果、ステップS601で読み出した状態番号が0であれば、処理はステップS605に進み、0でなければ、処理はステップS603に進む。
なお、ステップS409で0以外の状態番号kを発行したのであれば、ステップS602では、背景モデル更新部205は、ステップS601で読み出した状態番号がkであるか否かを判断することになる。
ステップS603では、背景モデル更新部205は、背景モデル管理情報を参照して、画素位置(x,y)に対応するポインタを特定する。そして該ポインタが示す番地から、「画素位置(x、y)より1段下に登録されている画素位置に対応するポインタが示す番地−1」、までの各番地に対応する背景モデル情報のうち、ステップS601で読み出した状態番号に対応する背景モデル情報を特定する。
ステップS604では、背景モデル更新部205は、ステップS603で特定した背景モデル情報中の画素値を更新する。この更新は、例えば以下の式を用いて行う。これは、照明変化などによる変化に対応するためである。
μt=(1−α)×μt-1+α×It
tはフレーム画像fのフレーム番号、μt-1は、ステップS603で特定した背景モデル情報中の画素値、Itは、フレーム画像fの画素位置(x、y)における画素の画素値、である。また、μtは、ステップS603で特定した背景モデル情報中の画素値を更新した後の画素値、αは、0<α<1を満たす実数であり、予め設定されているものとする。
一方、ステップS605では、背景モデル更新部205は、背景モデル管理情報を参照し、画素位置(x、y)より1つ下の段に登録されている画素位置に対応するポインタが示す番地から1を引いた番地に対応する背景モデル情報中の状態番号を取得する。
ステップS606では、背景モデル更新部205は、ステップS605で取得した状態番号に1を加えた状態番号を発行する。なお、本画像処理装置起動時のように初めて背景モデルへ状態を追加するときは1番を割り当てる。
ステップS607で背景モデル更新部205は背景モデル管理情報を参照し、画素位置(x、y)より1つ下の段以降の各段に登録されているポインタが示す番地に格納されている背景モデル情報を、該番地に1を加えた番地に移動させる。更に、背景モデル更新部205は、背景モデル管理情報を参照し、画素位置(x、y)より1つ下の段以降の各段に登録されているポインタが示す番地に1を加える。
ステップS608で背景モデル更新部205は、画素位置(x、y)より1つ下の段に登録されている画素位置に対応するポインタが示す番地から1を引いた番地に、次のセットを登録する。即ち、ステップS606で発行した状態番号、比較結果情報中の画素位置(x,y)に対応する画素値、作成時刻、のセットである。
ステップS609では、背景モデル更新部205は、全ての画素位置についてステップS601〜ステップS608の処理を行ったか否かを判断する。この判断の結果、全ての画素位置についてステップS601〜ステップS608の処理を行った場合、処理はステップS304に進み、まだステップS601〜ステップS608の処理を行っていない画素位置が残っている場合、処理はステップS610に進む。
ステップS610では、背景モデル更新部205は、参照する画素位置を1つ移動させ、移動後の画素位置について、ステップS601以降の各ステップにおける処理を行う。
ステップS304では、前景背景判定部206は、フレーム画像fを構成するそれぞれの画素が、前景を構成する画素、背景を構成する画素、の何れであるのかを判定する。ステップS304における処理の詳細につて、図8のフローチャートを用いて説明する。
ステップS801では、前景背景判定部206は、比較部203から送出された比較結果情報中の画素位置(x,y)に対応する作成時刻を読み出す(0≦x≦フレーム画像fのx方向の画素数−1、0≦y≦フレーム画像fのy方向の画素数−1)。なお、ステップS801における処理を最初に行う場合、x=y=0である。
ステップS802では、前景背景判定部206は、ステップS801で読み出した作成時刻と、ステップS410で取得した現在時刻(フレーム画像fのフレーム番号)との差分を継続時間(継続して存在した時間)として算出する。この算出する差分は、ある状態(特徴)が映像に出現した時刻から現在までの継続時間(現在時刻―作成時刻)であれば、他の方法で求めても良い。
ステップS803では、前景背景判定部206は、ステップS802で求めた差分と閾値B(背景化時間の閾値)との大小比較を行う。この閾値Bを、例えば、5分(30フレーム毎秒であるとすると、9000フレーム)とすると、5分の間は(静止物体を)物体(前景)として検知することが可能となる。
この大小比較の結果、ステップS802で求めた差分が閾値Bよりも大きい場合は、処理はステップS804に進み、ステップS802で求めた差分が閾値B以下である場合は、ステップS805に進む。
ステップS804では、前景背景判定部206は、前景フラグを0に設定する。一方、ステップS805では、前景背景判定部206は、前景フラグを1に設定する。なお、前景フラグの値は、前景、背景が識別できれば、如何なる値を採用しても良い。
ステップS806では、前景背景判定部206は、画素位置(x、y)、ステップS802で求めた継続時間、前景フラグの値、をセットにして、画像処理装置内の適当なメモリに格納する。
ステップS807では、前景背景判定部206は、フレーム画像fを構成する全ての画素について、ステップS801〜S806の処理を行ったか否かを判断する。この判断の結果、フレーム画像fを構成する全ての画素についてステップS801〜S806の処理を行った場合は処理はステップS809に進み、まだステップS801〜S806の処理を行っていない画素が残っている場合は処理はステップS808に進む。
ステップS808では、前景背景判定部206は、参照する画素位置を1つ移動させ、移動後の画素位置について、ステップS801以降の各ステップにおける処理を行う。
一方、ステップS809では、前景背景判定部206は、各画素位置についてステップS806で格納したセット(図9)を、前景背景情報としてシーンチェンジ検知部207及び物体領域出力部209に対して送出する。
ステップS305では、シーンチェンジ検知部207は、前景背景判定部206から受けた各画素位置の前景背景情報を用いて、シーンチェンジの有無を判断する。そしてシーンチェンジがあったと判断された場合は、処理はステップS306に進み、シーンチェンジは無かったと判断された場合は、処理はステップS307に進む。ステップS306では、背景化時間閾値変更部208は、上記の閾値Bを変更する処理を行う。ステップS305及びステップS306における処理の詳細について、図10のフローチャートを用いて説明する。
ステップS1001では、シーンチェンジ検知部207は、前景背景判定部206から送出された各画素位置の前景背景情報を取得する。ステップS1002では、シーンチェンジ検知部207は、各画素位置の前景背景情報を用いて、新しいシーンへのシーンチェンジが起こったか否かを判断する。新しいシーンとは、これまで撮影されていなかったシーンであり、つまり、背景モデルに記憶されていないシーンである。例えば、これまでずっと照明が点灯しているシーンであったとすると、照明が消灯したシーンに相当する。或いは、カメラの撮影方向が変わって、これまでと違う場所を撮影するようになった場合に相当する。
シーンチェンジとは、短時間の画面全体に渡る映像変化である。例えば、照明が点灯しているシーンから消灯したシーンとなった場合、画面全体に渡って、画素の輝度が大きい値(状態)から小さな値(状態)に変化する。新しいシーンへシーンチェンジした時は、短時間に新しい状態が背景モデルに追加されることになる。このことから、シーンチェンジの有無の判断方法には次の2つ方法が考えられる。
第1の方法は、フレーム画像に占める前景領域の割合を用いて判断する方法である。新しいシーンへのシーンチェンジが起こると、ほぼ全画素が新規に追加された状態になるため、その継続時間は短い。そのため、前景背景判定部206にて、ほぼ全画素が、前景と判定される。そこで、第1の方法では、各画素位置の前景背景情報から前景フラグの値を取得し、(前景フラグの値=1)である画素位置数(前景と判断された画素数)が規定個数(例えばフレーム画像fの画素数の70%の数)以上であれば、シーンチェンジありと判断する。
第2の方法は、前景背景情報に含まれる継続時間を用いて判断する方法である。上記の通り、新しいシーンへのシーンチェンジではほとんどの画素の継続時間は非常に短くなる。そこで、第2の方法では、各画素位置の前景背景情報から継続時間を取得する。そして、(継続時間<閾値(例えば、0.5秒(30フレーム毎秒で15フレーム))である画素位置数が規定個数(例えばフレーム画像fの画素数の70%の数)以上であれば、シーンチェンジありと判断する。
然るに、例えば、ステップS1002では、シーンチェンジ検知部207は、第1の方法を用いてシーンチェンジの有無を判断する。そしてこの判断の結果、シーンチェンジありと判断された場合は、処理はステップS1003に進み、シーンチェンジなしと判断された場合は、処理はステップS1005に進む。また、ステップS1002では、第1の方法による判断結果に、第2の方法による判断結果を加味しても良い。
ステップS1003では、背景化時間閾値変更部208は、上記の閾値Bの値を、該閾値Bが取り得る最小値として予め設定された値に変更する。これにより、前景(物体)と判定されていた領域を背景として扱えるようにする。
この閾値Bの値の制御と、前景/背景の判断と、の関係について、図11のグラフを用いて説明する。図11において横軸は時刻(フレーム番号でも良い)、縦軸は継続時間を表す。
時刻1101の時点で出現した物体に含まれる画素の継続時間は、物体が静止している限り時間の経過と共に増加するので、時間の経過に対する該画素の継続時間の変化は、傾き1の直線1102で表される。
水平の直線1103は、背景化時間の閾値Bを表している。上記のように、ステップS803では、閾値Bよりも長い継続時間を有する画素が背景を構成する画素と判定される。従って、直線1103の上側にあるときには背景と判定され、下側にあるときは前景と判定される。つまり、時刻1101から、直線1102と直線1103との交点となる時刻1104、までは、直線1102で表現される状態は、前景と判定されることになる。
図12は、図11と同様に横軸は時刻、縦軸は継続時間を表すグラフを示す。時刻1201の時点で照明が消灯されときに生じた変化領域中の画素の継続時間の変化は、直線1202で表現される。このとき時刻1203において、新しいシーンへのシーンチェンジが検知され(ステップS1002)、背景化時間の閾値Bが最小値に設定(ステップS1003)されたとする。これにより、時刻1203以降は常に直線1202は背景化時間の閾値B(1206)よりも上側となる。つまり、背景化時間の閾値Bよりも、継続時間の方が長くなる。よって、照明が消灯されたときに生じた状態は、背景と判定されることになる。
なお、本実施形態では、変更された背景化時間の閾値Bは、次のフレーム画像において使用されるため、全面の誤検知は少なくとも1フレームだけ生じることになる。これを避けるためには、ステップS1002の判定で新しいシーンへのシーンチェンジと判定され、閾値Bを最小値に変更した時点で、再度、前景背景判定処理(ステップS304)を繰り返すようにすればよい。
ステップS1004では、背景化時間閾値変更部208は、閾値変更フラグの値を、閾値Bを通常値(規定の最大値)から変更している旨を示す値に設定する。本実施形態では、閾値Bを通常値から変更している旨を示す値を「ON」、閾値Bの値が通常値である旨を示す値を「OFF」とする。
ステップS1005では、シーンチェンジ検知部207は、既存のシーンへのシーンチェンジがあったか否かを判断する。本ステップにおける処理の詳細については後述する。この判断の結果、既存のシーンへのシーンチェンジがあった場合は、処理はステップS1010に進み、既存のシーンへのシーンチェンジはなかった場合は、処理はステップS1006に進む。ステップS1010,S1011における処理については後述する。
ステップS1006では、背景化時間閾値変更部208は、閾値変更フラグの値が「ON」であるか否かを判断する。この判断の結果、閾値変更フラグの値が「ON」であれば処理はステップS1007に進み、閾値変更フラグの値が「OFF」であれば処理はステップS1008に進む。
ステップS1007では、背景化時間閾値変更部208は、閾値Bの値を規定量だけ増加させる。増加させる量は常に一定でも良いし、規定の規則(例えば規定の関数)に従って変化させても良い。
ステップS1008では、背景化時間閾値変更部208は、閾値Bの値が上記の通常値(固定値)に達したか否かを判断する。この判断の結果、達した場合は、処理はステップS1009に進み、まだ達していない場合は、処理はステップS307に進む。ステップS1009では、背景化時間閾値変更部208は、閾値変更フラグの値を「OFF」に設定する。
この一連の処理の理由を説明する。ここでは一例として、図13の画像1301,画像1302,画像1303の各フレーム画像が順次入力されるものとする。画像1301には、廊下のみ(背景のみ)が映っている。この画像1301上の文字「ON」は、この画像1301中に写っているシーンでは照明が点灯していることを示すために便宜上記したものであり、実際の画像1301には写っていない文字である。
画像1302には、画像1301と同様、廊下のみ(背景のみ)が映っている。この画像1302上の文字「OFF」は、この画像1302中に写っているシーンでは照明が消灯していることを示すために便宜上記したものであり、実際の画像1302には写っていない文字である。これは画像1303についても同様である。なお、照明が消灯されても、非常灯や窓からの外光により、人間が映像をみて物体の有無を確認できるレベルの明るさであるとする。画像1303では、人物1304が新たに出現し、立ち止まっているものとする。
これら画像1301〜1303が順次入力された場合における閾値変更処理について、図14を用いて説明する。図14は、図11と同様に横軸は時刻、縦軸は継続時間を表すグラフを示す。
時刻1401は照明が消灯された時刻(画像1302)を示している(図12の時刻1201に相当)。このときに生じた変化領域中の画素1305の継続時間が直線1402で示されている(図12の直線1202に相当)。時刻1403の時点で、背景化時間の閾値が最小値に設定されている(図12の時刻1203に相当)。時刻1404は、図13の画像1303のように、人物1304が出現した時刻である(図12では、時刻1204に相当)。この人物に含まれる画素1306の継続時間は、直線1405で表される(図12では、直線1205に相当)。
仮に、図12のように背景化時間の閾値が最小値のままであると(直線1206)、直線1205は、背景化時間の閾値よりも下側にくることがない。そのため、人物1304は常に背景として扱われるため、検知できなくなる。そこで、時間の経過と共に徐々に背景化時間の閾値を通常値に戻すことによって、シーンチェンジ後に出現した物体の検知を、正常に行えるようにする。即ち、時刻1403から時刻1406にかけて、背景化時間の閾値を傾き1をもった直線1407とする。
時刻1404に出現した人物1304に含まれる画素1306の継続時間を示す直線1405は、時刻1408において、通常値の背景化時間の閾値と交わる。従って、時刻1404から時刻1408まで(傾き1であるので、通常値の時間)は、人物1304は前景と判定される。このように、シーンチェンジを検知した直後(時刻1403)以降、通常と同様に通常値時間の静止物体の検知が可能となる。
以上により、照明が消灯されるなどのケースが発生しても、すぐに静止物体の一時的な検知を可能とすることができる。しかしながら、照明が点灯している状態から、一次的に消灯され、再び点灯するような場合には、次のような問題が生じる。例えば、図15の画像1501の如く、本装置起動時には廊下のみ(背景のみ)が映っており、照明が点灯状態であったとする。しばらくして画像1502に示す如く、鞄1505が置き去りにされたとする。その後、画像1503に示す如く、一定時間のあいだ照明が消灯され、そして画像1504に示す如く、ふたたび照明が点灯されたとする。このとき、鞄1505は置き去りにされたままとする。
このときの継続時間の変化について図16のグラフを用いて説明する。図16は、図11と同様、横軸は時刻を表し、縦軸は継続時間を表すグラフである。
時刻1601は本装置起動時であり(図15の画像1501)、背景中の画素1506の継続時間は、直線1602で示されている。直線1602と背景化時間の閾値1603とが交わる時刻1604は、真の背景が本処理装置でも背景と判定されるようになる時刻(初期化が完了する時刻)である。時刻1605が鞄が出現した時刻であり(図15の画像1502)、鞄に含まれる画素1507の継続時間は直線1606で示されている。時刻1607が、照明が消灯された時刻(図15の画像1503)に相当し、背景化時間の閾値1603を一旦最小値に下げたのち、傾き1で回復させる。時刻1608が再び照明が点灯された時刻(図15の画像1504)であるが、時刻1607以降、直線1606は背景化時間の閾値1603よりも上側にあるために、画像1502で検知できていた鞄も、背景として扱われてしまう。つまり、照明の一時的な消灯区間の前後で、連続的な検知ができなくなる。そこで、既存のシーン(本例では照明の点灯時)に復帰(シーンチェンジ)したことを、シーンチェンジ検知部207で検知することによって、前述の問題を解消できるようにする。
既存シーンへのシーンチェンジは、背景と判断された画素の個数に従って判定する。照明点灯時の背景中の画素1506の継続時間(直線1602)は、時刻1604以降は常に背景化時間の閾値1603よりも上側にあり、従って背景である。再び照明が点灯される時刻1608以降、時刻1601で背景モデルに登録された状態(照明が点灯しているときの特徴量)が再び入力映像に近い状態となる。よって、鞄1505の領域を除いた背景中の画素は背景化時間の閾値の通常値を上回っている。このように、既存のシーンへのシーンチェンジがあると、画面に占める背景領域の割合は高いので、継続時間の長い画素の割合が高くなる。そこで、背景化時間の閾値の通常値よりも長い継続時間を持つ画素の総数をカウントする。そして、カウント値を全画素数で割って割合を求め、その割合が例えば7割以上であれば、既存のシーンへシーンチェンジしたと判定する。なお、背景モデルに複数の状態(照明点灯時と消灯時)を記憶することにより、継続時間を正しく求めることができるため、本判定は可能となる。
然るに、上記のステップS1005では、シーンチェンジ検知部207は、各画素位置の前景背景情報から前景フラグの値を取得する。そして、(前景フラグの値=0)である画素位置数(背景と判断された画素数)が規定個数(例えばフレーム画像fの画素数の70%の数)以上であれば、既存シーンへのシーンチェンジありと判断する。
この判断の結果、「既存シーンへのシーンチェンジあり」であれば、処理はステップS1010に進む。一方、この判断の結果、「既存シーンへのシーンチェンジなし」であれば、処理はステップS1006に進む。
そしてステップS1010では、背景化時間閾値変更部208は、上記の閾値Bの値を通常値に設定する。そしてステップS1011では背景化時間閾値変更部208は、閾値変更フラグの値を「OFF」に設定する。
図15の例を用いて、上記の一連のステップの説明をする。図17は、図11と同様に横軸は時刻、縦軸は継続時間を表すグラフを示す。時刻1701は本装置起動時であり(図16の時刻1601に相当)、背景中の画素1506の継続時間は、直線1702(図16の直線1602に相当)で示されている。時刻1704が初期化が完了する時刻である(図16の時刻1604に相当)。時刻1705が鞄が出現した時刻であり(図16の時刻1605に相当)、鞄1505に含まれる画素1507の継続時間は直線1706で示されている。時刻1707が、照明が消灯された時刻(図16の時刻1607)に相当し、背景化時間の閾値を一旦最小値に下げたのち、傾き1で回復させる。時刻1708が再び照明が点灯された時刻(図16の時刻1608)に相当する。ここで、画素1506のような背景の画素の継続時間(直線1702)は、背景化時間の閾値の通常値よりも常に大きい。従って、ステップS1005において既存のシーンへのシーンチェンジが検知され、ステップS1010において、背景化時間の閾値が通常値に戻される。従って、背景化時間の閾値は折れ線1703に示す如く変化する。時刻1708から時刻1709の区間において、鞄1505に含まれる画素1507の継続時間を示す直線1706が再び、背景化時間の閾値よりも下側になるため、前景として判定されるようになっていることがわかる。
以上により、一時的に新しいシーンとなるような(照明が一時的に消灯されるなど)場合であっても、静止物体を所定の時間の間検知し続けることができるようになる。
次に、ステップS307における処理の詳細について、同処理のフローチャートを示す図18を用いて説明する。
ステップS1801では、物体領域出力部209は、フレーム画像f中の各画素位置に対する探索済みフラグの値を0に初期化する。初期化する値については0に限るものではなく、以下のステップS1807などで探索済みフラグに設定する値と区別できればよい。
ステップS1802では、物体領域出力部209は、上記のステップS806でメモリに格納した「画素位置(x、y)の前景フラグの値」を取得する(0≦x≦フレーム画像fのx方向の画素数−1、0≦y≦フレーム画像fのy方向の画素数−1)。なお、ステップS1802における処理を最初に行う場合、x=y=0である。
ステップS1803では、物体領域出力部209は、ステップS1802で取得した前景フラグの値が1であるか否かを判断する。この判断の結果、ステップS1802で取得した前景フラグの値が1であれば処理はステップS1805に進み、ステップS1802で取得した前景フラグの値が0であれば処理はステップS1804に進む。
ステップS1804では、物体領域出力部209は、参照する画素位置を1つ移動させ、移動後の画素位置について、ステップS1802以降の各ステップにおける処理を行う。
一方、ステップS1805では、物体領域出力部209は、画素位置(x、y)の探索済みフラグの値が0であるか否かを判断する。この判断の結果、画素位置(x、y)の探索済みフラグの値が0であれば処理はステップS1806に進み、画素位置(x、y)の探索済みフラグの値が1であれば処理はステップS1804に進む。
ステップS1806では、物体領域出力部209は、画素位置(x、y)を画像処理装置内の適当なメモリに格納する。
ステップS1807では、物体領域出力部209は、画素位置(x、y)の探索済みフラグの値を1に設定する。
ステップS1808では、物体領域出力部209は、画素位置(x、y)の近傍画素位置群(例えば画素位置(x、y)に隣接する4つ若しくは6つの画素位置群)のうちの1つ画素位置を選択画素位置として選択し、選択画素位置の前景フラグの値を取得する。
ステップS1809では、物体領域出力部209は、ステップS1808で取得した前景フラグの値が1であるか否かを判断する。この判断の結果、ステップS1808で取得した前景フラグの値が1であれば、処理はステップS1810に進む。一方、ステップS1808で取得した前景フラグの値が0であれば、処理はステップS1811に進む。
ステップS1810では、物体領域出力部209は、選択画素位置の探索済みフラグの値が0であるか否かを判断する。この判断の結果、0であれば、処理はステップS1806に進み、0ではない場合は、処理はステップS1811に進む。
ステップS1810からステップS1806に処理が進んだ場合、ステップS1806では、選択画素位置を画像処理装置内の適当なメモリに格納し、次にステップS1807では、選択画素位置の探索済みフラグの値を1に設定する。そして次にステップS1808では、上記の近傍画素位置群のうち未選択の近傍画素位置を選択画素位置として選択し、以降の処理を続ける。
ステップS1811では、物体領域出力部209は、ステップS1806でメモリに格納されたそれぞれの画素位置を参照し、フレーム画像f上でこれらの画素位置を全て包含する矩形領域を求める。例えば、ステップS1806でメモリに格納された画素位置のうち、x座標の最大値/最小値、y座標の最大値/最小値を特定する。そして、座標位置(x座標の最小値、y座標の最小値)を左上隅とし、座標位置(x座標の最大値、y座標の最大値)を右下隅とする矩形領域を求める。この矩形領域が、フレーム画像f中の物体が写っている領域の外接矩形の領域となる。そしてステップS1811では、この矩形領域を表す領域情報を画像処理装置内の適当なメモリに格納する。この領域情報のフォーマットには様々なフォーマットを適用することができるが、例えば、上記の左上隅の座標位置、右下隅の座標位置、のセットを領域情報としてメモリに格納するようにしても良い。
ステップS1812では、物体領域出力部209は、ステップS1806でメモリに格納されたそれぞれの画素位置について、上記のステップS806でメモリに格納した「該画素位置の継続時間」を取得する。そして、ステップS806でメモリに格納されたそれぞれの画素位置の継続時間の平均値を平均継続時間として求め、求めた平均継続時間を画像処理装置内の適当なメモリに格納する。
ステップS1813では、物体領域出力部209は、フレーム画像fを構成する全ての画素位置についてステップS1801〜S1812の処理を行ったか否かを判断する。この判断の結果、フレーム画像fを構成する全ての画素位置についてステップS1801〜S1812の処理を行った場合は、処理はステップS1814に進む。一方、フレーム画像fを構成する全ての画素位置のうち、まだステップS1801〜S1812の処理を行っていない画素位置が残っている場合、処理はステップS1804に進む。
ステップS1814では、物体領域出力部209は、画像処理装置内の適当なメモリに格納されている領域情報の数、例えば、左上隅の座標位置と右下隅の座標位置とのセットの個数をカウントする。そして物体領域出力部209は、このカウントした個数、各領域情報、各平均継続時間、を物体領域情報として出力する。物体領域情報の構成については特定の構成に限るものではない。物体領域情報の構成例を図19に示す。
図19に示した構成の物体領域情報には、領域情報の個数が登録されていると共に、領域情報(左上隅の座標位置、右下隅の座標位置)、該領域情報が表す領域から求めた平均継続時間、のセットが、領域情報毎に登録されている。それぞれのセットの登録番地のうち先頭の登録番地も、物体領域座標データ先頭ポインタとして登録されている。
この出力される物体領域情報の出力先や使用方法については本実施形態では特に触れていないが、例えば、置き去りの発生を検知する置き去り検知装置などで使用されても良い。置き去り検知装置では、物体の平均継続時間を参照し、平平均継続時間が所定の時間を超えた時点で置き去りイベントを発報する。また、領域情報が示す領域の枠をフレーム画像上に合成表示させることで、置き去り物の位置をユーザに対して表示するなどを行うようにしても良い。
<第1の実施形態の変形例>
また、物体領域情報を、置き去り検知装置ではなくいたずら検知装置に送出するような場合には、シーンチェンジ検知部207においてシーンチェンジを判定するための条件を更に追加するようにしても良い。
いたずら検知とは、カメラに対して布を被せたり、ライトを照射したりするなどして、正常な撮影をさまたげるいたずら行為を検知するものである。いたずら検知は、物体領域の総面積の画面に対する割合が大きい時に、いたずらと判断する。ただし、蛍光灯などがちらつくフリッカのような現象に対して反応してしまうと、何度も誤報することになるので、所定時間のあいだ連続して物体領域の総面積の画面に対する割合が大きい時に、いたずらと検知する。
また、上記の構成では、新規シーンへのシーンチェンジを検知すると直ちに背景化時間の閾値を初期化するので、物体領域が大きな割合を占める結果を所定時間出力することができない。そこで、いたずら検知を可能とするために、新規シーンへのシーンチェンジを判定するための条件に、「前景領域がフレーム画像に対する占める割合が高くなるフレームが所定時間連続すること」、を追加する。これにより、所定時間は大きな誤検知領域を出力できるようになるので、いたずら検知において、正常にいたずらが検知できるようになる。この条件の追加については、例えば、ユーザが不図示の操作部を操作して「いたずら検知を行う」旨の指示が入力されたときに、この条件を追加するようにしても良い。
また、シーンチェンジ検知部207において新規シーンへのシーンチェンジを検知するのではなく、いたずら検知装置においてこの検知を行わせるようにしても良い。このために、いたずら検知装置でのいたずらが検知した際に、本画像処理装置に通知を行えるように、本画像処理装置といたずら検知装置とを通信可能に接続しておく必要がある。もちろん、いたずら検知装置を本画像処理装置内で動作するモジュールにし、本画像処理装置内で通信を行うようにしても良い。
この場合、シーンチェンジ検知部207は、ステップS1002において、前景背景情報を使って判定を行う代わりに、いたずら検知装置から、いたずらが検知されたという通知があったかどうかを確認する。そして、いたずらが検知されたという通知があったら、ステップS1003以下の各ステップを実行し、通知がなかったら、ステップS1005以下の各ステップを実行するようにする。
また、図2に示した各部は、1つの画像処理装置内の構成要素としても良いし、いくつかの装置に分散させても良い。この場合、このいくつかの装置は互いに通信可能に接続し、互いに通信を行いながら上記の処理を行うことになる。また、図2に示した各部を集積回路チップに納め、例えば、PC(パーソナルコンピュータ)が有するデータ入力部と一体化させてもよい。
<第1の実施形態の一般的な構成について>
第1の実施形態では、説明を簡単にするために、矩形領域を画素単位の領域、画像特徴量を画素値とした場合における画像処理装置の動作について説明したが、この動作は、以下に説明する動作の過ぎない。
先ず画像処理装置は、各フレームの画像をフレーム画像として入力し、該入力したフレーム画像を構成する各矩形領域について、該矩形領域の画像特徴量を取得する。そして、取得した着目フレーム画像を構成する各矩形領域について、該矩形領域について第1のテーブルに登録されている登録画像特徴量のうち該矩形領域の画像特徴量と最も類似する登録画像特徴量を特定する。
そして、着目フレーム画像を構成する各矩形領域について、該矩形領域について特定した登録画像特徴量と該矩形領域の画像特徴量との類似度が閾値以上であるか否かを判断する。この類似度の一例が上記の「差分」に相当する。
そして、着目フレーム画像を構成する各矩形領域のうち類似度が閾値以上と判断された矩形領域については、次のような処理を行う。即ち、該矩形領域について特定した登録画像特徴量及び該登録画像特徴量が第1のテーブルに登録されたタイミングのセットを第2のテーブルに登録すると共に、第1のテーブル中の該登録画像特徴量を該矩形領域の画像特徴量を用いて更新する。
一方、着目フレーム画像を構成する各矩形領域のうち類似度が閾値未満と判断された矩形領域については、次のような処理を行う。即ち、該矩形領域の画像特徴量及び該画像特徴量を第2のテーブルに登録するタイミングのセットを第2のテーブルに登録すると共に、該画像特徴量を該矩形領域に対する登録画像特徴量として第1のテーブルに登録する。
次に、着目フレーム画像を構成する各矩形領域について、該矩形領域について第2のテーブルに登録されたタイミングから現タイミングまでの期間長を求める。ここで、着目フレーム画像を構成する各矩形領域のうち期間長が期間長閾値以下の矩形領域を前景矩形領域、期間長が期間長閾値よりも大きい矩形領域を背景矩形領域とする。このとき、着目フレーム画像を構成する各矩形領域のうち前景矩形領域と判断された矩形領域の数が規定数以上であれば、シーンチェンジありと判断し、該数が規定数未満であれば、シーンチェンジなしと判断する。
そして、シーンチェンジありと判断した場合は、期間長閾値を規定の最小値に設定し、前景矩形領域中に写っている物体の領域を表す領域情報と、該前景矩形領域について求めた期間長の平均期間長と、を出力する。
[第2の実施形態]
図2に示した各部はハードウェアで構成しても良い。しかし、例えば、背景モデル記憶部204をRAMやハードディスクなどのメモリで構成し、映像入力部201を映像入力インターフェースで構成し、その他の各部をソフトウェア(コンピュータプログラム)で構成しても良い。この場合、該メモリ及び該映像入力インターフェースを有し、且つ該ソフトウェアを実行可能なプロセッサを有するコンピュータに該ソフトウェアをインストールすれば、該プロセッサに該ソフトウェアを実行させることができる。これにより、このコンピュータは、図2の各部の機能を実現することができるので、このコンピュータは、上記の画像処理装置に適用することができる。上記の画像処理装置に適用可能なコンピュータの構成例を図1に示す。
CPU101は、ROM102やRAM103に格納されているコンピュータプログラムやデータを用いて処理を実行することで、コンピュータ全体の動作制御を行うと共に、上記の画像処理装置が行うものとして説明した各処理を実行する。
ROM102には、コンピュータの設定データやブートプログラムなどが格納されている。
RAM103は、2次記憶装置104からロードされたコンピュータプログラムやデータ、画像入力装置105によって入力された各フレームのフレーム画像を一時的に記憶するためのエリアを有する。更にRAM103は、ネットワークインターフェースI/F108を介して外部装置から受信したデータを一時的に記憶するためのエリア、CPU101が各種の処理を実行する際に用いるワークエリアを有する。即ち、RAM103は各種のエリアを適宜提供することができる。
2次記憶装置104は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。この2次記憶装置104には、OS(オペレーティングシステム)や、図2において映像入力部201及び背景モデル記憶部204を除く各部の機能をCPU101に実行させるためのコンピュータプログラムやデータが格納されている。また、2次記憶装置104は、この背景モデル記憶部204としても機能する。2次記憶装置104に格納されているコンピュータプログラムやデータは、CPU101による制御に従って適宜RAM103にロードされ、CPU101による処理対象となる。
画像入力装置105は、各フレームのフレーム画像を入力するための装置であり、図2の映像入力部201に相当する。上記のとおり、図2に示した各部を集積回路チップに納めて、この画像入力装置105と一体化させてもよい。
入力装置106は、キーボードやマウスなどにより構成されており、コンピュータのユーザが操作することで各種の指示をCPU101に対して入力することができる。例えば、上記の「いたずら検知を行う」旨の指示はこの入力装置106を用いて入力しても良い。
表示装置107は、CRTや液晶画面などにより構成されており、CPU101による処理結果を画像や文字などでもって表示することができる。例えば、上記の物体領域情報若しくは該物体領域情報に基づく表示をこの表示装置107の画面に表示させても良い。
ネットワークインターフェースI/F108は、LANやインターネットなどのネットワークを介して外部装置とのデータ通信を行うためのインターフェースである。例えば、物体領域情報をこのネットワークインターフェースI/F108を介して外部装置に対して送信しても良い。
上記の各部はバス109に接続されている。なお、図1の構成はあくまでも一例であり、動作目的によっては、この構成に更なる構成を加えても良いし、目的によっては不必要となる構成要件を省いても良い。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。