説明

画像処理装置、画像処理方法及びプログラム

【課題】被写体の検出処理を大きさ固定の所定のサイズより小さいサイズの記憶容量で実現することを目的とする。
【解決手段】記憶手段103と、入力画像及び入力画像から生成された複数の解像度の画像の各画像に対して、ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出する検出手段102と、を有し、検出手段102は、新たに検出した検出結果を記憶手段103の格納領域に格納するに際し、格納領域に空きがなかった場合には、新たに検出結果を得た画像より解像度が高い画像の検出結果を格納領域から破棄し、新たに検出した検出結果を格納領域に格納することによって課題を解決する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【0002】
画像から特定の被写体パターンを自動的に検出する画像処理方法は非常に有用であり、例えば人間の顔の判定に利用することができる。このような方法は、通信会議、マン・マシン・インタフェース、セキュリティ、人間の顔を追跡するためのモニタ・システム、画像圧縮等の多くの分野で使用することができる。このような画像中から顔を検出する技術としては、非特許文献1に各種方式が挙げられている。特に、実行速度と検出率の高さとから、非特許文献2に掲載されるViolaらのBoostingベースの手法は、顔検出研究において広く使用されている。
ViolaらのBoostingベースの手法は、概略同等である小さな判別処理(弱判別器)を直列状に連結し、判別処理の途中で非顔領域であると分かった時点で、後続する判別処理を打ち切ることで高速化を行っている。
【0003】
弱判別器が参照する画像領域を含むような部分画像であるウィンドウ画像のサイズは、ある想定した大きさの検出対象物に対して決められている。しかしながら、実際の画像中の検出対象物の大きさは連続的に変わり得る(例えば被写体との距離を変えてデジタルカメラで撮像すれば検出対象物の大きさは連続的に変わる)。したがって、実際の判別器はある程度検出対象物の大きさ変動に対してある程度耐性があるように設計される(学習される)のが好ましい。
しかしながら、大きさ変動に対して耐性を持つよう設計するにしても、例えば極端に大きくて検出ウィンドウには検出対象物、例えば顔の一部しか含まれないようなものに対応する判別器を設計するのは非常に困難である。同様に検出対象物が検出ウィンドウに比べて極端に小さいものを同時に対応する判別器を設計するのも非常に困難である。
それに対しては、2つのアプローチが考えられる。1つは、ウィンドウサイズを拡大(それに応じて、弱判別器の参照領域等も拡大)する方法である。またもう1つは、ウィンドウサイズは固定して、入力画像に対して変倍(特に縮小)を施して、複数種作成した変倍(縮小)画像に対して同じサイズのウィンドウを設定して判別器を用いて検出する方法である。
上記手法の何れにせよ、ウィンドウの拡大、若しくは画像の縮小の変倍を連続的に行うのは困難なので、やはり判別器は大きさ変動に対してある程度の耐性を持つことが好ましい。
また、同様に位置の変動や形状の変化に関しても、ある程度許容性を持つことが好ましい。
【0004】
しかしながら、判別器が大きさや位置の変動に対して許容性を持つということは、実際の1つの検出対象物の周辺に、複数の検出判定が発生する。これは、画像中の水平・垂直方向に位置がずれもあり得るし、先の(ウィンドウサイズの変倍若しくは画像の縮小による)大きさ方向のずれもあり得る。
そのため、これらの複数の検出結果を統合して1つの検出対象物に対する検出結果を1つにまとめる処理が必用となる。以後、この処理を「統合処理」と呼ぶ。
この統合処理は、水平・垂直方向の位置、大きさ方向を軸とした空間に分布する検出結果に対するクラスタリング処理に類する。或いは更に、検出結果の確からしさ(尤度)等の軸を加えた空間における処理とすることも考えられる。
統合処理が必用なことから、前述した判別器による検出結果は中間結果であると考えられるが、好ましくはこの中間結果を一旦格納してからそれに対して統合処理を実行するように構成する。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】M.H.Yang, D.J.Kriegman and N.Ahuja. "Detecting Faces in Images:A Survey," IEEE Trans. on PAMI, vol.24, no.1, pp.34−58, January, 2002.
【非特許文献2】P.Viola and M. Jones. "Robust Real−time Object Detection," in Proc. of IEEE Workshop SCTV, July, 2001.
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述したように、中間結果である判別器による検出結果を一旦格納する必要があるが、そのための記憶領域をどれくらい用意すべきなのかということがまず問題となる。
当たり前だが、検出処理の対象となる画像が実際に何件の検出結果を出すかということは、実際に検出処理を行う前には分からない。
理論的な上限値としては、その画像中に設定可能なウィンドウの数(N)があるが、実際に画像に対して検出処理を行った場合の検出結果数は、Nの1〜2%程度であるような場合が多い。したがって、理論的な上限数まで格納可能なように大きな記憶領域を用意しておくのは効率的でない。
これは、例えばこの判別処理をPC上で動作するソフトウェアで実現する場合、比較的大容量のメモリを用意することも可能であるのであまり問題にならないと思われる。しかし一方、機器組み込み用のソフトウェアや或いはハードウェア上で実現する場合には、予め定めた(大きさ固定の)小サイズの記憶容量で実現することが望ましい。
しかしながら、予め定めた小サイズの記憶容量で処理を行うとすると、画像の内容によっては記憶領域不足が発生する可能性が残る。
その場合、全検出結果のうち、記憶容量から溢れた分については棄却せざるを得ないのだが、その場合どれをどのような処理で棄却すべきか、という課題がある。
【0007】
本発明はこのような問題点に鑑みなされたもので、被写体の検出処理を大きさ固定の所定のサイズより小さいサイズの記憶容量で実現することを目的とする。
【課題を解決するための手段】
【0008】
そこで、本発明の画像処理装置は、記憶手段と、入力画像及び前記入力画像から生成された複数の解像度の画像の各画像に対して、ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出する検出手段と、を有し、前記検出手段は、新たに検出した検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像より解像度が高い画像の検出結果を前記格納領域から破棄し、前記新たに検出した検出結果を前記格納領域に格納する。
【発明の効果】
【0009】
本発明によれば、被写体の検出処理を大きさ固定の所定のサイズより小さいサイズの記憶容量で実現することができる。
【図面の簡単な説明】
【0010】
【図1】第一の実施形態の画像処理装置のハードウェア構成の一例を示す図(その1)である。
【図2】Boostingアルゴリズムを応用した顔検出処理のアルゴリズムの論理を説明する図である。
【図3】画像に対して検出ウィンドウを適用して検出を行う処理を説明する図である。
【図4】検出対象物である顔の大きさが異なる状態を説明する図である。
【図5】検出処理の処理順を説明する図である。
【図6】検出アルゴリズムが同一の被写体に関し複数の検出結果を返すことを説明する図である。
【図7】複数のマッチしたウィンドウを、画像の変倍率を考慮して対応させた状態を示す図である。
【図8】検出対象物(顔)が様々な大きさで写っている画像を表す図である。
【図9】各被写体に対する検出の中間結果の例を示す図である。
【図10】図8の画像に対する処理を説明する図である。
【図11】中間結果記憶部103の状態を表す図である。
【図12】検出結果の一例を示す図である。
【図13】第一の実施形態の中間結果格納領域を循環状に用いて中間結果を格納する処理を説明する流れ図(その1)である。
【図14】第一の実施形態の画像処理装置のハードウェア構成の一例を示す図(その2)である。
【図15】第一の実施形態の中間結果格納領域を循環状に用いて中間結果を格納する処理を説明する流れ図(その2)である。
【図16】第一の実施形態の画像処理装置のハードウェア構成の一例を示す図(その3)である。
【図17】第三の実施形態の画像処理装置のハードウェア構成の一例を示す図である。
【図18】バッファ格納時の処理の流れを示す流れ図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態について図面に基づいて説明する。
【0012】
<第一の実施形態>
図1は、第一の実施形態の画像処理装置のハードウェア構成の一例を示す図(その1)である。
画像記憶部101は、処理の対象となる画像データを保持する。画像記憶部101は、例えば、メモリで構成される。なお、画像記憶部101は、レジスタ、ディスク装置等で構成されても良い。
検出部102は、検出処理を行う。検出処理の一例は、後述する図2で説明を行う。また、検出部102は、検出結果を中間結果記憶部103に出力する。更に検出部102は、1画像の処理が終了したことを検出した場合、統合処理部104に統合処理の開始を指示する。
中間結果記憶部103は、検出部102の出力を格納する。中間結果記憶部103は、例えば、メモリで構成される。なお、中間結果記憶部103は、レジスタ、ディスク装置等で構成されても良い。
統合処理部104は、中間結果記憶部103に格納された中間結果を用いて統合処理を行い、その統合結果を結果記憶部105に出力する。統合処理部104は、検出部102の指示に応じ動作する。
結果記憶部105は、統合処理部104の出力を格納する。結果記憶部105は、例えば、メモリで構成される。なお、結果記憶部105は、レジスタ、ディスク装置等で構成されても良い。
画像変倍部110は、画像記憶部101にある画像に対して変倍処理(少なくとも縮小処理)を行い、変倍画像を出力する。図1に示されるように、検出部102は、変倍画像を読み込めるよう構成されている。また画像変倍部110は、画像記憶部101へ変倍画像を出力するよう構成されている。
この他にも様々な構成を追加することも可能であるが、本実施形態の主眼でないのでここでは省略する。
【0013】
まず、検出部102における検出処理の処理について説明を行う。本実施形態では、検出対象物が人間の顔である場合の例について説明する。
検出処理に関するアルゴリズムの一例を、図2を用いて説明する。
以下ではBoostingアルゴリズムを応用した顔検出処理を検出処理の一例として説明する。図2は、Boostingアルゴリズムを応用した顔検出処理のアルゴリズムの論理を説明する図である。
部分画像201は、入力画像データの部分領域である。部分画像201は、入力画像データ上に設定される所定のウィンドウ内の画像であり、後述する弱判別器210〜250が参照する画像領域を含むような部分画像である。部分画像201を以下、ウィンドウ画像とも呼ぶ。
弱判別器210は、判別処理で、ウィンドウ画像201の一部若しくは全部の画素値を参照し、その画素値に対して予め定めておいた演算を行い、ウィンドウ画像201が検出対象であるオブジェクト(本例の場合、人間の顔領域)を含むか否かを演算結果により判定する。この予め定めておいたウィンドウ画像の参照位置や範囲、また演算に用いる係数等のパラメータは、実際の検出処理の前に機械学習により決定されている。
211〜250も弱判別器と呼ばれる演算処理であるが、好ましくは弱判別器210とはウィンドウ画像201の参照位置や範囲と演算に用いる係数等のパラメータが異なるよう構成する。また、弱判別器211〜250も好ましくは互いにウィンドウ画像201の参照位置や範囲と演算に用いる係数等のパラメータが異なるよう構成する。
言い換えれば、弱判別器210〜250は、ウィンドウ画像201の参照位置や範囲、また演算に用いる係数等のパラメータが異なるだけで、概略同じ処理であると言える。したがって、ウィンドウ画像201の参照位置や範囲、また演算に用いる係数等を処理のパラメータとして分離すれば、弱判別器210〜250は用いるパラメータが異なる、同じ処理であるとみなすことができる。
【0014】
弱判別器210〜弱判別器250のN個の弱判別器は、それぞれ、内部の演算結果に応じてPASSかNGの判定を行うので、この弱判別器処理を図2に示すように直列状に接続して判別処理を構成する。そして、0番目の弱判別器210から処理を行い、判定結果がPASSであれば次の弱判別器211の判定処理を行う、というように処理を進める。そして、検出部102は、最終弱判別器である弱判別器250の判定結果もPASSであったら、ウィンドウ画像201は検出対象のオブジェクト(顔)を含むと判定する。一方、検出部102は、途中でNGと判定された場合は以降の処理を打切り、ウィンドウ画像201は検出対象のオブジェクト(顔)を含まないと判定する。
このように、弱判別器210〜250のN個の弱判別器を組み合わせることにより、全体として強い判別器を構成する。
【0015】
次に、全体の処理の流れについて説明する。
図3は、画像に対して検出ウィンドウを適用して検出を行う処理を説明する図である。601は、画像データ(以下、単に画像ともいう。)である。611は、検出ウィンドウである。この検出ウィンドウは図2におけるウィンドウ画像201と同じものである。
検出処理において、検出部102は、ウィンドウ611を画像601中で他のウィンドウと一部重複するように移動させながら、各位置において図2で例示した検出アルゴリズムを適用する。図3のウィンドウ612、613は、この移動したウィンドウの例であり、特にウィンドウ613は検出対象である顔の位置にあるウィンドウの例である。
ところで、図2で示した検出アルゴリズムは高い汎化性能を持つ必要がある。これは、処理実行時に検出対象となる画像、特に検出対象物や被写体を予め見ることはできないので、アルゴリズムにとっては未知の画像パターンに対して処理を行うことになるためである。したがって、検出アルゴリズムは検出ウィンドウに対してある程度大きさ、位置、形状が変動した検出対象物(顔)を検出できるよう設計する。
とはいえ、アルゴリズムが期待する対象物と大きさ、位置、形状が極端に異なるものについても検出可能なように設計するのは非常に困難である。
【0016】
図4は、検出対象物である顔の大きさが異なる状態を説明する図である。
710は、画像である。701〜703は、異なる大きさで写った画像中の人物の被写体である。被写体701は、撮影位置から遠くにいるために小さく写っており、逆に被写体703は比較的近くにいて大きく写っている状態を表している。また、711〜713は、被写体701〜703のそれぞれの顔領域を概略囲む矩形であり、その大きさが異なっていることがわかる。
したがって、このように写り方等によって検出対象物の大きさがまちまちなものをそれぞれ検出する方法として、図5で説明するような方式を利用する。
【0017】
図5は、検出処理の処理順を説明する図である。
画像710は、図4と同じ画像で、システムに入力された検出対象の画像である。検出部102は、これに対して検出処理820(図2で説明したアルゴリズム)を行う。そして、画像変倍部110は、この画像710に対して縮小処理を行って縮小画像801や802を出力する。検出部102は、これらを得て、これらの縮小画像に対しても同様に検出処理820を適用して検出を行う。
810〜812は、各画像における検出ウィンドウであり、これらは同じ大きさである。しかしながら、処理対象の画像解像度が異なるので、検出ウィンドウ810は、比較的小さく写った検出対象物(顔)とマッチする。逆に検出ウィンドウ812は、比較的大きく写った検出対象物(顔)とマッチする。また、検出ウィンドウ811は、その中間の大きさに写った検出対象物(顔)とマッチする。
言いかえれば、高解像度の画像710では小さく写った検出対象物(顔)が検出され、低解像度の画像802では大きく写った検出対象物(顔)が検出され、中間の解像度の画像801ではその中間の大きさに写った検出対象物(顔)が検出される。
なお、画像の縮小方法は公知の任意のもので良い。また、縮小の変倍率は予め定めておけば良い。なお、本実施形態では、画像変倍部110は、画像710から縮小画像801を生成し、縮小画像801から縮小画像802を生成するものとする。
このような方法を用いた場合でも、現実には画像の縮小はある程度離散的(例えば、縦横各1/2とか、或いは1/√2とか)にならざるを得ない。しかしながら先に述べたように検出アルゴリズムは高い汎化性能を持つので、各画像上の検出対象物(顔)が、検出アルゴリズムが元々期待している大きさと多少あわなくても検出することができる。
【0018】
この一方で図6に示すようなことが発生する。図6は、検出アルゴリズムが同一の被写体に関し複数の検出結果を返すことを説明する図である。
710、801、802、811は、図5の同番号と同一のものである。図5の例では、縮小画像801で検出ウィンドウ811と被写体の顔とがマッチすると説明した。しかし実際にはアルゴリズムは汎化性能を持つため、解像度が異なる別の画像で検出(ウィンドウ911、913)したり、或いは、同じ解像度の画像において、多少ずれた位置で検出(ウィンドウ912)したりすることが発生し得る。
図7は、これら複数のマッチしたウィンドウを、画像の変倍率を考慮して対応させた状態を示す図である。ウィンドウ(領域)811、911〜913は、図6の同番号のウィンドウに対応する。
しかしながら実際の被写体は1つなので、領域811、911〜913を1つの領域にまとめる必用がある。この処理が統合処理部104における統合処理である。
【0019】
統合処理は、図7の領域811、911〜913を1つの領域にまとめる処理である。統合処理部104は、例えば各領域811、911〜913の中心(重心)を算出し、それが閾値以下であれば同一被写体に対する領域であるとして合成する。閾値は予め定めておけば良い。また、統合処理部104は、例えば矩形の4頂点についてそれぞれ領域間で平均する等で合成する。
ここで述べた統合処理方式の例はあくまでも一例であって、図7の領域811、911〜913から1つの領域を生成するものであれば任意の方式で良い。
この統合処理のためには、検出部102は、1枚の画像に対する検出処理による検出結果(統合後の結果と区別するため、以下中間結果と呼ぶ)を一旦保存する。そして、統合処理部104は、その後に各検出結果間の関係(前述の例でいうと、各中間結果同士の中心間の距離)をしらべて判断する必要がある。そのため、中間結果を一旦保持しておかなければならない。
したがって、中間結果を格納する領域が必要になるのだが、この領域をどれくらい確保しておくか、ということが問題となる。
【0020】
まず、検出を行った画像で何件の中間結果が検出されるかということは、実際に検出を行う前には分からない。
次に理論的な上限値を考えると、例えば、入力画像(図5の710)がVGA(640×480画素)程度であったと考える。ウィンドウは20x20画素、それぞれ1画素ずらしで設定可能とし、縦横1/√2(画素数が1/2)で変倍するとするならば、概算すると
【数1】

