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