以下に、本願の開示する画像処理装置、画像処理プログラムおよび画像処理方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
本実施例1にかかる画像処理装置10の構成について説明する。図1は、本実施例1にかかる画像処理装置10の構成を示す図である。図1に示すように、この画像処理装置10は、画像生成部11と、判定部12と、記憶部13を有する。
画像生成部11は、時間的に連続する複数の画像に時定数が異なる複数のローパスフィルタを適用した各画像を生成する処理部である。判定部12は、画像生成部11が生成した複数の画像の輝度値の相互関係に基づいて画像を記録するか否かを判定する処理部である。記憶部13は、判定部12の判定結果に基づいて画像を記憶する記憶部である。
本実施例1にかかる画像処理装置10は、複数の画像に時定数の異なる複数のローパスフィルタを適用した各画像の輝度値の相互関係に基づいて画像記録の有無を判定する。したがって、動的物体の画像を外した放置物の画像のみを記録することができる。
本実施例2にかかる画像処理装置の説明を行う前に、本明細書で使用する画像、動画、フィルタリング、画像比較、放置物を検出する方法について説明する。まず、画像について説明する。図2は、画像のしくみを説明するための図である。図2に示すように、カメラが取得する画像は、複数のピクセルを含む。ここでは一例として、画像に含まれる各ピクセルは、単体の輝度で表現されているものとする。
画像の中のi番目のピクセルの輝度をp(i)と表現する。iは0以上の数である。複数のピクセルからなる画像をPと表現する。ピクセルp(i)と画像Pは、
によって表される。
続いて、動画について説明する。図3は、動画のしくみを説明するための図である。図3に示すように、動画は、連続する複数の画像からなる。連続する各画像をフレームと呼ぶ。時刻tにおけるフレームをPt、時刻t−1におけるフレームをPt−1、時刻t−2におけるフレームをPt−2と表現する。
続いて、フィルタリングについて説明する。ここで画像Pに対して時間軸でローパスフィルタをかける場合について説明する。ローパスフィルタは、例えば、
によって表される。式(2)に含まれるkは、0〜1の実数である。kの値が0に近ければ近いほど、時間的に連続する各画像にローパスフィルタを適用した場合に、直前の画像の輝度値の変化が直後の画像の輝度値に反映されにくくなるため、動的な物体が画像に残りにくくなる。
kの値を小さく設定して、ローパスフィルタを画像に適用すると、画像の時定数が大きくなる。一方、kの値を大きく設定して、ローパスフィルタを画像に適用すると、画像の時定数が小さくなる。時定数が大きい画像と小さい画像の違いは後述する。
続いて、画像比較について説明する。ここでは一例として、画像Pと画像Qとを比較する場合について説明する。画像Pと画像Qがどの程度違うのかを評価する方法には様々な手法がある。例えば、画像Pと画像Qに含まれるピクセル毎に輝度値の差を算出し、ピクセル毎の差を合計することで、画像Pと画像Qがどの程度違うのかを評価する方法がある。上記の方法は、
によって表される。式(3)に含まれるp(i)は、画像Pに含まれるピクセルであり、q(i)は、画像Qに含まれるピクセルである。式(3)を用いてCの値を計算し、Cの値が所定の閾値よりも大きい場合、画像Pと画像Qは異なる画像であると判定する。
また、図4に示すように、画像全体を小さなブロックで細分化し、ブロック毎に式(3)を用いてCを算出する方法も存在する。図4は、ブロックを細分化した画像の一例を示す図である。ブロック毎にCを算出することで、画像全体のどのあたりが変化したのかを判定することができる。
続いて、放置物を検出する方法について説明する。図5は、時定数の異なるローパスフィルタを用いた場合の放置物の出現の様子を示す図である。図5では、ローパスフィルタを適用していない画像(a)と、ローパスフィルタの時定数の異なる画像(b)、(c)が時間と共にどのように表れていくのかを示している。ここでは一例として、画像(b)の時定数が、画像(c)の時定数よりも大きい場合を示している。言い換えると、画像(b)のローパスフィルタのkの値が、画像(c)のローパスフィルタのkの値よりも大きい場合を示している。
図5に示すように、放置物が出現した後に、画像(a)では、放置物がすぐにあらわれるが、画像(b)、(c)では、放置物が徐々にあらわれてくる。また、時定数の違いにより、放置物が表れるまでの時間が異なる。図6は、放置物が置かれた場合の時間変化に伴う輝度値の変化を示す図である。図6の横軸を時間とし、縦軸を輝度値とする。
図6に示すように、物体が追加されると、画像(a)の輝度値は、放置物の輝度値にあわせてステップ状に変化する。画像(b)、(c)の輝度値は、画像(a)の輝度値に徐々に近付いていく。図6に示すように、時定数が異なると、所定時間後の画像(a)、(b)の輝度値の差と、画像(a)、(c)の輝度値の差が異なる。画像(a)、(b)の輝度値の差をCabとし、画像(a)、(c)の輝度値の差をCacとすると、例えば、時刻TにおけるCabは、時刻TにおけるCacよりも小さくなっている。
画像(c)を十分大きな時定数にしておくと、時刻tで物体が追加されても、画像(c)は、時刻t以前の画像とほとんど変らない。一方、画像(b)を小さな時定数にしておくと、画像(b)の輝度値は、徐々に画像(a)の輝度値に近付く。しかし、時刻tの直後は、画像(c)と同様にして以前の画像と変らない。したがって、画像中に物体が現れた時点において、画像(a)の輝度値は、画像(b)、(c)の輝度値と大きく異なる。
ここで、画像(c)の時定数に対して十分小さな時間をΔtとする。時刻tにおいて、物体が追加され、時刻t+Δtに物体が撤去された場合を考える。図7は、短時間の間に物体が追加・撤去された場合の画像(a)〜(c)の輝度値の変化を示す図である。図7に示すように、t+Δt以降の画像(a)は、理想状態では、時刻t以前の輝度値と同じになる。
時刻t+Δtにおいて物体が撤去されると、画像(b)、(c)の輝度値は、変化した画像(a)の輝度値に近付く。画像(b)の時定数は小さい値なので、時刻t+Δtの直前では、画像(b)の輝度値は、画像(a)の輝度値に近い値となっている。一方、画像(c)の時定数は十分大きな値なので、時刻t+Δtの直前であっても、画像(c)の輝度値は、画像(b)の輝度値から遠い値となっている。言い換えると、画像(c)の輝度値は、時刻t以前の画像(a)の輝度値に近い値となっている。
このため、時刻t+Δtにおいて物体が撤去され、画像(a)の輝度値が、物体が追加される前の輝度値に戻ると、時刻t+Δtにおける画像(a)の輝度値と画像(b)の輝度値の差は大きな値となる。一方、時刻t+Δtにおける画像(a)の輝度値と画像(c)の輝度値の差は小さな値となる。すなわち、時定数の異なる複数の画像の輝度値の相互関係を利用すれば、物体が追加された後に、物体が撤去されたことを判定することができ、かかる物体を放置物から除外することができる。
なお、ここで言う物体が「追加される」、「撤去される」というのは言葉上の表現でしかない。例えば、上記のΔtが十分大きいと、画像(b)の輝度値だけでなく、画像(c)の輝度値も、画像(a)の輝度値に漸近し、一致する。この段階で、物体を撤去すると、時刻t+Δtにおける画像(a)の輝度値と画像(c)の輝度値との差も大きな値となり、ここでは物体が追加されたと扱われる。これは、物体で隠れていた背景が追加されたと考えることができる。
すなわち、厳密に考えると、「追加される」とは前後の画像が急激に変化したことを意味する。また、「撤去される」とは、急激に変化した画像が元の画像にすぐ戻ったことを意味する。
次に、本実施例2にかかる画像処理装置の構成について説明する。図8は、本実施例2にかかる画像処理装置100の構成を示す図である。図8に示すように、この画像処理装置100は、画像取得部110、フィルタリング部120、画像比較部130、判定部140、記憶部150、出力部160を有する。
画像取得部110は、画像を取得する処理部である。画像取得部110は、取得した画像を順次フィルタリンク部120に出力する。画像取得部110は、カメラのように画像を撮影する装置に対応する。
フィルタリング部120は、時間的に連続する画像に対して時定数の異なる複数のローパスフィルタを適用し、複数の画像を生成する処理部である。フィルタリング処理部120は、生成した複数の画像を画像比較部130に出力する。フィルタリング部120は、ASIC(Application Specific Integrated Curcuit)、FPGA(Field Programmable Gate Array)に対応する。
画像比較部130は、フィルタリング部120から、複数の画像を取得し、各画像の輝度値を比較して、各画像の輝度値の差を算出する処理部である。画像比較部130は、各画像と、各画像の輝度値の差の情報を判定部140に出力する。画像比較部130は、コンピュータ上で動作するソフトウェアで実現しても良く、あるいは、ASIC、FPGA等のハードウェアを用いて実現してもよい。
判定部140は、各画像の輝度値の差に基づいて、放置された物体を判定し、放置された物体の画像を記憶部150に格納する処理部である。判定部140は、例えば、各画像の輝度値の相互関係に基づいて、放置された物体を判定する処理を行うものであり、コンピュータ上で動作するソフトウェアで実現しても良く、あるいは、ASIC、FPGA等のハードウェアを用いて実現しても良い。
記憶部150は、各種の情報を記憶する記憶部である。本実施例2にかかる記憶部150は、画像データ150aを記憶する。この画像データ150aは、判定部140から出力される画像を含む。記憶部150は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(flash memory)などの半導体メモリ素子、またはハードディスク、光ディスクなどの記憶装置に対応する。
出力部160は、判定部140の判定結果に基づいて警報を出力する処理部である。例えば、判定部140が、物体が放置されたと判定した場合に、出力部160は、警報を出力する。
ところで、図7で説明した例では、フィルタを適用していない画像(a)とローパスフィルタを適用した画像(b)、(c)を比較していた。しかし、画像取得部110から出力される画像は、人間の活動による画像劣化や、ノイズが含まれる。この画像劣化やノイズの影響を画像(a)から取り除くため、フィルタリング部120は、画像(b)、(c)の時定数よりもさらに小さい時定数のローパスフィルタを利用して、画像(a)を生成する。
図9は、画像取得部110から出力される画像と画像(a)〜(c)の輝度値の変化を示す図である。図9に示すように、画像取得部110から出力される画像に時定数の小さなローパスフィルタを適用することで、画像に含まれるノイズの影響を除去することができる。また、フィルタリング部120は、判定部140の誤判定を防止するために、画像(a)の時定数よりも更に小さい時定数のローパスフィルタを用いて画像(z)を生成する。判定部140の誤判定に関する説明は後述する。
したがって、本実施例2にかかるフィルタリング部120は、画像取得部110から画像を取得し、取得した画像に時定数の異なる4つの画像を生成する。以下において、フィルタリング部120の処理を具体的に説明する。まず、フィルタリング部120は、画像取得部110から画像Pを取り込む。画像Pを、縦mピクセル、横nピクセルの画像とすると、画像Pはm×nの大きさの配列となる。
フィルタリング部120は、画像Pと同じデータ量を記録するメモリ領域Qz、Qa、Qb、Qcを有している。フィルタリング部120は、画像Pを異なる時定数のフィルタで処理し、メモリ領域Qz、Qa、Qb、Qcに格納する。メモリ領域Qz、Qa、Qb、Qcに格納される画像は、上述した画像(z)、(a)、(b)、(c)に対応する。
フィルタリング部120は、初めて画像取得部110から画像Pを取得した場合、画像Pを初期値としてメモリ領域Q
z、Q
a、Q
b、Q
cに格納する。フィルタリング部120は、2回目以降、画像取得部110から画像Pを取得し、下記の式(4)〜(7)を利用して、ローパスフィルタの処理を実行する。
式(4)〜式(7)に含まれるkz、ka、kb、kcは、0〜1の値が代入される。ただし、kz、ka、kb、kcの大小関係は、0<kz<ka<kb<kc<1となる。フィルタリング部120は、式(4)〜(7)の算出結果により、メモリ領域Qz、Qa、Qb、Qcに格納された画像データをそれぞれ更新する。また、フィルタリング部120は、メモリ領域Qz、Qa、Qb、Qcに格納された画像データを画像比較部130に出力する。以下の説明において、メモリ領域Qz、Qa、Qb、Qcに格納された画像を、画像Qz、Qa、Qb、Qcとして説明する。
次に、画像比較部130の処理を具体的に説明する。画像比較部130は、フィルタリングした画像Qaと画像Qbとの差Cabおよび画像Qaと画像Qとの差Cacを算出する。画像比較部130は、画像Qaに含まれるi番目のピクセルの輝度値と、画像Qbに含まれるi番目のピクセルの輝度値の差を算出し、算出した各ピクセルの差を合計することで、Cabを算出する。
また、画像比較部130は、画像Qaに含まれるi番目のピクセルの輝度値と、画像Qcに含まれるi番目のピクセルの輝度値の差を算出し、算出した各ピクセルの差を合計することで、Cacを算出する。画像比較部130は、算出したCab、Cacの情報を判定部140に出力する。
次に、判定部140の処理を具体的に説明する。まず、判定部140は、Cabと閾値Tabを比較し、Cabが閾値Tabよりも大きいか否かを判定する。また、判定部140は、Cacと閾値Tacを比較し、Cacが閾値Tacよりも大きいか否かを判定する。
判定部140は、Cabが閾値Tabよりも大きく、かつ、Cacが閾値Tacよりも大きい場合、物体が「追加された」と判定する。判定部140は、物体が追加されたと判定した場合、画像Qbを画像データ150aに格納する。
判定部140は、Cabが閾値Tabよりも大きく、かつ、Cacが閾値Tac以下の場合、物体が「撤去された」と判定する。判定部140は、物体が撤去されたと判定した場合、直前に画像データ150aに記録した画像Qbを削除する。
物体が追加された後に撤去された場合、かかる物体は放置されていないので画像として残す必要がない。判定部140は、物体が追加された後に撤去された場合、追加された時点で格納した画像を画像データ150aから削除するので、記憶部150が記憶する画像のデータ量を削減することができる。
なお、判定部140は、物体が「追加された」または「撤去された」と判定したフレームの、次のフレームにおいて、画像Qbの輝度値が画像Qaの輝度値に近付いていないことがある。画像Qbの輝度値をそのままにしておくと、再度、判定部140は、物体が「追加された」または「撤去された」と誤判定する場合がある。したがって、判定部140は、物体が「追加された」または「撤去された」と判定した後、一時的に、画像Qaおよび画像Qbを画像Qzに一致させる。図10は、判定部が画像Qa、Qbを画像Qzに一致させる処理を説明するための図である。図10に示すように、判定部140は、物体が追加されたと判定した時点で、画像Qaおよび画像Qbを画像Qzに一致させている。
また、判定部140は、物体が「撤去された」と判定したフレームの次のフレームにおいて、画像Qcの輝度値が画像Qaの輝度値に近付いていないことがある。画像Qcの輝度値をそのままにしておくと、再度、判定部140は、物体が「撤去された」と誤判定する場合がある。したがって、判定部140は、物体が「撤去された」と判定した後、一時的に、画像Qcを画像Qzに一致させる。
次に、本実施例2にかかる画像処理装置100の処理手順について説明する。図11は、本実施例2にかかる画像処理装置100の処理手順を示すフローチャートである。図11に示すように、画像処理装置100は、画像を取得し(ステップS101)、フィルタリング部120が、フィルタリング処理を実行する(ステップS102)。
画像比較部130が、Cab算出処理を実行し(ステップS103)、Cac算出処理を実行する(ステップS104)。判定部140は、CabがTabよりも大きいか否かを判定する(ステップS105)。判定部140は、CabがTab以下の場合(ステップS106,No)、処理を終了する。
一方、判定部140は、CabがTabよりも大きい場合(ステップS106,Yes)、CacがTacよりも大きいか否かを判定する(ステップS107)。判定部140は、CacがTacよりも大きい場合(ステップS108,Yes)、物体が「追加された」と判定する(ステップS109)。判定部140は、ステップS109において、物体が「追加された」と判定した場合に、画像Qbを画像データ150aに格納する。判定部140は、画像Qzを画像Qaに設定し(ステップS110)、画像Qzを画像Qbに設定し(ステップS111)、処理を終了する。
一方、ステップS108において、判定部140は、CacがTac以下の場合(ステップS108,No)、物体が「撤去された」と判定する(ステップS112)。判定部140は、物体が「撤去された」と判定した場合に、画像データ150aに記録した一つ前の画像Qbを削除する。判定部140は、画像Qzを画像Qcに設定し(ステップS113)、ステップ110に移行する。
次に、図11のステップS102に示したフィルタリング処理について説明する。図12は、フィルタリング処理の処理手順を示すフローチャートである。図12に示すように、フィルタリング部120は、画像Pの取得が初回であるか否かを判定する(ステップS121)。
フィルタリング部120は、画像Pの取得が初回である場合(ステップS122,Yes)、画像PをQz、Qa、Qb、Qcに格納し(ステップS123)、フィルタリング処理を終了する。
一方、フィルタリング部120は、画像Pの取得が初回でない場合(ステップS122,No)、Qzに格納された画像に対するフィルタリング処理を実行し(ステップS124)、Qaに格納された画像に対するフィルタリング処理を実行する(ステップS125)。また、フィルタリング部120は、Qbに格納された画像に対するフィルタリング処理を実行し(ステップS126)、Qcに格納された画像に対するフィルタリング処理を実行する(ステップS127)。そして、フィルタリング部120は、フィルタリング処理を終了する。
次に、図12のステップS124で示した、Qzに格納された画像に対するフィルタリング処理の処理手順について説明する。図13は、Qzに格納された画像に対するフィルタリング処理の処理手順を示すフローチャートである。図13に示すように、フィルタリング部120は、iの値を0に設定し(ステップS131)、iの値が画素数以上であるか否かを判定する(ステップS132)。
フィルタリング部120は、iの値が画素数以上の場合(ステップS133,Yes)、処理を終了する。一方、フィルタリング部120は、iの値が画素数未満の場合(ステップS133,No)、kzP(i)+(1−kz)Qz(i)を算出し、算出結果をQz(i)に格納する(ステップS134)。フィルタリング部120は、iの値に1を加算した値で、iの値を更新し(ステップS135)、ステップS132に移行する。
次に、図12のステップS125で示した、Qaに格納された画像に対するフィルタリング処理の処理手順について説明する。図14は、Qaに格納された画像に対するフィルタリング処理の処理手順を示すフローチャートである。図14に示すように、フィルタリング部120は、iの値を0に設定し(ステップS141)、iの値が画素数以上であるか否かを判定する(ステップS142)。
フィルタリング部120は、iの値が画素数以上の場合(ステップS143,Yes)、処理を終了する。一方、フィルタリング部120は、iの値が画素数未満の場合(ステップS143,No)、kaP(i)+(1−ka)Qa(i)を算出し、算出結果をQa(i)に格納する(ステップS144)。フィルタリング部120は、iの値に1を加算した値で、iの値を更新し(ステップS145)、ステップS142に移行する。
次に、図12のステップS126で示した、Qbに格納された画像に対するフィルタリング処理の処理手順について説明する。図15は、Qbに格納された画像に対するフィルタリング処理の処理手順を示すフローチャートである。図15に示すように、フィルタリング部120は、iの値を0に設定し(ステップS151)、iの値が画素数以上であるか否かを判定する(ステップS152)。
フィルタリング部120は、iの値が画素数以上の場合(ステップS153,Yes)、処理を終了する。一方、フィルタリング部120は、iの値が画素数未満の場合(ステップS153,No)、kbP(i)+(1−kb)Qb(i)を算出し、算出結果をQb(i)に格納する(ステップS154)。フィルタリング部120は、iの値に1を加算した値で、iの値を更新し(ステップS155)、ステップS152に移行する。
次に、図12のステップS127で示した、Qcに格納された画像に対するフィルタリング処理の処理手順について説明する。図16は、Qcに格納された画像に対するフィルタリング処理の処理手順を示すフローチャートである。図16に示すように、フィルタリング部120は、iの値を0に設定し(ステップS161)、iの値が画素数以上であるか否かを判定する(ステップS162)。
フィルタリング部120は、iの値が画素数以上の場合(ステップS163,Yes)、処理を終了する。一方、フィルタリング部120は、iの値が画素数未満の場合(ステップS163,No)、kcP(i)+(1−kc)Qc(i)を算出し、算出結果をQc(i)に格納する(ステップS164)。フィルタリング部120は、iの値に1を加算した値で、iの値を更新し(ステップS165)、ステップS162に移行する。
次に、図11に示したCab算出処理の処理手順について説明する。図17は、Cab算出処理の処理手順を示すフローチャートである。図17に示すように、画像比較部130は、Cabの値を0に設定し(ステップS171)、iの値を0に設定する(ステップS172)。
画像比較部130は、iの値が画素数以上であるか否かを判定する(ステップS173)。画像比較部130は、iの値が画素数以上の場合(ステップS174,Yes)、処理を終了する。
一方、画像比較部130は、iの値が画素数未満の場合(ステップS174,No)、|Qa(i)−Qb(i)|+Cabを算出し、算出結果をCabに格納する(ステップS175)。画像比較部130は、iの値に1を加算した値で、iの値を更新し(ステップS176)、ステップS173に移行する。
次に、図11に示したCac算出処理の処理手順について説明する。図18は、Cac算出処理の処理手順を示すフローチャートである。図18に示すように、画像比較部130は、Cacの値を0に設定し(ステップS181)、iの値を0に設定する(ステップS182)。
画像比較部130は、iの値が画素数以上であるか否かを判定する(ステップS183)。画像比較部130は、iの値が画素数以上の場合(ステップS184,Yes)、処理を終了する。
一方、画像比較部130は、iの値が画素数未満の場合(ステップS184,No)、|Qa(i)−Qc(i)|+Cacを算出し、算出結果をCacに格納する(ステップS185)。画像比較部130は、iの値に1を加算した値で、iの値を更新し(ステップS186)、ステップS183に移行する。
上述してきたように、本実施例2にかかる画像処理装置100は、画像取得部110から出力される画像に対して、時定数の異なるローパスフィルタを適用して複数の画像を生成する。そして、画像処理装置100は、各画像の輝度値の相互関係に基づいて、放置された物体のみを記憶部150に記録する。したがって、放置物に該当しない物体の画像が記憶部150に記憶されることを防止することができ、記憶部150の記憶すべきデータ量を削減することができる。また、記憶部150に記録する画像は、ローパスフィルタを適用した画像であるため、人物を画像から取り除いた状態で、記憶部150に記録することができる。
次に、本実施例3にかかる画像処理装置について説明する。本実施例3にかかる画像処理装置は、画像を複数の領域に分け、領域毎に、放置された物体が含まれるか否かを判定する。例えば、画像処理装置は、放置された物体を含む領域の画像のみを記録することで、記憶量を更に削減することもできる。
図19は、本実施例3にかかる画像処理装置の構成を示す図である。図19に示すように、この画像処理装置200は、画像取得部210、フィルタリング部220、画像比較部230、判定部240、記憶部250を有する。このうち、画像取得部210、フィルタリング部220、記憶部250に関する説明は、実施例1で説明した画像取得部110、フィルタリング部120、記憶部250と同様である。
画像比較部230は、画像Qa、Qb、QcをR個の領域に分割し、分割した領域毎に、各画像の輝度値の差を算出する。以下の説明において、画像Qaの分割された領域のうち、j番目の領域に含まれる画像を画像Qa[j]とする。画像Qbの分割された領域のうち、j番目の領域に含まれる画像を画像Qb[j]とする。画像Qcの分割された領域のうち、j番目の領域に含まれる画像を画像Qc[j]とする。なお、画像Qzの説明は省略する。
画像比較部230は、画像Qa[j]と画像Qb[j]の輝度値の差Cab[j]を算出し、算出したCab[j]を判定部240に出力する。また、画像比較部230は、画像Qa[j]と画像Qc[j]の輝度値の差Cac[j]を算出し、算出したCac[j]を判定部240に出力する。例えば、画像比較部230が、画像を6つの領域に分割した場合、Rの値は5となり、jの値は0〜5の値となる。
判定部240は、Cab[j]、Cac[j]に基づいて、領域毎に、放置された物体が含まれるか否かを判定する。判定部240は、放置された物体が含まれる領域の画像を記憶部250に登録する。以下において、判定部240の処理を具体的に説明する。
判定部240は、Cab[j]と閾値Tabとを比較し、Cab[j]が閾値Tabよりも大きいか否かを判定する。また、判定部240は、Cac[j]と閾値Tacとを比較し、Cac[j]が閾値Tacよりも大きいか否かを判定する。
判定部240は、Cab[j]が閾値Tabよりも大きく、かつ、Cac[j]が閾値Tacよりも大きい場合、物体が「追加された」と判定する。判定部240は、物体が追加されたと判定した場合、画像Qb[j]を画像データ250aに格納する。
判定部240は、Cab[j]が閾値Tabよりも大きく、かつ、Cac[j]が閾値Tac以下の場合、物体が「撤去された」と判定する。判定部240は、物体が撤去されたと判定した場合、直前に画像データ150aに記録した画像Qb[j]を削除する。
次に、画像比較部230が、Cab[j]を算出する処理、Cac[j]を算出する処理の処理手順について説明する。図20は、Cab[j]を算出する処理手順を示すフローチャートである。図20に示すように、画像比較部230は、jの値を0に設定し(ステップS201)、jの値がRの値未満であるか否かを判定する(ステップS202)。
画像比較部230は、jの値がRの値以上である場合(ステップS203,No)、Cab[j]を算出する処理を終了する。一方、画像比較部230は、jの値がRの値未満の場合(ステップS203,Yes)、Cab[i]の値を0に設定する(ステップS204)。
画像比較部230は、iの値を0に設定し(ステップS205)、iの値が画素数以上であるか否かを判定する(ステップS206)。画像比較部230は、iの値が画素数以上の場合(ステップS207,Yes)、ステップS202に移行する。
一方、画像比較部230は、iの値が画素数未満の場合(ステップS207,No)、Cab[j]=|Qa(i)−Qb(i)|を算出し、算出結果をCab[j]に代入する(ステップS208)。画像比較部230は、iの値に1を加算した値で、iの値を更新し(ステップS209)、ステップS206に移行する。
図21は、Cac[j]を算出する処理手順を示すフローチャートである。図21に示すように、画像比較部230は、jの値を0に設定し(ステップS301)、jの値がRの値未満であるか否かを判定する(ステップS302)。
画像比較部230は、jの値がRの値以上である場合(ステップS303,No)、Cac[j]を算出する処理を終了する。一方、画像比較部230は、jの値がRの値未満の場合(ステップS303,Yes)、Cac[j]の値を0に設定する(ステップS304)。
画像比較部230は、iの値を0に設定し(ステップS305)、iの値が画素数以上であるか否かを判定する(ステップS306)。画像比較部230は、iの値が画素数以上の場合(ステップS307,Yes)、ステップS302に移行する。
一方、画像比較部230は、iの値が画素数未満の場合(ステップS307,No)、Cac[j]=|Qa(i)−Qc(i)|を算出し、算出結果をCac[j]に代入する(ステップS308)。画像比較部230は、iの値に1を加算した値で、iの値を更新し(ステップS309)、ステップS306に移行する。
上述してきたように、本実施例3にかかる画像処理装置200は、画像比較部230が画像を複数の領域に分割し、判定部240が領域毎に放置物が含まれるか否かを判定して、放置物を含む領域の画像を画像データ250aに格納する。実施例1の画像処理装置100は、放置物を含む画像を格納していたが、画像処理装置200は、放置物を含む一部の画像を格納するので、保存する画像のデータ量を実施例2の画像処理装置100よりも削減することができる。なお、画像処理装置200は、分割した領域に放置物が含まれていると判定した場合、実施例2と同様にして、画像全体を記憶部250に記憶してもよい。
次に、本実施例4にかかる画像処理装置について説明する。本実施例4にかかる画像処理装置は、画像を複数の領域に分割し、輝度値が大きく変化する領域を特定する。人物の大きさに対して放置物が小さいとすれば、輝度値が大きく変化する領域は、人が一時的に通っている領域と考えられるため、かかる領域を放置物の検出対象から外す。このように、放置物の検出対象となる領域を絞り込むことで、処理負荷を軽減する。
図22は、本実施例4にかかる画像処理装置の構成を示す図である。図22に示すように、この画像処理装置300は、画像取得部310、マスク設定部320、フィルタリング部330、画像比較部340、判定部350、記憶部360を有する。
画像取得部310は、画像を取得する処理部である。画像取得部310は、取得した画像を順次マスク設定部320に出力する。画像取得部310は、カメラのように画像を撮影する装置に対応する。
マスク設定部320は、画像を複数の領域に分割し、放置物を検索しない領域を設定する処理部である。以下の説明において、放置物を検索しない領域をマスク領域と表記する。マスク設定部320は、マスク領域の情報をフィルタリング部330に出力する。また、マスク設定部320は、画像取得部310から取得した画像をフィルタリング部330に出力する。
以下において、マスク設定部320の処理を具体的に説明する。マスク設定部320は、R個のメモリ領域を有し、j番目のメモリ領域をS[j]とする。マスク設定部320は、画像取得部310から取得する画像の領域をR個の領域に分割する。分割した各領域をN[j]とする。マスク設定部320は、画像取得部310から初めて画像を取得した場合、領域N[j]に含まれる画像を、S[j]に格納する。
マスク設定部320は、画像取得部310から2回目以降の画像を取得した場合、領域N[j]の画像とメモリ領域S[j]の画像とを比較して、領域毎に輝度値の差Cp[j]を算出する。マスク設定部320は、Cp[j]の値が閾値Tよりも大きいか否かを判定する。
マスク設定部320は、Cp[j]の値が閾値Tよりも大きいと判定した場合、領域N[j]を、マスク領域と判定する。そして、マスク設定部320は、領域N[j]の画像で、メモリ領域S[j]の画像を更新する。
一方、マスク設定部320は、Cp[j]の値が閾値T以下の場合、領域N[j]を、通常の領域と判定する。そして、マスク設定部320は、領域N[j]の画像で、メモリ領域S[j]の画像を更新する。マスク設定部320は、N[j]がマスク領域であるか否かの情報を、フィルタリング部340に出力する。
フィルタリング部330は、マスク領域以外の各領域に対して、時定数の異なる複数のローパスフィルタを適用し、領域毎に複数の画像を生成する処理部である。フィルタリング部330は、領域毎の複数の画像を画像比較部340に出力する。
以下において、フィルタリング部330の処理を具体的に説明する。フィルタリング部330は、領域N[j]に含まれる画像P[j]と同じデータ量を記録するメモリ領域Qz[j]、Qa[j]、Qb[j]、Qc[j]を領域毎に有している。フィルタリング部330は、画像P[j]を異なる時定数のフィルタで処理し、メモリ領域Qz[j]、Qa[j]、Qb[j]、Qc[j]に格納する。
フィルタリング部330は、初めて画像P[j]を取得した場合、画像P[j]を初期値としてメモリ領域Q
z[j]、Q
a[j]、Q
b[j]、Q
c[j]に格納する。フィルタリング部330は、2回目以降、マスク設定部320から画像P[j]を取得し、下記の式(8)〜(11)を利用して、ローパスフィルタの処理を実行する。
式(8)〜式(11)に含まれるkz、ka、kb、kcは、0〜1の値が代入される。ただし、kz、ka、kb、kcの大小関係は、0<kz<ka<kb<kc<1となる。フィルタリング部330は、式(8)〜(11)の算出結果により、メモリ領域Qz[j]、Qa[j]、Qb[j]、Qc[j]に格納された画像データをそれぞれ更新する。また、フィルタリング部330は、メモリ領域Qz[j]、Qa[j]、Qb[j]、Qc[j]に格納された画像データを画像比較部340に出力する。
なお、フィルタリング部330は、領域N[j]がマスク領域の場合、領域N[j]に含まれる画像P[j]にローパスフィルタを適用する処理を一時的に停止する。例えば、フィルタリング部330は、領域N[j]に所定の値を設定し、画像取得部310が画像を取得するたびに領域N[j]に設定した値から1を減算する。そして、領域N[j]に設定した値が0になった時点で、領域N[j]にローパスフィルタを適用する処理を再開する。
画像比較部340は、フィルタリング部330から、領域毎の複数の画像Qz[j]、Qa[j]、Qb[j]、Qc[j]を取得し、各画像の輝度値の差を算出する処理部である。画像比較部340は、領域毎の画像と、各画像の輝度値の差の情報を判定部350に出力する。
以下において、画像比較部340の処理を具体的に説明する。画像比較部340は、領域N[j]の画像P[j]にローパスフィルタを適用した各画像Qa[j]、Qb[j]、Qc[j]の輝度値の差を算出する。
画像比較部340は、画像Qa[j]に含まれるi番目のピクセルの輝度値と、画像Qb[j]に含まれるi番目のピクセルの輝度値の差を算出し、算出した各ピクセルの差を合計することで、画像Qa[j]と、画像Qb[j]の差Cab[j]を算出する。
画像比較部340は、画像Qa[j]に含まれるi番目のピクセルの輝度値と、画像Qc[j]に含まれるi番目のピクセルの輝度値の差を算出し、算出した各ピクセルの差を合計することで、画像Qa[j]と、画像Qc[j]の差Cac[j]を算出する。画像比較部340は、算出したCab[j]、Cac[j]の情報を判定部350に出力する。
判定部350は、各画像の輝度値の差に基づいて、放置された物体を領域毎に判定し、放置された物体が存在する領域の画像を記憶部150に格納する処理部である。以下において、判定部350の処理を具体的に説明する。
まず、判定部350は、Cab[j]と閾値Tabを比較し、Cab[j]が閾値Tabよりも大きいか否かを判定する。また、判定部350は、Cac[j]と閾値Tacを比較し、Cac[j]が閾値Tacよりも大きいか否かを判定する。
判定部350は、Cab[j]が閾値Tabよりも大きく、かつ、Cac[j]が閾値Tacよりも大きい場合、領域N[j]に物体が「追加された」と判定する。判定部350は、物体が追加されたと判定した場合、M[j]に「追加フラグ」を立てる。
判定部350は、Cab[j]が閾値Tabよりも大きく、かつ、Cac[j]が閾値Tac以下の場合、領域N[j]から物体が「撤去された」と判定する。判定部350は、物体が撤去されたと判定した場合、M[j]に「撤去フラグ」を立てる。
判定部350は、Cab[j]が閾値Tab以下の場合、領域N[j]の画像が「変化していない」と判定する。判定部350は、変化していないと判定した場合、M[j]に「変化無しフラグ」を立てる。なお、判定部350は、N[j]がマスク領域の場合、M[j]に「マスク中フラグ」を立てる。
判定部350は、M[0]〜M[R−1]を参照し、「追加フラグ」が一つでも立っているか否かを判定する。例えば、M[j]に追加フラグが立っていた場合、判定部350は、Qa[j]の画像と、Qc[0]〜Qc[j−1]、Qc[j+1]〜Qc[R]の画像を合成し、合成した画像を画像データ360aに格納する。
また、判定部350は、M[0]〜M[R−1]を参照し、「撤去フラグ」が一つでも立っているか否かを判定する。判定部350は、撤去フラグが一つでも立っている場合、直前に画像データ360aに記録した画像を削除する。
領域N[j]に物体が追加された後に撤去された場合、かかる物体は放置されていないので、画像として残す必要がない。判定部350は、物体が追加された後に撤去された場合、追加された時点で格納した画像を画像データ360aから削除するので、記憶部360が記憶する画像のデータ量を削減することができる。
次に、本実施例4にかかる画像処理装置300の処理手順について説明する。図23および図24は、本実施例4にかかる画像処理装置300の処理手順を示すフローチャートである。図23に示すように、画像処理装置300は、画像を取得し(ステップS401)、jの値を0に設定する(ステップS402)。
画像処理装置300は、jの値がRの値未満であるか否かを判定する(ステップS403)。画像処理装置300は、jの値がRの値未満の場合(ステップS404,Yes)、Cp[j]を算出し(ステップS405)、Cp[j]が閾値T以上であるか否かを判定する(ステップS406)。画像処理装置300は、Cp[j]が閾値T以上の場合(ステップS407,Yes)、N[j]に数値NNを設定し(ステップS408)、ステップS409に移行する。なお、N[j]の初期値を0とする。
画像処理装置300は、Cp[j]が閾値T未満の場合(ステップS407,No)、S[j]の画像をN[j]に含まれる画像P[j]に更新する(ステップS409)。画像処理装置300は、jの値に1を加算した値をjに設定し(ステップS410)、ステップS403に移行する。
ところで、画像処理装置300は、jの値がRの値以上の場合(ステップS404,No)、jの値を0に設定し(ステップS411)、jの値がRの値未満であるか否かを判定する(ステップS412)。画像処理装置300は、jの値がRの値以上の場合(ステップS413,No)、M[0]〜M[R−1]のフラグに応じて画像を記録・削除する(ステップS414)。
一方、画像処理装置300は、jの値がRの値未満の場合(ステップS413,Yes)、図24のステップS415に移行する。図24において、画像処理装置300は、N[j]の値が0より大きいか否かを判定する(ステップS415)。
画像処理装置300は、N[j]の値が0よりも大きい場合(ステップS416,Yes)、N[j]の値から1を減算した値をN[j]の値に設定する(ステップS417)、画像処理装置300は、M[j]に「マスク中フラグ」を立て(ステップS418)、ステップS432に移行する。
一方、画像処理装置300は、N[j]の値が0以下の場合(ステップS416,No)、フィルタリングを実行し(ステップS419)、Cab[j]を算出し(ステップS420)、Cac[j]を算出する(ステップS421)。
画像処理装置300は、Cab[j]の値がTabよりも大きいか否かを判定する(ステップS422)。画像処理装置300は、Cab[j]の値がTab以下の場合(ステップS423,No)、M[j]に「変化なしフラグ」を立て(ステップS424)、ステップS432に移行する。
一方、画像処理装置300は、Cab[j]の値がTabよりも大きい場合(ステップS423,Yes)、Cac[j]がTacよりも大きいか否かを判定する(ステップS425)。画像処理装置300は、Cac[j]がTac以下の場合(ステップS426,No)、M[j]に「撤去フラグ」を立てる(ステップS427)。画像処理装置300は、Qz[j]の画像をQc[j]の画像に設定し(ステップS428)、ステップS430に移行する。
一方、画像処理装置300は、Cac[j]がTacより大きい場合(ステップS426,Yes)、M[j]に「追加フラグ」を立てる(ステップS429)。画像処理装置300は、Qz[j]の画像をQa[j]の画像に設定し(ステップS430)、Qz[j]の画像をQb[j]の画像に設定する(ステップS431)。画像処理装置300は、jの値に1を加算した値をjに設定し(ステップS432)、図23のステップS413に移行する。
上述してきたように、本実施例4にかかる画像処理装置300は、画像を複数の領域に分割し、輝度が大きく変化する領域をマスク領域として特定し、マスク領域を放置物の検出対象から外す。したがって、放置物の検出対象となる領域を絞り込むことができ、処理負荷を軽減することができる。
なお、本実施例4にかかる画像処理装置300は、マスク領域を特定した場合、一定時間経過後、マスク領域を解除しているがこれに限定されるものではない。例えば、マスク設定部320は、Cp[j]の値が閾値Tよりも大きくなる回数をカウントする。そして、マスク設定部320は、カウントした回数が所定回数以上となった場合に、領域N[j]を永久にマスク領域として設定してもよい。例えば、マスク設定部320は、領域N[j]の値を限りなく大きな数値に設定する。
また、Cp[j]の値が閾値Tよりも大きくなる回数が所定回数を下回る領域は、人の手が届かず、壁や天井のように物理的に放置物が置かれない領域であると考えられる。ここで、物理的に放置物がおかれない領域を基準領域と表記する。この基準領域の輝度値や色合いの変化に応じて、他の領域の輝度値や色合いを調整してもよい。例えば、部屋に明かりが灯った場合、画像全体の輝度値が変化してしまうので、各領域において物体が追加されたと誤判定する恐れがある。
したがって、画像処理装置300は、基準領域の輝度値がΔH高くなった場合に、各領域の画像の輝度値をΔHだけ低くすれば、画像全体の輝度値が変化した場合の誤判定を防止することができる。図25は、永久にマスクする領域および基準領域を説明するための図である。
図25に示すように、床や廊下は人が通過する領域であり、変化が激しいブロックに相当するため、永久にマスクする。壁や天井は、人がとおらず、物体も放置されないため、変化が無なく基準領域に相当する。テーブルが存在する領域は、各種の物体が放置される可能性が高いため、かかる領域を監視対象とする。
また、本実施例4にかかる画像処理装置300は、閾値Tab、Tacの値を固定して用いていたがこれに限定されるものではない。画像処理装置300は、領域ごとに異なる閾値Tab、Tacを設定してもよい。
例えば、物体が追加された回数をカウントし、カウントした回数に応じて、閾値Tab、Tacの値を調整してもよい。例えば、物体が追加された回数が所定回数未満となる領域は、滅多に物体が放置されない領域である。このような領域に物体が放置される可能性が低いので、画像処理装置300は、かかる領域において物体が追加されたと判定しにくくなるように閾値Tab、Tacを調整する。具体的に、物体が追加された回数が所定回数未満となる領域をN[j]とすると、Cab[j」と比較する閾値Tabに所定値を加算し、Cac[j」と比較する閾値Tacに所定値を加算する。
また、画像処理装置300は、人物を検出する焦電センサを利用して、画像を記録するか否かを判定してもよい。焦電センサが人を検出していない間は、物体が追加されることは考えにくい。したがって、画像処理装置300は、焦電センサが人を検出している間に、物体が追加されたと判定した場合に、追加された物体の画像を記憶するようにしてもよい。または、画像処理装置300は、焦電センサが人を検出していない場合、画像Qcを画像PやQzに上書きしてもよい。
ところで、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、画像取得部110、フィルタリング部120、画像比較部130を画像処理装置100の外部装置としてネットワーク経由で接続するようにしてもよい。
なお、画像処理装置100は、既知のパーソナルコンピュータ、ワークステーション、携帯電話、PHS端末、移動体通信端末またはPDAなどの情報処理装置に、上記した各部110〜150の各機能を搭載することによって実現することもできる。
図26は、実施例にかかる画像処理装置を構成するコンピュータのハードウェア構成を示す図である。図26に示すように、このコンピュータ400は、各種演算処理を実行するCPU(Central Processing Unit)410と、ユーザからのデータの入力を受け付ける入力装置420と、モニタ430を有する。また、コンピュータ400は、記憶媒体からプログラム等を読取る媒体読み取り装置440と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置450を有する。また、コンピュータ400は、画像を撮影するカメラ460と、各種情報を一時記憶するRAM(Random Access Memory)470と、ハードディスク装置480を有する。各装置410〜480は、バス490に接続される。
そして、ハードディスク装置480には、図8に示したフィルタリング部120、画像比較部130、判定部140と同様の機能を有する画像処理プログラム481と、図8の記憶部150に記憶される画像データ150aに対応する画像データ482とが記憶される。なお、画像データ482を、適宜分散させ、ネットワークを介して接続された他のコンピュータに記憶させておくこともできる。
CPU410が画像処理プログラム481をハードディスク装置480から読み出してRAM470に展開することにより、画像処理プログラム481は、画像処理プロセス471として機能するようになる。そして、画像処理プロセス471は、画像データ482に対する画像の登録・削除を実行する。
なお、上記の画像処理プログラム481は、必ずしもハードディスク装置480に格納されている必要はなく、CD−ROM等の記憶媒体に記憶されたプログラムを、コンピュータ400が読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等にこのプログラムを記憶させておき、コンピュータ200がこれらからプログラムを読み出して実行するようにしてもよい。