(57)【特許請求の範囲】
【請求項１】
画像におけるオブジェクトを検出する画像処理装置であって、
画像を入力する入力手段と、
前記画像を所定の角度で回転させる画像回転手段と、
前記入力手段によって入力された画像における第１の傾き角度の範囲内で傾いているオブジェクトの検出と、前記画像回転手段により回転された画像における第２の傾き角度の範囲内で傾いているオブジェクトの検出の両方を行う検出手段とを有し、
前記検出手段において、前記第２の傾き角度の範囲は、前記第１の傾き角度の範囲よりも狭いことを特徴とする画像処理装置。
【請求項２】
前記検出手段は、分岐型AdaBoostingを用いてオブジェクト検出処理を行い、前記画像回転手段によって回転された画像の角度に応じて分岐型AdaBoostingの分岐の数を制御することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記検出手段は、分岐型AdaBoostingを用いてオブジェクト検出処理を行い、前記画像回転手段によって回転された画像に対して適用する分岐型Adaboostingの分岐の数を、前記入力手段によって入力された画像に対して適用する分岐型Adaboostingの分岐の数より少なくすることで、前記画像回転手段によって回転された画像に、前記第１の傾き角度の範囲よりも狭い第２の傾き角度の範囲内で傾いているオブジェクトの検出を行うことを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記画像回転手段における所定の角度は、４５度であることを特徴とする請求項１乃至３のいずれか一項に記載の画像処理装置。
【請求項５】
画像におけるオブジェクトを検出する画像処理方法であって、
画像を入力する入力工程と、
前記画像を所定の角度で回転させる画像回転工程と、
前記入力工程によって入力された画像における第１の傾き角度の範囲内で傾いているオブジェクトの検出と、前記画像回転工程により回転された画像における第２の傾き角度の範囲内で傾いているオブジェクトの検出の両方を行う検出工程とを有し、
前記検出工程において、前記第２の傾き角度の範囲は、前記第１の傾き角度の範囲よりも狭いことを特徴とする画像処理方法。
【請求項６】
画像におけるオブジェクトを検出する画像処理装置であって、
画像を所定の角度で回転させる画像回転手段と、
前記所定の角度が９０度の整数倍の角度の場合、前記画像回転手段により回転された画像に第１の傾き角度の範囲内で傾いているオブジェクトの検出を行い、前記所定の角度が９０度の整数倍ではない角度の場合、前記画像回転手段により回転された画像に第２の傾き角度の範囲内で傾いているオブジェクトの検出を行う検出手段とを有し、
前記検出手段において、前記第２の傾き角度の範囲は、前記第１の傾き角度の範囲よりも狭いことを特徴とする画像処理装置。
【請求項７】
画像におけるオブジェクトを検出する画像処理方法であって、
画像を所定の角度で回転させる画像回転工程と、
前記所定の角度が９０度の整数倍の角度の場合、前記画像回転工程により回転された画像に第１の傾き角度の範囲内で傾いているオブジェクトの検出を行い、前記所定の角度が９０度の整数倍ではない角度の場合、前記画像回転工程により回転された画像に第２の傾き角度の範囲内で傾いているオブジェクトの検出を行う検出工程とを有し、
前記検出工程において、前記第２の傾き角度の範囲は、前記第１の傾き角度の範囲よりも狭いことを特徴とする画像処理方法。
【請求項８】
コンピュータを、
画像を入力する入力手段と、
前記画像を所定の角度で回転させる画像回転手段と、
前記入力手段によって入力された画像における第１の傾き角度の範囲内で傾いているオブジェクトの検出と、前記画像回転手段により回転された画像における第２の傾き角度の範囲内で傾いているオブジェクトの検出の両方を行う検出手段として機能させるためのプログラムであって、
前記検出手段において、前記第２の傾き角度の範囲は、前記第１の傾き角度の範囲よりも狭いことを特徴とするプログラム。
【請求項９】
コンピュータを、
画像を所定の角度で回転させる画像回転手段と、
前記所定の角度が９０度の整数倍の角度の場合、前記画像回転手段により回転された画像に第１の傾き角度の範囲内で傾いているオブジェクトの検出を行い、前記所定の角度が９０度の整数倍ではない角度の場合、前記画像回転手段により回転された画像に第２の傾き角度の範囲内で傾いているオブジェクトの検出を行う検出手段として機能させるためのプログラムであって、
前記検出手段において、前記第２の傾き角度の範囲は、前記第１の傾き角度の範囲よりも狭いことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特定の特徴を有する例えば顔などの画像領域を検出するための画像処理装置、画像処理方法に関する。
【背景技術】
【０００２】
画像から特定の被写体パターンを自動的に検出する画像検出方法は非常に有用であり、例えば人間の顔の判定に利用することができる。このような方法は、通信会議、マン・マシン・インタフェース、セキュリティ、人間の顔を追跡するためのモニタ・システム、画像圧縮などの多くの分野で使用することができる。
【０００３】
このような画像中から顔検出する技術としては、例えば次のような方式がある。例えば、いくつかの顕著な特徴とその特徴間の固有の幾何学的位置関係を利用する方式、人間の顔の対称的特徴、人間の顔色の特徴、テンプレート・マッチング、又はニューラル・ネットワークなどを利用することによって、人間の顔を検出する方式が知られている。
【０００４】
ところで、画像から顔を検出する場合には、人物が必ずしも直立正面向きに映っているわけではなく、またカメラも任意の方向に任意の倍率で撮影され得るため、顔が取りうる様々な角度、サイズに対応する必要がある。そのため、検出器の角度、サイズおよび検出位置を少しずつ変更しつつ、検出処理を繰り返す必要がある。
しかしながら、膨大な数の角度やサイズの組み合わせに関してその全てに対して検出処理を行うとすると、処理に長時間を要してしまう事態が発生してしまう。このため、探索領域を制限して検出処理を削減する手法が提案されている。例えば、最初の検出結果から顔の角度やサイズを限定して探索領域を制限する手法（特許文献１参照）、連続撮影画像に対して１枚目の検出結果から顔の角度やサイズを予測して探索領域を制限する手法（特許文献２参照）が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２３３５１７号公報
【特許文献２】特開２００９−０２６２９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の手法では最初の検出結果が誤検出であった場合、正確な顔領域を検出することができない。また、特許文献２の手法では連続して撮影していない画像に対しては探索範囲を制限することができず、処理時間を短縮することができない。このように、従来の顔検出の検出処理を削減する手法は、諸々の問題を内在している。そこで、高い検出性能を実現しつつ、検出処理の時間を短縮する適切な手法による顔検出処理が求められている。
【０００７】
全方向の顔に対応するために、検出器の検出角度を広くする方法が考えられる。しかし、検出角度を広げるとロバスト性が低下するため検出性能が悪化することが考えられる。特に、検出アルゴリズムが学習を必要とする場合は、検出角度が増えた分だけ学習が複雑になり、学習時間が長くなるだけでなく収束しない可能性が高くなってしまう。そのため、検出角度を広げる方法は得策ではなく、ある程度の検出角度の検出器の利用が必然となる。
【０００８】
検出角度に制限があるため、全方向対応するためには検出器のみを何度も回転する方法が考えられる。しかし、検出時にフィルタ出力値を解析する場合は、フィルタを回転することになる。その結果、フィルタ出力の特性が回転により変化してしまうため、設計時の特徴を捕えることができず検出性能が著しく低下する。また、ＩｎｔｅｇｒａｌＩｍａｇｅを利用して矩形領域を高速に解析する場合は、９０度の倍数以外の回転では高速解析ができないため、処理速度が著しく低下してしまう。なおＩｎｔｅｇｒａｌＩｍａｇｅとは画像中の特定の矩形領域の画素の総和を求める手法である。
【０００９】
一方、検出角度に制限があるため、斜め検出用パラメータを別途用意する方法が考えられる。しかし、検出器が学習を必要とする場合には、例えば９０度回転用と斜め検出用の両パラメータの検出性能が同等となる学習は困難であり、パラメータ間で検出性能差が生じる。その結果、両パラメータの検出結果を統合する際に誤検出の影響を受け、全体的な検出性能が低下してしまう。また、別途斜め検出用のパラメータを使用するには、膨大な学習時間を時間が必要となるだけでなく、別パラメータ分の記憶領域が必要となる。
【００１０】
そのため、画像中に現れ得る全方向の顔に対応するためには、検出器の９０度倍数回転に加え、それ以外の角度の画像回転が必要となる。しかし、画像を回転させた場合、９０度倍数以外では補間処理が発生するため画質が劣化する。劣化した画像に対して検出処理を行うと、予め学習した解析内容と異なる解析結果が得られる場合が発生し、検出性能が低下する可能性がある。
【００１１】
以上のように、従来の技術では、画像から特定の特徴を持つ領域（たとえば顔領域）を、その方向に関わらず検出しようとすると、処理時間の増大や、検出結果の低下が避けられなかった。
【００１２】
本発明は上記従来例に鑑みてなされたもので、画像中に出現し得る特定の特徴を持つ領域（例えば顔領域）を、当該画像領域の方向に関わらず、検出性能の低下を抑えつつ短時間で検出できる画像処理方法及び画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するために、本発明は以下の構成を備える。すなわち、画像におけるオブジェクトを検出する画像処理装置であって、
画像におけるオブジェクトを検出する画像処理装置であって、
画像を入力する入力手段と、
前記画像を所定の角度で回転させる画像回転手段と、
前記入力手段によって入力された画像における第１の傾き角度の範囲内で傾いているオブジェクトの検出と、前記画像回転手段により回転された画像における第２の傾き角度の範囲内で傾いているオブジェクトの検出の両方を行う検出手段とを有し、
前記検出手段において、前記第２の傾き角度の範囲は、前記第１の傾き角度の範囲よりも狭い。
あるいは他の側面によれば本発明は、画像におけるオブジェクトを検出する画像処理装置であって、
画像を所定の角度で回転させる画像回転手段と、
前記所定の角度が９０度の整数倍の角度の場合、前記画像回転手段により回転された画像に第１の傾き角度の範囲内で傾いているオブジェクトの検出を行い、前記所定の角度が９０度の整数倍ではない角度の場合、前記画像回転手段により回転された画像に第２の傾き角度の範囲内で傾いているオブジェクトの検出を行う検出手段とを有し、
前記検出手段において、前記第２の傾き角度の範囲は、前記第１の傾き角度の範囲よりも狭い。
【発明の効果】
【００１４】
本発明によれば、特定の特徴を持つ画像領域を検出する際に、画像が劣化した場合の検出範囲を狭めることによって、検出性能低下の抑制が実現できる。さらに、検出範囲を狭くすることにより検出時間を短くすることができる。
【図面の簡単な説明】
【００１５】
【図１】検出する顔の定義を説明するための図である。
【図２】第１実施形態における情報処理装置のハードウェア構成例を説明するブロック図である。
【図３】第１実施形態における顔の検出処理フローを説明するフローチャートである。
【図４】第１実施形態における顔検出の構成例を説明するブロック図である。
【図５】第１実施形態における顔検出の処理フローを説明するフローチャートである。
【図６】第１実施形態における顔検出の器官探索の構成例を説明するブロック図である。
【図７】第１実施形態における顔検出の器官探索の構成例を説明するフローチャートである。
【図８】第１実施形態における画像処理装置の構成例を説明するブロック図である。
【図９】第１実施形態における画像処理装置の構成例を説明するフローチャートである。
【図１０】第１実施形態における器官探索を画像回転に応じて変更する例を説明する図である。
【図１１】検出器の応答特性の例を説明する図である。
【図１２】弱判別器内に解析する矩形領域を設定する例を説明する図である。
【図１３】第２実施形態における弱判別器を直列に接続して強判別器を実現するＡｄａＢｏｏｓｔｉｎｇ例を説明する図である。
【図１４】第２実施形態における画像処理装置の構成例を説明するブロック図である。
【図１５】第２実施形態における画像処理装置の構成例を説明するフローチャートである。
【図１６】第２実施形態における顔検出の構成例を説明するブロック図である。
【図１７】第２実施形態における顔検出の処理フローを説明するフローチャートである。
【図１８】顔検出範囲を分割する例を示した図である。
【図１９】弱判別器ごとの角度特性の対応表の例と、画像回転に応じた使用設定表の例を示した図である。
【図２０】分岐型ＡｄａＢｏｏｓｔｉｎｇの例を示した図である。
【図２１】第３実施形態における画像処理装置の構成例を説明するブロック図である。
【図２２】第３実施形態における画像処理装置の構成例を説明するフローチャートである。
【図２３】第３実施形態における顔検出の構成例を説明するブロック図である。
【図２４】第３実施形態における顔検出の処理フローを説明するフローチャートである。
【図２５】第３実施形態における画像の回転に応じた分岐設定のＴＢＬの例を示した図である。
【発明を実施するための形態】
【００１６】
［実施形態に共通する説明］
以下、添付の図面を参照して本発明の好適な実施形態である画像処理装置および画像検出方法について説明する。以下で説明する各実施形態においては入力された画像にオブジェクトがあるか否かを判定する情報処理装置（画像処理装置）の例を示す。オブジェクトとは、ここでは、検出の対象となる特定の特徴を持つ画像領域であり、説明の具体化のためにオブジェクトは人の顔とする。これを特徴量域とも呼ぶ。なお、他のオブジェクトであってもよい。また処理対象となる画像データ（単に画像とも呼ぶ）は、画素を格子状に配置したラスタ画像データである。そのため、９０度を単位とした回転処理を行っても画質の劣化は生じない。しかし９０度以外の回転処理を行うと、補間処理などが行われて画質の劣化が生じする可能性がある。
【００１７】
各実施形態の説明を簡単にするために、入力画像に含まれる顔のサイズは検出器で検出できるサイズと仮定する。なお、画像及び検出器又はその一方をリサイズすることにより、多サイズの顔が検出できるようになるのは言うまでもない。
【００１８】
＜顔領域の一例＞
また、検出する顔サイズに関しては、図１のように定義する。目の間隔１０１は、両目の間の距離を示しており、瞳孔（目の中心）の中心間距離をｄとする。目の高さ１０２は、顔領域の上辺から動向の中心までの距離を示しており、両目距離の半分の距離（ｄ／２）を設定する。顔幅１０３は顔領域の幅を示しており、両目距離の２倍の距離（２×ｄ）を設定する。顔幅１０３は、顔領域全体にわたって一様に与えられる。顔領域の上辺は両目から目の高さ分だけ上の位置に、両目の瞳孔を結ぶ線分と平行に成るように設定する。顔高さ１０４は顔領域の高さを示しており、顔幅と同じ距離（２×ｄ）を設定する。顔高さ１０４は顔領域の左右の辺の長さであり、顔幅すなわち顔領域の上辺と直角に成るように設定する。顔領域の下辺は上辺から顔高さだけ離れて上辺と並行に設定される。顔領域の上辺及び下辺を顔幅、左辺及び右辺を顔高さと呼ぶこともある。顔サイズ１０５には顔幅及び顔高に囲まれた領域のサイズを設定する。以下で説明する実施形態では、検出する顔サイズ（検出顔サイズ）は、図１の顔サイズ１０５と定義して説明する。なお、図１では正面を向いている顔を例にしているが、正面以外の方向に顔が向いている場合であっても同様に検出顔サイズを定義することができる。すなわち、後述する要領で画像中の目や鼻といった器官を特定し、特定した器官のうち、たとえば両目の中心を結ぶ線分の長さおよび方向を基準として上述の方法で決まる正方形を顔領域とする。なお正面向き以外の顔についても、たとえば目やその近傍にある鼻の輪郭を探索するなどして検出できる。また、顔領域以外のオブジェクトについても、検出対象の特徴（たとえは顔領域における目に相当）を予め定めておき、検出された特徴を基準としてオブジェクトの範囲を決定することで、顔領域と同様の要領でオブジェクトを含む領域を画像中で定義することが可能である。
【００１９】
＜情報処理装置の構成＞
図２は第１実施形態に係わる情報処理装置のハードウェア構成例を説明するブロック図である。この情報処理装置すなわちコンピュータは、本実施形態では画像処理を行うことから画像処理装置と呼ぶこともできる。図２において、ＣＰＵ（中央演算装置）２００は、本実施形態で説明する情報処理方法すなわち画像処理方法をＲＡＭ２０２に一時的に読み出したプログラムに従って実行する。ＲＯＭ２０１には、ＣＰＵ２００により実行されるプログラムが記憶されている。ＲＡＭ２０２には、ＣＰＵ２００によるプログラムの実行時に、各種情報を一時的に記憶するためのメモリを提供している。ハードディスク２０３は、画像ファイルや、顔検出の際に用いられるパターン識別用の検出パラメータなどを保存するための記憶媒体である。ディスプレイ２０４は、本実施形態の処理結果をユーザに提示する装置である。制御バス／データバス２０５は、上述の各部とＣＰＵ２００とを接続する。
【００２０】
＜顔検出処理の流れ＞
以上の構成を備えた情報処理装置によって実行される顔を検出する際の全体的な処理の流れを、図３のフローチャートを参照して説明する。まずステップＳ３０１で、ＣＰＵ２００は、ハードディスク２０３に格納された画像データをＲＡＭ２０２に展開する。画像データはＲＡＭ２０２上では２次元配列として保持される。次のステップＳ３０２では、ＣＰＵ２００は、顔検出アルゴリズムで使用する解析パターンなどの検出パラメータをハードディスク２０３またはＲＯＭ２０１からＲＡＭ２０２に読み込む。ステップＳ３０３において、ＣＰＵ２００は、ステップＳ３０２で読み込んだ検出パラメータを使用して、ステップＳ３０１で読み込んだ画像データが表す画像内に顔があるかどうかを判定する。このステップＳ３０３における顔検出の処理が本発明の特徴部分であり、詳細な説明については後述する。次のステップＳ３０４において、ＣＰＵ２００は、ステップＳ３０３による顔の検出結果をディスプレイ２０４に表示する。ステップＳ３０３については図５にその詳細を説明する。
【００２１】
［実施形態１］
実施形態１では、器官の位置により顔検出を行う場合に、画像の回転に応じて検出時の探索範囲（検出範囲とも呼ぶ）を変更し、画像と検出器の回転を組み合わせて全方向の顔を検出する画像処理装置について説明する。本例では画像の回転角を検出器の回転角を補間する角度としている。具体的には、検出器を９０度ずつ回転させ、検出器の回転角である９０度を補間するよう元画像を回転させた画像についても顔領域の検出を行う。
【００２２】
なお検出器とは、後述する顔検出部に相当するが、本実施形態では顔の検出は器官すなわち特徴領域を構成する部品の検出に基づくので、後述の器官探索ユニットをこの場合の検出器とすることもできる。検出器の回転とは、対象画像と検出器との回転位相の関係を検出器の検出方向を変えることで変更することである。このようにするのは、顔など検出対象の特徴量域が方向性を持つためである。たとえばフィルタなどを用い、検出器が画素を走査している場合には、その走査方向を変更すればよい。たとえば、無回転すなわち基本方向では処理対象の領域の左上隅を起点としてラスタ走査順にフィルタ処理を行うとする。この場合、検出器を９０度を単位として回転することは、検出器を９０度を単位として回転した場合に画像が走査される順序で処理対象の領域を走査するように走査順を変更することと同じである。たとえば左上隅を起点として主走査を右に副走査を下にしてラスタ走査する検出器を右に９０度を回転することは、走査順を、右上隅を起点として主走査を下に副走査を左にしてラスタ走査するように変更することで実現できる。そこで、検出器の回転のことを検出方向の回転と呼ぶこともある。
【００２３】
以下の説明においては、顔検出は、Ｇａｂｏｒフィルタとグラフマッチングを利用した顔検出アルゴリズムを例に挙げて説明する。このアルゴリズムは、周波数特性と角度特性を抽出するＧａｂｏｒフィルタ出力結果から器官検出を行い、各器官の位置関係から注目領域が顔領域か否かを判定する方法である。
【００２４】
以下、第１の実施形態の画像処理装置に関して説明を行う。図８は、本発明の第１の実施形態による画像処理装置の構成の一例を示すブロック図である。図８は図３のＳ３０１〜Ｓ３０３に相当する処理を行うための構成を示す。本画像処理装置がソフトウェアにより実現される場合には、図８の各ブロックは部品となるソフトウェアモジュールで実現される。その手順は図９等に示す。
【００２５】
図８において画像設定部８０１は、ハードディスク内に記憶されている顔探索用の画像をＲＡＭ領域に設定する。画像設定部８０１はハードディスクから画像ファイルをＲＡＭ領域に展開する。画像回転設定部８０３は画像の回転角度を設定する。上述のように、画像の回転角は、最初は０度、２回目は４５度である。画像回転部８０２は展開した画像に対して設定した角度の画像回転を行う。画像の回転方法に関しては、一般的な回転方法により回転処理を行う。回転角度が９０度の倍数の場合、画素の入れ替えにより画像回転が可能なので、丸め誤差による画像劣化は発生しない。しかし、回転角度が９０度の倍数以外の場合、補間処理による丸め誤差が発生する為、画像劣化が発生する。
【００２６】
画像の回転は、まず回転後座標が回転前座標のどの位置に当たるかを算出する。その後、算出した座標の回転前画素値を回転後画素値として設定する。この時の座標変換は以下の式により行う。
x'＝[( x - cx ) × cos(β) - ( y - cy )× sin(β) + cx］
y'＝[( x - cx ) × sin(β) - ( y - cy )× cos(β) + cy］
xとyは変換前の画像座標、x'とy'は変換後の画像座標である。また、cxとcyは画像の中心座標、βは回転角度を示す。[ｎ]は、ｎの整数部のみを出力する。式中に三角関数が含まれているため、小数部が存在する。座標位置を算出するために小数部を打ち切ることにより、丸め誤差が発生する。
【００２７】
探索範囲変更部８０４は、画像の回転角度に応じて器官の探索範囲を変更する。回転により画質劣化が起きる場合は、探索範囲を予め定めた範囲より狭く設定する。画質劣化が起きない場合は、予め定めた範囲から探索範囲を変更しない。これは、劣化した画像に対して検出処理を行うと検出性能が低下する為である。本例では器官の探索は、元画像を０度回転させた画像（元画像）と４５度回転させた画像とを対象として行われる。両者を比較すると、補間等により画像の劣化が生じる４５度回転した画像における探索の方が、元画像を対象とした探索より探索結果の精度が劣る可能性がある。そこで、元画像を０度回転させた画像（元画像）における探索範囲よりも、４５度回転させた画像における探索範囲を狭める。検出器の回転は９０度単位であり、探索精度の低下をもたらさないので、その回転によって探索範囲を変更することはない。なお狭めることで探索の空白を作らないために、探索範囲の変更は、隣り合う検出範囲と重複する範囲で行われる。
【００２８】
検出器回転設定部８０５は検出器を回転する角度を設定する。この時、回転処理による丸め誤差をなくすために、９０度単位での回転のみを行う。すなわち、検出器の回転角は０度、９０度、１８０度、２７０度になる。検出器回転部８０６は、設定した検出器回転角度に基づいて、器官特徴及び探索範囲に対して回転処理を行う。
【００２９】
顔検出部８０７は、回転された画像を対象とし、また回転された検出器によって、探索領域を対象として器官の検出処理を行い、また各器官の検出結果を用いて顔候補領域の検出を行う。この詳細は図４に示す。検出結果統合部８０８は検出結果を統合し、最終的な検出結果すなわち顔領域を得る。以上が、実施形態１の画像処理装置に関する一例の説明である。
【００３０】
＜動作手順＞
次に、上述した画像処理装置の動作手順に関して説明する。図９は、実施形態１の画像処理装置の処理に関するフローチャートである。まず、画像設定部８０１により、顔を検出する画像が入力されＲＡＭ領域に展開されて設定する（Ｓ９０１）。次に、画像回転設定部８０３により、画像を回転する角度が設定される（Ｓ９０２）。最初は０度、２回目は４５度である。次に、画像回転部８０２により、設定した角度に応じて画像を回転する（Ｓ９０３）。次に、探索範囲変更部８０４により、画像の回転角度に応じて、器官の探索範囲を変更する（Ｓ９０４）。回転角が０度であればθ、４５度であればγが設定される。より一般的にいえば、元画像から９０度の整数倍だけ回転されている画像に対する探索範囲よりも狭い探索範囲を、元画像から９０度の整数倍でない角度だけ回転されている画像に対して設定する。
【００３１】
次に、検出器回転部８０５により、検出器を回転させる角度を設定する（Ｓ９０５）。ここでは、０，９０，１８０，２７０が、Ｓ９０５が実行される都度順次設定される。次に、検出器回転部８０６により、器官の特徴パラメータ及び探索範囲を回転する（Ｓ９０６）。次に、顔検出部８０７により、回転した画像に対して、回転した検出器を用いて検出処理すなわち各器官の探索処理を行う（Ｓ９０７）。ステップＳ９０７の詳細は図５に示す。
【００３２】
一対象範囲に対する探索処理の後には、全方向検出に必要な検出器の回転が終了したか否かを判断する（Ｓ９０８）。２７０度の回転が終了し、器官探索が終えていれば、Ｓ９０５に戻り再度検出器をさらに回転して検出処理を行う。終了した場合は、次の処理に進む。次に、全方向検出に必要な画像の回転が終了したか否かを判断する（Ｓ９０９）。４５度の回転が済んでいれば回転が終了したと判断される。終了していない場合は、Ｓ９０２に戻り再度画像を回転させて検出処理を行う。終了した場合は、次の処理に進む。最後に、検出結果統合部８０８により、検出した結果を統合して最終的な検出結果を出力する（Ｓ９１０）。
【００３３】
以上、実施形態１によれば、画像回転時に応じて器官の探索範囲を変更し、探索範囲を狭くすることにより、探索時間が短くなり検出時間を短縮することができる。更に、画像回転時に探索範囲を狭くすることにより、画像劣化による検出性能低下を抑えることができる。
【００３４】
＜顔検出部＞
顔検出部８０７は、本実施形態の画像処理装置の一部を構成する顔検出を実現する装置であり、例えばコンピュータにより本実施形態の装置が実現されるなら、その構成要素である顔検出部もまたコンピュータにより実行されるソフトウェアモジュールということになる。しかしながらハードウエアにより顔検出部８０７を構成することもできる。上述したように、顔検出は、Ｇａｂｏｒフィルタとグラフマッチングを利用した顔検出アルゴリズムで実現されている。
【００３５】
図４は、顔検出部８０７の構成の一例を示すブロック図である。ここでは、両目と口に関する器官検出を行い、その位置関係から顔検出を行う方法に関して説明する。もちろん、これは一例であって他の器官または髪や輪郭等の顔を特徴付ける部位を利用した検出でもよい。座標設定部４０１は、画像内における顔検出処理を行う基準となる座標位置を設定する。ここでは説明の簡略化のために、設定した座標位置は眉間とする。基準位置は、各器官の探索が終了（中止を含む）すると画像全体を走査するように新たな位置に移動される。左目探索部４０２は、基準位置である眉間から指定された探索範囲内で左目を探索する。探索する範囲は、予めパラメータとして設定する。探索処理に関しては、以下詳細に説明する。左目探索部４０２は、探索位置や範囲、探索対象の特徴といった入力パラメータとして左目用のパラメータが与えられた、器官探索ユニットという汎用の装置により実現される。本実施形態では、器官探索ユニットは、探索位置や範囲、探索対象の特徴を入力パラメータとするソフトウェアモジュールにより実現される。もちろんその構成要素は更にそのサブモジュールで実現される。もし探索が成功したなら、その探索範囲の画像領域について、探索対象の器官の特徴を持つことが記憶される。
【００３６】
図４の顔検出部８０７は、器官探索ユニットを用いて他の器官に関しても検出を行う。もちろん入力パラメータは、右目探索部４０３，口探索部４０４それぞれの探索位置や範囲、探索対象の特徴に応じて変更される。右目探索部４０３は右目の探索を行う。口探索部４０４は口の探索を行う。
【００３７】
顔領域設定部４０５は、各器官探索結果から全ての器官が指定探索領域で検出された場合に、座標設定部４０１で指定された座標を眉間の位置とする顔候補領域を設定する。顔領域は図１で説明したように設定される。各探索部は予め眉間から顔モデルに基づいて設定している。そのため、探索により検出された器官位置は自ずと器官の位置関係は顔の条件を満たしている。なお図４では左右の目と口という全ての探索対象器官を探索するように記載されているが、途中で探索に失敗した器官があれば、その時点で当該領域の探索を中止する。
【００３８】
＜器官探索ユニット＞
図６は、器官探索ユニットの構成の一例を示すブロック図である。探索範囲設定部６０１は、設定位置から探索する範囲を設定する。探索範囲は器官によって異なるため、器官ごとの探索パラメータを保持する。探索位置設定部６０２は探索開始位置を設定する。探索開始位置は器官により異なる。たとえば左目は眉間を基準位置として向かって右側にあるのでそこが探索範囲になる。たとえば、基準点から右側に基準線を伸ばし、基準点を要にして、基準線から上下に±θ度あるいは±γ度の広がりを持ち、かつ基準点からの距離が所定の距離範囲に収まる範囲を探索範囲とする。この探索範囲は、扇形から同軸の扇形を除外した範囲になるが、もちろん探索範囲を制限するために中心線から上下各方向への距離などでさらに範囲を制限しても良い。右目や口も同様に基準位置に対して探索範囲が決まる。もちろん基準点に対する方向は異なる。あるいは、上述した扇形の角度は、基準点から探索範囲までの距離と、探索範囲の上下の長さによって決めることもできるので、上述した角度θおよびγに相当するよう、探索範囲の基準点からの位置及びサイズを決定して角度θおよびγの決定に代えることもできる。この場合には探索範囲は矩形とすることができるので、探索をより単純化できる。
【００３９】
器官特徴設定部６０３は探索器官の特徴を設定する。ここでは、探索対象の器官に対するＧａｂｏｒフィルタの出力特性を設定する。Ｇａｂｏｒフィルタの特徴は器官ごとに異なるため、器官ごとにフィルタ特性を保持する。判定処理部６０４は設定した探索領域内に注目器官が含まれるか否かを判定する。
【００４０】
図７は、器官探索処理の処理フローの一例を示すフローチャートである。すなわち図７の各ステップは、図６のいずれかの構成要素により実現される。また器官探索装置がソフトウェアモジュールであれば、図７はまさにそれを実行するコンピュータ（あるいはプロセッサ）による処理フローを示す。
【００４１】
まず、探索範囲設定部６０１により、探索範囲を設定する（Ｓ７０１）。本例では探索範囲は基準位置からの広がり角度θ又はγのいずれかである。次に、探索位置設定部６０２により、器官を探索する開始位置が設定されている（Ｓ７０２）。次に、器官特徴設定部６０３により、探索する器官の特徴を設定する（Ｓ７０３）。次に、判定処理部６０４により、設定された画素に対して、器官の判定処理を行う（Ｓ７０４）。Ｇａｂｏｒフィルタの出力結果が予め設定した出力と同じであれば、注目器官として判定する（Ｓ７０５）。注目器官が検出できなかった場合は、設定した全探索領域内を探索するまでこの処理を行う（Ｓ７０６）。
【００４２】
＜器官探索の例＞
図１０は、器官探索の一例として左目の探索を示したものである。図１０（ａ）は、探索範囲変更前の探索範囲すなわち既定の探索範囲である。探索範囲の角度θは、画像が０度または９０度の倍数で回転されている場合の探索範囲に対応している。θは探索範囲の２分の１の角度であり、検出器のロバスト性を高めるために４５度未満の範囲とする。検出器は基準点１０１０から所定距離離れた基準線上にある探索開始位置１００１から矢印に沿って注目器官の検出処理を行う。注目器官が検出できなかった場合には探索終了位置１００２で探索終了とする。図では探索範囲は上下方向の距離も制限されているが、これはなくともよい。基準点からの距離範囲は必要である。
【００４３】
本実施形態における探索範囲の角度は、画像中における探索可能な顔の傾きに相当する。たとえば、設定された眉間を中心として左右の目がそれぞれの探索範囲内にあれば、たとえ顔が傾いていても検出することができる。これは口についても同様である。したがって探索範囲の角度の半分をθとすれば、眉間を中心として±θ傾いた顔を検出できることになる。
【００４４】
図１０（ｂ）は、探索範囲変更後の探索範囲である。すなわち元画像を４５度回転した画像に適用される探索範囲を示す。探索範囲の角度γは、以下の式により算出される。
γ（度）＝（９０−２θ）／２  +  α    （数式１）。
【００４５】
ここで、αは検出範囲の重複量を表しており、適当な値を設定する。なお本発明の主旨からは、θ＞γとなるようにθ及びγは決定される必要がある。従って数式１に従えばθ＞（４５−α）／２なる条件がつく。また重複角度αは、探索範囲の境界に位置する器官も高精度に探索することを目的の一つとしている。そこでαはそのように選択されるが、たとえば探索結果が最も良好になるように実験的に決定してもよい。数式１に従えば、たとえばθを３０度と設定すれば、γは１５度＋αとなる。このようにθとγとを定め、元画像を０度または４５度回転した画像それぞれを対象に、検出器を９０度ずつ回転させて顔を検出することで、どのような傾きを持つ顔であっても画像から検出できる。
【００４６】
＜顔検出処理手順＞
図５は、これまで説明した顔検出の処理フローの一例を示すフローチャートである。図５の手順は、顔検出をソフトウェアで行う場合には、コンピュータ（あるいはＣＰＵ）が実行主体となる顔検出のフローを示している。また、ステップＳ５０２，Ｓ５０４，Ｓ５０６それぞれは、パラメータを器官に応じて変えつつ図７の器官探索処理をサブルーチンとして実現される。
【００４７】
まず、座標設定部４０１により、検出処理を行う基準の座標位置を設定する（Ｓ５０１）。設定した座標を眉間とみなす。次に、左目探索部４０２により、眉間座標から指定範囲内に対して左目の探索を行う（Ｓ５０２）。左目を検出した場合は処理を続行し、検出しなかった場合はＳ５０９まで処理を飛ばす（Ｓ５０３）。次に、右目探索部４０３により、眉間座標から指定範囲内に対して右目の探索を行う（Ｓ５０４）。右目を検出した場合は処理を続行し、検出しなかった場合はＳ５０９まで処理を飛ばす（Ｓ５０５）。次に、口探索部４０４により、眉間座標から指定範囲内に対して口の探索を行う（Ｓ５０６）。口を検出した場合は、処理を続行する。検出しなかった場合、Ｓ５０９まで処理を飛ばす（Ｓ５０７）。次に、顔候補設定部４０５により、眉間座標を顔領域としてメモリに格納する（Ｓ５０８）。一連の検出処理を全画素に対して実行したか否かを判定し、実行した場合は顔検出処理を終了する。実行していない場合は、Ｓ５０１に戻り、基準位置を次の座標に移動して処理を続ける（Ｓ５０９）。移動する距離は、たとえばもし顔領域が検出されていれば、その顔領域の辺の距離でよい。そして検出されている顔領域を単位として画像全体を走査するように基準位置を移動する。一方顔領域が未検出の場合には、たとえば、設定されている各器官の探索範囲に基づいて決まる顔領域の辺の距離とする。もちろん他の基準で予め定めておいた距離で移動させても良い。以上が、顔検出処理の処理フローである。
【００４８】
このように、器官探索用のフィルタは対象の器官毎に変えられるだけでなく、画像の回転角度に応じてもまた変更される。そして、画像の回転角度に応じて探索範囲が変更される。こうすることで、画像の全方向について顔を検出でき、高精度且つ高速な顔領域の検出が可能となる。
【００４９】
なお本実施形態では元画像の回転角は、９０度の半分である４５度としている。しかし、検出器の検出範囲が狭い場合には、より小さい角度としてもよく、たとえば９０度の半分ではなく３分の１の３０度や４分の１の２２．５度などとすることもできる。画像の回転角を３０度とした場合には、探索対象の画像は元画像そのものに加えて、３０度回転した画像と６０度回転した画像の合計３つとなり、画像の回転角を２２．５度とした場合には、探索対象の画像は元画像そのものに加えて、２２．５度回転した画像と４５度回転した画像、６７．５度回転した画像の合計４つとなる。ただし検出範囲を均等にしなければ、そのすべてである必要はない。本実施形態では検出範囲を角度αだけ重複させているので、角度αを大きく取れば、検出範囲は必ずしも均等でなくとも全方向をカバーできる。
［実施形態２］
実施形態２では、ＡｄａＢｏｏｓｔｉｎｇを用いて顔検出を行う場合に、画像の回転に応じて使用する弱判別器を制御し、画像と検出器の回転を組み合わせて全方向の顔を検出する装置について説明する。実施形態２では、探索範囲を変更して検出範囲を狭めるのではなく、使用する弱判別器を制御して検出範囲を狭める点で、実施形態１と処理が異なる。しかしながら、弱判別器の組み合わせで実現される強判別器を顔領域の検出器と考えた場合、本実施形態でもやはり探索範囲を変更しているとも言える。ただし、本実施形態では、使用する弱判別器の取捨選択により探索範囲の変更を実現している。
【００５０】
以下の実施形態２では、画像の回転に応じて使用する弱判別器を制御して検出範囲を狭める例を説明する。実施形態２の画像処理装置を実現するための情報処理装置に関しては、実施形態１と同様であるため、説明は省略する。本実施形態でも、検出器すなわち弱判別器で構成される強判別器は方向性を有する。
【００５１】
ＡｄａＢｏｏｓｔは多数の弱判別器を直列に接続することにより強判別器を実現する手法である。各弱判別器は、Ｈａａｒタイプの矩形特徴量が設定されている。ここでは説明のために、図１２に示すように、１つの弱判別器で２箇所の矩形領域を解析するように設定する。弱判別器は、矩形領域ごとに矩形特徴量を解析し、その特徴量の関係が予め学習した結果と同じであれば、評価値を加算していく。弱判別器ごとに解析する矩形特徴量は異なる。たとえば、一つの弱判別器で横方向のエッジの量を特徴量として判別し、もうひとつの判別器では輝度の分散を、他の弱判別器では特定の色の範囲の画素の数を判別する。このように本実施形態では器官の検出に適した特徴量が選択される。これは一例に過ぎず、他の特徴量を採用することもできる。図１３に示すように弱判別器を直列に接続し、１つの強判別器（すなわち、検出器）を実現する。各弱判別器で、各矩形領域の評価値を加算した加算評価値が設定閾値以下になった時点で処理を打ち切ることにより、処理の高速化を図る。最終的に全ての弱判別器で顔候補と判定された場合には、その矩形領域によって特定される領域を顔領域として出力する。
【００５２】
図１４は、本発明の第２の実施形態による画像処理装置の構成の一例を示すブロック図である。図８と同じ番号に関しては、実施形態１で説明したものと同じ処理内容であるため、ここでは詳細な説明を省略し、実施形態１と相違する部分についてのみ説明する。また画像の回転や検出器の回転については実施形態１と同様である。ＴＢＬ設定部１４０４には、使用する弱判別器の設定に関するＴＢＬ（弱判別器適用表とも呼ぶ）を設定する。ＴＢＬには、使用する弱判別器は「１」を設定し、使用しない弱判別器は「０」を設定する。
【００５３】
ここからはＴＢＬ作成方法に関して説明する。図１９（ａ）に示したように各弱判別器の角度特性を調査する。角度特性とは、図１８に示したように検出可能範囲を分割し、各範囲を定義したものである。θ度は、実施形態１で示した検出器の検出角度であり、γ度は数式１に基づき算出する。角度特性の調査方法としては、図１８の各範囲に相当する傾いた顔が含まれる画像を入力して検出処理を行い、その際の弱判別器の出力特性を測定する。出力特性が強い範囲を弱判別器の角度特性とみなし、図１９（ａ）のような対応表を作成する。作成した対応表をもとにＴＢＬ（弱判別器適用表）を作成する。画像回転時に検出範囲を狭める場合は、「範囲１」と「範囲４」の弱判別器を使用しない設定「０」にし、「範囲２」と「範囲３」の弱判別器を使用する設定「１」にする（図１９（ｃ））。検出範囲を狭めない場合は、「範囲１」〜「範囲４」までの全弱判別器を使用する設定「１」にする（図１９（ｂ））。このように図１９（Ｂ）と図１９（ｃ）に示した２種類のＴＢＬを作成し、画像の回転に応じて設定するＴＢＬを変更することにより、弱判別器を制御し、検出範囲を変える。
【００５４】
図１４に戻り説明を続ける。検出器回転部１４０６は、設定した角度に応じて弱判別器の解析矩形領域を回転する。顔検出部１４０７は、回転した画像に対して、回転した弱判別器と設定したＴＢＬを用いて、検出処理を行う。ここで、顔検出処理部の詳細に関して説明する。
【００５５】
図１６は、顔検出部１４０７の構成の一例を示したものである。処理画素設定部１６０１は、弱判別器で解析する画像データを設定する。弱判別器設定部１６０２は、処理する弱判別器を設定する。ＴＢＬ参照部１６０３は、ＴＢＬを参照して弱判別器が処理対象か否かを出力する。ＴＢＬは、画像回転に応じて変更されたＴＢＬである。解析処理部１６０４は、画像に対して、設定した弱判別器とＴＢＬを利用して、解析処理を行い、閾値判定を行う。評価値累積部１６０５は、解析処理部１６０４での判定結果に基づき評価量を累積する。顔領域設定部１６０６は、全弱判別器処理後に累積評価値から、処理画素が顔領域か否かを判定する。
【００５６】
上述した顔検出の動作手順に関して説明する。図１７は、顔検出の処理フローチャートである。まず、処理画素設定部１６０１により、処理する画像データを設定する（Ｓ１７０１）。次に、弱判別器設定部１６０２により、判定に使用する弱判別器を設定する（Ｓ１７０２）。次に、ＴＢＬ参照部１６０３により、使用する弱判別器の設定ＴＢＬを参照する（Ｓ１７０３）。ＴＢＬを参照した結果、使用する弱判別器の場合は処理を続け、使用しない弱判別器の場合はＳ１７１０まで処理を飛ばす。次に、解析処理部１６０４で、設定した弱判別器を用いて、画像領域内の解析処理を行う（Ｓ１７０５）。解析結果から閾値判定を行う（Ｓ１７０６）。次に、評価値累積部１６０５により、閾値よりも上の場合には評価値を累積加算し（Ｓ１７０８）、閾値よりも下の場合には評価値を累積減算する（Ｓ１７０９）。加減する評価値は弱判別器によって異なる。次に全弱判別器が実行済みか否かを判定する（Ｓ１７１０）。実行済みの場合は次の処理に進む。実行済みでない場合はＳ１７０２に戻り、次の弱判別器を用いて一連の処理を繰り返す。次に、累積評価値から処理用域が顔領域か否かを判定する（Ｓ１７１１）。顔と判定された場合は、顔領域設定部１６０６により、顔候補として設定する（Ｓ１７１２）。次に、全画素に対して検出処理を行ったか否かを判定し（Ｓ１７１３）、全画素に対して処理を行った場合には処理を終了し、全画素に対して処理を行っていない場合には、Ｓ１７０１に戻り次の処理画素に対して一連の処理を繰り返す。以上が、顔検出の詳細な検出処理フローである。
【００５７】
以上が、実施形態２の画像処理装置に関する一連の説明である。
【００５８】
次に、上述した画像処理装置の動作手順に関して説明する。図１５は、画像処理装置の処理フローチャートである。まず、画像設定部８０１により、顔を検出する画像が入力されＲＡＭ領域に展開して設定する（Ｓ１５０１）。次に、画像回転設定部８０３により、画像を回転する角度を設定する（Ｓ１５０２）。次に、画像回転部８０２により、画像回転設定部８０３により設定した角度に応じて画像を回転する（Ｓ１５０３）。次に、ＴＢＬ設定部１４０４により、設定した角度に応じて、使用する弱判別器に関するＴＢＬを設定する（Ｓ１５０４）。次に、検出器回転設定部８０５により、検出器を回転する角度を設定する（Ｓ１５０５）。次に、検出器回転部１４０６により、弱判別器ごとの解析矩形領域を回転する（Ｓ１５０６）。
【００５９】
次に、顔検出部１４０７により、回転した画像に対して、回転した検出器を用いて検出処理を行う（Ｓ１５０７）。次に、全方向の顔を検出するために必要な検出器の回転が完了したかを判定する（Ｓ１５０８）。終了していない場合は、Ｓ１５０５に戻り再度検出器を回転させて検出処理を行う。完了した場合は、次の処理に進む。次に、全方向の顔を検出するために必要な画像の回転が完了したかを判定する（Ｓ１５０９）。完了していない場合は、Ｓ１５０２に戻り再度画像を回転させて検出処理を行う。完了した場合は、次の処理に進む。最後に、検出結果統合部８０８により、検出された結果を統合し、最終的な検出結果を出力する（Ｓ１５１０）。
【００６０】
以上、実施形態２によれば、画像回転に応じて使用する弱判別器を、センシティブな角度の範囲に応じて変更し探索範囲を狭くすることができるため、使用する弱判別器が少なくなる分だけ検出時間を短縮することができる。更に、画像回転時は画像劣化するため、画像回転時の探索範囲を狭くすることにより検出性能の低下を抑えることができる。
【００６１】
ここでは、画像回転に応じて使用する弱判別器を変更する方法に関して説明したが、他の項目を制御してもよいことは言うまでもない。例えば、画像回転に応じて弱判別器の閾値を変更し、範囲外の弱判別器では顔領域と判定されないように制御してもよい。閾値が上がり顔領域で内と判定されると累積評価値が下がっていくため、各弱判別器処理後に実行される打ち切り処理の対象となり、処理が中断される。打ち切りが速くなる分処理速度は速くなる。また、閾値が高くなるため誤検出が抑えられ、検出性能の低下を抑えることができる。
【００６２】
［実施形態３］
実施形態３では、顔の状態別に弱判別器を分岐構造に配置した分岐型ＡｄａＢｏｏｓｔｉｎｇを用いて顔検出を行う場合に、画像の回転に応じて使用する分岐を制御し、画像と検出器の回転を組み合わせて全方向の顔を検出する装置について説明する。実施形態３は、使用する弱判別器を制御するのではなく、分岐を制御して検出範囲を狭める点で、実施形態２と処理が異なる。本実施形態でも、弱判別器の組み合わせで実現される強判別器を顔領域の検出器と考えた場合、やはり探索範囲を変更していると言える。ただし、本実施形態では、使用する弱判別器の取捨選択により探索範囲の変更を実現している。この点は実施形態２と共通する。本実施形態では、検出した特徴信号の強度に応じてよりセンシティブな方向で特徴領域すなわち顔を検出する点で実施形態２と相違する。
【００６３】
以下の実施形態３では、画像の回転に応じて使用する分岐を制御して検出範囲を狭める例を説明する。実施形態３の画像処理装置を実現するための情報処理装置に関しては実施形態２と同様であるため、説明は省略する。
【００６４】
分岐型ＡｄａＢｏｏｓｔｉｎｇは、顔の状態に応じて弱判別器を分岐構造に配置することにより、ＡｄａＢｏｏｓｔｉｎｇよりも更にロバスト性を高めた検出手法である。ＡｄａＢｏｏｓｔｉｎｇとの類似点は、弱判別器での判定結果に応じて評価値を累積し、最終的にその評価値により判定を行う点と、各弱判別器の判定後に打ち切り判定を行う点である。異なる点である分岐に関しての説明は、ここでは顔の方向のみに注目して説明する。顔のサイズなど他の要素に応じて分岐させてもよいことは言うまでもない。
【００６５】
図２０は、顔の方向に応じて弱判別器を分岐型に配置した分岐型ＡｄａＢｏｏｓｔｉｎｇの一例である。Ｓｔｅｐ（ステージ又は段とも呼ぶ）は、各分岐の区間を示す単位とする。顔の方向に関しては、図１８の定義を利用する。まずは、Ｓｔｅｐ１で検出器の全範囲である−θからθまでを処理対象とする弱判別器で画像を処理する。弱判別器１０３までの累積評価値を基にＳｔｅｐ２の弱判別器による検出を行う。弱判別器２０１から２０３までの累積評価値（−θ〜０）と、弱判別器３０１から３０３（０〜θ）までの累積評価値を比較し、累積評価値が大きい方の分岐を継続する。評価値が低い分岐は、処理を打ち切る。分岐数が多い場合は、複数の分岐を同時並行して処理してもよい。比較した結果、累積評価値が大きかった方の分岐からさらに分岐する弱判別器で画像の評価を継続する。すなわち、弱判別器２０１から２０３までの累積評価値が大きければ、弱判別器４０１から４ＭＮまでの分岐（範囲はγ〜θ）と、弱判別器５０１から５ＭＮまでの分岐（範囲は０〜γ）とで評価を継続する。一方、弱判別器３０１から３０３までの累積評価値が大きければ、弱判別器６０１から６ＭＮまでの分岐（範囲は−γ〜０）と、弱判別器７０１から７ＭＮまでの分岐（範囲は−θ〜−γ）とで評価を継続する。なおγ＜θである。分岐は弱判別器がセンシティブな傾きに応じて行われることから、本実施形態でも、検出器すなわち弱判別器で構成される強判別器はやはり方向性を有する。
【００６６】
たとえばステップ２の分岐で弱判別器３０１から３０３までの累積評価値が大きかったとすると、Ｓｔｅｐ３では、弱判別器６０１およびそれに連なる弱判別器の分岐と弱判別器７０１およびそれに連なる弱判別器の分岐とが処理を継続する。このように同時並行する弱判別器の評価結果を比較することにより、分岐を制御し、最終的に最後の弱判別器まで処理された評価値から顔を判定する。
【００６７】
図２１は、本発明の第３の実施形態による画像処理装置の構成の一例を示すブロック図である。図１４と同じ番号に関しては、実施形態２で説明したものと同じ処理内容であるため、ここでは詳細な説明を省略し、実施形態２と相違する部分についてのみ説明する。また画像の回転や検出器の回転については実施形態１と同様である。分岐設定変更部２１０４は、画像回転設定部８０３に応じて使用する分岐を設定する。使用する分岐の設定は、図２５に示すＴＢＬを参照して行う。ＴＢＬには、画像回転角度に応じて各Ｓｔｅｐにおける分岐の数と、使用する弱判別器群の先頭アドレスが格納されている。このＴＢＬを参照して、画像の回転角度に応じて使用分岐を設定する。検出処理時には、使用分岐範囲内で、分岐判定処理して検出処理を行う。顔検出部２１０７は、回転した画像に対して、使用する分岐内の回転した弱判別器を用いて、検出処理を行う。
【００６８】
図２３は、顔検出部２１０７の構成の一例を示したものである。図１６と同じ番号に関しては、実施形態２で説明したものと同じ内容であるため、ここでは詳細な説明を省略し、実施形態２との相違する部分についてのみ説明する。処理Ｓｔｅｐ設定部２３０３は、分岐型ＡｄａＢｏｏｓｔｉｎｇの処理Ｓｔｅｐを設定する。分岐制御部２３０４は、ＴＢＬにより設定された使用分岐が設定される。使用分岐は、分岐設定変更部２１０４で画像の回転に応じて設定する。分岐判定部２３０５は、各分岐の全弱判別器処理後の累積評価値を比較して、評価値が大きい方を継続分岐と判定する。ここまでが、顔検出処理部の構成に関する説明である。
【００６９】
図２４は、詳細な顔検出処理部のフローチャートを示したものである。まず、処理画素設定部１６０１により、処理する画像データを設定する（Ｓ２４０１）。次に、処理Ｓｔｅｐ設定部２３０３により、処理するＳｔｅｐを設定する（Ｓ２４０２）。次に、分岐制御部２３０４により、画像の回転角度により変更した使用分岐を分岐テーブルＴＢＬに基づいて設定する（Ｓ２４０３）。使用分岐の設定は図２５に例示した分岐テーブルにより定められており、ステップＳ２４０３では、前のステップにおける評価結果と、次に進むステップおよび画像の回転角度とから、次のステップで評価を継続する分岐すなわち弱判別器の系列を決定する。次に、弱判別器設定部１６０２により、決定された使用分岐内で実際に評価処理を行う弱判別器を設定する（Ｓ２４０４）。すなわち各ステージの弱判別器は直列に接続されていることから、その系列の先頭のステージの弱判別器で順次評価が行われ、その評価結果すなわち前段の評価結果が、次段のステージの弱判別器として、どの方向性を持つ弱判別器を選択するかの基礎となる。すなわち前段における評価結果に応じて、次段での弱判別器により検出可能な方向性が段階的に絞り込まれる。
【００７０】
次に、解析処理部１６０４により、画像に対して、Ｓ２４０４で決定した弱判別器により解析処理を行う（Ｓ２４０５）。次に、解析結果から閾値判定を行う（Ｓ２４０６）。閾値よりも高い場合は評価値累積部１６０５により累積評価値に評価値を加算し（Ｓ２４０７）、閾値よりも低い場合は評価値を累積評価値から減算する（Ｓ２４０８）。この処理がＳｔｅｐ間の全弱判別器に対して実行したかを判定する（Ｓ２４０９）。実行した場合は次の処理に進む。実行していない場合は、Ｓ２４０４に戻り、次の弱判別器で一連の処理を繰り返す。更に、全分岐が実行したかを判定し（Ｓ２４１０）、実行した場合は次の処理に進む。実行していない場合は、Ｓ２４０３に戻り次の分岐で一連の処理を繰り返す。次に、分岐判定部２３０５により、各分岐での累積評価値を比較して継続する分岐を決定する（Ｓ２４１１）。次に、全Ｓｔｅｐに対して一連の処理を実行したかを判定する（Ｓ２４１２）。実行した場合は次の処理に進む。実行していない場合は、Ｓ２４０２に戻り、次のＳｔｅｐで一連の処理を繰り返す。全Ｓｔｅｐを実行した後、累積評価値から顔領域か否かを判定する（Ｓ２４１３）。顔領域と判定した場合、顔候補設定部１６０６により、処理画素を顔領域として設定する（Ｓ２４１４）。次に、全画素に対して検出処理を行ったかを判定する（Ｓ２４１５）。全画素に対して処理を行った場合には処理を終了し、全画素に対して処理を行っていない場合には、次の処理画素に対して一連の処理を繰り返す。以上が、顔検出の詳細な検出処理フローである。以上が、実施形態３の画像処理装置に関する一連の説明である。
【００７１】
次に、上述した画像処理装置の動作手順に関して説明する。図２２は、画像処理の処理フローチャートである。まず、画像設定部８０１により、顔を検出する画像を入力してＲＡＭ領域に展設定する（Ｓ２２０１）。次に、画像回転指定部８０３により、画像を回転する角度を設定する（Ｓ２２０２）。次に、画像回転部８０２により、設定した角度に応じて画像を回転する（Ｓ２２０３）。次に、分岐設定変更部２１０４により、回転した画像の角度に応じて、使用分岐を設定する（Ｓ２２０４）。具体的には、０度であれば図２５のテーブルの上段を、４５度であれば下段を設定する。次に、検出器回転設定部８０５により、検出器を回転する角度を設定する（Ｓ２２０５）。次に、検出器回転部１４０６により、設定した角度に応じて、弱判別器ごとの解析矩形領域を回転する。（Ｓ２２０６）。次に、顔検出部２１０７により、画像に対して、分岐内の検出器を用いて検出処理を行う（Ｓ２２０７）。ステップＳ２０７の詳細が図２４に示した手順である。次に、全方向の顔を検出するために必要な検出器の回転が完了したかを判定する（Ｓ２２０８）。完了していない場合は、Ｓ２２０５に戻り更に検出器を回転させて一連の検出処理を繰り返す。完了した場合は、次の処理に進む。次に、全方向の顔を検出する為に必要な画像の回転が完了したかを判定する（Ｓ２２０９）。完了していない場合は、Ｓ２２０２に戻り画像を回転させて一連の検出処理を行う。完了した場合は次の処理に進む。最後に、検出結果統合部８０８により、検出した結果を統合して最終的な検出結果を出力する（Ｓ２２１０）。
【００７２】
この様に顔検出部２１０７を構成することで、画像回転量が元画像に対して９０度の整数倍であれば探索範囲（探索角度）は−θ〜θの範囲となるが、そうでない場合には−γ〜γの範囲となる。
【００７３】
以上、実施形態３によれば、画像回転に応じて分岐型ＡｄａＢｏｏｓｔｉｎｇの使用分岐を変更して探索範囲を狭くすることができるため、使用しない分岐だけ検出時間を短縮することができる。更に、画像回転時は画像劣化するため検出性能低下が発生しやすくなるので、画像回転時の探索範囲を狭くすることにより検出性能低下を抑えることができる。
【００７４】
［その他の実施形態］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005795847.tif 000002
【図２】
0005795847.tif 000003
【図３】
0005795847.tif 000004
【図４】
0005795847.tif 000005
【図５】
0005795847.tif 000006
【図６】
0005795847.tif 000007
【図７】
0005795847.tif 000008
【図８】
0005795847.tif 000009
【図９】
0005795847.tif 000010
【図１０】
0005795847.tif 000011
【図１１】
0005795847.tif 000012
【図１２】
0005795847.tif 000013
【図１３】
0005795847.tif 000014
【図１４】
0005795847.tif 000015
【図１５】
0005795847.tif 000016
【図１６】
0005795847.tif 000017
【図１７】
0005795847.tif 000018
【図１８】
0005795847.tif 000019
【図１９】
0005795847.tif 000020
【図２０】
0005795847.tif 000021
【図２１】
0005795847.tif 000022
【図２２】
0005795847.tif 000023
【図２３】
0005795847.tif 000024
【図２４】
0005795847.tif 000025
【図２５】
0005795847.tif 000026