(57)【要約】【課題】動きの有る領域を検出する処理にかかる負荷の抑制を図ること。【解決手段】画像処理装置１００は、処理対象フレームとなるフレームｆ３と他のフレームｆ２との対応するブロック間の差分の有無を示す情報ｄｆ２＿３を取得する。また、画像処理装置１００は、２つのフレームとして、フレームｆ１、ｆ２の対応するブロック間の差分の有無を特定する情報ｄｆ１＿２を取得する。そして、画像処理装置１００は、情報ｄｆ２＿３、および情報ｄｆ１＿２に基づいて、処理対象フレームとなるフレームｆ３から、動きが有る領域を検出する。具体的には、例えば、画像処理装置１００は、情報ｄｆ２＿３が示すあるブロックにおける対応するブロック間の差分が有りを示す、または、情報ｄｆ１＿２が示すあるブロックにおける対応するブロック間の差分が有りを示す場合に、あるブロックが動きが有る領域であると検出する。【選択図】図１
2016024735.tif 000002
【特許請求の範囲】
【請求項１】
連続して撮像された複数のフレームのうち、処理対象フレーム内の画素の値と他のフレーム内の画素の値とに基づいた対応するブロック間の差分の有無、および前記処理対象フレームとは異なる２つのフレーム内の画素の値に基づいた対応するブロック間の差分の有無に基づいて、前記処理対象フレームから動きが有る領域を検出する検出部を、
有することを特徴とする画像処理装置。
【請求項２】
前記処理対象フレーム内の各画素の値と前記他のフレーム内の各画素の値とに基づいた対応する各ブロック間の差分の有無を示す第１の差分マップ、および前記２つのフレーム内の各画素値に基づいた対応する各ブロック間の差分の有無を示す第２の差分マップの論理和となる論理和マップを生成する生成部を有し、
前記検出部は、
生成した前記論理和マップに基づいて、前記処理対象フレームから動きが有る領域を検出する、
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記検出部は、
前記論理和マップ内で差分有りを示す画素に基づいて形成される領域から、前記第１の差分マップ内の差分ありを示す画素のうちの前記領域内の画素を含む矩形領域を検出することにより、前記処理対象フレームから動きが有る領域を検出する、
ことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記処理対象フレームから、検出した前記動きが有る領域を切り出す切出部を、
有することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
検出した前記動きが有る領域の大きさを出力する出力部を、
有することを特徴とする請求項３または４に記載の画像処理装置。
【請求項６】
検出した前記動きが有る領域の個数を出力する出力部を、
有することを特徴とする請求項３〜５のいずれか一つに記載の画像処理装置。
【請求項７】
検出した前記動きが有る領域を大きさに応じてグループに分類する分類部と、
分類した前記グループに属する前記動きが有る領域の個数と前記グループに対応する大きさとを対応付けて出力する出力部と、
を有することを特徴とする請求項３〜６のいずれか一つに記載の画像処理装置。
【請求項８】
コンピュータが、
連続して撮像された複数のフレームのうち、処理対象フレーム内の画素の値と他のフレーム内の画素の値とに基づいた対応するブロック間の差分の有無、および前記処理対象フレームとは異なる２つのフレーム内の画素の値に基づいた対応するブロック間の差分の有無に基づいて、前記処理対象フレームから動きが有る領域を検出する、
処理を実行することを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、および画像処理方法に関する。
【背景技術】
【０００２】
従来、連続して撮像された複数のフレームにおいて、フレーム間の差分を取得する技術がある。関連する先行技術として、例えば、各フレームをマトリックス状のブロック画像に分割し、分割した画像内の動き部分と静止部分を振り分けて、動き部分をフレーム間差分により情報圧縮し、静止部分を予め伝送処理対象外とするものがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−３０３２５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術によれば、フレームから動きの有る領域を検出する処理にかかる負荷が増大する。具体的には、例えば、処理対象フレームから動きの有る領域を検出するために、動きベクトル演算や輪郭抽出処理を行うと、負荷が増大化する。また、例えば、動きの有る領域を検出する処理にかかる負荷を抑制するために、フレーム間の差分を動きの有る領域として検出すると、物体が移動しているにも関わらずフレーム間で同色となった物体内の箇所が動きの有る領域として検出されない場合がある。物体が移動しているにも関わらずフレーム間で同色となった物体内の箇所が動きの有る領域として検出されなかった結果、一つの動体を複数の動体として検出してしまうおそれがある。
【０００５】
１つの側面では、本発明は、動きの有る領域を検出する処理にかかる負荷を抑制することができる画像処理装置、および画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、連続して撮像された複数のフレームのうち、処理対象フレーム内の画素の値と他のフレーム内の画素の値とに基づいた対応するブロック間の差分の有無、および処理対象フレームとは異なる２つのフレーム内の画素の値に基づいた対応するブロック間の差分の有無に基づいて、処理対象フレームから動きが有る領域を検出する画像処理装置、および画像処理方法が提案される。
【発明の効果】
【０００７】
本発明の一態様によれば、動きの有る領域を検出する処理にかかる負荷を抑制することができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態にかかる画像処理装置の動作例を示す説明図である。
【図２】図２は、監視システム２００のシステム構成例を示す説明図である。
【図３】図３は、画像処理装置１００のハードウェア構成例を示すブロック図である。
【図４】図４は、比較パターン４００の各パターンを示す説明図である。
【図５】図５は、周辺ブロックを説明する説明図である。
【図６】図６は、画像処理装置１００の機能構成例を示すブロック図である。
【図７】図７は、差分縮小マップおよび動体抽出マップの作成の一例を示す説明図である。
【図８】図８は、差分縮小マップおよび動体抽出マップの作成結果例を示す説明図である。
【図９】図９は、動体抽出マップ周辺ブロック更新の一例を示す説明図である。
【図１０】図１０は、過去の差分縮小マップにより動体抽出マップを上書きする一例を示す説明図である。
【図１１】図１１は、縦方向および横方向差分有無配列の作成の一例を示す説明図である。
【図１２】図１２は、動体抽出マップの再構築の一例を示す説明図である。
【図１３】図１３は、動体抽出の一例を示す説明図である。
【図１４】図１４は、画像処理手順の一例を示すフローチャートである。
【図１５】図１５は、差分縮小マップおよび動体抽出マップ作成処理手順の一例を示すフローチャートである。
【図１６】図１６は、動体抽出マップ周辺ブロック更新処理手順の一例を示すフローチャートである。
【図１７】図１７は、動体抽出マップ上書き処理手順の一例を示すフローチャートである。
【図１８】図１８は、縦方向および横方向差分有無配列作成処理手順の一例を示すフローチャートである。
【図１９】図１９は、動体抽出マップ再構築処理手順の一例を示すフローチャートである。
【図２０】図２０は、動体検出処理手順の一例を示すフローチャート（その１）である。
【図２１】図２１は、動体検出処理手順の一例を示すフローチャート（その２）である。
【図２２】図２２は、動体検出処理手順の一例を示すフローチャート（その３）である。
【発明を実施するための形態】
【０００９】
以下に図面を参照して、開示の画像処理装置、および画像処理方法の実施の形態を詳細に説明する。
【００１０】
図１は、本実施の形態にかかる画像処理装置の動作例を示す説明図である。図１において、画像処理装置１００は、画像データとなる複数のフレームの中から動きのある領域を検出するコンピュータである。複数のフレームは、例えば、定点に設置された監視用のカメラ１０１が撮影したデータである。カメラ１０１は、所定の画素数の画像データをフレーム単位で連続的に画像処理装置１００に出力する。例えば、カメラ１０１は、所定の画素数として、ＱＶＧＡ（Ｑｕａｒｔｅｒ  Ｖｉｄｅｏ  Ｇｒａｐｈｉｃｓ  Ａｒｒａｙ）：３２０×２４０＝７６８００画素のフレームを連続的に出力する。
【００１１】
ここで、カメラ１０１が撮像した複数のフレームを効率よく送信する場合には、フレーム間の差分を抽出し、差分を示す情報を送信することが考えられる。ここで、差分があった部分を囲うようにして抽出すると、差分のなかった部分も含まれることになり、データサイズが大きくなってしまう。個々の動体を別個に切り出すには、動きベクトル演算や、輪郭抽出処理、また、動きベクトル演算や、輪郭抽出処理に伴う膨張、縮小などのモルフォロジー処理、およびラベリング処理を行うことになり、処理負荷が高くなる。また、２つのフレームの間の差分を取ると、１つの動体が動いた結果、差分の有る領域が複数に分割され、１つの動体を複数の動きの有る領域として検出してしまう恐れがある。
【００１２】
そこで、画像処理装置１００は、直前フレームとの差分の有無と数フレーム前の２つのフレーム間の差分の有無を基に対象フレームから動体を検出する。これにより、画像処理装置１００は、色の変化が乏しくても数フレーム前の差分を基に補完して精度を確保しつつ負荷を抑制できる。
【００１３】
図１に示す画像処理装置１００は、カメラ１０１が連続的に撮像したフレームｆ１〜ｆ３を取得する。ここで、カメラ１０１は、フレームｆ１、ｆ２、ｆ３の順に撮像したものとする。また、フレームｆ１〜ｆ３は、動体として、走行する自家用自動車を映したものである。ここで、画像処理装置１００は、フレームｆ３を処理対象フレームとして、処理フレームから動きが有る領域を検出するものとする。
【００１４】
画像処理装置１００は、処理対象フレーム内の画素の値と他のフレーム内の画素の値とに基づいた対応するブロック間の差分の有無、および処理対象フレームとは異なる２つのフレーム内の画素の値に基づいた対応するブロック間の差分の有無を取得する。ここで、他のフレームと、２つのフレームのいずれか一方のフレームが、同一のフレームでもよいし、異なるフレームでもよい。また、画像処理装置１００が、処理対象フレームと他のフレームとの対応するブロック間の差分の有無、および２つのフレームの対応するブロック間の差分の有無を特定してもよいし、他の装置が特定してもよい。
【００１５】
また、対応するブロック間とは、２つのフレーム内の同一位置のブロック同士のことである。具体的には、例えば、対応するブロック間は、ブロックの大きさが１×１画素であるとすると、一方のフレーム内のある画素と、他方のフレーム内のある画素と同一位置の画素のことである。また、対応するブロック間は、２つのフレームを分割した複数のブロックのうちの同一位置のブロックに属する画素同士のことでもよい。具体的には、例えば、対応するブロック間は、一方のフレーム内のあるブロックに属する画素群と、他方のフレーム内のあるブロックと同一位置のブロックに属する画素群のことである。ブロックの大きさとしては、どのような大きさでもよく、例えば、１×１画素以外に、４×４画素、８×８画素、４×８画素等でもよい。また、対応するブロック間の差分の有無は、対応するブロック内のある画素の値が異なれば差分有りとしてもよいし、画素の値の差分が閾値以上であれば差分有りとしてもよいし、ブロック内の画素の平均値の差分が閾値以上であれば差分有りとしてもよい。
【００１６】
図１の例では、画像処理装置１００は、処理対象フレームとなるフレームｆ３と他のフレームｆ２との対応するブロック間の差分の有無を示す情報ｄｆ２＿３を生成する。また、画像処理装置１００は、２つのフレームとして、フレームｆ１、ｆ２の対応するブロック間の差分の有無を特定する情報ｄｆ１＿２を生成する。情報ｄｆ１＿２、情報ｄｆ２＿３は、対応するブロック間の差分の有無を示す識別子群である。図１に示す情報ｄｆ１＿２、ｄｆ２＿３は、差分有りを示すブロックを黒とし、差分無しを示すブロックを白としたビットマップとして示す。図１が示す情報ｄｆ１＿２、ｄｆ２＿３は、自家用自動車の差分有りを示す領域がそれぞれ２つに分かれてしまっている。
【００１７】
画像処理装置１００は、情報ｄｆ２＿３、および情報ｄｆ１＿２に基づいて、処理対象フレームとなるフレームｆ３から、動きが有る領域を検出する。具体的には、例えば、画像処理装置１００は、情報ｄｆ２＿３が示すあるブロックの対応するブロック間の差分が有り、または、情報ｄｆ１＿２が示すあるブロックの対応するブロック間の差分が有りを示す場合に、あるブロックが動きが有る領域であると検出する。
【００１８】
ここで、画像処理装置１００は、１画素ずつ比較せずに、情報ｄｆ１＿２と情報ｄｆ２＿３との画素ごとの論理和を求めて、得られた論理和マップを用いて処理対象フレームから動きの有る領域を検出してもよい。１画素ずつ比較する場合、差分抽出に時間がかかるため、次のフレーム間差分抽出処理が間に合わなくなる恐れがある。また、１画素ずつ比較する方法では画素単位で差分を求めるので、各画素の些細な差をノイズとして一緒に抽出してしまうためノイズ除去の処理を行うことになる。これに対し、画素ごとの論理和は一括して行えるため、画像処理装置１００は、１画素ずつ比較する場合に比べて高速に処理を行うことができる。
【００１９】
図１の例では、画像処理装置１００は、情報ｄｆ１＿２と情報ｄｆ２＿３との画素ごとの論理和を行った論理和マップｏｆ３を生成する。図１に示す論理和マップｏｆ３は、差分有りを示すブロックを黒とし、差分無しを示すブロックを白としたビットマップとして示す。図１に示す論理和マップｏｆ３は、自家用自動車の差分有りを示す領域が結合されているため、画像処理装置１００は、論理和マップｏｆ３を参照して、自家用自動車１つに対して１つの動きが有る領域として検出することができる。
【００２０】
（監視システム２００のシステム構成例）
次に、本実施の形態にかかる監視システム２００のシステム構成例について説明する。
【００２１】
図２は、監視システム２００のシステム構成例を示す説明図である。図２において、監視システム２００は、画像処理装置１００と、画像受信装置２０６と、を含む。監視システム２００において、画像処理装置１００と画像受信装置２０６とは、ネットワーク２０７として、例えば、特定小電力無線等の伝送帯域が狭帯域（４０Ｋｂｐｓ）な無線伝送路を用いる。このほか、ネットワーク２０７としては、他に、携帯電話網や、無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、さらには有線のＬＡＮや、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのいずれか、または組み合わせて用いてもよい。
【００２２】
図２の例では、カメラ１０１によって「道路」の監視領域を監視し、カメラ１０１と画像処理装置１００が支柱２０３上の筐体２０４内に一体化して設置されている。画像処理装置１００の送信部は、アンテナ２０５を介して撮影した画像データを、ネットワーク２０７を介して画像受信装置２０６に送信する。図２に示すように、画像処理装置１００は、複数設置して画像受信装置２０６にそれぞれ画像データを送信することができる。画像処理装置１００は、画像データをデータ処理するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を有するＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等を用いることができる。
【００２３】
画像処理装置１００は、カメラ１０１が撮影した画像データを画像処理し、基準フレームについては、カメラ１０１が撮影した全画素を送信対象とする。以降、つぎの基準フレームまでの間の複数フレームについては、基準フレームに対して変化が生じた差分領域の画素だけを全画素の中から切り取って送信対象とする。また、以下の記載では、２つの基準フレームの間のフレームを、「予測フレーム」と呼称する。予測フレームが参照する基準フレームは、予測フレームの前方にあるフレームでもよいし、予測フレームの後方にあるフレームでもよい。例えば、画像処理装置１００は、あるフレームに対して、前方の基準フレームとの差分領域の画素数と、後方の基準フレームとの差分領域の画素数とを求め、画素数が少ない基準フレームを、参照先のフレームとしてもよい。
【００２４】
そして、画像処理装置１００は、画像処理後の画像データをネットワーク２０７に送信する。この際、画像処理装置１００は、フレーム番号と、切り取った画像の座標位置を付与して送信する。この座標位置は、基準フレーム上における切り取り位置を示す。フレーム番号は、順次連続する番号を付与するが、ネットワーク２０７が許容する最大送信サイズを超える場合には、一部のフレームを間引く間引き処理を行う。この間引き処理を行った場合には、間引いたフレームのフレーム番号は欠番となる。なお、受信側での円滑なフレーム復元のために、フレームを連続して間引くことは行わない。
【００２５】
画像受信装置２０６は、ネットワーク２０７に接続されるデータ受信器２１１と、監視システム２００の管理者が使用するデータ処理装置２１２と、を含む。データ処理装置２１２は、サーバ、ＰＣなどである。データ受信器２１１は、ネットワーク２０７を介して画像処理装置１００から送信された画像データを受信する。この際、データ受信器２１１は、受信した画像データが基準フレームであれば、そのまま画像データとして出力し、画像データが予測フレームであれば、受信した差分領域の画像データを基準フレームに重ねる。
【００２６】
データ受信器２１１は、これら基準フレームと予測フレームとを時系列にデータ処理装置２１２に出力する。この際、データ受信器２１１は、受信したフレーム番号にしたがい、フレームを復元し出力する。この際、画像処理装置１００による間引き処理が行われ、欠番となったフレームがあれば、この欠番に該当するフレームの出力を行わない。
【００２７】
データ処理装置２１２は、データ受信器２１１から出力された画像データを単にディスプレイに画像表示するだけに限らず、所定の画像解析プログラムを実行させることにより、監視領域の「道路」の交通状態を解析してもよい。また、図２の適用例では、監視領域を「道路」としたが、他に、監視システム２００は、監視領域として「畑」を監視したり、「店舗や住居」等を監視し、ネットワーク２０７を介して遠隔の画像受信装置２０６に画像データを送信してもよい。
【００２８】
また、図２の構成例では、画像受信装置２０６をデータ受信器２１１と、データ処理装置２１２とに分けて説明し、データ受信器２１１が受信した画像データの復元を行う構成としたが、これに限らない。データ受信器２１１については、単にネットワーク２０７を介して画像データを受信してデータ処理装置２１２に出力し、データ処理装置２１２が上述した基準フレームと予測フレームとの復元を行う構成としてもよい。
【００２９】
（画像処理装置１００のハードウェア構成例）
図３は、画像処理装置１００のハードウェア構成例を示すブロック図である。図３において、画像処理装置１００は、ＣＰＵ３０１と、メモリ３０２と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、磁気ディスクドライブ３０４と、磁気ディスク３０５と、を有する。また、各構成部は、バス３００によってそれぞれ接続される。
【００３０】
ここで、ＣＰＵ３０１は、画像処理装置１００の全体の制御を司る。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。
【００３１】
Ｉ／Ｆ３０３は、通信回線を通じてネットワーク２０７に接続され、ネットワーク２０７を介して他のコンピュータに接続される。そして、Ｉ／Ｆ３０３は、ネットワーク２０７と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。Ｉ／Ｆ３０３には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００３２】
磁気ディスクドライブ３０４は、ＣＰＵ３０１の制御にしたがって磁気ディスク３０５に対するデータのリード／ライトを制御する。磁気ディスク３０５は、磁気ディスクドライブ３０４の制御で書き込まれたデータを記憶する。
【００３３】
なお、画像処理装置１００は、上述した構成部のほか、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、キーボード、マウス、ディスプレイなどを有することにしてもよい。また、図２に示した画像受信装置２０６についても、上述した画像処理装置１００と同様のハードウェア構成例により実現することができる。
【００３４】
（画像処理装置１００のテーブル内容）
つぎに、図２に示した画像処理装置１００が有するテーブル内容について説明する。画像処理装置１００は、差分縮小マップをフレーム単位で更新自在に保持する。また、処理対象フレームのブロックと、以後のフレームのブロックとの差分を比較する際に用いる比較パターンを保持する。これら差分縮小マップと、比較パターンは、例えば、図３に示したメモリ３０２、磁気ディスク３０５等の記憶装置により実現される。
【００３５】
差分縮小マップについては、画像データ上のブロックの配置位置と同じ配列の識別ブロックを有し、識別ブロックに差分の有無が識別子として格納される。画像処理装置１００は、フレームごとに差分の有無を判断し、判断結果を差分マップの複数の識別ブロックに保持する。
【００３６】
図４は、比較パターン４００の各パターンを示す説明図である。比較パターン４００は、図４の（ａ）〜（ｃ）の３つの比較パターン４０１ａ〜４０１ｃを有する。いずれの比較パターンにおいても、４×４画素の検出範囲を有する。この検出範囲は、画像データの一つのブロックの大きさ（４×４画素）に対応している。そして、この比較パターン４００は、処理対象フレームについて基準フレームとの差分を検出する際に、参照される。ブロックの大きさは、どのような大きさでもよく、４×４画素以外にも、例えば、８×８画素でもよい。
【００３７】
この比較パターン４００には、基準フレームに対する処理対象フレームの差分を比較する際に、走査する画素が設定される。画像処理装置１００は、図４の（ａ）〜（ｃ）の３つの比較パターン４０１ａ〜４０１ｃにおいて、斜線部分で示した画素を走査する。
【００３８】
そして、画像処理装置１００は、１フレーム前の更新した差分縮小マップに基づき、前回の差分の判断結果となる前回の差分の有無に応じて、一つのブロック内で走査する画素を、図４の（ａ）〜（ｃ）の３つの比較パターン４０１を切り替えて用いる。
【００３９】
（ａ）第１（差分無し用）比較パターン
図４の（ａ）に示す比較パターン４０１ａは、差分縮小マップの識別ブロック上で前回差分がなく切り取らなかった「識別子＝０」に対応するブロックの領域の画像データ（基準フレームと処理対象フレーム）の比較時に用いられる。この比較パターン４０１ａでは、画像処理装置１００は、１ブロックあたり４×４＝１６画素のうちのいずれかの２画素（図４中斜線で示す４０２ａ）だけを走査する。
【００４０】
そして、画像処理装置１００は、同じ画素位置の基準フレームと処理対象フレームの画像データとを比較する際、走査対象の２画素（４０２ａ）のうち、１／２（＝１画素）以上の画素が所定の差分判定用の閾値を超えた場合に、このブロックを差分有りのブロックとして判定する。判定結果は、差分縮小マップの対応する識別ブロックに識別子を更新し記憶する。例えば、画像処理装置１００は、走査した２画素のうち、１画素でも画素の濃度値や色あいに基づく閾値を超えたか否かを判定する。
【００４１】
（ｂ）第２（差分有り用）比較パターン
図４の（ｂ）に示す比較パターン４０１ｂは、差分縮小マップで前回差分が有り、切り取った「識別子＝１」の識別ブロックに対応するブロックの位置に対応する画像データの比較時に用いられる。比較パターン４０１ｂでは、画像処理装置１００は、１ブロックに含まれる１６画素のうちの４ブロック（４０２ｂ）を走査する。
【００４２】
そして、画像処理装置１００は、同じ画素位置の基準フレームと処理対象フレームの画像データを比較する際、走査対象の４画素（４０２ｂ）のうち、３／４（＝３画素）以上の画素が所定の差分判定用の閾値を超えた場合に、このブロックを差分有りのブロックとして判断する。画像処理装置１００は、判定結果として、差分縮小マップの対応する識別ブロックの識別子を更新し記憶する。
【００４３】
（ｃ）第３（差分無し周辺用）比較パターン
図４の（ｃ）に示す比較パターン４０１ｃは、差分縮小マップで前回差分がなく切り取らなかった「識別子＝０」の識別ブロックの周辺ブロックの変化（差分）を考慮したものである。比較パターン４０１ｃでは、画像処理装置１００は、識別ブロックが「識別子＝０」のときに、周辺ブロックに「識別子＝１」があるか検索する。そして、画像処理装置１００は、周辺ブロックに「識別子＝１」があった場合、識別ブロックの「識別子＝０」の位置に対応するブロックについて、１ブロックに含まれる１６画素のうちのいずれかの８ブロック（４０２ｃ）を走査する。
【００４４】
そして、画像処理装置１００は、同じ画素位置の基準フレームと処理対象フレームの画像データとを比較する際、走査対象の８画素（４０２ｃ）のうち、６／８（＝６画素）以上の画素が所定の差分判定用の閾値を超えた場合に、このブロックを差分有りのブロックとして判断する。画像処理装置１００は、判定結果として、差分縮小マップの対応する識別ブロックの識別子を更新し記憶する。
【００４５】
上記例における、基準フレームと処理対象フレームの画像データ上で走査する画素数の違いについて説明する。図４の（ａ）の比較パターン４０１ａは走査する画素数が少ないのに対し、図４の（ｂ）の比較パターン４０１ｂは、走査する画素数を多く設定する。
【００４６】
これら、図４の（ａ）〜（ｃ）の比較パターン４０１ａ〜４０１ｃを対比してみる。画像処理装置１００は、図４の（ｂ）の比較パターン４０１ｂを基準とすると、前回差分がなかったブロックについては今回についても差分がない可能性が高いため、図４の（ａ）の比較パターン４０１ａを用いて走査する画素数を減らして判断する。一方、前回差分がなかったブロックの周辺ブロックに差分（変化）があった場合には、画像処理装置１００は、今回変化する可能性が高く、図４の（ｃ）の比較パターン４０１ｃを用い、走査する画素数を増やして判断する。このように、画像処理装置１００は、変化（動き）予測に対応した画素数を用いてブロックの差分検出を行う。
【００４７】
ここで、上記の比較パターンに設定する走査（参照）用の画素数、画素位置、および比較パターン別の差分判定に用いる画素数および閾値は、画像処理装置１００の設計者によって指定することができる。但し、いずれの比較パターンにおいても、１ブロックあたりの全画素以下の画素を走査（参照）する設定とする。これにより、画像データの全画素を一つずつ走査して差分判定するのに比して、比較する際の画素数を減らして差分判定処理を簡単に行うことができるようになる。
【００４８】
図５は、周辺ブロックを説明する説明図である。図５には、差分縮小マップ内の複数の識別ブロック（例として３×３＝９ブロック）５０１を例示してある。周辺ブロックとは、図５に示すように、差分判定対象の識別ブロック（５０１Ａ）を囲む周辺の８個のブロック（５０１Ｂ）を指す。
【００４９】
そして、図５の（ａ）に示すように、周辺ブロック５０１Ｂに識別子が「１」のブロックがない場合には、第１の比較パターン（図４（ａ））の処理を行う。図５の（ｂ）に示すように、周辺ブロック５０１Ｂに一つでも識別子が「１」のブロックがある（５０１Ｂｎ）場合には、第３の比較パターン（図４（ｃ））の処理を行う。図５の（ｃ）に示すように、差分検出対象の識別ブロック５０１Ａの識別子が「１」の場合には、第２の比較パターン（図４（ｂ））の処理を行う。
【００５０】
上記のように、画像処理装置１００は、いずれの比較パターン４０１においても、基準フレームと処理対象フレームのブロック内の一部の画素（全体の１／８〜１／２の画素）の差分を走査（参照）する。従って、画像処理装置１００は、画像データの全画素を走査しなくてよく、差分検出を簡単な処理で行えるようになり、処理負担を抑えることができる。また、画像処理装置１００は、高速に効率よく差分を検出できるようになる。
【００５１】
さらには、ブロック分割をしたとしてもブロック内の全画素について差分を検出すればそれだけノイズも差分として抽出してしまいノイズ除去を行わなければならない。これに対し、上記構成によれば、ブロック内の一部画素を用いて差分を検出するため、ノイズ抽出自体が低減できることとなり、ノイズ除去処理をしなくてよく、この点でも画像処理装置１００に処理負担をかけない。
【００５２】
（画像処理装置１００の機能構成例）
図６は、画像処理装置１００の機能構成例を示すブロック図である。画像処理装置１００は、生成部６０１と、検出部６０２と、切出部６０３と、分類部６０４と、出力部６０５と、を含む。ここで、生成部６０１〜出力部６０５は、ハードウェアとして組み込まれた回路ブロックである。例えば、ハードウェアとして組み込まれた回路ブロックは、バス３００に接続する。
【００５３】
また、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、生成部６０１〜出力部６０５の機能を実現してもよい。記憶装置とは、具体的には、例えば、図３に示したメモリ３０２、磁気ディスク３０５などである。また、各部の処理結果は、ＣＰＵ３０１のレジスタや、ＣＰＵ３０１のキャッシュメモリ等に格納される。
【００５４】
生成部６０１は、第１の差分マップ、および第２の差分マップの論理和となる論理和マップを生成する。ここで、第１の差分マップは、処理対象フレーム内の各画素の値と他のフレーム内の各画素の値とに基づいた対応する各ブロック間の差分の有無を示す。また、第２の差分マップは、２つのフレーム内の各画素値に基づいた対応する各ブロック間の差分の有無を示す。
【００５５】
検出部６０２は、処理対象フレーム内の画素の値と他のフレーム内の画素の値とに基づいた対応するブロック間の差分の有無および２つのフレーム内の画素の値に基づいた対応するブロック間の差分の有無に基づき、処理対象フレームから動きが有る領域を検出する。ここで、２つのフレームは、処理対象フレームとは異なるフレームである。
【００５６】
また、検出部６０２は、生成部６０１が生成した論理和マップに基づいて、処理対象フレームから動きが有る領域を検出してもよい。例えば、検出部６０２は、論理和マップ内で差分有りを示す画素に基づいて形成される領域を、動きが有る領域として検出する。
【００５７】
また、検出部６０２は、論理和マップ内で差分有りを示す画素に基づいて形成される領域から、第１の差分マップ内の差分有りを示す画素のうちの領域内の画素を含む矩形領域を検出することにより、処理対象フレームから動きが有る領域を検出してもよい。具体的な検出方法は、図１３に示す。
【００５８】
切出部６０３は、処理対象フレームから、検出部６０２が検出した動きが有る領域を切り出す。切り出した領域となる画像データは、画像受信装置２０６に送信される。
【００５９】
分類部６０４は、検出部６０２が検出した動きが有る領域を大きさに応じてグループに分類する。例えば、画像処理装置１００は、予め、分類する大きさをいくつか記憶しておく。そして、検出部６０２が検出した動きが有る領域を、予め記憶した大きさのいずれかに分類する。
【００６０】
出力部６０５は、検出部６０２が検出した動きが有る領域の大きさを出力する。例えば、出力部６０５は、動きが有る領域の縦の値と横の値とを出力する。また、出力部６０５は、検出部６０２が検出した動きが有る領域の個数を出力してもよい。
【００６１】
また、出力部６０５は、分類部６０４が分類したグループに属する動きが有る領域の個数とグループに対応する大きさとを対応付けて出力してもよい。例えば、出力部６０５は、８×８画素の大きさを有する動きが有る領域の個数が３個であり、８×１６画素の大きさを有する動きが有る領域の個数が２個であるというように出力する。
【００６２】
また、出力部６０５は、複数のフレームに対して、分類部６０４が分類したグループに属する動きが有る領域の個数の累計とグループに対応する大きさとを対応付けて出力してもよい。さらに、このとき、出力部６０５は、分類部６０４が分類したグループに属する動きが有る領域の個数の累計を、グループに対応する大きさに応じた値で除算した値を出力してもよい。
【００６３】
具体的には、例えば、監視領域が高速道路であり、自家用自動車と、大型自動車しか通過しない場所であるとする。そして、自家用自動車は、平均時速１００ｋｍ／時、大型自動車は平均時速８０ｋｍ／時で監視領域を通過するものとする。これにより、１台の自家用自動車や１台の大型自動車がそれぞれおおよそ何枚のフレームに写るか予め計算することができる。従って、画像処理装置１００は、自家用自動車と分類する大きさの範囲と１台の自家用自動車がフレームに写る枚数と、大型自動車と分類する大きさの範囲と１台の大型自動車がフレームに写る枚数とを記憶しておく。
【００６４】
そして、出力部６０５は、自家用自動車を識別する情報に対応付けて、自家用自動車の累計を１台の自家用自動車がフレームに写る枚数で除算した値を出力する。同様に、出力部６０５は、大型自動車を識別する情報に対応付けて、大型自動車の累計を１台の大型自動車がフレームに写る枚数で除算した値を出力する。これにより、画像処理装置１００は、フレーム間で同一の動体であるという解析を行わずに、監視領域のより正確な交通量を出力することができる。
【００６５】
図７は、差分縮小マップおよび動体抽出マップの作成の一例を示す説明図である。図７では、カメラ１０１により撮像された複数のフレームｆ１〜ｆ３から、差分縮小マップおよび動体抽出マップを作成する例を示す。フレームｆ１〜ｆ３は、フレームｆ１、ｆ２、ｆ３の順で撮像されたフレームである。また、差分縮小マップとは、ブロックごとの差分を示す差分マップである。動体抽出マップは、動きが有る領域を検出するために用いるマップであり、初期状態では、差分縮小マップと同内容の情報を記憶する。
【００６６】
ここで、画像処理装置１００は、フレームｆ１とｆ２とを比較し、フレームｆ２とｆ３とを比較する。そして、画像処理装置１００は、処理対象となるフレームｆ１〜ｆ３をブロック分割して縮小マップを生成する。１つのブロックは４×４画素であり、処理対象フレームがＱＶＧＡであるとすると、８０×６０の縮小マップが得られる。
【００６７】
次に、画像処理装置１００は、各ブロックについて、対応する各ブロックの比較パターンを取得する。具体的な比較パターンは、図４に説明したとおりである。図７の例では、フレームｆ１とｆ２との差分のある箇所と、対応する比較パターンを重ねて表示した例をｄｆ１＿２として表示し、フレームｆ２とｆ３の差分のある箇所と、対応する比較パターンを重ねて表示した例をｄｆ２＿３として示す。
【００６８】
そして、画像処理装置１００は、フレームｆ２に対応する差分縮小マップｓｆ２を、フレームｆ１に対応する差分縮小マップｓｆ１と、フレームｆ１とｆ２との差分のある箇所と、対応する比較パターンとに基づいて作成する。具体的には、画像処理装置１００は、差分縮小マップｓｆ１を複製し、複製した差分縮小マップに対して、各ブロックにおいて比較パターンに基づいて差分有りのブロックか差分無しのブロックかを判断する。そして、画像処理装置１００は、複製した差分縮小マップについて、差分有りのブロックの値を識別子「２」に更新し、差分無しのブロックの値を識別子「０」に更新し、フレームｆ２に対応する差分縮小マップｓｆ２とする。また、画像処理装置１００は、差分縮小マップｓｆ１をさらに複製し、複製した差分縮小マップを、フレームｆ１に対応する動体抽出マップｍｆ１とする。
【００６９】
図７の例では、画像処理装置１００が同様な手順で作成した、フレームｆ２に対応する動体抽出マップｍｆ２、フレームｆ３に対応する差分縮小マップｓｆ３および動体抽出マップｍｆ３を作成した例を示す。また、図７で示す差分縮小マップｓｆおよび動体抽出マップｍｆは、表示を簡略化するため、８０×６０の識別子群のうちの一部分を示す。
【００７０】
図８は、差分縮小マップおよび動体抽出マップの作成結果例を示す説明図である。図８の例では、フレームｆ２に対応する差分縮小マップｓｆ２および動体抽出マップｍｆ２を示す。図８に示す差分縮小マップｓｆ２では、図７のフレームｆ２で示した右下の自動車が移動しているため、自動車の前後に対応するブロックが差分有りのブロックとなる。ここで、図８では、ハッチなしのブロックが差分無しのブロックであることを示し、ハッチありのブロックが差分有りのブロックであることを示す。
【００７１】
図８に示す差分縮小マップｓｆ２では、動体１つに対して、差分有りのブロックの塊が２つあるため、１つの動体を正しく検出できていない。以下の処理において、画像処理装置１００は、動体の検出精度を向上させる処理を行う。
【００７２】
図９は、動体抽出マップ周辺ブロック更新の一例を示す説明図である。図８で示した処理終了後、画像処理装置１００は、動体抽出マップの各ブロックについて、差分有りのブロックの周辺ブロックを差分有りのブロックとする。図９の例では、画像処理装置１００は、動体抽出マップｍｆ２の各ブロックについて、差分有りのブロックの周辺ブロックを、図９で示すように、差分有りのブロックとする。ここで、図９では、ハッチなしのブロックが差分無しのブロックであることを示し、ハッチありのブロックが差分有りのブロックであることを示す。さらに、濃いハッチを有するブロックが、図９で差分有りのブロックとしたブロックである。
【００７３】
差分有りのブロックの周辺ブロックを差分有りのブロックとすることにより、図９に示す動体抽出マップｍｆ２は、図８に示す動体抽出マップｍｆ２と比較すると、動体１つに対して差分有りのブロックの塊が複数あったものが、１つの塊となる場合がある。しかしながら、必ずしも動体１つに対して差分有りのブロックの塊が複数あったものが、１つの塊となるとは限らない。
【００７４】
図１０は、過去の差分縮小マップにより動体抽出マップを上書きする一例を示す説明図である。図９で示した処理終了後、画像処理装置１００は、動体抽出マップの各ブロックについて、過去の差分縮小マップの同じ位置のブロックが差分有りのブロックであれば、該当のブロックを差分有りのブロックにする。図１０の例では、図１０に示す動体抽出マップｍｆ２内の薄いハッチを付与したブロックが、過去の差分縮小マップとして、差分縮小マップｓｆ１で差分有りのブロックと同一位置であり、差分有りのブロックとした箇所である。ここで、図１０では、ハッチなしのブロックが差分無しのブロックであることを示し、ハッチありのブロックが差分有りのブロックであることを示す。さらに、薄いハッチを有するブロックが、図１０で差分有りのブロックとしたブロックである。
【００７５】
ここで、過去の差分縮小マップは、１つでもよいし複数でもよい。また、過去の差分縮小マップのうちのどの差分縮小マップを使用するかについては、画像処理装置１００の設計者が予め指定しておく。具体的には、監視領域を通過する動体の速度は予めわかるため、画像処理装置１００の設計者は、監視領域を通過する動体の速度に応じて、過去の差分縮小マップのうちの適切な差分縮小マップを指定しておく。具体的には、画像処理装置１００の設計者は、監視領域を通過する動体の速度が速ければ、処理対象フレームの直近の過去の差分縮小マップを用いるように指定し、動体の速度が遅ければ、処理対象フレームからより過去の差分縮小マップを用いるように指定する。これにより、画像処理装置１００は、動体１つに対して差分ありのブロックの塊が複数あったものを、１つの塊にすることができる。
【００７６】
ここで、図１０において、差分縮小マップｓｆ２が図６で説明した第１の差分マップに相当し、差分縮小マップｓｆ１が図６で説明した第２の差分マップに相当する。また、図１０における動体抽出マップｍｆ２が、図６で説明した論理和マップに相当する。
【００７７】
図１１は、縦方向および横方向差分有無配列の作成の一例を示す説明図である。図１０で示した処理終了後、画像処理装置１００は、動体抽出マップから、縦方向と横方向とのそれぞれについて、差分有りか無しかを示す縦方向差分有無配列と横方向差分有無配列とを用意し、前述の配列の各変数に、差分有りか無しかを設定する。ここで、図１１では、ハッチなしのブロックが差分無しのブロックであることを示し、ハッチありのブロックが差分有りのブロックであることを示す。
【００７８】
図１１の例では、画像処理装置１００は、図１１に示す動体抽出マップｍｆ２から、縦方向差分有無配列ｆ２ａ＿ｖと横方向差分有無配列ｆ２ａ＿ｈの各変数に、差分有りか無しかを設定する。例えば、画像処理装置１００は、横方向差分有無配列ｆ２ａ＿ｈの一番左の変数について、動体抽出マップｍｆ２の一番左の列の中に、差分有りのブロックがあるため、差分有りを示す「２」を設定する。
【００７９】
図１２は、動体抽出マップの再構築の一例を示す説明図である。図１１で示した処理終了後、画像処理装置１００は、縦方向差分有無配列と横方向差分有無配列とに基づいて、動体抽出マップを再構築する。ここで、図１２では、ハッチなしのブロックが差分無しのブロックであることを示し、ハッチありのブロックが差分有りのブロックであることを示す。
【００８０】
図１２の例では、画像処理装置１００は、縦方向差分有無配列ｆ２ａ＿ｖと横方向差分有無配列ｆ２ａ＿ｈとに基づいて、動体抽出マップｍｆ２を再構築する。具体的には、画像処理装置１００は、動体抽出マップｍｆ２の各ブロックについて、縦方向差分有無配列ｆ２ａ＿ｖと横方向差分有無配列ｆ２ａ＿ｈとの対応する変数が共に差分有りを示す場合、差分有りのブロックに設定する。
【００８１】
図１３は、動体抽出の一例を示す説明図である。図１２で示した処理終了後、画像処理装置１００は、差分縮小マップと動体抽出マップとに基づいて、動体を検出する。図１３では、ハッチなしのブロックと、斜線のハッチを有するブロックとが差分無しのブロックであることを示し、斜線のハッチ以外のハッチを有するブロックが差分有りのブロックであることを示す。
【００８２】
図１３の例では、画像処理装置１００は、差分縮小マップｓｆ２と動体抽出マップｍｆ２とに基づいて、動体を検出する。まず、画像処理装置１００は、図１３の（１）の処理として、動体抽出マップｍｆ２の各ブロックを、左上から右下にかけて、差分有りのブロックがあるか否かを探索する。差分有りのブロックを検出した場合、画像処理装置１００は、図１３の（２）の処理として、検出したブロックの右方向および下方向のそれぞれについて、差分無しのブロック、または終端のブロックを検出する。ここで、検出したブロックと、差分無しのブロック、または終端のブロックとを頂点として形成される矩形領域を、「抽出候補矩形領域」と呼称する。
【００８３】
次に、画像処理装置１００は、図１３の（３）の処理として、差分縮小マップｓｆ２内の抽出候補矩形領域内のブロックから、左上座標と右下座標とを取得する。左上座標と右下座標とにより形成される矩形領域が、動体を検出した領域となる。そして、図１３の（４）として、画像処理装置１００は、動体抽出マップｍｆ２内の抽出候補矩形領域内のブロックを、差分無しのブロックに設定する。
【００８４】
次に、本実施の形態にかかる画像処理装置１００が実行する画像処理を、図１４を用いて説明する。
【００８５】
図１４は、画像処理手順の一例を示すフローチャートである。画像処理は、カメラ１０１から撮像された処理対象フレームについて、動体を検出して検出した領域の画像データを画像受信装置２０６に送信する処理である。
【００８６】
画像処理装置１００は、差分縮小マップおよび動体抽出マップ作成処理を実行する（ステップＳ１４０１）。差分縮小マップおよび動体抽出マップ作成処理の詳細は、図１５で後述する。次に、画像処理装置１００は、動体抽出マップ周辺ブロック更新処理を実行する（ステップＳ１４０２）。動体抽出マップ周辺ブロック更新処理の詳細は、図１６で後述する。
【００８７】
そして、画像処理装置１００は、動体抽出マップ上書き処理を実行する（ステップＳ１４０３）。動体抽出マップ上書き処理の詳細は、図１７で後述する。次に、画像処理装置１００は、縦方向および横方向差分有無配列作成処理を実行する（ステップＳ１４０４）。縦方向および横方向差分有無配列作成処理の詳細は、図１８で後述する。そして、画像処理装置１００は、動体抽出マップ再構築処理を実行する（ステップＳ１４０５）。動体抽出マップ再構築処理の詳細は、図１９で後述する。
【００８８】
次に、画像処理装置１００は、動体検出処理を実行する（ステップＳ１４０６）。動体検出処理の詳細は、図２０〜図２２で後述する。そして、画像処理装置１００は、動体検出処理の処理結果として得られた左上座標と右下座標とから、画像を抽出する（ステップＳ１４０７）。次に、画像処理装置１００は、抽出した画像を画像受信装置２０６に送信する（ステップＳ１４０８）。
【００８９】
ステップＳ１４０７の処理において、画像処理装置１００は、動体検出処理の処理結果として得られた左上座標と右下座標とから、画像を抽出する処理の代わりに、次に示す２つの処理のいずれかを実行してもよい。１つ目の処理として、画像処理装置１００は、動体検出処理の処理結果として得られた左上座標と右下座標とから、動体のおおよその大きさを検出してもよい。また、２つ目の処理として、画像処理装置１００は、左上座標と右下座標との組から、動体の個数を計数してもよい。
【００９０】
さらに、１つ目と２つ目の処理を組み合わせた例として、監視領域を通過する動体の種類に応じた大きさは予めわかるため、画像処理装置１００は、予め決められた大きさに応じて、監視領域を通過する動体の種類ごとに計数してもよい。例えば、画像処理装置１００は、画像処理装置１００の設計者によって、監視領域を自家用自動車が通過する際の大きさと、トラックが通過する際の大きさとを記憶しておく。そして、画像処理装置１００は、動体検出処理の処理結果として得られた左上座標と右下座標とから、通過した動体が自家用自動車かトラックかを判別し、自家用自動車およびトラックのそれぞれの通過数を計数する。これにより、画像処理装置１００は、監視領域の自動車の種別ごとの交通量を得ることができる。
【００９１】
ステップＳ１４０８の処理終了後、画像処理装置１００は、画像処理を終了する。画像処理を実行することにより、画像処理装置１００は、動体を検出して検出した領域の画像データを画像受信装置２０６に送信することができる。
【００９２】
図１５は、差分縮小マップおよび動体抽出マップ作成処理手順の一例を示すフローチャートである。差分縮小マップおよび動体抽出マップ作成処理は、差分縮小マップおよび動体抽出マップを作成する処理である。
【００９３】
画像処理装置１００は、処理対象フレームをブロック分割する（ステップＳ１５０１）。画像処理装置１００は、ブロック分割した結果、縮小マップを得る。次に、画像処理装置１００は、複数のブロックから先頭のブロックを選択する（ステップＳ１５０２）。そして、画像処理装置１００は、縮小マップから対応する選択したブロックの比較パターンを取得する（ステップＳ１５０３）。次に、画像処理装置１００は、比較パターンに基づいて、選択したブロック内の差分比較する（ステップＳ１５０４）。
【００９４】
そして、画像処理装置１００は、画素値の差分値が閾値を上回る場合に、該当の画素を差分画素としてカウントする（ステップＳ１５０５）。次に、画像処理装置１００は、選択したブロック中の差分画素が閾値を上回る場合に、選択したブロックを差分有りのブロックとして判定する（ステップＳ１５０６）。そして、画像処理装置１００は、判定結果から縮小マップと動体抽出マップとを更新する（ステップＳ１５０７）。次に、画像処理装置１００は、全てのブロックを選択したか否かを判断する（ステップＳ１５０８）。まだ選択していないブロックがある場合（ステップＳ１５０８：Ｎｏ）、画像処理装置１００は、次のブロックを選択する（ステップＳ１５０９）。そして、画像処理装置１００は、ステップＳ１５０３の処理に移行する。
【００９５】
一方、全てのブロックを選択した場合（ステップＳ１５０８：Ｙｅｓ）、画像処理装置１００は、差分縮小マップおよび動体抽出マップ作成処理を終了する。差分縮小マップおよび動体抽出マップ作成処理を実行することにより、画像処理装置１００は、差分縮小マップおよび動体抽出マップを作成することができる。
【００９６】
図１６は、動体抽出マップ周辺ブロック更新処理手順の一例を示すフローチャートである。動体抽出マップ周辺ブロック更新処理は、動体の輪郭を太くする処理である。
【００９７】
画像処理装置１００は、動体抽出マップ内の複数のブロックから先頭のブロックを選択する（ステップＳ１６０１）。次に、画像処理装置１００は、選択したブロックが差分有りブロックか否かを判断する（ステップＳ１６０２）。選択したブロックが差分有りブロックである場合（ステップＳ１６０２：Ｙｅｓ）、画像処理装置１００は、選択したブロックの周辺８ブロックを差分有りブロックに設定する（ステップＳ１６０３）。
【００９８】
ステップＳ１６０３の処理終了後、または、選択したブロックが差分無しブロックである場合（ステップＳ１６０２：Ｎｏ）、画像処理装置１００は、全てのブロックを選択したか否かを判断する（ステップＳ１６０４）。まだ選択していないブロックがある場合（ステップＳ１６０４：Ｎｏ）、画像処理装置１００は、次のブロックを選択する（ステップＳ１６０５）。そして、画像処理装置１００は、ステップＳ１６０２の処理に移行する。
【００９９】
一方、全てのブロックを選択した場合（ステップＳ１６０４：Ｙｅｓ）、画像処理装置１００は、動体抽出マップ周辺ブロック更新処理を終了する。動体抽出マップ周辺ブロック更新処理を行うことにより、画像処理装置１００は、動体の輪郭を太くすることができる。
【０１００】
図１７は、動体抽出マップ上書き処理手順の一例を示すフローチャートである。動体抽出マップ上書き処理は、過去の差分縮小マップを用いて差分縮小マップを上書きする処理である。ここで、過去の差分縮小マップは、図１０で説明したように、１つでもよいし、複数でもよい。図１７の説明では、過去の差分縮小マップは、処理対象フレームからみて全ての過去の差分縮小マップから、画像処理装置１００の設計者によって指定されたフレームの差分縮小マップであるとする。
【０１０１】
画像処理装置１００は、動体抽出マップ内の過去の差分縮小マップのうちのいずれかを選択する（ステップＳ１７０１）。次に、画像処理装置１００は、選択した差分縮小マップから先頭のブロックを選択する（ステップＳ１７０２）。そして、画像処理装置１００は、選択したブロックが差分有りブロックか否かを判断する（ステップＳ１７０３）。選択したブロックが差分有りブロックである場合（ステップＳ１７０３：Ｙｅｓ）、画像処理装置１００は、動体抽出マップの処理対象フレーム内の選択したブロックの同一位置のブロックを差分有りブロックに設定する（ステップＳ１７０４）。
【０１０２】
ステップＳ１７０４の処理終了後、または、選択したブロックが差分無しブロックである場合（ステップＳ１７０３：Ｎｏ）、画像処理装置１００は、選択した差分縮小マップ内の全てのブロックを選択したか否かを判断する（ステップＳ１７０５）。選択した差分縮小マップ内に選択していないブロックがある場合（ステップＳ１７０５：Ｎｏ）、画像処理装置１００は、選択した差分縮小マップ内の次のブロックを選択する（ステップＳ１７０６）。そして、画像処理装置１００は、ステップＳ１７０３の処理に移行する。
【０１０３】
一方、選択した差分縮小マップ内の全てのブロックを選択した場合（ステップＳ１７０５：Ｙｅｓ）、画像処理装置１００は、過去の差分縮小マップの全てを選択したか否かを判断する（ステップＳ１７０７）。過去の差分縮小マップのうち選択していない差分縮小マップがある場合（ステップＳ１７０７：Ｎｏ）、画像処理装置１００は、次の差分縮小マップを選択する（ステップＳ１７０８）。そして、画像処理装置１００は、ステップＳ１７０２の処理に移行する。一方、過去の差分縮小マップの全てを選択した場合（ステップＳ１７０７：Ｙｅｓ）、画像処理装置１００は、動体抽出マップ上書き処理を終了する。動体抽出マップ上書き処理を実行することにより、画像処理装置１００は、過去の差分縮小マップを用いて差分縮小マップを上書きして、動体１つに対して差分有りのブロックの塊が複数あったものを、１つの塊にすることができる。
【０１０４】
図１８は、縦方向および横方向差分有無配列作成処理手順の一例を示すフローチャートである。縦方向および横方向差分有無配列作成処理は、動体抽出マップに対応する縦方向差分有無配列と横方向差分有無配列とを作成する処理である。
【０１０５】
画像処理装置１００は、複数のブロックから先頭のブロックを選択する（ステップＳ１８０１）。次に、画像処理装置１００は、選択したブロックが差分有りブロックか否かを判断する（ステップＳ１８０２）。選択したブロックが差分有りブロックである場合（ステップＳ１８０２：Ｙｅｓ）、画像処理装置１００は、縦方向差分有無配列と横方向差分有無配列とのうち、選択したブロックに対応する変数に差分有りを書き込む（ステップＳ１８０３）。
【０１０６】
ステップＳ１８０３の処理終了後、または選択したブロックが差分無しブロックである場合（ステップＳ１８０２：Ｎｏ）、画像処理装置１００は、全てのブロックを選択したか否かを判断する（ステップＳ１８０４）。まだ選択していないブロックがある場合（ステップＳ１８０４：Ｎｏ）、画像処理装置１００は、次のブロックを選択する（ステップＳ１８０５）。そして、画像処理装置１００は、ステップＳ１８０２の処理に移行する。
【０１０７】
一方、全てのブロックを選択した場合（ステップＳ１８０４：Ｙｅｓ）、画像処理装置１００は、縦方向および横方向差分有無配列作成処理を終了する。縦方向および横方向差分有無配列作成処理を実行することにより、画像処理装置１００は、動体抽出マップに対応する縦方向差分有無配列と横方向差分有無配列とを作成することができる。
【０１０８】
図１９は、動体抽出マップ再構築処理手順の一例を示すフローチャートである。動体抽出マップ再構築処理は、縦方向差分有無配列と横方向差分有無配列とに基づいて、動体抽出マップを再構築する処理である。
【０１０９】
画像処理装置１００は、複数のブロックから先頭のブロックを選択する（ステップＳ１９０１）。次に、画像処理装置１００は、縦方向差分有無配列の選択したブロックに対応する変数が差分有りを示すか否かを判断する（ステップＳ１９０２）。縦方向差分有無配列の選択したブロックに対応する変数が差分有りを示す場合（ステップＳ１９０２：Ｙｅｓ）、画像処理装置１００は、横方向差分有無配列の選択したブロックに対応する変数が差分有りを示すか否かを判断する（ステップＳ１９０３）。横方向差分有無配列の選択したブロックに対応する変数が差分有りを示す場合（ステップＳ１９０３：Ｙｅｓ）、画像処理装置１００は、選択したブロックを差分有りに設定する（ステップＳ１９０４）。
【０１１０】
ステップＳ１９０４の処理終了後、または、縦方向差分有無配列または横方向差分有無配列の選択したブロックに対応する変数が差分無しを示す場合（ステップＳ１９０２：Ｎｏ、ステップＳ１９０３：Ｎｏ）、画像処理装置１００は、全てのブロックを選択したか否かを判断する（ステップＳ１９０５）。まだ選択していないブロックがある場合（ステップＳ１９０５：Ｎｏ）、画像処理装置１００は、次のブロックを選択する（ステップＳ１９０６）。そして、画像処理装置１００は、ステップＳ１９０２の処理に移行する。
【０１１１】
一方、全てのブロックを選択した場合（ステップＳ１９０５：Ｙｅｓ）、画像処理装置１００は、動体抽出マップ再構築処理を終了する。動体抽出マップ再構築処理を実行することにより、画像処理装置１００は、動体抽出マップを再構築することができる。より具体的には、画像処理装置１００は、再構築前の動体抽出マップの差分有りを示すブロックから形成される領域を含む矩形領域を特定することができる。
【０１１２】
図２０は、動体検出処理手順の一例を示すフローチャート（その１）である。また、図２１は、動体検出処理手順の一例を示すフローチャート（その２）である。また、図２２は、動体検出処理手順の一例を示すフローチャート（その３）である。動体検出処理は、動体を検出する処理である。
【０１１３】
画像処理装置１００は、動体抽出マップ内の複数のブロックから先頭のブロックを選択する（ステップＳ２００１）。次に、画像処理装置１００は、選択したブロックが差分有りブロックか否かを判断する（ステップＳ２００２）。選択したブロックが差分有りブロックである場合（ステップＳ２００２：Ｙｅｓ）、画像処理装置１００は、ステップＳ２１０１の処理に移行する。
【０１１４】
一方、選択したブロックが差分無しブロックである場合（ステップＳ２００２：Ｎｏ）、画像処理装置１００は、全てのブロックを選択したか否かを判断する（ステップＳ２００３）。まだ選択していないブロックがある場合（ステップＳ２００３：Ｎｏ）、画像処理装置１００は、次のブロックを選択する（ステップＳ２００４）。そして、画像処理装置１００は、ステップＳ２００２の処理に移行する。
【０１１５】
一方、全てのブロックを選択した場合（ステップＳ２００３：Ｙｅｓ）、画像処理装置１００は、動体検出処理を終了する。
【０１１６】
ステップＳ２００２：Ｙｅｓとなった場合、画像処理装置１００は、ブロックｉを選択したブロックに設定する（ステップＳ２１０１）。ここで、ｉは、動体検出処理で用いる変数であり、ブロックの位置を示すポインタ変数である。
【０１１７】
次に、画像処理装置１００は、ブロックｉが差分無しブロック、または右端のブロックか否かを判断する（ステップＳ２１０２）。ブロックｉが差分有りブロックかつ右端のブロックでない場合（ステップＳ２１０２：Ｎｏ）、画像処理装置１００は、ブロックｉをブロックｉの右のブロックに設定する（ステップＳ２１０３）。そして、画像処理装置１００は、ステップＳ２１０２の処理に移行する。
【０１１８】
一方、差分無しブロック、または右端のブロックである場合（ステップＳ２１０２：Ｙｅｓ）、画像処理装置１００は、ブロックｉの位置を記憶する（ステップＳ２１０４）。なお、ステップＳ２１０４の処理において、画像処理装置１００は、差分無しブロックであればブロックｉの左のブロックの位置を記憶し、右端のブロックであればブロックｉの位置を記憶する。選択したブロックから記憶したブロックまでが、抽出候補矩形領域の上辺となる。
【０１１９】
次に、画像処理装置１００は、ブロックｉを選択したブロックに設定する（ステップＳ２１０５）。そして、画像処理装置１００は、ブロックｉが差分無しブロック、または下端のブロックか否かを判断する（ステップＳ２１０６）。ブロックｉが差分有りブロックかつ下端のブロックでない場合（ステップＳ２１０６：Ｎｏ）、画像処理装置１００は、ブロックｉをブロックｉの下のブロックに設定する（ステップＳ２１０７）。そして、画像処理装置１００は、ステップＳ２１０６の処理に移行する。
【０１２０】
一方、ブロックｉが差分無しブロック、または下端のブロックである場合（ステップＳ２１０６：Ｙｅｓ）、画像処理装置１００は、ブロックｉの位置を記憶する（ステップＳ２１０８）。なお、ステップＳ２１０８の処理において、画像処理装置１００は、差分無しブロックであればブロックｉの上のブロックの位置を記憶し、下端のブロックであればブロックｉの位置を記憶する。選択したブロックから記憶したブロックまでが、抽出候補矩形領域の左辺となる。
【０１２１】
そして、画像処理装置１００は、差分縮小マップ内の選択したブロックと記憶した２つのブロックとで形成する抽出候補矩形領域内の先頭のブロックを選択する（ステップＳ２２０１）。次に、画像処理装置１００は、選択したブロックが差分有りブロックか否かを判断する（ステップＳ２２０２）。選択したブロックが差分有りブロックである場合（ステップＳ２２０２：Ｙｅｓ）、画像処理装置１００は、左上座標と右下座標とを取得する（ステップＳ２２０３）。ステップＳ２２０３の処理において、画像処理装置１００は、差分有りブロックが、最も左上である、または右下であるたびに更新する。
【０１２２】
ステップＳ２２０３の処理終了後、または、選択したブロックが差分無しブロックである場合（ステップＳ２２０２：Ｎｏ）、画像処理装置１００は、抽出候補矩形領域内の全てのブロックを選択したか否かを判断する（ステップＳ２２０４）。抽出候補矩形領域内に選択していないブロックがある場合（ステップＳ２２０４：Ｎｏ）、画像処理装置１００は、次のブロックを選択する（ステップＳ２２０５）。そして、画像処理装置１００は、ステップＳ２２０２の処理に移行する。
【０１２３】
一方、抽出候補矩形領域内の全てのブロックを選択した場合（ステップＳ２２０４：Ｙｅｓ）、画像処理装置１００は、左上座標と右下座標とから形成される矩形領域内のブロックの数が閾値以上か否かを判断する（ステップＳ２２０６）。左上座標と右下座標とから形成される矩形領域内のブロックの数が閾値未満である場合（ステップＳ２２０６：Ｎｏ）、画像処理装置１００は、左上座標と右下座標とを消去する（ステップＳ２２０７）。ステップＳ２２０７の処理を実行することにより、画像処理装置１００は、大きさによっては動体として認識しないことができる。
【０１２４】
ステップＳ２２０７の処理終了後、または、左上座標と右下座標とから形成される矩形領域内のブロックの数が閾値以上である場合（ステップＳ２２０６：Ｙｅｓ）、画像処理装置１００は、動体抽出マップ内の、抽出候補矩形領域内のブロックを、差分無しに設定する（ステップＳ２２０８）。ステップＳ２２０８の処理終了後、画像処理装置１００は、ステップＳ２００３の処理を実行する。動体検出処理を実行することにより、画像処理装置１００は、処理対象フレームから、動体を検出することができる。
【０１２５】
以上説明したように、画像処理装置１００によれば、処理対象フレームと直前フレームとの差分の有無と数フレーム前の２つのフレーム間の差分の有無を基に処理対象フレームから動きの有る領域を検出する。これにより、画像処理装置１００は、色の変化が乏しくても数フレーム前の差分を基に補完して精度を確保しつつ負荷を抑制できる。また、画像処理装置１００は、差分から動きの有る領域を検出する際に処理負荷の高い動きベクトル演算などの処理は行わないため、本実施の形態にかかる画像処理方法は、低コスト、低スペックなシステムでも動作可能となる。
【０１２６】
また、画像処理装置１００によれば、第１の差分マップ、および第２の差分マップの論理和となる論理和マップを生成し、論理和マップから動きの有る領域を検出してもよい。これにより、画像処理装置１００は、画素単位で比較するのではなく、複数の画素を一括して処理するため、画素単位で比較する場合に比べて高速に処理することができる。また、動体抽出マップは過去数枚分の差分情報も利用することにより一つの動体が切れ目なく抽出できるようになるので、動体形状を整形する処理、例えば、輪郭抽出、膨張、縮小などのモルフォロジー処理を省くことができ、処理負荷を軽くすることができる。
【０１２７】
また、差分マップを使うことで、画像処理装置１００は、フレーム間の差分が存在する箇所を予測しながら差分抽出するので効率よくフレーム間の差分を検索することができ、差分抽出の処理時間を短縮できる。処理時間の短縮により次のフレーム間差分の処理を行うことができる。また、画像処理装置１００は、差分縮小マップを作成する際と、フレーム間差分の候補から差分箇所を確定する際に、ノイズ除去も行うため、新たにノイズ除去の仕組みを組み込まなくてよく、処理量を抑えることができる。
【０１２８】
また、画像処理装置１００によれば、論理和マップ内で差分有りを示す画素から形成される領域から、第１の差分マップ内の差分ありを示す画素のうちの領域内の画素を含む矩形領域を検出することにより、処理対象フレームから動きが有る領域を検出してもよい。これにより、画像処理装置１００は、動きが有る領域をさらに絞りこむことができる。
【０１２９】
また、画像処理装置１００によれば、検出した前記動きが有る領域を切り出してもよい。このように、画像処理装置１００は、動きが有る領域を切り出して、動きが有る領域を送信する際に、伝送路にかかる負荷を抑制することができる。
【０１３０】
また、画像処理装置１００によれば、検出した動きが有る領域の大きさを出力してもよい。動きが有る領域の大きさを出力することにより、例えば、画像処理装置１００の利用者は、監視領域に何が通ったのか把握することができる。
【０１３１】
また、画像処理装置１００によれば、検出した動きが有る領域の個数を出力してもよい。動きが有る領域の個数を出力することにより、例えば、画像処理装置１００の利用者は、監視領域に動体がいくつあったかを把握することができる。より具体的には、監視領域が、例えば、自動車しか通過しない場所であるとする。このとき、画像処理装置１００の利用者は、監視領域の交通量を把握することができる。
【０１３２】
また、画像処理装置１００によれば、動きが有る領域を大きさに応じてグループに分類し、分類したグループに属する動きが有る領域の個数とグループに対応する大きさとを対応付けて出力してもよい。これにより、画像処理装置１００の利用者は、監視領域に動体の種別に応じて、各種別の動体がいくつあったかを把握することができる。より具体的には、監視領域が、例えば、自家用自動車と、大型自動車しか通過しない場所であるとする。画像処理装置１００は、自家用自動車と分類する大きさの範囲と、大型自動車と分類する大きさの範囲とを記憶しておく。これにより、画像処理装置１００の利用者は、監視領域内に、自家用自動車が何台通り、大型自動車が何台通ったかを把握することができる。
【０１３３】
なお、本実施の形態で説明した画像処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本画像処理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本画像処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１３４】
また、本実施の形態で説明した画像処理装置１００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、例えば、上述した画像処理装置１００の生成部６０１〜出力部６０５をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、画像処理装置１００を製造することができる。
【０１３５】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１３６】
（付記１）連続して撮像された複数のフレームのうち、処理対象フレーム内の画素の値と他のフレーム内の画素の値とに基づいた対応するブロック間の差分の有無、および前記処理対象フレームとは異なる２つのフレーム内の画素の値に基づいた対応するブロック間の差分の有無に基づいて、前記処理対象フレームから動きが有る領域を検出する検出部を、
有することを特徴とする画像処理装置。
【０１３７】
（付記２）前記処理対象フレーム内の各画素の値と前記他のフレーム内の各画素の値とに基づいた対応する各ブロック間の差分の有無を示す第１の差分マップ、および前記２つのフレーム内の各画素値に基づいた対応する各ブロック間の差分の有無を示す第２の差分マップの論理和となる論理和マップを生成する生成部を有し、
前記検出部は、
生成した前記論理和マップに基づいて、前記処理対象フレームから動きが有る領域を検出する、
ことを特徴とする付記１に記載の画像処理装置。
【０１３８】
（付記３）前記検出部は、
前記論理和マップ内で差分有りを示す画素に基づいて形成される領域から、前記第１の差分マップ内の差分ありを示す画素のうちの前記領域内の画素を含む矩形領域を検出することにより、前記処理対象フレームから動きが有る領域を検出する、
ことを特徴とする付記２に記載の画像処理装置。
【０１３９】
（付記４）前記処理対象フレームから、検出した前記動きが有る領域を切り出す切出部を、
有することを特徴とする付記３に記載の画像処理装置。
【０１４０】
（付記５）検出した前記動きが有る領域の大きさを出力する出力部を、
有することを特徴とする付記３または４に記載の画像処理装置。
【０１４１】
（付記６）検出した前記動きが有る領域の個数を出力する出力部を、
有することを特徴とする付記３〜５のいずれか一つに記載の画像処理装置。
【０１４２】
（付記７）検出した前記動きが有る領域を大きさに応じてグループに分類する分類部と、
分類した前記グループに属する前記動きが有る領域の個数と前記グループに対応する大きさとを対応付けて出力する出力部と、
を有することを特徴とする付記３〜６のいずれか一つに記載の画像処理装置。
【０１４３】
（付記８）コンピュータが、
連続して撮像された複数のフレームのうち、処理対象フレーム内の画素の値と他のフレーム内の画素の値とに基づいた対応するブロック間の差分の有無、および前記処理対象フレームとは異なる２つのフレーム内の画素の値に基づいた対応するブロック間の差分の有無に基づいて、前記処理対象フレームから動きが有る領域を検出する、
処理を実行することを特徴とする画像処理方法。
【０１４４】
（付記９）コンピュータに、
連続して撮像された複数のフレームのうち、処理対象フレーム内の画素の値と他のフレーム内の画素の値とに基づいた対応するブロック間の差分の有無、および前記処理対象フレームとは異なる２つのフレーム内の画素の値に基づいた対応するブロック間の差分の有無に基づいて、前記処理対象フレームから動きが有る領域を検出する、
処理を実行させることを特徴とする画像処理プログラム。
【符号の説明】
【０１４５】
１００  画像処理装置
１０１  カメラ
２００  監視システム
６０１  生成部
６０２  検出部
６０３  切出部
６０４  分類部
６０５  出力部
【図１】
2016024735.tif 000003
【図２】
2016024735.tif 000004
【図３】
2016024735.tif 000005
【図４】
2016024735.tif 000006
【図５】
2016024735.tif 000007
【図６】
2016024735.tif 000008
【図７】
2016024735.tif 000009
【図８】
2016024735.tif 000010
【図９】
2016024735.tif 000011
【図１０】
2016024735.tif 000012
【図１１】
2016024735.tif 000013
【図１２】
2016024735.tif 000014
【図１３】
2016024735.tif 000015
【図１４】
2016024735.tif 000016
【図１５】
2016024735.tif 000017
【図１６】
2016024735.tif 000018
【図１７】
2016024735.tif 000019
【図１８】
2016024735.tif 000020
【図１９】
2016024735.tif 000021
【図２０】
2016024735.tif 000022
【図２１】
2016024735.tif 000023
【図２２】
2016024735.tif 000024