以下に本発明の最良の形態を説明するが、開示される発明と実施の形態との対応関係を例示すると、次のようになる。本明細書中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応していないものであることを意味するものではない。
さらに、この記載は、明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現し、追加される発明の存在を否定するものではない。
請求項1の画像処理装置は、人の頭部の画像の頭頂の位置(例えば、図13のIv)を推定する頭頂位置推定手段(例えば、図1の頭頂推定部12)と、頭頂の位置までの垂直方向の距離が、頭部の画像の水平方向の幅(例えば、図9のw)に対して一定の関係(例えば、略1/2)になる検出位置(例えば、処理対象ラインの位置)を検出する検出手段(例えば、図1の垂直距離判定部21)と、検出位置における頭部の水平方向の幅または頭頂から検出位置までの距離(例えば、図9のh)を基に、頭部の画像に関係する頭部関係情報(例えば、頭頂部の半径、頭頂部中心)を算出する算出手段(例えば、図1の半径算出部22、図19の中心位置算出部71)とを備える。
算出手段は、検出位置における頭部の水平方向の幅の略1/2または頭頂から検出位置までの距離を基に、頭部関係情報として、頭頂部の半径を算出する(例えば、図8のステップS56、図18のステップS76の処理)ようにすることができる。
算出手段は、検出位置における、頭部の水平方向の幅の中心、頭頂の位置、および検出位置における頭部の水平方向の幅の略1/2または頭頂から検出位置までの距離を基に、頭部関係情報として、頭頂部の中心位置を算出する(例えば、図21のステップS126、S127、図22のステップS146、S147の処理)ようにすることができる。
請求項4の画像処理方法は、人の頭部の画像の頭頂の位置(例えば、図13のIv)を推定する頭頂位置推定ステップ(例えば、図2のステップS2の処理)と、頭頂の位置までの垂直方向の距離が、頭部の画像の水平方向の幅(例えば、図9のw)に対して一定の関係(例えば、略1/2)になる検出位置(例えば、処理対象ラインの位置)を検出する検出ステップ(例えば、図8のステップS52、S53、図18のステップS72、S73、図21のステップS122、S123、図22のステップS142、S143の処理)と、検出位置における頭部の水平方向の幅または頭頂から検出位置までの距離(例えば、図9のh)を基に、頭部の画像に関係する頭部関係情報(例えば、頭頂部の半径、頭頂部中心)を算出する算出ステップ(例えば、図8のステップS56の処理、図18のステップS76の処理、図21のステップS126、S127、図22のステップS146、S147の処理)とを含む。
請求項5と請求項6のプログラムは、人の頭部の画像の頭頂の位置(例えば、図13のIv)を推定する頭頂位置推定ステップ(例えば、図2のステップS2の処理)と、頭頂の位置までの垂直方向の距離が、頭部の画像の水平方向の幅(例えば、図9のw)に対して一定の関係(例えば、略1/2)になる検出位置(例えば、処理対象ラインの位置)を検出する検出ステップ(例えば、図8のステップS52、S53、図18のステップS72、S73、図21のステップS122、S123、図22のステップS142、S143の処理)と、検出位置における頭部の水平方向の幅または頭頂から検出位置までの距離(例えば、図9のh)を基に、頭部の画像に関係する頭部関係情報(例えば、頭頂部の半径、頭頂部中心)を算出する算出ステップ(例えば、図8のステップS56の処理、図18のステップS76の処理、図21のステップS126、S127、図22のステップS146、S147の処理)とを含む。
以下、図面を参照しながら本発明の実施の形態について説明する。
図1は、本発明に係る画像処理装置の一実施の形態の構成を示すブロック図である。画像処理装置1は、背景分離部11、頭頂推定部12、および頭頂部半径推定部13により構成される。
背景分離部11は、人を撮像して得られた画像データを入力して、その画像データに基づく画像を背景および前景に分離し、背景から分離された前景の画像の画像データを頭頂推定部12および頭頂部半径推定部13に供給する。分離された前景の画像には、人の画像が含まれている。
頭頂推定部12は、前景の画像の画像データを基に、前景の画像に含まれる人の画像の頭頂位置を推定し、推定した頭頂位置を示すデータを頭頂部半径推定部13に供給する。
頭頂部半径推定部13は、背景分離部11から供給された、背景が分離された前景の画像の画像データ、および頭頂推定部12から供給された頭頂位置を示すデータを基に、頭頂部半径を推定し、推定された頭頂部半径を示す頭頂部半径データを出力する。
頭頂部半径推定部13は、垂直距離判定部21および半径算出部22により構成される。
垂直距離判定部21は、前景の画像上の垂直方向の所定の検出位置を順次設定して、前景の画像の画像データおよび頭頂位置を示すデータを基に、頭頂の位置から、設定した検出位置までの垂直方向の距離が、前景の画像の水平方向の幅に対して一定の関係となるか否かを判定する。具体的には、垂直方向の距離が、水平方向の幅の略1/2の長さになるかが判定される。垂直距離判定部21は、頭頂の位置から、設定した検出位置までの垂直方向の距離が、前景の画像の水平方向の幅の略1/2に等しいと判定された場合、設定した検出位置の垂直位置を示すデータを半径算出部22に供給する。
半径算出部22は、垂直距離判定部21から供給された、頭頂の位置からの距離が前景の画像の水平方向の幅の略1/2に等しい検出位置の垂直位置を示すデータを基に、頭頂部半径を算出する。
次に、図2を参照して、図1の画像処理装置1の頭頂部の半径の推定の処理を説明する。
ステップS1において、背景分離部11は、入力された画像データを取得して、取得した画像データに、背景分離の処理を適用して、前景を抽出する。背景分離の処理の詳細は、図3を参照して後述する。
背景分離部11は、背景分離の処理の結果得られた、人の画像が含まれている前景の画像の画像データを頭頂推定部12および頭頂部半径推定部13に供給する。
ステップS2において、頭頂推定部12は、人の画像が含まれている前景の画像の画像データに、頭頂推定の処理を適用して、頭頂を推定する。頭頂推定の処理の詳細は、図6を参照して後述する。
頭頂推定部12は、頭頂推定の処理の結果得られた、頭頂位置を示すデータを頭頂部半径推定部13に供給する。
ステップS3において、頭頂部半径推定部13は、頭頂位置を示すデータおよび人の画像が含まれている前景の画像の画像データを基に、頭頂部半径算出の処理を実行して、人の画像における頭頂部の半径を算出する。頭頂部半径算出の処理の詳細は図8を参照して後述する。
次に、ステップS1の背景分離の処理の詳細について、図3のフローチャートを参照して説明する。
ステップS21において、背景分離部11は、画像の画素の各画素値が所定の条件を満たすか否かを判定する。例えば、ステップS21において、背景分離部11は、“肌色”または“黒”を示す所定の範囲の値が設定されている閾値と、画像の画素の各画素値とを比較して、各画素値が閾値の範囲に含まれるかを基に、画像の画素の各画素値が所定の条件を満たすか否かを判定する。
“肌色”を示す所定の範囲の値が設定されている閾値は、前景である、人の画像の皮膚の画像を識別するために使用される。“黒”を示す所定の範囲の値が設定されている閾値は、前景である、人の画像の髪または毛などの画像を識別するために使用されている。
すなわち、この場合、画像の画素の各画素値が、“肌色”または“黒”の閾値で示される範囲に属する場合、人の画像なので、背景分離部11は、画素値が条件を満たすと判定する。
また、例えば、ステップS21において、背景分離部11は、“青”を示す所定の範囲の値が設定されている閾値と、画像の画素の各画素値とを比較して、各画素値が閾値の範囲に含まれないかを基に、画像の画素の各画素値が所定の条件を満たすか否かを判定する。
“青”を示す所定の範囲の値が設定されている閾値は、背景の画像を識別するために使用される。
この場合、画像の画素の各画素値が、“青”の閾値で示される範囲に属さない場合、背景の画像ではなく、人の画像であるとして、背景分離部11は、画素値が条件を満たすと判定する。
なお、ステップS21においては、画像の個々の画素値について、それぞれの画素値が所定の条件を満たすか否かが判定される。
ステップS21において、画素値が所定の閾値の範囲内であると判定された場合、ステップS22に進み、背景分離部11は、閾値の範囲内であると判定された画素値を前景としての値に変換する。例えば、背景分離部11は、閾値の範囲内であると判定された画素値を「1」に変換する。この場合、閾値の範囲内であると判定されたすべての画素値は、「1」に設定されることになる。
ステップS21において、画素値が所定の閾値の範囲内でないと判定された場合、ステップS23に進み、背景分離部11は、閾値の範囲内でないと判定された画素値を背景としての値に変換する。例えば、背景分離部11は、閾値の範囲内でないと判定された画素値を「0」に変換する。この場合、閾値の範囲内でないと判定されたすべての画素値は、「0」に設定されることになる。
ここで、図4に示される画像の画像データが入力された場合の具体例を説明する。背景分離の処理において、画像データに含まれる各画素値について、所定の条件を満たすか否かが判定される。所定の条件を満たす場合には、その画素は前景の画素とされ、条件を満たさない場合には、その画素は背景の画素とされる。
前景とされた画素の画素値には、所定の値が設定され、背景とされた画素の画素値には、他の値が設定される。例えば、前景とされた画素の画素値には、「1」が設定され、背景とされた画素の画素値には、「0」が設定される。すなわち、この場合、2値画像が生成されることになる。
図5は、図4に示される画像に背景分離の処理を適合した場合の、背景分離の処理の結果である2値画像を示す図である。“肌色”または“黒”の閾値の範囲に属する画素値を前景とし、“肌色”または“黒”の閾値の範囲に属しない画素値を背景とした場合、図5に示されるように、人の画像が、「1」に対応する白色に表示され、背景の画像が、「0」に対応する黒色に表示される。なお、図5において、人の画像以外の白点はノイズによる誤検出部分を示す。
背景分離の方法は、上述した例に限られるものではない。例えば、人物が動いていれば、画像の動きを示す動きベクトルを基に、動きベクトルが「0」である画素を背景として検出することで、背景分離をすることができる。
次に、図2のステップS2の頭頂推定の処理の詳細について、図6のフローチャートを参照して説明する。
ステップS31において、頭頂推定部12は、画像データで表される画像の処理対象ラインの垂直方向の位置に初期値を設定する。
すなわち、図7に示されるように、背景分離された画像上の、垂直方向のある位置における水平の直線(ライン)を考え、ステップS31において、画像上のラインを特定する垂直方向の位置を表す初期値として、例えば、画像の上端部のラインの位置が設定される。
ステップS32において、頭頂推定部12は、垂直位置で特定されるライン上の前景の画素の数が、閾値以上であるか否か判定する。例えば、ステップS32において、頭頂推定部12は、背景分離された結果、前景の画素値が「1」とされ、背景の画素値が「0」とされた2値画像について、垂直位置で特定されるライン上の、「1」である画素値の画素の数を求めて、求めた画素の数が、閾値以上であるか否か判定する。
ステップS1の背景分離の処理において、背景画素を前景画素として誤って検出してしまうおそれがない場合でかつ頭部の形状が、理想的な円である場合、閾値に「1」、またはそれに近い値を設定することができる。しかし、通常は、ノイズによる影響を除去するため、また、頭頂付近の形状が平坦である等のバラツキを考慮して、閾値としては、もっと大きい値が設定される。この値を小さくすれば精度は上がるが、ノイズによる誤検出のおそれが大きくなるので、両者のバランスを考えながら所定の値が設定される。
ステップS32において、そのラインの前景の画素の数が閾値未満であると判定された場合、ステップS33に進み、頭頂推定部12は、垂直位置を1ライン分進める。すなわち、ステップS33において、頭頂推定部12は、処理対象ラインを下方向に1画素分移動させる。いまの場合、初期値から2番目のラインに変更される。
ステップS34において、頭頂推定部12は、処理対象ラインの垂直位置が画像(画面)の外(最下端のラインより下のラインの位置)であるか否かを判定する。例えば、ステップS34において、頭頂推定部12は、予め記憶している画像の全ライン数と、画像の上端から垂直位置までの距離とを比較することにより、画像の上端から処理対象ラインの垂直位置までの距離が、画像の全ライン数を超えている場合、垂直位置が画像の外であると判定し、画像の上端から処理対象ラインの垂直位置までの距離が、画像の全ラインの数以下である場合、垂直位置が画像の外でないと判定する。
ステップS34において、垂直位置が画像の外でない、すなわち、垂直位置が画像内であると判定された場合、ステップS32に戻り、2番目のラインについて、同様の処理が行なわれる。
従って、処理対象ラインが、図7の垂直位置31の範囲内にあるとき、ステップS34において、垂直位置が画像の外でないと判定され、ステップS32に戻り、上述した処理が繰り返される。
ステップS32乃至ステップS34の処理が繰り返されることにより、図7で示される画像上の処理対象ラインが、1画素分ずつ画像上の下側に順次移動する。
一方、ステップS32において、前景の画素の数が閾値以上であると判定された場合、ステップS35に進み、頭頂推定部12は、前景の画素の数が閾値以上となる処理対象ラインの垂直位置を頭頂位置Ivとして出力する。
図7に示される例においては、ステップS32乃至ステップS34の処理が繰り返されることにより、画像上の処理対象ラインが、1画素分ずつ画像上の下側に順次移動し、処理対象ラインが垂直位置32となった場合、垂直位置32におけるライン上の前景の画素の数が、閾値以上であるので、頭頂位置Ivは、垂直位置32となる。
なお、ステップS34において、垂直位置が画像の外であると判定された場合、ステップS36に進み、頭頂推定部12は、頭頂位置を推定できなかった旨を示すエラーを出力する。エラーを出力した場合、頭頂位置を推定できなかったので、図2のステップS3の処理は実行されない。なお、ステップS32における閾値を、ある程度大きくすれば、頭頂位置Ivとして検出される位置は、実際の頭頂より下方の位置となる。そこで、その分を考慮して、検出された値に一定の値を加算した値を頭頂位置Ivとして出力するようにしてもよい。
次に、図2のステップS3の頭頂部半径推定の処理の詳細について、図8のフローチャートを参照して説明する。
ステップS51において、頭頂部半径推定部13の垂直距離判定部21は、画像データで表される画像の処理対象ラインの垂直方向の位置である垂直位置に初期値を設定する。この初期値は、人の頭の頂部に対応する。具体的には、図6のステップS35で出力された頭頂位置Iv(図7の垂直位置32)が初期値として設定される。
続くステップS52の検出処理において、前景(頭部)の水平方向の幅である水平幅が過小に検出されることが想定される場合には、処理対象ラインの初期値を頭頂位置Ivよりも下の位置に設定することができる。また、この初期値を垂直位置Ivより下の位置に設定することで、所望の検出位置をより迅速に検出することが可能となる。
ステップS52において、垂直距離判定部21は、処理対象ラインの前景の水平幅を算出する。例えば、ステップS52において、垂直距離判定部21は、背景分離された結果、前景の画素値が「1」とされ、背景の画素値が「0」とされた2値画像について、処理対象ライン上の、「1」である画素値の画素の数であって、画像の横方向に連続する画素の数を求めることによって、処理対象ラインの前景の水平幅wを算出する。図9に示されるように、処理対象ラインの前景の水平幅wは、処理対象ラインの頂部からの距離(ライン数)hにより変化する値である。
具体的には、垂直距離判定部21は、例えば、処理対象ラインを含む、一定の範囲の連続する複数のライン(演算ライン)の前景の画素の数を求めて、求めた前景の画素の数を、そのラインの数で割り算して、処理対象ラインの垂直位置における前景の水平幅を算出する。
例えば、水平幅wは、以下に示す式(1)により算出される。
水平幅w=(演算ラインの前景の画素数)/(演算ラインの本数)・・・(1)
図9に示される例において、両端に矢印が配された直線で示される処理対象ラインを基準として、上側のn本のラインと、下側のn本のラインの、合計(2n+1)本のラインが演算ラインとされる。そして、(2n+1)本の演算ラインの画素のうち、図中ハッチングを施して示す領域の前景の画素の数が、ラインの数(2n+1)で割り算されることにより、水平幅wが算出される。理論的には、1本のラインだけから水平幅wを算出することが可能であるが、そのようにするとノイズによる影響を受け易い。そこで、複数本のラインの平均値から水平幅wが演算される。
ステップS53において、垂直距離判定部21は、頭頂位置Ivから、処理対象ラインまでの垂直方向の距離が、水平幅の1/2以上であるか否か判定する。
ステップS53においては、人の頭頂部が球形(半球状)に近似する形状であることが仮定される。
すなわち、図10乃至図15に示されるように、人の頭部の形状は、顔の向きに拘わらず略一定であると仮定される。図10および図13は、左側を向いている顔の画像を示し、図11および図14は、正面を向いている顔の画像を示し、図12および図15は、右側を向いている顔の画像を示す。
人の頭頂部が球形に近似する形状なので、人の画像において、頭頂部は円形に近似する形状となり、図10乃至図12に示されるように、人の顔向きが変わっても、頭頂部の画像の形状はほとんど変化しない。
すなわち、図13乃至図15に示されるように、人の画像における、頭頂部は円で近似することができる。人の画像における、頭頂部が円で近似できれば、円の中心Oから円周までの距離、すなわち、半径Rは、一定である。
図13乃至図15に示されるように、頭頂部が円で近似されるとすれば、頭頂位置Ivは、円周上に位置するので、頭頂位置Ivから、頭頂部を近似する円の中心Oまでの距離と、画像において水平の直線上の半径Rとは等しい。
半径Rは、直径の1/2なので、頭頂位置Ivから、頭頂部を近似する円の中心Oまでの距離は、画像において水平の直線上の直径(水平幅)の1/2に等しいことになる。
図13乃至図15に示されるように、人の画像における、頭頂部は円で近似することができるので、頭頂位置Ivから、頭頂部を近似する円の中心Oまでの距離と、画像において水平の直線上の半径Rとが等しいという関係は、人の顔の向きが変わっても成立する。
また、図13乃至図15に示されるように、人の画像における、頭頂部は円で近似することができるので、垂直方向の上端(頭頂位置Iv)より、処理対象ラインを下に向かって移動させた場合、移動の距離が小さいとき、処理対象ラインにおける頭頂部の幅の1/2は、頭頂位置Ivから処理対象ラインまでの距離よりも大きく、処理対象ラインが円の中心Oを通る位置(検出位置)になったとき、頭頂位置Ivから処理対象ラインまでの距離と等しくなる。すなわち、処理対象ラインが円の中心Oを通る状態の場合、頭頂位置Ivから処理対象ラインまでの垂直方向の距離と、頭頂部の水平方向の幅の1/2の値が等しくなる。
このように、円の中心Oにおいて、頭頂位置Ivからの処理対象ラインの距離と水平方向の幅の1/2の値が等しくなる(一定の関係になる)ことを利用して、人の画像における、頭頂部を近似する円の中心の垂直方向の位置が求められる。
ステップS53において、頭頂位置Ivから処理対象ラインまでの垂直方向の距離が、水平幅の1/2未満であると判定された場合、ステップS54に進み、垂直距離判定部21は、垂直位置を定数分進める。定数は、「1」または、式(1)で説明した、図9のハッチングを施した領域の幅(2n+1)とすることができる。
図9に示される例の状態においては、垂直方向の距離hは水平幅wの1/2未満であるので、ステップS54において、処理対象ラインが定数分進められる。
ステップS55において、垂直距離判定部21は、処理対象ラインが画像(画面)の外(最下端のラインより下のライン)であるか否かを判定する。例えば、ステップS55において、垂直距離判定部21は、予め記憶している画像の全ライン数と、画像の上端から処理対象ラインまでの距離とを比較することにより、画像の上端から処理対象ラインまでの距離が、画像の全ライン数を超えている場合、処理対象ラインが画像の外であると判定し、画像の上端から処理対象ラインまでの距離が、画像の全ラインの数以下である場合、処理対象ラインが画像の外でないと判定する。
ステップS55において、処理対象ラインが画像の外でない、すなわち、処理対象ラインが画像内であると判定された場合、ステップS52に戻り、定数分進められた処理対象ラインについて、上述した処理が繰り返される。
図16に示される例は、図9に示される例から、処理対象ラインが定数分進められた状態を示す。この状態でも、垂直方向の距離hは水平幅wの1/2未満であるので、ステップS54に進み、処理対象ラインが定数分進められる。ステップS55において、処理対象ラインが画像内であるので、処理は、ステップS52に戻り、上述した処理が繰り返される。
ステップS52乃至ステップS55の処理が繰り返されることにより、図16に示される画像上の垂直位置が、定数分ずつ画面上の下側に順次移動する。
一方、ステップS53において、頭頂位置Ivから垂直位置までの処理対象ラインの距離が、水平幅の1/2以上であると判定された場合、処理対象ラインが人の画像における、頭頂部を近似する円の中心Oの垂直方向の位置(検出位置)に到達したことになる。すなわち、この場合、その時点における処理対象ラインと頭頂との距離hが、前景としての人の頭頂の水平方向の幅の略1/2と等しいことになる。そこで、ステップS56に進み、半径算出部22は、その時点での処理対象ライン、すなわち、頭頂位置Ivから処理対象ラインまでの垂直方向の距離が、水平幅の1/2以上となる処理対象ラインにおける、水平幅の1/2を頭頂部半径として算出する。
このように、図9、図16、および図17に示されるように、ステップS52乃至ステップS55の処理が繰り返されることにより、画像上の垂直位置が、定数分(例えば、1画素)ずつ画像上の下側に移動し、ステップS53において、頭頂位置Ivから垂直位置までの垂直方向の距離hが、その垂直位置における水平幅wの略1/2以上となった場合、ステップS56において、頭頂部半径として、w/2が算出される。
ステップS57において、頭頂部半径推定部13は、ステップS56において算出した頭頂部半径を図示せぬ後段の装置に出力して、処理は終了する。
図17に示される例において、頭頂部半径として、w/2が出力される。
なお、ステップS55において、処理対象ラインが画像の外であると判定された場合、ステップS58に進み、垂直距離判定部21は、頭頂部半径を出力できなかった旨を示すエラーを出力し、処理は終了する。
次に、図2のステップS3頭頂部半径算出の他の処理の詳細について、図18のフローチャートを参照して説明する。
ステップS71乃至ステップS75の処理は、図8における、ステップS51乃至ステップS55の処理とそれぞれ同様である。
すなわち、ステップS71において、処理対象ラインの初期値が設定され、ステップS72乃至ステップS75の処理が繰り返されることにより、画像上の処理対象ラインが、定数分ずつ画像上の下側に順次移動し、ステップS73において、頭頂位置Ivから処理対象ラインまでの垂直方向の距離が、水平幅の1/2以上であると判定された場合、処理は、ステップS76に進む。
ステップS76において、半径算出部22は、頭頂位置Ivから処理対象ラインまでの垂直方向の距離が、前景の水平幅の1/2以上となる垂直位置における、頭頂位置Ivから処理対象ラインまでの垂直方向の距離を頭頂部半径として算出する。
すなわち、図13乃至図15を参照して説明したように、頭頂位置Ivは、円周上に位置し、頭頂部が円で近似されるとすれば、円の中心Oから円周までの距離、すなわち、半径Rは、一定であるので、頭頂位置Ivから処理対象ラインまでの垂直方向の距離は、頭頂部半径であると言える。
図17に示される例において、垂直方向の距離hは水平幅wの1/2以上であるので、ステップS76において、頭頂部半径として、頭頂位置Ivから垂直位置までの距離hが算出される。
ステップS77において、頭頂部半径推定部13は、ステップS76において算出した頭頂部半径を図示せぬ後段の装置に出力して、処理は終了する。
図17に示される例において、頭頂部半径として、hが出力される。
ステップS78の処理は、図8におけるステップS58の処理と同様であり、その説明は省略する。
このように、図1に示される画像処理装置1は、頭部関係情報として、頭頂部半径を算出することができる。
図19は、本発明に係る画像処理装置の一実施の形態の他の構成を示すブロック図である。図1に示す場合と対応する部分には、同一の番号が付してあり、その説明は適宜省略する。この画像処理装置51は、背景分離部11、頭頂推定部12、および頭頂部中心推定部61を有している。
背景分離部11と頭頂推定部12は、図1における場合と同様の機能を有している。
頭頂部中心推定部61は、背景分離部11から供給された、背景が分離された前景の画像データ、および頭頂推定部12から供給された頭頂位置を示すデータを基に、頭頂部中心位置を推定し、推定された頭頂部中心位置を示す頭頂部中心データを図示せぬ後段の装置に出力する。
頭頂部中心推定部61は、垂直距離判定部21および中心位置算出部71により構成される。
垂直距離判定部21は、図1における場合と同様の機能を有する。
中心位置算出部71は、垂直距離判定部21から供給された、頭頂の位置からの距離が前景の画像の水平方向の幅の1/2に等しい、垂直方向の垂直位置を示すデータなどを基に、頭頂部中心位置を算出する。
次に図20のフローチャートを参照して、図19の画像処理装置51による、頭頂部の中心の推定の処理を説明する。
図20における、ステップS101およびステップS102の処理のそれぞれは、図2における、ステップS1およびステップS2の処理のそれぞれと同様である。すなわち、これらの処理により、背景が分離された画像が得られ、頭頂位置Ivが得られる。
ステップS103において、頭頂部中心推定部61は、頭頂位置を示すデータおよび人の画像が含まれている前景の画像データを基に、頭頂部中心算出の処理を実行して、人の画像における頭頂部の中心位置を算出して、処理は終了する。
次に、図20のステップS103の頭頂部中心算出の処理の詳細について、図21のフローチャートを参照して説明する。ステップS121乃至ステップS125の処理のそれぞれは、図8のステップS51乃至ステップS55の処理のそれぞれと同様なので、その説明は省略する。
ステップS121乃至ステップS125の処理で、頭頂からの距離が、人の頭頂部の水平幅の略1/2である処理対象ラインが検出された場合、ステップS126において、中心位置算出部71は、頭頂部中心の水平位置として、頭頂位置Ivから処理対象ラインまでの垂直方向の距離が、水平幅の1/2以上となる所定の処理対象ラインにおける、前景の水平幅wの中心を求める。
例えば、頭頂部中心の水平位置である水平幅wの中心として、垂直方向の距離hが水平幅wの略1/2となる垂直位置における、図9と図16においてハッチングを施して示した領域(処理対象領域)の水平方向の重心を求めることができる。
以下、処理対象領域の水平方向の重心を、重心Ghとする。
ステップS127において、中心位置算出部71は、頭頂位置Ivから処理対象ラインまでの垂直方向の距離が、水平幅wの略1/2となる垂直位置における水平幅wの1/2を、頭頂位置Ivに加算することで、頭頂部中心の垂直位置を算出する。
図17に示される例においては、中心位置算出部71は、頭頂部中心の垂直位置として、(頭頂位置Iv+(水平幅w/2))を算出する。
ステップS128において、頭頂部中心推定部61は、ステップS126およびステップS127の処理において算出した水平位置および垂直位置で示される頭頂部中心位置を出力する。
図17に示される例においては、頭頂部中心位置推定部61は、頭頂部中心位置として、(重心Gh、頭頂位置Iv+(水平幅w/2))を出力する。
なお、ステップS125において、処理対象ラインの垂直位置が画像の外であると判定された場合、ステップS129に進み、垂直距離判定部21は、頭頂部中心位置を出力できなかった旨を示すエラーを出力し、処理は終了する。
次に、図20のステップS103の処理に対応する、頭頂部中心算出の他の処理の詳細について、図22のフローチャートを参照して説明する。
ステップS141乃至ステップS146の処理のそれぞれは、図21における、ステップS121乃至ステップS126の処理のそれぞれと同様であり、その説明は省略する。
この場合の処理では、ステップS147において、中心位置算出部71は、水平幅wの略1/2となる、頭頂位置Ivから垂直位置までの垂直方向の距離を、頭頂位置Ivに垂直方向の距離hを加算することで、頭頂部中心の垂直位置を算出する。
図17に示される例においては、中心位置算出部71は、頭頂部中心の垂直位置として、(頭頂位置Iv+垂直方向の距離h)を算出する。
ステップS148において、頭頂部中心推定部61は、ステップS146およびステップS147において算出した水平位置および垂直位置で示される頭頂部中心位置を出力して、処理は終了する。
図17に示される例においては、頭頂部中心推定部61は、頭頂部中心位置として、(重心Gh、頭頂位置Iv+垂直方向の距離h)を出力する。
ステップS149の処理は、図21における、ステップS129の処理と同様である。
このように、図19の画像処理装置51は、頭部関係情報として、頭頂部中心位置を算出することができる。
以上の処理においては、頭頂部を半円形と仮定したが、楕円、その他の形状に仮定してもよい。この場合においても、頭部の水平方向の幅と頭頂からの距離が一定の関係(仮定した形状によって規定される)になる検出位置が検出される。
また、以上の処理においては、画素アスペクト比が1対1であることを前提としたが、画素アスペクト比が1対1以外の場合であっても同様に処理を行うことができる。
図23および図24は、画素アスペクト比を説明する図である。図23および図24において、縦横の直線に囲まれた四角は、画像における画素を示す。
画素アスペクト比a:bが1:1である場合、図23に示される例のように、画素の縦の長さbと、横の長さaは等しく、画素は正方形である。縦横の比率が1:1の場合、垂直方向の長さと、水平方向の長さとの比率(例えば、頭頂位置Ivからの垂直位置と、水平幅wとの比率)を変更することなく、頭部関係情報(例えば、頭頂部半径)が算出される。
すなわち、例えば、縦横の比率が1:1の場合、垂直位置距離判定部21は、頭頂位置Ivから垂直位置までの垂直方向の距離が、水平幅wの1/2以上であるか否かの判定をし、その判定結果に基づいて、頭部関係情報を算出する。
これに対して、図24に示されるように、画素アスペクト比a:bが1:1ではない場合、画素は長方形となる。
画素アスペクト比a:bが1:1ではない場合、水平方向の長さに、b/aを乗算するか、垂直方向の長さにa/bを乗算してから頭部関係情報(例えば、頭頂部半径)が算出される。
例えば、画素アスペクト比a:bが1:1ではない場合、垂直位置距離判定部21は、水平幅wにb/aを乗算してから、頭頂位置Ivから垂直位置までの垂直方向の距離が、b/aが乗算された水平幅wの1/2以上であるか否かの判定をし、その判定結果に基づいて、頭部関係情報を算出する。
次に、頭部関係情報を求めて、頭部関係情報を基に、顔の向きを推定するか、または視線を推定する場合の実施の形態を説明する。
まず、頭部関係情報として、人の画像の頭頂部の半径を求めて、頭頂部の半径を基に、顔の向きを推定する画像処理装置について説明する。
図25は、顔の向きを推定する、画像処理装置101の一実施の形態の構成を示すブロック図である。図25において、図1に示される場合と対応する部分には、同一の番号を付してあり、その説明は適宜省略する。
背景分離部11、頭頂推定部12、および頭頂部半径推定部13により、画像データを基に、推定された頭頂部半径は重心点検出領域設定部122および角度検出部125に供給される。
色領域決定部121は、画像データを基に、肌色領域および黒色領域を決定し、決定した肌色領域および黒色領域を示すデータを重心点検出領域設定部122および重心点検出部123に供給する。
重心点検出領域設定部122は、頭頂部半径推定部13より供給される頭頂部半径を基に、色領域決定部121より供給されるデータに基づく肌色領域および黒色領域から重心点検出領域を抽出し、重心点検出領域を示すデータを重心点検出部123に供給する。
重心点検出部123は、色領域決定部121より供給されるデータに基づく肌色領域および黒色領域、および重心点検出領域設定部122より供給されるデータに基づく重心点検出領域を基に、重心点検出領域の肌色領域Aおよび黒色領域Bの両方からなる領域の重心点、および肌色領域の重心点を検出し、検出した重心点検出領域の肌色領域Aおよび黒色領域Bの両方からなる領域の重心点および肌色領域の重心点を重心点X成分差分検出部124に供給する。
重心点X成分差分検出部124は、重心点検出部123より検出される重心点検出領域の重心点、および肌色領域の重心点を基に、重心点検出領域の重心点と、肌色領域の重心点とのX軸方向の差分(X成分の差分)を検出し、検出したX成分の差分を角度検出部125に供給する。
角度検出部125は、頭頂部半径推定部13より供給される頭頂部半径、および重心点X成分差分検出部124より供給される重心点検出領域の重心点と、肌色領域の重心点とのX成分の差分を基に、顔の向きを検出し、検出した顔の向きを示す顔向きデータを出力する。
図26は、図25に示される画像処理装置101による、顔向きの検出の処理を説明するフローチャートである。
ステップS201において、背景分離部11乃至頭頂部半径推定部13は、頭頂部半径推定の処理を実行する。
ステップS201における、頭頂部半径推定の処理の詳細について、図27のフローチャートを参照して説明する。
ステップS221において、背景分離部11は、背景分離の処理を実行する。背景分離の処理の詳細は、図3のフローチャートを参照して説明した処理と同様なので、その説明は省略する。
ステップS222において、頭頂推定部12は、頭頂推定の処理を実行する。頭頂推定の処理の詳細は、図6のフローチャートを参照して説明した処理と同様なので、その説明は省略する。
ステップS223において、頭頂部半径推定部13は、頭頂部半径推定の処理を実行して、頭頂部半径推定の処理は終了する。頭頂部半径推定の処理の詳細は、図8のフローチャートまたは図18のフローチャートを参照して説明した処理と同様なので、その説明は省略する。
すなわち、これらの処理により、上述したように人の頭部の半径が算出される。以下、推定された頭頂部半径を、Rhとする。
図26に戻り、ステップS202において、色領域決定部121は、肌色領域Aおよび黒色領域Bを決定する。例えば、ステップS202において、色領域決定部121は、図28Aに示されるような、人の顔を含む画像データが供給されると、供給された画像データを基に、画像の色彩(色)情報(画素値)を用いて、図28Bに示されるように、肌色領域A(図28B中、白抜き部分)および黒色領域(図28B中、影が付されている部分)を決定する。すなわち、肌が露出して肌色に見える部分(顔部分および首部分)が、肌色領域Aとなり、髪の毛が存在し黒く見える部分(頭部)が、黒色領域Bとなる。肌の色と髪の毛の色は、対象となる人種によって適宜設定可能である。
ステップS203において、重心点検出領域設定部122は、重心点検出領域Wを抽出する。すなわち、重心点検出領域設定部122は、肌色領域Aおよび黒色領域Bからなる領域の上端を検出し、その上端上に引かれる、X軸と平行な線を基準線B1とする。図28に示される例において、黒色領域Bが肌色領域Aより上側に位置するので、黒色領域Bの上端(頭の先端)上に引かれる、X軸と平行な線が基準線B1とされる。次に、重心点検出領域設定部122は、基準線B1を、距離L1分だけ下方(Y軸が大きくなる方向)にX軸に対して平行移動させ、基準線B2を設定し、さらに基準線B2を、距離L2分だけ下方にX軸に対して平行移動させ、基準線B3を設定する。
但し、距離L1および距離L2は、頭頂部半径Rhを基に、以下に示す式(2)および式(3)により算出される。
L1=Rh×L1_rat・・・(2)
但し、式(2)において、L1_ratは定数である。
L2=Rh×L2_rat・・・(3)
但し、式(3)において、L2_ratは定数である。
このように、重心点検出領域設定部122は、基準線B1、基準線B2、および基準線B3を設定し、図28Cに示されるように、基準線B2と基準線B3で区分されるその間の領域(重心点検出領域W)を抽出する。
距離L1および距離L2は、頭頂部半径Rhを基に求められるので、基準線B2および基準線B3は、画面における人の頭頂部の画像の大きさ(画像のスケール)に応じて設定される。すなわち、重心点検出領域Wは、画像のスケールに応じて抽出される。その結果、正確な抽出が可能となる。
ステップS204において、重心点検出部123は、抽出した重心点検出領域Wに存在する肌色領域Aおよび黒色領域Bの両方からなる領域の重心点G1と、重心点検出領域Wに存在する肌色領域Aの重心点G2を検出し、それぞれのX軸上の値を検出する。図28Cに、図28Bの重心点検出領域Wの肌色領域Aおよび黒色領域Bの両方からなる領域の重心点G1およびそのX軸上の値X1、並びに肌色領域Aの重心点G2およびそのX軸上の値X2が示されている。なお、この例の場合、値X1は値X2とほぼ同値となっている。
ステップS205において、重心点X成分差分検出部124は、重心点検出部123で検出した重心点G1の値X1および重心点G2の値X2の差D_orgを算出する。図28に示される例においては、値X1および値X2はほぼ同値であるので、その差D_orgは「0」となる。
ステップS206において、角度検出部125は、ステップS205において算出した差D_orgを正規化し、正規化後の差Dを基に、顔の向きを検出する。
正規化後の差Dは、以下に示す式(4)により算出される。
D=D_org/Rh・・・(4)
具体的には、角度検出部125は、図29で示されるような、差Dと顔の向きの角度(正面に対する角度)との対応関係を示すデータを予め有して(記憶して)おり、差Dと顔の向きの角度との対応関係を示すデータを参照して、差Dに対応する顔の向きの角度Vを検出する。図29に示される例において、D=0には、V=0が対応しているので、0度が検出される。
正規化された差Dを基に、角度を検出するので、画像のスケールに影響されることなく、より正確に角度を検出することができる。
また、図29で示される対応関係は、例えば、以下に示す式(5)により算出される。
D=c × sin V・・・(5)
なお、cは、所定の定数である。
また、図29に示される例において、正の値の角度Vは右方向を向いていることを示し、負の値の角度Vは左方向を向いていることを示している。
例えば、人の顔が右方向を向いている場合における以上の処理は次のようになる。
すなわち、ステップS201において、頭頂部半径推定部12は、頭頂部半径Rhを推定し、ステップS202において、色領域決定部121は、図30Bに示されるように、肌色領域Aおよび黒色領域Bを決定し、ステップS203において、重心検出領域設定部122は、重心点検出領域Wを設定する。次に、ステップS204において、重心点検出部123は、重心点G1(重心点検出領域Wに存在する肌色領域Aおよび黒色領域Bの重心点)のX軸上の値X1、および重心点G2(重心点検出領域Wに存在する肌色領域Aの重心点)のX軸上の値X2を検出し、ステップS205において、重心点X成分差分検出部124は、値X1および値X2より、差D_orgを算出する。次に、ステップS206において、角度検出部125は、差D_orgを基に算出された差Dに対応する顔の向きの角度Vを検出する。例えば、図30における、差Dの値である差Deを基に、図29で示される対応関係より、正面に対して右方向を向いていることを示す角度Veが検出される。
このように、画像上のノイズなどの外乱要素が存在しても、頭頂部半径Rhをより正確に推定して、推定された頭頂部半径Rhを基に、顔の向きを示す角度Vを検出するようにしたので、より正確な顔の向きを検出することができるようになる。
次に、頭頂部関係情報として、人の画像の頭頂部の半径および頭頂部中心位置を求めて、頭頂部の半径および頭頂部中心位置を基に、視線の向きを推定する画像処理装置について説明する。
図31は、視線の向きを推定する、画像処理装置151の一実施の形態の構成を示すブロック図である。
図31において、図1または図19で示される場合と対応する部分には、同一の番号を付してあり、その説明は適宜省略する。
頭頂部半径推定部13は頭頂部の半径を推定し、推定した頭頂部の半径を目輪郭検出範囲設定部171に供給する。頭頂部中心推定部61は、頭頂部中心位置を推定し、目輪郭検出範囲設定部171に供給する。
目輪郭検出範囲設定部171は、頭頂部中心推定部61から供給された頭頂部中心位置、および頭頂部半径推定部13から供給された頭頂部半径を基に、目の輪郭が検出される範囲を設定し、設定した範囲を目輪郭検出部172に供給する。
目輪郭検出部172は、目輪郭検出範囲設定部171より供給された、目の輪郭が検出される範囲における画像データを基に、目の輪郭を検出し、検出した目の輪郭を示すデータを鼻孔検出部173、眼球中心/半径推定部174、および瞳孔中心検出部175に供給する。
鼻孔検出部173は、画像データ、および目輪郭検出部172より供給された、目の輪郭を基に、鼻孔を検出し、検出した鼻孔を示すデータを眼球中心/半径推定部174に供給する。
眼球中心/半径推定部174は、目輪郭検出部172より供給された目の輪郭を示すデータ、および鼻孔検出部173より供給された鼻孔を示すデータを基に、眼球の中心および半径を推定し、眼球の中心および半径を示すデータを視線検出部176に供給する。
瞳孔中心検出部175は、画像データ、および目輪郭検出部172より供給された目の輪郭を示すデータを基に、瞳孔の中心位置を検出し、検出した瞳孔の中心位置を示すデータを視線検出部176に供給する。
視線検出部176は、眼球中心/半径推定部174より供給された眼球の中心および半径を示すデータ、および瞳孔中心検出部175より供給された瞳孔の中心位置を示すデータを基に、視線を検出する。
次に、図32のフローチャートを参照して、図31の画像処理装置151による、視線の検出の処理を説明する。
ステップS301において、背景分離部11、頭頂推定部12、および頭頂部中心推定部61は、頭頂部中心推定の処理を行う。
図33は、ステップS301に対応する、頭頂部中心推定の処理の詳細を説明するフローチャートである。
ステップS321において、背景分離部11は、背景分離の処理を実行する。背景分離の処理の詳細は、図3のフローチャートを参照して説明した処理と同様なので、その説明は省略する。
ステップS322において、頭頂推定部12は、頭頂推定の処理を実行する。頭頂推定の処理の詳細は、図6のフローチャートを参照して説明した処理と同様なので、その説明は省略する。
ステップS323において、頭頂中心推定部61は、頭頂部中心算出の処理を実行して、頭頂部中心推定の処理は終了する。頭頂部中心算出の処理の詳細は、図21または図22のフローチャートを参照して説明した処理と同様なので、その説明は省略する。
すなわち、上述したように、以上の処理により頭頂部中心が推定される。以下、推定された頭頂部中心位置を、C1とする。
図32に戻り、ステップS302において、頭頂部半径推定部13は、頭頂部半径算出の処理を実行する。頭頂部半径算出の処理の詳細は、図8または図18のフローチャートを参照して説明した処理と同様であるので、その説明は省略する。これにより、頭頂部半径Rhが算出される。
ステップS303において、目輪郭検出範囲設定部171は、頭頂部中心推定部61より供給された頭頂部中心位置C1、および頭頂部半径推定部13より供給された頭頂部半径Rhを基に、目の輪郭が検出される輪郭検出範囲を設定する。例えば、ステップS303において、頭頂部中心推定部61より供給された頭頂部中心位置C1、および頭頂部半径推定部13より供給された頭頂部半径Rhを基に、図34に示されるように、目の輪郭検出範囲は、中心を頭頂部中心位置C1とし、半径を頭頂部半径Rhとする円191の内側の範囲として設定される。
ステップS304において、目輪郭検出部172は、目の輪郭検出範囲における、画像データの色彩情報を用いることで、顔画像における両目の輪郭を検出する。すなわち、供給された画像の色彩情報からステップS303で設定した目輪郭検出範囲内で、例えば肌、白目、黒目等の色領域を抽出し、それら抽出した色領域の境界を求めること等により、図35に示すように、右目および左目の輪郭Eを検出する。なお、図35においては、片目のみ示している。
目の輪郭Eは、頭頂部の内側に存在し、ステップS303において、目の輪郭検出範囲が、頭頂部中心位置C1および頭頂部半径Rhを基に設定されるようにしたので、ステップS304において、目輪郭検出部172は、顔画像における両目の輪郭Eをより確実に検出することができる。
ステップS305において、鼻孔検出部173は、ステップS304の処理で検出された両目のそれぞれの輪郭Eに基づいて、鼻孔を検出する。例えば、ステップS305において、鼻孔検出部173は、両目のそれぞれの輪郭Eに基づいて、右目の内側端点F1および外側端点F2の位置、並びに左目の内側端点F1および外側端点F2の位置を求め、それら右目および左目のそれぞれの内側端点F1および外側端点F2の位置を基準として、図36に示されるような鼻孔を検索するための検索範囲NEを決定し、検索範囲NE内から鼻孔NHの位置を検出する。すなわち、鼻孔検出部173は、左右両目について、図35に示されるように、それぞれ目の輪郭Eを構成する画素集合の重心Qと、目の輪郭Eを構成する画素集合の2次モーメント(線に関する慣性)を最小にする線Mを求め、さらに、目の輪郭Eを構成する画素集合の中から、線Mの方向において重心Qからの距離が最大となる距離L3、L4の位置の画素を、重心Qから左右方向に1つずつ求め、これらの画素位置を上記内側端点F1と外側端点F2とする。
なお、画素集合の2次モーメント(線に関する慣性)を最小にする線Mの算出については、図39を参照して後述する。
次に、図36に示されるように、鼻孔検出部173は、上述のようにして求めた右目の内側端点F1および外側端点F2の位置と、左目の内側端点F1および外側端点F2の位置とを基準とし、それら各内側端点F1および外側端点F2から下方側に、鼻孔を検索するための探索範囲NEを決定する。ここで、鼻孔NH部分の画像は他の部分の画像と比較して暗く写るので、探索範囲NE内で、輝度が低い画像部分を鼻孔NHの位置として検出する。
ステップS306において、眼球中心/半径推定部174は、眼球の中心および半径を推定する。例えば、ステップS306において、眼球中心/半径推定部174は、図37に示されるように、右目の内側端点F1および外側端点F2の位置と、左目の内側端点F1および外側端点F2の位置と、鼻孔NHの位置との幾何学的な位置関係とに基づいて、眼球EBの中心位置ECおよび眼球EBの半径rを推定する。
ステップS307において、瞳孔中心検出部175は、右目の輪郭Eおよび左目の輪郭E内の画像の輝度情報を用いて、瞳孔の中心を検出する。例えば、ステップS307において、瞳孔中心検出部175は、図36に示されるように、瞳孔EAの中心位置EACを検出する。
ステップS308において、視線検出部176は、視線の方向を検出して、処理は終了する。例えば、ステップS308において、視線検出部176は、図38に示されるように、ステップS306の処理で検出した眼球EBの中心位置ECと、ステップS307の処理で検出した瞳孔EAの中心位置EACとを結ぶベクトルEVを演算し、得られたベクトルEVを視線の方向として検出する。
以上のように、視線が検出される。
なお、図35で示される、輪郭Eのような特定の画素集合の2次モーメントを最小にする線Mは、例えば、以下のような演算により求めることができる。ここでは、図39に示されるように、式(6)で表される直線Mを例に説明する。
輪郭Eの画素集合上の各点(xi,yi)と直線Mとの距離をRiとするとき、直線Mに関する2次モーメントmは、式(7)のように表すことができる。
すなわち、2次モーメントを最小にする直線Mとは、式(7)のmを最小にする直線Mのことである。θは直線Mの傾きを表し、ρは原点から直線Mまでの距離を表す。結論を述べると、式(7)のmを最小にするには、式(7)中のθ、ρとして、式(8)および式(9)の条件を満たすものを使用する。
なお、式(9)の(x0sinθ−y0cosθ+ρ=0)は、直線Mが画素集合の重心を通ることを意味する。
但し、式(8)および式(9)において、a,b,cは、式(10)、式(11)、および式(12)で表される。なお、(x0,y0)は画素集合の重心である。
以上のように、画像上のノイズなどの外乱要素が存在しても、頭頂部中心位置および頭頂部半径をより正確に推定して、推定された頭頂部中心位置および頭頂部半径を基に、目の輪郭の検出範囲を設定して、目の輪郭を検出するようにしたので、より確実により正確な視線が検出されるようになる。
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
図40は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータの構成の例を示すブロック図である。CPU(Central Processing Unit)201は、ROM(Read Only Memory)202、または記録部208に記録されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)203には、CPU201が実行するプログラムやデータなどが適宜記憶される。これらのCPU201、ROM202、およびRAM203は、バス204により相互に接続されている。
CPU201にはまた、バス204を介して入出力インタフェース205が接続されている。入出力インタフェース205には、キーボード、マウス、マイクロホンなどよりなる入力部206、ディスプレイ、スピーカなどよりなる出力部207が接続されている。CPU201は、入力部206から入力される指令に対応して各種の処理を実行する。そして、CPU201は、処理の結果得られた画像等を出力部207に出力する。
入出力インタフェース205に接続されている記録部208は、例えばハードディスクなどで構成され、CPU201が実行するプログラムや各種のデータを記録する。通信部209は、インターネット、その他のネットワークを介して外部の装置と通信する。この例の場合、通信部209は、入力画像を取得するか、または出力画像を出力する、外部とのインタフェースとして動作する。
また、通信部209を介してプログラムを取得し、記録部208に記録してもよい。
入出力インタフェース205に必要に応じて接続されるドライブ210は、磁気ディスク221、光ディスク222、光磁気ディスク223、或いは半導体メモリ224などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記録部208に転送され、記録される。
一連の処理をさせるプログラムが格納されている記録媒体は、図40に示されるように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク221(フレキシブルディスクを含む)、光ディスク222(CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク223(MD(Mini-Disc)(商標)を含む)、若しくは半導体メモリ224などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM202や、記録部208に含まれるハードディスクなどで構成される。
なお、上述した一連の処理を実行させるプログラムは、必要に応じてルータ、モデムなどのインタフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を介してコンピュータにインストールされるようにしてもよい。
また、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
11 背景分離部, 12 頭頂推定部, 13 頭頂部半径推定部, 21 垂直距離判定部, 22 半径算出部, 61 頭頂部中心推定部, 71 中心位置算出部, 121 色領域決定部, 122 重心点検出領域設定部, 123 重心点検出部, 124 重心点X成分差分検出部, 125 角度検出部, 171 目輪郭検出範囲設定部, 172 目輪郭検出部, 173 鼻孔検出部, 174 眼球中心/半径推定部, 175 瞳孔中心検出部, 176 視線検出部, 208 記録部, 221 磁気ディスク, 222 光ディスク, 223 光磁気ディスク, 224 半導体メモリ