図1は実施の形態に係る画像検出装置3を備える画像処理システム1の構成を示す図である。画像処理システム1は、画像検出装置3と、撮像装置2とを備えている。撮像装置2は、画像を撮像し、撮像画像を示す画像データを画像検出装置3に出力する。画像検出装置3は、入力される画像データが示す撮像画像から検出対象画像(「特定画像」とも言う)を検出する。画像処理システム1は、例えば、監視カメラシステム、デジタルカメラシステム等で使用される。本実施の形態では、検出対象画像は、例えば人の顔画像である。以後、単に「顔画像」と言えば、人の顔画像を意味するものとする。また、検出対象画像を検出する対象の撮像画像を「処理対象画像」と呼ぶ。なお、検出対象画像は顔画像以外の画像であっても良い。例えば、検出対象画像は人体の画像(人全体の画像)であっても良い。
図2は画像検出装置3の構成を示す図である。図2に示されるように、画像検出装置3は、CPU(Central Processing Unit)等のプロセッサ11と、ROM(Read Only Memory)及びRAM(Random Access Memory)等で構成された記憶部12と、画像入力部13と、画像検出部14とを備えており、これらはバス10を通じて相互に電気的に接続されている。
プロセッサ11は、記憶部12、画像入力部13及び画像検出部14を制御することによって、画像検出装置3全体の動作を統括的に管理する。プロセッサ11が実行する各種処理は、当該プロセッサ11が記憶部12のROMに記憶された各種プログラムを実行することによって実現される。
画像入力部13には、撮像装置2で順次撮像された複数枚の画像をそれぞれ示す複数の画像データが順次入力される。画像入力部13は、入力される画像データが示す画像を縮小し、縮小後の画像を示す画像データを画像検出部14に出力する。画像検出部14は、入力される画像データが示す画像を処理対象画像として、処理対象画像から顔画像を検出する。
<画像入力部の構成>
図3は画像入力部13のハードウェア構成を示すブロック図である。図3に示されるように、画像入力部13は、バス10に接続された画像縮小回路20と、第1記憶回路22及び第2記憶回路23を有する記憶部21とを備えている。第1記憶回路22及び第2記憶回路23のそれぞれは例えばRAMである。
画像縮小回路20には、撮像装置2で順次撮像された複数枚の画像をそれぞれ示す複数の画像データが順次入力される。撮像装置2では、例えば、1秒間にL枚(L≧2)の画像が撮像される。つまり、撮像装置2での撮像フレームレートは、Lfps(frame per second)である。また、撮像装置2で撮像される画像では、行方向にM1個(M1≧2)の画素が並び、列方向にN1個(N1≧2)の画素が並んでいる。撮像装置2で撮像される画像の解像度は、例えばフルハイビジョンであって、M1=1920、N1=1080となっている。
なお以後、行方向にm個(m≧1)の画素が並び、列方向にn個(n≧1)の画素が並ぶ領域の大きさをmp×npで表す(pはピクセルの意味)。また、行列状に配置された複数の値において、左上を基準にして第m行目であって第n列目に位置する値をm×n番目の値と呼ぶことがある。また、行列状に配置された複数の画素において、左上を基準にして第m行目であって第n列目に位置する画素をm×n番目の画素と呼ぶことがある。
画像縮小回路20は、撮像装置2から画像データが入力されるたびに、当該画像データが示す画像のサイズを縮小し、縮小後の画像を示す画像データを第1記憶回路22及び第2記憶回路23に交互に書き込む。第1記憶回路22及び第2記憶回路23の一方に画像データが書き込まれている間に、第1記憶回路22及び第2記憶回路23の他方が記憶する画像データが使用されて当該画像データ示す画像に対する顔画像の検出処理が画像検出部14で行われる。本実施の形態では、画像縮小回路20で縮小された画像が処理対象画像となる。つまり、第1記憶回路22及び第2記憶回路23が記憶する画像データが示す画像が処理対象画像となる。
処理対象画像では、行方向にM2個(M2≧2)の画素が並び、列方向にN2個(N2≧2)の画素が並んでいる。画像縮小回路20では、入力される画像データが示す画像のサイズが、例えば、1920p×1080pから960p×540pに縮小されることから、処理対象画像の解像度は、M2=960、N2=540となる。
このように、第1記憶回路22及び第2記憶回路23はいわゆるピンポンバッファとして機能することから、処理速度が向上する。
<画像検出部の構成>
図4は画像検出部14のハードウェア構成を示すブロック図である。図4に示されるように、画像検出部14は、画像サイズ調整回路30と、記憶部31と、評価値マップ生成回路34と、記憶回路35と、プロセッサ36と、確度値取得回路37とを備えている。画像サイズ調整回路30及びプロセッサ36はバス10に接続されている。記憶部31は第1記憶回路32及び第2記憶回路33で構成されている。第1記憶回路32及び第2記憶回路33のそれぞれは例えばRAMである。
プロセッサ36での処理は、プロセッサ36が記憶部12に記憶されている各種プログラムを実行することによって実現される。画像検出部14では、プロセッサ36以外の各要素(画像サイズ調整回路30等)については、当該要素の機能の実現には、プログラムは必要ではなく、当該要素の機能はハードウェアのみで実現されている。本実施の形態に係る画像検出装置3において、回路という名が付く要素については、当該要素の機能はハードウェアのみで実現されている。
画像サイズ調整回路30は、画像入力部13の第1記憶回路22及び第2記憶回路23から交互に画像データを読み出す。画像サイズ調整回路30は、第1記憶回路22及び第2記憶回路23の一方から読み出した画像データが示す処理対象画像に対する画像検出部14での処理が終了すると、第1記憶回路22及び第2記憶回路23の他方から画像データを読み出して、次の処理対象画像を取得する。そして、画像サイズ調整回路30は、取得した次の処理対象画像に対する画像検出部14での処理が終了すると、第1記憶回路22及び第2記憶回路23の一方から画像データを読み出して次の処理画像を取得する。画像サイズ調整回路30は、以後、同様の動作を繰り返す。
このように、第1記憶回路22及び第2記憶回路23から交互に画像データが読み出されることにより、処理対象画像に対する処理が完了すると、すぐに次の処理対象画像に対する処理を開始することができる。よって、撮像装置2で順次得られる画像に対する処理が効率良く実行される。
以下に、画像検出部14で行われる一連の処理について説明しつつ、その一連の処理において、画像検出部14を構成する各構成要素がどのように動作するかについて説明する。なお、以下に説明するプロセッサ36が行う処理については、その一部あるいは全部をプロセッサ11で行っても良い。
図5は画像検出部14が処理対象画像から顔画像を検出する際の当該画像検出部14での一連の処理の概要を示すフローチャートである。図5に示される一連の処理は、画像サイズ調整回路30が記憶部21から画像データを読み出すたびに、当該画像データが示す処理対象画像について実行される。
図5に示されるように、画像検出部14は、検出枠を用いて、画像サイズ調整回路30が記憶部21から読み出した画像データが示す処理対象画像に対して、当該検出枠と同じサイズの顔画像である可能性が高い領域を検出結果領域として検出する検出処理を行う。以後、単に「検出処理」と言えば、この検出処理を意味する。
次にステップs2において、画像検出部14は、ステップs1での検出処理の結果に基づいて、後述する出力値マップを生成する。そして、ステップs3において、画像検出部14は、ステップs2で生成した出力値マップに基づいて、処理対象画像において顔画像を特定する。これにより、処理対象画像から顔画像が検出され、処理対象画像に対する処理が終了する。
画像検出部14での処理対象画像に対する処理が終了すると、画像サイズ調整回路30によって、次の処理対象画像を示す画像データが記憶部21から読み出される。そして、画像検出部14では、当該画像データが使用されて、次の処理対象画像についてのステップs1〜ステップs3が実行される。以後、画像検出部14は同様に動作する。
<検出処理の詳細>
次にステップs1で検出処理について詳細に説明する。本実施の形態では、画像検出部14は、処理対象画像における様々な大きさの顔画像を検出するために、サイズの異なる複数種類の検出枠を使用して検出処理を行う。画像検出部14では、例えば30種類の検出枠が使用される。
本実施の形態では、後述するように、画像検出部14は、画像が顔画像である確からしさを示す確度値(「検出確度値」とも呼ぶ)を求める。そして、画像検出部14においては、検出確度値を求める対象の画像については、基準サイズ(正規化サイズ)の画像を使用する必要がある。
一方で、本実施の形態では、互いにサイズが異なる複数種類の検出枠には、基準サイズと同じサイズの検出枠と、基準サイズとは異なるサイズの検出枠とが含まれている。以後、基準サイズと同じサイズの検出枠を「基準検出枠」と呼び、基準サイズとは異なるサイズの検出枠を「非基準検出枠」と呼ぶ。本実施の形態では、複数種類の検出枠のうちのサイズが最小の検出枠が基準検出枠となっている。したがって、非基準検出枠のサイズは基準サイズよりも大きくなっている。基準検出枠のサイズは、例えば16p×16pである。また、複数種類の検出枠には、例えば、大きさが18p×18pの非基準検出枠及び大きさが20p×20pの非基準検出枠などが含まれている。
画像検出部14は、処理対象画像について基準検出枠を使用して検出処理を行う際には、処理対象画像に対して基準検出枠を移動させながら、当該基準検出枠内の画像に対して顔画像の検出を行って、当該画像が顔画像である可能性が高いかを判定する。そして、画像検出部14は、処理対象画像において、顔画像である可能性が高いと判定した領域(基準検出枠内の画像)を検出結果領域とする。
一方で、画像検出部14は、処理対象画像について非基準検出枠を使用して検出処理を行う際には、基準サイズとサイズが一致するように非基準検出枠をサイズ変更する。そして、画像検出部14は、非基準検出枠のサイズ変更に応じて処理対象画像のサイズ変更を行う。画像検出部14は、サイズ変更を行った処理対象画像に対して、サイズ変更を行った非基準検出枠を移動させながら、当該非基準検出枠内の画像に対して顔画像の検出を行って、当該画像が顔画像である可能性が高いかを判定する。そして、画像検出部14は、サイズ変更を行った処理対象画像において、顔画像である可能性が高いと判定した領域(サイズ変更後の非基準検出枠内の画像)に基づいて、サイズ変更が行われていない、本来のサイズの処理対象画像において顔画像である可能性が高い領域を特定し、当該領域を検出結果領域とする。
以後、処理対象画像に対して非基準検出枠が使用されて検出処理が行われる際のサイズ変更後の当該処理対象画像を「サイズ変更画像」と呼ぶ。また、処理対象画像に対して非基準検出枠が使用されて検出処理が行われる際のサイズ変更後の当該非基準検出枠を「サイズ変更検出枠」と呼ぶ。
画像検出部14では、例えば、まず基準検出枠が使用されて検出処理が行われ、その後、複数種類の非基準検出枠のそれぞれが使用されて検出処理が行われる。画像サイズ調整回路30は、画像入力部13から、処理対象画像を示す画像データを取得すると、当該画像データをそのまま第1記憶回路32に記憶する。そして、画像サイズ調整回路30は、第1記憶回路32に記憶された画像データが示す処理対象画像について基準検出枠が使用されて検出処理が行われている間に、当該処理対象画像を縮小して次に使用する非基準検出枠に対応するサイズ変更画像を生成し、当該サイズ変更画像を示す画像データを第2記憶回路33に記憶する。
次に、画像サイズ調整回路30は、第2記憶回路33に記憶された画像データが示すサイズ変更画像に対してそれに対応する非基準検出枠が使用されて処理が行われている間に、処理対象画像を縮小して次に使用する非基準検出枠に対応するサイズ変更画像を生成し、当該サイズ変更画像を示す画像データを第1記憶回路32に記憶する。そして、画像サイズ調整回路30は、第1記憶回路32に記憶された画像データが示すサイズ変更画像に対してそれに対応する非基準検出枠が使用されて処理が行われている間に、処理対象画像を縮小して次に使用する非基準検出枠に対応するサイズ変更画像を生成し、当該サイズ変更画像を示す画像データを第2記憶回路33に記憶する。
以後、画像サイズ調整回路30は、同様に動作して、生成したサイズ変更画像を示す画像データを、第1記憶回路32及び第2記憶回路33に対して交互に書き込む。第1記憶回路32及び第2記憶回路33はいわゆるピンポンバッファとして機能することから、処理速度が向上する。
このように、本実施の形態では、画像検出部14が処理対象画像に対して基準検出枠を使用して検出処理を行う際の当該画像検出部14の動作と、画像検出部14が処理対象画像に対して非基準検出枠を使用して検出処理を行う際の当該画像検出部14の動作とが異なっている。以下に画像検出部14の動作について詳細に説明する。
画像検出部14は、検出処理に基準検出枠を使用する際には、処理対象画像に対して基準検出枠を設定し、当該処理対象画像における当該基準検出枠内の画像が顔画像である確からしさを示す検出確度値を求める。一方で、検出処理に非基準検出枠が使用される際には、画像検出部14は、処理対象画像をサイズ変更して得られるサイズ変更画像に対して、非基準検出枠をサイズ変更して得られるサイズ変更検出枠を設定し、当該サイズ変更画像における当該サイズ変更検出枠内の画像が顔画像である確からしさを示す検出確度値を求める。以後、検出確度値が求められる、基準検出枠内の画像及びサイズ変更検出枠内の画像を総称して「枠内画像」と呼ぶことがある。
ここで、基準検出枠のサイズは基準サイズと一致することから、処理対象画像における基準検出枠内の画像のサイズは基準サイズとなる。また、サイズ変更検出枠のサイズは基準サイズと一致することから、サイズ変更画像におけるサイズ変更検出枠内の画像のサイズは基準サイズとなる。よって、画像検出部14は、検出確度値を求める対象の画像のサイズを、常に基準サイズとすることができる。画像検出部14は、顔画像についての学習サンプル(学習用のサンプル画像)に基づいて生成された重み値(「重み係数」、「学習データ」とも呼ばれる)を使用して、枠内画像が顔画像である確からしさを示す検出確度値を求める。検出確度値は、基準検出枠内の画像あるいはサイズ変更検出枠内の画像についての顔画像らしさ(顔らしさ)を示している。画像検出部14では、例えば、SVM(Support Vector Machine)あるいはAdaboostが使用されて検出確度値が求められる。
画像検出部14では、確度値取得回路37が検出確度値を求める。プロセッサ36は、確度値取得回路37で求められた検出確度値がしきい値以上であれば、枠内画像が顔画像である可能性が高いと判定する。つまり、基準検出枠が使用される際には、プロセッサ36は、処理対象画像における基準検出枠内の画像が、基準検出枠と同じサイズの顔画像である可能性が高い領域であると判定する。また、非基準検出枠が使用される際には、プロセッサ36は、サイズ変更画像におけるサイズ変更検出枠内の画像が、サイズ変更検出枠と同じサイズの顔画像である可能性が高い領域であると判定する。
一方で、プロセッサ36は、確度値取得回路37が求めた検出確度値がしきい未満であれば、枠内画像が顔画像でない可能性が高いと判定する。つまり、基準検出枠が使用される際には、プロセッサ36は、処理対象画像における基準検出枠内の画像が、基準検出枠と同じサイズの顔画像である可能性が高い領域ではないと判定する。また、非基準検出枠が使用される際には、プロセッサ36は、サイズ変更画像におけるサイズ変更検出枠内の画像が、サイズ変更検出枠と同じサイズの顔画像である可能性が高い領域ではないと判定する。
以後、プロセッサ36が検出確度値がしきい値以上であるか否かを判定する処理を「確度値判定処理」と呼ぶことがある。
プロセッサ36は、処理対象画像における基準検出枠内の画像が、基準検出枠と同じサイズの顔画像である可能性が高い領域であると判定すると、当該画像を検出結果領域とし、当該基準検出枠を検出結果枠とする。
またプロセッサ36は、サイズ変更画像におけるサイズ変更検出枠内の画像が、サイズ変更検出枠と同じサイズの顔画像である可能性が高い領域であると判定すると、当該領域の外形枠を仮検出結果枠とする。そして、プロセッサ36は、仮検出結果枠に基づいて、サイズ変更画像の元の画像である処理対象画像において、非基準検出枠と同じサイズの顔画像である可能性が高い領域を特定し、当該領域を検出結果領域とするとともに、当該検出結果領域の外形枠を最終的な検出結果枠とする。
<基準検出枠を用いた検出処理>
次に、画像検出部14が処理対象画像に対して基準検出枠を移動させながら、当該基準検出枠内の画像が顔画像である可能性が高いかを判定する際の当該画像検出部14の一連の動作について説明する。図6〜9は、画像検出部14の当該動作を説明するための図である。画像検出部14は、基準検出枠をラスタスキャンさせながら、当該基準検出枠内の画像に対して顔画像の検出を行う。
図6に示されるように、画像検出部14では、プロセッサ36が、第1記憶回路32に記憶されている画像データが示す処理対象画像100の左上にまず基準検出枠110を設定する。そして、確度値取得回路37が、プロセッサ36による制御によって、処理対象画像100での当該基準検出枠110内の画像についての検出確度値を求めてプロセッサ36に出力する。プロセッサ36は、確度値取得回路37から入力された検出確度値を用いて確度値判定処理を行い、その結果、当該検出確度値がしきい値以上である場合には、処理対象画像100での左上の基準検出枠110内の領域が顔画像である可能性が高いと判定し、当該領域を検出結果領域とし、当該領域の外形枠である当該基準検出枠110を検出結果枠とする。
次にプロセッサ36は、処理対象画像100において基準検出枠110を少し右に移動させる。プロセッサ36は、例えば、1画素分あるいは数画素分だけ右に基準検出枠110を移動させる。そして、確度値取得回路37が、処理対象画像100における移動後の基準検出枠110内の画像についての検出確度値を求める。プロセッサ36は、確度値取得回路37が求めた検出確度値がしきい値以上である場合には、移動後の基準検出枠110内の画像が顔画像である可能性が高いと判定して、当該画像を検出結果領域とするとともに、当該画像の外形枠である移動後の基準検出枠110を検出結果枠とする。
その後、画像検出部14は同様に動作して、図7に示されるように、基準検出枠110が処理対象画像100の右端まで移動すると、確度値取得回路37は、右端の基準検出枠110内の画像についての検出確度値を求める。そして、プロセッサ36は、求められた検出確度値がしきい値以上であれば、右端の基準検出枠110内の画像を検出結果領域とするとともに、当該右端の基準検出枠110を検出結果枠とする。
次に、プロセッサ36は、図8に示されるように、基準検出枠110を少し下げつつ処理対象画像100の左端に移動させる。プロセッサ36は、上下方向(列方向)において例えば1画素分あるいは数画素分だけ下に基準検出枠110を移動させる。その後、確度値取得回路37が、現在の基準検出枠110内の画像についての検出確度値を求める。プロセッサ36は、求められた検出確度値がしきい値以上である場合には、現在の基準検出枠110内の画像が顔画像である可能性が高いと判定して、当該画像を検出結果領域とするとともに、当該基準検出枠110を検出結果枠とする。
その後、画像検出部14は同様に動作して、図9に示されるように、基準検出枠110が処理対象画像100の右下まで移動すると、確度値取得回路37は、右下の当該基準検出枠110内の画像についての検出確度値を求める。そして、プロセッサ36は、求められた検出確度値がしきい値以上であれば、右下の基準検出枠110内の画像を検出結果領域とするとともに、当該右下の基準検出枠を検出結果枠とする。
以上のようにして、画像検出部14は、基準検出枠を使用して、処理対象画像において、当該基準検出枠と同じサイズの顔画像である可能性が高い領域を検出結果領域として検出する。言い換えれば、画像検出部14は、基準検出枠を使用して、処理対象画像において、当該基準検出枠と同じサイズの顔画像を特定する。
<非基準検出枠を用いた検出処理>
画像検出部14が非基準検出枠を使用して検出処理を行う際には、プロセッサ36は、非基準検出枠の大きさが基準サイズ(基準検出枠のサイズ)と一致するように、当該非基準検出枠をサイズ変更する。また、画像サイズ調整回路30が、非基準検出枠についてのサイズ変更比率と同じだけ処理対象画像をサイズ変更し、それによって得られたサイズ変更画像を示す画像データを第1記憶回路22あるいは第2記憶回路33に記憶する。
本実施の形態では、基準サイズは16p×16pであることから、例えば、大きさがRp×Rp(R>16)の非基準検出枠が使用される場合、プロセッサ36は、当該非基準検出枠の縦幅(上下方向の幅)及び横幅(左右方向の幅)をそれぞれ(16/R)倍して当該非基準検出枠を縮小し、サイズ変更検出枠を生成する。そして、画像サイズ調整回路30は、処理対象画像の縦幅(画素数)及び横幅(画素数)をそれぞれ(16/R)倍して当該処理対象画像を縮小し、サイズ変更画像を生成する。
画像検出部14は、上述の図6〜9を用いて説明した処理と同様に、第1記憶回路32あるいは第2記憶回路33に記憶されている画像データが示すサイズ変更画像に対してサイズ変更検出枠を移動させながら、当該サイズ変更検出枠内の画像について検出確度値を求める。そして、画像検出部14では、プロセッサ36が、求められた検出確度値に基づいて、当該サイズ変更検出枠内の画像が、当該サイズ変更検出枠と同じサイズの顔画像である可能性が高いか判定する。つまり、画像検出部14は、サイズ変更検出枠を用いて、サイズ変更画像において当該サイズ変更検出枠と同じサイズの顔画像である可能性が高い領域を検出する処理を行う。以後、この処理を「サイズ変更版検出処理」と呼ぶ。また、枠内画像についての検出確度値の取得に使用される基準検出枠及びサイズ変更検出枠を総称して「確度値取得枠」と呼ぶ。確度値取得枠には、サイズ変更前の非基準検出枠は含まれない。
画像検出部14が、サイズ変更版検出処理において、サイズ変更画像に対してサイズ変更検出枠を設定し、当該サイズ変更検出枠内の画像が、当該サイズ変更検出枠と同じサイズの顔画像である可能性が高いと判定すると、プロセッサ36は、当該画像の外形枠である当該サイズ変更検出枠を仮検出結果枠とする。
プロセッサ36は、サイズ変更画像について少なくとも一つの仮検出結果枠を取得すると、当該少なくとも一つの仮検出結果枠を、当該サイズ変更画像の元になる処理対象画像に応じた検出結果枠に変換する。
具体的には、プロセッサ36は、まず、サイズ変更画像に対して、得られた少なくとも一つの仮検出結果枠を設定する。図10は、サイズ変更画像120に対して仮検出結果枠130が設定されている様子を示す図である。図10の例では、サイズ変更画像120に対して複数の仮検出結果枠130が設定されている。
次にプロセッサ36は、図11に示されるように、仮検出結果枠130が設定されたサイズ変更画像120を拡大(サイズ変更)して元のサイズに戻すことによって、サイズ変更画像120を処理対象画像100に変換する。これにより、サイズ変更画像120に設定された仮検出結果枠130も拡大されて、仮検出結果枠130は、図11に示されるように、処理対象画像100に応じた検出結果枠150に変換される。処理対象画像100における検出結果枠150内の領域が、処理対象画像100において非基準検出枠と同じサイズの顔画像である可能性が高い検出結果領域となる。これにより、画像検出部14では、サイズ変更版検出処理によって得られた仮検出結果枠130に基づいて、処理対象画像において非基準検出枠と同じサイズの顔画像である可能性が高い検出結果領域が特定される。
このように、画像検出部14は、非基準検出枠を使用して処理対象画像についての検出処理を行う際には、サイズが基準サイズと一致するようにサイズ変更した非基準検出枠と、当該非基準検出枠のサイズ変更に応じてサイズ変更した処理対象画像とを使用してサイズ変更版検出処理を行う。これにより、基準サイズとは異なるサイズの検出枠が使用される場合であっても、画像検出部14は、基準サイズの画像についての検出確度値を求めることができる。そして、画像検出部14は、サイズ変更版検出処理の結果に基づいて、処理対象画像において非基準検出枠と同じサイズの顔画像である可能性が高い検出結果領域を特定する。これにより、画像検出部14では非基準検出枠が用いられた検出処理が行われる。
画像検出部14は、以上のような検出処理を、まず基準検出枠を用いて実行し、その後、複数種類の非基準検出枠のそれぞれを順番に用いて行う。これにより、処理対象画像に顔画像が含まれている場合には、検出結果領域(顔画像である可能性が高い領域)及び検出結果枠(顔画像である可能性が高い領域の外形枠)が得られるとともに、検出結果枠に対応した検出確度値が得られる。処理対象画像について得られた検出結果枠に対応した検出確度値とは、当該処理対象画像における当該検出結果枠内の画像が顔画像である確からしさを示している。
図12は、処理対象画像100について得られた検出結果枠150が当該処理対象画像100に重ねて配置された様子を示す図である。図12に示されるように、互いにサイズの異なる複数種類の検出枠が使用されて検出処理が行われることによって、様々な大きさの検出結果枠150が得られる。これは、処理対象画像100に含まれる様々な大きさの顔画像が検出されていることを意味している。
<出力値マップ生成処理>
次にステップs2での出力値マップの生成処理について説明する。画像検出部14では、プロセッサ36が、複数種類の検出枠を用いた検出処理の結果に基づいて、顔画像としての確からしさ(顔画像らしさ)を示す検出確度値についての処理対象画像での分布を示す出力値マップを生成する。
ここで、後述するように、基準検出枠を用いた検出処理では、つまり、基準検出枠内の画像についての検出確度値の算出処理では、実際には、本来のサイズ(M2p×N2p)よりも周囲1画素分だけ小さい、(M2−2)p×(N2−2)pの処理対象画像が使用される。つまり、上述の図6〜9を用いて説明した検出処理においては、本来のサイズよりも周囲1画素分だけ小さい処理対象画像が使用される。この処理対象画像を特に「算出用処理対象画像」と呼ぶ。図6〜9に示される処理対象画像100は実際には「算出用処理対象画像」である。また、非基準検出枠を用いた検出処理では、つまり、非基準検出枠内の画像についての検出確度値の算出処理では、上述のようにして求められたサイズ変更画像のサイズよりも実際には周囲1画素分だけ小さいサイズ変更画像が使用される。以後、このサイズ変更画像を特に「算出用サイズ変更画像」と呼ぶ。
プロセッサ36は、出力値マップを生成する際、算出用処理対象画像と同様に、行方向に(M2−2)個の値が並び、列方向に(N2−2)個の値が並ぶ、合計((M2−2)×(N2−2))個の値から成るマップ160を考える。そして、プロセッサ36は、処理対象画像についての一つの検出結果枠を対象検出結果枠とし、対象検出結果枠と同じ位置に、対象検出結果枠と同じ大きさの枠170をマップ160に対して設定する。図13は、マップ160に対して枠170を設定した様子を示す図である。
次にプロセッサ36は、マップ160における、枠170外の各値については“0”とし、枠170内の各値については、対象検出結果枠に対応する検出確度値(対象検出結果枠となった検出枠内の画像に対して顔画像の検出を行った結果得られた検出確度値)を用いて決定する。対象検出結果枠の大きさが、例えば16p×16pであるとすると、枠170内には、行方向に16個、列方向に16個、合計256個の値が存在する。また、対象検出結果枠の大きさが、例えば20p×20pであるとすると、枠170内には、行方向に20個、列方向に20個、合計400個の値が存在する。図14は、枠170内の各値を決定する方法を説明するための図である。
プロセッサ36は、枠170内の中心171の値を、対象検出結果枠に対応する検出確度値とする。そして、プロセッサ36は、枠170内のそれ以外の複数の値を、枠170の中心171の値を最大値とした正規分布曲線に従って枠170内の中心171から外側に向けて値が徐々に小さくなるようにする。これにより、マップ160を構成する複数の値のそれぞれが決定されて、対象検出結果枠に対応するマップ160が完成する。
以上のようにして、プロセッサ36は、処理対象画像についての複数の検出結果枠にそれぞれ対応する複数のマップ160を生成する。そして、プロセッサ36は、生成した複数のマップ160を合成して出力値マップを生成する。
具体的には、プロセッサ36は、生成した複数のマップ160のm×n番目の値を加算し、それによって得られた加算値を出力値マップのm×n番目の検出確度値とする。プロセッサ36は、このようにして、出力値マップを構成する各検出確度値を求める。これにより、処理対象画像での検出確度値の分布を示す出力値マップが完成される。出力値マップは、算出用処理対象画像と同様に、((M2−2)×(N2−2))個の検出確度値で構成される。出力値マップを参照すれば、処理対象画像において顔画像らしさが高い領域を特定することができる。つまり、出力値マップを参照することによって、処理対象画像おける顔画像を特定することができる。
図15は、処理対象画像100についての出力値マップを当該処理対象画像100に重ねて示す図である。図15では、理解し易いように、検出確度値の大きさを例えば第1段階から第5段階の5段階に分けて出力値マップを示している。図15に示される出力値マップにおいては、検出確度値が、最も大きい第5段階に属する領域については砂地のハッチングが示されており、2番目に大きい第4段階に属する領域については左上がりのハッチングが示されている。また、図15での出力値マップにおいては、検出確度値が、3番目に大きい第3段階に属する領域については右上がりのハッチングが示されており、4番目に大きい第2段階に属する領域については縦線のハッチングが示されている。そして、図15に示される出力値マップにおいては、検出確度値が、最も小さい第1段階に属する領域についてはハッチングが示されていない。
図15に示される出力値マップにおいては、処理対象画像100での顔画像に対応する領域での検出確度値が高くなっている。これは、処理対象画像100に含まれる顔画像が適切に検出されていることを意味する。
このようにして、ステップs2において出力値マップが生成されると、ステップs3において、プロセッサ36は、出力値マップに基づいて、処理対象画像での顔画像を特定する。具体的には、プロセッサ36は、出力値マップにおいて、検出確度値がしきい値以上である領域を特定し、処理対象画像での当該領域と同じ位置に存在する領域を顔画像であると認定する。そして、プロセッサ36は、図示しない表示装置で処理対象画像を表示する際には、当該処理対象画像での顔画像を四角枠等が囲うようにする。
このように、本実施の形態では、プロセッサ36は、処理対象画像について求められた検出確度値に基づいて、処理対象画像において顔画像を特定している。したがって、プロセッサ36は、処理対象画像において検出対象画像(特定画像)を特定する特定部として機能する。
なお、プロセッサ36は、予め登録された顔画像と、処理対象画像において特定した顔画像とを比較し、両者が一致するか否かを判定しても良い。そして、プロセッサ36は、予め登録された顔画像と、処理対象画像において特定した顔画像とが一致しない場合には、処理対象画像での当該顔画像に対してモザイク処理を行った上で、当該処理対象画像を表示装置に表示しても良い。これにより、本実施の形態に係る画像検出装置3を監視カメラシステムに使用した場合において、監視カメラによって隣家の人の顔画像が撮影された場合であっても、当該顔画像を認識できないようにすることができる。つまり、プライバシーマスクを実現することができる。
本実施の形態では、出力値マップに基づいて処理対象画像での顔画像が特定されているが、出力値マップが生成されずに処理対象画像での顔画像が特定されても良い。例えば、プロセッサ36は、互いに近くにある複数の検出結果領域(検出結果枠)をMean-Shift法によるクラスタリング及びNearest Neighbor法を用いて統合し、処理対象画像での統合後の検出結果領域(検出結果枠)内の画像を顔画像として特定する。このような場合であっても、検出結果領域は検出確度値に基づいて得られることから、プロセッサ36は、処理対象画像について求められた検出確度値に基づいて、処理対象画像において顔画像を特定していると言える。
<検出確度値取得処理>
次に検出確度値の求め方について詳細に説明する。画像検出部14では、評価値マップ生成回路34が、第1記憶回路32から、処理対象画像を示す画像データを読み出し、当該画像データに基づいて、処理対象画像に対応する、複数の評価値で構成された評価値マップを生成する。評価値マップを構成する複数の評価値に対しては互いに異なる位置が割り当てられており、その結果、当該複数の評価値は行列状に配列されている。画像検出部14では、この評価値マップが使用されて、処理対象画像での基準検出枠内の画像についての検出確度値が求められる。以後、処理対象画像及び基準検出枠に対応するこの評価値マップを特に「基準用評価値マップ」と呼ぶことがある。
また、評価値マップ生成回路34は、第1記憶回路32あるいは第2記憶回路33から、サイズ変更画像を示す画像データを読み出し、当該画像データに基づいて、当該サイズ変更画像に対応する、複数の評価値で構成された評価値マップを生成する。この評価値マップを構成する複数の評価値に対しても互いに異なる位置が割り当てられており、その結果、当該複数の評価値は行列状に配列されている。画像検出部14では、この評価値マップが使用されて、サイズ変更画像でのサイズ変更枠内の画像についての検出確度値が求められる。以後、サイズ変更画像に対応するこの評価値マップ、つまり非基準検出枠に対応するこの評価値マップを特に「非基準用評価値マップ」と呼ぶことがある。画像検出部14では、複数種類の非基準検出枠のそれぞれについて、非基準用評価値マップが生成される。
基準用評価値マップに含まれる複数の評価値は、処理対象画像に含まれる複数の画素の特徴をそれぞれ表している。つまり、基準用評価値マップの各評価値は、処理対象画像での対応する画素についての特徴量を示している。
また、非基準用評価値マップに含まれる複数の評価値は、当該非基準用評価値マップに対応するサイズ変更画像に含まれる複数の画素の特徴をそれぞれ表している。つまり、非基準用評価値マップの各評価値は、サイズ変更画像での対応する画素についての特徴量を示している。
本実施の形態では、評価値は、注目画素の画素値についての、当該注目画素の周囲の複数の画素値との関係を示す値である。以後、注目画素の画素値を「注目画素値」と呼ぶことがある。また、注目画素の周囲の画素値を「周囲画素値」と呼ぶことがある。本実施の形態では、評価値の取得には、例えば、注目画素の周囲8方向の周囲画素値が使用される。
<評価値マップの生成方法>
基準用評価値マップは処理対象画像から生成される。基準用評価値マップは、算出用処理対象画像と同様に、行方向に(M2−2)個の評価値が並び、列方向に(N2−2)個の評価値が並ぶ、合計((M2−2)×(N2−2))個の複数の評価値で構成されている。基準用評価値マップを構成する複数の評価値は、算出用処理対象画像を構成する複数の画素についての特徴をそれぞれ表している。具体的には、基準用評価値マップでのm×n番目の評価値は、算出用処理対象画像でのm×n番目の画素の特徴を表している。本実施の形態では、基準用評価値マップでの各評価値は、それに対応する画素を注目画素とした場合における、当該注目画素の画素値についての複数の周囲画素値との間の関係を示している。
また、非基準検出枠に対応した非基準用評価値マップを構成する、行列状に配置された複数の評価値は、当該非基準検出枠に対応するサイズ変更画像(当該非基準検出枠のサイズ変更比率と同じ比率だけサイズ変更された処理対象画像)を、周囲1画素分だけ小さくして得られる算出用サイズ変更画像を構成する複数の画素についての特徴をそれぞれ表している。非基準用評価値マップでの複数の評価値の配列は、算出用サイズ変更画像を構成する複数の画素の配列と同じである。非基準用評価値マップでのm×n番目の評価値は、算出用サイズ変更画像でのm×n番目の画素の特徴を表している。本実施の形態では、非基準用評価値マップでの各評価値は、それに対応する画素を注目画素とした場合における、当該注目画素の画素値についての複数の周囲画素値との間の関係を示している。
評価値マップ生成回路34は、基準用評価値マップを生成する際には、図16に示されるように、処理対象画像100の左上に対してサイズが3p×3pの算出用枠200を設定する。そして、評価値マップ生成回路34は、算出用枠200内の9個の画素の中央の画素を注目画素とする。
次に評価値マップ生成回路34は、注目画素の画素値と、注目画素の周囲の8個の周囲画素値との関係を示す評価値を求める。評価値マップ生成回路34は、当該8個の周囲画素値として、注目画素の左上の画素の画素値、真上の画素の画素値、右上の画素の画素値、右の画素の画素値、右下の画素の画素値、真下の画素の画素値、左下の画素の画素値、左の画素の画素値を使用する。本実施の形態では、評価値は8ビットで表される。そして、評価値マップ生成回路34は、求めた評価値を、算出用枠200内の中央の画素、つまり、算出用処理対象画像の1×1番目の画素の特徴を表す、基準用評価値マップの1×1番目の値とする。評価値としては、例えば、LBPあるいはLTPを使用することができる。LBP及びLTPの求め方については後で詳細に説明する。
図17は、算出用枠200内の9個の画素についての画素値の例を示す図である。本実施の形態では、評価値の取得で使用する画素値を例えば輝度とする。また本実施の形態では、画素値は8ビットで表される。したがって、画素値は、十進数で表すと、“0”から“255”までの値をとる。なお、当該画素値は色差成分であっても良い。以後、画素値等の値については、特に断らない名切り、十進数で表した値とする。
図17の例では、注目画素値210が“57”である。また、注目画素の左上の画素の画素値、真上の画素の画素値、右上の画素の画素値、右の画素の画素値、右下の画素の画素値、真下の画素の画素値、左下の画素の画素値、左の画素の画素値が、それぞれ、“50”、“55”、“65”、“75”、“79”、“59”、“48”及び“49”となっている。
評価値マップ生成回路34は、処理対象画像100の左上にある算出用枠200に対応する評価値を求めると、処理対象画像100において算出用枠200を1画素分だけ右に移動させる。そして、評価値マップ生成回路34は、移動後の算出用枠200内の9個の画素の中央の画素を注目画素とし、注目画素値についての8個の周囲画素値との間の関係を示す評価値を求める。評価値マップ生成回路34は、求めた評価値を、移動後の算出用枠200内の中央の画素、つまり、算出用処理対象画像の1×2番目の画素の特徴を表す、基準用評価値マップの1×2番目の値とする。
次に、評価値マップ生成回路34は、処理対象画像100において算出用枠200をさらに1画素分だけ右に移動させる。そして、評価値マップ生成回路34は、移動後の算出用枠200内の9個の画素の中央の画素を注目画素とし、注目画素値についての8個の周囲画素値との間の関係を示す評価値を求める。評価値マップ生成回路34は、求めた評価値を、移動後の算出用枠200内の中央の画素、つまり、算出用処理対象画像の1×3番目の画素の特徴を表す、基準用評価値マップの1×3番目の値とする。
以後、評価値マップ生成回路34は、算出用枠200を1画素分ずつ処理対象画像100の右下までラスタスキャンさせて、算出用枠200の各位置において、当該算出用枠200の中央の画素を注目画素として評価値を求める。これにより、算出用処理対象画像を構成する複数の画素、つまり、処理対象画像の周囲1画素分を除いた複数の画素の特徴をそれぞれ表す複数の評価値が生成され、当該複数の評価値から成る基準用評価値マップが完成する。評価値マップ生成回路34は、生成した基準用評価値マップを記憶回路35に記憶する。なお、処理対象画像の周囲1画素分については、各画素が注目画素とならないため、当該各画素を表す評価値は求められない。
評価値マップ生成回路34は、非基準検出枠に対応する非基準用評価値マップを生成する際には、処理対象画像に対して算出用枠200を設定する替わりに、当該非基準検出枠に対応するサイズ変更画像に対して算出用枠200を設定する。そして、評価値マップ生成回路34は、上記と同様にして、当該サイズ変更画像に対して算出用枠200を1画素ずつラスタスキャンさせながら、算出用枠200の各位置で評価値を求める。これにより、非基準検出枠に対応する算出用サイズ変更画像を構成する複数の画素、つまり非基準検出枠に対応するサイズ変更画像の周囲1画素分を除いた複数の画素の特徴をそれぞれ表す複数の評価値が生成され、当該複数の評価値から成る、当該非基準検出枠に対応する非基準用評価値マップが完成する。評価値マップ生成回路34は、サイズ変更画像を示す画像データを記憶部31から順次読み出すことによって、複数種類の非基準検出枠にそれぞれ対応する複数の非基準用評価値マップを生成する。評価値マップ生成回路34は、生成した非基準用評価値マップを記憶回路35に記憶する。なお、サイズ変更画像の周囲1画素分については、各画素が注目画素とならないため、当該各画素の特徴を表す評価値は求められない。
<評価値の具体例>
次に評価値として使用されるLBP及びLTPについて説明する。
<LBP>
LBPが生成される際には、複数の周囲画素値のそれぞれについて、当該周囲画素値と注目画素値との関係を示す1ビット(以後、「関係表示ビット」と呼ぶ)が生成される。周囲画素値から注目画素値を差し引いて得られる差分値が零以上であれば関係表示ビットの値は“1”とされ、零未満であれば関係表示ビットの値は“0”とされる。そして、複数の周囲画素値について得られた複数の関係表示ビットで構成される8ビットのバイナリコード(以後、「関係表示コード」と呼ぶ)がLBPとなり、当該LPBが評価値とされる。具体的には、LBPとしての関係表示コードを十進数で表した値が評価値とされる。
例えば、算出用枠200内の複数の画素について、図17に示されるような注目画素値210と複数の周囲画素値220とが得られたとする。評価値マップ生成回路34は、各周囲画素値220について、当該周囲画素値220から注目画素値210を差し引いて得られる差分値250を求める。図18に示されるように、左上、真上、右上、右、右下、真下、左下、左の周囲画素値220についての注目画素値210との間の差分値250は、それぞれ“−7”、“−2”、“8”、“18”、“22”、“2”、“−9”、“−8”となる。そして評価値マップ生成回路34は、求めた複数の差分値250(本例では8個の差分値250)のそれぞれと零とを比較する。評価値マップ生成回路34は、周囲画素値220についての差分値250が零以上である場合には、当該周囲画素値220についての関係表示ビット260の値を“1”とし、当該差分値250が零未満である場合には、当該周囲画素値220についての関係表示ビット260の値を“0”とする。図18の例では、図19に示されるように、左上、真上、右上、右、右下、真下、左下、左の周囲画素値220についての関係表示ビット260は、それぞれ“0”、“0”、“1”、“1”、“1”、“1”、“0”、“0”となる。そして、評価値マップ生成回路34は、複数の周囲画素値220について求めた複数の関係表示ビット260を所定の順で並べることによって、LBPとして8ビットの関係表示コードを生成する。評価値マップ生成回路34は、関係表示コードを求めると、当該関係表示コードを十進数で表した値を、注目画素の特徴を表す評価値とする。本実施の形態では、例えば、左上の周囲画素値220の関係表示ビット260、真上の周囲画素値220の関係表示ビット260、右上の周囲画素値220の関係表示ビット260、右の周囲画素値220の関係表示ビット260、右下の周囲画素値220の関係表示ビット260、真下の周囲画素値220の関係表示ビット260、左下の周囲画素値220の関係表示ビット260、左の周囲画素値220の関係表示ビット260の順で、得られた8個の関係表示ビット260が並べられて関係表示コードが生成される。図17の画素値の例では、図19に示されるように、“00111100”が関係表示コードとなり、それを十進数で表した値“60”が注目画素の特徴を表す評価値となる。
以上の説明から理解できるように、LBPは、注目画素の周囲での画素値の様子(分布状況)を示していると言える。よって、LBPは局所的なテクスチャを示していると言える。以後、LBP(正確にはそれを十進数で表した値)を各評価値とする評価値マップを「LBPマップ」と呼ぶ。
図20は処理対象画像100の一例を示す図である。図21は図20に示される処理対象画像100に基づいて生成されたLBPマップでの各評価値を輝度とすることによって、当該LBPマップを画像化して得られるグレースケールのLBPマップ画像180を示す図である。図21に示されるLBPマップ画像180からは、処理対象画像100についてのテクスチャを読み取ることができる。
<LTP>
LTPが生成される際には、LBPとは異なり、複数の周囲画素値のそれぞれについて、当該周囲画素値と注目画素値との関係を示す3値データが生成される。ここで、LTPにおいては、ノイズの影響を抑制するために、周囲画素値と注目画素値との関係を示す3値データが生成される際にはオフセット値が使用される。
具体的には、周囲画素値と注目画素値との差分値の絶対値が所定のオフセット値未満の場合には、3値データの値が“0”とされる。また、周囲画素値と注目画素値との差分値の絶対値がオフセット値以上であって、当該周囲画素値が当該注目画素値よりも大きい場合には、3値データの値は“1”とされる。つまり、周囲画素値が、注目画素値に対してオフセット値を加算して得られる値以上の場合には、3値データの値は“1”とされる。そして、周囲画素値と注目画素値との差分値の絶対値がオフセット値以上であって、当該周囲画素値が当該注目画素値よりも小さい場合には、3値データの値は“−1”とされる。つまり、周囲画素値が、注目画素値からオフセット値だけ減算して得られる値以下の場合には、3値データの値は“−1”とされる。オフセット値は例えば“5”に設定される。
このように、周囲画素値と注目画素値との間の大小関係が判定される際にオフセット値が設けられることによって、周囲画素値及び注目画素値の少なくとも一方がノイズの影響を受けたとしても、当該大小関係が誤って判定されることを抑制することができる。
LTPは、複数の周囲画素値について求められた複数の3値データが所定の順で並べられて得られる3値コード(ターナリーコード)である。例えば、左上の周囲画素値の3値データ、真上の周囲画素値の3値データ、右上の周囲画素値の3値データ、右の周囲画素値の3値データ、右下の周囲画素値の3値データ、真下の周囲画素値の3値データ、左下の周囲画素値の3値データ、左の周囲画素値の3値データの順で並べられて得られる3値コードがLTPとされる。
図22は、上述の図17に示されるような注目画素値210と複数の周囲画素値220とが得られた場合における当該複数の周囲画素値220にそれぞれ対応する複数の3値データ270を示す図である。図22の例では、LTPは(−1)01110(−1)(−1)となる。
LTPが評価値として使用される場合には、LTPがそのまま使用されるのではなく、LTPから得られるポジティブLTP及びネガティブLTPのどちらか一方が使用される。
ポジティブLTPとは、LTPに含まれる“1”だけに着目して当該LTPをバイナリコードに変換したものである。具体的には、LTPにおいて“1”以外の値をすべて“0”に変換し、それによって得られたバイナリコードがポジティブLTPとなる。図23は、図22に示されるLTPに対応するポジティブLTPを示す図である。図22に示されるLTP、つまり(−1)01110(−1)(−1)において、“1”以外の値がすべて“0”に変換されると、図23に示されるように、“00111000”というポジティブLTPが得られる。ポジティブLTPを構成する8ビットは、上位から順に、左上の周囲画素値、真上の周囲画素値、右上の周囲画素値、右の周囲画素値、右下の周囲画素値、真下の周囲画素値、左下の周囲画素値、左の周囲画素値にそれぞれ対応している。
上記の説明から理解できるように、ポジティブLTPの各ビットは、当該ビットに対応する周囲画素値と注目画素値との関係を示している。そして、ポジティブLTPの各ビットは、それに対応する周囲画素値が、注目画素値に対してオフセット値だけ加算して得られる値以上であれば“1”を示し、当該値未満であれば“0”を示す。したがって、ポジティブLTPは、注目画素の周囲での、当該注目画素の画素値よりも大きい画素値の様子(分布状況)を示していると言える。よって、ポジティブLTPについても、LBPと同様に、局所的なテクスチャを示していると言える。評価値マップ生成回路34は、ポジティブLTPを十進数で表した値を評価値として使用する。図23の例では、バイナリコード“00111000”を十進数で表した値“56”が評価値とされる。以後、ポジティブLTP(正確にはそれを十進数で表した値)を各評価値とする評価値マップを「ポジティブLTPマップ」と呼ぶ。
一方で、ネガティブLTPとは、LTPに含まれる“−1”だけに着目して当該LTPをバイナリコードに変換したものである。具体的には、LTPにおいて“−1”以外の値をすべて“0”に変換するとともに“−1”を“1”に変換し、それによって得られたバイナリコードがネガティブLTPとなる。図24は、図22に示されるLTPに対応するネガティブLTPを示す図である。図22に示されるLTP、つまり(−1)01110(−1)(−1)において、“−1”以外の値がすべて“0”に変換されるとともに“−1”が“1”に変換されると、図24に示されるように、“10000011”というネガティブLTPが得られる。ネガティブLTPを構成する8ビットは、上位から順に、左上の周囲画素値、真上の周囲画素値、右上の周囲画素値、右の周囲画素値、右下の周囲画素値、真下の周囲画素値、左下の周囲画素値、左の周囲画素値にそれぞれ対応している。
上記の説明から理解できるように、ネガティブLTPの各ビットについても、当該ビットに対応する周囲画素値と注目画素値との関係を示している。そして、ネガティブLTPの各ビットは、それに対応する周囲画素値が、注目画素値からオフセット値だけ減算して得られる値以下であれば“1”を示し、当該値よりも大きければ“0”を示す。したがって、ネガティブLTPは、注目画素の周囲での、当該注目画素の画素値よりも小さい画素値の様子(分布状況)を示していると言える。よって、ネガティブLTPについても、LBP及びポジティブLTPと同様に、局所的なテクスチャを示していると言える。評価値マップ生成回路34は、ネガティブLTPを十進数で表した値を評価値として使用する。図20の例では、バイナリコード“10000011”を十進数で表した値“131”が評価値とされる。以後、ネガティブLTP(正確にはそれを十進数で表した値)を各評価値とする評価値マップを「ネガティブLTPマップ」と呼ぶ。
図25は図20に示される処理対象画像100に基づいて生成されたポジティブLTPマップでの各評価値を輝度とすることによって、当該ポジティブLTPマップを画像化して得られるグレースケールのポジティブLTPマップ画像190pを示す図である。図26は図20に示される処理対象画像100に基づいて生成されたネガティブLTPマップでの各評価値を輝度とすることによって、当該ネガティブLTPマップを画像化して得られるグレースケールのネガティブLTPマップ画像190nを示す図である。図25に示されるポジティブLTPマップ画像190p及び図26に示されるネガティブLTPマップ画像190nからは、処理対象画像100についてのテクスチャを読み取ることができる。
なお以後、LBP、ネガティブLTP及びポジティブLTPを特に区別する必要がないときにはそれぞれを「テクスチャ表現コード」と呼ぶことがある。
<uniformについて>
上記の通り、本実施の形態では、評価値は、8ビットで表現されることから、0〜255までの256種類の値をとることが可能である。
一方で、後述の説明から理解できるように、枠内画像について検出確度値を求める処理での処理量は、評価値がとり得る値の種類の数に依存する。したがって、画像検出部14での処理量を低減するためには、評価値がとり得る値の種類の数を制限することが有効である。
そこで、LBPやLTPを求める際に使用されることがあるuniformという考え方を使用して、評価値がとり得る値の種類の数を制限(低減)することについて検討する。以下に、uniformを使用した、評価値がとり得る値の種類の数の制限について説明する。
まず、LBP等のテクスチャ表現コードを構成する8ビットを順に見ていった際のビット変化(ビット反転)の回数を求める。テクスチャ表現コードを構成する8ビットを順に見ていく方向は、上位から下位に向かう方向で良いし、下位から上位に向かう方向であっても良い。そして、テクスチャ表現コードについて求めたビット変化の回数が2回以下である場合には、当該テクスチャ表現コードはuniformであるとする。一方で、テクスチャ表現コードについて求めたビット変化の回数が2回を越える場合には、つまり3回以上の場合には、当該テクスチャ表現コードはuniformでないとする。
uniformであるとされたテクスチャ表現コードについては、当該テクスチャ表現コードを十進数で表した値が評価値とされる。
一方で、uniformでないとされたテクスチャ表現コードは、ノイズの影響を受けた注目画素値及び周囲画素値に基づいて生成されたもとのとして、評価値として使用されない。uniformでないとされたテクスチャ表現コードは、8ビットの特定のバイナリコードに変換されて、当該特定のバイナリコードを十進数で表した値が評価値とされる。この特定のバイナリコードについては、uniformとされる8ビットのバイナリコード以外の8ビットのバイナリコードであれば、何でも良い。例えば、特定のバイナリコードとしては、“10101010”が採用される。
例えば、テクスチャ表現コードが“01000000”であるとする。“01000000”を例えば上位から順に見ていくと、上位から1ビット目と2ビット目との間で“0”から“1”に変化しており、上位から2ビット目と3ビット目との間で“1”から“0”へ変化している。したがって、ビット変化が2回であるため、“01000000”はuniformとなり、“01000000”を十進数で表した値“64”が評価値とされる。
また、テクスチャ表現コードが“00001111”であるとする。それを上位から順に見ていくと、上位から4ビット目と5ビット目の間で“0”から“1”の変化しており、ビット変化は1回である。したがって、“00001111”はuniformとなり、“00001111”を十進数で表した値“15”が評価値とされる。
また、テクスチャ表現コードが“00110011”であるとする。それを上位から順に見ていくと、上位から2ビット目と3ビット目の間で“0”から“1”に変化し、上位から4ビット目と5ビット目の間で“1”から“0”に変化し、上位から6ビット目と7ビット目の間で“0”から“1”に変化している。したがって、ビット変化は3回であるため、“00110011”はuniformでないとされる。よって、“00110011”は、“10101010”という特定のバイナリコードに変換されて、“10101010”を十進数で表した値“170”が評価値とされる。
また、テクスチャ表現コードが“01010101”であるとする。それを順に見ていくと、ビット変化は7回であるため、“01010101”はuniformでないとされる。よって、“01010101”は、“10101010”という特定のバイナリコードに変換されて、“10101010”を十進数で表した値“170”が評価値とされる。
このように、テクスチャ表現コードを構成する8ビットを順に見ていった際のビット変化の回数が2回を越える場合には、当該テクスチャ表現コードを特定のバイナリコードに変換し、当該特定のバイナリコードを十進数で表した値を評価値とすることによって、評価値がとり得る値の種類は、256種類から59種類に制限される。
本実施の形態に係る評価値マップ生成回路34は、処理量を低減するために、uniformを使用して、評価値がとり得る値の種類を59種類に制限する。
なお、説明の便宜上、評価値がとり得る59種類の値に対して0〜58の番号をそれぞれ割り当てる。以後、この番号を使用して評価値の値を説明することがある。
<画素値補間について>
評価値の精度を向上させるためには、評価値の取得で用いられる複数の周囲画素値については、注目画素からの距離が同じである複数の周囲位置での周囲画素値が用いられる方が望ましい。
一方で、LBPの生成においては、周囲画素値についての注目画素値との比較を、注目画素からどの程度離れた範囲まで行うかを示すパラメータとして、「注目点からの距離」が使用される。注目点からの距離が“1”の場合には、上述のように、8個の周囲画素値が使用されてLBPが求められる。距離1とは、画素間の上下方向及び左右方向の距離を示している。なお、LTPについても同様である。
図27は算出用枠200内での注目画素300と8個の周囲画素310a〜310hとの間での位置関係を示す図である。図27に示されるように、算出用枠200内の9個の画素においては、注目画素300と上下方向あるいは左右方向の周囲画素との間の距離aと、注目画素300と斜め方向の周囲画素との間の距離bとは異なっている。
上述のように、評価値を求める際に使用する8個の周囲画素値として、注目画素300の周囲に存在する8個の周囲画素310a〜310hの画素値を使用すると、注目画素と、周囲画素値が対応する位置との間の距離については、上下方向及び左右方向では“1”となるが、斜め方向では“1”とならない。したがって、この場合には、評価値の取得で用いられる複数の周囲画素値については、注目画素からの距離が同じである複数の周囲位置での周囲画素値とはならない。
したがって、斜め方向の周囲画素値については、斜め方向の周囲画素の画素値を使用するのではなく、注目画素からの距離が“1”である斜め方向の周囲位置400(図27参照)での画素値を使用することが望ましい。
注目画素からの距離が“1”である斜め方向の周囲位置400での画素値については、バイリニア補間処理などの画素値補間処理によって求めることができる。
図28は、注目画素からの距離が“1”である右上方向の周囲位置400での画素値をバイリニア補間処理を用いて求める方法を説明するための図である。図28の例では、注目画素300の画素値、上方向の周囲画素310bの画素値、右上方向の周囲画素310cの画素値、右方向の周囲画素310dの画素値が、それぞれ“57”、“55”、“65”及び“75”となっている。また、周囲画素310cの上方向に存在する画素320aの画素値が“50”であり、周囲画素310cの右方向に存在する画素320bの画素値が“70”となっている。
図28の例において、対象の周囲位置400と画素320aとの間の上下方向の距離と、周囲位置400と周囲画素310dとの間の上下方向の距離との比が、y1:y2であるとすると、以下の式(1)を用いて上下方向の補間値Y0を求める。
また、周囲位置400と周囲画素310bとの間の左右方向の距離と、周囲位置400と画素320bとの間の左右方向の距離との比が、x1:x2であるとすると、以下の式(2)を用いて左右方向の補間値X0を求める。
そして、以下の式(3)を用いて周囲位置400での画素値Z0を求める。
注目画素からの距離が“1”である左上方向の周囲位置での画素値、注目画素からの距離が“1”である左下方向の周囲位置での画素値、注目画素からの距離が“1”である右下方向の周囲位置での画素値についても同様にして求めることができる。
評価値を求める際には、周囲画素値として、注目画素の斜め方向に存在する周囲画素の画素値ではなく、注目画素からの距離が“1”である斜め方向の周囲位置での画素値を使用することによって、より正確な評価値を求めることができる。評価値マップ生成回路34は、周囲画素値として、斜め方向の周囲画素の画素値を使用しても良いし、注目画素からの距離が“1”である斜め方向の周囲位置での画素値を使用しても良い。
上述のように、本実施の形態では、評価値マップ生成回路34は、評価値を求める際に、注目画素の周囲の8つの画素値を使用しているが、注目画素に対する斜め方向の周囲画素値は使用しないようにしても良い。例えば、評価値マップ生成回路34は、注目画素に対して右上、左上、右下及び左下の方向の周囲画素値はすべて使用しない。これにより、評価値の取得では、上方向の周囲画素値、下方向の周囲画素値、右方向の周囲画素値及び左方向の周囲画素値だけが使用されることから、評価値は8ビットから4ビットで表現されることになり、評価値の情報量が低減する。よって、評価値を使用した処理についての処理量を低減することができる。なお、右上、左上、右下及び左下の方向の周囲画素値のうち少なくとも一つの周囲画素値を評価値の取得で使用しないことによって、評価値がとり得る値の種類の数を低減することができる。
また、評価値の取得で、斜め方向の周囲画素値が使用されない場合には、注目画素からの距離が“1”である当該斜め方向の周囲位置での画素値を画素値補間処理によって求める必要がないことから処理量がさらに低減する。
また、評価値の取得で、右上、左上、右下及び左下の方向の周囲画素値がすべて使用されない場合には、評価値が4ビットで表現されることから、上記のようにuniformを使用して評価値がとり得る値の種類を制限したとしてもそれほど効果が現れない。よって、この場合には、uniformを使用して評価値がとり得る値の種類を制限しないようにする。つまり、評価値マップ生成回路34は、複数のビット(4ビット)で構成されるテクスチャ表現コード(より正確にはそれを十進数で表した値)を、当該複数のビットを順に見ていった際のビット変化の回数にかかわらず、評価値として使用する。これにより、評価値がとり得る値の種類を制限する処理が不要となることから、評価値マップ生成回路34での処理量が低減する。
<特徴量取得処理>
本実施の形態では、画像検出部14は、処理対象画像についての特徴量を、基準用評価値マップから取得し、当該特徴量を用いて処理対象画像についての検出確度値を求める。また、画像検出部14は、サイズ変更画像についての特徴量を非基準用評価値マップから取得し、当該特徴量を用いて当該サイズ変更画像についての検出確度値を求める。
画像検出部14は、処理対象画像についての特徴量を取得する際には、本来のサイズよりも周囲1画素分だけ小さい算出用処理対象画像を使用する。また、画像検出部14は、サイズ変更画像についての特徴量を取得する際には、本来のサイズよりも周囲1画素分だけ小さい算出用サイズ変更画像を使用する。以後、特徴量の取得で使用される算出用処理対象画像及び算出用サイズ変更画像を総称して「取得対象画像」と呼ぶことがある。
本実施の形態では、大別すると、例えば2種類の特徴量が使用される。具体的には、評価値マップに設定された確度値取得枠内での一つ評価値が一つの特徴量とされる。以後、この特徴量を「評価値単体特徴量」と呼ぶ。本実施の形態では、上述のように、評価値がとり得る値の種類は59種類であることから、評価値単体特徴量の種類(次元)は59種類となる。
さらに、本実施の形態では、評価値マップに設定された確度値取得枠内での2つの評価値の組み合わせが一つの特徴量とされる。以後、この特徴量を「共起特徴量」と呼ぶ。共起特徴量は、評価値の共起性を示していると言える。
画像検出部14は、枠内画像から取得する評価値単体特徴量及び共起特徴量の両方に基づいて検出確度値を求める。以下に、評価値単体特徴量及び共起特徴量の取得方法について詳細に説明する。
プロセッサ36は、上述の図6〜9のようにして、算出用処理対象画像のある位置に基準検出枠を設定した際には、記憶回路35から基準用評価値マップを読み出して、基準用評価値マップに対して、当該ある位置と同じ位置に基準検出枠を設定する。そして、プロセッサ36は、基準用評価値マップでの基準検出枠内の複数の評価値を確度値取得回路37に出力する。基準検出枠のサイズは16p×16pであることから、確度値取得回路37には(16×16)個の評価値で構成された評価値ブロックが入力される。確度値取得回路37は、入力された評価値ブロックを構成する複数の評価値のそれぞれを評価値単体特徴量とする。これにより、処理対象画像での基準検出枠内の画像から、当該画像についての(16×16)個の評価値単体特徴量が得られる。
また確度値取得回路37は、入力された評価値ブロックから共起特徴量を取得する。具体的には、確度値取得回路37は、入力された評価値ブロックから、所定の相対的な位置関係にある2つの評価値の組み合わせを複数組取得し、当該複数組のそれぞれを共起特徴量とする。以後、所定の相対的な位置関係にある2つの評価値のペアを「評価値ペア」と呼ぶ。
本実施の形態では、評価値ペアを構成する2つの評価値の間での相対的な位置関係について、K種類(≧2)の位置関係が定められている。そして、本実施の形態では、評価値ブロックからは、K種類の位置関係のそれぞれについて、当該位置関係にある2つの評価値で構成された評価値ペアが複数個取得される。本実施の形態では、例えば、K=30であって、30種類の位置関係が定めされている。以後、評価値ペアにおいて、一方の評価値を「第1評価値」と呼び、他方の評価値を「第2評価値」と呼ぶ。
図29は評価値ペアについての30種類の位置関係の一例を示す図である。図29では、白丸は第1評価値500を示している。また図29では、黒丸は第2評価値510を示しており、評価値ブロックにおいて位置が互いに異なる30個の第2評価値510が示されている。
本実施の形態では、図29に示される第1評価値500と、図29に示される1つの第2評価値510との間の相対的な位置関係が、評価値ペアについての1種類の位置関係を示している。図29では、第2評価値510は30個存在することから、評価値ペアについて30種類の位置関係が示されている。
図30〜32は、確度値取得回路37が、入力された評価値ブロック600から、ある相対的な位置関係にある2つの評価値で構成された評価値ペアを取得する際の当該確度値取得回路37の動作を説明するための図である。図30〜32の例では、左右方向で互いに隣り合う第1評価値500及び第2評価値510で構成された評価値ペアが評価値ブロック600から取得される。
本実施の形態では、確度値取得回路37は、評価値ブロック600において、左上から右下にかけて(ラスタスキャン方向に沿って)順番に評価値を第1評価値500とし、当該第1評価値500とペアとなる第2評価値510と当該第1評価値500の組み合わせを取得する。
具体的には、図30に示されるように、まず確度値取得回路37は、評価値ブロック600での左上の評価値を第1評価値500とし、その右隣の評価値を第2評価値510として、第1評価値500と第2評価値510の組み合わせを取得して一つの共起特徴量とする。
次に図31に示されるように、確度値取得回路37は、評価値ブロック600での左上から右方向に見て2番目の評価値を第1評価値500とし、その右隣の評価値を第2評価値510として、第1評価値500と第2評価値510の組み合わせを取得して一つの共起特徴量とする。
以後、確度値取得回路37は、ラスタスキャン方向に沿って、評価値ブロック600での評価値を順番に第1評価値500とし、当該第1評価値500の右隣の評価値を第2評価値510として、各第1評価値500について、当該第1評価値500と、それとペアとなる第2評価値510の組み合わせを取得する。図32では、評価値ブロック600での右下から左方向に見て2番目の評価値が第1評価値500とされ、その右隣の評価値が第2評価値510とされている様子が示されている。
なお、確度値取得回路37が、評価値ブロック600において、左上から右下にかけて順番に評価値を第1評価値500とし、当該第1評価値500とペアとなる第2評価値510と当該第1評価値500の組み合わせを取得する際に、第1評価値500とペアとなる第2評価値510が存在しないときには、当該第1評価値500と、それとペアとなる第2評価値510との組み合わせは取得されない。例えば、図30〜32の例では、評価値ブロック600において、右下の評価値を第1評価値500とした場合には、それとペアとなる第2評価値510は存在しないことができないことから、当該第1評価値500と、それとペアとなる第2評価値520との組み合わせは取得されない。
上述のようにして、確度値取得回路37は、K種類の位置関係のそれぞれについて、当該位置関係にある第1評価値と第2評価値で構成された評価値ペアを複数個取得する。これにより、算出用処理対象画像での基準検出枠内の画像から、当該画像についての複数個の共起特徴量が取得される。
ここで、評価値がとり得る値は59種類であることから、評価値ペアを構成する第1評価値及び第2評価値の組み合わせの種類は(59×59)種類となる。そして、複数個の評価値ペアにおいて、第1評価値と第2評価値の組み合わせが同じであったとしても、第1評価値と第2評価値との間の相対的な位置関係が異なれば、画像の特徴量としては異なると言える。したがって、K=30である本実施の形態では、共起特徴量の種類(次元)は(30×59×59)種類となる。よって、評価値単体特徴量の種類と共起特徴量の種類とを合わせると、評価値ブロックから取得される特徴量の種類の数(次元数)は104489(=59+30×59×59)となる。
画像検出部14では、プロセッサ36が、算出用処理対象画像に対して基準検出枠をラスタスキャンさせていく際に、基準検出枠の各位置において、上記のようにして、基準用評価値マップが使用されて基準検出枠内の画像から評価値単体特徴量と共起特徴量が取得される。
画像検出部14では、非基準検出枠が使用される場合でも、同様にして評価値単体特徴量及び共起特徴量が取得される。プロセッサ36は、非基準検出枠に対応する算出用サイズ変更画像のある位置にサイズ変更検出枠を設定した際には、当該非基準検出枠に対応する、評価値マップ生成回路34で生成された非基準用評価値マップに対して、当該ある位置と同じ位置に当該サイズ変更検出枠を設定する。そして、プロセッサ36は、非基準用評価値マップに設定したサイズ変更検出枠内の複数の評価値で構成された評価値ブロックを確度値取得回路37に入力する。確度値取得回路37は、入力された評価値ブロックから複数個の評価値単体特徴量と複数個の共起特徴量とを取得する。これにより、算出用サイズ変更画像でのサイズ変更検出枠内の画像から、当該画像についての評価値単体特徴量及び共起特徴量が取得される。
画像検出部14では、プロセッサ36が、算出用サイズ変更画像に対してサイズ変更検出枠をラスタスキャンさせていく際に、サイズ変更検出枠の各位置において、上記のようにして、非基準用評価値マップが使用されてサイズ変更検出枠内の画像から評価値単体特徴量と共起特徴量が取得される。画像検出部14では、複数種類の非基準検出枠のそれぞれに関して、当該非基準検出枠に対応する算出用サイズ変更画像に対して当該非基準検出枠に対応するサイズ変更検出枠がラスタスキャンされながら、当該非基準検出枠に対応する非基準用評価値マップが用いられて当該サイズ変更検出枠内の画像から評価値単体特徴量及び共起特徴量が取得される。
<確度値取得回路の詳細について>
次に、確度値取得回路37の構成と、確度値取得回路37での検出確度値の算出処理について説明する。以下では、確度値取得回路37での検出確度値の算出方法とは異なる検出確度値の算出方法(以後、「比較対象算出方法」と呼ぶ)についてまず説明し、その後に、確度値取得回路37について詳細に説明する。
<比較対象算出方法>
比較対象算出方法では、枠内画像についての検出確度値が求められる際には、評価値ブロックでの評価値の頻度分布(度数分布)を示す1次元評価値ヒストグラムが生成される。
図33は1次元評価値ヒストグラムの一例を示す図である。図33の横軸は、評価値がとり得る59種類の値に対してそれぞれ割り当てられた0〜58の番号を示している。図33の縦軸は、評価値ブロックにおいて、横軸に示された番号の値を有する評価値の頻度を示している。本実施の形態では、評価値がとり得る値の種類は59種類であるため、1次元評価値ヒストグラムは59個のビンを有する。
比較対象算出方法では、1次元評価値ヒストグラムが生成されると、当該1次元評価値ヒストグラムにおける59個のビンでの頻度のそれぞれが、枠内画像についての特徴量とされる。この特長量を「1次元ヒストグラム特徴量」と呼ぶ。枠内画像からは、当該枠内画像についての59個の1次元ヒストグラム特徴量が取得される。
また比較対象算出方法では、枠内画像についての検出確度値が求められる際には、評価値ペアについてのK種類の位置関係のそれぞれについて、第1及び第2評価値が当該位置関係にある評価値ペアがとり得る値の組み合わせについての頻度分布を示す2次元評価値ヒストグラムが生成される。評価値ペアについて30種類の位置関係が定められているとすると、30個の2次元評価値ヒストグラムが生成される。
第1及び第2評価値がある位置関係にある評価値ペアについての2次元評価値ヒストグラムについては、上述の図30〜32のようにして評価値ブロックから取得された複数個の当該評価値ペアに基づいて生成される。
図34は、第1及び第2評価値がある相対的な位置関係にある評価値ペア(以後、「対象評価値ペア」と呼ぶ)についての2次元評価値ヒストグラムの一例を示す図である。図34のX方向に沿った第1軸は、対象評価値ペアの第1評価値がとり得る59種類の値に対してそれぞれ割り当てられた0〜58の番号が示されている。また図34のY方向に沿った第2軸は、対象評価値ペアの第2評価値がとり得る59種類の値に対してそれぞれ割り当てられた0〜58の番号が示されている。そして図34のZ方向に沿った第3軸は、評価値ブロックにおける、第1軸に示された番号の値を有する第1評価値と、第2軸に示された番号の値を有する第2評価値との組み合わせの頻度を示している。つまり、図31の第3軸は、上述の図30〜32のようにして評価値ブロックから得られた複数個の対象評価値ペアにおいて、第1軸に示された番号の値を有する第1評価値と、第2軸に示された番号の値を有する第2評価値とで構成された対象評価値ペアがいくつ存在しているかを示している。
例えば、評価値ブロックから得られた複数個の対象評価値ペアにおいて、番号0の値を有する第1評価値と、番号2の値を有する第2評価値とから成る対象評価値ペアが8個存在する場合には、第1軸に示される番号0及び第2軸に示される番号2に対応するビンでの頻度が“8”となる。また、評価値ブロックから得られた複数個の対象評価値ペアにおいて、番号2の値を有する第1評価値と、番号1の値を有する第2評価値とから成る対象評価値ペアが3個存在する場合には、第1軸に示される番号2及び第2軸に示される番号1に対応するビンでの頻度が“3”となる。本実施の形態では、2次元評価値ヒストグラムは、3481(=59×59)個のビンを有する。
比較対象算出方法では、このようにして、評価値ペアについてのK種類の位置関係のそれぞれについて2次元評価値ヒストグラムが生成される。これにより、K個の2次元評価値ヒストグラムが生成される。
比較対象算出方法では、K個の2次元評価値ヒストグラムが生成されると、当K個の2次元評価値ヒストグラムのそれぞれについて、当該2次元評価ヒストグラムにおける3481個のビンでの頻度のそれぞれを枠内画像についての特徴量とする。この特徴量を「2次元ヒストグラム特徴量」と呼ぶ。K=30である本実施の形態では、枠内画像からは、104430(=3481×30)個の2次元ヒストグラム特徴量が得られる。
比較対象算出方法では、枠内画像から、59個の1次元ヒストグラム特徴量と104430個の2次元ヒストグラム特徴量が取得されると、これらの104489(=59+104430)個の特徴量が順番で並べて得られる特徴ベクトルが生成される。特徴ベクトルの次元数は“104489”となる。そして、生成された特徴ベクトルと、顔画像について学習サンプル(学習用のサンプル画像)に基づいて生成された重みベクトルとに基づいて、枠内画像が顔画像である確からしさを示す検出確度値が算出される。重みベクトルは、上記と同様にして学習サンプルから取得された59個の1次元ヒストグラム特徴量及び104430個の2次元ヒストグラム特徴量から成る特徴ベクトルに基づいて生成されている。比較対象算出方法では、枠内画像から取得された特徴ベクトルと、重みベクトルとの内積が求められて、それによって得られる値が当該枠内画像についての検出確度値となる。つまり、枠内画像から取得された特徴ベクトルを構成する複数の特徴量のそれぞれに対して、重みベクトルでの当該特徴量に対応する重み値(「重み係数」、「学習データ」とも呼ばれる)が乗算される。そして、重み値が乗算された当該複数の特徴量が加算され、その加算値が検出確度値とされる。
ここで、1次元評価値ヒストグラムから得られる59個の1次元ヒストグラム特徴量から成る特徴ベクトルと、当該59個の1次元ヒストグラム特徴量にそれぞれ対応する59個の重み値から成る重みベクトルとの内積を「第1算出値A」とする。
また、評価値ペアについてのK種類の位置関係に対して1番からK番までの番号をそれぞれ付与する。そして、評価値ペアについての番号p(1≦p≦K)の位置関係に対応する2次元評価値ヒストグラムから得られる(59×59)個の2次元ヒストグラム特徴量と、当該(59×59)個の2次元ヒストグラム特徴量にそれぞれ対応する(59×59)個の重み値から成る重みベクトルとの内積を「第2算出値Bp」とする。
第1算出値Aと第2算出値Bpを使用して検出確度値vを表すと、以下の式(4)のようになる。
なお、枠内画像についての第1算出値Aは、当該枠内画像が顔画像である確からしさを示す一種の検出確度値であると言える。また、枠内画像についての第2算出値Bpは、当該枠内画像が顔画像である確からしさを示す一種の検出確度値であると言える。
以上のような比較対象算出方法では、1次元評価値ヒストグラム及び2次元評価値ヒストグラムが生成され、生成された当該1次元評価値ヒストグラム及び当該2次元評価値ヒストグラムでの各ビンの値と重み値とが乗算されることから、検出確度値の算出処理が雑となり、処理速度が遅くなる。
そこで、本実施の形態では、比較対象算出方法と同じ検出確度値を得つつ、検出確度値の算出処理についての処理速度を向上することが可能な確度値取得回路37の構成を提案する。以下に確度値取得回路37について詳細に説明する。
<確度値取得回路の詳細>
図35は確度値取得回路37の構成を示す図である。確度値取得回路37は、画像処理回路の一種であって、図35に示されるように、制御回路700と、第1選択回路720と、(K+1)個の処理回路730と、加算回路740とを備えている。
制御回路700は、第1選択回路720及び各処理回路730の動作を制御する。制御回路700には、第1選択回路720及び各処理回路730の動作を設定するための設定情報がプロセッサ36から入力される。以後、第1選択回路720の動作を設定するための設定情報を「第1設定情報」と呼ぶことがある。また、処理回路730の動作を設定するための設定情報を「第2設定情報」と呼ぶことがある。第1設定情報は、第1選択回路720を制御するための制御情報であり、第2設定情報は、処理回路730を制御するための制御情報である。
制御回路700は第1レジスタ701を有している。制御回路700は、プロセッサ36から入力される第1設定情報を第1レジスタ701に記憶する。また制御回路700は、(K+1)個の処理回路730にそれぞれ対応する(K+1)個の第2レジスタ702を有している。制御回路700は、(K+1)個の処理回路730のそれぞれについて、プロセッサ36から入力される、当該処理回路730の動作を設定するための第2設定情報を、当該処理回路730に対応する第2レジスタ702に記憶する。
第1選択回路720は、プロセッサ36から確度値取得回路37に入力される評価値ブロックから一つの評価値を選択して出力する。第1選択回路720が選択する評価値については、第1レジスタ701に記憶されている第1設定情報によって決定される。本実施の形態では、第1選択回路720は、第1設定情報に従って、評価値ブロックから選択する一つの評価値を順次変化させて、出力する評価値を順次変化させる。これにより、第1選択回路720からは、評価値ブロックを構成する複数の評価値のそれぞれが一つずつ順次出力される。
加算回路740は、(K+1)個の処理回路730から出力される後述の出力積算値を加算し、それによって得られた加算値を出力する。この加算値が、枠内画像についての検出確度値となる。
図36は各処理回路730の構成を示す図である。(K+1)個の処理回路730は、互いに同じ回路構成となっており、互いに並列的に動作する。図36に示されるように、処理回路730は、第2選択回路731と、積算回路732と、記憶回路733とを備えている。記憶回路733は例えばRAMである。
第2選択回路731は、第1選択回路720から評価値が出力されると、当該評価値に応じて評価値ブロックから一つの評価値を選択して出力する選択モードと、評価値ブロックから評価値を選択しない非選択モードとを有している。第2選択回路731のモードは、それに対応する第2レジスタ702(第2選択回路731が属する処理回路730に対応する第2レジスタ702)に記憶されている第2設定情報によって決定される。非選択モードの第2選択回路731からは評価値が出力されない。
選択モードの第2選択回路731が選択する評価値については、第2レジスタ702内の第2設定情報によって決定される。本実施の形態では、選択モードの第2選択回路731は、第2設定情報に従って、評価値ブロックから選択する一つの評価値を順次変化させて、出力する評価値を順次変化させる。選択モードの第2選択回路731は、第2設定情報に従って動作することによって、第1選択回路720から出力される評価値とは異なる評価値を出力する。第2選択回路731での評価値の選択動作は、第1選択回路720での評価値の選択動作と同期している。
積算回路732は、第1選択回路720の出力と、第2選択回路731の出力とに接続されている。積算回路732は、第2選択回路731が評価値を出力するたびに、記憶回路733に記憶されている重み値を記憶回路733から読み出して積算する。積算回路732は、得られた積算値を加算回路740に出力する。
本実施の形態では、(K+1)個の処理回路730のうち、一つの処理回路730は、評価値単体特徴量に関する処理を行う、以後、この処理回路730を「第1処理回路730」と呼ぶことがある。そして、残りのK個の処理回路730は、評価値ペアについてのK種類の位置関係(図28)にそれぞれ対応している。評価値ペアについての番号pの位置関係に対応する処理回路730は、第1及び第2評価値が番号pの位置関係にある評価値ペア(共起特徴量)に関する処理を行う。以後、第1処理回路730以外の各処理回路730を「第2処理回路730」と呼ぶことがある。
第1処理回路730では、第2選択回路731は非選択モードで動作する。したがって、第1処理回路730の積算回路732には、第1選択回路720から出力される評価値だけが入力され、第2選択回路731からは評価値は入力されない。
一方で、第2処理回路730では、第2選択回路731は選択モードで動作する。したがって、第2処理回路730の積算回路732には、第1選択回路720から出力される評価値と、第2選択回路731から出力される評価値とが入力される。
また本実施の形態では、第1選択回路720は、第1設定情報に従って動作することによって、図30〜32での第1評価値500の決定方法と同様に、評価値ブロックにおいて、左上から右下にかけて(ラスタスキャン方向に沿って)順番に評価値を選択して出力する。これにより、積算回路732には、評価値ブロックを構成する複数の評価値が、左上から右下にかけて(ラスタスキャン方向に沿って)順番に一つずつ入力される。第1処理回路730では、第1選択回路720から出力される評価値が評価値単体特徴量となる。つまり、第1選択回路720が評価値ブロックから評価値単体特徴量を取得していると言える。一方で、第2処理回路730では、第1選択回路720から出力される評価値が、共起特徴量(評価値ペア)の第1評価値となる。つまり、第1選択回路720が、評価値ブロックから共起特徴量(評価値ペア)の第1評価値を取得していると言える。
第1処理回路730では、積算回路732は、第1選択回路720から評価値単体特徴量(評価値)が出力されるたびに、当該評価値単体特徴量に対応する重み値を記憶回路733から読み出して積算する。つまり、積算回路732は、第1選択回路720から評価値単体特徴量(評価値)が出力されるたびに、当該評価値単体特徴量に対応する重み値を記憶回路733から読み出して、それまでの重み値の積算値に加算する。そして、積算回路732は、第1選択回路720から評価値ブロックの右下の評価値が出力され、当該評価値に対応する重み値をそれまでの重み値の積算値に加算すると、それによって得られた積算値を加算回路740に出力する。加算回路740に出力される積算値を「出力積算値」と呼ぶ。第1処理回路730から出力される出力積算値は、評価値ブロックのすべての評価値に対応する重み値の積算値である。
図37は、第1処理回路730の記憶回路733に記憶されている重み値を示す図である。図37に示されるように、第1処理回路730の記憶回路733には、評価値単体特徴量、つまり評価値がとり得る複数種類の値のそれぞれに対応する、顔画像についての学習サンプルに基づいて生成された重み値が記憶されている。本実施の形態では、評価値がとり得る値の種類は59種類であることから、第1処理回路730の記憶回路733には、当該59種類の値にそれぞれ対応する59個の重み値α0〜α58が、当該59種類の値にそれぞれ関連づけられて記憶されている。
このように、第1処理回路730では、第1選択回路720から順次出力される、評価値ブロックを構成する複数の評価値(複数の評価値単体特徴量)にそれぞれ対応する重み値が積算され、得られた積算値が出力積算値として出力される。以後、第1処理回路730から出力される出力積算値を「第1出力積算値C」と呼ぶことがある。
第1出力積算値Cは、上述の比較対象算出方法での第1算出値A、つまり1次元評価値ヒストグラムから得られる59個の1次元ヒストグラム特徴量から成る特徴ベクトルと、当該59個の1次元ヒストグラム特徴量にそれぞれ対応する59個の重み値から成る重みベクトルとの内積と一致する。当該重みベクトルを構成する複数の重み値は、第1処理回路730の記憶回路733に記憶されている複数の重み値と一致する。
評価値ペアについての番号pの位置関係に対応する第2処理回路730では、第2選択回路731が、第1選択回路720から出力される評価値(第1評価値)との間で番号pの位置関係を成す、当該評価値とペアを成す評価値(第2評価値)を評価値ブロックから選択して出力する。このとき、第2選択回路731では、第1選択回路720から出力される評価値との間で番号pの位置関係を成す、当該評価値とペアを成す評価値が存在しない場合には、評価値は出力されない。
積算回路732は、第2選択回路731から評価値(第2評価値)が出力されるたびに、当該評価値と、第1選択回路720から出力される、当該評価値とペアを成す評価値との組み合わせ(共起特徴量)に応じた重み値を記憶回路733から読み出して積算する。つまり、評価値ペアについての番号pの位置関係に対応する第2処理回路730では、積算回路732が、第2選択回路731から第2評価値が出力されるたびに、当該第2評価値と、当該第2評価値とペアを成す第1選択回路720から出力される第1評価値との組み合わせに応じた重み値を記憶回路733から読み出して、それまでの重み値の積算値に加算する。なお、積算回路732では、第2選択回路731から評価値が出力されない場合には重み値は積算されない。そして、積算回路732は、第1選択回路720から評価値ブロックの右下の評価値が出力され、当該評価値と、第2選択回路731から出力される、当該評価値とペアを成す評価値との組み合わせに対応する重み値をそれまでの重み値の積算値に加算すると、それによって得られた積算値(出力積算値)を加算回路740に出力する。評価値ペアについての番号pの位置関係に対応する第2処理回路730から出力される出力積算値は、評価値ブロックにおいて考えられる、番号pの位置関係を成す第1評価値と第2評価値から成る評価値ペアのすべてに対応する重み値の積算値となる。
K個の第2処理回路730のそれぞれは、同様に動作して、求めた出力積算値を加算回路740に出力する。
図38は、評価値ペアについての番号pの位置関係に対応する第2処理回路730の記憶回路733に記憶されている重み値を示す図である。図38に示されるように、当該記憶回路733には、番号pの位置関係を成す第1及び第2評価値で構成された評価値ペア(番号pの位置関係に対応する共起特徴量)がとり得る当該第1評価値と当該第2評価値との間での複数種類((59×59)種類)の値の組み合わせにそれぞれに対応する、顔画像についての学習サンプルに基づいて生成された複数の重み値が記憶されている。図38では、第1評価値の値i(0≦i≦58)と第2評価値の値j(0≦j≦58)の組み合わせが(i,j)で表されている。また、(i,j)に対応する重み値がβi−jで表されている。本実施の形態では、評価値がとり得る値の種類は59種類であることから、第2処理回路730の記憶回路733には、第1評価値と第2評価値の間での(59×59)種類の値の組み合わせにそれぞれ対応する(59×59)個の重み値β0−0〜β58−58が、当該(59×59)種類の値の組み合わせにそれぞれ関連づけられて記憶されている。
このように、番号pの位置関係に対応する第2処理回路730では、評価値ブロックにおいて考えられる、番号pの位置関係を成す第1評価値と第2評価値から成る評価値ペアに対応する重み値の積算値が算出されて出力される。以後、番号pの位置関係に対応する第2処理回路730から出力される出力積算値を「第2出力積算値Dp」と呼ぶことがある。
第2出力積算値Dpは、上述の比較対象算出方法での第2算出値Bp、つまり番号pの位置関係に対応する2次元評価値ヒストグラムから得られる(59×59)個の2次元ヒストグラム特徴量から成る特徴ベクトルと、当該(59×59)個の2次元ヒストグラム特徴量にそれぞれ対応する(59×59)個の重み値から成る重みベクトルとの内積と一致する。当該重みベクトルを構成する複数の重み値は、番号pの位置関係に対応する第2処理回路730の記憶回路733に記憶されている複数の重み値と一致する。
加算回路740は、第1処理回路730から出力される第1出力積算値Cと、K個の第2処理回路730からそれぞれ出力されるK個の第2出力積算値D1〜DKとを加算する。加算回路740で得られる加算値が検出確度値vとなる。検出確度値vは、以下の式(5)で表すことができる。
上述のように、第1出力積算値Cは第1算出値Aと一致し、第2出力積算値Dpは第2算出値Bpと一致することから、式(4)で表される検出確度値vと、式(5)で表される検出確度値vとは同じとなる。つまり、比較対象算出方法で求められる検出確度値vと、本実施の形態に係る確度値取得回路37で求められる検出確度値vとは同じとなる。
枠内画像についての第1出力積算値Cは、当該枠内画像が顔画像である確かさを示す一種の検出確度値であると言える。また、枠内画像についての第2出力積算値Dpは、当該枠内画像が顔画像である確からしさを示す一種の検出確度値であると言える。
なお、処理回路730の動作を設定するための第2設定情報を変更することにより、当該処理回路730の動作を停止することができる。処理回路730が停止すると、第2選択回路731は選択動作を行わず、積算回路732は積算処理を行わない。したがって、停止している処理回路730からは積算値は出力されない。
以上のように、本実施の形態に係る確度値取得回路37では、複数の処理回路730の間において第2選択回路731及び積算回路732を並列的に動作させることができることから、検出確度値を求めるための処理についての処理速度を向上することができる。さらに、確度値取得回路37にはプロセッサが使用されておらず、確度値取得回路37自体の動作にはプログラムは必要でないことから、検出確度値を求めるための処理についての処理速度をさらに向上することができる。
また本実施の形態では、制御回路700において、第2選択回路731での評価値の選択動作を設定するための第2設定情報を記憶する第2レジスタ702が設けられている。第2レジスタ702内の第2設定情報をプロセッサ36等で書き替えることにより、第2選択回路731において選択される評価値を変更することができる。したがって、第2選択回路731で選択される第2評価値についての、第1選択回路720で選択される第1評価値との間の相対的な位置関係を変更することができる。よって、第2レジスタ702内の第2設定情報を変更することにより、検出対象画像あるいは撮像装置2の撮像環境等に応じて評価値ペアについてのK種類の位置関係を適切に設定することができる。
また本実施の形態では、処理回路730の動作を設定するための第2設定情報を変更することにより、当該処理回路730の動作を停止して当該処理回路730から積算値が出力されないようにすることが可能である。したがって、評価値マップについての第1及び第2評価値の位置関係を、第2処理回路730の数と同じK種類から減らすことができる。つまり、評価値ペアについての位置関係の種類を最大でK種類に設定することができる。よって、検出対象画像あるいは撮像装置2の撮像環境等に応じて、評価値ペアについての第1及び第2評価値の位置関係の種類を適切に設定することができる。
また、画像検出装置3に対してその外部から第2設定情報を入力できるようにし、入力された第2設定情報が制御回路700内の第2レジスタ702に記憶されるようにしても良い。これにより、画像検出装置3に対して第2設定情報を入力することによって、制御回路700の第2レジスタ702内の第2設定情報を書き替えることが可能となる。
なお、第1レジスタ701内の第1設定情報をプロセッサ36等によって書き替えても良い。
また本実施の形態では、所定の相対的な位置関係にある2つの評価値のペアを特徴量(共起特徴量)としていることから、顔画像の検出等の画像検出に適切な特徴量を得ることができる。よって、画像から取得された当該特徴量に基づいて検出確度値を求めることによって、当該画像が検出対象画像である可能性が高いかを精度良く判定することができる。その結果、検出対象画像についての誤検出を抑制することができる。つまり、検出対象画像についての検出精度が向上する。
なお、上記の例では、評価値単体特徴量と共起特徴量の両方に基づいて検出確度値が求められていたが、それらのうち共起特徴量だけに基づいて検出確度値が求められても良い。つまり、第1処理回路730を停止して、加算回路740において、複数の第2処理回路730から出力される出力積算値だけが加算されても良い。
また、画素の特徴を表す評価値については、LBP、ネガティブLTP及びポジティブLTP以外を使用しても良い。例えば、画素の輝度勾配を評価値としても良い。
また、加算回路740において、複数の処理回路730から出力される出力積算値と、HOG特徴量、Haar−like特徴量などの特徴量と重み値(重み係数)とに基づいて求められた検出確度値とを加算し、その加算値を確度値判定処理で使用される検出確度値としてプロセッサ36に入力しても良い。
また、上記の例では、プロセッサ36は、処理対象画像の全領域に対して検出処理を行ったが、処理対象画像のうち、顔画像である可能性が低い領域以外の領域だけに対して検出処理を行っても良い。例えば、評価値マップ生成回路34等において、アダマール変換等を使用して処理対象画像においてのっぺりした領域を特定し、処理対象画像において当該のっぺりした領域以外の領域に対してのみ検出処理が行われても良い。また、評価値マップ生成回路34等において、処理対象画像において肌色領域を特定し、当該領域に対してのみ検出処理が行われても良い。
<各種変形例>
以下に本実施の形態についての各種変形例について説明する。
<第1変形例>
上記の例では、画像検出部14は、処理対象画像から、1種類の検出対象画像を検出しているが、複数種類の検出対象画像(例えば、顔画像、人体の画像、車の画像等)を検出できるようにしても良い。
例えば、確度値取得回路37が有する各処理回路730の記憶回路733が記憶する重み値(学習データ)を、プロセッサ36等によって書き替え可能とすることによって、画像検出装置3は、処理対象画像から複数種類の検出対象画像を検出できるようになる。つまり、プロセッサ36等が、検出対象画像の種類に応じて各記憶回路733内の重み値を書き替えることによって、画像検出装置3は、同じハードウェア構成を用いて複数種類の検出対象画像を処理対象画像から検出することが可能となる。
記憶回路733内の重み値を検出対象画像の種類に応じて書き替える場合には、例えば、記憶部12に対して、複数種類の検出対象画像にそれぞれ対応する複数種類の重み値(複数種類の学習データ)を記憶させておく。例えば、記憶部12に対して、正面を向いた人の顔の画像、右を向いた人の顔の画像及び左を向いた人の顔の画像にそれぞれ対応する複数種類の重み値を記憶させておく。そして、プロセッサ36は、ある種類の検出対象画像(例えば、正面を向いた人の顔の画像)に対応する重み値を記憶部12から読み出して各記憶回路733に記憶する。これにより、確度値取得回路37では、枠内画像が当該ある種類の検出対象画像である確からしさを示す検出確度値が得られる。画像検出装置3では、当該検出確度値に基づいて、処理対象画像において当該ある種類の検出対象画像が特定される。
また、プロセッサ36は、別の種類の検出対象画像(例えば、左を向いた人の顔の画像)に対応する重み値を記憶部12から読み出して各記憶回路733に記憶する。これにより、確度値取得回路37では、枠内画像が当該別の種類の検出対象画像である確からしさを示す検出確度値が得られる。画像検出装置3では、当該検出確度値に基づいて、処理対象画像において当該別の種類の検出対象画像が特定される。
また、画像検出装置3に対してその外部から重み値を入力できるようにし、入力された当該重み値が記憶部12に記憶されるようにしても良い。これにより、ユーザによって画像検出装置3に入力された重み値を各記憶回路733に記憶させることができる。
このように、各記憶回路733が記憶する重み値を書き替え可能とすることによって、確度値取得回路37は複数種類の検出対象画像についての検出確度値を求めることが可能となる。よって、画像検出部14は、処理対象画像から複数種類の検出対象画像を検出することができる。
また、各記憶回路733に対して、複数種類の検出対象画像にそれぞれ対応する複数種類の重み値(複数種類の学習データ)を記憶することによって、確度値取得回路37は、複数種類の検出対象画像についての検出確度値を求めることが可能となる。よって、画像検出部14は、処理対象画像から複数種類の検出対象画像を検出できるようになる。評価値ペアについて番号pの位置関係に対応する第2処理回路730の記憶回路733に記憶される複数種類の重み値のそれぞれは、第2選択回路731から出力される第2評価値と、当該第2評価値と番号pの位置関係を成す、第1選択回路720から出力される第1評価値との組み合わせに応じたものであって、対応する検出対象画像についての学習サンプルに基づいて生成されたものである。
このように、各記憶回路733に対して複数種類の検出対象画像にそれぞれ対応する複数種類の重み値を記憶する場合には、制御回路700が、第2レジスタ702内の第2設定情報によって、各処理回路730の積算回路732に対して使用する重み値の種類を設定する。これにより、各処理回路730では、積算回路732は、制御回路700によって設定された種類の重み値を記憶回路733から読み出し、当該重み値を使用して出力積算値を生成して出力する。よって、確度値取得回路37では、制御回路700によって設定された種類の重み値に対応する検出対象画像についての検出確度値が得られる。そして、画像検出部14は、当該検出確度値に基づいて、制御回路700によって設定された種類の重み値に対応する検出対象画像が処理対象画像において特定される。
このように、各記憶回路733に、複数種類の検出対象画像(特定画像)にそれぞれ応じた複数種類の重み値を記憶させ、各積算回路732が使用する重み値の種類を変更することによって、同じハードウェア構成を用いて、複数種類の検出対象画像についての検出確度値を求めることができる。よって、同じハードウェア構成を用いて、処理対象画像から複数種類の検出対象画像を検出することが可能となる。
なお、記憶部12に対して、複数種類の検出対象画像にそれぞれ対応する複数種類の重み値を記憶させる場合には、検出対象画像の種類を変更するために、変更後の検出対象画像に対応する重み値を記憶部12から読み出し、その後、当該重み値を各記憶回路733に記憶する必要がある。
これに対して、各記憶回路733に、複数種類の検出対象画像にそれぞれ対応した複数種類の重み値を記憶させる場合には、積算回路732が記憶回路733から読み出す重み値の種類を変更するだけで、検出対象画像の種類を変更することができる。したがって、当該複数種類の重み値を記憶部12に記憶させる場合よりも処理速度が向上する。
また、本例のように、確度値取得回路37が複数種類の検出対象画像についての検出確度値を求めることができる場合には、当該複数種類の検出対象画像についての検出確度値に基づいて、当該複数種類の検出対象画像のそれぞれを一部分とする全体画像を特定しても良い。この処理は、検出対象画像を複数の部分画像に分割し、当該複数の部分画像のそれぞれに対して個別に検出処理を行って、当該複数の部分画像についての検出確度値を算出し、算出した検出確度値に基づいて検出対象画像を特定する処理と同義である。
例えば、人の上半身の画像と下半身の画像についての検出確度値に基づいて、上半身の画像と下半身の画像を上側部分及び下側部分とする人体の画像を特定しても良い。
また例えば、横側から見た際の車の前方部分の画像及び後方部分の画像についての検出確度値に基づいて、当該前方部分の画像及び当該後方部分の画像を前方部分及び後方部分とする、横側から見た際の車全体の画像を特定しても良い。
上半身の画像と下半身の画像についての検出確度値に基づいて、上半身の画像と下半身の画像のそれぞれを一部分とする人体の画像を特定する場合には、例えば、各記憶回路733に、上半身の画像に対応する重み値と、下半身の画像に対応する重み値とを記憶する。そして、画像検出部14は、まず、上記と同様にして、上半身の画像を検出対象画像とした検出処理を、各記憶回路733内の上半身の画像に対応する重み値を使用して行って、処理対象画像において、上半身の画像である可能性が高い検出結果領域(以後、「上半身検出結果領域」と呼ぶ)と、当該検出結果領域が上半身の画像である確からしさを示す検出確度値(以後、「上半身検出確度値」と呼ぶ)を取得する。
次に、画像検出部14は、各記憶回路733内の下半身の画像に対応する重み値を使用して、下半身の画像を検出対象画像とした検出処理を、処理対象画像における各上半身検出結果領域の下部分に対してのみ行って、下半身の画像である可能性が高い検出結果領域(以後、「下半身検出結果領域」と呼ぶ)と、当該検出結果領域が下半身の画像である確からしさを示す検出確度値(以後、「下半身検出確度値」と呼ぶ)を取得する。
その後、画像検出部14では、プロセッサ36が、取得された上半身検出結果領域及び下半身検出結果領域において、互いに上下に位置する上半身検出結果領域及び下半身検出結果領域域のペアを特定する。そして、プロセッサ36は、互いに上下に位置する上半身検出確度値及び下半身検出確度値の各ペアについて、当該ペアを成す上半身検出結果領域及び下半身検出結果領域域の上半身検出確度値と下半身検出確度値を加算し、その加算値がしきい値以上であるか判定する。プロセッサ36は、ペアを成す上半身検出結果領域及び下半身検出結果領域の上半身検出確度値と下半身検出確度値の加算値がしきい値以上である場合には、当該上半身検出結果領域及び下半身検出結果領域が同じ人体の上半身及び下半身にそれぞれ対応するものであると判定し、当該上半身検出結果領域及び当該下半身検出結果領域を、人体の画像である可能性が高い人体検出結果領域とする。図39は、ペア成す上半身検出結果領域801と下半身検出結果領域802とで構成された人体検出結果領域800の一例を示す図である。
プロセッサ36は、複数の人体検出結果領域が得られると、上述のように、例えば、互いに近くにある複数の人体検出結果領域をMean-Shift法によるクラスタリング及びNearest Neighbor法を用いて統合し、処理対象画像での統合後の人体検出結果領域内の画像を、人体の画像として特定する。これにより、画像検出部14では、上半身の画像についての検出確度値と下半身の画像についての検出確度値に基づいて、処理対象画像での人体の画像が特定される。
なお、記憶部12に複数種類の検出対象画像にそれぞれ対応する複数種類の重み値を記憶させる場合であっても、上述のようにして、記憶部12内の当該複数種類の重み値に基づいて当該複数種類の検出対象画像についての検出確度値を算出し、算出した検出確度値に基づいて、当該複数種類の検出対象画像のそれぞれを一部分とする全体画像を特定することができる。
また、上記の例のように正方形の検出枠を使用して、人体の画像のように縦長の検出対象画像あるいは横長の検出対象画像を直接的に処理対象画像から検出する場合には、枠内画像において背景部分(検出対象画像ではない部分)が占める割合が多くなる。その結果、検出精度が悪化する可能性がある。
正方形の検出枠を使用して縦長あるいは横長の検出対象画像を検出する場合には、本変形例のように、縦長あるいは横長の検出対象画像(人体の画像)を複数の部分画像(上半身の画像及び下半身の画像)に分割し、当該複数の部分画像のそれぞれについて個別に当該検出枠を用いて検出処理を行うことが望ましい。そして、当該検出処理によって得られた検出結果(上半身の画像についての検出確度値及び下半身の画像についての検出確度値等)に基づいて検出対象画像(人体の画像)を特定する。これにより、正方形の検出枠を使用して処理対象画像から縦長あるいは横長の画像を精度良く検出することができる。
<第2変形例>
本変形例に係る画像検出部14は、左向きの人の顔の画像(以後、「左向き顔画像」と呼ぶ)及び右向きの人の顔の画像(以後、「右向き顔画像」と呼ぶ)のように、一方の画像が概ね他方の画像を左右対称に反転したような2種類の画像(以後、「左右反転画像対」と呼ぶ)についての検出確度値を、同じ重み値を使用して求める。つまり、本変形例に係る画像検出部14は、処理対象画像から左右反転画像対のそれぞれの画像を同じ重み値を使用して検出することができる。以下に本変形例に係る画像検出部14の動作について説明する。以後、検出対象の左右反転画像対の一方の画像を「第1検出対象画像」と呼び、当該左右反転画像対の他方の画像を「第2検出対象画像」と呼ぶ。そして、第1検出対象画像についての検出確度値を「第1検出確度値」と呼び、第2検出対象画像についての検出確度値を「第2検出確度値」と呼ぶ。
本変形例では、確度値取得回路37において、第1処理回路730が動作せずに、第2処理回路730だけが動作する。つまり、本変形例に係る確度値取得回路37では、加算回路740において複数の第2処理回路730からの出力積算値だけが加算される。
また、確度値取得回路37では、各第2処理回路730の第2選択回路731が、選択モードとして、検出対象の左右反転画像対の第1検出対象画像についての第1検出確度値が求められる際に有効となる第1選択モードと、当該左右反転画像対の第2検出対象画像についての第2検出確度値が求められる際に有効となる第2選択モードとを有している。各第2処理回路730の選択モードは制御回路700によって設定される。詳細には、各第2処理回路730の選択モードは、当該第2処理回路730に対応する制御回路700の第2レジスタ702内の第2設定情報によって決定される。第1検出対象画像は例えば左向き顔画像であって、第2検出対象画像は例えば右向き顔画像である。また本変形例では、複数の第2処理回路730の記憶回路733のそれぞれには、例えば第1検出対象画像(左向き顔画像)に対応する重み値が記憶されている。
本変形例では、評価値ペアについての番号pの位置関係に対応する第2処理回路730では、第1選択モードで動作する第2選択回路731が、上記の例と同様に、第1選択回路720から第1評価値が出力されると、当該第2評価値との間で番号pの位置関係を成す、当該第1評価値とペアを成す第2評価値を評価値ブロックから選択して出力する。
一方で、評価値ペアについての番号pの位置関係に対応する第2処理回路730では、第2選択モードで動作する第2選択回路731が、上記の例とは異なり、第1選択回路720から第1評価値が出力されると、当該第1評価値との間で、番号pの位置関係とは左右対称の位置関係を成す第2評価値を当該第1評価値のペアとして評価値ブロックから選択して出力する。例えば、番号pの位置関係を成す第1及び第2評価値において、第1評価値の右側で当該第1評価値と隣接して第2評価値が存在している場合には、第2選択モードで動作する第2選択回路731は、第1選択回路720から出力される第1評価値の左側で当該第1評価値と隣接する評価値が第2評価値として選択されて出力される。また、例えば、番号pの位置関係を成す第1及び第2評価値において、第1評価値の右斜め下で当該第1評価値と隣接して第2評価値が存在している場合には、第2選択モードで動作する第2選択回路731は、第1選択回路720から出力される第1評価値の左斜め下で当該第1評価値と隣接する評価値が第2評価値として選択されて出力される。
このように、本変形例では、各第2処理回路730の第2選択回路731において、第1選択モードと第2選択モードとの間では、第1選択回路720から出力される同じ第1評価値とペアを成す第2評価値の位置が、当該第1評価値の位置に対して左右対称となっている。したがって、各第2選択回路731が第1選択モードである場合の評価値ペアについてのK種類の位置関係が上述の図29に示される位置関係であるとすると、各第2選択回路731が第2選択モードである場合の評価値ペアについてのK種類の位置関係は図40のようになる。K個の第2処理回路730の記憶回路733に記憶されている、第1検出対象画像に対応する重み値については、第1検出対象画像についての学習サンプルから取得される、図29に示されるK種類の位置関係に対応する共起特徴量(評価値ペア)に基づいて生成された重み値である。
各第2処理回路730では、第2選択回路731が第1選択モードで動作する場合であっても第2選択モードで動作する場合であっても、積算回路732は、第1選択回路720から出力される第1評価値と、第2選択回路731から出力される、当該第1評価値とペアを成す第2評価値との組み合わせに応じた重み値を記憶回路733から読み出して、それまでの重み値の積算値に加算する。例えば、積算回路732は、第2選択回路731が第1選択モードで動作する場合であっても第2選択モードで動作する場合であっても、第1選択回路720から出力される第1評価値が“0”であって、第2選択回路731から出力される、当該第1評価値とペアを成す第2評価値が“1”である場合には、記憶回路733から重み値β0−1(図38参照)を読み出して、それまでの重み値の積算値に加算する。
加算回路740は、各第2処理回路730の第2選択回路731が第1選択モードの場合において、各第2処理回路730の積算回路732から出力される出力積算値を加算し、その加算値を、第1検出対象画像についての第1検出確度値としてプロセッサ36に出力する。また、加算回路740は、各第2処理回路730の第2選択回路731が第2選択モードの場合において、各第2処理回路730の積算回路732から出力される出力積算値を加算し、その加算値を、第2検出対象画像についての第2検出確度値としてプロセッサ36に出力する。
以上のように、第2選択回路731の第1選択モードと第2選択モードとの間において、同じ第1評価値とペアを成す第2評価値の位置が、当該第1評価値の位置に対して左右対称となるようにすることによって、同じ重み値を使用して、左右反転画像対のそれぞれの画像についての検出確度値を得ることができる。
なお、第1検出対象画像を右向き顔画像とし、第2検出対象画像を左向き顔画像としても良い。
また、一方の画像が概ね他方の画像を上下対称に反転したような2種類の画像(以後、「上下反転画像対」と呼ぶ)についても、同様にして、同じ重み値を使用して検出確度値を求めることができる。つまり、上下反転画像対のそれぞれの画像を同じ重み値を使用して検出することができる。この場合には、各第2処理回路730の第2選択回路731において、第1選択モードと第2選択モードとの間では、第1選択回路720から出力される同じ第1評価値とペアを成す第2評価値の位置が、当該第1評価値の位置に対して上下対称となっている。したがって、この場合においては、各第2選択回路731が第1選択モードである場合の評価値ペアについてのK種類の位置関係が上述の図29に示される位置関係であるとすると、各第2選択回路731が第2選択モードである場合の評価値ペアについてのK種類の位置関係は図41のようになる。
また、本変形例のように、同じ重み値を使用して左右反転画像対についての検出確度値を求める場合であっても、上記の第1変形例と同様に、左右反転画像対についての検出確度値に基づいて、当該左右反転画像対のそれぞれの画像を一部分とする全体画像を特定しても良い。横側から見た車の画像においては、車の前方部分の画像が、概ね後方部分の画像を左右方向に反転した画像となっていることから、第1検出対象画像を、横側から見た車の前方部分及び後方部分の一方の画像とし、第2検出対象画像を、当該前方部分及び当該後方部分の他方の画像とした場合には、車の前方部分の画像及び後方部分の画像についての検出確度値に基づいて、当該車の前方部分の画像及び当該車の後方部分の画像のそれぞれを一部分とする車全体の画像を特定することができる。
また、第1検出対象画像を人の顔の左側半分の画像とし、第2検出対象画像を人の顔の右側半分の画像とした場合には、人の顔の左側半部の画像及び人の顔の右側半分の画像についての検出確度値に基づいて、当該左側半分の画像と当該右側半分の画像のそれぞれを一部分とする人の顔全体の画像を特定することができる。
また、同じ重み値を使用して上下反転画像対についての検出確度値を求める場合であっても、上下反転画像対についての検出確度値に基づいて、当該上下反転画像対のそれぞれの画像を一部分とする全体画像を特定しても良い。
上記において画像処理システム1は詳細に説明されたが、上記した説明は、全ての局面において例示であって、この発明がそれに限定されるものではない。また、上述した各種の例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。