(57)【要約】【課題】画像中において様々な向きで描かれている検出対象を、簡易な処理で一定以上の信頼性をもって画像中から検出する。【解決手段】原画像データに基づいて原画像データの画像の少なくとも一部に対応する画像を表す処理画像データを生成する（Ｓ２１０）。処理画像データの画像の少なくとも一部をθ（０＜θ＜９０度）だけ回転させて得られる画像を表す第１の回転画像データを生成する（Ｓ２３０）。あらかじめ用意したパターンを適用して、受け取った画像データの画像が所定の対象物を含むか否かについての判定を行うことができる第１種の判定部を使用して、処理画像データおよび第１の回転画像データに関して判定を行う（Ｓ２４０）。処理画像データと第１の回転画像データとに関する第１種の判定部による判定結果に基づいて、原画像データの画像中において所定の対象物が存在する部分を決定する（Ｓ２７０）。【選択図】図６
2009032022.tif 000002
【特許請求の範囲】
【請求項１】
画像中において所定の対象物が存在する部分を決定する画像処理装置であって、
原画像データに基づいて前記原画像データの画像の少なくとも一部に対応する画像を表す処理画像データを生成する処理画像データ生成部と、
前記処理画像データの画像の少なくとも一部をθ（θは、０より大きく９０度より小さい角度）だけ回転させて得られる画像を表す第１の回転画像データを生成する第１の回転画像データ生成部と、
あらかじめ用意したパターンを適用して、受け取った画像データの画像が所定の対象物を含むか否かについての判定を行うことができる第１種の判定部であって、前記処理画像データおよび前記第１の回転画像データに関して前記判定を行う第１種の判定部と、
前記処理画像データと前記第１の回転画像データとに関する前記第１種の判定部による判定結果に基づいて、前記原画像データの画像中において前記所定の対象物が存在する部分を決定する対象物特定部と、を備える画像処理装置。
【請求項２】
請求項１記載の画像処理装置であって、
前記第１種の判定部は、前記所定の対象物が存在する画像を表す画像データと、前記所定の対象物が描かれていない画像を表す画像データと、を使用して学習させたモジュールを含む、画像処理装置。
【請求項３】
請求項２記載の画像処理装置であって、
前記第１種の判定部の前記モジュールは、前記所定の対象物が存在する画像を表す画像データとして、
画像の面内において所定の範囲に含まれる向きで前記所定の対象物が存在する画像を表す第１種のサンプル画像データと、
画像の面内において前記所定の範囲と同じ角度幅を有し前記所定の範囲に対して−θだけ異なる範囲に含まれる向きで前記所定の対象物が存在する画像データの画像をθだけ回転させて得られる画像の少なくとも一部を含む第２種のサンプル画像データと、を使用して学習させたモジュールである、画像処理装置。
【請求項４】
請求項１ないし３のいずれかに記載の画像処理装置であって、さらに、
前記処理画像データの画像の少なくとも一部を−θだけ回転させて得られる画像を表す第２の回転画像データを生成する第２の回転画像データ生成部を含み、
前記第１種の判定部は、さらに前記第２の回転画像データに関して前記判定を行い、
前記対象物特定部は、前記処理画像データならびに前記第１および第２の回転画像データに関する前記第１種の判定部による判定結果に基づいて、前記原画像データの画像中において前記所定の対象物が存在する部分を決定する、画像処理装置。
【請求項５】
請求項４記載の画像処理装置であって、
前記第１種の判定部の前記モジュールは、前記所定の対象物が存在する画像を表す画像データとして、さらに、画像の面内において前記所定の範囲と同じ角度幅を有し前記所定の範囲に対してθだけ異なる範囲に含まれる向きで前記所定の対象物が存在する画像データの画像を−θだけ回転させて得られる画像の少なくとも一部を含む第３種のサンプル画像データを使用して学習させたモジュールである、画像処理装置。
【請求項６】
請求項４または５に記載の画像処理装置であって、さらに、
受け取った画像データの画像を（９０×ｎ）度（ｎは、１，２および３）回転させて得られる回転画像について、あらかじめ用意したパターンを適用して、前記回転画像が前記所定の対象物を含むか否かについての判定を行うことができる第２種の判定部であって、前記処理画像データならびに前記第１および第２の回転画像データに関して前記判定を行う第２種の判定部を備え、
前記対象物特定部は、前記処理画像データならびに前記第１および第２の回転画像データに関する前記第１種および第２種の判定部による判定結果に基づいて、前記原画像データの画像中において前記所定の対象物が存在する部分を決定する、画像処理装置。
【請求項７】
請求項４ないし６のいずれかに記載の画像処理装置であって、
前記処理画像データは、所定数の画素で長方形の画像を表す画像データであり、
前記第１および第２の回転画像データは、前記所定数の画素で画像を表す画像データであって、前記処理画像データの画像を回転させて得られる画像から一部を除き、他の画像部分を加えて得られる長方形の画像を表す画像データである、画像処理装置。
【請求項８】
請求項４ないし６のいずれかに記載の画像処理装置であって、
前記処理画像データは、所定数の画素で長方形の画像を表す画像データであり、
前記第１および第２の回転画像データは、前記所定数の画素で画像を表す画像データであって、前記処理画像データの画像を回転させて得られる画像を縮小し、他の画像部分を加えて得られる長方形の画像を表す画像データである、画像処理装置。
【請求項９】
請求項１〜８のいずれかに記載の画像処理装置であって、
前記処理画像データは、前記原画像データの画素数よりも少ない画素で前記原画像データの画像に対応する画像を表す画像データであり、
前記第１種の判定部は、さらに、前記処理画像データおよび前記第１の回転画像データの画像中において前記所定の対象物が存在する部分を決定し、
前記対象物特定部は、前記処理画像データおよび前記第１の回転画像データの画像中において前記所定の対象物が存在する部分に基づいて、前記原画像データの画像中において前記所定の対象物が存在する部分を決定する、画像処理装置。
【請求項１０】
請求項１〜８のいずれかに記載の画像処理装置であって、
前記処理画像データは、前記原画像データの画像の一部を表す画像データであり、
前記第１種の判定部は、前記処理画像データおよび前記第１の回転画像データの画像が前記所定の対象物を含むか否かを決定し、
前記対象物特定部は、前記所定の対象物を含むと決定された前記処理画像データおよび前記第１の回転画像データの画像に対応する部分を、前記原画像データの画像中において前記所定の対象物が存在する部分として決定する、画像処理装置。
【請求項１１】
請求項１ないし１０のいずれか記載の画像処理装置であって、
前記θは１５度以上４０度以下の角度である、画像処理装置。
【請求項１２】
請求項１ないし１０のいずれか記載の画像処理装置であって、
前記θは２５度以上３５度以下の角度である、画像処理装置。
【請求項１３】
請求項１ないし１２のいずれかに記載の画像処理装置であって、
前記所定の対象物は人間の顔である、画像処理装置。
【請求項１４】
画像中において所定の対象物が存在する部分を決定する方法であって、
（ａ）原画像データに基づいて前記原画像データの画像の少なくとも一部に対応する画像を表す処理画像データを生成する工程と、
（ｂ）前記処理画像データの画像の少なくとも一部をθ（θは、０より大きく９０度より小さい角度）だけ回転させて得られる画像を表す第１の回転画像データを生成する工程と、
（ｃ）あらかじめ用意したパターンを適用して、受け取った画像データの画像が所定の対象物を含むか否かについての判定を行うことができる第１種の判定部を使用して、前記処理画像データおよび前記第１の回転画像データに関して前記判定を行う工程と、
（ｄ）前記処理画像データと前記第１の回転画像データとに関する前記第１種の判定部による判定結果に基づいて、前記原画像データの画像中において前記所定の対象物が存在する部分を決定する工程と、を備える方法。
【請求項１５】
画像中において所定の対象物が存在する部分を決定するためのコンピュータプログラムであって、
原画像データに基づいて前記原画像データの画像の少なくとも一部に対応する画像を表す処理画像データを生成する機能と、
前記処理画像データの画像の少なくとも一部をθ（θは、０より大きく９０度より小さい角度）だけ回転させて得られる画像を表す第１の回転画像データを生成する機能と、
あらかじめ用意したパターンを適用して、受け取った画像データの画像が所定の対象物を含むか否かについての判定を行うことができる第１種の判定部を使用して、前記処理画像データおよび前記第１の回転画像データに関して前記判定を行う機能と、
前記処理画像データと前記第１の回転画像データとに関する前記第１種の判定部による判定結果に基づいて、前記原画像データの画像中において前記所定の対象物が存在する部分を決定する機能と、をコンピュータに実現させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像中において特定の対象物が写っている領域を特定する技術に関する。
【背景技術】
【０００２】
従来より、あらかじめ多数のサンプル画像を用いて学習させた判別器を用いて、画像中に特定の物体が存在するか否かを判別する技術が存在する。そのような技術においては、事前の学習に用いた特定の物体を含むサンプル画像と、判別の対象である画像とが類似するほど、判別の精度は高くなる。また、事前の学習において使用する複数のサンプル画像は、特定の物体が同じ向きに描かれており互いに類似する複数のサンプル画像である方が、特定の物体が様々な向きで描かれている複数のサンプル画像を使用した場合に比べて、判別の精度が高くなる。
【０００３】
このため、たとえば、画像が顔画像か否かを判別するためのある従来技術においては、以下のような処理が行われる。すなわち、顔の向きおよびその天地方向の組合せが互いに異なる３６グループの顔サンプル画像群を用意する。一つの顔サンプル画像群は、顔の向きおよびその天地方向の組合せが一致する複数の顔サンプル画像を含む。そして、一つの顔サンプル画像群を使用して一つの判別器を学習させる。そのようにして互いに異なる顔サンプル画像群で学習された３６個の判別器を備える判別器群を用意して、画像が顔画像か否かを判別する（特許文献１）。
【０００４】
【特許文献１】特開２００６−３５０７０４号公報
【０００５】
しかし、上記の従来技術においては、多数の判別器を用意する必要がある。このため、判別器の構成が複雑となる。このような問題は、顔の判別によらず、あらかじめ学習させたモジュールを使用して画像中において特定の対象物が存在するか否かについての判定を行う場合に、広く生じる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、画像中において様々な向きで描かれている検出対象を、簡易な処理で一定以上の信頼性をもって画像中から検出することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の一態様においては、画像中において所定の対象物が存在する部分を決定するために以下の構成を有する画像処理装置を採用する。すなわち、この画像処理装置は、
原画像データに基づいて原画像データの画像の少なくとも一部に対応する画像を表す処理画像データを生成する処理画像データ生成部と、
処理画像データの画像の少なくとも一部をθ（θは、０より大きく９０度より小さい角度）だけ回転させて得られる画像を表す第１の回転画像データを生成する第１の回転画像データ生成部と、
あらかじめ用意したパターンを適用して、受け取った画像データの画像が所定の対象物を含むか否かについての判定を行うことができる第１種の判定部であって、処理画像データおよび第１の回転画像データに関して判定を行う第１種の判定部と、
処理画像データと第１の回転画像データとに関する第１種の判定部による判定結果に基づいて、原画像データの画像中において所定の対象物が存在する部分を決定する対象物特定部と、を備える。
【０００８】
このような態様とすることで、画像中において様々な向きで存在する（描かれている）検出対象を、第１の回転画像データについての判定を行わない態様に比べて高い信頼性で、画像中から検出することができる。また、検出対象の向きに応じた判定部を備える態様に比べて、簡易な構成および処理で、検出対象を画像中から検出することができる。
【０００９】
なお、「画像にあらかじめ用意したパターンを適用して何らかの判定を行う」とは、あらかじめ用意したパターンを判定の対象である画像に適用して所定の情報処理を行うことによって、判定を行うことをいう。たとえば、（ｉ）あらかじめ用意したパターンを使用して、判定の対象である画像の特定の部分を取り出し、所定の処理を行うことによって、上記判定を行う場合や、（ｉｉ）判定の対象である画像の少なくとも一部と、あらかじめ用意したパターンとの比較を行うことによって上記判定を行う場合がこれに含まれる。
【００１０】
また、「ある画像をθだけ回転させて得られる画像」には、「ある画像をθだけ回転させ、さらに拡大または縮小した画像」をも含む。そして、「画像Ａに対応する画像Ｂを表す画像データ」には、ある画像データにおいて所定数の画素で表される画像Ａを、異なる数の画素で表す画像データや、ある画像データにおいて各画素につき所定の情報量で色が表されている画像Ａに対して、各画素につきよりより少ない情報量で色を表す画像Ｂの画像データが含まれる。
【００１１】
なお、第１種の判定部は、所定の対象物が存在する画像を表す画像データと、所定の対象物が描かれていない画像を表す画像データと、を使用して学習させたモジュールを含む態様とすることができる。
【００１２】
このような態様とすれば、学習させることによって、任意の対象物について画像中において存在する部分を決定することができる。
【００１３】
第１種の判定部のモジュールは、所定の対象物が存在する画像を表す画像データとして、
画像の面内において所定の範囲に含まれる向きで所定の対象物が存在する画像を表す第１種のサンプル画像データと、
画像の面内において所定の範囲と同じ角度幅を有し所定の範囲に対して−θだけ異なる範囲に含まれる向きで所定の対象物が存在する画像データの画像をθだけ回転させて得られる画像の少なくとも一部を含む第２種のサンプル画像データと、を使用して学習させたモジュールとすることができる。
【００１４】
なお、本明細書においては、時計回り方向を回転の正の向きとする。また、「向きの範囲Ａと向きの範囲Ｂとがθだけ異なる」とは、向きの範囲（角度の範囲）Ａの中心の向きと向きの範囲Ｂの中心の向きとがθだけ異なることを意味する。「角度幅」とは、向きの範囲の大きさをいう。「角度幅」は、たとえば、「度」や「ラジアン」の単位で表すことができる。
【００１５】
上記のような態様とすれば、処理画像データの画像において対象物が傾いて写っている場合に、第１の回転画像データについて第１種の判定部で判定を行って、その対象物を発見できる可能性を高くすることができる。
【００１６】
画像処理装置は、さらに、処理画像データの画像の少なくとも一部を−θだけ回転させて得られる画像を表す第２の回転画像データを生成する第２の回転画像データ生成部を含むことが好ましい。そして、第１種の判定部は、さらに第２の回転画像データに関して判定を行うことが好ましい。そのような態様において、対象物特定部は、処理画像データならびに第１および第２の回転画像データに関する第１種の判定部による判定結果に基づいて、原画像データの画像中において所定の対象物が存在する部分を決定する。
【００１７】
このような態様とすることで、画像中においてより広い範囲の様々な向きで存在する（描かれている）検出対象を、画像中から検出することができる。また、検出対象の向きに応じた判定部を備える態様に比べて、簡易な構成および処理で、検出対象を画像中から検出することができる。
【００１８】
第１種の判定部のモジュールは、所定の対象物が存在する画像を表す画像データとして、さらに、画像の面内において所定の範囲と同じ角度幅を有し所定の範囲に対してθだけ異なる範囲に含まれる向きで所定の対象物が存在する画像データの画像を−θだけ回転させて得られる画像の少なくとも一部を含む第３種のサンプル画像データを使用して学習させたモジュールとすることが好ましい。
【００１９】
上記のような態様とすれば、より広い角度範囲で処理画像データの画像において傾いて写っている対象物を、画像中において特定することができる。
【００２０】
画像処理装置は、さらに、受け取った画像データの画像を（９０×ｎ）度（ｎは、１，２および３）回転させて得られる回転画像について、あらかじめ用意したパターンを適用して、回転画像が所定の対象物を含むか否かについての判定を行うことができる第２種の判定部であって、処理画像データならびに第１および第２の回転画像データに関して判定を行う第２種の判定部を備えることが好ましい。そのような態様において、対象物特定部は、処理画像データならびに第１および第２の回転画像データに関する第１種および第２種の判定部による判定結果に基づいて、原画像データの画像中において所定の対象物が存在する部分を決定することが好ましい。
【００２１】
このような態様とすれば、画像中において任意の向きで存在する対象物を特定することができる。
【００２２】
なお、処理画像データは、所定数の画素で長方形の画像を表す画像データとすることができる。そして、第１および第２の回転画像データは、所定数の画素で画像を表す画像データであって、処理画像データの画像を回転させて得られる画像から一部を除き、他の画像部分を加えて得られる長方形の画像を表す画像データとすることができる。
【００２３】
このような態様とすれば、処理画像データの画像を回転させて得られる画像を縮小する態様に比べて、小さな対象物を見逃す可能性が低い。
【００２４】
また、第１および第２の回転画像データは、所定数の画素で画像を表す画像データであって、処理画像データの画像を回転させて得られる画像を縮小し、他の画像部分を加えて得られる長方形の画像を表す画像データとすることもできる。
【００２５】
このような態様とすれば、処理画像データの画像の一部が欠落することがない。よって、処理画像データの画像の端（長方形の角の近辺）に存在する対象物を見落とす可能性が低い。なお、処理画像データならびに第１および第２の回転画像データは、いずれも長方形の画像を表す画像データであって、それぞれの縦の画素数と横の画素数が互いに等しい長方形の画像を表す画像データとすることができる。
【００２６】
処理画像データは、原画像データの画素数よりも少ない画素で原画像データの画像に対応する画像を表す画像データとすることができる。そして、第１種の判定部は、さらに、処理画像データおよび第１の回転画像データの画像中において所定の対象物が存在する部分を決定することが好ましい。また、対象物特定部は、処理画像データおよび第１の回転画像データの画像中において所定の対象物が存在する部分に基づいて、原画像データの画像中において所定の対象物が存在する部分を決定することが好ましい。
【００２７】
このような態様においては、原画像データの画像全体を回転させて第１の回転画像データを生成し、判定を行うことができる。よって、原画像データの画像の一部について個々に回転変換を行って判定を実行する態様に比べて、回転変換の回数を少なくすることができる。
【００２８】
第２種の判定部は、さらに、第２の回転画像データの画像中において所定の対象物が存在する部分を決定することもできる。そのような態様においては、対象物特定部は、処理画像データならびに第１および第２の回転画像データの画像中において所定の対象物が存在する部分に基づいて、原画像データの画像中において所定の対象物が存在する部分を決定することができる。
【００２９】
このような態様においては、原画像データの画像の一部について個々に回転変換を行って判定を実行する態様に比べて少ない回数の回転変換で、広い範囲の角度で傾いている対象物を検出することができる。
【００３０】
なお、処理画像データは、原画像データの画像の一部を表す画像データとすることもできる。そのような態様においては、第１種の判定部は、処理画像データおよび第１の回転画像データの画像が所定の対象物を含むか否かを決定することができる。そして、対象物特定部は、所定の対象物を含むと決定された処理画像データおよび第１の回転画像データの画像に対応する部分を、原画像データの画像中において所定の対象物が存在する部分として決定することができる。
【００３１】
このような態様においては、画像全体ではなく画像の一部を回転変換するため、処理に要する資源を少なくすることができる。
【００３２】
なお、第２種の判定部は、回転画像が所定の対象物を含むか否かを決定することもできる。そのような態様においては、対象物特定部は、所定の対象物を含むと決定された処理画像データならびに第１および第２の回転画像データの画像に対応する部分を、原画像データの画像中において所定の対象物が存在する部分として決定することができる。
【００３３】
このような態様においては、原画像データの画像全体について回転変換を行って判定を実行する態様に比べて少ない資源で、広い範囲の角度で傾いている対象物を検出することができる。
【００３４】
なお、θは１５度以上４０度以下の角度とすることが好ましい。そして、θは２５度以上３５度以下の角度とすることがより好ましい。
【００３５】
また、所定の対象物は人間の顔とすることができる。そのような態様とすれば、人間の顔が写っている領域を特定し、その後、その領域の位置および大きさに基づいて見る者に好ましく感じられる画像処理を行うことができる。
【００３６】
なお、本発明は、種々の形態で実現することが可能であり、例えば、画像処理方法および画像処理装置、印刷制御方法および印刷制御装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態で実現することができる。
【発明を実施するための最良の形態】
【００３７】
Ａ．第１実施例：
Ａ１．装置の構成：
図１は、本発明の実施例である画像処理装置の概略構成を示す説明図である。この画像処理装置は、画像データに対して所定の画像処理を行うパーソナルコンピュータ１００と、パーソナルコンピュータ１００に情報を入力する装置としてのキーボード１２０、マウス１３０およびＣＤ−Ｒ／ＲＷドライブ１４０と、情報を出力する装置としてのディスプレイ１１０、プリンタ２２およびプロジェクタ３２と、を備えている。コンピュータ１００では、所定のオペレーティングシステムの下で、アプリケーションプログラム９５が動作している。このアプリケーションプログラム９５が実行されることで、コンピュータ１００のＣＰＵ１０２は様々な機能を実現する。
【００３８】
画像のレタッチなどを行うアプリケーションプログラム９５が実行され、キーボード１２０やマウス１３０からユーザの指示が入力されると、ＣＰＵ１０２は、ＣＤ−Ｒ／ＲＷドライブ１４０内のＣＤ−ＲＷからメモリ１０３内に画像データを読み込む。ＣＰＵ１０２は、画像データに対して所定の画像処理を行って、ビデオドライバ９１を介して画像をディスプレイ１１０に表示する。また、ＣＰＵ１０２は、画像処理を行った画像データを、プリンタドライバ９６を介してプリンタ２２に印刷させることもできる。さらに、ＣＰＵ１０２は、画像データを、プロジェクタ３２のドライバ９８を介してプロジェクタ３２に投射させることもできる。
【００３９】
本実施例では、プリンタドライバ９６が、画像データの画像中において人間の顔が存在すると思われる領域を特定する。そして、そのような領域が存在する場合には、印刷に先立って、画像データに対して、人間の顔がより美しく見えるような補正を行う。人間の顔が存在すると思われる領域が存在しない場合には、画像データに対して他の補正が行われるか、画像データに対して補正が行われない。その後、その画像データに基づいて印刷が実行される。
【００４０】
Ａ２．顔領域の検出の原理：
本実施例では、画像中で人間の顔が存在する領域を特定する処理は、プリンタドライバ９６が有するあるモジュールが実行する。このモジュールを「顔検出部９６２」と呼ぶ。顔検出部９６２については、プリンタドライバ９６に実装されるのに先立って、あらかじめサンプルの画像データを使って学習が行われる。
【００４１】
図２は、画像データの画像中で人間の顔が存在する可能性が高いと思われる領域を特定する方法を示す図である。以下で説明する処理は、プリンタドライバ９６の顔検出部９６２が実行する。なお、人間の顔が存在する可能性が高いと思われる領域を、本明細書では「顔領域」と表記する。
【００４２】
図２において、顔領域の有無の検討対象である画像ＰＩ１は、たとえば、３２０画素×２４０画素の画像である。画像ＰＩ１の画像データＰＩＤ１は、各画素の色について、明度のみの情報を有する。顔領域を特定する際には、画像の大きさ以下の大きさを有する検出窓ＤＷで、画像データＰＩＤ１の画像ＰＩ１内における検討対象の画像領域ＩＤＷを特定し、その画像領域ＩＤＷの各画素の明度のデータを取り出す。その後、その画素の明度のデータに基づいて、その画像領域ＩＤＷに人間の顔と思われるパターンが存在するか否かが検討される。
【００４３】
一つの画像領域についての検討が終了すると、検出窓ＤＷは、画像ＰＩ１内で移動される。移動は、左から右に向かって行われる（図２の矢印Ａｈ参照）。検出窓ＤＷが画像ＰＩ１中の右端に到達したときには、次には画像ＰＩ１中の左端であって、それまでの位置よりも下方の位置に配される。以下、同様に検出窓ＤＷが移動される。ここでは、検出窓ＤＷは、左右方向の一度の移動において、検出窓ＤＷの幅Ｗｈよりも大きい距離ｄｈだけ移動される（図２の矢印Ａｈ参照）。また、検出窓ＤＷは、上下方向の移動についても、検出窓ＤＷの高さＷｖよりも大きい距離だけ移動される。
【００４４】
検出窓ＤＷによって取り出されたデータを解析した結果、その画像領域ＩＤＷが「顔領域である」と判定することはできないが、「顔領域である可能性がある」と判定された場合には、検出窓ＤＷは、上、下、左、右の各方向に向かって１画素分づつ、移動される（図２の矢印Ａｓ参照）。そして、それぞれの位置において検出窓ＤＷ内の画像領域のデータの解析が行われる。移動後のいずれかの検出窓ＤＷ内の画像領域が「顔領域である」と判定された場合には、検出窓ＤＷの幅（または高さ）よりも大きい距離の移動（図２の矢印Ａｈ参照）が再開される。
【００４５】
一方、上、下、左、右の移動後の検出窓ＤＷ内の画像が、いずれも「顔領域である」と判定することはできないが、上、下、左、右のいずれかの位置において検出窓ＤＷ内の画像が「顔領域である可能性がある」と判定された場合には、以下の処理が行われる。すなわち、もっとも顔領域である可能性が高いと判断された位置から再び上、下、左、右の各方向に向かって１画素分づつ、検出窓ＤＷが移動される。なお、上、下、左、右に移動する前の検出窓ＤＷ内の画像が、上、下、左、右の移動後の検出窓ＤＷ内の画像よりも顔領域である可能性が高い、と判断された場合には、移動前の検出窓ＤＷの位置が、もっとも顔領域である可能性が高い位置とされる。以下、画像ＰＩ１中の所定の範囲について同様の処理が繰り返され、もっとも顔領域である可能性が高い位置に検出窓がある状態で、最終的にその画像領域周辺に顔領域が存在するか否かが判定される。その後、検出窓ＤＷの幅（または高さ）よりも大きい距離の移動（図２の矢印Ａｈ参照）が再開される。
【００４６】
図３は、検出窓ＤＷによって取り出されたデータの画像領域ＩＤＷが顔領域であるか否かの判定の処理を示す図である。検出窓ＤＷによって取り出されたデータの画像領域ＩＤＷが顔領域であるか否かについては、２４段階のステージ（図３中でＳｔ１〜Ｓｔ２４で示す）を経て判定が行われる。第１のステージＳｔ１の判定において、画像領域のデータが所定の条件を満たした場合にのみ、次の第２のステージＳｔ２の判定が行われる。以下、第３〜第２３のステージＳｔ３〜Ｓｔ２３についても同様である。最終の第２４のステージの判定においても条件を満たした画像領域ＩＤＷは、「顔領域である」と判定される。
【００４７】
また、第９のステージまでの条件を満たした画像については、「顔領域と判定することはできないが顔領域である可能性がある」と判定される。そのような場合には、上述のように、上下左右の方向に沿った１画素分の検出窓ＤＷの移動が行われ（図２の矢印Ａｓ参照）、データの解析と検出窓の移動が繰り返される。
【００４８】
図４は、あるステージにおける判定の処理を示す図である。各ステージ（図３参照）においては、矩形フィルタを使った判定が行われる。図４においては、矩形フィルタの例として、矩形フィルタＦ１１，Ｆ１２を示す。また、矩形フィルタが適用される画像領域ＩＤＷの画像も、矩形フィルタと重ねて表示する。図４の例では、画像領域ＩＤＷの画像は、顔の画像であるものとする。画像領域ＩＤＷの画像として、人間の顔の目と鼻と口を示す。
【００４９】
矩形フィルタは、２０画素×２０画素の大きさを有する。ここでは、説明を簡略にするために、検出窓ＤＷによって取り出されたデータの画像領域ＩＤＷの大きさと、矩形フィルタの大きさとは、同じであるものとする。すなわち、画像領域ＩＤＷも、２０画素×２０画素の大きさを有する。矩形フィルタは、画像領域ＩＤＷの一部の領域（図４においてハッチを付して示す）に含まれる画素の明度の情報を取り出すために使用される。
【００５０】
矩形フィルタＦ１１を使用した判定においては、まず、矩形フィルタＦ１１を使用して、画像領域ＩＤＷのデータのうち、領域Ａ１１ａの各画素の明度のデータＹ１１ａが取り出される。領域Ａ１１ａは、画像領域ＩＤＷにおいて高さ方向の中央よりも上側にあって画像領域ＩＤＷの左右幅と等しい幅を有する長方形の領域である。また、同様に、矩形フィルタＦ１１を使用して、領域Ａ１１ｂの各画素の明度のデータＹ１１ｂも取り出される。領域Ａ１１ｂは、画像領域ＩＤＷにおいて高さ方向の中央よりも下側にあって画像領域ＩＤＷの左右幅と等しい幅を有する長方形の領域である。
【００５１】
なお、領域Ａ１１ａは、画像領域ＩＤＷが顔領域である場合に、人間の目があると推定される領域である。また、領域Ａ１１ｂは、画像領域ＩＤＷが顔領域である場合に、人間の口があると推定される領域である（図４の上段左側参照）。
【００５２】
そして、領域Ａ１１ａの各画素の明度Ｙ１１ａの合計をα１１ａ倍した値と（α１１ａは定数）、領域Ａ１１ｂの各画素の明度Ｙ１１ｂの合計をα１１ｂ倍した値と（α１１ｂは定数）、の合計値が所定の基準値θ１１よりも大きいか否かが判定される。合計値がθ１１よりも大きい場合には、矩形フィルタＦ１１を用いた判定の結果の値Ａ１１として、値Ｄ１１ｙが返される。合計値がθ１１以下である場合には、矩形フィルタＦ１１を用いた判定の結果の値Ａ１１として、値Ｄ１１ｎが返される（図４の上段右側参照）。値Ｄ１１ｙ，Ｄ１１ｎは、所定の定数である。
【００５３】
同様に、矩形フィルタＦ１２を使用した判定においては、矩形フィルタＦ１２を使用して、画像領域ＩＤＷのデータのうち、領域Ａ１２ａの各画素の明度のデータＹ１２ａが取り出される。領域Ａ１２ａは、領域Ａ１１ａの左半分の領域Ａ１１ａｌの一部であって、領域Ａ１１ａｌの中心を含む領域である。また、矩形フィルタＦ１２を使用して、画像領域ＩＤＷのデータのうち、領域Ａ１２ｂの各画素の明度のデータＹ１２ｂが取り出される。領域Ａ１２ｂは、領域Ａ１１ａの右半分の領域Ａ１１ａｒの一部であって、領域Ａ１１ａｒの中心を含む領域である。
【００５４】
なお、領域Ａ１２ａは、画像領域ＩＤＷが顔領域である場合に、人間の右目があると推定される領域である。また、領域Ａ１２ｂは、画像領域ＩＤＷが顔領域である場合に、人間の左目があると推定される領域である（図４の中段左側参照）。
【００５５】
そして、領域Ａ１２ａの各画素の明度Ｙ１２ａの合計をα１２ａ倍した値と（α１２ａは定数）、領域Ａ１２ｂの各画素の明度Ｙ１２ｂの合計をα１２ｂ倍した値と（α１２ｂは定数）、の合計値が所定の基準値θ１２よりも大きいか否かが判定される。合計値がθ１２よりも大きい場合には、矩形フィルタＦ１２を用いた判定の結果の値Ａ１２として、値Ｄ１２ｙが返される。合計値がθ１２以下である場合には、矩形フィルタＦ１２を用いた判定の結果の値Ａ１２として、値Ｄ１２ｎが返される（図４の中段右側参照）。値Ｄ１２ｙ，Ｄ１２ｎは、所定の定数である。
【００５６】
以上のように、一つのステージの処理において、１以上の矩形フィルタを用いた判定が行われる。そして、各矩形フィルタの判定結果の値Ａ１１，Ａ１２．．．の合計値が所定の基準値Θ１よりも大きいか否かが判定される（図４の下段参照）。合計値がΘ１よりも大きい場合には、画像領域ＩＤＷは、このステージの判定条件を満たしたと判定される。合計値がΘ１以下である場合には、画像領域ＩＤＷは、このステージの判定条件を満たさないと判定される。画像領域ＩＤＷが、このステージの判定条件を満たさない場合には、画像領域ＩＤＷは、顔領域ではないと判定され、処理が終了する。一方、画像領域ＩＤＷが、このステージの判定条件を満たした場合には、次のステージの判定が行われる（図３参照）。
【００５７】
なお、以上の処理は、複数種類の大きさの検出窓を使用して行われる。たとえば、２０画素×２０画素の大きさから２００画素×２００画素の大きさまでの複数種類の検出窓が、顔領域の検出に使用される。このため、画像中で顔が様々な大きさに描かれていても、それらを顔領域として検出することができる。なお、検出対象の画像ＰＩ１の５０％以上の面積（画素数）を有する検出窓は、たとえば、証明写真のように、一つの顔が画像全体に大きく写っている場合の顔領域の認定に有効である。
【００５８】
なお、第１実施例においては、矩形フィルタの大きさは２０画素×２０画素である。このため、２０画素×２０画素以外の大きさの検出窓ＤＷが使用される場合には、検出窓ＤＷによって取り出されたデータの画像は２０画素×２０画素に解像度変換されて、上記の判定の対象とされる。
【００５９】
上記の判定は、あらかじめ用意された矩系フィルタを使用して行われる（図４参照）。このため、画像中で顔が傾いて写っている部分については、たとえば、矩形フィルタＦ１２の領域Ａ１１ａｌと領域Ａ１１ａｒ内に目が含まれない場合がある。同様に、矩形フィルタＦ１１の領域Ａ１１ａと領域Ａ１１ｂ内にそれぞれ目と口が含まれない場合がある。このため、画像中で顔が傾いて写っている部分については、「顔領域である」と判定されない可能性がある。
【００６０】
なお、上記の処理において、どのような矩形フィルタが使用されるかは、サンプルの画像データを用いて行われる顔検出部９６２（より具体的には顔検出部９６２の機能部である判定部９６２３）の学習において、顔領域の検出に先立って、あらかじめ決定される。また、θ１１，θ１２，Θ１などの基準値も、顔検出部９６２の学習において決定される。一方、α１１ａ，α１１ｂなどの係数は、矩形フィルタと対応づけられて予め決定されている。すなわち、学習において、各ステージで使用される矩形フィルタが決定されると、使用される係数も同時に決定される。
【００６１】
Ａ３．顔領域の検出処理：
図５は、顔検出部９６２（より具体的には、顔検出部９６２の機能部である判定部９６２３）の学習の際の処理を示すフローチャートである。図５の処理においては、ステップＳ１１０〜Ｓ１６０で、学習用のサンプル画像データを準備する。そして、ステップＳ１７０で、それらのサンプル画像データを使用して、顔検出部９６２の学習を行う。
【００６２】
ステップＳ１１０〜Ｓ１６０で準備される学習用のサンプル画像データは、画像中に実際に顔が存在する、たとえば３００００個の写真画像の画像データと、画像中に顔が存在しない、たとえば５００００個の写真画像の画像データと、を含む。学習用に準備されるサンプル画像データは、たとえば２０画素×２０画素の画像データである。学習用のサンプル画像データは、各画素について０〜２５５の階調値で表される明度のみの情報を有する。階調値０が最も暗い明度を表し、階調値２５５が最も明るい明度を表す。
【００６３】
ステップＳ１１０では、正面画像データグループが準備される。正面画像データグループは、１００００個の正面画像データＳＰ０を含む。正面画像データＳＰ０は、画像中に実際に顔が存在する画像の画像データである。正面画像データＳＰ０は、たとえば２０画素×２０画素の画像データである。正面画像データＳＰ０は、各画素について０〜２５５の階調値で表される明度のみの情報を有する。
【００６４】
正面画像データＳＰ０は、顔がほぼ正面を向いており、かつ、左右の目の最も近い点Ｅｌ，Ｅｒを結ぶ線がほぼ水平であり、それらの点Ｅｌ，Ｅｒの中間点Ｅｃと口の左右方向の中心位置Ｍｃを結ぶ線がほぼ鉛直である画像を有する画像データである（図５の上段参照）。
【００６５】
なお、「顔がほぼ正面を向いている」とは、画像中において顔の両目が写っている状態を意味する。「ある線がほぼ水平である」とは、ある線が水平方向プラスマイナス１５度の範囲にあることをいう。「ある線がほぼ鉛直である」とは、ある線が鉛直プラスマイナス１５度の範囲にあることをいう。よって、正面画像データＳＰ０は、顔がほぼ正面を向いており、かつ、画像の面内で反時計回り方向に１５度〜時計回り方向に１５度傾いた顔を含む画像データである。正面画像データＳＰ０の画像の一例を、ステップＳ１１０の左上側に略図で示す。
【００６６】
ステップＳ１２０では、左傾斜画像データグループが準備される。左傾斜画画像データグループは、１００００個の左傾斜画像データＳＰｉ１を含む。左傾斜画像データＳＰｉ１は、画像中に実際に顔が存在する画像の画像データである。左傾斜画像データＳＰｉ１は、たとえば３０画素×３０画素の画像データである。左傾斜画像データＳＰｉ１は、各画素について０〜２５５の階調値で表される明度のみの情報を有する。
【００６７】
左傾斜画像データＳＰｉ１は、顔がほぼ正面を向いており、かつ、画像の面内で反時計回りに約３０度傾いた顔を含む画像データである。より具体的には、左傾斜画像データＳＰｉ１は、左右の目の最も近い点Ｅｌ，Ｅｒを結ぶ線が水平方向に対して反時計回りに約３０度傾いており、点Ｅｌ，Ｅｒの中間点Ｅｃと口の左右方向の中心位置Ｍｃを結ぶ線が鉛直に対して反時計回りに約３０度傾いている画像を有する画像データである。
【００６８】
なお、ここでは、「約」とは、プラスマイナス１５度の範囲を表す。よって、左傾斜画像データＳＰｉ１は、顔がほぼ正面を向いており、かつ、画像の面内で反時計回りに１５度〜４５度傾いた顔を含む画像データである。左傾斜画像データＳＰｉ１の画像の一例を、ステップＳ１２０の左上側に略図で示す。
【００６９】
ステップＳ１３０では、左傾斜画像データグループの左傾斜画像データＳＰｉ１に基づいて、左傾斜学習画像データグループが準備される。左傾斜学習画像データグループは、左傾斜画像データの画像を時計回りに３０度回転させた画像を含む左傾斜学習画像データＳＰＬ１で構成される。なお、画像の回転は、たとえば、長方形の画像であれば、長方形の対角線の交点を中心に行うことができる。以下の処理においても同様である。左傾斜学習画像データＳＰＬ１は、画像中に実際に顔が存在する画像の画像データである。左傾斜学習画像データＳＰＬ１は、たとえば２０画素×２０画素の画像データである。左傾斜学習画像データＳＰＬ１は、各画素について０〜２５５の階調値で表される明度のみの情報を有する。左傾斜学習画像データＳＰＬ１の画像の一例を、ステップＳ１３０の左上側に略図で示す。
【００７０】
左傾斜画像データＳＰｉ１は、左傾斜学習画像データＳＰＬ１の画像に対して１辺の大きさが１．５倍の画像を有している。このため、左傾斜画像データＳＰｉ１の画像を回転させてそのうちの一部を選択することにより、左傾斜学習画像データＳＰＬ１が表すべき画像を得ることができる。
【００７１】
ステップＳ１４０では、右傾斜画像データグループが準備される。右傾斜画画像データグループは、１００００個の右傾斜画像データＳＰｉ２を含む。右傾斜画像データＳＰｉ２は、画像中に実際に顔が存在する画像の画像データである。
【００７２】
右傾斜画像データＳＰｉ２は、顔がほぼ正面を向いており、かつ、画像の面内で時計回りに約３０度傾いた顔を含む画像データである。より具体的には、右傾斜画像データＳＰｉ２は、左右の目の最も近い点Ｅｌ，Ｅｒを結ぶ線が水平に対して時計回りに約３０度傾いており、点Ｅｌ，Ｅｒの中間点Ｅｃと口の左右方向の中心位置Ｍｃを結ぶ線が鉛直に対して時計回りに約３０度傾いている画像を有する画像データである。右傾斜画像データＳＰｉ２の他の点は、左傾斜画像データＳＰｉ１と同じである。すなわち、右傾斜画像データＳＰｉ２は、顔がほぼ正面を向いており、かつ、画像の面内で時計回りに１５度〜４５度傾いた顔を含む画像データである。右傾斜画像データＳＰｉ２の画像の一例を、ステップＳ１４０の左上側に略図で示す。
【００７３】
ステップＳ１５０では、右傾斜画像データグループの右傾斜画像データＳＰｉ２に基づいて、右傾斜学習画像データグループが準備される。右傾斜学習画像データグループは、右傾斜画像データの画像を反時計回りに３０度回転させた画像を含む右傾斜学習画像データＳＰＬ２で構成される。右傾斜学習画像データＳＰＬ２は、画像中に実際に顔が存在する画像の画像データである。右傾斜学習画像データＳＰＬ２は、たとえば２０画素×２０画素の画像データである。右傾斜学習画像データＳＰＬ２は、各画素について０〜２５５の階調値で表される明度のみの情報を有する。右傾斜学習画像データＳＰＬ２の画像の一例を、ステップＳ１５０の左上側に略図で示す。
【００７４】
ステップＳ１６０では、非顔画像データグループが準備される。非顔画像データグループは、５００００個の非顔画像データＳＰｓを含む。非顔画像データＳＰｓは、たとえば２０画素×２０画素の画像データである。正面画像データＳＰ０は、各画素について０〜２５５の階調値で表される明度のみの情報を有する。非顔画像データＳＰｓは、画像中に顔が存在しない画像の画像データである。非顔画像データＳＰｓは、たとえば、森などの風景が写っている写真の画像である。非顔画像データＳＰｓの画像の一例を、ステップＳ１６０の左上側に略図で示す。
【００７５】
その後、ステップＳ１７０で、それらの画像データＳＰ０，ＳＰＬ１，ＳＰＬ２，ＳＰｓを使用して、顔検出部９６２の学習が行われる。
【００７６】
このような態様とすることで、写っている顔の向きがそろっている多数の画像データ、言い換えれば、写っている顔の向きが互いに類似する多数の画像データＳＰ０，ＳＰＬ１，ＳＰＬ２の画像を使用して、顔検出部９６２の学習を行うことができる。このため、学習後の顔検出部９６２の顔領域の判定精度を高くすることができる。
【００７７】
また、本実施例においては、実際には顔が傾いて写っている画像を回転させて、学習用の画像として使用している（Ｓ１２０〜Ｓ１５０）。このため、後述するように、判定対象の画像を回転させて判定を行う場合の判定精度を高くすることができる。実際には顔が傾いて写っている画像を回転させて得られる画像は、もともとまっすぐな向きで顔が写っている画像と比べると、光の当たり方や影のつきかたが異なる場合がある。しかし、ステップＳ１２０〜Ｓ１５０の様な処理を行うことで、そのような相違も反映させた学習を行うことができる。
【００７８】
図６は、画像データの画像中において顔が存在する領域を決定する処理を示すフローチャートである。各ステップは、プリンタドライバ９６によって実行される。
【００７９】
まず、ステップＳ２１０で、顔領域を特定する対象となる画像データをＣＤ−Ｒ／ＲＷドライブ１４０のＣＤ−Ｒから読み込んで（図１参照）、その画像データＰＩＤ０に基づいて第１の画像データＰＩＤ１を生成する。顔領域を特定する対象となる画像データＰＩＤ０は、たとえば、２５６０画素×１９２０画素の２４ｂｉｔカラーの画像データである。ステップＳ２１０で生成される第１の画像データＰＩＤ１は、画像のサイズが３２０画素×２４０画素である画像データである。そして、第１の画像データＰＩＤ１は、各画素について明度のみの情報を有する画像データである。
【００８０】
第１の画像データＰＩＤ１は、検討対象の画像データから各画素の明度の情報を取りだし、さらに解像度変換を行うことによって生成される。各画素の明度Ｙは、赤、緑、青の階調値をそれぞれＲ，Ｇ，Ｂとしたとき（Ｒ，Ｇ，Ｂ＝０〜２５５）、たとえば、以下の式で得られる。
【００８１】
Ｙ＝０．２９９Ｒ＋０．５８７Ｇ＋０．１１４Ｂ  ・・・  （１）
【００８２】
このように、画像の解像度を低減し、各画素の色情報を明度のみに限定することで、対象となる画像データをそのまま使用して顔領域を特定する態様に比べて、処理の負荷を軽くすることができる。なお、ステップＳ２１０の処理は、プリンタドライバ９６の機能部としての第１の画像データ生成部９６３１が実行する（図１参照）。
【００８３】
図６のステップＳ２２０では、第１の画像データＰＩＤ１の画像の一部である画像領域ＩＤＷについて、順に顔領域であるか否かの判定が行われる。画像領域ＩＤＷが顔領域であるか否かの判定の原理は、図２〜図４を使用して説明したとおりである。そして、画像領域ＩＤＷが顔領域であると判定された場合には、そのときの第１の画像データの画像中における検出窓ＤＷの位置がＲＡＭ１０３に記憶される（図１参照）。なお、ステップＳ２２０の処理は、プリンタドライバ９６の機能部としての判定部９６２３が実行する（図１参照）。
【００８４】
一方、ステップＳ２３０では、第１の画像データＰＩＤ１に基づいて、第１の回転画像データＰＩＤｒ１が生成される。第１の回転画像データＰＩＤｒ１は、画像のサイズが３２０画素×２４０画素である画像データである。そして、第１の回転画像データＰＩＤｒ１は、各画素について明度のみの情報を有する画像データである。
【００８５】
第１の回転画像データＰＩＤｒ１は、第１の画像データＰＩＤ１の画像を時計回りに３０度回転させて得られる画像を有する画像データである。
【００８６】
なお、第１の画像データの３２０画素×２４０画素の長方形の画像が３０度回転されたことによって、第１の回転画像データＰＩＤｒ１の３２０画素×２４０画素の長方形からはみ出すこととなる部分は、第１の回転画像データＰＩＤｒ１の画像には含まれない。そして、第１の回転画像データＰＩＤｒ１の画像の３２０画素×２４０画素の長方形の範囲の一部であって、第１の画像データＰＩＤ１の画像からは得られない画像の部分については、黒を表す画像が付加される。なお、ステップＳ２３０の処理を実行するプリンタドライバの機能部を、第１の回転画像データ生成部９６３２として示す。
【００８７】
ステップＳ２４０では、第１の回転画像データＰＩＤｒ１の画像の一部である画像領域ＩＤＷについて、順に顔領域であるか否かの判定が行われる。画像領域ＩＤＷが顔領域であるか否かの判定の原理は、図２〜図４を使用して説明したとおりである。そして、画像領域ＩＤＷが顔領域であると判定された場合には、そのときの第１の回転画像データＰＩＤｒ１の画像中における検出窓ＤＷの位置がＲＡＭ１０３に記憶される（図１参照）。なお、ステップＳ２４０の処理は、プリンタドライバ９６の機能部としての判定部９６２３が実行する（図１参照）。
【００８８】
このような態様とすることで、画像中で顔が左に傾いて写っている部分についても、顔がまっすぐ写っている画像部分の判定に使用される判定部と同一の判定部９６２３を使用して、高精度に顔領域の判定を行うことができる。
【００８９】
ステップＳ２５０では、第１の画像データＰＩＤ１に基づいて、第２の回転画像データＰＩＤｒ２を生成する。第２の回転画像データＰＩＤｒ２は、第１の画像データＰＩＤ１の画像を反時計回りに３０度回転させて得られる画像を有する画像データである。第２の回転画像データＰＩＤｒ２の他の点は、第１の回転画像データと同じである。なお、ステップＳ２５０の処理を実行するプリンタドライバの機能部を、第２の回転画像データ生成部９６３３として示す。
【００９０】
ステップＳ２６０では、第２の回転画像データＰＩＤｒ２の画像の一部である画像領域ＩＤＷについて、順に顔領域であるか否かの判定が行われる。画像領域ＩＤＷが顔領域であるか否かの判定の原理は、図２〜図４を使用して説明したとおりである。そして、画像領域ＩＤＷが顔領域であると判定された場合には、そのときの第２の回転画像データＰＩＤｒ２の画像中における検出窓ＤＷの位置がＲＡＭ１０３に記憶される（図１参照）。なお、ステップＳ２６０の処理は、プリンタドライバ９６の機能部としての判定部９６２３が実行する（図１参照）。
【００９１】
このような態様とすることで、画像中で顔が右に傾いて写っている部分についても、顔がまっすぐ写っている画像部分の判定に使用される判定部と同一の判定部９６２３を使用して、高精度に顔領域の判定を行うことができる。
【００９２】
ステップＳ２７０では、ステップＳ２２０で記憶された第１の画像データＰＩＤ１中の検出窓ＤＷの位置と、ステップＳ２４０で記憶された第１の回転画像データＰＩＤｒ１中の検出窓ＤＷの位置と、ステップＳ２６０で記憶された第２の回転画像データＰＩＤｒ２中の検出窓ＤＷの位置と、に基づいて、第１の画像データが表す画像ＰＩ１中の顔領域の集合が決定される。
【００９３】
すなわち、ステップＳ２７０では、ステップＳ２２０で記憶された第１の画像データＰＩＤ１中の検出窓ＤＷが表す画像領域の集合と、ステップＳ２４０で記憶された第１の回転画像データＰＩＤｒ１中の検出窓ＤＷが表す画像領域の集合と、ステップＳ２６０で記憶された第２の回転画像データＰＩＤｒ２中の検出窓ＤＷが表す画像領域の集合と、の和集合に基づいて、画像ＰＩ１中の顔領域の集合が決定される。そして、決定された画像ＰＩ１中の顔領域に基づいて、ＣＤ−Ｒ／ＲＷドライブ１４０のＣＤ−Ｒから読み込まれた画像データの画像中の顔領域が決定される。
【００９４】
たとえば、第１の画像データの画像ＰＩ１中における検出窓ＤＷの位置は、検出窓ＤＷの左上角の画素位置によって特定される。ある検出窓ＤＷの位置に対応する原画像ＰＩ０の部分は、上記の検出窓ＤＷの左上角の画素位置と、検出窓ＤＷの大きさと、画像ＰＩ０と画像ＰＩ１の画素数の比と、に基づいて、画像ＰＩ０上において特定することができる。
【００９５】
なお、画像ＰＩ１中の顔領域の集合を決定する際には、たとえば、互いに７５％以上の画素を共有するＮ個（Ｎは２以上の整数）の顔領域については、その中から一つの顔領域が選択され、他の顔領域は廃棄される。このような態様とすることで、互いに大部分が重複する顔領域が画像ＰＩ１中の複数の顔領域として決定されることを防止できる。選択される顔領域は、たとえば、その中心が、それらＮ個の顔領域によって共有される領域の中心と、最も近い顔領域である。なお、長方形の領域の中心は、その長方形の対角線の交点である。
【００９６】
ステップＳ２７０では、そのようにして選択された顔領域によって構成される顔領域の集合を、画像ＰＩ１中の顔領域の集合とする。そして、それらの顔領域に対応する、ＣＤ−Ｒから読み込まれた画像データの画像ＰＩ０中の領域を、ＣＤ−Ｒから読み込まれた画像データの画像ＰＩ０中の顔領域とする。なお、ステップＳ２７０の処理は、プリンタドライバ９６の機能部としての領域特定部９６２４が実行する（図１参照）。
【００９７】
このような処理を行うことで、通常の処理で顔領域であると判定できる画像領域については、図６のステップＳ２２０の処理によって顔領域であると判定される。そして、通常の処理では顔領域の判定に失敗する可能性が高い、傾いた向きで顔が写っている画像領域については、ステップＳ２３０およびＳ２４０、ならびにステップＳ２５０およびＳ２６０の処理によって、顔領域であると判定される。そして、それらの顔領域集合の和集合（ＯＲ集合）に基づいて、検討対象の画像データの画像における顔領域とすることにより（ステップＳ２６０参照）、様々な角度で顔が写っている領域について、高い確率で検討対象の画像中の顔領域として特定することができる。
【００９８】
Ｂ．第２実施例：
第２実施例の画像処理装置は、第１実施例の顔検出部９６２とほぼ同様の機能を奏する機能部をさらに３個備えている。そして、第２実施例の画像処理装置は、それら４個の顔検出部９６２を使用して、顔領域の決定を行う。第２実施例の画像処理装置の他の点は、第１実施例の画像処理装置と同じである。
【００９９】
図７は、第２実施例の画像処理装置を使用して、画像データの画像中において顔が存在する領域を決定する処理を示すフローチャートである。図７のフローチャートにおいて、ＳＴＡＲＴからステップＳ２１０，Ｓ２３０，Ｓ２５０までの処理は、図６のフローチャートと同じである。なお、図７においては、表示が煩雑になるのを避けるために、「ＳＴＡＲＴ」とステップＳ２７０以下の処理の表示を省略している。
【０１００】
第２実施例の画像処理装置において、第１実施例の顔検出部９６２と同じ機能を奏する機能部を、第１の顔検出部９６２ａと呼ぶ。第１の顔検出部９６２ａは、第１の画像データＰＩＤ１（図７のステップＳ２１０参照）、第１の回転画像データＰＩＤｒ１（ステップＳ２３０参照）、第２の回転画像データＰＩＤｒ２（ステップＳ２５０参照）を受け取って、それらの画像データの画像の一部である画像領域ＩＤＷについて、順に顔領域であるか否かの判定を行う（ステップＳ２２０，Ｓ２４０，Ｓ２６０）。
【０１０１】
ステップＳ２２０，Ｓ２４０，Ｓ２６０の処理は、それぞれ第１実施例における図６のステップＳ２２０，Ｓ２４０，Ｓ２６０と同じである。ステップＳ２２０，Ｓ２４０，Ｓ２６０において判定の対象となる第１の画像データＰＩＤ１、第１の回転画像データＰＩＤｒ１、第２の回転画像データＰＩＤｒ２の画像を、ステップＳ２２０，Ｓ２４０，Ｓ２６０の左側に略図で示す。
【０１０２】
第２実施例の画像処理装置において、第２の顔検出部９６２ｂは、第１の画像データＰＩＤ１、第１の回転画像データＰＩＤｒ１、第２の回転画像データＰＩＤｒ２を受け取って、それらの画像を時計まわりの方向に９０度回転させて得られる画像について、画像領域ＩＤＷが顔領域であるか否かの判定を順に行う。
【０１０３】
第２の顔検出部９６２ｂが行う処理は、対象とする画像の向きが異なる点以外は、第１実施例における図６のステップＳ２２０，Ｓ２４０，Ｓ２６０と同じである。それら図６のステップＳ２２０，Ｓ２４０，Ｓ２６０に対応する処理を、図７において、ステップＳ３２０，Ｓ３４０，Ｓ３６０として示す。ステップＳ３２０，Ｓ３４０，Ｓ３６０において判定の対象となる第１の画像データＰＩＤ１、第１の回転画像データＰＩＤｒ１、第２の回転画像データＰＩＤｒ２をそれぞれ９０度回転させた画像を、ステップＳ３２０，Ｓ３４０，Ｓ３６０の左側に略図で示す。
【０１０４】
第２実施例の画像処理装置において、第３の顔検出部９６２ｃと第４の顔検出部９６２ｄは、第１の画像データＰＩＤ１、第１の回転画像データＰＩＤｒ１、第２の回転画像データＰＩＤｒ２を受け取って、それらの画像をそれぞれ時計まわりの方向に１８０度および２７０度（−９０度）回転させて得られる画像について、画像領域ＩＤＷが顔領域であるか否かの判定を順に行う。
【０１０５】
第３の顔検出部９６２ｃ、第４の顔検出部９６２ｄが行う処理は、対象とする画像の向きが異なる点以外は、第１実施例における図６のステップＳ２２０，Ｓ２４０，Ｓ２６０と同じである。それら図６のステップＳ２２０，Ｓ２４０，Ｓ２６０に対応する処理を、図７において、ステップＳ４２０，Ｓ４４０，Ｓ４６０ならびにステップＳ５２０，Ｓ５４０，Ｓ５６０として示す。ステップＳ４２０〜Ｓ４６０とステップＳ５２０〜Ｓ５６０の左側に各ステップの判定の対象となる画像を略図で示す。
【０１０６】
なお、第２の顔検出部９６２ｂ、第３の顔検出部９６２ｃ、および第４の顔検出部９６２ｄは、第１の顔検出部９６２ａに基づいて構成することができる。すなわち、第１の顔検出部９６２ａに対して、あらかじめ受け取った画像データの画像を所定の角度だけ回転させる機能を付加したものが、第２の顔検出部９６２ｂ、第３の顔検出部９６２ｃ、第４の顔検出部９６２ｄと考えることができる。このため、第２の顔検出部９６２ｂ、第３の顔検出部９６２ｃ、第４の顔検出部９６２ｄについては、それぞれ独自に学習（図５参照）を行わせる必要がなく、第１の顔検出部９６２ａを学習させて得られた設定を流用することができる。
【０１０７】
よって、第２実施例の態様は、それぞれ向きの異なる顔を含む画像を使用して３６０度の範囲をカバーできる多数の検出器を用意する場合に比べて、顔検出部を準備する際の不可が少ない。
【０１０８】
第２実施例の態様においては、第１の顔検出部９６２ａは、第１の画像データＰＩＤ１の画像を、０度、３０度、−３０度（３３０度）だけ回転させた画像について、顔領域の検出を行う（図７のステップＳ２２０〜Ｓ２６０）。なお、ここでは、時計回りを＋の回転方向とする。
【０１０９】
第２実施例の態様においては、第２の顔検出部９６２ｂは、第１の画像データＰＩＤ１の画像を、９０度、１２０度、６０度だけ回転させた画像について、顔領域の検出を行う（図７のステップＳ３２０〜Ｓ３６０）。同様に、第３の顔検出部９６２ｃは、第１の画像データＰＩＤ１の画像を、１８０度、２１０度、１５０度だけ回転させた画像について、顔領域の検出を行う（ステップＳ４２０〜Ｓ４６０）。第４の顔検出部９６２ｄは、第１の画像データＰＩＤ１の画像を、２７０度、３００度、２４０度だけ回転させた画像について、顔領域の検出を行う（ステップＳ５２０〜Ｓ５６０）。
【０１１０】
ステップＳ２７０では、そのようにして検出された様々な向きの顔を含む顔領域の集合に基づいて、ＣＤ−Ｒから読み込まれた画像データの画像ＰＩ０中の顔領域を決定する。なお、ステップＳ２２０〜Ｓ５６０で様々な向きの画像中において特定された領域は、画像ＰＩ１または画像ＰＩ０に対応する向きに変換されて、画像ＰＩ０中の顔領域として特定される。
【０１１１】
第２実施例においては、第１の画像データＰＩＤ１の画像を３０度きざみで回転させて得られる１２個の互いに向きが異なる画像について顔領域の検出が行われる。このため、第２実施例によれば、第１の顔検出部９６２ａ〜第４の顔検出部９６２ｄの４個の顔検出部を使用して、任意の向きの顔を検出することができる。
【０１１２】
また、顔検出部の学習において使用される画像データグループはプラスマイナス１５度の範囲の傾きを有している（図５参照）。このため、第１〜第４の顔検出部９６２ａ〜９６２ｄは、それぞれ３０度の範囲で傾きが異なる顔を検出することができる。よって、第１の画像データＰＩＤ１の画像を３０度きざみで回転させて得られる１２個の画像について顔領域の検出を行うことで、画像中で任意の向きで写っている顔を高精度に検出することができる。
【０１１３】
さらに、縦横に並ぶ画素で表された画像を９０度の整数倍だけ回転させる変換を行う場合には、他の角度で回転させる変換を行う場合と異なり、情報が欠落しない。このため、９０度の整数倍だけ回転させて得られる画像について判定を行う顔検出部を有する第３実施例においては（図７参照）、それぞれの顔検出部の検出精度が高い。
【０１１４】
Ｃ．第３実施例：
第１および第２実施例では、顔領域を特定する対象となる画像データＰＩＤ０から生成された３２０画素×２４０画素の白黒画像ＰＩ１を回転させて、顔領域の判定を行っている（図６および図７のステップＳ２３０，Ｓ２５０参照）。しかし、第３実施例においては、３２０画素×２４０画素の画像ＰＩ１全体を回転させるのではなく、検出窓ＤＷを回転させて、顔領域の判定を行う。第３実施例の他の点は、第１実施例と同じである。
【０１１５】
図８は、第３実施例の画像処理装置を使用して、画像データの画像中において顔が存在する領域を決定する処理を示すフローチャートである。図８のフローチャートにおいては、ステップＳ２１０と、ステップＳ２２１と、ステップＳ２７０とが行われる。
【０１１６】
図８のステップＳ２１０の処理は、第１実施例と同じである。
【０１１７】
図８のステップＳ２２１では、第１の画像データＰＩＤ１の画像の一部である画像領域ＩＤＷについて、順に顔領域であるか否かの判定が行われる。画像領域ＩＤＷが顔領域であるか否かの判定の原理は、図２〜図４を使用して説明したとおりである。なお、ステップＳ２２１の処理は、プリンタドライバ９６の顔検出部９６２が実行する（図１参照）。以下で、ステップＳ２２１における処理の詳細を説明する。
【０１１８】
ステップＳ２２２では、第１の画像データの画像ＰＩ１中における検出窓ＤＷの位置が決定される（図２参照）。
【０１１９】
ステップＳ２２３では、ステップＳ２２２で決定された検出窓ＤＷの位置に基づいて、画像領域ＩＤＷの画像を表す第１の部分画像データが生成される（図２参照）。
【０１２０】
ステップＳ２２４では、第１の部分画像データに基づいて、第１の部分画像データの画像が顔領域であるか否かの判定が行われる。すなわち、第１の部分画像データの画像中に人間の顔が存在するか否かの判定が行われる（図３および図４参照）。第１の部分画像データの画像が顔領域であると判定された場合には、そのときの第１の画像データの画像ＰＩ１中における検出窓ＤＷが規定する範囲がＲＡＭ１０３に記憶される（図１参照）。
【０１２１】
一方、ステップＳ２２５では、第２の部分画像データが生成される。第２の部分画像データは、たとえば２０画素×２０画素の画像データである。第２の部分画像データは、各画素について０〜２５５の階調値で表される明度のみの情報を有する。第２の部分画像データは、第１の画像データＰＩＤ１の画像ＰＩ１のうち、ステップＳ２２２で決定された位置にある検出窓ＤＷを時計回りに３０度回転させたときの検出窓ＤＷの範囲の画像を表すデータである。
【０１２２】
ステップＳ２２６では、第２の部分画像データの画像に対して、図３および図４で説明したような処理が行われ、顔領域であるか否かの判定が行われる。なお、第２の部分画像データは、各矩形フィルタと一致する向きの正方形の画像を有する画像データとして生成される。第２の部分画像データの画像が顔領域であると判定された場合には、そのときの第１の画像データの画像ＰＩ１中における検出窓ＤＷが規定する範囲がＲＡＭ１０３に記憶される（図１参照）。
【０１２３】
ステップＳ２２７では、第３の部分画像データが生成される。第３の部分画像データは、第１の画像データＰＩＤ１の画像ＰＩ１のうち、ステップＳ２２２で決定された位置にある検出窓ＤＷを反時計回りに３０度回転させたときの検出窓ＤＷの範囲の画像を表すデータである。第３の部分画像データの他の点は、第２の部分画像データと同じである。
【０１２４】
ステップＳ２２８では、第３の部分画像データの画像が顔領域であるか否かの判定が行われる（図３および図４参照）。第３の部分画像データの画像が顔領域であると判定された場合には、そのときの第１の画像データの画像ＰＩ１中における検出窓ＤＷが規定する範囲がＲＡＭ１０３に記憶される（図１参照）。
【０１２５】
ステップＳ２２９では、第１の画像データの画像中のすべての領域について、ステップＳ２２２〜Ｓ２２８の処理が行われたか否かの判定が行われる。まだ、第１の画像データの画像中のすべての領域について、ステップＳ２２２〜Ｓ２２８の処理が行われていない場合には、処理はステップＳ２２２に戻る。そして、第１の画像データの画像中における検出窓ＤＷの位置が変更される（図２の矢印Ａｈ参照）。
【０１２６】
一方、第１の画像データの画像中のすべての領域について、ステップＳ２２２〜Ｓ２２８の処理が行われた場合には（ステップＳ２２９においてＹｅｓ）、処理はステップＳ２７０に進む。
【０１２７】
なお、検出窓ＤＷの移動は、水平方向については、検出窓ＤＷの幅Ｗｈよりも大きい距離ｄｈだけ行われ（図２の矢印Ａｈ参照）、上下方向の移動については、検出窓ＤＷの高さＷｖよりも大きい距離だけ行われる。このため、ステップＳ２２９で行われる判定は、そのような移動によって決定される検出窓ＤＷの代表的な位置のすべてについて、ステップＳ２２２〜Ｓ２２８の処理が行われたか否か、についての判定である。
【０１２８】
また、ステップＳ２２１の処理は、たとえば、２０画素×２０画素の大きさから２００画素×２００画素の大きさまでの、様々な検出窓を使用して行われる。ステップＳ２２９を経てステップＳ２７０に処理が進むのは、それらの異なる大きさの検出窓を使用した判定がすべて完了した場合である。
【０１２９】
ステップＳ２７０では、ステップＳ２２４，Ｓ２２６，Ｓ２２８で記憶された検出窓ＤＷの範囲に基づいて、第１の画像データが表す画像ＰＩ１中の顔領域の集合が決定される。すなわち、ステップＳ２２４で記憶された検出窓ＤＷの範囲の集合と、ステップＳ２２６で記憶された検出窓ＤＷの範囲の集合と、ステップＳ２２８で記憶された検出窓ＤＷの範囲の集合と、の和集合に基づいて、画像ＰＩ１中の顔領域の集合が決定される。そして、決定された画像ＰＩ１中の顔領域に基づいて、ＣＤ−Ｒ／ＲＷドライブ１４０のＣＤ−Ｒから読み込まれた画像データの画像中の顔領域が決定される。
【０１３０】
第３実施例のような態様としても、画像中で様々な向きで顔が写っている部分を、顔領域として決定することができる。
【０１３１】
また、第３実施例のような態様においては、第１の画像データの画像全体を傾ける場合のように、画像中の大きな部分が欠落してしまうことがない。よって、画像の端（特に長方形の範囲の角の近傍）に写っている顔についても検出することができる。
【０１３２】
Ｄ．変形例：
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【０１３３】
Ｄ１．変形例１：
上記第１実施例においては、第１および第２の回転画像データは、第１の画像データに基づいて生成される（図６のステップＳ２３０およびＳ２６０参照）。しかし、第１および第２の回転画像データは、第１の画像データ以外の、解像度変換される（図６のステップＳ２１０参照）前の画像に基づいて生成することもできる。
【０１３４】
たとえば、ＣＤ−Ｒから読み込まれた画像を、まず明度のみの画像に変換する。そして、その明度のみの画像を、たとえばθだけ回転させる。その回転させた画像を長方形の画像に整形して、その後、縮小する。このような態様とすれば、よりシャープな画像を有する第１および第２の回転画像データを生成することができる。ただし、第１の画像データに基づいて第１および第２の回転画像データを生成する態様の方が、処理の負荷、および処理に必要とする資源の量は少ない。
【０１３５】
Ｄ２．変形例２：
上記第１実施例では、第１の回転画像データＰＩＤｒ１および第２の回転画像データＰＩＤｒ２を生成する際には、３２０画素×２４０画素の長方形からはみ出すこととなる部分は、第１の回転画像データＰＩＤｒ１および第２の回転画像データＰＩＤｒ２の画像には含まれない。しかし、回転画像データは他の方法で生成することもできる。
【０１３６】
図９は、第１の画像データＰＩＤ１の画像の範囲と第１の回転画像データＰＩＤｒ１の画像の範囲を示す図である。たとえば、第１の画像データＰＩＤ１の画像を回転させ、それを縮小して画像データＰＩＤ１ｓを生成し、そのすべての画像が第１の回転画像データＰＩＤｒ１の画像の長方形の範囲に含まれるように処理することもできる。第２の回転画像データＰＩＤｒ２を生成するときも同様である。
【０１３７】
なお、回転画像データの画像の長方形の範囲の一部であって、第１の画像データＰＩＤ１の画像からは得られない画像の部分については、黒を表す画像が付加される。このような態様とすれば、回転画像データを生成する際に、第１の画像データＰＩＤ１の画像の角の近傍部分が欠落しない。このため、第１の画像データＰＩＤ１の画像の角の近傍部分に存在する対象物を見落とす可能性が低い。
【０１３８】
Ｄ３．変形例３：
上記実施例では、学習用のサンプル画像データの画像は、プラスマイナス１５度の範囲、すなわち３０度の角度範囲に含まれる向きを有する対象物が写っている画像である。しかし、学習用のサンプル画像データの画像は、他の角度範囲に含まれる向きを有する対象物が描かれている画像とすることもできる。
【０１３９】
たとえば、学習用のサンプル画像データの画像は、プラスマイナス１０度の範囲、すなわち２０度の角度範囲に含まれる向きを有する対象物が写っている画像とすることもできる。また、学習用のサンプル画像データの画像は、プラスマイナス２０度の範囲、すなわち４０度の角度範囲に含まれる向きを有する対象物が写っている画像とすることもできる。学習用のサンプル画像データの画像が含む対象物の角度の範囲が狭いほど、より学習の効率を高めることができる。一方で、学習用のサンプル画像データの画像が含む対象物の角度の範囲が広いほど、検出対象の画像中においてより広い範囲で傾いている対象物を検出することができる。
【０１４０】
Ｄ４．変形例４：
上記実施例では、学習用のサンプル画像データの画像は、３０度回転される（図５のステップＳ１３０およびＳ１５０参照）。そして、検出対象の画像データの画像も３０度回転される（図６および図７のステップＳ２３０およびＳ２５０、ならびに図８のステップＳ２２５およびＳ２２７参照）。しかし、画像の回転角度は、２０度や４０度などの他の角度とすることもできる。
【０１４１】
ただし、上記の回転角度を０、＋３０度および−３０度とし、さらに０、９０度、１８０度および２７０度だけ回転させた画像について判定を行うことができる顔検出部を用意することで（図７参照）、３６０度の全方向についての傾きを有する対象物を検出することができる。そのような態様においては、各顔検出部は、対象物の傾きに関して３０度の角度幅をカバーできることが好ましい。よって、学習用のサンプル画像データの画像は、プラスマイナス１５度の範囲、すなわち３０度の角度範囲に含まれる向きを有する対象物が写っている画像とすることが最も好ましい。
【０１４２】
Ｄ５．変形例５：
上記実施例では、画像データは３２０画素×２４０画素の画像データに変換されて、顔領域が特定される（図６のステップＳ２１０参照）。しかし、顔領域を特定する処理の対象とする画像データは、３２０画素×２４０画素の画像データに限らず、任意の大きさおよび画素数の画像データとすることができる。ただし、顔領域を特定する処理の対象とする画像データは、一定の大きさの画像データとすることが好ましい。そのような態様とすれば、その大きさの画像データのために１種類の顔検出モジュールを用意すれば、顔領域の特定の処理を行うことができる。
【０１４３】
また、画像データは、縮小され、画素数を少なくされてから、顔領域を特定する処理の対象とされることが好ましい。そのような態様とすれば、処理の負荷を軽減することができる。
【０１４４】
Ｄ６．変形例６：
上記実施例および変形例では、さまざまな手法で、対象物を検出する際の画像の回転、および学習の際の画像の回転が行われる。それら、対象物を検出する際の画像の回転、および学習の際の画像の回転の処理は、同じ回転の向きおよび角度だけ行われることが好ましい。そのような態様とすれば、対象物を検出する際の精度が高くなるように、効率的な学習を行うことができる。
【０１４５】
Ｄ７．変形例７：
上記実施例では、画像中において人間の顔が存在する領域が特定される。しかし、画像中において特定される対象物は、人間の顔に限らず、他の物とすることもできる。本明細書で説明した処理は、たとえば、犬や猫などの動物の顔や、電車や蒸気機関車などの車両、自動車、建造物、花や紅葉などの植物など、様々な対象を特定する処理に適用することができる。
【０１４６】
Ｄ８．変形例８：
上記実施例では、画像ＰＩ１中の顔領域の集合を決定する際に、互いに７５％以上の画素を共有するＮ個（Ｎは２以上の整数）の顔領域については、その中から一つの顔領域が選択され、他の顔領域は廃棄される。しかし、その中から一つの顔領域が選択される複数の顔領域（以下、「候補顔領域」という）は、他の方法で定めることもできる。たとえば、複数の候補顔領域は、互いに７０％以上の画素を共有する複数の顔領域とすることができる。そして、複数の候補顔領域は、互いに８０％以上の画素を共有する複数の顔領域とすることがより好ましい。また、複数の候補顔領域は、互いに９０％以上の画素を共有する複数の顔領域とすることがさらに好ましい。
【０１４７】
さらに、共有する画素数以外の基準で、複数の候補顔領域を決定することもできる。ただし、互いに所定量以上の領域を共有する複数の候補顔領域については、所定の基準で、その中から一つの候補顔領域を選択して、それを画像の顔領域として決定することが好ましい。
【０１４８】
Ｄ９．変形例９：
第２実施例における各顔検出部（図７参照）は、同一のＣＰＵ上で実行されるプログラムによって実現されることができる。また、第２実施例における各顔検出部は、異なるＣＰＵ上で実行されるプログラムによって実現されることができる。さらに、同じ画像データ（第１の画像データ、第１の回転画像データまたは第２の回転画像データのいずれか）を処理する顔検出部は、同じＣＰＵ上で実行されるプログラムによって実現されることができる。
【０１４９】
第２実施例においては、顔領域の特定が各顔検出部においてそれぞれ独立に行われる。このため、平行処理によって高速な顔検出を行うことができる。なお、マルチスレッドを実現できるＣＰＵにおいて、各スレッドと第２実施例における各顔検出部の関係も同様とすることができる。
【０１５０】
Ｄ１０．変形例１０：
上記実施例では、図２〜図４に示す方法で顔領域の特定を行う。しかし、顔領域の特定は、ブースティング（たとえばAdaBoost）や、サポートベクターマシン、ニューラルネットワークなど様々な方法を使用して行うことができる。ただし、あらかじめ定められたパターンを画像に適用することによって対象物の特定を行う手法であることが好ましい。
【０１５１】
Ｄ１１．変形例１１：
上記実施例および変形例では、画像の画素の明度に基づいて顔領域の特定（図２〜図４）が行われる。しかし、それらの処理は、明度以外の階調値に基づいて行うこともできる。
【０１５２】
たとえば、画像の画素の明度に代えて、画像の画素のグリーンの階調値に基づいて、上記処理を行うことができる。また、画像の画素の明度に代えて、画像の画素のレッドやブルーの階調値に基づいて、上記処理を行うことができる。さらには、画像の画素のレッド、グリーン、ブルーの階調値に基づいて得られる値に基づいて、上記処理を行うことができる。すなわち、上記の各処理は、画像の画素の色に関する階調値に基づいて行うことができる。
【０１５３】
また、処理に使用する画素の色に関する階調値は、画像データがあらかじめ各画素について保持している明度に関する階調値であってもよい。たとえば、ＪＰＥＧ画像データやＹＣｒＣｂ表色系の画像データが保持している輝度や明度の階調値を使用することができる。また、処理に使用する画素の色に関する階調値は、画像データが各画素について保持しているＲＧＢなどの色成分の階調値に基づいて得られる階調値であってもよい。
【０１５４】
明度を表す階調値は、値が大きくなるほど明るい状態を表し、値が小さくなるほど暗い状態を表す階調値とすることができる。また、明度を表す階調値は、値が小さくなるほど明るい状態を表し、値が大きくなるほど暗い状態を表す階調値とすることもできる。
【０１５５】
Ｄ１２．変形例１２：
画像処理装置は、原画像データの画像中において所定の対象物が存在する部分を特定した後に、その対象物が存在する部分を表示する態様とすることもできる。そのような態様において、原画像データの画像を表示し、さらに、その画像上において、対象物が存在する部分を表示することがより好ましい。
【０１５６】
Ｄ１３．変形例１３：
画像処理装置は、原画像データの画像中において所定の対象物が存在する部分を特定した後に、原画像データの画像中において所定の対象物が存在する部分の大きさに基づいて、原画像データに対して画像処理を行う態様とすることもできる。なお、原画像データの画像中に、対象物が存在する部分が複数ある場合には、画像処理の際に考慮される「対象物が存在する部分の大きさ」は、対象物が存在する複数の部分のうち最も大きい部分の大きさとすることができる。また、画像処理の際に考慮される「対象物が存在する部分の大きさ」は、対象物が存在する複数の部分の合計の大きさとすることもできる。
【０１５７】
Ｄ１４．変形例１４：
上記実施例では、プリンタドライバ９６が、顔領域を特定する処理を行い、その結果に基づいて画像処理を行っている。しかし、対象物を特定する処理は、他の構成が行うこともできる。対象物を特定する処理は、たとえば、パーソナルコンピュータ１００のＯＳ上で実行されるアプリケーションプログラム９５が実行することもでき、プリンタ２２やプロジェクタ３２等の出力装置が備えるＣＰＵ１０４，１０６が実行することもできる。さらに、顔領域を特定する処理は、プリンタ２２やプロジェクタ３２等の出力装置が備えるハードウェア回路で実行することもできる。さらには、液晶ディスプレイなどの出力装置を備えたデジタルスチルカメラが備えるＣＰＵやハードウェア回路で実行することもできる。
【０１５８】
すなわち、上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。
【０１５９】
このような機能を実現するコンピュータプログラムは、フロッピディスクやＣＤ−ＲＯＭ、ＤＶＤ等の、コンピュータ読み取り可能な記録媒体に記録された形態で提供される。ホストコンピュータは、その記録媒体からコンピュータプログラムを読み取って内部記憶装置または外部記憶装置に転送する。あるいは、通信経路を介してプログラム供給装置からホストコンピュータにコンピュータプログラムを供給するようにしてもよい。コンピュータプログラムの機能を実現する時には、内部記憶装置に格納されたコンピュータプログラムがホストコンピュータのマイクロプロセッサによって実行される。また、記録媒体に記録されたコンピュータプログラムをホストコンピュータが直接実行するようにしてもよい。
【０１６０】
この明細書において、ホストコンピュータとは、ハードウェア装置とオペレーションシステムとを含む概念であり、オペレーションシステムの制御の下で動作するハードウェア装置を意味している。コンピュータプログラムは、このようなホストコンピュータに、上述の各部の機能を実現させる。なお、上述の機能の一部は、アプリケーションプログラムでなく、オペレーションシステムによって実現されていても良い。
【０１６１】
なお、この発明において、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスクやＣＤ−ＲＯＭのような携帯型の記録媒体に限らず、各種のＲＡＭやＲＯＭ等のコンピュータ内の内部記憶装置や、ハードディスク等のコンピュータに固定されている外部記憶装置も含んでいる。
【図面の簡単な説明】
【０１６２】
【図１】本発明の実施例である画像処理装置の概略構成を示す説明図。
【図２】画像データの画像中で人間の顔が存在する可能性が高いと思われる領域を特定する方法を示す図。
【図３】検出窓ＤＷによって取り出されたデータの画像領域ＩＤＷが顔領域であるか否かの判定の処理を示す図。
【図４】あるステージにおける判定の処理を示す図。
【図５】顔検出部９６２の学習の際の処理を示すフローチャート。
【図６】画像データの画像中において顔が存在する領域を決定する処理を示すフローチャート。
【図７】第２実施例の画像処理装置を使用して、画像データの画像中において顔が存在する領域を決定する処理を示すフローチャート。
【図８】第３実施例の画像処理装置を使用して、画像データの画像中において顔が存在する領域を決定する処理を示すフローチャート。
【図９】第１の画像データＰＩＤ１の画像の範囲と第１の回転画像データＰＩＤｒ１の画像の範囲を示す図。
【符号の説明】
【０１６３】
２２…プリンタ
３２…プロジェクタ
９１…ビデオドライバ
９５…アプリケーションプログラム
９６…プリンタドライバ
１００…パーソナルコンピュータ
１０２…ＣＰＵ
１０３…ＲＡＭ
１０４，１０６…ＣＰＵ
１１０…ディスプレイ
１２０…キーボード
１３０…マウス
１４０…ＣＤ−Ｒ／ＲＷドライブ
９６２…顔検出部
９６２３…判定部
９６２４…領域特定部
９６２ａ…第１の顔検出部
９６２ｂ…第２の顔検出部
９６２ｃ…第３の顔検出部
９６２ｄ…第４の顔検出部
９６３１…第１の画像データ生成部
９６３２…第１の回転画像データ生成部
９６３３…第２の回転画像データ生成部
Ａ１１ａ，ｂ…矩形フィルタＦ１１を使用してデータが取り出される領域
Ａ１１ａｌ…Ａ１１ａの左半分の領域
Ａ１１ａｒ…Ａ１１ｂの右半分の領域
Ａ１２ａ，ｂ…矩形フィルタＦ１２を使用してデータが取り出される領域
Ａｆ１…顔が存在する領域
Ａｆ２…顔が存在する領域
Ａｈ…検出窓ＤＷの移動を示す矢印
Ａｓ…検出窓ＤＷの上下左右の移動を示す矢印
ＤＷ…検出窓
Ｅｃ…点Ｅｌと点Ｅｒの中間点
Ｅｌ…左目の最も顔の中央に近い点
Ｅｒ…右目の最も顔の中央に近い点
Ｆ１１，Ｆ１２…矩形フィルタ
ＩＤＷ…画像領域
Ｍｃ…口の左右方向の中心位置
ＰＩ０…オリジナルの画像
ＰＩＤ０…オリジナルの画像データ
ＰＩ１…第１の画像データの画像
ＰＩＤ１…第１の画像データ
ＰＩＤ１ｓ…第１の画像データの画像を縮小した画像を表す画像データ
ＰＩＤｒ１…第１の回転画像データ
ＰＩＤｒ２…第２の回転画像データ
ＳＰ０…正面画像データ
ＳＰＬ１…左傾斜学習画像データ
ＳＰＬ２…右傾斜学習画像データ
ＳＰｉ１…左傾斜画像データ
ＳＰｉ２…右傾斜画像データ
ＳＰｓ…非顔画像データ
Ｓｔ１〜Ｓｔ２４…第１〜第２４のステージ
Ｙ…明度
Ｙ１１ａ…領域Ａ１１ａの各画素の明度
Ｙ１１ｂ…領域Ａ１１ｂの各画素の明度
Ｙ１２ａ…領域Ａ１２ａの各画素の明度
Ｙ１２ｂ…領域Ａ１２ｂの各画素の明度
ｄｈ…検出窓の移動距離
α１１ａ，ｂ…矩形フィルタに関連づけられている定数
α１２ａ，ｂ…矩形フィルタに関連づけられている定数
【図１】
2009032022.tif 000003
【図２】
2009032022.tif 000004
【図３】
2009032022.tif 000005
【図４】
2009032022.tif 000006
【図５】
2009032022.tif 000007
【図６】
2009032022.tif 000008
【図７】
2009032022.tif 000009
【図８】
2009032022.tif 000010
【図９】
2009032022.tif 000011