(無限級数の和より)
となる。実際には無限に縮小するわけではないのでこれより少なくなるが、およそ50万以上のウィンドウ処理を行うことになる。
また仮に、入力画像がQVGA(320×240画素)であった場合、同様に計算するとウィンドウ数は約13万である。更に、処理を間引いて縦横1画素おきにウィンドウを設定するとしても、この1/4なので約3万、或いはもっと間引いて縦横3画素おきにウィンドウを設定するとしても、1/16なので1万弱のウィンドウが設定可能である。
したがって理論上限の分のメモリを用意して処理を行うとした場合、例えば中間結果1件に必要な情報として10byte必用であったと仮定すると、約10000件の中間結果を格納するためには10万byte≒100KBのメモリが必用となる。
【0021】
ところが実際にこの検出処理を行った場合、画像(入力画像とその縮小画像全体)に対して約10000点のウィンドウを設定して処理を行ったところ、多くの画像では中間結果の数は多くてもせいぜい100〜200程度であった。つまり、多くの画像では理論上限に対して1〜2パーセント程度しか使わないということになる。
100KBのメモリは、この検出処理を例えば公知のパーソナルコンピュータ等で実現する場合にはあまり問題にならないかもしれない。しかし例えば機器組み込みソフトウェアや回路内蔵のソフトウェアで実現する場合、100KBのメモリは組み込み機器内部のメモリ(S−RAM)としては大容量であり、機器の価格にも影響する。その上、通常では1〜2パーセント程度しか使わないとなると理論上限分のメモリを用意するというのは大変冗長であることがわかる。
したがって、適切なサイズ(例えば実験では200件分程度)のメモリによってこの処理を実現するのが好ましい。しかしながら、この場合画像の内容によってはメモリ不足が発生する可能性が残ることになる。
このメモリ不足の場合について説明する。
図8は、検出対象物(顔)が様々な大きさで写っている画像を表す図である。図8には、被写体401(小さく写った被写体)〜被写体405(大きく写った被写体)が写っている。これに対して、図9は、各被写体に対する検出の中間結果の例を501〜505で示す図である。実際には、先に説明した通り501〜505の中間結果に対し、位置や大きさについて異なる中間結果も検出される可能性があるが、図9では説明の単純のために省いている。
【0022】
図10は、図8の画像に対する処理を説明する図である。なお、図10では、図8、図9及び図5と同じものについては、同じ番号を付与しているのでここでは説明を省略する。
検出部102は、まず入力画像1101に対して検出処理820を行い、例えば中間結果として501及び502を出力する。次に、検出部102は、縮小画像1102に対して検出処理820を行い中間結果として503を出力し、更に縮小画像1103に対して検出処理820を行い、中間結果504、505を出力する。
図11は、中間結果記憶部103の状態を表す図である。
なお、説明の単純化のため本実施形態では、中間結果記憶部103は、3件分の中間結果格納領域1201〜1203を持つものとする。またここでは、それに対し図10で説明したように、中間結果501〜505の5件の結果が出力される場合について説明する。
まず、入力画像1101に対して中間結果501及び502が出力されるので、それぞれ中間結果格納領域1201、1202に格納される(図11(a))。続いて、縮小画像1102に対する検出結果503が出力されるので中間結果格納領域1203に格納され、中間結果記憶部103はバッファフルの状態になる(図11(b))。
このバッファフルの状態で、以後の中間結果504及び505が出力された場合、最も単純には、中間結果504及び505を中間結果記憶部103に保存しないで破棄することが考えられる。この場合の検出結果の例を図12(a)に示す。
図12(a)の結果を見ると、比較的大きく写っている中央の2人に対して検出に失敗しているように見える。経験的には、大きく写っている被写体の方がそうでない被写体よりも重要と考えられる。また見方をかえると、中央の2人に対する検出対象物(顔)の解像度は高く、検出は比較的容易に思われる。しかしながら、図12(a)の結果では比較的大きく写っている検出対象物(顔)の検出に失敗しているように思われる。したがって、(経験的に)重要で検出が容易と思われる被写体に対して検出に失敗しているように見えてしまう。
【0023】
そこで、本実施形態による処理方式では、以下のように処理を行う。
本実施形態による処理方式では、中間結果記憶部103の中間結果格納領域1201〜1203を循環状に用いて(既にデータが入っているかどうかにかかわらず)結果を書き込む。
図11(c)は、検出部102が、中間結果格納領域1203の次の格納領域として中間結果格納領域1201を用い、そこに中間結果504を保存し、更に同様に中間結果格納領域1202に検出結果505を保存した状態を表している。例えば、更にこの後検出結果があった場合には、検出部102は、続いて中間結果格納領域1203、1201の順に循環状(循環的)に格納する。
図13は、第一の実施形態の中間結果格納領域1201〜1203を循環状に用いて中間結果を格納する処理を説明する流れ図(その1)である。
なお、図13の流れ図にある変数iは、起動時や検出対象の入力画像が切り替わったときに、この流れ図の外の処理で0に初期化される。
まず、ステップS1301で、検出部102は、出力された検出結果(中間結果)を、i番目のバッファに格納する。図11の例でいえば、中間結果格納領域1201は0番目、中間結果格納領域1202は1番目、中間結果格納領域1203は2番目のバッファである。データの格納は、検出結果の矩形の座標や尤度を表す情報を含む。このとき、矩形の座標は該当する検出結果の矩形を入力画像1101の座標系に変換したものであっても良い。好ましくは検出した画像の座標系における座標とどの画像で検出したかとを表す情報(図11の1201〜1203にある「画像」がこれを識別する情報)であるように構成する。後者の場合、統合処理部104が統合処理を行う際に入力画像1101の座標系に変換する。
【0024】
続くステップS1302では、検出部102は、iを1増やす。
そして、S1303では、検出部102は、iとバッファサイズNとを比較し、iがN以上である場合、処理をS1304へ進め、そうでない場合、処理を終了する。ステップS1304では、検出部102は、iの値を0にリセットしている。これはつまり、i≧Nが成立するのは最終バッファに到達したときなので、この場合、ステップS1304でiを0にセットすることで、中間結果記憶部103の中間結果格納領域1201〜1203を循環状に使用するようにしている。
本実施形態による方式で、図11(c)の状態になった場合の検出結果の例が図12(b)である。図12(b)では、右上の小さく写った人物2人に対する検出結果が失われている代わりに、比較的重要と思われる中央の2人物の検出結果が表示されている。したがって、図12(a)の結果に比べ、図12(b)の結果の方が好ましいということが分かる。
以上説明したように、検出処理において、解像度の高い画像から順に処理することで、より小さな検出結果を先に検出するようにする。そして、中間結果を格納するバッファ領域を循環状に用いることにより、予め用意したバッファ領域を超える数の中間結果が出力された場合においても、大きな検出結果が優先され、良好な結果を得ることができる。
【0025】
なお、図1においては画像記憶部101、中間結果記憶部103、結果記憶部105を別々に書いてあるが、これは格納するデータが異なるため分けてある。したがって、これらのうちの幾つかが同一の記憶部(例えば、メモリ、レジスタ、ディスク装置等)で構成されていても良い。特に、中間結果記憶部103と結果記憶部105とを同一の記憶部で構成するような変形例は、メモリを省くのに有効な場合がある。
更に、図1の構成には様々な変形例も考えられる。図14は、第一の実施形態の画像処理装置のハードウェア構成の一例を示す図(その2)である。図14では、検出部102の指示及び検出結果(中間結果)は一旦全て統合処理部104に渡し、統合処理部104が中間結果記憶部103に検出結果を格納するように構成されている。このような変形例も本実施形態の意図するところである。この場合、図13で説明した処理は、統合処理部104が実行するにすれば良い。
また、図1の構成例と同様に図13の構成において、中間結果記憶部103と結果記憶部105とを同一の記憶部としても良い。
また、或いは、検出部102と統合処理部104とがパイプライン状に動作するために、中間結果記憶部103を多重化するようにしても良い。このような構成とした場合、統合処理部104が1枚目の画像の検出結果(中間結果)に対して統合処理を行うのと並行して、検出部102が2枚目の画像に対する検出処理を実行することができる。
なお、図13の流れ図による処理のかわりに、図15の流れ図による処理を用いるのであっても良い。図15は、第一の実施形態の中間結果格納領域1201〜1203を循環状に用いて中間結果を格納する処理を説明する流れ図(その2)である。図15のS1301は図13と同じ処理であるが、S1302以降の処理のかわりに、検出部102が、S1401の演算を行っている。なお、S1401の"mod"は剰余算を表す。更には、特にNの値が2以上の2のべき乗である場合には、S1401の演算のかわりに検出部102は、
i = (i + 1) & (N ? 1) ("&"はビット積)
を用いて演算を行っても良い。"mod"を使う演算による方式は、例えば条件分岐によるパフォーマンス低下が剰余算の計算コストを超える場合には有効である。また、ビット積を用いる方式は"mod"演算よりも計算コストの低いビット積で実現できるので、特定条件(Nが2以上の2のべき乗)を満たす場合には有効である。
【0026】
以上説明したように、本実施形態の画像処理装置は、画像を縮小しながら固定サイズのウィンドウ処理を用いて対象物を検出する検出処理において、中間結果を格納するバッファを循環状に用いる。このことにより中間結果の出力数がバッファの数を超えるような場合であっても良好な結果を得ることができる。
なお、本実施形態では図1に示したように各部をハードウェアとして実装した例を説明したが、図16に示すように、CPU1がメモリ2に記憶されたプログラムを実行することによって各部として機能させるソフトウェアで実現するようにしても良い。この場合、プログラムを格納する媒体(例えば、メモリ等)も本実施形態の意図するところの一実施形態である。なお、図16の構成の場合、中間結果記憶部103や結果記憶部105、画像記憶部101はメモリ2に構成されるが、このことは本実施形態を制限するものではない。上述したように、各記憶部をそれぞれ異なる記憶媒体(例えば、メモリ、レジスタ、ディスク装置等)で構成しても良い。
【0027】
<第二の実施形態>
本実施形態では第一の実施形態と異なる部分についてのみ説明を行う。
第一の実施形態の図1においては画像変倍部110を含む例を例示したが、これはあくまでも好適な一例である。本実施形態による画像処理装置では、高解像度→低解像度の順に検出部102に処理を行わせれば良く、例えば予め様々な解像度の変倍画像が画像記憶部101に用意できる場合は、画像変倍部110は必須ではない。
一例をあげると、公知のJPEG2000標準符号化方式等により符号化された画像データは、様々な解像度で復号することが可能である。したがって、高解像度画像から徐々に低解像度画像になるように順番に復号処理部(又は復号処理装置)で符号化された画像を画像記憶部101に格納しておき、検出部102が処理するような構成を取るのであっても良い。
【0028】
<第三の実施形態>
本実施形態では第一の実施形態と異なる部分についてのみ説明を行う。
図17は、第三の実施形態の画像処理装置のハードウェア構成の一例を示す図である。図17については、図1と対比しながら説明する。なお、図17において、図1と同一のものについては同番号を付与し説明を省略する。
図17における画像記憶部1601〜1603は、図1における画像記憶部101と同じ構成のものである。但し画像記憶部1601〜1603は互いに異なる画像を保持している。これは例えば、図5の710、801、802を、それぞれ画像記憶部1601、1602、1603が保持する構成である。
なお、画像記憶部1601〜1603を異なるブロックで表現しているのは、概念として分離できるからであって、実体としては同一の記憶媒体(公知のメモリ、レジスタ、ディスク装置等)であっても良い。
また、検出部1611〜1613は、図1における検出部102と同一のものである。検出部1611〜1613は、それぞれ画像記憶部1601〜1603から画像を入力する点のみが異なる。
記録管理部1621は、検出部1611〜1613が出力する検出結果(中間結果)を中間結果記憶部103に記録する。
【0029】
このときの記録管理部1621の処理の流れを、図18を用いて説明する。図18の流れ図は、この記録管理部1621が検出部1611〜1613の何れかから検出結果(中間結果)を受信した場合の処理である。
なお、図18における変数Mは中間結果の受信数を表し、第一の実施形態図13のiと同様に起動時や検出対象の入力画像が切り替わったときに、この流れ図の外の処理で0に初期化される。
まず、ステップS1701で、記録管理部1621は、MとNの比較を行う。Nは、図13の流れ図におけるNと同様、中間結果記憶部103の中のバッファ数を表す。
ステップS1701の判定が真になる場合はバッファフルが発生していない状態であり、記録管理部1621は、処理をステップS1702に進める。偽である場合は、記録管理部1621は、処理をステップS1703に進める。
ステップS1702では、記録管理部1621は、バッファのM番目に、今受信した中間結果を格納する。そして、ステップS1710で、記録管理部1621は、Mの値を1増やして処理を終了する。
一方、ステップS1701での判定が偽となった場合、記録管理部1621は、処理をS1703に進める。
ステップS1703は以下で使用する変数の初期化ステップで、記録管理部1621は、jを0に、kを1に初期化する。
【0030】
ステップS1704は、後続するステップS1705〜S1707を含むループの終了判定である。kがN以上になった場合は、記録管理部1621は、このループを終了し、処理をS1708に進める。そうでない場合は、記録管理部1621は、処理をステップS1705のループ側へ進める。
ステップS1705では、記録管理部1621は、バッファk番目の結果の画像解像度とバッファj番目の結果の画像解像度とを比較する。結果の画像解像度は、例えば本実施形態の場合、検出部1611〜1603のどれから受信した中間結果であるかということで判定することができる。また、第一の実施形態の図11で例示したように1201〜1203に格納されている。記録管理部1621は、1201〜1203に格納される情報に「画像」があればそれで識別可能であるし、或いは入力画像1101の座標系に変換された後の座標系であれば矩形の大きさを見れば判別できる。矩形が大きいほど解像度の低い画像での検出結果(中間結果)である。
ステップS1705の判定が真であった場合、記録管理部1621は、処理をステップS1706に進める。ステップS1706では、記録管理部1621は、jにkを代入する。一方、偽であった場合、記録管理部1621は、ステップS1706の処理を飛ばして処理をステップS1707に進める。
ステップS1707では、記録管理部1621は、kの値を1つ増やし、ステップS1704に処理を戻す。
ステップS1704〜S1707のループ処理は、受信済の中間結果で最も高解像度の画像に対する検出結果を探し、そのバッファ上での位置を表す数値をjに設定する処理である。
【0031】
ステップS1704の判定が偽となり、S1704〜S1707のループが終了した場合、記録管理部1621は、処理をS1708に進める。
ステップS1708では、記録管理部1621は、先のループで探した(最も高い)画像解像度と今受信した中間結果の画像解像度とを比較する。バッファにある(最も高い)画像解像度よりも受信した中間結果の画像解像度が低い場合には、記録管理部1621は、処理をステップS1709に進める。S1709では、記録管理部1621は、検出した格納済の中間結果を受信した検出結果で上書きして処理をS1710に進める。そうでない場合は、記録管理部1621は、処理をS1710に進める。後者の場合、受信した中間結果を破棄することになる。
したがって、記録管理部1621は、中間結果記憶部103がバッファフルでない場合は空いている領域に受信した中間結果を記録する。逆にバッファフル状態であった場合、記録管理部1621は、格納済の検出結果から最も高い解像度の画像に対する中間結果を探す。そして、記録管理部1621は、探した中間結果と受信した中間結果との検出画像の解像度を比較し、より低解像度の画像の結果を残す。
図18の流れ図はこのための処理の一例であって、同様の挙動をする処理による変形は本実施形態の意図するところである。
【0032】
なお、本実施形態では画像記憶部1601、1602、1603がそれぞれ図5の710、801、802を保持し、それを検出部1611、1612、1613が710、801、802に対する検出処理を行うとして説明した。しかし、実際には画像の解像度の違いから検出部1611〜1613の処理負荷が不均一になる可能性も高い。その場合、例えば、画像710、801、802を適当に分割して画像記憶部1601、1602、1603に配置し、それぞれについて検出部1611、162、1613が検出を行うように構成しても良い。
また、検出部1611〜1613が出力する中間結果の検出対象となった画像の識別情報(或いは解像度に関する情報)を記録管理部1621に与えるように構成しても良い。
好ましくは、画像の分割及び配置を制御する制御部(図17において不図示)を設け、その制御部から画像の識別情報を記録管理部1621に送信するように構成しても良い。
また、第一の実施形態に対して、例えば図14で示すような変形も可能であると説明したが、本実施形態でも同様の変形が可能である。この場合、複数の検出部の出力を一旦、統合処理部104が受信し、記録管理部1621は統合処理部104の出力を受けて中間結果記憶部に出力を行うよう構成するよう構成しても良い。或いは、記録管理部1621の機能を統合処理部104が実行するように構成しても良い。
以上、本実施形態においては、検出部が出力する中間結果の順序関係が第一の実施形態と異なるような場合の例を説明した。
本実施形態による方式は、第一の実施形態に比べ検出部を複数設ける等して処理の並列化、或いは分散化がし易いという利得がある。
【0033】
<第四の実施形態>
本実施形態では、第一、第四の実施形態と異なる部分のみ説明を行う。
第一、第三の実施形態では入力画像の変倍を行う例について説明を行ったが、本実施形態ではウィンドウサイズを変倍する場合の検出処理(つまり、ウィンドウサイズを変化させた検出処理)における方式について説明を行う。
本実施形態の画像処理装置は、検出処理においてはウィンドウ画像の一部若しくは全部を参照し、それに対して予め定められた係数を用いて判定処理を行う。そこで、このウィンドウサイズ、ウィンドウ内の参照位置、範囲を順次、2倍、3倍・・とすれば、入力画像を1/2、1/3・・・としていった場合と同様の効果を得ることができる。
この場合、本実施形態の画像処理装置は、第一、第三の実施形態で用いた検出対象の画像解像度情報(若しくはその識別情報)の代わりに、このウィンドウの倍率またはサイズなどを用いれば良い。
第一、第三の実施形態では、画像処理装置は、検出対象画像の解像度が高い物を破棄し、より解像度が低い物を残すように構成していたが、これは図4や或いは図5で説明したように、より大きな検出対象のものを残すように構成したものである。したがって、本実施形態の画像処理装置は、ウィンドウ拡大率が小さいものを破棄し、より拡大率が大きい物を残すようにする。
また、そのため、本実施形態の画像処理装置は、図11(a)〜(c)で例示した中間結果の格納には、「画像」の情報のかわりにこの倍率(若しくはそれを識別可能な情報)を記録する。
本実施形態の画像処理装置は、予め定められた最小ウィンドウサイズで入力画像の全領域に対して検出処理を行った後にウィンドウサイズを拡大して改めて入力画像の全領域に対して検出を行う。そして、更に、本実施形態の画像処理装置は、ウィンドウサイズを拡大して検出処理を行うことを繰り返す。このように本実施形態の画像処理装置を構成した場合、第一の実施形態の図13若しくは第二の実施形態の図15で説明したような処理で実現することもできる。
以上説明したように、本実施形態によっても、中間結果の出力数がバッファの数を超えるような場合であっても良好な結果を得ることができる。
【0034】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【0035】
以上、上述した各実施形態によれば、被写体の検出処理を大きさ固定の所定のサイズより小さいサイズの記憶容量で実現することができる。
【0036】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0037】
103 中間結果記憶部
104 統合処理部

