以下、図面を参照しつつ、本発明の実施の形態を詳しく説明する。
[1.人物検出装置1の構成]
図1は、本実施の形態による人物検出装置1の構成を示す機能ブロック図である。人物検出装置1は、入力画像21に含まれる人物の範囲を特定する。
人物検出装置1は、画像認識部17と、エッジ抽出部11と、肩検出部12と、足先検出部13と、頭頂検出部14と、サイズ決定部15と、メモリ16とを備える。
エッジ抽出部11は、入力画像21に対してエッジ抽出処理を実行して、横エッジ画像22及び縦エッジ画像23を生成する。
肩検出部12は、横エッジ画像22を用いて、入力画像21に含まれる人物の肩の中心位置及び肩幅を検出する。肩検出部12は、肩の中心位置及び肩幅の検出結果を含む肩候補データ24を生成してメモリ16に格納する。
足先検出部13は、横エッジ画像22と肩候補データ24とを用いて、入力画像21に含まれる人物の足先の位置を検出する。足先の位置は、肩検出部12により検出された肩の中心及び肩幅に基づいて検出される。
頭頂検出部14は、横エッジ画像22と肩候補データ24とを用いて、入力画像21に含まれる人物の頭頂の位置を検出する。頭頂の位置は、肩検出部12により検出された肩の中心及び肩幅に基づいて検出される。
サイズ決定部15は、検出された人物の肩幅に基づいて、入力画像21に含まれる人物の横方向のサイズを決定し、検出された足先の位置及び頭頂の位置に基づいて、入力画像21に含まれる人物の縦方向のサイズを決定する。サイズ決定部15は、決定したサイズ、肩の中心位置、足先の位置、頭頂の位置とを含む人物範囲データ28を生成する。
画像認識部17は、ニューラルネットワークや、サポートベクターマシンなどのアルゴリズムを用いて、入力画像21における人物の有無を判断する。人物が入力画像21に含まれる場合、画像認識部17は、人物の存在する大まかな範囲を特定した対象領域データ25を作成する。対象領域データ25により特定される領域が、肩検出の対象となる。
メモリ16は、RAM(Random Access memory)などの記憶装置であり、肩候補データ24、対象領域データ25、及び探索範囲データ26を格納する。探索範囲データ26には、足先の位置及び頭頂の位置を探索する範囲を設定するための基準が記録されている。また、メモリ16は、エッジ抽出部11、肩検出部12、足先検出部13、頭頂検出部14、サイズ決定部15、及び画像認識部17が各々の処理を実行する際の作業領域として使用される。
[2.人物検出装置1の全体的な動作]
人物検出装置1は、入力画像21に含まれる人物の肩の中心、肩幅、足先の位置、頭頂の位置を検出することにより、人物の位置及びサイズを特定する。
図2は、人物検出装置1により検出される人物の肩と、足先と、頭頂との位置関係を示す図である。図2に示すように、人物3の肩31とは、腕32が胴体33に接続される部分から、首34の付け根までの部位をいう。人物3が正面を向いている場合、肩31は、略三角形状である。頭頂35は、直立している人物3の上端を指し、足先36は、直立している人物3の下端を指す。
図3は、人物検出装置1の動作を示すフローチャートである。人物検出装置1は、入力画像21に含まれる人物の大まかな領域を特定した対象領域データ25を作成する(ステップS1)。入力画像21は、カメラ(図示省略)により撮影された画像データ(フレーム)である。カメラは、例えば、自動車等の車両に搭載される。
対象領域データ25は、ニューラルネットワークなどのアルゴリズムを用いる画像認識部17により生成される。ニューラルネットワークを用いた人物検出では、検出された人物のサイズを特定することができないが、人物が検出された大まかな位置を特定することができる。画像認識部17は、人物が存在する領域を示す対象領域データ25を作成してメモリ16に格納する。
図4は、入力画像21の一例を示す図である。図4において、入力画像21は、後ろ向きに立つ3人の人物を含む。3人の人物をそれぞれ囲む枠21a〜21cは、画像認識部17により人物が存在すると判断された領域(対象領域)であり、対象領域データ25は、枠21a〜21cを特定する情報を含む。
以下、特に説明のない限り、枠21a内の人物の範囲を特定する場合における人物検出装置1の動作を説明する。
まず、人物検出装置1は、入力画像21に対してエッジ抽出処理を実行し(ステップS2)、横エッジ画像22及び縦エッジ画像23を生成する。人物検出装置1は、入力画像の垂直方向(縦方向)の画素値の勾配に基づいてエッジを抽出して横エッジ画像22を生成する。このため、横エッジ画像22では、入力画像21が有する横方向に延びるエッジが強調される。人物検出装置1は、入力画像の水平方向(横方向)の画素値の勾配に基づいてエッジを抽出して縦エッジ画像23を生成する。このため、縦エッジ画像23では、入力画像21が有する縦方向に延びるエッジが強調される。
図5は、図4に示す入力画像21から生成された横エッジ画像22を示す図である。図6は、図4に示す入力画像21から生成された縦エッジ画像23を示す図である。図5に示す横エッジ画像22では、3人の男性の肩付近のエッジや、3人の男性のシャツとパンツとの境界が強調されている。図6に示す縦エッジ画像23では、3人の男性の腕や、脚が強調されている。
人物検出装置1は、横エッジ画像22を用いて、対象領域データ25で特定された枠21a〜21cにおける人物の肩の中心及び肩幅を検出する(ステップS3)。ステップS3で検出された肩の中心及び肩幅は、肩候補データ24に記録される。ステップS3の詳細については、後述する。
人物検出装置1は、ステップS3で検出された肩の中心に対応する足先の位置を検出する(ステップS4)。足先の探索対象となる領域(足先探索領域)は、ステップS3で検出された肩の中心及び肩幅と、探索範囲データ26とに基づいて特定される。ステップS4の詳細については、後述する。
人物検出装置1は、ステップS3で検出された肩の中心に対応する頭頂の位置を検出する(ステップS5)。頭頂の探索対象となる領域(頭頂探索領域)が、ステップS3で検出された肩の中心及び肩幅と、探索範囲データ26とに基づいて特定される。ステップS5の詳細については、後述する。
人物検出装置1は、ステップS3〜S5の結果を用いて、枠21a〜21c内の人物のサイズを決定する(ステップS6)。人物検出装置1は、ステップS3で検出された肩幅に基づいて、人物の横方向のサイズを決定し、ステップS3,4で検出された頭頂の位置及び足先の位置に基づいて、人物の縦方向のサイズを決定する。ステップS6の詳細は、後述する。
[3.エッジ抽出処理(ステップS2)]
エッジ抽出部11は、入力画像21に対してバンドパスフィルタをかけることにより、入力画像21から横エッジ及び縦エッジを抽出する。エッジ抽出処理では、以下の式(1)が用いられる。
式(1)の上段において、x(n)は、入力画像21の画素値である。y(n)は、横エッジ画像22または縦エッジ画像23の画素値である。h(n)は、バンドパスフィルタを示す。αについては、後述する。横エッジの抽出に用いられるバンドパスフィルタh(n)と、縦エッジの抽出に用いられるバンドパスフィルタh(n)とは、互いに異なる。
式(1)の下段において、maxは、入力画像21の画素値の最大値である。αは、y(n)の最大値を255に設定するための正規化係数である。シグマ演算子による演算結果にαを乗じることにより、y(n)の最大値を255に設定することができる。
エッジ抽出部11は、入力画像21の垂直方向に並ぶ画素に対して上記式(1)を適用して、横エッジを抽出する。エッジ抽出部11は、入力画像21の水平方向に並ぶ画素に対して上記式(1)を適用して、縦エッジを抽出する。バンドパスフィルタh(n)を用いることにより、画像の本質的な特徴を示す低周波成分と、画像の微小な変化を示す高周波成分とが、入力画像21から取り除かれ、中間の周波数帯域の画像の変化がエッジとして抽出される。バンドパスフィルタh(n)として、奇数タップのフィルタを用いることができる。例えば、タップ数は、3,5,7,9タップのいずれかである。
[4.肩検出処理(ステップS3)]
図7は、図3に示す肩検出処理(ステップS3)のフローチャートである。肩検出処理(ステップS3)は、肩検出部12により実行される。
肩検出部12は、対象領域データ25に記録された枠21a〜21cの全てを、人物の肩を検出する範囲(肩検出範囲)として選択済みであるか否かを判断する(ステップS31)。枠21a〜21cの全てが選択されていない場合(ステップS31においてNo)、肩検出部12は、未選択の枠を1つ選択する(ステップS32)。初回の選択時には、枠21aが選択される。
肩検出部12は、肩尤度を枠21a内の画素ごとに計算する(ステップS33)。ステップS33の詳細については、後述する。
肩検出部12は、枠21a〜21cの全てを選択した場合(ステップS31においてYes)、後処理(ステップS34)を実行する。後処理(ステップS34)において、肩検出部12は、入力画像21の各画素の画素値を肩尤度に置換した肩尤度画像27を生成する(ステップS341)。また、肩検出部12は、生成した肩尤度画像27に対して、2値化処理(ステップS342)、膨張・縮退処理(ステップS343)、ラベリング処理(ステップS344)、肩幅候補選択処理(ステップS345)を実行する。ステップS34の詳細については、後述する。
[4.1.肩尤度計算処理(ステップS33)]
肩検出部12は、ステップS33において、枠21a内の各画素の肩尤度及び推定肩幅を計算する。肩尤度は、各画素が人物の肩の中心であろう度合いを示す数値であり、推定肩幅は、各画素が肩の中心である場合に推定される人物の肩幅である。画素が肩の中心となる可能性が高くなるにつれて、肩尤度は大きくなる。図8は、肩尤度の計算方法の概略を説明する図である。なお、図8に示す枠21a及び人物21mのサイズを、誇張して表示している。
図8において、入力画像21の左上頂点を原点、横方向をX軸、縦方向をY軸と仮定する。X軸の正方向は、右方向であり、Y軸の正方向は、下方向である。
STX、STYは、枠21aにおいて、最初に肩尤度が計算される画素P1のX座標、Y座標である。EDX、EDYは、枠21aにおいて、最後に肩尤度が計算される画素P4のX座標、Y座標である。winは、肩尤度を計算する際に暫定的に設定される肩幅(以下、「窓幅」と呼ぶ。)である。窓幅の最小値は、winsであり、窓幅の最大値は、wineである。窓幅の詳細については、後述する。
肩検出部12は、画素P1から右方向に並ぶ各画素の肩尤度を、左から順に計算する。右端の画素P2の肩尤度が計算された場合、肩検出部12は、画素P1の下に隣接する画素の肩尤度を計算する。このようにして、枠21aをスキャンすることにより、枠21a内の各画素の肩尤度が計算される。
図9は、肩尤度計算処理(ステップS33)のフローチャートである。肩検出部12は、肩尤度の計算対象となる画素(基準画素)のY座標jをSTYに設定する(ステップS331)。
肩検出部12は、Y座標jがEDY以下であるか否かを判断する(ステップS332)。Y座標jがEDY以下である場合(ステップS332にいてYes)、基準画素のX座標iが、STXに設定される(ステップS333)。初回の基準画素の設定時には、画素P1が、基準画素に設定される。
肩検出部12は、X座標iがEDX以下であるか否かを判断する(ステップS334)。X座標iがEDX以下である場合(ステップS334にいてYes)、肩検出部12は、基準画素の肩尤度及び推定肩幅を計算する(ステップS335)。ステップS335の詳細については、後述する。
次に、現在の基準画素の右隣の画素を次の基準画素に設定するために、X座標iがインクリメントされる(ステップS336)。インクリメントされたX座標iがEDX以下である場合(ステップS334においてYes)、肩検出部12は、ステップS335,S336を繰り返す。これにより、枠21a内の最上段の画素の肩尤度及び推定肩幅が順次計算される。以下、枠21a内の横方向に並ぶ画素の列を、「画素ライン」と呼ぶ。
一方、インクリメントされたX座標iがEDXよりも大きい場合(ステップS334においてNo)、肩検出部12は、次の画素ラインの各画素を基準画素に設定する。具体的には、肩検出部12は、Y座標jをインクリメントし(ステップS337)、ステップS332に戻る。Y座標jがEDY以下である場合(ステップS332においてYes)、肩検出部12は、X座標iをSTXに設定する(ステップS333)。これにより、次の画素ラインの左端の画素が、基準画素に設定される。肩検出部12は、Y座標jがEDYより大きくなるまで(ステップS332においてNo)、ステップS333〜S337を繰り返す。これにより、枠21a内の各画素の肩尤度及び推定肩幅が計算される。
ステップS332において、Y座標jがEDYよりも大きい場合(ステップS332においてNo)、肩検出部12は、枠21a内の全ての画素の肩尤度及び推定肩幅が計算されたと判断し、図9に示すフローチャートを終了する。
[4.2.肩尤度及び推定肩幅の計算処理(ステップS335)]
図10は、肩尤度及び推定肩幅の計算手順を説明する図である。図10を参照しながら、肩尤度及び推定肩幅の計算の概略を説明する。
図10に示す各画素は、横エッジ画像22の画素である。基準画素Pcを通る縦軸を中心にして線対称の左画素群LG及び右画素群RGを想定する。また、基準画素Pcを含む中心画素群CGを想定する。
左画素群LG及び右画素群RGの形状は、人間の肩の形状に対応する鉤型である。左画素群LGは、画素LP1〜LP5を有する。画素LP1〜LP4は、基準画素Pcと同じY座標を有し、左から右へ横方向に連続して並んでいる。画素LP5は、左端の画素LP1の直下に位置する。右画素群RGは、左画素群LGの左右反対の形状であり、画素RP1〜RP5を有する。画素RP1〜RP5は、画素LP1〜LP5にそれぞれ対応する。
中心画素群CGは、基準画素Pcと、基準画素Pcの左右に隣接する2つの画素とを底辺とした、長方形状の画素の集合である。中心画素群CGの縦方向のサイズは、画素5つ分である。
基準画素Pcから左画素群LGの左端の画素LP1までの距離を、間隔kと定義する。間隔kは、基準画素Pcから右画素群RGの右端の画素RP1までの距離と同じである。ただし、基準画素Pcから画素RP1までの距離が、基準画素Pcから画素LP1までの距離と異なることを妨げるものではない。
肩検出部12は、基準画素Pcから間隔kの位置にある左画素群LGの各画素を重み付け加算することにより、左演算値を生成する。肩検出部12は、基準画素Pcから間隔kの位置にある右画素群RGの各画素を重み付け加算することにより、右演算値を生成する。左演算値及び右演算値を加算した数値が、間隔kにおける肩尤度として得られる。
肩検出部12は、間隔kを、窓幅wins/2〜wine/2の範囲で変化させることにより、それぞれの間隔kにおける肩尤度(個別肩尤度)を計算する。各間隔kに対応する個別肩尤度のうち最大値が、基準画素pcの肩尤度として選択され、最大の個別肩尤度に対応する間隔kに基づいて推定肩幅が算出される。
図11は、基準画素Pcの肩尤度及び推定肩幅の計算処理(ステップS335)のフローチャートである。以下、図10及び図11を参照しながら、ステップS335を実行する肩検出部12の動作を説明する。
まず、肩検出部12は、基準画素Pcが肩の中心となり得るか否かを判断する。具体的には、肩検出部12は、中心画素群CGの全画素が予め設定されたしきい値よりも小さいか否かを判断する(ステップS371)。
中心画素群CGの全画素の画素値が、予め設定されたしきい値よりも小さい場合(ステップS371においてNo)、肩検出部12は、基準画素Pcが肩の中心とはならないと判断し、基準画素Pcの肩尤度sym(i,j)及び推定肩幅axj(i,j)を0に設定する(ステップS384)。
ここで、肩尤度sym(i,j)及び推定肩幅axj(i,j)が0に設定される理由を説明する。一般的に、人物の首と上半身の衣服との間には、横エッジが形成される。図10に示す各画素は、横エッジ画像22の画素であるため、基準画素Pcが肩の中心である場合、中心画素群CGの少なくとも1つの画素は、横方向に延びるエッジを含み、一定値以上の画素値を有すると考えられる。この考えに基づいて、中心画素群CGの少なくとも1つの画素が、しきい値以上の画素値を有する場合、基準画素Pcが、肩の中心である可能性があると判断される。一方、中心画素群CGの全画素が、しきい値よりも小さい画素値を有する場合、基準画素Pcは、肩の中心でないと判定され、基準画素Pcの肩尤度及び推定肩幅は、0に設定される。
中心画素群CGの少なくとも1つの画素値が、予め設定されたしきい値よりも大きい場合(ステップS371においてYes)、肩検出部12は、基準画素Pcが肩の中心となりうると判断する。そして、肩検出部12は、ステップS372〜S383を実行して、基準画素Pcの肩尤度及び推定肩幅を計算する。
肩検出部12は、間隔k、暫定肩尤度D、暫定肩幅Fを初期化する(ステップS372)。暫定肩尤度Dは、現時点までに計算された個別肩尤度の最大値である。間隔kの初期値は、最小窓幅(wins)の半分である。暫定肩幅Fは、暫定肩尤度Dに対応する間隔kを示す。ステップS372において、暫定肩尤度D及び暫定肩幅Fには、所定の初期値が設定される。
肩検出部12は、間隔kが最大窓幅(wine)の半分よりも小さいか否かを判断する(ステップS373)。間隔kが最大窓幅(wine)の半分よりも小さい場合(ステップS373においてYes)、肩検出部12は、ステップS374,S375を実行して、現在の間隔kに対応する個別肩尤度を計算する。
ステップS374において、肩検出部12は、左画素群LGの各画素を重み付け加算した左演算値SH_Lと、右画素群RGの各画素値を重み付け加算した右演算値SH_Rとを計算する。左演算値SH_L、右演算値SH_Rは、下記式(2)、(3)によりそれぞれ計算される。
式(2),(3)において、aは、画素LP2,LP3,LP5,RP2,RP3,RP5の重み付け係数であり、bは、画素LP4,RP4の重み付け係数である。画素LP1,RP1の重み付け係数は、1である。
肩検出部12は、右演算値SH_Rを左演算値SH_Lに加算して、現在の間隔kに対応する個別肩尤度SH_Cを計算する(ステップS375)。
肩検出部12は、個別肩尤度SH_Cが暫定肩尤度Dよりも大きいか否かを判断する(ステップS376)。個別肩尤度SH_Cが暫定肩尤度D以下である場合(ステップS376においてNo)、肩検出部12は、現在の左画素群LG及び右画素群RGの位置が人物21mの肩に一致していないと判断し、S379に進む。
一方、個別肩尤度SH_Cが暫定肩尤度Dよりも大きい場合(ステップS376においてYes)、肩検出部12は、暫定肩尤度Dを更新する条件が満たされているか否かを判断する(ステップS377)。具体的には、肩検出部12は、左演算値SH_Lと右演算値SH_Rとの間に極端な差が存在するか否か判断する。下記式(4)及び式(5)のいずれかが満たされている場合、肩検出部12は、極端な差がないため、暫定肩尤度Dを更新できると判断する。
式(4),(5)において、tは、2以上の整数である。t=2の場合、式(4)は、左演算値SH_Lが、右演算値SH_Rの半分より大きく、かつ、右演算値SH_Rよりも小さい場合、更新条件が満たされることを示している。式(5)は、右演算値SH_Rが、左演算値SH_Lの半分より大きく、かつ、左演算値SH_Lよりも小さい場合、更新条件が満たされることを示している。
式(4),(5)のいずれかが満たされている場合、肩検出部12は、左画素群LG及び右画素群RGの両者が、人物の両肩の形状に対応するエッジを有しているため、暫定肩尤度D及び暫定肩幅Fの更新条件が満たされていると判断する(ステップS377においてNo)。肩検出部12は、ステップS378に進む。
一方、式(4),(5)の両者とも満たされていない場合、肩検出部12は、左画素群LG及び右画素群RGの少なくとも一方が、人物の肩に対応するエッジを有していないため、更新条件が満たされていないと判断する(ステップS377においてYes)。この場合、肩検出部12は、次の間隔kの個別肩尤度SH_Cを計算するために、ステップS379に進む。
更新条件が満たされている場合(ステップS377においてNo)、肩検出部12は、暫定肩尤度DをステップS375で計算した個別肩尤度SH_Cに更新し、暫定肩幅Fを現在の間隔kに更新する(ステップS378)。そして、肩検出部12は、間隔kをインクリメントする(ステップS379)。
肩検出部12は、間隔kが最大窓幅wineの半分を超えるまで(ステップS373においてNo)、ステップS374〜S379を繰り返す。これにより、wins/2〜wine/2の範囲において、最大の個別肩尤度SH_Cと、最大の個別肩尤度SH_Cに対応する間隔kとが特定される。
間隔kが最大窓幅wineの半分よりも大きい場合(ステップS373においてNo)、肩検出部12は、個別肩尤度SH_Cの算出が終了したと判断し、暫定肩幅Fに基づいて、基準画素Pcの推定肩幅axjを算出する(ステップS380)。基準画素Pcにおける推定肩幅axj(i,j)は、下記式(6)により求められる。すなわち、推定肩幅axj(i,j)は、暫定肩幅Fを2倍して1を加算した値である。
次に、肩検出部12は、暫定肩幅Fが0であるか否かを判断する(ステップS381)。暫定肩幅Fが0よりも大きい場合(ステップS381においてNo)、肩検出部12は、暫定肩尤度Dを基準画素Pcの肩尤度sym(i,j)として設定する(ステップS382)。暫定肩幅Fが0である場合(ステップS381においてYes)、暫定肩尤度Dの初期値を超える個別肩尤度が算出されなかったため、有意な肩幅を得られなかったことを示す。この場合、肩検出部12は、基準画素Pcが肩の中心でないと判断し、基準画素Pcの肩尤度sym(i,j)を0に設定する(ステップS383)。
以上、基準画素Pcの肩尤度及び推定肩幅の計算処理を説明した。枠21a内の各画素の肩尤度及び推定肩幅が、上述の処理に基づいて実行される。
[4.3.後処理(ステップS34)]
図7に示すように、肩検出部12は、図7に示すステップS31〜S33を繰り返し実行することにより、枠21a〜21c内の横エッジ画像22の各画素の肩尤度及び推定肩幅を計算する。全ての枠が選択された場合(ステップS31においてYes)、肩検出部12は、枠21a〜21cの肩尤度を用いて、肩尤度画像27を生成する(ステップS341)。
図12は、図5に示す横エッジ画像22に基づいて生成された肩尤度画像27を示す図である。図12に示す枠27a〜27cは、図4に示す枠21a〜21cにそれぞれ対応する。肩検出部12は、枠27a〜27c内の各画素の画素値をステップS335で得られた肩尤度に設定する。枠27a〜27cの外側に位置する画素の画素値は、0に設定される。これにより、肩尤度画像27が生成される。
次に、肩検出部12は、肩尤度画像27を2値化し(ステップS342)、2値化された肩尤度画像27に対して縮退・膨張処理を実行する(ステップS343)。これにより、2値化された肩尤度画像27に含まれる細かいパターンが除去される。肩検出部12は、細かいパターンが除去された肩尤度画像27に対してラベリング処理を実行する(ステップS344)。これにより、0よりも大きい肩尤度が集まっている領域に対してユニークな番号が割り当てられる。
肩検出部12は、ラベリングされた領域のうち一定値以下の面積を有する領域を削除し、一定値よりも大きい面積の領域のみを残す選択処理を実行する(ステップS345)。肩検出部12は、ステップS345により選択された領域R1〜R5(図12参照)を、人物の肩として検出する。
肩検出部12は、各領域R1〜R5ごとに、肩幅と肩の中心を決定する。例えば、領域R1では、領域R1内の画素のうち最大の肩尤度を有する画素が、領域R1における肩の中心として特定される。中心として特定された画素の推定肩幅axj(i,j)が、領域R1における肩幅として決定される。
なお、左画素群LG及び右画素群RGの形状が鉤型である場合を例に説明したが、左画素群LG及び右画素群RGは、他の形状であってもよい。例えば、右上方向に延びる直線を形成する複数の画素を、左画素群LGとし、左上方向に延びる直線を形成する複数の画素を、右画素群RGとしてもよい。あるいは、左画素群LG及び右画素群RGは、曲線を形成してもよい。つまり、左画素群LG及び右画素群RGは、人物の肩の形状に合うように設定されればよい。
[5.足先検出処理(ステップS4)]
図13は、足先検出処理(ステップS4)を示すフローチャートである。足先検出部13は、肩検出処理(ステップS3)により肩が存在すると判定された領域R1〜R5(図12参照)の各々に対して足先検出処理(ステップS4)を実行する。これにより、領域R1〜R5の肩の中心に対応する足先の位置が特定される。足先検出処理では、横エッジ画像22が用いられる。以下、領域R1に対応する足先の位置を特定する場合を例に説明する。
図13に示すように、足先検出部13は、探索範囲データ26と、肩候補データ24に記録された領域R1の肩の中心座標及び肩幅に基づいて、領域R1に対応する足先探索領域を決定する(ステップS41)。
足先検出部13は、足先探索領域内の横エッジ画像22の画素値を、横方向に積算することにより、足先値を計算する(ステップS42)。つまり、足先値は、横方向に配列された画素ラインごとに生成される。足先値は、足先探索領域における足先の位置を特定するために、ステップS43で使用される。
足先検出部13は、ステップS42で求められた足先値に基づいて、領域R1に対応する足先位置を特定する(ステップS43)。具体的には、足先検出部13は、ステップS42により積算された足先値のうち、所定の条件を満たす足先値を特定する。所定の条件を満たす足先値のうち、領域R1の肩の中心に一番近い足先値を有する画素ラインのY座標が、領域R1に対応する足先の位置として特定される。
以下、足先検出処理の各ステップについて詳しく説明する。
[5.1.足先探索領域の決定(ステップS41)]
図14は、領域R1における肩の中心PSHと、足先探索領域TE1との位置関係を示す図である。図14に示すように、足先探索領域TE1は、長方形の領域として定義される。肩の中心PSHの座標を、(XSH,YSH)と仮定した場合、足先探索領域TE1の左上頂点の画素PTE1のX座標XPTE1と、Y座標YPTE1とは、下記式(7)で表され、右下頂点の画素PTE2のX座標XPTE2と、Y座標YPTE2とは、下記式(8)で表される。
上記式(7),(8)において、SH_Wは、領域R1の肩幅であり、P,Q,nは、任意の定数である。好ましくは、Pは、2であり、Qは、3である。nは、2以上5以下の整数である。
上記式(7),(8)は、探索範囲データ26に記録されている。足先検出部13は、上記式(7),(8)を用いて足先探索領域TE1を決定し、後述する足先値計算処理(ステップS42)を実行する。
[5.2.足先値計算処理(ステップS42)]
図15は、足先探索領域TE1における足先値の計算方法を説明する図である。図15において、足先探索領域TE1内の画素の表示を一部省略している。
図15に示すように、足先検出部13は、足先探索領域TE1内の横エッジ画像22の各画素の画素値を画素ラインごとに積算することにより、足先値を計算する。画素ラインとは、足先探索領域内の横方向に1列に並ぶ画素の配列である。例えば、足先検出部13は、画素ライン71に含まれる各画素の画素値を積算することにより、画素ライン71の足先値を計算する。
図16は、足先値計算処理(ステップS42)のフローチャートである。足先検出部13は、足先探索領域TE1の上から順に、各画素ラインの足先値を計算する。以下、図15及び図16を参照しながら、足先値の計算手順について詳しく説明する。
足先検出部13は、画素ライン71の足先値を計算するために、足先値の計算対象の画素ラインのY座標として、YPTE1を設定する(ステップS421)。足先検出部13は、計算対象の画素ラインが足先探索領域TE1内であるか否かを判断するために、設定された画素ラインのY座標がYPTE2以下であるか否かを判断する(ステップS422)。
計算対象の画素ラインのY座標がYPTE2以下である場合(ステップS422においてYes)、足先検出部13は、積算対象の画素を決定するために、積算対象の画素のX座標をXPTE1に設定する(ステップS423)。ステップS423が最初に実行された場合、積算対象の画素は、画素PTE1に設定される。
足先検出部13は、画素ライン71の足先値を0に初期化し(ステップS424)、積算対象の画素のX座標が足先探索領域TE1内であるか否かを判断するために、設定されたX座標がXPTE2以下であるか否かを判断する(ステップS425)。
積算対象の画素のX座標がXPTE2以下である場合(ステップS425においてYes)、足先検出部13は、積算対象の横エッジ画像22の画素の画素値を足先値に加算する(ステップS426)。足先検出部13は、積算対象の画素のX座標をインクリメントする(ステップS427)。これにより、現在の積算対象の画素の右に隣接する画素が、新たな積算対象に設定される。
足先検出部13は、積算対象の画素のX座標がXPTE2よりも大きくなるまで(ステップS425においてNo)、ステップS426,S427を繰り返す。これにより、画素ライン71の足先値が計算される。
積算対象の画素のX座標がXPTE2よりも大きい場合(ステップS425においてNo)、足先検出部13は、計算対象の画素ラインを変更するために、計算対象の画素ラインのY座標をインクリメントする(ステップS428)。これにより、現在の計算対象の画素ラインの下に隣接する画素ラインが、新たな計算対象に設定される。インクリメントされたY座標がYPTE2以下である場合(ステップS422においてYes)、次の画素ラインの足先値の計算を開始するために、積算対象の画素のX座標がXPTE1に設定される(ステップS423)。
以下、計算対象の画素ラインのY座標がYPTE2よりも大きくなるまで(ステップS422においてNo)、ステップS422〜S428が繰り返される。この結果、足先探索領域TE1内の各画素ラインの足先値が計算される。
[5.3.足先位置特定処理(ステップS43)]
足先検出部13は、ステップS42で計算された各画素ラインの足先値を用いて、領域R1の肩の中心PSHに対応する足先の位置を特定する。まず、図15を参照しながら、足先の位置の決定手順の概略を説明する。
足先検出部13が、判定対象として画素ライン73を選択したと仮定する。足先検出部13は、画素ライン73の上下に隣接する画素ライン72,74のうち、足先値の低い画素ラインを決定する。ここでは、画素ライン72が決定されたと仮定する。
足先検出部13は、判定対象の画素ライン73の足先値が画素ライン72の足先値のs倍よりも大きく、かつ、判定対象の画素ライン73の足先値が画素ライン71〜75の平均値のs倍よりも大きい場合、画素ライン73を、肩の中心PSHの足先の候補として決定する。
足先検出部13は、足先探索領域TE1内の各画素ラインが上記の条件を満たすか否かを判断することにより、足先の候補となる画素ラインを決定する。候補に決定された画素ラインのうち、肩の中心PSHに最も近い画素ラインのY座標が、肩の中心PSHに対応する足先の位置として特定される。
図17は、足先位置特定処理(ステップS43)のフローチャートである。以下、図15及び図17を参照しながら、足先位置特定処理(ステップS43)を実行する足先検出部13の動作を説明する。
足先検出部13は、足先検出フラグFrsを0に初期化する(ステップS431)。足先検出フラグFrsは、足先位置が足先探索領域TE1から特定されたか否かを示し、後述するサイズ決定処理(ステップS6)で用いられる。足先検出フラグFrsが0である場合、足先の位置が特定されなかったことを示し、足先検出フラグFrsが1以上である場合、足先の位置が特定されたことを示す。
足先検出部13は、足先探索領域TE1内の各画素ラインの足先値の平均を算出する(ステップS432)。
足先検出部13は、足先探索領域TE1の下側から順に、画素ラインが足先の条件を満たすか否かを判定する。足先検出部13は、足先探索領域TE1の画素ラインの中から、判定対象の画素ラインを選択する(ステップS433)。初回の選択時には、足先探索領域TE1において下から2番目に位置する画素ラインが選択される。一番下の画素ライン75には、比較の対象となる下側の画素ラインが存在しないため、画素ライン75は、判定対象として選択されない。同様の理由で、足先探索領域TE1の一番上に位置する画素ラインは、判定対象として選択されない。
足先検出部13は、選択された画素ラインが比較対象の画素ラインを有するか否かを判断するために、選択された画素ラインのY座標がYPTE1より大きいか否かを判断する(ステップS434)。
選択された画素ラインのY座標がYPTE1より大きい場合(ステップS434においてYes)、足先検出部13は、判定対象の画素ラインの上下に隣接する画素ラインが有する足先値の内、小さい方の足先値を特定する(ステップS435)。判定対象の画素ラインの足先値が、特定された足先値のs倍より大きい場合(ステップS436においてYes)、足先検出部13は、ステップS437に進む。一方、判定対象の画素ラインの足先値が、特定された足先値のs倍以下である場合(ステップS436においてNo)、足先検出部13は、判定対象の画素ラインが足先の条件を満たさないと判断し、次の画素ラインを選択するためにステップS440に進む。
足先検出部13は、ステップS437において、判定対象の画素ラインの足先値が足先値の平均のs倍よりも大きいか否かを判断する。判定対象の画素ラインの足先値が足先値の平均のs倍以下である場合(ステップS437においてNo)、足先検出部13は、判定対象の画素ラインが足先の条件を満たさないと判断し、次の画素ラインを選択するためにステップS440に進む。
一方、判定対象の画素ラインの足先値が足先値の平均のs倍よりも大きい場合(ステップS437においてYes)、足先検出部13は、判定対象の画素ラインが足先の条件を満たすと判断し、足先検出フラグFrsをインクリメントする(ステップS438)。足先検出部13は、判定対象の画素ラインのY座標を足先位置TEyとして登録する(ステップS439)。
足先検出部13は、次の画素ラインを判定対象に選択するために、判定対象の画素ラインのY座標をデクリメントする(ステップS440)。デクリメントされたY座標に基づいて、判定対象の画素ラインが新たに選択される(ステップS433)。Y座標がデクリメントされる理由は、上述のように、画素ラインが足先の条件を満たすか否かを、足先探索領域TE1の下側から順に判断するためである。
以下、足先検出部13は、判定対象の画素ラインのY座標がYPTE1以下となるまで(ステップS434においてNo)、ステップS435〜S440を繰り返す。これにより、足先位置TEyは、足先の条件を満たす画素ラインが特定される度に更新される(ステップS439)。この結果、足先検出部13は、足先の条件を満たす画素ラインのうち、肩の中心PSHに最も近い画素ラインを足先位置として特定することができる。
[6.頭頂検出処理(ステップS5)]
[6.1.頭頂検出処理(ステップS5)の概略]
図18は、頭頂検出処理(ステップS5)を示すフローチャートである。頭頂検出部14は、肩検出処理(ステップS3)により肩が存在すると判定された領域R1〜R5(図12参照)の各々に対して頭頂検出処理(ステップS5)を実行する。これにより、領域R1〜R5の肩の中心に対応する頭頂の位置が特定される。頭頂検出処理では、横エッジ画像22が用いられる。以下、領域R1に対応する頭頂の位置を特定する場合を例に説明する。
頭頂検出処理(ステップS5)は、頭頂の位置を探索する頭頂探索領域の決定方法などを除いて、上述の足先検出処理(ステップS4)と同様である。従って、頭頂検出処理(ステップS5)の説明において、足先検出処理(ステップS4)と共通する説明を一部省略する。
図18に示すように、足先検出部13は、領域R1の肩の中心PSHに基づいて、領域R1に対応する頭頂探索領域を決定する(ステップS51)。
図19は、肩の中心PSHと、頭頂探索領域HT1との位置関係を示す図である。図19に示すように、頭頂探索領域HT1は、長方形の領域として定義される。頭頂探索領域HT1の左上頂点の画素PHT1のX座標XPHT1と、Y座標YPHT1とは、下記式(8)で表され、右下頂点の画素PHT2のX座標XPHT2と、Y座標YPHT2とは、下記式(9)で表される。
上記式(9),(10)において、n,mは、任意の定数である。定数nは、式(7),(8)で用いられる定数nと共通である。mは、3以上6以下の整数である。式(9),(10)は、探索範囲データ26に記録されている。頭頂検出部14は、上記式(9),(10)を用いて頭頂探索領域HT1を決定し、後述する頭頂値計算処理(ステップS52)を実行する。
頭頂検出部14は、頭頂探索領域HT1内の横エッジ画像22の画素値を、横方向に積算することにより、頭頂値を計算する(ステップS52)。頭頂値は、頭頂探索領域HT1における頭頂の位置を特定するために、ステップS53で使用される。
頭頂検出部14は、ステップS52で求められた頭頂値に基づいて、領域R1に対応する頭頂位置を特定する(ステップS53)。頭頂検出部14は、ステップS52により積算された各画素ラインの頭頂値のうち、足先検出処理(ステップS4)で用いた条件と同じ条件を有する画素ラインの頭頂値を特定する。特定された頭頂値を有する画素ラインのうち、領域R1の肩の中心PSHに一番近い画素ラインのY座標が、領域R1に対応する頭頂の位置として特定される。
[6.2.頭頂値の計算(ステップS52)]
図20は、頭頂値計算処理(ステップS52)のフローチャートである。頭頂検出部14により検出される頭頂値の計算方法は、計算対象の領域が頭頂探索領域HT1となる点を除き、上述した足先値の計算方法と同様である。つまり、図20のステップS521〜S528は、図16のステップS421〜S428に対応する。
頭頂検出部14は、頭頂値の計算対象の画素ラインのY座標として、YPHT1を設定する(ステップS521)。頭頂検出部14は、設定された画素ラインのY座標がYPHT2以下であるか否かを判断する(ステップS522)。
計算対象の画素ラインのY座標がYPHT2以下である場合(ステップS522においてYes)、頭頂検出部14は、積算対象の画素のX座標をXPHT1に決定する(ステップS523)。ステップS523が最初に実行された場合、積算対象の画素は、画素PHT1に設定される。
頭頂検出部14は、計算対象の画素ラインの頭頂値を初期化する(ステップS524)。積算対象の画素のX座標がXPHT2以下である場合(ステップS525においてYes)、頭頂検出部14は、積算対象の横エッジ画像22の画素の画素値を頭頂値に加算する(ステップS526)。頭頂検出部14は、は、積算対象の画素のX座標をインクリメントする(ステップS527)。これにより、現在の積算対象の画素の右に隣接する画素が、新たな積算対象に設定される。
頭頂検出部14は、積算対象の画素のX座標がXPHT2よりも大きくなるまで(ステップS525においてNo)、ステップS526,S527を繰り返す。積算対象の画素のX座標がXPHT2よりも大きい場合(ステップS525においてNo)、頭頂検出部14は、計算対象の画素ラインのY座標をインクリメントする(ステップS528)。これにより、現在の計算対象の画素ラインの下に隣接する画素ラインが、新たな計算対象に設定される。次の画素ラインの頭頂値の計算を開始するために、積算対象の画素のX座標がXPHT1に設定される(ステップS523)。
以下、計算対象の画素ラインのY座標がYPHT2よりも大きくなるまで(ステップS522においてNo)、ステップS522〜S528が繰り返される。この結果、頭頂探索領域HT1内の各画素ラインの頭頂値が計算される。
[6.3.頭頂位置検出処理(ステップS53)]
頭頂検出部14は、ステップS52で計算された各画素ラインの頭頂値を用いて、領域R1の肩の中心PSHに対応する頭頂の位置を決定する。頭頂の位置の決定方法は、足先の位置の決定方法と同様である。
図21は、頭頂位置検出処理(ステップS53)のフローチャートである。図21に示すステップS531〜540は、図17に示すステップS431〜S440に対応する。ただし、頭頂検出部14は、頭頂探索領域HT1の上側の画素ラインから順に、画素ラインが頭頂の条件を満たすか否かを判定する。
頭頂検出部14は、頭頂検出フラグHrsを0に初期化する(ステップS531)。頭頂検出フラグHrsは、頭頂位置が頭頂探索領域HT1から特定されたか否かを示し、後述するサイズ決定処理(ステップS6)で用いられる。頭頂検出フラグHrsが0である場合、頭頂の位置が特定されなかったことを示し、頭頂検出フラグHrsが1以上である場合、頭頂の位置が特定されたことを示す。
頭頂検出部14は、頭頂探索領域HT1内の各画素ラインの頭頂値の平均を算出する(ステップS532)。頭頂検出部14は、頭頂探索領域HT1の画素ラインの中から、判定対象の画素ラインを選択する(ステップS533)。初回の選択時には、頭頂探索領域HT1の上から2番目に位置する画素ラインが選択される。
頭頂検出部14は、判定対象の画素ラインのY座標がYPHT2より小さいか否かを判断する(ステップS534)。判定対象のY座標がYPHT2より小さい場合(ステップS534においてYes)、頭頂検出部14は、判定対象の画素ラインの上下に隣接する画素ラインが有する頭頂値のうち、小さいほうの頭頂値を特定する(ステップS535)。判定対象の画素ラインの頭頂値が特定された頭頂値のs倍より大きい場合(ステップS536においてYes)、頭頂検出部14は、ステップS537に進む。一方、判定対象の画素ラインの頭頂値が特定された頭頂値のs倍以下である場合(ステップS536においてNo)、頭頂検出部14は、判定対象の画素ラインが頭頂の条件を満たさないと判断し、次の画素ラインを選択するためにステップS540に進む。
頭頂検出部14は、判定対象の画素ラインの頭頂値が頭頂値の平均のs倍以下である場合(ステップS537においてNo)、頭頂検出部14は、次の画素ラインを選択するためにステップS540に進む。一方、判定対象の画素ラインの頭頂値が頭頂値の平均のs倍よりも大きい場合(ステップS537においてYes)、頭頂検出部14は、判定対象の画素ラインが頭頂の条件を満たすと判断し、頭頂検出フラグHrsをインクリメントする(ステップS538)。頭頂検出部14は、判定対象の画素ラインのY座標を頭頂位置HTyとして登録する(ステップS539)。
頭頂検出部14は、次の画素ラインを判定対象に選択するために、判定対象の画素ラインのY座標をインクリメントする(ステップS540)。インクリメントされたY座標に基づいて、判定対象の画素ラインが新たに選択される(ステップS533)。
以下、頭頂検出部14は、判定対象の画素ラインのY座標がYPHT2以上となるまで(ステップS534においてNo)、ステップS535〜S540を繰り返す。これにより、頭頂位置HTyは、頭頂の条件を満たす画素ラインが特定される度に更新される(ステップS539)。この結果、頭頂検出部14は、頭頂の条件を満たす画素ラインのうち、肩の中心PSHに最も近い画素ラインを頭頂位置として特定することができる。
[7.サイズ決定処理(ステップS6)]
図22は、図3に示すサイズ決定処理(ステップS6)のフローチャートである。以下、図22を参照しながら、サイズ決定処理(ステップS6)を説明する。
サイズ決定部15は、各領域R1〜R5における肩の中心の位置、肩幅、足先の位置及び頭頂の位置に基づいて、領域R1〜R5の各々に対応する人物の範囲を決定する(ステップS61)。
サイズ決定部15は、各領域R1〜R5に対応する人物の範囲が、重複するか否かを判定する(ステップS62)。複数の人物の範囲が重複する場合、サイズ決定部は、いずれか1つの人物の範囲を選択し、選択されなかった人物の範囲を消去する。
[7.1.人物範囲決定(ステップS61)]
図23は、人物範囲決定処理(ステップS61)のフローチャートである。サイズ決定部15は、領域R1〜R5の各々に対して人物範囲決定処理(ステップS61)を実行することにより、領域R1〜R5に対応する人物範囲データ28を生成する。
以下、領域R1に対応する人物範囲を決定する場合を例にして、人物範囲決定処理(ステップS61)について詳しく説明する。サイズ決定部15は、領域R1の肩幅を、領域R1に対応する人物の横サイズに決定する(ステップS611)。
次に、サイズ決定部15は、領域R1の足先検出フラグFrsが0よりも大きいか否かを判断する(ステップS612)。足先検出フラグFrsが0よりも大きい場合(ステップS612においてYes)、領域R1の肩の中心PSHに対応する足先の位置が、足先検出処理(ステップS4)により特定されたことを示す。この場合、サイズ決定部15は、足先検出処理(ステップS4)により特定された足先位置TEyの使用を決定する(ステップS613)。
一方、領域R1の足先検出フラグFrsが0である場合(ステップS612においてNo)、領域R1の肩の中心PSHに対応する足先の位置が、足先検出処理(ステップS4)により特定されなかったことを示す。この場合、サイズ決定部15は、領域R1の肩の中心PSH及び肩幅に基づいて、足先位置を推定する(ステップS614)。例えば、サイズ決定部15は、足先位置の推定用に予め設定された係数を領域R1の肩幅に乗じ、肩の中心PSHのY座標YSHに乗算値を加算することにより、足先位置を得ることができる。
次に、サイズ決定部15は、領域R1の頭頂検出フラグHrsが0よりも大きいか否かを判断する(ステップS615)。頭頂検出フラグHrsが0よりも大きい場合(ステップS615においてYes)、領域R1の肩の中心PSHに対応する頭頂の位置が、頭頂検出処理(ステップS5)により特定されたことを示す。この場合、サイズ決定部15は、頭頂検出処理(ステップS5)により特定された頭頂位置HTyの使用を決定する(ステップS616)。
一方、領域R1の頭頂検出フラグHrsが0である場合(ステップS615においてNo)、領域R1の肩の中心PSHに対応する頭頂の位置が、頭頂検出処理(ステップS5)により特定されなかったことを示す。この場合、サイズ決定部15は、ステップS614と同様の方法で、頭頂位置を推定する(ステップS617)。頭頂位置の推定用に予め設定された係数は、足先位置推定用の係数と異なる値を有する。
サイズ決定部15は、足先位置と頭頂位置とに基づいて、領域R1に対応する人物の縦サイズを決定する(ステップS618)。具体的には、頭頂位置のY座標を足先位置のY座標から減算することにより、縦サイズを求めることができる。サイズ決定部15は、領域R1の肩の中心PSH,肩幅、足先位置TEy,頭頂位置HTy、横サイズ及び縦サイズに基づいて、領域R1に対応する人物範囲を決定し、領域R1の肩の中心PSH,肩幅、足先位置TEy,頭頂位置HTy、横サイズ及び縦サイズを含む人物範囲データ28を生成する。同様にして、領域R2〜R5に対応する人物範囲データ28が作成される。
[7.2.重複判定処理(ステップS62)]
まず、重複判定処理(ステップS62)を実行する理由について説明する。図12に示すように、枠27aにおいて、肩幅を示す2つの領域R1,R2が特定されている。これらの領域ごとに人物の範囲が特定されることにより、枠27aにおいて、複数の人物範囲が特定される。しかし、図4に示す枠21a(枠27aに対応)の中には、1人の人物21mしか存在していない。このように、同じ枠内において2つの肩幅が検出されることにより、1人の人物が別々の人物として検出される場合がある。サイズ決定部15は、重複判定処理(ステップS62)を実行することにより、1人の人物を誤って複数の人物として検出することを防止する。
図24は、重複判定処理(ステップS62)のフローチャートである。図24に示すように、サイズ決定部15は、領域R1〜R5に対応する人物範囲の中で、重複する人物範囲が存在するか否かを判断する(ステップS621)。重複する人物範囲が存在する場合(ステップS621においてYes)、サイズ決定部15は、重複する人物の範囲のうち、面積の一番広い人物範囲に対応する人物範囲データ28を保持し、その他の人物範囲データ28を消去する(ステップS622)。また、サイズ決定部15は、重複のない人物範囲データ28をそのまま保持する。
次に、サイズ決定部15は、現在保持している人物範囲データ28のうち、縦サイズと横サイズとの比率が一定の範囲内にない人物範囲データ28を消去する(ステップS623)。一定の範囲は、一般的な人物の縦サイズと横サイズとの比率に基づいて決定される。縦サイズとの横サイズとの比率が一定の範囲内に存在しない場合、ステップS61で特定された人物範囲は、人物でないものを誤って人物として検出した結果であると判断される。サイズ決定部15は、消去されなかった人物範囲データ28を外部に出力する。
以上説明したように、本実施の形態の人物検出装置1は、入力画像21から人物の肩の中心及び肩幅を検出し、検出された肩の中心及び肩幅に基づいて、足先の位置及び頭頂の位置を特定する。検出された肩幅に基づいて、人物の横サイズが決定され、検出された足先の位置及び頭頂の位置に基づいて、人物の縦サイズが決定される。これにより、入力画像21に含まれる人物の範囲を特定することができる。
上記実施の形態では、画像認識部17が対象領域データ25を作成し、対象領域データ25で定義された枠21a〜21c内から人物の範囲を特定する例を説明したが、これに限られない。人物検出装置1は、対象領域データ25を使用せずに、入力画像21の全体から肩の中心位置及び肩幅を検出してもよい。
上記実施の形態では、肩の水平方向の対称性に基づいて、肩の中心位置及び肩幅を入力画像21から検出する例を説明したが、これに限られない。人物検出装置1は、他の一般的に画像認識処理を用いて、肩の中心位置及び肩幅を求めてもよい。
上記実施の形態で説明した人物検出装置1において、各機能ブロックは、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されてもよい。集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
また、上記実施の形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記実施の形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。なお、上記実施の形態に係る人物検出装置1をハードウェアにより実現する場合、各処理を行うためのタイミング調整を行う必要があるのは言うまでもない。上記実施形態においては、説明便宜のため、実際のハードウェア設計で生じる各種信号のタイミング調整の詳細については省略している。
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリを挙げることができる。
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。