(57)【要約】【課題】画像に含まれる人物の特定の部位を検出することができる人物検出装置を提供することを課題とする。【解決手段】肩検出部１２は、入力画像２１に含まれる人物の肩の位置及び肩幅を検出する。胴検出部１５は、検出された肩の位置及び肩幅に基づいて、胴探索領域ＢＤ１を決定する。胴検出部１５は、胴探索領域ＢＤ１内の各画素を基準画素に順次指定する。胴検出部１５は、基準画素の左右に位置する所定形状の左画素群ＬＧ２及び右画素群ＲＧ２を特定し、左画素群ＬＧ２及び右画素群ＲＧ２に含まれる画素値に基づいて、基準画素が人物の胴の中心であろう胴尤度を計算する。胴検出部１５は、胴探索領域ＢＤ１において縦方向に配列された画素のカラムごとに胴尤度を積算して胴積算値を生成する。胴探索領域ＢＤ１に含まれるいずれか１つのカラムの胴積算値が所定条件を満たす場合、人物の胴が存在すると判断される。【選択図】図２３
2014186524.tif 000002
【特許請求の範囲】
【請求項１】
入力画像に含まれる人物の肩の位置及び肩幅を前記入力画像から検出する肩検出部と、
前記肩検出部により検出された肩の位置及び肩幅に基づいて、前記人物の胴の探索対象となる第１領域を決定する第１領域決定部と、
前記第１領域内の各画素を基準画素に順次指定する指定部と、
前記基準画素の左右に位置する所定形状の２つの画素群を特定し、前記２つの画素群に含まれる画素の画素値に基づいて前記基準画素が前記人物の胴の中心であろう胴尤度を計算する尤度計算部と、
前記第１領域において縦方向に配列された画素のカラムごとに胴尤度を積算して胴積算値を生成し、前記第１領域に含まれるいずれか１つのカラムの胴積算値が所定条件を満たす場合、前記人物の胴が存在すると判断する胴判断部と、
を備える人物検出装置。
【請求項２】
請求項１に記載の人物検出装置であって、
前記胴判断部は、各カラムの胴積算値と前記第１領域に含まれるカラムの胴積算値のうち最大の胴積算値との関係が第１の関係を満たす場合、前記人物の胴が存在すると判断する人物検出装置。
【請求項３】
請求項１または請求項２に記載の人物検出装置であって、
前記胴判断部は、
前記第１領域に含まれるカラムの胴積算値のうち最大の胴積算値を有するカラムの左右に位置する２つのカラムを特定し、特定された２つのカラムのうち胴積算値の小さいカラムを選択する選択部、
を含み、
前記胴判断部は、前記最大の胴積算値と前記選択部により選択されたカラムの胴積算値との関係が第２の関係を満たす場合、前記人物の胴が存在すると判断する人物検出装置。
【請求項４】
請求項１ないし請求項３のいずれかに記載の人物検出装置であって、さらに、
前記２つの画素群間の距離に基づいて、前記基準画素が胴の中心である場合における胴幅を推定する推定部と、
前記第１領域に含まれる各画素で推定された胴幅のうち最大の胴幅を前記人物の胴幅に決定し、前記最大の胴幅を有する画素の位置を前記人物の胴の中心に決定する中心決定部と、
を備える人物検出装置。
【請求項５】
請求項４に記載の人物検出装置であって、さらに、
前記第１領域に含まれる第２領域を、最大の胴積算値を有するカラムの位置に基づいて決定する第２領域決定部、
を含み、
前記中心決定部は、前記第２領域に含まれる画素で推定された胴幅のうち最大の胴幅を前記人物の胴幅に決定する人物検出装置。
【請求項６】
請求項４または請求項５に記載の人物検出装置であって、
前記尤度計算部は、
前記２つの画素群間の距離が異なるように、前記２つの画素群の配置パターンを２つ以上設定する配置設定部と、
各配置パターンに対応する２つの画素群に含まれる画素の画素値に基づいて各配置パターンに対応する胴尤度を計算する個別尤度計算部と、
各配置パターンに対応する胴尤度のうち最大の胴尤度を前記基準画素の胴尤度として選択する胴尤度選択部と、
を含み、
前記推定部は、最大の胴尤度に対応する配置パターンにより特定される２つの画素群間の距離に基づいて、前記基準画素の胴幅を推定する人物検出装置。
【請求項７】
請求項１ないし請求項６のいずれかに記載の人物検出装置であって、さらに、
前記２つの画素群間の距離に基づいて、前記人物の胴幅を検出する胴幅検出部と、
前記肩検出部により検出された肩の位置及び肩幅に基づいて、前記人物の頭頂位置を検出する頭頂検出部と、
前記肩検出部により検出された肩の位置及び肩幅に基づいて、前記人物の足先位置を検出する足先検出部と、
前記肩検出部により検出された肩幅及び前記胴幅検出部により検出された胴幅に基づいて、前記人物の横サイズを決定する横サイズ決定部と、
前記頭頂検出部により検出された頭頂位置及び前記足先検出部により検出された足先位置に基づいて前記人物の縦サイズを決定する縦サイズ決定部と、
を備える人物検出装置。
【請求項８】
請求項７に記載の人物検出装置であって、さらに、
前記肩検出部により検出された肩の位置及び肩幅に基づいて、前記人物の脚を検出する脚検出部と、
前記人物の肩幅、前記人物の胴幅、前記人物の脚、前記人物の頭頂位置、及び前記人物の足先位置の検出結果に基づいて、前記人物の確度を計算する確度計算部と、
を備える人物検出装置。
【請求項９】
請求項７または請求項８に記載の人物検出装置であって、さらに、
前記肩検出部により検出された肩の位置及び肩幅と、前記足先検出部により検出された足先位置と、前記頭頂検出部により検出された頭頂位置とに基づいて、前記人物の範囲を決定する範囲決定部と、
前記範囲決定部により第１人物の範囲と第２人物の範囲とが決定された場合、前記第１人物の範囲が前記第２人物の範囲と重複するか否かを判断する重複判断部と、
前記重複判断部が重複すると判断した場合、前記第１人物の範囲及び前記第２人物の範囲のうちいずれか一方を選択する範囲選択部と、
を備える人物検出装置。
【請求項１０】
請求項９に記載の人物検出装置であって、さらに、
前記人物の肩幅、前記人物の胴幅、前記人物の頭頂位置、及び前記人物の足先位置の検出結果に基づいて、前記人物の確度を計算する確度計算部、
を備え、
前記範囲選択部は、前記第１人物の確度が前記第２人物の確度よりも大きい場合、前記第１人物の範囲を選択する人物検出装置。
【請求項１１】
請求項９に記載の人物検出装置であって、
前記範囲選択部は、前記第１人物の範囲の面積が前記第２人物の範囲の面積よりも大きい場合、前記第１人物の範囲を選択する人物検出装置。
【請求項１２】
入力画像に含まれる人物の肩の位置及び肩幅を前記入力画像から検出する肩検出部と、
前記肩検出部により検出された肩の位置及び肩幅に基づいて、前記人物の脚の探索対象となる第１領域を決定する第１領域決定部と、
前記第１領域内の各画素を基準画素に順次指定する指定部と、
前記基準画素の左右に位置する所定形状の２つの画素群を特定し、前記２つの画素群に含まれる画素の画素値に基づいて前記基準画素が人物の脚の中心であろう脚尤度を計算する尤度計算部と、
前記第１領域において縦方向に配列された画素のカラムごとに脚尤度を積算して脚積算値を生成し、前記第１領域に含まれるいずれか１つのカラムの脚積算値が所定条件を満たす場合、前記人物の脚が存在すると判断する脚判断部と、
を備える人物検出装置。
【請求項１３】
請求項１２に記載の人物検出装置であって、
前記脚判断部は、各カラムの脚積算値と前記第１領域に含まれるカラムの脚積算値のうち最大の脚積算値との関係が第１の関係を満たす場合、前記人物の脚が存在すると判断する人物検出装置。
【請求項１４】
請求項１２または請求項１３に記載の人物検出装置であって、
前記脚判断部は、
最大の脚積算値を有するカラムの左右に位置する２つのカラムを特定し、特定された２つのカラムのうち脚積算値の小さいカラムを選択するカラム選択部、
を含み、
前記脚判断部は、前記最大の脚積算値と前記カラム選択部により選択されたカラムの脚積算値との関係が第２関係を満たす場合、前記人物の脚が存在すると判断する人物検出装置。
【請求項１５】
人物検出装置に搭載されるコンピュータに、
入力画像に含まれる人物の肩の位置及び肩幅を前記入力画像から検出するステップと、
検出された肩の位置及び肩幅に基づいて、前記人物の胴の探索対象となる第１領域を決定するステップと、
前記第１領域内の各画素を基準画素に順次指定するステップと、
前記基準画素の左右に位置する所定形状の２つの画素群を特定し、前記２つの画素群に含まれる画素の画素値に基づいて各画素が前記人物の胴の中心であろう胴尤度を計算するステップと、
前記第１領域において縦方向に配列された画素のカラムごとに胴尤度を積算して胴積算値を生成し、前記第１領域に含まれるいずれか１つのカラムの胴積算値が所定条件を満たす場合、前記人物の胴が存在すると判断するステップとを実行させるための人物検出プログラム。
【請求項１６】
人物検出装置に搭載されるコンピュータに、
入力画像に含まれる人物の肩の位置及び肩幅を前記入力画像から検出するステップと、
検出された肩の位置及び肩幅に基づいて、前記人物の脚の探索対象となる第１領域を決定するステップと、
前記第１領域内の各画素を基準画素に順次指定するステップと、
前記基準画素の左右に位置する所定形状の２つの画素群を特定し、前記２つの画素群に含まれる画素の画素値に基づいて各画素が人物の脚の中心であろう脚尤度を計算するステップと、
前記第１領域において縦方向に配列された画素のカラムごとに脚尤度を積算して脚積算値を生成し、前記第１領域に含まれるいずれか１つのカラムの脚積算値が所定条件を満たす場合、前記人物の脚が存在すると判断するステップとを実行させるための人物検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像に含まれる人物の範囲を特定する人物検出装置に関する。
【背景技術】
【０００２】
カメラにより撮影された画像から人物を検出するための技術として、ニューラルネットワークや、パターンマッチングなどが挙げられる。これらの技術を用いることにより、人物を検出する対象となる領域を設定した場合、人物が設定された領域に存在するか否かを判断することができる。
【０００３】
特許文献１には、人物の対称性に基づいて、画像中から人物を検出する物体検出システムが開示されている。
【０００４】
特許文献１に係る物体検出システムにおいて、画像中の人物の幅が、画像内の縦方向の位置に応じて設定されている。物体検出システムは、設定された幅に対応する対称性フィルタを用いて各画素における水平方向の対称性を評価して、フィルタ反応画像を生成する。物体検出システムは、フィルタ反応画像に対して平滑化処理及び細線化処理を行うことにより、フィルタ反応画像から線分を得る。物体検出システムは、線分の下端を基準とした矩形領域を設定し、矩形領域における線分の縦方向の連続性及び密度に基づいて、矩形領域が歩行者の存在する候補領域であるか否かを特定する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２００８／０６５７２９号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述のように、ニューラルネットワークや、パターンマッチングは、画像中の設定された領域に人物が存在するか否かを判断することができる。しかし、上記の技術では、人物が候補領域に存在すると判断されたとしても、候補領域に含まれる人物の特定の部位（胴や脚など）を検出することができない。
【０００７】
特許文献１では、歩行者の存在する候補領域を特定するために、人物の左右の対称性を用いている。しかし、特許文献１に係る物体検出システムは、ニューラルネットワークなどと同様に、人物の特定の部位を検出することを想定していない。
【０００８】
本発明の目的は、画像に含まれる人物の特定の部位を検出することができる人物検出装置を提供することである。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、請求項１記載の発明は、入力画像に含まれる人物の肩の位置及び肩幅を前記入力画像から検出する肩検出部と、前記肩検出部により検出された肩の位置及び肩幅に基づいて、前記人物の胴の探索対象となる第１領域を決定する第１領域決定部と、前記第１領域内の各画素を基準画素に順次指定する指定部と、前記基準画素の左右に位置する所定形状の２つの画素群を特定し、前記２つの画素群に含まれる画素の画素値に基づいて前記基準画素が前記人物の胴の中心であろう胴尤度を計算する尤度計算部と、前記第１領域において縦方向に配列された画素のカラムごとに胴尤度を積算して胴積算値を生成し、前記第１領域に含まれるいずれか１つのカラムの胴積算値が所定条件を満たす場合、前記人物の胴が存在すると判断する胴判断部と、を備える。
【００１０】
請求項２記載の発明は、請求項１に記載の人物検出装置であって、前記胴判断部は、各カラムの胴積算値と前記第１領域に含まれるカラムの胴積算値のうち最大の胴積算値との関係が第１の関係を満たす場合、前記人物の胴が存在すると判断する。
【００１１】
請求項３記載の発明は、請求項１または請求項２に記載の人物検出装置であって、前記胴判断部は、前記第１領域に含まれるカラムの胴積算値のうち最大の胴積算値を有するカラムの左右に位置する２つのカラムを特定し、特定された２つのカラムのうち胴積算値の小さいカラムを選択する選択部、を含み、前記胴判断部は、前記最大の胴積算値と前記選択部により選択されたカラムの胴積算値との関係が第２の関係を満たす場合、前記人物の胴が存在すると判断する。
【００１２】
請求項４記載の発明は、請求項１ないし請求項３のいずれかに記載の人物検出装置であって、さらに、前記２つの画素群間の距離に基づいて、前記基準画素が胴の中心である場合における胴幅を推定する推定部と、前記第１領域に含まれる各画素で推定された胴幅のうち最大の胴幅を前記人物の胴幅に決定し、前記最大の胴幅を有する画素の位置を前記人物の胴の中心に決定する中心決定部と、を備える。
【００１３】
請求項５記載の発明は、請求項４に記載の人物検出装置であって、さらに、前記第１領域に含まれる第２領域を、最大の胴積算値を有するカラムの位置に基づいて決定する第２領域決定部、を含み、前記中心決定部は、前記第２領域に含まれる画素で推定された胴幅のうち最大の胴幅を前記人物の胴幅に決定する。
【００１４】
請求項６記載の発明は、請求項４または請求項５に記載の人物検出装置であって、前記尤度計算部は、前記２つの画素群間の距離が異なるように、前記２つの画素群の配置パターンを２つ以上設定する配置設定部と、各配置パターンに対応する２つの画素群に含まれる画素の画素値に基づいて各配置パターンに対応する胴尤度を計算する個別尤度計算部と、各配置パターンに対応する胴尤度のうち最大の胴尤度を前記基準画素の胴尤度として選択する胴尤度選択部と、を含み、前記推定部は、最大の胴尤度に対応する配置パターンにより特定される２つの画素群間の距離に基づいて、前記基準画素の胴幅を推定する。
【００１５】
請求項７記載の発明は、請求項１ないし請求項６のいずれかに記載の人物検出装置であって、さらに、前記２つの画素群間の距離に基づいて、前記人物の胴幅を検出する胴幅検出部と、前記肩検出部により検出された肩の位置及び肩幅に基づいて、前記人物の頭頂位置を検出する頭頂検出部と、前記肩検出部により検出された肩の位置及び肩幅に基づいて、前記人物の足先位置を検出する足先検出部と、前記肩検出部により検出された肩幅及び前記胴幅検出部により検出された胴幅に基づいて、前記人物の横サイズを決定する横サイズ決定部と、前記頭頂検出部により検出された頭頂位置及び前記足先検出部により検出された足先位置に基づいて前記人物の縦サイズを決定する縦サイズ決定部と、を備える。
【００１６】
請求項８記載の発明は、請求項７に記載の人物検出装置であって、さらに、前記肩検出部により検出された肩の位置及び肩幅に基づいて、前記人物の脚を検出する脚検出部と、前記人物の肩幅、前記人物の胴幅、前記人物の脚、前記人物の頭頂位置、及び前記人物の足先位置の検出結果に基づいて、前記人物の確度を計算する確度計算部と、を備える。
【００１７】
請求項９記載の発明は、請求項７または請求項８に記載の人物検出装置であって、さらに、前記肩検出部により検出された肩の位置及び肩幅と、前記足先検出部により検出された足先位置と、前記頭頂検出部により検出された頭頂位置とに基づいて、前記人物の範囲を決定する範囲決定部と、前記範囲決定部により第１人物の範囲と第２人物の範囲とが決定された場合、前記第１人物の範囲が前記第２人物の範囲と重複するか否かを判断する重複判断部と、前記重複判断部が重複すると判断した場合、前記第１人物の範囲及び前記第２人物の範囲のうちいずれか一方を選択する範囲選択部と、を備える。
【００１８】
請求項１０記載の発明は、請求項９に記載の人物検出装置であって、さらに、前記人物の肩幅、前記人物の胴幅、前記人物の頭頂位置、及び前記人物の足先位置の検出結果に基づいて、前記人物の確度を計算する確度計算部、を備え、前記範囲選択部は、前記第１人物の確度が前記第２人物の確度よりも大きい場合、前記第１人物の範囲を選択する。
【００１９】
請求項１１記載の発明は、請求項９に記載の人物検出装置であって、前記範囲選択部は、前記第１人物の範囲の面積が前記第２人物の範囲の面積よりも大きい場合、前記第１人物の範囲を選択する。
【００２０】
請求項１２記載の発明は、入力画像に含まれる人物の肩の位置及び肩幅を前記入力画像から検出する肩検出部と、前記肩検出部により検出された肩の位置及び肩幅に基づいて、前記人物の脚の探索対象となる第１領域を決定する第１領域決定部と、前記第１領域内の各画素を基準画素に順次指定する指定部と、前記基準画素の左右に位置する所定形状の２つの画素群を特定し、前記２つの画素群に含まれる画素の画素値に基づいて前記基準画素が人物の脚の中心であろう脚尤度を計算する尤度計算部と、前記第１領域において縦方向に配列された画素のカラムごとに脚尤度を積算して脚積算値を生成し、前記第１領域に含まれるいずれか１つのカラムの脚積算値が所定条件を満たす場合、前記人物の脚が存在すると判断する脚判断部と、を備える。
【００２１】
請求項１３記載の発明は、請求項１２に記載の人物検出装置であって、前記脚判断部は、各カラムの脚積算値と前記第１領域に含まれるカラムの脚積算値のうち最大の脚積算値との関係が第１の関係を満たす場合、前記人物の脚が存在すると判断する。
【００２２】
請求項１４記載の発明は、請求項１２または請求項１３に記載の人物検出装置であって、前記脚判断部は、最大の脚積算値を有するカラムの左右に位置する２つのカラムを特定し、特定された２つのカラムのうち脚積算値の小さいカラムを選択するカラム選択部、を含み、前記脚判断部は、前記最大の脚積算値と前記カラム選択部により選択されたカラムの脚積算値との関係が第２関係を満たす場合、前記人物の脚が存在すると判断する。
【００２３】
請求項１５記載の発明は、人物検出装置に搭載されるコンピュータに、入力画像に含まれる人物の肩の位置及び肩幅を前記入力画像から検出するステップと、検出された肩の位置及び肩幅に基づいて、前記人物の胴の探索対象となる第１領域を決定するステップと、前記第１領域内の各画素を基準画素に順次指定するステップと、前記基準画素の左右に位置する所定形状の２つの画素群を特定し、前記２つの画素群に含まれる画素の画素値に基づいて各画素が前記人物の胴の中心であろう胴尤度を計算するステップと、前記第１領域において縦方向に配列された画素のカラムごとに胴尤度を積算して胴積算値を生成し、前記第１領域に含まれるいずれか１つのカラムの胴積算値が所定条件を満たす場合、前記人物の胴が存在すると判断するステップとを実行させるための人物検出プログラムである。
【００２４】
請求項１６記載の発明は、人物検出装置に搭載されるコンピュータに、入力画像に含まれる人物の肩の位置及び肩幅を前記入力画像から検出するステップと、検出された肩の位置及び肩幅に基づいて、前記人物の脚の探索対象となる第１領域を決定するステップと、前記第１領域内の各画素を基準画素に順次指定するステップと、前記基準画素の左右に位置する所定形状の２つの画素群を特定し、前記２つの画素群に含まれる画素の画素値に基づいて各画素が人物の脚の中心であろう脚尤度を計算するステップと、前記第１領域において縦方向に配列された画素のカラムごとに脚尤度を積算して脚積算値を生成し、前記第１領域に含まれるいずれか１つのカラムの脚積算値が所定条件を満たす場合、前記人物の脚が存在すると判断するステップとを実行させるための人物検出プログラムである。
【発明の効果】
【００２５】
本発明の人物検出装置は、入力画像から検出された人物の肩の中心及び肩幅に基づいて、入力画像において胴の探索対象となる第１領域を決定し、第１領域に含まれる各画素の胴尤度を計算する。第１領域に含まれるカラムごとに胴尤度が積算される。各カラムの胴積算値のうち少なくとも１つが所定条件を満たす場合、人物の胴が存在すると判断される。これにより、入力画像から人物の胴を検出することができる。
【００２６】
また、本発明の人物検出装置は、２つの画素群間の距離に基づいて、基準画素が胴の中心である場合における胴幅を推定し、第１領域に含まれる画素のうち最大の胴幅を人物の胴幅に決定する。これにより、入力画像から人物の胴幅を決定することができる。
【００２７】
本発明の人物検出装置は、入力画像から検出された人物の肩の中心及び肩幅に基づいて、入力画像において脚の探索対象となる第１領域を決定し、第１領域に含まれる各画素の脚尤度を計算する。第１領域に含まれるカラムごとに脚尤度が積算される。各カラムの脚積算値のうち少なくとも１つが所定条件を満たす場合、人物の脚が存在すると判断される。これにより、入力画像から人物の脚を検出することができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の実施の形態による人物検出装置の構成を示す機能ブロック図である。
【図２】図１に示す人物検出装置により検出される人物の肩と胴と脚と頭頂と足先との位置関係を示す図である。
【図３】図１に示す人物検出装置の動作を示すフローチャートである。
【図４】図１に示す人物検出装置に入力される入力画像の一例を示す図である。
【図５】図４に示す画像から生成された横エッジ画像を示す図である。
【図６】図４に示す画像から生成された縦エッジ画像を示す図である。
【図７】図３に示す肩検出処理のフローチャートである。
【図８】図４に示す枠内の各画素が人物の肩の中心であろう度合い（肩尤度）の計算方法の概略を説明する図である。
【図９】図７に示す肩尤度計算処理のフローチャートである。
【図１０】図１に示す肩検出部により計算される肩尤度の計算方法を説明する図である。
【図１１】図９に示す肩尤度及び肩幅の計算処理のフローチャートである。
【図１２】図７に示す肩尤度画像生成処理により生成された肩尤度画像を示す図である。
【図１３】図７に示す肩幅決定処理のフローチャートである。
【図１４】図３に示す足先検出処理のフローチャートである。
【図１５】図１４に示す足先探索領域決定処理の概略を説明する図である。
【図１６】図１４に示す足先値計算処理の概略を説明する図である。
【図１７】図１４に示す足先値計算処理のフローチャートである。
【図１８】図１４に示す足先位置特定処理のフローチャートである。
【図１９】図３に示す頭頂検出処理のフローチャートである。
【図２０】図１９に示す頭頂探索領域決定処理の概略を説明する図である。
【図２１】図１９に示す頭頂値計算処理のフローチャートである。
【図２２】図１９に示す頭頂位置特定処理のフローチャートである。
【図２３】図３に示す胴検出処理のフローチャートである。
【図２４】図２３に示す胴探索領域決定処理の概略を説明する図である。
【図２５】図１に示す胴検出部により計算される胴尤度の計算方法を説明する図である。
【図２６】図２３に示す胴尤度計算処理のフローチャートである。
【図２７】図２３に示す胴積算値計算処理のフローチャートである。
【図２８】図２４に示す胴探索領域内の画素の配置及び胴尤度の分布の一例を示す図である。
【図２９】図２７に示す胴尤度凸判定処理のフローチャートである。
【図３０】図２３に示す胴有無決定処理のフローチャートである。
【図３１】図２３に示す胴幅決定処理のフローチャートである。
【図３２】図２３に示す胴幅決定処理で用いられる最大胴幅選択領域を示す図である。
【図３３】図３に示す脚検出処理のフローチャートである。
【図３４】図３３に示す脚探索領域決定処理の概略を説明する図である。
【図３５】図３３に示す脚尤度計算処理のフローチャートである。
【図３６】図３３に示す脚積算値計算処理のフローチャートである。
【図３７】図３３に示す脚有無決定処理のフローチャートである。
【図３８】図３に示すサイズ決定処理のフローチャートである。
【図３９】図３８に示す人物範囲決定処理のフローチャートである。
【図４０】図３８に示す確度計算処理のフローチャートである。
【図４１】図３８に示す重複判定処理のフローチャートである。
【発明を実施するための形態】
【００２９】
以下、図面を参照しつつ、本発明の実施の形態を詳しく説明する。
【００３０】
［１．人物検出装置１の構成］
図１は、本実施の形態による人物検出装置１の構成を示す機能ブロック図である。人物検出装置１は、入力画像２１に含まれる人物の範囲を特定する。
【００３１】
人物検出装置１は、エッジ抽出部１１と、肩検出部１２と、足先検出部１３と、頭頂検出部１４と、胴検出部１５と、脚検出部１６と、画像認識部１７と、サイズ決定部１８と、メモリ１９とを備える。
【００３２】
エッジ抽出部１１は、入力画像２１に対してエッジ抽出処理を実行して、横エッジ画像２２及び縦エッジ画像２３を生成する。
【００３３】
肩検出部１２は、横エッジ画像２２を用いて、入力画像２１に含まれる人物の肩の中心位置及び肩幅を検出する。肩検出部１２は、肩の中心位置及び肩幅の検出結果を含む肩候補データ２４を生成してメモリ１９に格納する。
【００３４】
足先検出部１３は、横エッジ画像２２と肩候補データ２４とを用いて、入力画像２１に含まれる人物の足先の位置を検出する。足先の位置は、肩検出部１２により検出された肩の中心及び肩幅に基づいて検出される。
【００３５】
頭頂検出部１４は、横エッジ画像２２と肩候補データ２４とを用いて、入力画像２１に含まれる人物の頭頂の位置を検出する。頭頂の位置は、肩検出部１２により検出された肩の中心及び肩幅に基づいて検出される。
【００３６】
胴検出部１５は、縦エッジ画像２３と肩候補データ２４とを用いて、入力画像２１に含まれる人物の胴の位置及び胴幅を検出する。胴の位置及び胴幅は、肩検出部１２により検出された肩の中心及び肩幅に基づいて検出される。
【００３７】
脚検出部１６は、縦エッジ画像２３と肩候補データ２４とを用いて、入力画像２１に含まれる人物の脚を検出する。人物の脚は、肩検出部１２により検出された肩の中心及び肩幅に基づいて検出される。
【００３８】
サイズ決定部１８は、検出された人物の肩幅及び胴幅に基づいて、入力画像２１に含まれる人物の横方向のサイズを決定し、検出された足先の位置及び頭頂の位置に基づいて、入力画像２１に含まれる人物の縦方向のサイズを決定する。サイズ決定部１８は、決定したサイズ、肩の中心位置、足先の位置、頭頂の位置などを含む人物範囲データ２８を生成する。
【００３９】
画像認識部１７は、ニューラルネットワークや、サポートベクターマシンなどのアルゴリズムを用いて、入力画像２１における人物の有無を判断する。人物が入力画像２１に含まれる場合、画像認識部１７は、人物の存在する大まかな範囲を特定した対象領域データ２５を作成する。対象領域データ２５により特定される領域が、肩検出の対象となる。
【００４０】
メモリ１９は、ＲＡＭ（Random Access memory）などの記憶装置であり、肩候補データ２４、対象領域データ２５、及び探索範囲データ２６を格納する。探索範囲データ２６には、胴、脚、足先の位置、及び頭頂の位置を探索する範囲を設定するための基準が記録されている。また、メモリ１９は、エッジ抽出部１１、肩検出部１２、足先検出部１３、頭頂検出部１４、胴検出部１５、脚検出部１６、画像認識部１７、及びサイズ決定部１８が各々の処理を実行する際の作業領域として使用される。
【００４１】
［２．人物検出装置１の全体的な動作］
人物検出装置１は、入力画像２１に含まれる人物の肩の中心、肩幅、胴、脚、足先、及び頭頂を検出することにより、人物の位置及びサイズを特定する。
【００４２】
図２は、人物検出装置１により検出される人物の肩と、胴と、脚と、足先と、頭頂との位置関係を示す図である。図２に示すように、人物３の肩３１とは、腕３２が胴３３に接続される部分から、首３４の付け根までの部位をいう。人物３が正面を向いている場合、肩３１は、略三角形状である。頭頂３５は、直立している人物３の上端を指し、足先３６は、直立している人物３の下端を指す。胴３３は、人物の頭及び手足を除いた部位である。胴幅は、腕３２，３２及び胴３３を含む横方向のサイズである。胴３３の横サイズのみを胴幅として検出してもよい。脚３８，３８は、大腿部からくるぶしまでの部位を指す。足先は、くるぶしから下の部位を指す。
【００４３】
図３は、人物検出装置１の動作を示すフローチャートである。人物検出装置１は、入力画像２１に含まれる人物の大まかな領域を特定した対象領域データ２５を作成する（ステップＳ１）。入力画像２１は、カメラ（図示省略）により撮影された画像データ（フレーム）である。カメラは、例えば、自動車等の車両に搭載される。
【００４４】
対象領域データ２５は、ニューラルネットワークなどのアルゴリズムを用いる画像認識部１７により生成される。ニューラルネットワークを用いた人物検出では、検出された人物のサイズを特定することができないが、人物が検出された大まかな位置を特定することができる。画像認識部１７は、人物が存在する領域を示す対象領域データ２５を作成してメモリ１９に格納する。
【００４５】
図４は、入力画像２１の一例を示す図である。図４において、入力画像２１は、後ろ向きに立つ３人の人物を含む。３人の人物をそれぞれ囲む枠２１ａ〜２１ｃは、画像認識部１７により人物が存在すると判断された領域（対象領域）であり、対象領域データ２５は、枠２１ａ〜２１ｃを特定する情報を含む。
【００４６】
以下、特に説明のない限り、枠２１ａ内の人物の範囲を特定する場合における人物検出装置１の動作を説明する。
【００４７】
まず、人物検出装置１は、入力画像２１に対してエッジ抽出処理を実行し（ステップＳ２）、横エッジ画像２２及び縦エッジ画像２３を生成する。人物検出装置１は、入力画像の垂直方向（縦方向）の画素値の勾配に基づいてエッジを抽出して横エッジ画像２２を生成する。このため、横エッジ画像２２では、入力画像２１が有する横方向に延びるエッジが強調される。人物検出装置１は、入力画像の水平方向（横方向）の画素値の勾配に基づいてエッジを抽出して縦エッジ画像２３を生成する。このため、縦エッジ画像２３では、入力画像２１が有する縦方向に延びるエッジが強調される。
【００４８】
図５は、図４に示す入力画像２１から生成された横エッジ画像２２を示す図である。図６は、図４に示す入力画像２１から生成された縦エッジ画像２３を示す図である。図５に示す横エッジ画像２２では、３人の男性の肩付近のエッジや、３人の男性のシャツとパンツとの境界が強調されている。図６に示す縦エッジ画像２３では、３人の男性の腕や、脚が強調されている。
【００４９】
人物検出装置１は、横エッジ画像２２を用いて、対象領域データ２５で特定された枠２１ａ〜２１ｃにおける人物の肩の中心及び肩幅を検出する（ステップＳ３）。ステップＳ３で検出された肩の中心及び肩幅は、肩候補データ２４に記録される。ステップＳ３の詳細については、後述する。
【００５０】
人物検出装置１は、ステップＳ３で検出された肩の中心に対応する足先の位置を検出する（ステップＳ４）。足先の探索対象となる領域（足先探索領域）は、ステップＳ３で検出された肩の中心及び肩幅と、探索範囲データ２６とに基づいて特定される。ステップＳ４の詳細については、後述する。
【００５１】
人物検出装置１は、ステップＳ３で検出された肩の中心に対応する頭頂の位置を検出する（ステップＳ５）。頭頂の探索対象となる領域（頭頂探索領域）が、ステップＳ３で検出された肩の中心及び肩幅と、探索範囲データ２６とに基づいて特定される。ステップＳ５の詳細については、後述する。
【００５２】
人物検出装置１は、ステップＳ３で検出された肩の中心に対応する胴の位置及び胴幅を検出する（ステップＳ６）。胴の探索対象となる領域（胴探索領域）が、ステップＳ３で検出された肩の中心及び肩幅と、探索範囲データ２６とに基づいて特定される。ステップＳ６の詳細については、後述する。
【００５３】
人物検出装置１は、ステップＳ３で検出された肩の中心に対応する脚を検出する（ステップＳ７）。脚の探索対象となる領域（脚探索領域）が、ステップＳ３で検出された肩の中心及び肩幅と、探索範囲データ２６とに基づいて特定される。ステップＳ７の詳細については、後述する。
【００５４】
人物検出装置１は、ステップＳ３〜Ｓ７の結果を用いて、枠２１ａ〜２１ｃ内の人物の範囲を決定する（ステップＳ８）。人物検出装置１は、ステップＳ３〜Ｓ７の処理結果に基づいて、人物が枠２１ａ〜２１ｃに含まれるか否かを最終的に判断する。人物が各々の枠に含まれている場合、人物検出装置１は、ステップＳ３，Ｓ６で検出された肩幅及び胴幅に基づいて、人物の横方向のサイズを決定し、ステップＳ４，Ｓ５で検出された足先の位置及び頭頂の位置に基づいて、人物の縦方向のサイズを決定する。ステップＳ８の詳細については、後述する。
【００５５】
図３に示すフローチャートにおいて、ステップＳ４〜Ｓ７の処理の順序は、特に限定されない。ステップＳ４〜Ｓ７の処理は、ステップＳ３により人物の肩の中心及び肩幅が特定された後に実行されればよい。
【００５６】
［３．エッジ抽出処理（ステップＳ２）］
エッジ抽出部１１は、入力画像２１に対してバンドパスフィルタをかけることにより、入力画像２１から横エッジ及び縦エッジを抽出する。エッジ抽出処理では、以下の式（１）が用いられる。
【００５７】
【数１】
2014186524.tif 000003
【００５８】
式（１）の上段において、ｘ（ｎ）は、入力画像２１の画素値である。ｙ（ｎ）は、横エッジ画像２２または縦エッジ画像２３の画素値である。ｈ（ｎ）は、バンドパスフィルタを示す。αについては、後述する。横エッジの抽出に用いられるバンドパスフィルタｈ（ｎ）と、縦エッジの抽出に用いられるバンドパスフィルタｈ（ｎ）とは、互いに異なる。
【００５９】
式（１）の下段において、ｍａｘは、入力画像２１の画素値の最大値である。αは、ｙ（ｎ）の最大値を２５５に設定するための正規化係数である。シグマ演算子による演算結果にαを乗じることにより、ｙ（ｎ）の最大値を２５５に設定することができる。
【００６０】
エッジ抽出部１１は、入力画像２１の垂直方向に並ぶ画素に対して上記式（１）を適用して、横エッジを抽出する。エッジ抽出部１１は、入力画像２１の水平方向に並ぶ画素に対して上記式（１）を適用して、縦エッジを抽出する。バンドパスフィルタｈ（ｎ）を用いることにより、画像の本質的な特徴を示す低周波成分と、画像の微小な変化を示す高周波成分とが、入力画像２１から取り除かれ、中間の周波数帯域の画像の変化がエッジとして抽出される。バンドパスフィルタｈ（ｎ）として、奇数タップのフィルタを用いることができる。例えば、タップ数は、３，５，７，９タップのいずれかである。
【００６１】
［４．肩検出処理（ステップＳ３）］
図７は、図３に示す肩検出処理（ステップＳ３）のフローチャートである。肩検出処理（ステップＳ３）は、肩検出部１２により実行される。
【００６２】
肩検出部１２は、対象領域データ２５に記録された枠２１ａ〜２１ｃの全てを、人物の肩を検出する範囲（肩検出範囲）として選択済みであるか否かを判断する（ステップＳ３１）。枠２１ａ〜２１ｃの全てが選択されていない場合（ステップＳ３１においてＮｏ）、肩検出部１２は、未選択の枠を1つ選択する（ステップＳ３２）。初回の選択時には、枠２１ａが選択される。
【００６３】
肩検出部１２は、肩尤度を枠２１ａ内の画素ごとに計算する（ステップＳ３３）。ステップＳ３３の詳細については、後述する。
【００６４】
肩検出部１２は、枠２１ａ〜２１ｃの全てを選択した場合（ステップＳ３１においてＹｅｓ）、後処理（ステップＳ３４）を実行する。後処理（ステップＳ３４）において、肩検出部１２は、入力画像２１の各画素の画素値を肩尤度に置換した肩尤度画像２７を生成する（ステップＳ３４１）。また、肩検出部１２は、生成した肩尤度画像２７に対して、２値化処理（ステップＳ３４２）、膨張・縮退処理（ステップＳ３４３）、ラベリング処理（ステップＳ３４４）、肩幅候補選択処理（ステップＳ３４５）を実行する。後処理（ステップＳ３４）の後に、肩検出部１２は、肩幅決定処理（ステップＳ３５）を実行して、枠２１ａ〜２１ｃの各々の領域において、人物の肩の中心及び肩幅を決定する。ステップＳ３４，Ｓ３５の詳細については、後述する。
【００６５】
［４．１．肩尤度計算処理（ステップＳ３３）］
肩検出部１２は、ステップＳ３３において、枠２１ａ内の各画素の肩尤度及び推定肩幅を計算する。肩尤度は、各画素が人物の肩の中心であろう度合いを示す数値であり、推定肩幅は、各画素が肩の中心である場合に推定される人物の肩幅である。画素が肩の中心となる可能性が高くなるにつれて、肩尤度は大きくなる。図８は、肩尤度の計算方法の概略を説明する図である。なお、図８に示す枠２１ａ及び人物２１ｍのサイズを、誇張して表示している。
【００６６】
図８において、入力画像２１の左上頂点を原点、横方向をＸ軸、縦方向をＹ軸と仮定する。Ｘ軸の正方向は、右方向であり、Ｙ軸の正方向は、下方向である。
【００６７】
ＳＴＸ、ＳＴＹは、枠２１ａにおいて、最初に肩尤度が計算される画素Ｐ１のＸ座標、Ｙ座標である。ＥＤＸ、ＥＤＹは、枠２１ａにおいて、最後に肩尤度が計算される画素Ｐ４のＸ座標、Ｙ座標である。ｗｉｎｓは、肩尤度を計算する際に暫定的に設定される肩幅（以下、「窓幅」と呼ぶ。）である。窓幅の最小値は、ｗｓｍｉｎであり、窓幅の最大値は、ｗｓｍａｘである。窓幅の詳細については、後述する。
【００６８】
肩検出部１２は、画素Ｐ１から右方向に並ぶ各画素の肩尤度を、左から順に計算する。右端の画素Ｐ２の肩尤度が計算された場合、肩検出部１２は、画素Ｐ１の下に隣接する画素の肩尤度を計算する。このようにして、枠２１ａをスキャンすることにより、枠２１ａ内の各画素の肩尤度が計算される。
【００６９】
図９は、肩尤度計算処理（ステップＳ３３）のフローチャートである。図９に示すステップＳ３３１〜Ｓ３３７（ステップＳ３３５を除く）の処理により、枠２１ａ内の各画素が、肩尤度の計算対象となる基準画素に順次指定される。以下、肩尤度計算処理（ステップＳ３３）を詳しく説明する。
【００７０】
肩検出部１２は、基準画素のＹ座標ｊをＳＴＹに設定する（ステップＳ３３１）。肩検出部１２は、Ｙ座標ｊがＥＤＹ以下であるか否かを判断する（ステップＳ３３２）。Ｙ座標ｊがＥＤＹ以下である場合（ステップＳ３３２にいてＹｅｓ）、基準画素のＸ座標ｉが、ＳＴＸに設定される(ステップＳ３３３)。初回の基準画素の設定時には、画素Ｐ１が、基準画素に設定される。
【００７１】
肩検出部１２は、Ｘ座標ｉがＥＤＸ以下であるか否かを判断する（ステップＳ３３４）。Ｘ座標ｉがＥＤＸ以下である場合（ステップＳ３３４にいてＹｅｓ）、肩検出部１２は、基準画素の肩尤度及び推定肩幅を計算する（ステップＳ３３５）。ステップＳ３３５の詳細については、後述する。
【００７２】
次に、現在の基準画素の右隣の画素を次の基準画素に設定するために、Ｘ座標ｉがインクリメントされる（ステップＳ３３６）。インクリメントされたＸ座標ｉがＥＤＸ以下である場合（ステップＳ３３４においてＹｅｓ）、肩検出部１２は、ステップＳ３３５，Ｓ３３６を繰り返す。これにより、枠２１ａ内の横方向に並ぶ画素の肩尤度及び推定肩幅が順次計算される。以下、枠２１ａ内の横方向に並ぶ画素の列を、「画素ライン」と呼ぶ。
【００７３】
一方、インクリメントされたＸ座標ｉがＥＤＸよりも大きい場合（ステップＳ３３４においてＮｏ）、肩検出部１２は、次の画素ラインの各画素を基準画素に設定する。具体的には、肩検出部１２は、Ｙ座標ｊをインクリメントし（ステップＳ３３７）、ステップＳ３３２に戻る。Ｙ座標ｊがＥＤＹ以下である場合（ステップＳ３３２においてＹｅｓ）、肩検出部１２は、Ｘ座標ｉをＳＴＸに設定する（ステップＳ３３３）。これにより、次の画素ラインの左端の画素が、基準画素に設定される。肩検出部１２は、Ｙ座標ｊがＥＤＹより大きくなるまで（ステップＳ３３２においてＮｏ）、ステップＳ３３３〜Ｓ３３７を繰り返す。これにより、枠２１ａ内の各画素の肩尤度及び推定肩幅が計算される。
【００７４】
ステップＳ３３２において、Ｙ座標ｊがＥＤＹよりも大きい場合（ステップＳ３３２においてＮｏ）、肩検出部１２は、枠２１ａ内の全ての画素の肩尤度及び推定肩幅が計算されたと判断し、図９に示すフローチャートを終了する。
【００７５】
［４．２．肩尤度及び推定肩幅の計算処理（ステップＳ３３５）］
図１０は、肩尤度及び推定肩幅の計算手順を説明する図である。図１０を参照しながら、肩尤度及び推定肩幅の計算の概略を説明する。
【００７６】
図１０に示す各画素は、横エッジ画像２２の画素である。基準画素Ｐｃを通る縦軸を中心にして線対称の左画素群ＬＧ１及び右画素群ＲＧ２を想定する。また、基準画素Ｐｃを含む中心画素群ＣＧを想定する。
【００７７】
左画素群ＬＧ１及び右画素群ＲＧ１の形状は、人間の肩の形状に対応する鉤型である。左画素群ＬＧ１は、画素ＬＰ１〜ＬＰ５を有する。画素ＬＰ１〜ＬＰ４は、基準画素Ｐｃと同じＹ座標を有し、左から右へ横方向に連続して並んでいる。画素ＬＰ５は、左端の画素ＬＰ１の直下に位置する。右画素群ＲＧ１は、左画素群ＬＧ１の左右反対の形状であり、画素ＲＰ１〜ＲＰ５を有する。画素ＲＰ１〜ＲＰ５は、画素ＬＰ１〜ＬＰ５にそれぞれ対応する。
【００７８】
中心画素群ＣＧは、基準画素Ｐｃと、基準画素Ｐｃの左右に隣接する２つの画素とを底辺とした、長方形状の画素の集合である。中心画素群ＣＧの縦方向のサイズは、画素５つ分である。
【００７９】
基準画素Ｐｃから左画素群ＬＧ１の左端の画素ＬＰ１までの距離を、間隔ｋｓと定義する。間隔ｋｓは、基準画素Ｐｃから右画素群ＲＧ１の右端の画素ＲＰ１までの距離と同じである。ただし、基準画素Ｐｃから画素ＲＰ１までの距離が、基準画素Ｐｃから画素ＬＰ１までの距離と異なることを妨げるものではない。
【００８０】
肩検出部１２は、基準画素Ｐｃから間隔ｋｓの位置にある左画素群ＬＧ１の各画素を重み付け加算することにより、左演算値を生成する。肩検出部１２は、基準画素Ｐｃから間隔ｋｓの位置にある右画素群ＲＧの各画素を重み付け加算することにより、右演算値を生成する。左演算値及び右演算値を加算した数値が、間隔ｋｓにおける肩尤度として得られる。
【００８１】
肩検出部１２は、間隔ｋｓを、窓幅ｗｓｍｉｎ／２〜ｗｓｍａｘ／２の範囲で変化させることにより、それぞれの間隔ｋｓにおける肩尤度（個別肩尤度）を計算する。各間隔ｋｓに対応する個別肩尤度のうち最大値が、基準画素Ｐｃの肩尤度として選択され、最大の個別肩尤度に対応する間隔ｋｓに基づいて推定肩幅が算出される。
【００８２】
図１１は、基準画素Ｐｃの肩尤度及び推定肩幅の計算処理（ステップＳ３３５）のフローチャートである。以下、図１０及び図１１を参照しながら、ステップＳ３３５を実行する肩検出部１２の動作を説明する。
【００８３】
まず、肩検出部１２は、基準画素Ｐｃが肩の中心となり得るか否かを判断する。具体的には、肩検出部１２は、中心画素群ＣＧの全画素が予め設定されたしきい値よりも小さいか否かを判断する（ステップＳ３７１）。
【００８４】
中心画素群ＣＧの全画素の画素値が、予め設定されたしきい値よりも小さい場合（ステップＳ３７１においてＮｏ）、肩検出部１２は、基準画素Ｐｃが肩の中心とはならないと判断し、基準画素Ｐｃの肩尤度Ｇｓ（ｉ，ｊ）及び推定肩幅Ｈｓ（ｉ，ｊ）を０に設定する（ステップＳ３８４）。
【００８５】
ここで、肩尤度Ｇｓ（ｉ，ｊ）及び推定肩幅Ｈｓ（ｉ，ｊ）が０に設定される理由を説明する。一般的に、人物の首と上半身の衣服との間には、横エッジが形成される。図１０に示す各画素は、横エッジ画像２２の画素であるため、基準画素Ｐｃが肩の中心である場合、中心画素群ＣＧの少なくとも１つの画素は、横方向に延びるエッジを含み、一定値以上の画素値を有すると考えられる。この考えに基づいて、中心画素群ＣＧの少なくとも１つの画素が、しきい値以上の画素値を有する場合、基準画素Ｐｃが、肩の中心である可能性があると判断される。一方、中心画素群ＣＧの全画素が、しきい値よりも小さい画素値を有する場合、基準画素Ｐｃは、肩の中心でないと判定され、基準画素Ｐｃの肩尤度及び推定肩幅は、０に設定される。
【００８６】
中心画素群ＣＧの少なくとも１つの画素値が、予め設定されたしきい値以上である場合（ステップＳ３７１においてＹｅｓ）、肩検出部１２は、基準画素Ｐｃが肩の中心となりうると判断する。そして、肩検出部１２は、ステップＳ３７２〜Ｓ３８３を実行して、基準画素Ｐｃの肩尤度及び推定肩幅を計算する。
【００８７】
肩検出部１２は、間隔ｋｓ、暫定肩尤度Ｄｓ、暫定肩幅Ｆｓを初期化する（ステップＳ３７２）。暫定肩尤度Ｄｓは、現時点までに計算された個別肩尤度の最大値である。間隔ｋｓの初期値は、最小窓幅（ｗｓｍｉｎ）の半分である。暫定肩幅Ｆｓは、暫定肩尤度Ｄｓに対応する間隔ｋｓを示す。ステップＳ３７２において、暫定肩尤度Ｄｓには所定の初期値が設定される。暫定肩幅Ｆｓの初期値は、０である。
【００８８】
肩検出部１２は、間隔ｋｓが最大窓幅（ｗｓｍａｘ）の半分よりも小さいか否かを判断する（ステップＳ３７３）。間隔ｋｓが最大窓幅（ｗｓｍａｘ）の半分よりも小さい場合（ステップＳ３７３においてＹｅｓ）、肩検出部１２は、ステップＳ３７４，Ｓ３７５を実行して、現在の間隔ｋｓに対応する個別肩尤度を計算する。
【００８９】
ステップＳ３７４において、肩検出部１２は、左画素群ＬＧ１の各画素を重み付け加算した左演算値ＳＨ＿Ｌと、右画素群ＲＧの各画素値を重み付け加算した右演算値ＳＨ＿Ｒとを計算する。左演算値ＳＨ＿Ｌ、右演算値ＳＨ＿Ｒは、下記式（２）、（３）によりそれぞれ計算される。
【００９０】
【数２】
2014186524.tif 000004
【００９１】
【数３】
2014186524.tif 000005
【００９２】
式（２），（３）において、ＹＨは、横エッジ画像２２の画素値である。ａは、画素ＬＰ２，ＬＰ３，ＬＰ５，ＲＰ２，ＲＰ３，ＲＰ５の重み付け係数であり、ｂは、画素ＬＰ４，ＲＰ４の重み付け係数である。画素ＬＰ１，ＲＰ１の重み付け係数は、１である。
【００９３】
肩検出部１２は、右演算値ＳＨ＿Ｒを左演算値ＳＨ＿Ｌに加算して、現在の間隔ｋｓに対応する個別肩尤度ＳＨ＿Ｃを計算する（ステップＳ３７５）。
【００９４】
肩検出部１２は、個別肩尤度ＳＨ＿Ｃが暫定肩尤度Ｄｓよりも大きいか否かを判断する（ステップＳ３７６）。個別肩尤度ＳＨ＿Ｃが暫定肩尤度Ｄｓ以下である場合（ステップＳ３７６においてＮｏ）、肩検出部１２は、現在の左画素群ＬＧ１及び右画素群ＲＧ１の位置が人物２１ｍの肩に一致していないと判断し、Ｓ３７９に進む。
【００９５】
一方、個別肩尤度ＳＨ＿Ｃが暫定肩尤度Ｄｓよりも大きい場合（ステップＳ３７６においてＹｅｓ）、肩検出部１２は、暫定肩尤度Ｄｓを更新する条件が満たされているか否かを判断する（ステップＳ３７７）。具体的には、肩検出部１２は、左演算値ＳＨ＿Ｌと右演算値ＳＨ＿Ｒとの間に極端な差が存在するか否かを判断する。下記式（４）及び式（５）のいずれかが満たされている場合、肩検出部１２は、極端な差がないため、暫定肩尤度Ｄｓを更新できると判断する。
【００９６】
【数４】
2014186524.tif 000006
【００９７】
【数５】
2014186524.tif 000007
【００９８】
式（４），（５）において、ｔは、２以上の整数である。ｔ＝２の場合、式（４）は、左演算値ＳＨ＿Ｌが、右演算値ＳＨ＿Ｒの半分より大きく、かつ、右演算値ＳＨ＿Ｒよりも小さい場合、更新条件が満たされることを示している。式（５）は、右演算値ＳＨ＿Ｒが、左演算値ＳＨ＿Ｌの半分より大きく、かつ、左演算値ＳＨ＿Ｌよりも小さい場合、更新条件が満たされることを示している。肩検出部１２は、式（４），（５）を用いることなく、ステップＳ３７７を実行してもよい。つまり、肩検出部１２は、左演算値ＳＨ＿Ｌと右演算値ＳＨ＿Ｒとの比率が所定の範囲内であるか否かに基づいて、左演算値ＳＨ＿Ｌと右演算値ＳＨ＿Ｒとの間に極端な差があるか否かを判断すればよい。
【００９９】
式（４），（５）のいずれかが満たされている場合、肩検出部１２は、左画素群ＬＧ１及び右画素群ＲＧ１の両者が、人物の両肩の形状に対応するエッジを有しているため、暫定肩尤度Ｄｓ及び暫定肩幅Ｆｓの更新条件が満たされていると判断する（ステップＳ３７７においてＮｏ）。肩検出部１２は、ステップＳ３７８に進む。
【０１００】
一方、式（４），（５）の両者とも満たされていない場合、肩検出部１２は、左画素群ＬＧ１及び右画素群ＲＧ１の少なくとも一方が、人物の肩に対応するエッジを有していないため、更新条件が満たされていないと判断する（ステップＳ３７７においてＹｅｓ）。この場合、肩検出部１２は、次の間隔ｋｓの個別肩尤度ＳＨ＿Ｃを計算するために、ステップＳ３７９に進む。
【０１０１】
更新条件が満たされている場合(ステップＳ３７７においてＮｏ）、肩検出部１２は、暫定肩尤度ＤｓをステップＳ３７５で計算した個別肩尤度ＳＨ＿Ｃに更新し、暫定肩幅Ｆｓを現在の間隔ｋｓに更新する（ステップＳ３７８）。そして、肩検出部１２は、間隔ｋｓをインクリメントする（ステップＳ３７９）。
【０１０２】
肩検出部１２は、間隔ｋｓが最大窓幅ｗｓｍａｘの半分を超えるまで（ステップＳ３７３においてＮｏ）、ステップＳ３７４〜Ｓ３７９を繰り返す。つまり、肩検出部１２は、左画素群ＬＧ１と右画素群ＲＧ１との距離が異なるように、左画素群ＬＧ１と右画素群ＲＧ１との配置パターンを設定し、各配置パターンの左画素群ＬＧ１及び右画素群ＲＧ１に含まれる画素の画素値に基づいて、個別肩尤度を計算する。そして、ｗｓｍｉｎ／２〜ｗｓｍａｘ／２の範囲において、最大の個別肩尤度ＳＨ＿Ｃと、最大の個別肩尤度ＳＨ＿Ｃに対応する間隔ｋｓとが特定される。
【０１０３】
間隔ｋｓが最大窓幅ｗｓｍａｘの半分よりも大きい場合（ステップＳ３７３においてＮｏ）、肩検出部１２は、個別肩尤度ＳＨ＿Ｃの算出が終了したと判断し、暫定肩幅Ｆｓに基づいて、基準画素Ｐｃの推定肩幅Ｈｓを算出する（ステップＳ３８０）。基準画素Ｐｃにおける推定肩幅Ｈｓ（ｉ，ｊ）は、下記式（６）により求められる。推定肩幅Ｈｓ（ｉ，ｊ）は、暫定肩幅Ｆｓを２倍して１を加算した値である。つまり、推定肩幅は、左画素群ＬＧ１と右画素群ＲＧ１との距離に基づいて決定される。
【０１０４】
【数６】
2014186524.tif 000008
【０１０５】
次に、肩検出部１２は、暫定肩幅Ｆｓが０であるか否かを判断する（ステップＳ３８１）。暫定肩幅Ｆｓが０よりも大きい場合（ステップＳ３８１においてＮｏ）、肩検出部１２は、暫定肩尤度Ｄｓを基準画素Ｐｃの肩尤度Ｇｓ（ｉ，ｊ）として設定する（ステップＳ３８２）。暫定肩幅Ｆｓが０である場合（ステップＳ３８１においてＹｅｓ）、暫定肩尤度Ｄｓの初期値を超える個別肩尤度が算出されなかったため、有意な肩幅を得られなかったことを示す。この場合、肩検出部１２は、基準画素Ｐｃが肩の中心でないと判断し、基準画素Ｐｃの肩尤度Ｇｓ（ｉ，ｊ）を０に設定する（ステップＳ３８３）。
【０１０６】
以上、基準画素Ｐｃの肩尤度及び推定肩幅の計算処理を説明した。枠２１ａ内の各画素の肩尤度及び推定肩幅が、上述の処理に基づいて実行される。
【０１０７】
［４．３．後処理（ステップＳ３４）］
図７に示すように、肩検出部１２は、図７に示すステップＳ３１〜Ｓ３３を繰り返し実行することにより、枠２１ａ〜２１ｃ内の横エッジ画像２２の各画素の肩尤度及び推定肩幅を計算する。全ての枠が選択された場合（ステップＳ３１においてＹｅｓ）、肩検出部１２は、枠２１ａ〜２１ｃの肩尤度を用いて、肩尤度画像２７を生成する（ステップＳ３４１）。
【０１０８】
図１２は、図５に示す横エッジ画像２２に基づいて生成された肩尤度画像２７を示す図である。図１２に示す枠２７ａ〜２７ｃは、図４に示す枠２１ａ〜２１ｃにそれぞれ対応する。肩検出部１２は、枠２７ａ〜２７ｃ内の各画素の画素値をステップＳ３３５で得られた肩尤度に設定する。枠２７ａ〜２７ｃの外側に位置する画素の画素値は、０に設定される。これにより、肩尤度画像２７が生成される。
【０１０９】
次に、肩検出部１２は、肩尤度画像２７を２値化し（ステップＳ３４２）、２値化された肩尤度画像２７に対して縮退・膨張処理を実行する（ステップＳ３４３）。これにより、２値化された肩尤度画像２７に含まれる細かいパターンが除去される。肩検出部１２は、細かいパターンが除去された肩尤度画像２７に対してラベリング処理を実行する（ステップＳ３４４）。これにより、０よりも大きい肩尤度が集まっている領域に対してユニークな番号が割り当てられる。
【０１１０】
肩検出部１２は、ラベリングされた領域のうち一定値以下の面積を有する領域を削除し、一定値よりも大きい面積の領域のみを残す肩幅候補選択処理を実行する（ステップＳ３４５）。肩検出部１２は、ステップＳ３４５により、領域Ｒ１〜Ｒ５（図１２参照）を肩尤度画像２７から選択する。
【０１１１】
［４．４．肩幅決定処理（ステップＳ３５）］
肩検出部１２は、各領域Ｒ１〜Ｒ５ごとに、肩幅と肩の中心を決定する（ステップＳ３５）。図１３は、肩幅決定処理（ステップＳ３５）のフローチャートである。図１３に示す処理は、領域Ｒ１〜Ｒ５の各々に対して実行される。以下、領域Ｒ１における肩の中心及び肩幅を決定する場合を例に説明する。
【０１１２】
肩検出部１２は、領域Ｒ１内の画素のうち、最大の肩尤度を有する画素を特定する（ステップＳ３５１）。特定された画素の位置が、領域Ｒ１における肩の中心として決定される（ステップＳ３５２）。肩の中心に決定された画素の推定肩幅Ｈｓ（ｉ，ｊ）が領域Ｒ１における人物の肩幅として決定される（ステップＳ３５３）。対象領域の肩の中心及び肩幅が、肩候補データ２４に記録される。
【０１１３】
なお、左画素群ＬＧ１及び右画素群ＲＧ１の形状が鉤型である場合を例に説明したが、左画素群ＬＧ１及び右画素群ＲＧ１は、他の形状であってもよい。例えば、右上方向に延びる直線を形成する複数の画素を、左画素群ＬＧ１とし、左上方向に延びる直線を形成する複数の画素を、右画素群ＲＧ１としてもよい。あるいは、左画素群ＬＧ１及び右画素群ＲＧ１は、曲線を形成してもよい。つまり、左画素群ＬＧ１及び右画素群ＲＧ１は、人物の肩の形状に合う所定形状に設定されればよい。
【０１１４】
また、画素ＬＰ１〜ＬＰ４，ＲＰ１〜ＲＰ２のＹ座標が、基準画素ＰｃのＹ座標に一致する例を説明したが、これに限定されない。左画素群ＬＧ１及び右画素群ＲＧ１は、基準画素の左右に位置するように配置されればよい。
【０１１５】
［５．足先検出処理（ステップＳ４）］
図１４は、足先検出処理（ステップＳ４）を示すフローチャートである。足先検出部１３は、肩検出処理（ステップＳ３）により肩が存在すると判定された領域Ｒ１〜Ｒ５（図１２参照）の各々に対して足先検出処理（ステップＳ４）を実行する。これにより、領域Ｒ１〜Ｒ５の肩の中心に対応する足先の位置が特定される。足先検出処理では、横エッジ画像２２が用いられる。以下、領域Ｒ１に対応する足先の位置を特定する場合を例に説明する。
【０１１６】
図１４に示すように、足先検出部１３は、探索範囲データ２６と、肩候補データ２４に記録された領域Ｒ１の肩の中心座標及び肩幅に基づいて、領域Ｒ１に対応する足先探索領域を決定する（ステップＳ４１）。
【０１１７】
足先検出部１３は、足先探索領域内の横エッジ画像２２の画素値を、横方向に積算することにより、足先値を計算する（ステップＳ４２）。つまり、足先値は、横方向に配列された画素ラインごとに生成される。足先値は、足先探索領域における足先の位置を特定するために、ステップＳ４３で使用される。
【０１１８】
足先検出部１３は、ステップＳ４２で求められた足先値に基づいて、領域Ｒ１に対応する足先位置を特定する（ステップＳ４３）。具体的には、足先検出部１３は、ステップＳ４２により積算された足先値のうち、所定の条件を満たす足先値を特定する。所定の条件を満たす足先値のうち、領域Ｒ１の肩の中心に一番近い足先値を有する画素ラインのＹ座標が、領域Ｒ１に対応する足先の位置として特定される。
【０１１９】
以下、足先検出処理の各ステップについて詳しく説明する。
【０１２０】
［５．１．足先探索領域の決定（ステップＳ４１）］
図１５は、領域Ｒ１における肩の中心ＰＳＨと、足先探索領域ＴＥ１との位置関係を示す図である。図１５に示すように、足先探索領域ＴＥ１は、長方形の領域として定義される。肩の中心ＰＳＨの座標を、（ＸＳＨ，ＹＳＨ）と仮定した場合、足先探索領域ＴＥ１の左上頂点の画素ＰＴＥ１のＸ座標ＸＰＴＥ１と、Ｙ座標ＹＰＴＥ１とは、下記式（７）で表され、右下頂点の画素ＰＴＥ２のＸ座標ＸＰＴＥ２と、Ｙ座標ＹＰＴＥ２とは、下記式（８）で表される。
【０１２１】
【数７】
2014186524.tif 000009
【０１２２】
【数８】
2014186524.tif 000010
【０１２３】
上記式（７），（８）において、ＳＨ＿Ｗは、領域Ｒ１の肩幅であり、Ｐ，Ｑ，ｎは、任意の定数である。好ましくは、Ｐは、２であり、Ｑは、３である。ｎは、２以上５以下の整数である。
【０１２４】
上記式（７），（８）は、探索範囲データ２６に記録されている。足先検出部１３は、上記式（７），（８）を用いて足先探索領域ＴＥ１を決定し、後述する足先値計算処理（ステップＳ４２）を実行する。
【０１２５】
［５．２．足先値計算処理（ステップＳ４２）］
図１６は、足先探索領域ＴＥ１における足先値の計算方法を説明する図である。図１６において、足先探索領域ＴＥ１内の画素の表示を一部省略している。
【０１２６】
図１６に示すように、足先検出部１３は、足先探索領域ＴＥ１内の横エッジ画像２２の各画素の画素値を画素ラインごとに積算することにより、足先値を計算する。画素ラインとは、足先探索領域内の横方向に１列に並ぶ画素の配列である。例えば、足先検出部１３は、画素ライン７１に含まれる各画素の画素値を積算することにより、画素ライン７１の足先値を計算する。
【０１２７】
図１７は、足先値計算処理（ステップＳ４２）のフローチャートである。足先検出部１３は、足先探索領域ＴＥ１の上から順に、各画素ラインの足先値を計算する。以下、図１６及び図１７を参照しながら、足先値の計算手順について詳しく説明する。
【０１２８】
足先検出部１３は、画素ライン７１の足先値を計算するために、足先値の計算対象の画素ラインのＹ座標として、ＹＰＴＥ１を設定する（ステップＳ４２１）。足先検出部１３は、計算対象の画素ラインが足先探索領域ＴＥ１内であるか否かを判断するために、設定された画素ラインのＹ座標がＹＰＴＥ２以下であるか否かを判断する（ステップＳ４２２）。
【０１２９】
計算対象の画素ラインのＹ座標がＹＰＴＥ２以下である場合（ステップＳ４２２においてＹｅｓ）、足先検出部１３は、積算対象の画素を決定するために、積算対象の画素のＸ座標をＸＰＴＥ１に設定する（ステップＳ４２３）。ステップＳ４２３が最初に実行された場合、積算対象の画素は、画素ＰＴＥ１に設定される。
【０１３０】
足先検出部１３は、画素ライン７１の足先値を０に初期化し（ステップＳ４２４）、積算対象の画素のＸ座標が足先探索領域ＴＥ１内であるか否かを判断するために、設定されたＸ座標がＸＰＴＥ２以下であるか否かを判断する（ステップＳ４２５）。
【０１３１】
積算対象の画素のＸ座標がＸＰＴＥ２以下である場合（ステップＳ４２５においてＹｅｓ）、足先検出部１３は、積算対象の横エッジ画像２２の画素の画素値を足先値に加算する（ステップＳ４２６）。足先検出部１３は、積算対象の画素のＸ座標をインクリメントする（ステップＳ４２７）。これにより、現在の積算対象の画素の右に隣接する画素が、新たな積算対象に設定される。
【０１３２】
足先検出部１３は、積算対象の画素のＸ座標がＸＰＴＥ２よりも大きくなるまで（ステップＳ４２５においてＮｏ）、ステップＳ４２６，Ｓ４２７を繰り返す。これにより、画素ライン７１の足先値が計算される。
【０１３３】
積算対象の画素のＸ座標がＸＰＴＥ２よりも大きい場合（ステップＳ４２５においてＮｏ）、足先検出部１３は、計算対象の画素ラインを変更するために、計算対象の画素ラインのＹ座標をインクリメントする（ステップＳ４２８）。これにより、現在の計算対象の画素ラインの下に隣接する画素ラインが、新たな計算対象に設定される。インクリメントされたＹ座標がＹＰＴＥ２以下である場合（ステップＳ４２２においてＹｅｓ）、次の画素ラインの足先値の計算を開始するために、積算対象の画素のＸ座標がＸＰＴＥ１に設定される（ステップＳ４２３）。
【０１３４】
以下、計算対象の画素ラインのＹ座標がＹＰＴＥ２よりも大きくなるまで（ステップＳ４２２においてＮｏ）、ステップＳ４２２〜Ｓ４２８が繰り返される。この結果、足先探索領域ＴＥ１内の各画素ラインの足先値が計算される。
【０１３５】
［５．３．足先位置特定処理（ステップＳ４３）］
足先検出部１３は、ステップＳ４２で計算された各画素ラインの足先値を用いて、領域Ｒ１の肩の中心ＰＳＨに対応する足先の位置を特定する。まず、図１６を参照しながら、足先の位置の決定手順の概略を説明する。
【０１３６】
足先検出部１３が、判定対象として画素ライン７３を選択したと仮定する。足先検出部１３は、画素ライン７３の上下に隣接する画素ライン７２，７４のうち、足先値の低い画素ラインを決定する。ここでは、画素ライン７２が決定されたと仮定する。
【０１３７】
足先検出部１３は、判定対象の画素ライン７３の足先値が画素ライン７２の足先値のｓ倍よりも大きく、かつ、判定対象の画素ライン７３の足先値が画素ライン７１〜７５の平均値のｓ倍よりも大きい場合、画素ライン７３を、肩の中心ＰＳＨの足先の候補として決定する。
【０１３８】
足先検出部１３は、足先探索領域ＴＥ１内の各画素ラインが上記の条件を満たすか否かを判断することにより、足先の候補となる画素ラインを決定する。候補に決定された画素ラインのうち、肩の中心ＰＳＨに最も近い画素ラインのＹ座標が、肩の中心ＰＳＨに対応する足先の位置として特定される。
【０１３９】
図１８は、足先位置特定処理（ステップＳ４３）のフローチャートである。以下、図１６及び図１８を参照しながら、足先位置特定処理（ステップＳ４３）を実行する足先検出部１３の動作を説明する。
【０１４０】
足先検出部１３は、足先検出フラグＦｒｓを０に初期化する（ステップＳ４３１）。足先検出フラグＦｒｓは、足先位置が足先探索領域ＴＥ１から特定されたか否かを示し、後述するサイズ決定処理（ステップＳ８）で用いられる。足先検出フラグＦｒｓが０である場合、足先の位置が特定されなかったことを示し、足先検出フラグＦｒｓが１以上である場合、足先の位置が特定されたことを示す。
【０１４１】
足先検出部１３は、足先探索領域ＴＥ１内の各画素ラインの足先値の平均を算出する（ステップＳ４３２）。
【０１４２】
足先検出部１３は、足先探索領域ＴＥ１の下側から順に、画素ラインが足先の条件を満たすか否かを判定する。足先検出部１３は、足先探索領域ＴＥ１の画素ラインの中から、判定対象の画素ラインを選択する（ステップＳ４３３）。初回の選択時には、足先探索領域ＴＥ１において下から２番目に位置する画素ラインが選択される。一番下の画素ライン７５には、比較の対象となる下側の画素ラインが存在しないため、画素ライン７５は、判定対象として選択されない。同様の理由で、足先探索領域ＴＥ１の一番上に位置する画素ラインは、判定対象として選択されない。
【０１４３】
足先検出部１３は、選択された画素ラインが比較対象の画素ラインを有するか否かを判断するために、選択された画素ラインのＹ座標がＹＰＴＥ１より大きいか否かを判断する（ステップＳ４３４）。
【０１４４】
選択された画素ラインのＹ座標がＹＰＴＥ１より大きい場合（ステップＳ４３４においてＹｅｓ）、足先検出部１３は、判定対象の画素ラインの上下に隣接する画素ラインが有する足先値の内、小さい方の足先値を特定する（ステップＳ４３５）。判定対象の画素ラインの足先値が、特定された足先値のｓ倍より大きい場合（ステップＳ４３６においてＹｅｓ）、足先検出部１３は、ステップＳ４３７に進む。一方、判定対象の画素ラインの足先値が、特定された足先値のｓ倍以下である場合（ステップＳ４３６においてＮｏ）、足先検出部１３は、判定対象の画素ラインが足先の条件を満たさないと判断し、次の画素ラインを選択するためにステップＳ４４０に進む。
【０１４５】
足先検出部１３は、ステップＳ４３７において、判定対象の画素ラインの足先値が足先値の平均のｓ倍よりも大きいか否かを判断する。判定対象の画素ラインの足先値が足先値の平均のｓ倍以下である場合（ステップＳ４３７においてＮｏ）、足先検出部１３は、判定対象の画素ラインが足先の条件を満たさないと判断し、次の画素ラインを選択するためにステップＳ４４０に進む。
【０１４６】
一方、判定対象の画素ラインの足先値が足先値の平均のｓ倍よりも大きい場合（ステップＳ４３７においてＹｅｓ）、足先検出部１３は、判定対象の画素ラインが足先の条件を満たすと判断し、足先検出フラグＦｒｓをインクリメントする（ステップＳ４３８）。足先検出部１３は、判定対象の画素ラインのＹ座標を足先位置ＴＥｙとして登録する（ステップＳ４３９）。
【０１４７】
足先検出部１３は、次の画素ラインを判定対象に選択するために、判定対象の画素ラインのＹ座標をデクリメントする（ステップＳ４４０）。デクリメントされたＹ座標に基づいて、判定対象の画素ラインが新たに選択される（ステップＳ４３３）。Ｙ座標がデクリメントされる理由は、上述のように、画素ラインが足先の条件を満たすか否かを、足先探索領域ＴＥ１の下側から順に判断するためである。
【０１４８】
以下、足先検出部１３は、判定対象の画素ラインのＹ座標がＹＰＴＥ１以下となるまで（ステップＳ４３４においてＮｏ）、ステップＳ４３５〜Ｓ４４０を繰り返す。これにより、足先位置ＴＥｙは、足先の条件を満たす画素ラインが特定される度に更新される（ステップＳ４３９）。この結果、足先検出部１３は、足先の条件を満たす画素ラインのうち、肩の中心ＰＳＨに最も近い画素ラインを足先位置として特定することができる。
【０１４９】
［６．頭頂検出処理（ステップＳ５）］
［６．１．頭頂検出処理（ステップＳ５）の概略］
図１９は、頭頂検出処理（ステップＳ５）を示すフローチャートである。頭頂検出部１４は、肩検出処理（ステップＳ３）により肩が存在すると判定された領域Ｒ１〜Ｒ５（図１２参照）の各々に対して頭頂検出処理（ステップＳ５）を実行する。これにより、領域Ｒ１〜Ｒ５の肩の中心に対応する頭頂の位置が特定される。頭頂検出処理では、横エッジ画像２２が用いられる。以下、領域Ｒ１に対応する頭頂の位置を特定する場合を例に説明する。
【０１５０】
頭頂検出処理（ステップＳ５）は、頭頂の位置を探索する頭頂探索領域の決定方法などを除いて、上述の足先検出処理（ステップＳ４）と同様である。従って、頭頂検出処理（ステップＳ５）の説明において、足先検出処理（ステップＳ４）と共通する説明を一部省略する。
【０１５１】
図１９に示すように、足先検出部１３は、領域Ｒ１の肩の中心ＰＳＨに基づいて、領域Ｒ１に対応する頭頂探索領域を決定する（ステップＳ５１）。
【０１５２】
図２０は、肩の中心ＰＳＨと、頭頂探索領域ＨＴ１との位置関係を示す図である。図２０に示すように、頭頂探索領域ＨＴ１は、長方形の領域として定義される。頭頂探索領域ＨＴ１の左上頂点の画素ＰＨＴ１のＸ座標ＸＰＨＴ１と、Ｙ座標ＹＰＨＴ１とは、下記式（８）で表され、右下頂点の画素ＰＨＴ２のＸ座標ＸＰＨＴ２と、Ｙ座標ＹＰＨＴ２とは、下記式（９）で表される。
【０１５３】
【数９】
2014186524.tif 000011
【０１５４】
【数１０】
2014186524.tif 000012
【０１５５】
上記式（９），（１０）において、ｎ，ｍは、任意の定数である。定数ｎは、式（７），（８）で用いられる定数ｎと共通である。ｍは、３以上６以下の整数である。式（９），（１０）は、探索範囲データ２６に記録されている。頭頂検出部１４は、上記式（９），（１０）を用いて頭頂探索領域ＨＴ１を決定し、後述する頭頂値計算処理（ステップＳ５２）を実行する。
【０１５６】
頭頂検出部１４は、頭頂探索領域ＨＴ１内の横エッジ画像２２の画素値を、横方向に積算することにより、頭頂値を計算する（ステップＳ５２）。頭頂値は、頭頂探索領域ＨＴ１における頭頂の位置を特定するために、ステップＳ５３で使用される。
【０１５７】
頭頂検出部１４は、ステップＳ５２で求められた頭頂値に基づいて、領域Ｒ１に対応する頭頂位置を特定する（ステップＳ５３）。頭頂検出部１４は、ステップＳ５２により積算された各画素ラインの頭頂値のうち、足先検出処理（ステップＳ４）で用いた条件と同じ条件を有する画素ラインの頭頂値を特定する。特定された頭頂値を有する画素ラインのうち、領域Ｒ１の肩の中心ＰＳＨに一番近い画素ラインのＹ座標が、領域Ｒ１に対応する頭頂の位置として特定される。
【０１５８】
［６．２．頭頂値の計算（ステップＳ５２）］
図２１は、頭頂値計算処理（ステップＳ５２）のフローチャートである。頭頂検出部１４により検出される頭頂値の計算方法は、計算対象の領域が頭頂探索領域ＨＴ１となる点を除き、上述した足先値の計算方法と同様である。つまり、図２１のステップＳ５２１〜Ｓ５２８は、図１７のステップＳ４２１〜Ｓ４２８に対応する。
【０１５９】
頭頂検出部１４は、頭頂値の計算対象の画素ラインのＹ座標として、ＹＰＨＴ１を設定する（ステップＳ５２１）。頭頂検出部１４は、設定された画素ラインのＹ座標がＹＰＨＴ２以下であるか否かを判断する（ステップＳ５２２）。
【０１６０】
計算対象の画素ラインのＹ座標がＹＰＨＴ２以下である場合（ステップＳ５２２においてＹｅｓ）、頭頂検出部１４は、積算対象の画素のＸ座標をＸＰＨＴ１に決定する（ステップＳ５２３）。積算対象の画素のＹ座標は、ステップＳ５２１で設定されたＹＰＨＴ１である。積算対象に最初に設定される画素は、画素ＰＨＴ１である。
【０１６１】
頭頂検出部１４は、計算対象の画素ラインの頭頂値を初期化する（ステップＳ５２４）。積算対象の画素のＸ座標がＸＰＨＴ２以下である場合（ステップＳ５２５においてＹｅｓ）、頭頂検出部１４は、積算対象の横エッジ画像２２の画素の画素値を頭頂値に加算する（ステップＳ５２６）。頭頂検出部１４は、は、積算対象の画素のＸ座標をインクリメントする（ステップＳ５２７）。これにより、現在の積算対象の画素の右に隣接する画素が、新たな積算対象に設定される。
【０１６２】
頭頂検出部１４は、積算対象の画素のＸ座標がＸＰＨＴ２よりも大きくなるまで（ステップＳ５２５においてＮｏ）、ステップＳ５２６，Ｓ５２７を繰り返す。積算対象の画素のＸ座標がＸＰＨＴ２よりも大きい場合（ステップＳ５２５においてＮｏ）、頭頂検出部１４は、計算対象の画素ラインのＹ座標をインクリメントする（ステップＳ５２８）。これにより、現在の計算対象の画素ラインの下に隣接する画素ラインが、新たな計算対象に設定される。次の画素ラインの頭頂値の計算を開始するために、積算対象の画素のＸ座標がＸＰＨＴ１に設定される（ステップＳ５２３）。
【０１６３】
以下、計算対象の画素ラインのＹ座標がＹＰＨＴ２よりも大きくなるまで（ステップＳ５２２においてＮｏ）、ステップＳ５２２〜Ｓ５２８が繰り返される。この結果、頭頂探索領域ＨＴ１内の各画素ラインの頭頂値が計算される。
【０１６４】
［６．３．頭頂位置検出処理（ステップＳ５３）］
頭頂検出部１４は、ステップＳ５２で計算された各画素ラインの頭頂値を用いて、領域Ｒ１の肩の中心ＰＳＨに対応する頭頂の位置を決定する。頭頂の位置の決定方法は、足先の位置の決定方法と同様である。
【０１６５】
図２２は、頭頂位置検出処理（ステップＳ５３）のフローチャートである。図２２に示すステップＳ５３１〜５４０は、図１８に示すステップＳ４３１〜Ｓ４４０に対応する。ただし、頭頂検出部１４は、頭頂探索領域ＨＴ１の上側の画素ラインから順に、画素ラインが頭頂の条件を満たすか否かを判定する。
【０１６６】
頭頂検出部１４は、頭頂検出フラグＨｒｓを０に初期化する（ステップＳ５３１）。頭頂検出フラグＨｒｓは、頭頂位置が頭頂探索領域ＨＴ１から特定されたか否かを示し、後述するサイズ決定処理（ステップＳ８）で用いられる。頭頂検出フラグＨｒｓが０である場合、頭頂の位置が特定されなかったことを示し、頭頂検出フラグＨｒｓが１以上である場合、頭頂の位置が特定されたことを示す。
【０１６７】
頭頂検出部１４は、頭頂探索領域ＨＴ１内の各画素ラインの頭頂値の平均を算出する（ステップＳ５３２）。頭頂検出部１４は、頭頂探索領域ＨＴ１の画素ラインの中から、判定対象の画素ラインを選択する（ステップＳ５３３）。初回の選択時には、頭頂探索領域ＨＴ１の上から２番目に位置する画素ラインが選択される。
【０１６８】
頭頂検出部１４は、判定対象の画素ラインのＹ座標がＹＰＨＴ２より小さいか否かを判断する（ステップＳ５３４）。判定対象のＹ座標がＹＰＨＴ２より小さい場合（ステップＳ５３４においてＹｅｓ）、頭頂検出部１４は、判定対象の画素ラインの上下に隣接する画素ラインが有する頭頂値のうち、小さいほうの頭頂値を特定する（ステップＳ５３５）。判定対象の画素ラインの頭頂値が特定された頭頂値のｓ倍より大きい場合（ステップＳ５３６においてＹｅｓ）、頭頂検出部１４は、ステップＳ５３７に進む。一方、判定対象の画素ラインの頭頂値が特定された頭頂値のｓ倍以下である場合（ステップＳ５３６においてＮｏ）、頭頂検出部１４は、判定対象の画素ラインが頭頂の条件を満たさないと判断し、次の画素ラインを選択するためにステップＳ５４０に進む。
【０１６９】
頭頂検出部１４は、判定対象の画素ラインの頭頂値が頭頂値の平均のｓ倍以下である場合（ステップＳ５３７においてＮｏ）、頭頂検出部１４は、次の画素ラインを選択するためにステップＳ５４０に進む。一方、判定対象の画素ラインの頭頂値が頭頂値の平均のｓ倍よりも大きい場合（ステップＳ５３７においてＹｅｓ）、頭頂検出部１４は、判定対象の画素ラインが頭頂の条件を満たすと判断し、頭頂検出フラグＨｒｓをインクリメントする（ステップＳ５３８）。頭頂検出部１４は、判定対象の画素ラインのＹ座標を頭頂位置ＨＴｙとして登録する（ステップＳ５３９）。
【０１７０】
頭頂検出部１４は、次の画素ラインを判定対象に選択するために、判定対象の画素ラインのＹ座標をインクリメントする（ステップＳ５４０）。インクリメントされたＹ座標に基づいて、判定対象の画素ラインが新たに選択される（ステップＳ５３３）。
【０１７１】
以下、頭頂検出部１４は、判定対象の画素ラインのＹ座標がＹＰＨＴ２以上となるまで（ステップＳ５３４においてＮｏ）、ステップＳ５３５〜Ｓ５４０を繰り返す。これにより、頭頂位置ＨＴｙは、頭頂の条件を満たす画素ラインが特定される度に更新される（ステップＳ５３９）。この結果、頭頂検出部１４は、頭頂の条件を満たす画素ラインのうち、肩の中心ＰＳＨに最も近い画素ラインを頭頂位置として特定することができる。
【０１７２】
［７．胴検出処理（ステップＳ６）］
図２３は、図３に示す胴検出処理（ステップＳ６）のフローチャートである。胴検出処理（ステップＳ６）は、胴検出部１５により実行される。胴検出部１５は、肩が存在すると判定された領域Ｒ１〜Ｒ５（図１２参照）の各々に対して、図２３に示す処理を実行する。これにより、領域Ｒ１〜Ｒ５の肩の中心に対応する胴の中心及び胴幅が特定される。  胴検出処理（ステップＳ６）では、縦エッジ画像２３が用いられる。以下、領域Ｒ１に対応する胴の中心及び胴幅を検出する場合を例に説明する。
【０１７３】
図２３に示すように、胴検出部１５は、探索範囲データ２６と、肩候補データ２４に記録された領域Ｒ１の肩の中心、肩幅とに基づいて、領域Ｒ１に対応する胴探索領域を決定する（ステップＳ６１）。
【０１７４】
胴検出部１５は、胴探索領域内の各画素の胴尤度を計算する（ステップＳ６２）。胴尤度とは、各画素が胴の中心であろう度合いを示す。胴検出部１５は、各画素の胴尤度を縦方向（Ｙ軸方向）に積算することにより、胴積算値を計算する（ステップＳ６３）。以下、胴探索領域と、後述する脚探索領域において縦方向に並ぶ画素の列を「カラム」と呼ぶ。
【０１７５】
胴検出部１５は、各カラムの胴積算値に基づいて、胴探索領域内における胴の有無を決定する（ステップＳ６４）。胴検出部１５は、各カラムの胴積算値に基づいて、領域Ｒ１の肩に対応する胴の中心及び胴幅を決定する（ステップＳ６５）。なお、ステップＳ６４において、胴が存在しないと判断された場合、ステップＳ６５を省略してもよい。
【０１７６】
［７．１．胴探索領域決定（ステップＳ６１）］
図２４は、肩の中心ＰＳＨと、胴探索領域ＢＤ１との位置関係を示す図である。図２４に示すように、胴探索領域ＢＤ１は、長方形の領域として定義される。胴探索領域ＢＤ１の左上頂点の画素ＰＢＤ１のＸ座標ＸＰＢＤ１と、Ｙ座標ＹＰＢＤ１とは、下記式（１１）で表され、右下頂点の画素ＰＢＤ２のＸ座標ＸＰＢＤ２と、Ｙ座標ＹＰＢＤ２とは、下記式（１２）で表される。窓幅ｗｉｎｂについては、後述する。
【０１７７】
【数１１】
2014186524.tif 000013
【０１７８】
【数１２】
2014186524.tif 000014
【０１７９】
上記式（１１），（１２）において、定数ｎは、式（７），（８）で用いられる定数ｎと共通である。定数Ｒは、好ましくは、２である。胴検出部１５は、探索範囲データ２６に記録された上記式（１１），（１２）を用いて、胴探索領域ＢＤ１を決定する。
【０１８０】
［７．２．胴尤度計算処理（ステップＳ６２）］
胴検出部１５は、胴探索領域ＢＤ１内の各画素の胴尤度を計算する（ステップＳ６２）。胴尤度の計算手順は、肩尤度の計算手順（図１１参照）と基本的に同じである。ただし、胴尤度の計算に用いられる左画素群及び右画素群は、肩尤度の計算に用いられる左画素群ＬＧ１及び右画素群ＲＧ１と形状が異なる。また、中心画素群ＣＧは、胴尤度の計算に用いられない。
【０１８１】
図２５は、各画素の胴尤度及び推定胴幅の計算手順を説明する図である。図２５に示す各画素は、縦エッジ画像２３の画素である。基準画素Ｐｂは、胴尤度の計算対象である。基準画素Ｐｂの左右に位置する左画素群ＬＧ２及び右画素群ＲＧ２を想定する。左画素群ＬＧ２及び右画素群ＲＧ２は、Ｙ軸方向に連続して並ぶ３つの画素である。左画素群ＬＧ２は、上から順に画素ＬＰ６〜ＬＰ８を有する。右画素群ＲＧ２は、上から順に画素ＲＰ６〜ＲＰ８を有する。画素ＬＰ６，ＲＰ６は、基準画素Ｐｂと同じＹ座標を有する。
【０１８２】
胴検出部１５は、基準画素Ｐｂから間隔ｋｂの位置にある左画素群ＬＧ２の各画素を重み付け加算することにより、左演算値を生成する。胴検出部１５は、基準画素Ｐｂから間隔ｋｂの位置にある右画素群ＲＧ２の各画素を重み付け加算することにより、右演算値を生成する。左演算値及び右演算値を加算した数値が、間隔ｋｂにおける胴尤度として得られる。
【０１８３】
胴検出部１５は、間隔ｋｂを、最小窓幅ｗｂｍｉｎの半分〜最大窓幅ｗｂｍａｘの範囲で変化させることにより、それぞれの間隔ｋｂにおける胴尤度（個別胴尤度）を計算する。最小窓幅ｗｂｍｉｎ及び最大窓幅ｗｂｍａｘは、左画素群ＬＧ２から右画素群ＲＧまでの距離の最小値及び最大値であり、それぞれ式（１３）、（１４）により表される。
【０１８４】
【数１３】
2014186524.tif 000015
【０１８５】
【数１４】
2014186524.tif 000016
【０１８６】
式（１３），（式１４）において、定数ｆは、３以上６以下の整数である。
【０１８７】
複数の個別胴尤度のうち最大値が、基準画素Ｐｂの胴尤度として選択され、最大の個別胴尤度に対応する間隔ｋｂに基づいて推定胴幅が決定される。
【０１８８】
図２６は、基準画素Ｐｂの胴尤度及び推定胴幅の計算処理（ステップＳ６２）のフローチャートである。図２６に示す処理は、胴探索領域ＢＤ１内の画素ごとに実行される。図２６に示すステップＳ６６１〜Ｓ６７２は、図１１に示すステップＳ３７２〜Ｓ３８３に対応する。以下、図１１に示す処理と同様の処理については、説明を一部省略する。
【０１８９】
胴探索領域ＢＤ１内の各画素は、図９に示す処理と同様の手順で計算対象に決定される。すなわち、胴探索領域ＢＤ１内の画素は、胴探索領域ＢＤ１の左上頂点の画素ＰＢＤ１から右上頂点の画素ＰＢＤ２まで、左から右に順次スキャンされる。
【０１９０】
図２６に示すように、胴検出部１５は、間隔ｋｂ、暫定胴尤度Ｄｂ、暫定胴幅Ｆｂを初期化する（ステップＳ６６１）。暫定胴尤度Ｄｂは、現時点までに計算された個別胴尤度の最大値であり、所定の初期値が設定される。間隔ｋｂの初期値は、最小窓幅（ｗｂｍｉｎ）の半分である。暫定胴幅Ｆｂは、０に設定される。
【０１９１】
間隔ｋｂが最大窓幅（ｗｂｍａｘ）の半分よりも小さい場合（ステップＳ６６２においてＹｅｓ）、胴検出部１５は、左画素群ＬＧ２の各画素を重み付け加算した左演算値ＢＤ＿Ｌと、右画素群ＲＧ２の各画素値を重み付け加算した右演算値ＢＤ＿Ｒとを計算する（ステップＳ６６３）。左演算値ＢＤ＿Ｌ、右演算値ＢＤ＿Ｒの計算には、下記式（１５）、（１６）が用いられる。
【０１９２】
【数１５】
2014186524.tif 000017
【０１９３】
【数１６】
2014186524.tif 000018
【０１９４】
式（１５），（１６）において、Ｙｖは、縦エッジ画像２３の各画素の画素値を示す。定数ｃは、画素ＬＰ７，ＲＰ７の重み付け係数であり、定数ｄは、画素ＬＰ８，ＲＰ８の重み付け係数である。画素ＬＰ６，ＲＰ６の重み付け係数は、１である。胴検出部１５は、右演算値ＢＤ＿Ｒを左演算値ＢＤ＿Ｌに加算して、現在の間隔ｋｂに対応する個別胴尤度ＢＤ＿Ｃを計算する（ステップＳ６６４）。
【０１９５】
個別胴尤度ＢＤ＿Ｃが暫定胴尤度Ｄｂよりも大きい場合（ステップＳ６６５においてＹｅｓ）、胴検出部１５は、暫定胴尤度Ｄｂの更新条件が満たされているか否かを判断する（ステップＳ６６６）。具体的には、胴検出部１５は、上記式（４），（５）の左演算値ＳＨ＿Ｌ及び右演算値ＳＨ＿Ｒを、左演算値ＢＤ＿Ｌ及び右演算値ＢＤ＿Ｒに置き換えた式に基づいて、左演算値ＢＤ＿Ｌと右演算値ＢＤ＿Ｒとの間に極端な差が存在するか否かを判断する。胴検出部１５は、極端な差がないと判断した場合（ステップＳ６６６においてＮｏ）、暫定胴尤度Ｄｂを個別胴尤度ＢＤ＿Ｃに更新し、暫定胴幅Ｆｂを現在の間隔ｋｂに更新する（ステップＳ６６７）。そして、胴検出部１５は、間隔ｋｂをインクリメントする（ステップＳ６６８）。
【０１９６】
胴検出部１５は、間隔ｋｂがｗｂｍａｘ／２よりも大きくなるまで（ステップＳ６６２においてＮｏ）、ステップＳ６６３〜Ｓ６６８を繰り返す。これにより、ｗｂｍｉｎ／２〜ｗｂｍａｘ／２の範囲において、最大の個別胴尤度ＢＤ＿Ｃと、最大の個別胴尤度ＢＤ＿Ｃに対応する間隔ｋｂとが特定される。
【０１９７】
間隔ｋｂがｗｂｍａｘ／２以上である場合（ステップＳ６６２においてＮｏ）、胴検出部１５は、暫定胴幅Ｆｂに基づいて、基準画素Ｐｂの推定胴幅Ｈｂ（ｉ，ｊ）を算出する（ステップＳ６６９）。推定胴幅Ｈｂ（ｉ，ｊ）は、上記式（６）において、暫定肩幅Ｆｓを暫定胴幅Ｆｂに置換した式から求められる。
【０１９８】
暫定胴幅Ｆｂが０よりも大きい場合（ステップＳ６７０においてＮｏ）、胴検出部１５は、暫定胴尤度Ｄｂを基準画素Ｐｂの胴尤度Ｇｂ（ｉ，ｊ）として設定する（ステップＳ６７１）。暫定胴幅Ｆｂが０である場合（ステップＳ６７０においてＹｅｓ）、胴尤度Ｇｂ（ｉ，ｊ）は、０に設定される（ステップＳ６７２）。
【０１９９】
［７．３．胴積算値計算処理（ステップＳ６３）］
次に、胴検出部１５は、ステップＳ６３において、胴探索領域ＢＤ１内の各画素の胴尤度をカラムごとに積算する。図２７は、胴積算計算処理（ステップＳ６３）のフローチャートである。
【０２００】
図２７を参照しながら、胴積算値計算処理（ステップＳ６３）を説明する。胴検出部１５は、胴探索領域ＢＤ１内の各画素の胴尤度差分値を計算する（ステップＳ６３１）。胴検出部１５は、各画素の胴尤度差分値を用いて、胴尤度凸判定処理（ステップＳ６３２）を実行する。ステップＳ６３２により、胴探索領域ＢＤ１内において、左右の胴尤度よりも大きい胴尤度を有する画素が特定される。胴検出部１５は、各画素の胴尤度Ｇｂをカラムごとに積算して、胴積算値Ａｂ（ｉ）を計算する（ステップＳ６３３）。
【０２０１】
［７．３．１．胴尤度差分値の計算（ステップＳ６３１）］
図２８は、胴探索領域ＢＤ１内の一部の画素の配置及び胴尤度の分布の一例を示す図である。図２８を参照しながら、ステップＳ６３１を説明する。胴尤度差分値の計算対象が画素８３である場合、画素８３の胴尤度差分値は、画素８３の左に隣接する画素８２の胴尤度を画素８３の胴尤度から引くことにより求められる。
【０２０２】
各画素は、図９に示す処理と同様の手順で、胴尤度差分値の計算対象に決定される。ただし、画素ＰＢＤ１を含む胴探索領域ＢＤ１の左端の画素は、左隣の画素の胴尤度が計算されてないため、胴尤度差分値の計算対象外となる。
【０２０３】
［７．３．２．胴尤度凸判定処理（ステップＳ６３２）］
胴尤度凸判定処理（ステップＳ６３２）は、胴探索領域ＢＤ１内の各画素の胴尤度Ｇｂが左右の画素の胴尤度Ｇｂよりも大きい胴尤度を有するか否かを判定する処理である。
【０２０４】
図２９は、胴尤度凸判定処理（ステップＳ６３２）のフローチャートである。図２８及び図２９を参照しながら、画素８３が判定対象である場合を例にして、ステップＳ６３２を詳しく説明する。
【０２０５】
胴検出部１５は、画素８３の胴尤度Ｇｂが上に凸であるか否かを、下記式（１７）に基づいて判定する（ステップＳ６３６）。
【０２０６】
【数１７】
2014186524.tif 000019
【０２０７】
式１７において、ｌｉｎ（ｉ）は、判定対象の画素の胴尤度差分値である。ｌｉｎ（ｉ−１）は、判定対象の画素の左に隣接する画素の胴尤度差分値である。ｌｉｎ（ｉ＋１）は、判定対象の画素の右に隣接する画素の胴尤度差分値である。
【０２０８】
式（１７）に示す３つの不等式がすべて満たされる場合、画素８３の胴尤度は上に凸であると判定される（ステップＳ６３６においてＹｅｓ）。ｌｉｎ（ｉ）＞０である場合、画素８３の胴尤度は、画素８２の胴尤度よりも大きい。ｌｉｎ（ｉ−１）＞０である場合、画素８２の胴尤度は、画素８１の胴尤度よりも大きい。ｌｉｎ（ｉ＋１）＜０である場合、画素８３の胴尤度は、画素８４の胴尤度よりも大きい。この結果、画素８１〜８４の区間において、胴尤度Ｇｂのピークの位置は、画素８３となるため、画素８３の胴尤度が上に凸であると判断される。
【０２０９】
判定対象の画素が上に凸である場合（ステップＳ６３６においてＹｅｓ）、対象画素の胴尤度は、そのまま保持される。一方、対象画素が上に凸でない場合（ステップＳ６３６においてＮｏ）、対象画素の胴尤度は、０に設定される（ステップＳ６３７）。図２８に示す例では、画素８３が上に凸であると判定されるため（ステップＳ６３６においてＹｅｓ）、画素８３の胴尤度は、維持される。一方、画素８１，８２，８４が上に凸でないと判定されるため（ステップＳ６３６においてＮｏ）、画素８１，８２，８４の胴尤度は、０に設定される（ステップＳ６３７）。
【０２１０】
胴尤度凸判定処理（ステップＳ６３２）において、各画素は、図９に示す処理と同様の手順で、判定対象として選択される。しかし、胴検出部１５は、胴探索領域ＢＤの左から１番目、２番目の画素及び右端の画素を対象として、式（１７）を用いた判定（ステップＳ６３６）を実行することができない。これらの画素は、ステップＳ６３６において判定対象として選択されず、胴尤度が０に設定される。
【０２１１】
このように、上に凸でないと判定された画素の胴尤度が０に設定されるため、ステップＳ６３３で計算される各カラムの胴積算値Ａｂ（ｉ）の差を際立たせることができる。なお、胴尤度凸判定処理（ステップＳ６３２）を省略して、胴積算値Ａｂ（ｉ）を求めることも可能である。
【０２１２】
［７．４．胴有無決定（ステップＳ６４）］
図３０は、胴有無決定処理（ステップＳ６４）のフローチャートである。図３０を参照しながら、ステップＳ６４を詳しく説明する。
【０２１３】
胴検出部１５は、胴検出フラグＢｒｓを０に初期化する（ステップＳ６４１）。胴検出フラグＢｒｓは、胴が胴探索領域ＢＤ１から検出されたか否かを示し、後述するサイズ決定処理（ステップＳ８）で用いられる。胴検出フラグＢｒｓが０である場合、胴が検出されなかったことを示し、胴検出フラグＢｒｓが１以上である場合、胴が検出されたことを示す。
【０２１４】
胴検出部１５は、各カラムの胴積算値Ａｂ（ｉ）を用いて、胴積算値Ａｂ（ｉ）の平均を計算する（ステップＳ６４２）。胴検出部１５は、各カラムの胴積算値Ａｂ（ｉ）のうち最大の胴積算値（胴最大値Ｍｓｂ）を特定し、胴最大値Ｍｓｂに対応するカラムのＸ座標Ｘｍｓｂを特定する（ステップＳ６４３）。
【０２１５】
胴検出部１５は、胴最大値Ｍｓｂを有するカラムの左右に隣接する２つのカラムのうち、胴積算値Ａｂ（ｉ）の小さいカラムを選択する（ステップＳ６４４）。胴検出部１５は、胴最大値ＭｓｂがステップＳ６４４で特定されたカラムの胴積算値Ａｂ（ｉ）のｕ倍よりも大きいか否かを判断する（ステップＳ６４５）。
【０２１６】
胴最大値Ｍｓｂが特定されたカラムの胴積算値Ａｂ（ｉ）のｕ倍以下である場合（ステップＳ６４５においてＮｏ）、胴検出部１５は、胴最大値Ｍｓｂが他の胴積算値Ａｂ（ｉ）に比べて際立ったピークを有しておらず、胴探索領域ＢＤ内から有意な胴幅を検出できなかったと判断する。この場合、胴検出部１５は、胴検出フラグＢｒｓを０に維持したまま、図３０に示す処理を終了する。
【０２１７】
一方、胴最大値Ｍｓｂが特定されたカラムの胴積算値のｕ倍よりも大きい場合（ステップＳ６４５においてＹｅｓ）、胴検出部１５は、胴最大値Ｍｓｂが胴積算値の平均のｕ倍よりも大きいか否かを判断する（ステップＳ６４６）。胴検出部１５は、胴最大値Ｍｓｂが胴積算値の平均のｕ倍以下である場合（ステップＳ６４６においてＮｏ）、上記と同様に、有意な胴幅を検出できないと判断し、図３０に示す処理を終了する。
【０２１８】
一方、胴最大値Ｍｓｂが胴積算値の平均のｕ倍よりも大きい場合（ステップＳ６４６においてＹｅｓ）、胴検出部１５は、有意な胴幅が存在すると判断し、胴検出フラグＢｒｓを１に設定する（ステップＳ６４７）。そして、胴検出部１５は、胴最大値Ｍｓｂを有するカラムのＸ座標Ｘｍｓｂを暫定胴中心Ｘｃｂに設定し、図３０に示す処理を終了する。
【０２１９】
［７．５．胴幅決定（ステップＳ６５）］
図３１は、胴幅決定処理（ステップＳ６５）のフローチャートである。図３１を参照しながら、ステップＳ６５を詳しく説明する。
【０２２０】
胴検出部１５は、ステップＳ６４８で設定された暫定胴中心Ｘｃｂに基づいて、最大胴幅選択領域ＭＢＤを決定する（ステップＳ６５１）。
【０２２１】
図３２は、最大胴幅選択領域ＭＢＤと暫定胴中心Ｘｃｂとの関係を示す図である。最大胴幅選択領域ＭＢＤの左上頂点の画素ＰＢＤ３のＸ座標は、暫定胴中心Ｘｃｂから予め設定された定数Ｓを減じた数値であり、Ｙ座標は、画素ＰＢＤ１のＹ座標と等しい。右上頂点の画素ＰＢＤ４のＸ座標は、定数Ｓを暫定胴中心Ｘｃｂに加えた数値であり、Ｙ座標は、画素ＰＢＤ２のＹ座標と等しい。なお、定数Ｓは、最大胴幅選択領域ＭＢＤが胴探索領域ＢＤ１の中に位置するような値が用いられる。
【０２２２】
胴検出部１５は、最大胴幅選択領域ＭＢＤ内の各画素のうち、最大の推定胴幅Ｈｂを有する画素を特定する（ステップＳ６５２）。胴検出部１５は、最大の推定胴幅Ｈｂを領域Ｒ１に対応する胴幅に決定し（ステップＳ６５３）、最大の推定胴幅Ｈｂを有する画素の座標を胴の中心に決定する（ステップＳ６５４）。
【０２２３】
このようにして、領域Ｒ１に対応する胴の中心及び胴幅が特定される。領域Ｒ２〜Ｒ５の各々に対応する胴の中心及び胴幅も、同様に特定される。領域Ｒ１〜Ｒ５ごとに求められた胴検出フラグＢｒｓ及び胴幅は、後述するサイズ決定処理（ステップＳ８）で用いられる。
【０２２４】
［８．脚検出処理（ステップＳ７）］
図３３は、図３に示す脚検出処理（ステップＳ７）のフローチャートである。脚検出処理（ステップＳ７）は、脚検出部１６により実行される。脚検出部１６は、肩が存在すると判定された領域Ｒ１〜Ｒ５（図１２参照）の各々に対して、図３３に示す処理を実行する。これにより、領域Ｒ１〜Ｒ５の肩の中心に対応する脚が検出される。脚検出処理（ステップＳ７）では、縦エッジ画像２３が用いられる。
【０２２５】
脚検出処理（ステップＳ７）は、脚の探索対象となる脚探索領域が胴探索領域ＢＤ１と異なる点、足幅が特定されない点などを除き、胴検出処理（ステップＳ６）と同様である。以下、胴検出処理（ステップＳ６）と異なる点を中心に、領域Ｒ１に対応する脚を検出する場合を例にして脚検出処理（ステップＳ７）を説明する。
【０２２６】
図３３に示すように、脚検出部１６は、探索範囲データ２６と肩候補データ２４とに基づいて、領域Ｒ１に対応する脚探索領域を決定する（ステップＳ７１）。脚検出部１６は、脚探索領域内の各画素の脚尤度を計算する（ステップＳ７２）。脚尤度とは、各画素が脚の中心であろう度合いを示す。脚検出部１６は、各画素の脚尤度をＹ軸方向に積算して、カラムごとの脚積算値を計算する（ステップＳ７３）。脚検出部１６は、各カラムの脚積算値に基づいて、脚探索領域内における脚の有無を決定する（ステップＳ７４）。
【０２２７】
脚検出処理（ステップＳ７）では、領域Ｒ１に対応する脚の中心及び脚幅を求めなくてもよい。一般的に、人物の脚幅は、肩幅及び胴幅よりも小さいため、脚幅は、サイズ決定処理（ステップＳ８）において人物の横サイズの決定に使用されない。しかし、本実施の形態は、領域Ｒ１〜Ｒ５に対応する脚の中心及び脚幅を求めることを妨げるものではない。
【０２２８】
［８．１．脚探索領域決定（ステップＳ７１）］
図３４は、肩の中心ＰＳＨと、脚探索領域ＬＥ１との位置関係を示す図である。図３４に示すように、脚探索領域ＬＥ１の左上頂点の画素ＰＬＥ１のＸ座標ＸＰＬＥ１と、Ｙ座標ＹＰＬＥ１とは、下記式（１８）で表され、右下頂点の画素ＰＬＥ２のＸ座標ＸＰＬＥ２と、Ｙ座標ＹＰＬＥ２とは、下記式（１９）で表される。窓幅ｗｉｎＬについては、後述する。
【０２２９】
【数１８】
2014186524.tif 000020
【０２３０】
【数１９】
2014186524.tif 000021
【０２３１】
上記式（１８），（１９）において、定数ｎは、式（７），（８）で用いられる定数ｎと共通である。定数Ｖは、好ましくは、２．５である。脚検出部１６は、探索範囲データ２６に記録された上記式（１８），（１９）を用いて、脚探索領域ＬＥ１を決定する。
【０２３２】
［８．２．脚尤度計算処理（ステップＳ７２）］
脚検出部１６は、脚探索領域ＬＥ１内の各画素の脚尤度を計算する（ステップＳ７２）。胴尤度計算処理（図２６参照）と同様に、脚探索領域ＬＥ１において、基準画素Ｐｂ、左画素群ＬＧ２、及び右画素群ＲＧ２が設定される。脚尤度は、左画素群ＬＧ２の画素値を重み付け加算し、右画素群ＲＧ２の画素値を重み付け加算することにより計算される。また、胴尤度計算処理（ステップＳ６２）で用いられた最小窓幅ｗｂｍｉｎ、最大窓幅ｗｂｍａｘが、脚尤度計算処理（ステップＳ７２）でも用いられる。
【０２３３】
図３５は、脚尤度計算処理（ステップＳ７２）のフローチャートである。図３５に示すステップＳ７６１〜Ｓ７６８は、図２６に示すステップＳ６６１〜Ｓ６６８に対応し、ステップＳ７６９〜Ｓ７７１は、図２６に示すステップＳ６７０〜Ｓ６７２に対応する。これは、脚検出処理（ステップＳ７）では、脚幅を求めないため、推定脚幅を計算しなくてもよいためである。
【０２３４】
図３５に示すように、脚検出部１６は、間隔ｋＬ、暫定脚尤度ＤＬ、暫定脚幅ＦＬを初期化する（ステップＳ７６１）。間隔ｋＬが最大窓幅（ｗｂｍａｘ）の半分よりも小さい場合（ステップＳ７６２においてＹｅｓ）、脚検出部１６は、上記式（１５），（１６）において間隔ｋｂを間隔ｋＬに置換した式を用いて、左演算値ＬＥ＿Ｌ及び右演算値ＬＥ＿Ｒを計算する（ステップＳ７６３）。脚検出部１６は、右演算値ＬＥ＿Ｒを左演算値ＬＥ＿Ｌに加算して、個別脚尤度ＬＥ＿Ｃを計算する（ステップＳ７６４）。
【０２３５】
個別脚尤度ＬＥ＿Ｃが暫定脚尤度ＤＬよりも大きい場合（ステップＳ７６５においてＹｅｓ）、脚検出部１６は、左演算値ＬＥ＿Ｌと右演算値ＬＥ＿Ｒとの間に極端な差が存在するか否かを判断する（ステップＳ７６６）。脚検出部１６は、極端な差がないと判断した場合（ステップＳ７６６においてＮｏ）、暫定脚尤度ＤＬを個別脚尤度ＬＥ＿Ｃに更新し、暫定脚幅ＦＬを現在の間隔ｋＬに更新する（ステップＳ７６７）。そして、脚検出部１６は、間隔ｋＬをインクリメントする（ステップＳ７６８）。
【０２３６】
脚検出部１６は、間隔ｋＬがｗｂｍａｘ／２よりも大きくなるまで（ステップＳ７６２においてＮｏ）、ステップＳ７６３〜Ｓ７６８を繰り返す。これにより、ｗｂｍｉｎ／２〜ｗｂｍａｘ／２の範囲において、最大の個別脚尤度ＬＥ＿Ｃと、最大の個別脚尤度ＬＥ＿Ｃに対応する間隔ｋＬとが特定される。
【０２３７】
間隔ｋＬがｗｂｍａｘ／２以上である場合（ステップＳ７６２においてＮｏ）、脚検出部１６は、暫定脚幅ＦＬが０であるか否かを判断する（ステップＳ７６９）。暫定脚幅ＦＬが０よりも大きい場合（ステップＳ７６９においてＮｏ）、脚検出部１６は、暫定脚尤度ＤＬを基準画素Ｐｂの脚尤度ＧＬ（ｉ，ｊ）として設定する（ステップＳ７７０）。暫定脚幅ＦＬが０である場合（ステップＳ７６９においてＹｅｓ）、脚尤度ＧＬ（ｉ，ｊ）は、０に設定される（ステップＳ７７１）。
【０２３８】
［８．３．脚積算値計算処理（ステップＳ７３）］
図３６は、脚積算計算処理（ステップＳ７３）のフローチャートである。脚検出部１６は、胴積算値計算処理（ステップＳ６３）と同様の手順で、脚探索領域ＬＥ１の各カラムに対応する脚積算値ＡＬ（ｉ）を計算する。
【０２３９】
脚検出部１６は、脚探索領域ＬＥ１内の各画素の脚尤度差分値を計算する（ステップＳ７３１）。脚尤度差分値は、計算対象の画素の脚尤度から、左に隣接する画素の脚尤度を引くことにより求められる。
【０２４０】
脚検出部１６は、各画素の脚尤度差分値を用いて、脚尤度凸判定処理（ステップＳ７３２）を実行する。ステップＳ７３２では、図２９に示す処理と同じ処理が実行される。つまり、対象画素が上に凸である場合、対象画素の脚尤度は、そのまま維持される。対象画素が上に凸でない場合、対象画素の脚尤度は、０に設定される。
【０２４１】
ステップＳ７３２の後に、脚検出部１６は、各画素の脚尤度ＧＬをカラムごとに積算して、脚積算値ＡＬ（ｉ）を計算する（ステップＳ７３３）。
【０２４２】
［８．４．脚有無決定（ステップＳ７４）］
図３７は、脚有無決定処理（ステップＳ７４）のフローチャートである。胴有無決定処理（ステップＳ６４）では、最大の胴積算値Ａｂ（ｉ）に基づいて胴の有無を判断していたが、脚有無決定処理（ステップＳ７４）では、各カラムの脚積算値ＡＬ（ｉ）が、左右のカラムの脚積算値よりも有意なピークを有しているか否かが判定される。
【０２４３】
脚検出部１６は、脚検出フラグＬｒｓを０に初期化する（ステップＳ７４１）。脚検出フラグＬｒｓが０である場合、脚が検出されなかったことを示し、脚検出フラグＬｒｓが１以上である場合、脚が検出されたことを示す。
【０２４４】
脚検出部１６は、各カラムの脚積算値ＡＬ（ｉ）の平均を計算し（ステップＳ７４２）、判定対象のカラムのＸ座標ｉをＸＰＬＥ１＋１に設定する（ステップＳ７４４）。これにより、脚探索領域ＬＥ１の左から２番目のカラムが判定対象に選択される。左端のカラムは、比較の対象となるカラムが左側に存在しないため、判定対象から除かれる。
【０２４５】
脚検出部１６は、判定対象のカラムのＸ座標ｉがＸＰＬＥ２と等しいか否かを判断する（ステップＳ７４４）。Ｘ座標ｉがＸＰＬＥ２と等しい場合（ステップＳ７４４においてＹｅｓ）、判定対象のカラムは、脚探索領域ＬＥ１の右端であり、比較対象となる右側のカラムが存在しない。このため、脚検出部１６は、図３７に示す処理を終了する。
【０２４６】
一方、判定対象のカラムのＸ座標がＸＰＬＥ２よりも小さい場合（ステップＳ７４４においてＮｏ）、脚検出部１６は、判定対象のカラムの左右に隣接する２つのカラムのうち、脚積算値ＡＬ（ｉ）の小さいカラムを特定する（ステップＳ７４５）。脚検出部１６は、判定対象のカラムの脚積算値ＡＬ（ｉ）がステップＳ７４５で特定されたカラムの脚積算値ＡＬ（ｉ）のｗ倍よりも大きいか否かを判断する（ステップＳ７４５）。
【０２４７】
判定対象のカラムの脚積算値ＡＬ（ｉ）が特定されたカラムの脚積算値ＡＬ（ｉ）のｗ倍以下である場合（ステップＳ７４６においてＮｏ）、脚検出部１６は、判定対象のカラムの脚積算値ＡＬ（ｉ）が左右に比べて際立ったピークを有していないと判定する。
【０２４８】
一方、判定対象のカラムの脚積算値ＡＬ（ｉ）が特定されたカラムの脚積算値のｗ倍よりも大きい場合（ステップＳ７４６においてＹｅｓ）、脚検出部１６は、判定対象のカラムの脚積算値ＡＬ（ｉ）が脚積算値の平均のｗ倍よりも大きいか否かを判断する（ステップＳ７４６）。脚検出部１６は、判定対象のカラムの脚積算値ＡＬ（ｉ）が脚積算値の平均のｕ倍以下である場合（ステップＳ７４７においてＮｏ）、上記と同様に、判定対象のカラムの脚積算値ＡＬ（ｉ）が左右に比べて際立ったピークを有していないと判定する。
【０２４９】
一方、判定対象のカラムの脚積算値ＡＬ（ｉ）が脚積算値の平均のｗ倍よりも大きい場合（ステップＳ７４７においてＹｅｓ）、脚検出部１６は、判定対象のカラムの脚積算値ＡＬ（ｉ）が有意なピークを有すると判断し、脚検出フラグＬｒｓをインクリメントすることにより（ステップＳ７４８）、現在の判定対象のカラムの右側のカラムを次の判定対象に設定する。
【０２５０】
脚検出部１６は、次の判定対象のカラムのＸ座標がＸＰＬＥ２と等しくなるまで（ステップＳ７４４においてＹｅｓ）、ステップＳ７４５〜Ｓ７４８を繰り返す。これにより、脚検出フラグＬｒｓは、１以上の値に設定される。例えば、領域Ｒ１に対応する人物が、図４に示す人物２１ｍのように、入力画像２１中に背を向けて（あるいは正面を向いて）立っている場合、有意な脚積算値のピークを有する２つのカラムが特定される。この場合、脚検出フラグＬｒｓの値は、２となり、２本の脚が検出されたことを示す。あるいは、人物２１ｍの一方の脚が他方の脚の後ろに隠れている場合、有意な脚積算値のピークを有する１つのカラムが特定される。この場合、脚検出フラグＬｒｓの値は、１となり、１本の脚が検出されたことを示す。
【０２５１】
このようにして、領域Ｒ１に対応する脚が検出される。領域Ｒ２〜Ｒ５の各々に対応する脚も、同様に特定される。領域Ｒ１〜Ｒ５ごとに求められた脚検出フラグＬｒｓは、後述するサイズ決定処理（ステップＳ８）で用いられる。
【０２５２】
［９．サイズ決定処理（ステップＳ８）］
図３８は、図３に示すサイズ決定処理（ステップＳ８）のフローチャートである。以下、図３８を参照しながら、サイズ決定処理（ステップＳ８）を説明する。
【０２５３】
サイズ決定部１８は、ステップＳ３〜Ｓ６の検出結果に基づいて、領域Ｒ１〜Ｒ５の各々に対応する人物範囲を決定する（ステップＳ８１）。サイズ決定部１８は、各領域に対応する人物の確度を計算する（ステップＳ８２）。確度とは、各領域に対応する人物が実際の人物である度合いを示す数値である。サイズ決定部１８は、各領域Ｒ１〜Ｒ５に対応する人物の範囲が重複するか否かを判断する（ステップＳ８３）。複数の人物範囲が重複する場合、サイズ決定部１８は、重複する人物の範囲の中から人物範囲を１つ選択し、選択されなかった人物の範囲を消去する。
【０２５４】
［９．１．人物範囲決定（ステップＳ８１）］
図３９は、人物範囲決定処理（ステップＳ８１）のフローチャートである。サイズ決定部１８は、領域Ｒ１〜Ｒ５の各々に対して人物範囲決定処理（ステップＳ６１）を実行することにより、領域Ｒ１〜Ｒ５に対応する人物範囲データ２８を生成する。
【０２５５】
以下、領域Ｒ１に対応する人物範囲を決定する場合を例にして、人物範囲決定処理（ステップＳ６１）について詳しく説明する。
【０２５６】
サイズ決定部１８は、ステップＳ８５１〜Ｓ８５４により、領域Ｒ１に対応する人物の横サイズを決定する。サイズ決定部１８は、胴検出フラグＢｒｓが０よりも大きいか否かを判断する（ステップＳ８５１）。胴検出フラグＢｒｓが０よりも大きい場合（ステップＳ８５１においてＹｅｓ）、領域Ｒ１の肩に対応する胴幅が検出されている。サイズ決定部１８は、領域Ｒ１の肩幅が検出された胴幅よりも大きいか否かを判断する（ステップＳ８５２）。
【０２５７】
肩幅が胴幅以上である場合（ステップＳ８５２においてＹｅｓ）、サイズ決定部１８は、肩幅を領域Ｒ１に対応する人物の横サイズとして決定する（ステップＳ８５３）。一方、肩幅が胴幅よりも小さい場合（ステップＳ８５２においてＮｏ）、胴幅が検出されていない。このため、サイズ決定部１８は、胴幅を領域Ｒ１に対応する人物の横サイズとして決定する（ステップＳ８５４）。
【０２５８】
ステップＳ８５１の説明に戻る。胴検出フラグＢｒｓが０である場合（ステップＳ８５１においてＮｏ）、サイズ決定部１８は、領域Ｒ１の肩に対応する胴幅が検出されていないため、領域Ｒ１で検出された肩幅を、領域Ｒ１に対応する人物の横サイズに決定する（ステップＳ８５３）。
【０２５９】
次に、サイズ決定部１８は、ステップＳ８５５〜Ｓ８６０により、領域Ｒ１に対応する人物の縦サイズを決定する。足先検出フラグＦｒｓが０よりも大きい場合（ステップＳ８５５においてＹｅｓ）、領域Ｒ１の肩に対応する足先の位置が特定されたことを示す。この場合、サイズ決定部１８は、足先検出処理（ステップＳ４）により特定された足先位置ＴＥｙの使用を決定する（ステップＳ８５６）。
【０２６０】
一方、領域Ｒ１の足先検出フラグＦｒｓが０である場合（ステップＳ８５５においてＮｏ）、領域Ｒ１の肩に対応する足先の位置が特定されていない。このため、サイズ決定部１８は、領域Ｒ１の肩の中心ＰＳＨ及び肩幅に基づいて、足先位置を推定する（ステップＳ８５７）。例えば、サイズ決定部１８は、足先位置の推定用に予め設定された係数を領域Ｒ１の肩幅に乗じ、肩の中心ＰＳＨのＹ座標ＹＳＨに乗算値を加算することにより、足先位置を得ることができる。
【０２６１】
次に、サイズ決定部１８は、領域Ｒ１の頭頂検出フラグＨｒｓが０よりも大きいか否かを判断する（ステップＳ８５８）。頭頂検出フラグＨｒｓが０よりも大きい場合（ステップＳ８５８においてＹｅｓ）、領域Ｒ１の肩に対応する頭頂の位置が特定されている。この場合、サイズ決定部１８は、頭頂検出処理（ステップＳ５）により特定された頭頂位置ＨＴｙの使用を決定する（ステップＳ８５９）。
【０２６２】
一方、領域Ｒ１の頭頂検出フラグＨｒｓが０である場合（ステップＳ８５８においてＮｏ）、領域Ｒ１の肩に対応する頭頂の位置が特定されていない。この場合、サイズ決定部１８は、ステップＳ８５７と同様の方法で、頭頂位置を推定する（ステップ８６０）。頭頂位置の推定用に予め設定された係数は、足先位置推定用の係数と異なる値を有する。
【０２６３】
サイズ決定部１８は、足先位置と頭頂位置とに基づいて、領域Ｒ１に対応する人物の縦サイズを決定する（ステップＳ８６１）。具体的には、足先位置のＹ座標から頭頂位置のＹ座標を減算することにより、縦サイズを求めることができる。サイズ決定部１８は、領域Ｒ１に対応する肩の中心ＰＳＨ、横サイズ及び縦サイズに基づいて、領域Ｒ１に対応する人物範囲を決定し、領域Ｒ１の肩の中心ＰＳＨ，足先位置ＴＥｙ，頭頂位置ＨＴｙ、横サイズ及び縦サイズを含む人物範囲データ２８を生成する。同様にして、領域Ｒ２〜Ｒ５に対応する人物範囲データ２８が作成される。
【０２６４】
［９．２．確度計算（ステップＳ８２）］
図４０は、確度計算処理（ステップＳ８２）のフローチャートである。サイズ決定部１８は、領域Ｒ１〜Ｒ５の各々に対して確度計算処理（ステップＳ８２）を実行することにより、領域Ｒ１〜Ｒ５に対応する人物範囲データ２８が実際の人物の範囲を示す度合いとして、確度を計算する。計算された確度は、後述する重複判断処理（ステップＳ８３）で用いられる。以下、領域Ｒ１に対応する人物の確度を計算する場合を例に説明する。
【０２６５】
図４０に示すように、サイズ決定部１８は、確度を０に初期化する（ステップＳ８７１）。領域Ｒ１に対応する肩幅が０よりも大きい場合（ステップＳ８７２においてＹｅｓ）、サイズ決定部１８は、確度をインクリメントする（ステップＳ８７３）。領域Ｒ１に対応する肩幅が０である場合（ステップＳ８７２においてＮｏ）、サイズ決定部１８は、確度をインクリメントすることなく、ステップＳ８７４に進む。
【０２６６】
領域Ｒ１の胴検出フラグＢｒｓが０よりも大きい場合（ステップＳ８７４においてＹｅｓ）、サイズ決定部１８は、確度をインクリメントする（ステップＳ８７５）。領域Ｒ１の胴検出フラグＢｒｓが０である場合（ステップＳ８７４においてＮｏ）、サイズ決定部１８は、確度をインクリメントすることなく、ステップＳ８７６に進む。
【０２６７】
領域Ｒ１の頭頂検出フラグＨｒｓが０よりも大きい場合（ステップＳ８７６においてＹｅｓ）、サイズ決定部１８は、確度をインクリメントする（ステップＳ８７７）。領域Ｒ１の頭頂検出フラグＨｒｓが０である場合（ステップＳ８７６においてＮｏ）、サイズ決定部１８は、確度をインクリメントすることなく、ステップＳ８７８に進む。
【０２６８】
領域Ｒ１の足先検出フラグＦｒｓが０よりも大きい場合（ステップＳ８７８においてＹｅｓ）、サイズ決定部１８は、確度をインクリメントする（ステップＳ８７９）。領域Ｒ１の足先検出フラグＦｒｓが０である場合（ステップＳ８７８においてＮｏ）、サイズ決定部１８は、確度をインクリメントすることなく、ステップＳ８８０に進む。
【０２６９】
領域Ｒ１の脚検出フラグＬｒｓが１である場合（ステップＳ８８０においてＹｅｓ）、サイズ決定部１８は、確度をインクリメントする（ステップＳ８８１）。領域Ｒ１の脚検出フラグＬｒｓが１でない場合（ステップＳ８８０においてＮｏ）、サイズ決定部１８は、脚検出フラグＬｒｓが２以上であるか否かを判断する（ステップＳ８８２）。
【０２７０】
領域Ｒ１の脚検出フラグＬｒｓが２以上である場合（ステップＳ８８２おいてＹｅｓ）、サイズ決定部１８は、確度を２つ増加させる（ステップＳ８８３）。これは、脚有無決定処理（ステップＳ７４。図３７参照）において、２本の脚が検出されているためである。一方、領域Ｒ１の脚検出フラグＬｒｓが０である場合（ステップＳ８８２においてＮｏ）、サイズ決定部１８は、確度をインクリメントすることなく、図４０に示す処理を終了する。
【０２７１】
このように、サイズ決定部１８は、人物の肩、胴、脚、足先、頭頂の検出結果に基づいて、各領域に対応する人物の確度を計算する。
【０２７２】
［９．３．重複判定処理（ステップＳ８３）］
まず、重複判定処理（ステップＳ８３）を実行する理由について説明する。図１２に示すように、枠２７ａにおいて、肩幅を示す２つの領域Ｒ１，Ｒ２が特定されている。これらの領域ごとに人物の範囲が特定されることにより、枠２７ａにおいて、複数の人物範囲が特定される。しかし、図４に示す枠２１ａ（枠２７ａに対応）の中には、１人の人物２１ｍしか存在していない。このように、同じ枠内において２つの肩幅が検出されることにより、１人の人物が別々の人物として検出される場合がある。サイズ決定部１８は、重複判定処理（ステップＳ８３）を実行することにより、１人の人物を誤って複数の人物として検出することを防止する。
【０２７３】
図４１は、重複判定処理（ステップＳ８３）のフローチャートである。図４１に示すように、サイズ決定部１８は、領域Ｒ１〜Ｒ５に対応する人物範囲の中で、重複する人物範囲が存在するか否かを判断する（ステップＳ８３１）。
【０２７４】
重複する人物範囲が存在する場合（ステップＳ８３１においてＹｅｓ）、サイズ決定部１８は、重複する複数の人物範囲の確度が等しい否かを判断する（ステップＳ８３２）。確度が等しくない場合（ステップＳ８３２においてＮｏ）、サイズ決定部１８は、重複する複数の人物範囲のうち、最大の確度を有する人物範囲に対応する人物範囲データ２８を保持し、その他の人物範囲データを消去する（ステップＳ８３３）。つまり、サイズ決定部１８は、重複する複数の人物範囲のうち、最大の確度を有する人物範囲を選択する。
【０２７５】
一方、確度が等しい場合（ステップＳ８３２においてＹｅｓ）、サイズ決定部１８は、重複する複数の人物範囲のうち、面積の一番広い人物範囲に対応する人物範囲データ２８を保持し、その他の人物範囲データ２８を消去する（ステップＳ８３４）。つまり、サイズ決定部１８は、重複する複数の人物範囲のうち、最大の面積を有する人物範囲を選択する。
【０２７６】
また、サイズ決定部１８は、重複のない人物範囲データ２８をそのまま保持する。
【０２７７】
次に、サイズ決定部１８は、現在保持している人物範囲データ２８のうち、縦サイズと横サイズとの比率が一定の範囲外である人物範囲データ２８を消去する（ステップＳ８３５）。一定の範囲は、一般的な人物の縦サイズと横サイズとの比率に基づいて決定される。縦サイズとの横サイズとの比率が一定の範囲内に存在しない場合、ステップＳ８１で特定された人物範囲は、人物でないものを誤って人物として検出した結果であると判断される。サイズ決定部１８は、消去されなかった人物範囲データ２８を外部に出力する。
【０２７８】
以上説明したように、本実施の形態の人物検出装置１は、入力画像２１から人物の肩の中心及び肩幅を検出し、検出された肩の中心及び肩幅に基づいて、胴幅、足先位置、頭頂位置を特定する。これにより、入力画像２１に含まれる人物の横サイズ及び縦サイズを特定することができる。
【０２７９】
上記実施の形態では、画像認識部１７が対象領域データ２５を作成し、対象領域データ２５で定義された枠２１ａ〜２１ｃ内から人物の範囲を特定する例を説明したが、これに限られない。人物検出装置１は、対象領域データ２５を使用せずに、入力画像２１の全体から肩の中心位置及び肩幅を検出してもよい。
【０２８０】
上記実施の形態では、肩の水平方向の対称性に基づいて、肩の中心位置及び肩幅を入力画像２１から検出する例を説明したが、これに限られない。人物検出装置１は、他の一般的に画像認識処理を用いて、肩の中心位置及び肩幅を求めてもよい。
【０２８１】
上記実施の形態では、肩の中心及び肩幅に基づいて、胴、脚、足先位置、頭頂位置を検出し、人物範囲を特定する例を説明した。しかし、人物の胴の有無、及び脚の有無を検出することのみを目的として、人物検出装置１を用いてもよい。
【０２８２】
上記実施の形態では、足先検出部１３が、足先位置特定処理（ステップＳ４３、図１８参照）において、判定対象の画素ラインがステップＳ４３６，Ｓ４３７の両者を実行する例を説明したが、これに限られない。足先検出部１３は、ステップＳ４３６，Ｓ４３７の少なくとも一方を実行することにより、判定対象の画素ラインが足先の条件を満たすか否かを判定してもよい。頭頂位置特定処理（ステップＳ５３、図２２参照）、胴有無決定処理（ステップＳ６４、図３０参照）、脚有無決定処理（ステップＳ７４，図３７参照）でも同様である。
【０２８３】
上記実施の形態では、ステップＳ４３７（図１８参照）において、足先検出部１３が、判定対象の画素ラインの足先値が画素ラインの足先値の平均のｓ倍よりも大きいか否かを判定する例を説明したが、これに限られない。足先値の平均に代えて、足先値の中央値などの代表値を用いてもよい。つまり、足先検出部１３は、判定対象の画素ラインの足先値が、各画素ラインの足先値と所定の関係を満たす場合、肩の中心ＰＳＨに対応する足先値を検出したと判定してもよい。ステップＳ５３７（図２２参照）、ステップＳ６４６（図３０参照）、ステップＳ７４６（図３７参照）についても同様である。
【０２８４】
上記実施の形態で説明した人物検出装置１において、各機能ブロックは、ＬＳＩなどの半導体装置により個別に１チップ化されても良いし、一部又は全部を含むように１チップ化されてもよい。集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０２８５】
また、上記実施の形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記実施の形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置（ＣＰＵ）により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ＲＯＭなどの記憶装置に格納されており、ＲＯＭにおいて、あるいはＲＡＭに読み出されて実行される。
【０２８６】
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア（ＯＳ（オペレーティングシステム）、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。）により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。なお、上記実施の形態に係る人物検出装置１をハードウェアにより実現する場合、各処理を行うためのタイミング調整を行う必要があるのは言うまでもない。上記実施形態においては、説明便宜のため、実際のハードウェア設計で生じる各種信号のタイミング調整の詳細については省略している。
【０２８７】
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリを挙げることができる。
【０２８８】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【符号の説明】
【０２８９】
１  人物検出装置
１１  エッジ抽出部
１２  肩検出部
１３  足先検出部
１４  頭頂検出部
１５  胴検出部
１６  脚検出部
１８  サイズ決定部
１５  サイズ決定部
２１  入力画像
２２  横エッジ画像
２３  縦エッジ画像
２５  肩候補データ
２６  対象領域データ
２８  人物範囲データ
【図１】
2014186524.tif 000022
【図２】
2014186524.tif 000023
【図３】
2014186524.tif 000024
【図７】
2014186524.tif 000025
【図８】
2014186524.tif 000026
【図９】
2014186524.tif 000027
【図１０】
2014186524.tif 000028
【図１１】
2014186524.tif 000029
【図１３】
2014186524.tif 000030
【図１４】
2014186524.tif 000031
【図１５】
2014186524.tif 000032
【図１６】
2014186524.tif 000033
【図１７】
2014186524.tif 000034
【図１８】
2014186524.tif 000035
【図１９】
2014186524.tif 000036
【図２０】
2014186524.tif 000037
【図２１】
2014186524.tif 000038
【図２２】
2014186524.tif 000039
【図２３】
2014186524.tif 000040
【図２４】
2014186524.tif 000041
【図２５】
2014186524.tif 000042
【図２６】
2014186524.tif 000043
【図２７】
2014186524.tif 000044
【図２８】
2014186524.tif 000045
【図２９】
2014186524.tif 000046
【図３０】
2014186524.tif 000047
【図３１】
2014186524.tif 000048
【図３２】
2014186524.tif 000049
【図３３】
2014186524.tif 000050
【図３４】
2014186524.tif 000051
【図３５】
2014186524.tif 000052
【図３６】
2014186524.tif 000053
【図３７】
2014186524.tif 000054
【図３８】
2014186524.tif 000055
【図３９】
2014186524.tif 000056
【図４０】
2014186524.tif 000057
【図４１】
2014186524.tif 000058
【図４】
2014186524.tif 000059
【図５】
2014186524.tif 000060
【図６】
2014186524.tif 000061
【図１２】
2014186524.tif 000062