(57)【特許請求の範囲】
【請求項１】
少なくとも第１座標軸と第２座標軸についての位置情報を有する画像データが示す画像を印刷する印刷装置であって、
前記第１座標軸方向に関して第１移動間隔ずつ周期的に検出窓を順次移動させ、前記第２座標軸方向に関して前記第１移動間隔と異なる第２移動間隔ずつ周期的に検出窓を順次移動させ、かつ、前記第２座標軸方向において互いに隣接する前記検出窓の移動位置同士を、前記第１座標軸方向において所定量だけずれさせる検出窓設定手段と、
前記検出窓が各位置に移動するごとに当該検出窓内の画像についてオブジェクトの存在の有無を判定する判定手段と、
前記判定に応じた画像処理を実行した前記画像データを印刷する印刷手段とを具備することを特徴とする印刷装置。
【請求項２】
前記所定量は、前記第１移動間隔の半分の大きさであることを特徴とする請求項１に記載の印刷装置。
【請求項３】
前記第１座標軸方向と前記第２座標軸方向は、前記画像データが示す画像の所定位置を中心とした円の径方向と周方向であることを特徴とする請求項１または請求項２のいずれか一項に記載の印刷装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷装置に関し、特に画像に含まれるオブジェクトを検出する印刷装置に関する。
【背景技術】
【０００２】
画像データに含まれる顔画像を検出し、その検出結果を利用して、印刷処理や補正処理や画像入力機器の動作制御が行われている。検出窓を画像データのあらゆる位置に移動させながら、検出窓において顔画像が存在するか否かを判定していくことにより、画像データにおける不特定の位置に存在する顔画像を検出することができる（特許文献１、参照。）かかる文献（図６、参照。）においては、画像データの隅から順に検出窓を移動させている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−４８１０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
検出窓において顔画像が存在するか否かを判定するための処理負担は小さいものでないため、検出窓を画像データのあらゆる位置に移動させることにより、全体の検出処理の処理負担は大きくなるという問題があった。画像データのすべての位置（画素）について検出窓を設定すれば、検出漏れを防止することができるが、処理負担が著しく増大してしまう。逆に、画像データの一部の位置（画素）のみについて検出窓を設定すれば、処理負担を軽減することができるが、検出漏れが発生してしまう。
【０００５】
本発明は、前記課題にかんがみてなされたもので、効率よく、かつ、漏れのないオブジェクトを検出する印刷装置の提供を目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明は、少なくとも第１座標軸と第２座標軸についての位置情報を有する画像データが示す画像からオブジェクトを検出するにあたり、以下の手順を行う。まず、前記第１座標軸方向に関して第１移動間隔ずつ周期的に検出窓を順次移動させ、前記第２座標軸方向に関して前記第１移動間隔と異なる第２移動間隔ずつ周期的に検出窓を順次移動させる。また、前記検出窓が各位置に移動するごとに当該検出窓内の画像について前記オブジェクトの存在の有無を判定する。すなわち、前記第１座標軸方向と前記第２座標軸方向のそれぞれに関して前記検出窓を移動させながら、当該検出窓についてオブジェクトが存在するか否かを判定していく。
【０００７】
ここで、前記第１座標軸方向と前記第２座標軸方向のそれぞれに関して前記検出窓を移動させるにあたり、前記第１座標軸方向に関する移動間隔と、前記第２座標軸方向に関する移動間隔を異なる大きさとする。このようにすることにより、一方の座標軸方向については漏れのないオブジェクト検出を行うことができ、他方の座標軸方向については処理負担の少ないオブジェクト検出を行うことができる。すなわち、各方向に応じて最適な前記移動間隔を設定することにより、漏れがなく、かつ、効率のよいオブジェクト検出を行うことができる。なお、前記オブジェクトは、特定の画像的特徴を有するものであればよく、例えば人物・動物の顔や顔器官等を検出することができる。
【０００８】
さらに、前記第２座標軸方向において互いに隣接する前記検出窓の移動位置同士は、前記第１座標軸方向において所定量だけずれるようにしてもよい。これにより、前記第２座標軸方向において互いに隣接する複数の前記検出窓の移動位置が、前記第１座標軸方向における同一位置に並ぶことが防止でき、漏れのないオブジェクト検出を行わせることができる。前記第１座標軸方向においてずれる量は、例えば前記第１移動間隔の半分の大きさとしてもよい。
【０００９】
また、前記第１座標軸と前記第２座標軸として種々の座標軸系を適用することができる。例えば、前記第１座標軸方向と前記第２座標軸方向を、それぞれ前記画像データが示す画像の縦方向と横方向とするようにしてもよい。このようにすることにより、縦方向と横方向に異なる移動間隔を設定することができる。さらに、前記第１座標軸方向と前記第２座標軸方向を、前記画像データが示す画像の所定位置を中心とした円の径方向と周方向とするようにしてもよい。
【００１０】
さらに、本発明の技術的思想は、具体的なオブジェクト検出方法にて具現化されるのみならず、当該方法をオブジェクト検出装置において具現化することもできる。すなわち、上述したオブジェクト検出方法が行う各工程に対応する手段を有するオブジェクト検出装置としても本発明を特定することができる。むろん、上述したオブジェクト検出装置がプログラムを読み込んで上述した各手段を実現する場合には、当該各手段に対応する機能を実行させるプログラムや当該プログラムを記録した各種記録媒体においても本発明の技術的思想が具現化できることは言うまでもない。なお、本発明のオブジェクト検出装置は、単一の装置のみならず、複数の装置によって分散して存在可能であることはいうまでもない。また、プリンタ等の印刷装置やデジタルスチルカメラ等の画像入力装置において本発明のオブジェクト検出方法を実現するようにしてもよい。
【図面の簡単な説明】
【００１１】
【図１】画像処理装置のハードウェア構成を示すブロック図である。
【図２】画像処理装置のソフトウェア構成を示すブロック図である。
【図３】画像処理の流れを示すフローチャートである。
【図４】顔検出処理の流れを示すフローチャートである。
【図５】作業画像データの一例を示す図である。
【図６】サイズカウンタとサイズとの関係を示すグラフである。
【図７】検出窓と作業画像データの関係を示す図である。
【図８】回転角カウンタと検出窓の回転角との関係を示すグラフである。
【図９】検出窓の位置が移動する様子を示す図である。
【図１０】顔判定処理の流れを示すフローチャートである。
【図１１】窓画像データから特徴量を算出する様子を示す図である。
【図１２】ニューラルネットワークの構造の一例を示す図である。
【図１３】ニューラルネットワークを学習する様子を模式的に示す図である。
【図１４】肌色調整処理の流れを示すフローチャートである。
【図１５】変形例にかかる顔検出処理の流れを示すフローチャートである。
【図１６】変形例にかかる径方向カウンタと周方向カウンタの関係を示す図である。
【図１７】変形例において検出窓の位置が移動する様子を示す図である。
【発明を実施するための形態】
【００１２】
以下、下記の順序に従って本発明の実施形態を説明する。
１．画像処理装置の構成：
２．画像処理：
２−１．顔検出処理：
２−２．顔判定処理：
２−３．肌色調整および印刷処理：
３．変形例：
３−１．変形例１：
【００１３】
１．画像処理装置の構成
図１は、本発明の一実施形態にかかる画像処理装置を具体的に実現するコンピュータの構成を示している。同図において、コンピュータ１０はＣＰＵ１１とＲＡＭ１２とＲＯＭ１３とハードディスクドライブ（ＨＤＤ）１４と汎用インターフェイス（ＧＩＦ）１５とビデオインターフェイス（ＶＩＦ）１６と入力インターフェイス（ＩＩＦ）１７とバス１８とから構成されている。バス１８は、コンピュータ１０を構成する各要素１１〜１７の間でのデータ通信を実現するものであり、図示しないチップセット等によって通信が制御されている。ＨＤＤ１４には、オペレーティングシステム（ＯＳ）を含む各種プログラムを実行するためのプログラムデータ１４ａが記憶されており、当該プログラムデータ１４ａをＲＡＭ１２に展開しながらＣＰＵ１１が当該プログラムデータ１４ａに準じた演算を実行する。
【００１４】
また、ＨＤＤ１４には、デジタルスチルカメラやスキャナによって画像入力された画像データ１４ｂが記憶されている。ＧＩＦ１５は、例えばＵＳＢ規格に準じたインターフェイスを提供するものであり、外部のプリンタ２０をコンピュータ１０に接続させている。ＶＩＦ１６はコンピュータ１０を外部のディスプレイ４０に接続し、ディスプレイ４０に画像を表示するためのインターフェイスを提供する。ＩＩＦ１７はコンピュータ１０を外部のキーボード５０ａとマウス５０ｂに接続し、キーボード５０ａとマウス５０ｂからの入力信号をコンピュータ１０が取得するためのインターフェイスを提供する。
【００１５】
図２は、コンピュータ１０において実行されるプログラムのソフトウェア構成を示している。同図において、オペレーティングシステム（ＯＳ）ＰＧ１と画像処理アプリケーションＰＧ２とプリンタドライバＰＧ３が実行されている。ＯＳ ＰＧ１は各プログラム間のインターフェイスを提供し、プリンタドライバＰＧ３はプリンタ２０を制御するための処理を実行する。画像処理アプリケーションＰＧ２は、作業画像取得部ＰＧ２ａと検出窓設定部ＰＧ２ｂと窓画像取得部ＰＧ２ｃと特徴量算出部ＰＧ２ｄと顔判定部ＰＧ２ｅと画質調整部ＰＧ２ｆとから構成されている。画像処理アプリケーションＰＧ２を構成する各モジュールＰＧ２ａ〜ＰＧ２ｆが実行する処理の詳細については後述する画像処理の流れとともに説明する。
【００１６】
２．画像処理
図３は、画像処理の全体の流れを示している。ステップＳ１００では、作業画像取得部ＰＧ２ａが所定のＵＩ画面をディスプレイ４０に表示させるとともに、キーボード５０ａとマウス５０ｂから操作を受け付ける。それにより、ＨＤＤ１４等に記憶された複数の画像データ１４ｂのなかからユーザーが印刷したい画像データ１４ｂを取得する。作業画像取得部ＰＧ２ａが画像データ１４ｂの解像度を変換することにより、３２０画素×２４０画素（ＱＶＧＡ）の作業画像データＷＤを生成する。そして、ステップＳ２００においては、検出窓設定部ＰＧ２ｂが顔検出処理を実行させ、作業画像データＷＤにおいて、順次、検出窓ＳＷを設定する。検出窓ＳＷが設定されるごとに、ステップＳ４００において特徴量算出部ＰＧ２ｄと顔判定部ＰＧ２ｅが検出窓ＳＷについての顔判定処理を実行させ、その判定結果を出力する。その判定結果に応じて、画質調整部ＰＧ２ｅが肌色調整処理をステップＳ５００にて実行し、画質調整後の画像データ１４ｂをプリンタドライバＰＧ３に出力する。するとプリンタドライバＰＧ３が印刷制御処理を実行し、プリンタ２０にて画質調整後の画像データ１４ｂを印刷させる。
【００１７】
２−１．顔検出処理
図４は、顔検出処理の流れを示し、図５は作業画像データＷＤを示している。図５において、作業画像データＷＤに正方形状領域の検出窓（検出領域）ＳＷが設定されており、顔検出処理によって検出窓設定部ＰＧ２ｂが検出窓ＳＷを作業画像データＷＤにおいて隈無く移動させる。なお、作業画像データＷＤの長手方向をｘ軸（第１座標軸）とし、短手方向をｙ軸（第２座標軸）と表すものとし、ｘ軸とｙ軸の原点は作業画像データＷＤの左上隅位置とする。検出窓ＳＷを移動させる際に、検出窓ＳＷのサイズと、検出窓ＳＷの画像面内における回転角度を順次シフトさせる。以上のように検出窓ＳＷをシフトさせるために、以下のパラメータを順次シフトさせる必要がある。
・検出窓ＳＷのサイズのパラメータ：Ｓ
・検出窓ＳＷの中心位置のパラメータ：Ｐ
・検出窓ＳＷの回転角度のパラメータ：Ｔ
ステップＳ２１０においては、検出窓設定部ＰＧ２ｂが各カウンタｎs，ｎx，ｎy，ｎtをリセットする。各カウンタｎs，ｎx，ｎy，ｎtは、上述したパラメータＳ，Ｐ，Ｔを順にシフトさせるための整数値であり、リセットによって０とされる。ステップＳ２２０においては、サイズカウンタｎsに１を加算する。
【００１８】
図６は、サイズカウンタｎsと検出窓ＳＷのサイズＳとの関係を示している。同図において、サイズカウンタｎsの増加とともに、検出窓ＳＷのサイズＳ（縦と横の長さ）が徐々に減少することが示されている。本実施例では、サイズカウンタｎsとサイズＳとが線形的な関係を有し、サイズカウンタｎsが１〜１５の間で１増加するごとに、検出窓ＳＷのサイズＳ（縦および横の長さ）が１２画素ずつ小さくなるようにしている。また、サイズカウンタｎsが１のときの最大のサイズＳが検出窓ＳＷの短手の長さよりわずかに短い２００画素となり、サイズカウンタｎsが１５のときの最小の検出窓ＳＷのサイズＳが２０画素となる。なお、ここで示したサイズカウンタｎsと検出窓ＳＷのサイズＳの関係は一例であり、これらが非線形の関係を有していたり、傾きや切片などを変更してもよい。次のステップＳ２３０，Ｓ２４０においては、検出窓ＳＷの中心位置のパラメータＰを設定するために、ｙ方向カウンタｎyとｘ方向カウンタｎxにそれぞれ１を加算する。
【００１９】
ステップＳ２４５では、ｙ方向カウンタｎyが奇数であるか偶数であるかを判定する。ここで、ｙ方向カウンタｎyが奇数である場合には、検出窓ＳＷの中心位置Ｐのｘ，ｙ座標を下記の（１）式によって算出する（ステップＳ２５０ａ）。
【数１】
0005136705.tif 000002
上記の（１）式において、ｄx，ｄyは検出窓ＳＷの中心位置Ｐの各方向への単位移動距離（画素数）を示す一定の移動間隔を表しており、移動間隔ｄx，ｄyと方向カウンタｎx，ｎyをそれぞれ乗算することにより、検出窓ＳＷの中心位置Ｐのｘ，ｙ座標を算出する。移動間隔ｄx，ｄyは検出窓ＳＷの縦および横の長さを示すサイズＳに基づいて下記の（２）式によって算出される。
【数２】
0005136705.tif 000003
上記の（２）式が示すように、移動間隔ｄx，ｄyは互いに異なる値となっており、ｐx＞ｐyとなっている。上記の（２）式によって移動間隔ｄy＜１となる場合は、ｄy＝１とする。なお、ｘ方向カウンタｎxが取り得る範囲は１〜３２０／ｄx（整数部分）とし、ｙ方向カウンタｎyは１〜２４０／ｄy（整数部分）とする。ｙ方向カウンタｎyが偶数である場合には、検出窓ＳＷの中心位置Ｐのｘ，ｙ座標を下記の（３）式によって算出する（ステップＳ２５０ｂ）。
【００２０】
【数３】
0005136705.tif 000004
上記の（３）式によれば、ｙ方向カウンタｎyが偶数である場合は、ｙ方向カウンタｎyが奇数である場合よりも、検出窓ＳＷの中心位置Ｐのｘ座標がｘ方向の移動間隔ｐxの半分だけ進んだ位置となる。ステップＳ２５０ａ，２５０ｂにおいては、それぞれ以上のようにして算出した中心位置Ｐを中心として、サイズＳの検出窓ＳＷを生成する。ステップＳ２６０においては、検出窓ＳＷの一部が作業画像データＷＤの外側にはみ出ていないか否かを判定する。
【００２１】
図７は、ステップＳ２６０における判定の様子を模式的に示している。同図に示すように、各カウンタｎs，ｎx，ｎyの変動によって検出窓ＳＷの位置と大きさがシフトするため、あるカウンタｎs，ｎx，ｎyの組み合わせにおいては検出窓ＳＷの一部が作業画像データＷＤの外側にはみ出ることとなる。このような場合に正常な顔検出を行うことができないとして、当該カウンタｎs，ｎx，ｎyで特定される検出窓ＳＷについての顔検出処理をスキップさせる。一方、検出窓ＳＷの全部が作業画像データＷＤの内側に入る場合には、ステップＳ２７０において検出窓設定部ＰＧ２ｂが検出窓ＳＷの回転角度Ｔを設定するための回転角カウンタｎtに１を加算する。
【００２２】
図８は、回転角カウンタｎtと検出窓ＳＷの回転角Ｔとの関係を示している。同図に示すように回転角カウンタｎtが１のとき作業画像データＷＤの上方向を検出窓ＳＷの上とし、回転角カウンタｎtが２のとき作業画像データＷＤの右方向を検出窓ＳＷの上とし、回転角カウンタｎtが３のとき作業画像データＷＤの下方向を検出窓ＳＷの上とし、回転角カウンタｎtが４のとき作業画像データＷＤの左方向を検出窓ＳＷの上とする。すなわち、本実施形態では、回転角カウンタｎtが１増加するごとに検出窓ＳＷを時計回りに９０度ずつ回転させることとしている。なお、検出窓ＳＷの回転角度は９０度刻みであるものに限られず、例えば３０度刻み等としてもよい。
【００２３】
以上のようにして、ステップＳ２６０にてスキップされた場合を除いて、すべてのカウンタｎs，ｎx，ｎy，ｎtが設定できると検出窓ＳＷの大きさと位置と回転角が検出窓設定部ＰＧ２ｂによって一意に特定されたこととなる。ステップＳ２８０においては、窓画像取得部ＰＧ２ｃが現在決定されている検出窓ＳＷの内側の画像データを抽出し、窓画像データＸＤとして取得する。取得した窓画像データＸＤは、特徴量算出部ＰＧ２ｄに出力され、窓画像データＸＤについての顔判定処理をステップＳ４００にて実行する。顔判定処理の詳細については後述する。
【００２４】
窓画像データＸＤを特徴量算出部ＰＧ２ｄに出力すると、検出窓設定部ＰＧ２ｂがステップＳ２９０において、回転角カウンタｎt＝４であるか否かを判定する。すなわち、現在の検出窓ＳＷのサイズＳおよび中心位置Ｐにおいて４方向の回転角の設定が完了したか否かを判定する。回転角カウンタｎt＜４である場合には、ステップＳ２７０に戻り、回転角カウンタｎtに１を加算する。これにより、次回は９０度時計回りに回転した検出窓ＳＷを設定することができる。一方、回転角カウンタｎt＝４である場合にはステップＳ２９５において回転角カウンタｎtを０にリセットし、ステップＳ３００においてｘ方向カウンタｎx＝３２０／ｄx（整数部分）であるか否かを判定する。すなわち、現在の検出窓ＳＷのサイズＳおよびｙ方向の位置におけるすべてのｘ方向の位置について検出窓ＳＷの設定が完了したか否かを判定する。ｘ方向カウンタｎx＜３２０／ｄx（整数部分）である場合には、ステップＳ２４０に戻り、ｘ方向カウンタｎxに１を加算する。これにより、次回はｘ方向の移動間隔ｐx（６画素）だけ右側に進んだ中心位置Ｐに検出窓ＳＷを設定することができる。
【００２５】
一方、ｘ方向カウンタｎx＝３２０／ｄx（整数部分）である場合にはステップＳ３０５においてｘ方向カウンタｎxを０にリセットし、ステップＳ３１０においてｙ方向カウンタｎy＝２４０／ｄy（整数部分）であるか否かを判定する。すなわち、現在の検出窓ＳＷのサイズＳにおいて、すべての中心位置Ｐについて検出窓ＳＷの設定が完了したか否かを判定する。ｙ方向カウンタｎy＜２４０／ｄy（整数部分）である場合には、ステップＳ２３０に戻り、ｙ方向カウンタｎyに１を加算する。これにより、次回はｙ方向に１画素（移動間隔ｐy）だけ進んだ中心位置Ｐに検出窓ＳＷを設定することができる。一方、ｙ方向カウンタｎy＝２４０／ｄy（整数部分）である場合にはステップＳ３１５においてｙ方向カウンタｎyを０にリセットし、ステップＳ３２０においてサイズカウンタｎs＝１５であるか否かを判定する。すなわち、すべてのサイズＳについて検出窓ＳＷの設定が完了したか否かを判定する。サイズカウンタｎs＜１５である場合には、ステップＳ２２０に戻り、サイズカウンタｎsに１を加算する。これにより、次回は一回り小さいサイズＳの検出窓ＳＷを設定することができる。一方、サイズカウンタｎs＝１５である場合には、すべてのパラメータ（サイズＳおよび位置Ｐおよび回転角Ｔ）の組み合わせについて検出窓ＳＷの設定が完了したとして、処理を終了させる。
【００２６】
以上説明した顔検出処理においては、ステップＳ２６０にてスキップされた場合を除いて、検出窓ＳＷのサイズＳと位置Ｐと回転角Ｔのいずれかが更新されるごとに、窓画像データＸＤが特徴量算出部ＰＧ２ｄに出力され、当該窓画像データＸＤについての顔判定処理がステップＳ４００にて実行される。この顔判定処理においては、窓画像データＸＤに顔画像が存在するか否かが判定されるため、検出窓ＳＷを設定したサイズＳと位置Ｐと回転角Ｔにおいて顔画像の有無を判定していくことができる。
【００２７】
図９は、本実施形態において検出窓ＳＷの位置が移動する様子を示している。同図に示すように、作業画像データＷＤの左上隅から開始し、ｘ方向カウンタｎxの増加とともに検出窓ＳＷの中心位置Ｐを右側に移動させて行くことができる。ｘ方向カウンタｎx＝３２０／ｄx（整数部分）となるとき、検出窓ＳＷの中心位置Ｐが作業画像データＷＤの右端に到達することとなる。右側に到達すると、ｘ方向カウンタｎxが０にリセットされるとともにｙ方向カウンタｎｙに１が加算されるため、検出窓ＳＷの中心位置Ｐが左端の一段下の位置に移動することとなる。以上の移動を繰り返して実行する際に、ｙ方向カウンタｎｙが奇数であるか偶数であるかによって、検出窓ＳＷの中心位置Ｐがｘ方向にｄx／２だけずれることとなる。このようにすることにより、後述する顔判定処理の回数を増加させることなく、検出窓ＳＷの中心位置Ｐが移動させられる位置の疎密の差を緩和することができ、効率よく、かつ、漏れのない顔検出が可能となる。また、上記の（２）式によって、検出窓ＳＷの中心位置Ｐのｙ方向に関する密度は、ｘ方向に関する密度の５倍となる。このように、ｘ方向とｙ方向とで検出窓ＳＷの中心位置Ｐの密度を不均一とすることにより、ｘ方向とｙ方向に関して判定特性（ロバスト性）が不均一な顔判定処理（ステップＳ４００）に適した顔検出を実現することができる。
【００２８】
２−２．顔判定処理
図１０は、顔判定処理の流れを示している。ステップＳ４１０にて窓画像データＸＤを取得すると、次のステップＳ４２０において特徴量算出部ＰＧ２ｄが窓画像データＸＤから複数の特徴量を算出する。特徴量は、窓画像データＸＤに対して各種のフィルタを適用し、当該フィルタ内の輝度平均やエッジ量やコントラスト等の状態を示す特徴量（平均値や最大値や最小値や標準偏差等）を算出することにより得られる。なお、窓画像データＸＤは、検出窓ＳＷのサイズＳによって異なる大きさとなるが、ステップＳ４１０において予め一定の大きさに解像度変換される。
【００２９】
図１１は、窓画像データＸＤから特徴量を算出する様子を示している。同図において、窓画像データＸＤに対して多数のフィルタＦＴが用意されており、各フィルタＦＴを順次窓画像データＸＤに適用し、各フィルタＦＴ内の画像について例えば１２個の特徴量ＣＡ１〜ＣＡ１２を順次算出する。特徴量ＣＡ１〜ＣＡ１２が算出できると、ステップＳ４３０において、顔判定部ＰＧ２ｅが特徴量ＣＡ１〜ＣＡ１２を予め用意されたニューラルネットワークＮＮに入力し、その出力として顔画像が存在する／しないの判定結果を算出する。なお、特徴量ＣＡは、窓画像データＸＤが示す画像的特徴を指標化したものであればよく、必ずしもフィルタＦＴを使用する必要はない。
【００３０】
図１２は、ニューラルネットワークＮＮの構造の一例を示している。ニューラルネットワークＮＮは、前段層のユニットＵの値の線形結合（添え字ｉは前段層のユニットＵの識別番号。）によって後段層のユニットＵの値が決定される基本構造を有している。さらに、線形結合によって得られた値をそのまま次の層のユニットＵの値としてもよいが、線形結合によって得られた値を例えばハイパボリックタンジェント関数のような非線形関数によって変換して次の層のユニットＵの値を決定することにより、非線形特性を与えてもよい。本実施例のニューラルネットワークＮＮは３層構造であり、ニューラルネットワークＮＮは、１層の中間層と、入力層と出力層とから構成されている。各特徴量ＣＡ１〜ＣＡ１２がニューラルネットワークＮＮの入力層に入力可能となっており、出力層では出力値Ｋ（０〜１に正規化された値）を出力することが可能となっている。そして、出力値Ｋが０．５以上であれば窓画像データＸＤに顔画像が存在すると判定し、出力値Ｋが０．５未満であれば窓画像データＸＤに顔画像が存在しないと判定する（ステップＳ４４０）。このようなニューラルネットワークＮＮをＨＤＤ１４に予め用意しておけば、顔画像が窓画像データＸＤに存在するか否かを特徴量ＣＡ１〜ＣＡ１２に基づいて判定することができる。
【００３１】
図１３は、ニューラルネットワークＮＮを学習する様子を模式的に示している。本実施形態では、誤差逆伝搬（error back propagation）法によって学習を行うことにより、各ユニットＵの数や、各ユニットＵ間における線形結合の際の重みｗの大きさやバイアスｂの値が最適化される。誤差逆伝搬法による学習においては、まず各ユニットＵ間における線形結合の際の重みｗの大きさやバイアスｂの値を適当な値に初期設定する。
【００３２】
そして、顔画像が存在しているか否かが既知の学習用画像データについてステップＳ４２０と同様の手順で特徴量ＣＡ１〜ＣＡ１２を算出し、当該特徴量ＣＡ１〜ＣＡ１２を初期設定されたニューラルネットワークＮＮに入力し、その出力値Ｋを取得する。学習用画像データはできるだけ多く用意するべきであり、様々な状態の顔画像が検出できるように、種々の人種や性別や年齢等をカバーするように用意する必要がある。さらに、デジタルスチルカメラ等によって撮影された画像データ１４ｂに含まれる顔画像は種々の方向に向いている可能性がある。そのため、種々の方向に向いた顔画像を含む学習用画像データを用意する。また、上下に顔を向けるより左右に顔を向けて撮影される可能性が高いため、左右に顔を向けて撮影された学習用画像データの方が多数用意される。
【００３３】
本実施例において、顔画像が存在している学習用画像データについて出力値Ｋとして１が出力されるのが望ましく、顔画像が存在していない学習用画像データについて出力値Ｋとして０が出力されるのが望ましい。しかしながら、各ユニットＵ間における線形結合の際の重みｗの大きさやバイアスｂの値を適当な値に初期設定したに過ぎないため、実際の出力値Ｋと理想的な値との間には誤差が生じることとなる。このような誤差を極小化させる各ユニットＵについての重みｗやバイアスｂを、勾配法等の数値最適化手法を用いて算出する。この誤差は、後段の層から前段の層に伝搬され、後段のユニットＵについて重みｗやバイアスｂから順に最適化されていく。以上のようにして学習したニューラルネットワークＮＮによれば、窓画像データＸＤに顔画像が存在している場合の特徴量ＣＡ１〜ＣＡ１２に対して１に近い出力値Ｋを得ることができ、窓画像データＸＤに顔画像が存在していない場合の特徴量ＣＡ１〜ＣＡ１２に対して０に近い出力値Ｋを得ることができる。従って、適当な閾値０．５によって閾値判定を行うことにより、窓画像データＸＤに顔画像が存在しているか否かを判定することができる（ステップＳ４４０）。
【００３４】
ステップＳ４４０において窓画像データＸＤについて顔画像が存在すると判定された場合、そのときの窓画像データＸＤが得られた検出窓ＳＷのサイズＳおよび位置Ｐおよび回転角ＴをＲＡＭ１２に記憶させ（ステップＳ４５０）、リターンする。一方、ステップＳ４３０において窓画像データＸＤについて顔画像が存在しないと判定された場合、そのままリターンする。上述した顔検出処理によって窓画像データＸＤが特徴量算出部ＰＧ２ｄに順次出力されるため、その度にステップＳ４１０〜Ｓ４４０の処理を実行させる。これにより、図９に示すように順次移動される検出窓ＳＷのそれぞれについて顔画像の存在の有無を判定していくことができる。
【００３５】
２−３．肌色調整および印刷処理
図１４は、画質調整部ＰＧ２ｅが実行する肌色調整処理の流れを示している。上述した顔検出処理のステップＳ３２０において、すべてのサイズＳについて検出窓ＳＷの設定が完了したか否かを判定されると、顔検出処理が終了するとともに、顔検出処理と同期して実行される顔判定処理も終了する。ステップＳ５１０においては、顔検出処理と顔判定処理の終了を検出し、調整対象の画像データ１４ｂを取得する。ここで取得される画像データ１４は、顔検出処理と顔判定処理の対象となった画像データ１４ｂである。ステップＳ５２０においては、顔画像が存在すると判定された検出窓ＳＷのサイズＳおよび位置Ｐおよび回転角ＴをＲＡＭ１２から読み出す。ステップＳ５３０においては、顔画像が存在すると判定された検出窓ＳＷに対応する領域を画像データ１４ｂにおいて特定する。検出窓ＳＷのサイズＳおよび位置ＰがＲＡＭ１２から取得されているため、これを画像データ１４ｂの画像サイズに換算することにより、検出窓ＳＷに対応する領域を特定することができる。
【００３６】
ステップＳ５４０においては、ステップＳ５３０にて特定した領域に含まれる肌色画素の色をサンプリングし、当該色に基づいて画像データ１４ｂに対する色調調整のためのパラメータを設定する。ここでは、まずステップＳ５４０にて特定した領域に含まれる肌色画素を、各画素の色彩値（例えばＲＧＢ値やＨＳＶ値）に基づいて特定し、当該色彩値を肌色として好ましいものに補正するための調整パラメータを算出する。調整パラメータは、例えばカラーバランスやホワイトバランスや明るさを調整するためのパラメータが該当する。予め肌色として好ましい色彩値がＨＤＤ１４に記憶されており、各肌色画素の色彩値が好ましい色彩値に近づくような調整パラメータが算出される。検出窓ＳＷによって顔画像が存在する領域が予め特定されているため、顔画像の肌色画素に基づいて調整パラメータを得ることができる。なお、顔画像が存在すると判定された検出窓ＳＷが複数検出された場合には、平均的な調整パラメータの算出を実行する。調整パラメータが算出できると、ステップＳ５４５において、当該調整パラメータに基づく各画素の色彩値の調整が実行される。以上のようにして、肌色調整が完了すると、ステップＳ５５０にて調整後の画像データ１４ｂをプリンタドライバＰＧ３に出力する。すると、プリンタドライバＰＧ３は、画像データ１４ｂに対して解像度変換処理と色変換処理とハーフトーン処理とラスタライズ処理を順次実行させ、プリンタ２０に画質調整後の画像データ１４ｂに対応する画像の印刷を実行させる。
【００３７】
３−１．変形例１
図１５は、本変形例にかかる顔検出処理の流れを示している。本変形例のステップＳ２３０，Ｓ２４０においては、前実施形態で使用したｘ方向カウンタｎxとｙ方向カウンタｎyの代わりに、径方向カウンタｎrと周方向カウンタｎaを検出窓ＳＷの中心位置のパラメータＰを設定するために使用する。
【００３８】
図１６は、検出窓ＳＷの中心位置のパラメータＰと、径方向カウンタｎrと周方向カウンタｎaの関係を示している。径方向カウンタｎrは作業画像データＷＤの中心座標を原点とした径方向に関する検出窓ＳＷの中心位置Ｐに対応付けられている。径方向カウンタｎrは１〜６までの整数値をとる。中心位置Ｐの径方向に関する位置をｒで表すと、位置ｒは径方向カウンタｎrが１のとき０となり、径方向カウンタｎrが６のとき最大値となる２次曲線（ｎr＝１を頂点とし、下に凸の２次曲線。）で表されている。なお、位置ｒの最大値は、原点から検出窓ＳＷの四隅までの距離よりもわずかに小さい大きさとされている。一方、周方向カウンタｎaは１〜１２までの整数値をとる。原点を水平方向に通過する直線（右側）と、原点と検出窓ＳＷの中心位置Ｐを結ぶ直線がなす角をθで表すと、角θは周方向カウンタｎaが１のとき０度となり、周方向カウンタｎaが１増加するごとに反時計回りに３０度回転（θ＝３０＊ｎa）する。なお、周方向カウンタｎaは１〜１２までの整数値をとるため、一周分（３６０度）だけ角θをシフトさせることができる。なお、径方向カウンタｎr＝１のときに限り、周方向カウンタｎaの上限値を１とする。ステップＳ２５０では、以上の定義に基づいて、検出窓設定部ＰＧ２ｂが径方向カウンタｎrと周方向カウンタｎaから検出窓ＳＷの中心の径方向に関する位置ｒと角度θを特定するとともに、径方向カウンタｎrが奇数である場合（ステップＳ２４５）には、検出窓ＳＷの中心位置Ｐのｘ，ｙ座標を下記の（４）式によって算出する。
【数４】
0005136705.tif 000005
一方、径方向カウンタｎrが偶数である場合（ステップＳ２４５）には、検出窓ＳＷの中心位置Ｐのｘ，ｙ座標を下記の（５）式によって算出する。
【数５】
0005136705.tif 000006
このようにすることにより、径方向カウンタｎrが偶数である場合には、径方向カウンタｎrが奇数である場合よりも周方向に１５度進んだ位置に検出窓ＳＷの中心位置Ｐを設定することができる。
【００３９】
図１７は、本変形例において検出窓ＳＷの位置が移動する様子を示している。同図に示すように、作業画像データＷＤの中心から開始し、径方向カウンタｎrの増加とともに検出窓ＳＷの中心位置Ｐを外側に移動させて行くことができる。デジタルスチルカメラ等で撮影された多くの画像データ１４ｂ（作業画像データＷＤ）においては、主たる被写体人物を全体画像の中央に構図されるため、処理の初期において顔画像を検出させることができる。例えば、後述する顔判定処理において所定人数までの顔画像が検出された時点で顔検出処理を終了させるようにした場合、より早期に処理を終了させることができ、処理負担を軽減させることができる。さらに、径方向カウンタｎrに対応する径方向の位置ｒは、ｎr＝１を頂点とし、下に凸の２次曲線で表されるため、作業画像データＷＤの中心付近においては検出窓ＳＷの中心位置Ｐを高密度とし、作業画像データＷＤの中心から離れるほど中心位置Ｐを低密度とすることができる。このようにすることにより、顔画像が含まれる可能性の高い位置では細かく検出窓ＳＷを移動させることができるとともに、顔画像が含まれる可能性の低い位置での顔判定処理の実行回数を軽減させることができる。さらに、検出窓ＳＷの中心位置Ｐが外側に一段階移動するごとに、検出窓ＳＷの中心位置Ｐの周方向に関する位置を１５度ずつずらすことができるため、漏れのない顔検出を実現することができる。
【００４０】
なお、以上においては、本発明の画像処理方法が、コンピュータ上で実行されるものを例示したが、例えばプリンタやデジタルスチルカメラやスキャナ等の画像機器にて実行されてもよい。プリンタにて本発明の画像処理方法を行えば、印刷の際に理想的な顔画像に近づく画像処理を実行することができる。むろん、プリンタは家庭用のものに限られず、業務用の写真プリントシステムにおいても適用することができる。さらに、プリンタのように印刷用紙上に画像処理結果を出力するものに限らず、フォトビューワのようにディスプレイ上に画像処理結果を出力する装置においても本発明を実現することができる。また、デジタルスチルカメラにて本発明の画像処理方法を行えば、理想的な肌色の顔画像となった撮影結果を得ることができる。さらに、人物認証を行うＡＴＭ（Automated Teller 
Machine）等においても本発明を適用することができる。ニューラルネットワークＮＮを使用して顔判定を行うものに限られず、上述した特徴量の特徴量空間における種々の判別手法を用いることも可能である。例えば、サポートベクタマシンを利用してもよいし、判別境界面を異ならせた複数段の判定器をカスケード接続するようにしてもよい。
【符号の説明】
【００４１】
１０…コンピュータ、１１…ＣＰＵ、１２…ＲＡＭ、１３…ＲＯＭ、１４…ＨＤＤ、１４ａ…プログラムデータ、１４ｂ…画像データ、１５…ＧＩＦ、１６…ＶＩＦ、１７…ＩＩＦ、１８…バス、２０…プリンタ、４０…ディスプレイ、５０ａ…キーボード、５０ｂ…マウス、ＰＧ１…ＯＳ、ＰＧ２…画像処理アプリケーション、ＰＧ２ａ…作業画像取得部、ＰＧ２ｂ…検出窓設定部、ＰＧ２ｃ…窓画像取得部、ＰＧ２ｄ…特徴量算出部、ＰＧ２ｅ…顔判定部、ＰＧ２ｆ…画質調整部、ＰＧ３…プリンタドライバ。
【図１】
0005136705.tif 000007
【図２】
0005136705.tif 000008
【図３】
0005136705.tif 000009
【図４】
0005136705.tif 000010
【図５】
0005136705.tif 000011
【図６】
0005136705.tif 000012
【図７】
0005136705.tif 000013
【図８】
0005136705.tif 000014
【図９】
0005136705.tif 000015
【図１０】
0005136705.tif 000016
【図１１】
0005136705.tif 000017
【図１２】
0005136705.tif 000018
【図１３】
0005136705.tif 000019
【図１４】
0005136705.tif 000020
【図１５】
0005136705.tif 000021
【図１６】
0005136705.tif 000022
【図１７】
0005136705.tif 000023