【特許請求の範囲】
【請求項1】
記憶手段と、
入力画像及び前記入力画像から生成された複数の解像度の画像の各画像に対して、ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出する検出手段と、
を有し、
前記検出手段は、新たに検出した検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像より解像度が高い画像の検出結果を前記格納領域から破棄し、前記新たに検出した検出結果を前記格納領域に格納する画像処理装置。
【請求項2】
前記記憶手段は、予め定められた数の格納領域を有し、
前記検出手段は、入力画像及び前記入力画像から生成された複数の解像度の画像の各画像に対して、解像度が最も高い画像から順に前記ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出すると共に、検出結果を前記格納領域に順に格納し、前記記憶手段の格納領域に空きが無くなった場合には、前記検出結果を格納した格納領域の順に前記検出した検出結果を書き込む請求項1記載の画像処理装置。
【請求項3】
前記記憶手段の格納領域に格納された検出結果を統合する統合処理手段を更に有する請求項1又は2記載の画像処理装置。
【請求項4】
記憶手段と、
入力画像及び前記入力画像から生成された複数の解像度の画像の各画像に対して、ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出する検出手段と、
前記検出手段で新たに検出された検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像より解像度が高い画像の検出結果を前記格納領域から破棄し、前記新たに検出された検出結果を前記格納領域に格納し、前記記憶手段の格納領域に格納された検出結果を統合する統合処理手段と、
を有する画像処理装置。
【請求項5】
記憶手段と、
入力画像に対して、複数のウィンドウサイズによる検出処理を適用して画像中にある被写体を検出する検出手段と、
を有し、
前記検出手段は、新たに検出した検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像よりウィンドウサイズが小さい画像の検出結果を前記格納領域から破棄し、前記新たに検出した検出結果を前記格納領域に格納する画像処理装置。
【請求項6】
前記記憶手段は、予め定められた数の格納領域を有し、
前記検出手段は、入力画像に対して、順次、ウィンドウサイズを拡大して検出処理を適用して画像中にある被写体を検出すると共に、検出結果を前記格納領域に順に格納し、前記記憶手段の格納領域に空きが無くなった場合には、前記検出結果を格納した格納領域の順に前記検出した検出結果を書き込む請求項5記載の画像処理装置。
【請求項7】
前記記憶手段の格納領域に格納された検出結果を統合する統合処理手段を更に有する請求項5又は6記載の画像処理装置。
【請求項8】
記憶手段を有する画像処理装置が実行する画像処理方法であって、
入力画像及び前記入力画像から生成された複数の解像度の画像の各画像に対して、ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出するステップと、
前記ステップで新たに検出された検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像より解像度が高い画像の検出結果を前記格納領域から破棄し、前記新たに検出した検出結果を前記格納領域に格納するステップと、
を含む画像処理方法。
【請求項9】
記憶手段を有する画像処理装置が実行する画像処理方法であって、
入力画像及び前記入力画像から生成された複数の解像度の画像の各画像に対して、ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出するステップと、
前記ステップで新たに検出された検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像より解像度が高い画像の検出結果を前記格納領域から破棄し、前記新たに検出された検出結果を前記格納領域に格納するステップと、
前記記憶手段の格納領域に格納された検出結果を統合するステップと、
を含む画像処理方法。
【請求項10】
記憶手段を有する画像処理装置が実行する画像処理方法であって、
入力画像に対して、複数のウィンドウサイズによる検出処理を適用して画像中にある被写体を検出するステップと、
前記ステップで新たに検出された検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像よりウィンドウサイズが小さい画像の検出結果を前記格納領域から破棄し、前記新たに検出した検出結果を前記格納領域に格納するステップと、
を含む画像処理方法。
【請求項11】
記憶手段を有するコンピュータに、
入力画像及び前記入力画像から生成された複数の解像度の画像の各画像に対して、ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出するステップと、
前記ステップで新たに検出された検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像より解像度が高い画像の検出結果を前記格納領域から破棄し、前記新たに検出した検出結果を前記格納領域に格納するステップと、
を実行させるためのプログラム。
【請求項12】
記憶手段を有するコンピュータに、
入力画像及び前記入力画像から生成された複数の解像度の画像の各画像に対して、ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出するステップと、
前記ステップで新たに検出された検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像より解像度が高い画像の検出結果を前記格納領域から破棄し、前記新たに検出された検出結果を前記格納領域に格納するステップと、
前記記憶手段の格納領域に格納された検出結果を統合するステップと、
を実行させるためのプログラム。
【請求項13】
記憶手段を有するコンピュータに、
入力画像に対して、複数のウィンドウサイズによる検出処理を適用して画像中にある被写体を検出するステップと、
前記ステップで新たに検出された検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像よりウィンドウサイズが小さい画像の検出結果を前記格納領域から破棄し、前記新たに検出した検出結果を前記格納領域に格納するステップと、
を実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate