以下、本発明の一実施の形態について、図面を参照して説明する。
図1は、本発明の実施の形態に係る画像処理装置を用いた印刷装置11の構成例を示す斜視図である。この図1に示すように、印刷装置11は、スキャナ装置、印刷装置、および、コピー装置が一体となったいわゆる複合型の印刷装置である。ここで、印刷装置11は、装置全体を覆うケース12と、印刷媒体としての印刷用紙を供給する給紙装置13と、紙媒体等に印刷された画像を読み取るスキャナ部14と、印刷用紙に対して印刷を行う印刷部(不図示)とを備える。なお、本発明の画像処理装置の動作は、印刷装置11の動作として説明する。また、本発明の画像処理方法の動作は、印刷装置11の動作として説明する。さらに、本発明の画像処理用プログラムの動作は、印刷装置11の動作として説明する。
ケース12は、略四角形状の箱体であり、上面にスキャナ部14が設けられており、また、前面中央部には、LCD(Liquid Crystal Display)15と、各種操作ボタン16とを備える。LCD15には、印刷装置11のメニュー機能、動作内容、動作状況、エラー内容などが表示され、操作ボタン16は、印刷装置11のメニュー選択等を行う時に押されるようになっている。
ケース12は、前面下部に、排出口17を備え、印刷された印刷用紙が排出されるようになっている。また、ケース12の前面右側中央部には、カードスロット18が設けられており、例えばディジタルカメラなどによって撮影された画像データを記録するメモリカードMが、取り外し自在に収納されるようになっている。なお、この例では、カードスロット18には蓋部18aが設けられており、メモリカードMを挿入する場合には、当該蓋部18aを開閉する。メモリカードMには、例えば、非可逆圧縮方式としてのJPEG形式または可逆圧縮方式としてのTIFF形式によって圧縮された画像データが格納されている。
給紙装置13は、ケース12の背面側に設けられており、印刷用紙をストックするとともに、必要に応じて印刷装置11の内部に一枚ずつ供給する。
図2は、図1に示す印刷装置11の制御系の構成例を示すブロック図である。この図に示すように、印刷装置11の制御系は、CPU(Central Processing Unit)50、ROM(Read Only Memory)51、RAM(Random Access Memory)52、EEPROM(Electrically Erasable and Programmable ROM)53、GP(Graphic Processor)54、I/F(Interface)55、バス56、LCD15、操作ボタン16、カードMが挿入されるカードスロット18、カードI/F回路60、プリンタエンジンコントローラ62、紙送りモータ63、ローラ64、キャリッジモータ65、駆動ベルト66、キャリッジ67、および、記録ヘッド68を有している。
ここで、CPU50は、ROM51およびEEPROM53に格納されているプログラムに応じて各種演算処理を実行するとともに、紙送りモータ63およびキャリッジモータ65をはじめとする装置の各部を制御する。ROM51は、CPU50が実行する各種プログラムや各種データを格納している半導体メモリである。RAM52は、CPU50が実行対象とするプログラムやデータを一時的に格納する半導体メモリである。
EEPROM53は、CPU50における演算処理結果の所定のデータ等が格納され、印刷装置の電源が切断された後も該データを保持する半導体メモリである。GP54は、CPU50から供給された描画命令に基づいて描画処理を実行し、得られた画像データをLCD15に供給して表示させる。
I/F55は、操作ボタン16、カードI/F回路60、および、プリンタエンジンコントローラ62の間で情報を授受する際に、データの表現形式を適宜変換する装置である。バス56は、CPU50、ROM51、RAM52、EEPROM53、GP54、および、I/F55、を相互に接続し、これらの間で情報の授受を可能とするための信号線群である。
操作ボタン16は、前述したように、メニュー選択等を行う場合に操作される。メモリカードMは、前述したように、ディジタルカメラによって撮像された画像データが格納されている不揮発メモリである。カードスロット18は、前述したように印刷装置11のケース12の前面右側中央に設けられており、当該部分にメモリカードMが挿入される。カードI/F回路60は、メモリカードMとの間で情報を読み書きするためのインタフェースである。
プリンタエンジンコントローラ62は、紙送りモータ63、キャリッジモータ65、および、記録ヘッド68を制御するための制御装置である。紙送りモータ63は、ローラ64を回転させることにより印刷用紙を副走査方向に移動させる。ローラ64は、円柱状の部材によって構成され、印刷用紙を副走査方向に移動させる。
キャリッジモータ65は、キャリッジ67に一端が固定されている駆動ベルト66に駆動力を与えることにより、キャリッジ67を主走査方向に往復動させる。記録ヘッド68は、印刷用紙に対向する面に複数のノズルが形成されており、当該複数のノズルからインクを吐出させることにより情報を印刷用紙に記録する。インクの種類としては、例えば、シアン、マゼンタ、イエロー、ブラックの4色がある。なお、これらに加えて、ライトシアン、ライトマゼンタ、レッド、および、ブルー等を用いるようにしてもよい。
図3は、図1に示す印刷装置11により、メモリカードMに格納されている所定の画像データを印刷する際に、画像データに対して補正処理を施すための機能ブロックを示している。この図に示す機能ブロック70は、図2に示すROM51またはEEPROM53に格納されているプログラムとしてのソフトウエアと、CPU50等のハードウエアとが協働することにより実現される。
機能ブロック70は、入力部70a、設定部70b、画像取得部70c、プレ処理部70d、処理選択部70e、第2の顔認識処理部70f、シーン判別処理部70g、第1の顔認識処理部70h、補正量算出部70i、および、補正処理部70jを有している。
入力手段としての入力部70aは、操作ボタン16の操作に応じて生成された情報をI/F55を介して入力する。設定部70bは、入力部70aを介して入力された情報に基づいて、処理選択部70eおよび補正量算出部70i等の設定を行う。
画像取得部70cは、メモリカードMに格納されている画像データの中から印刷対象となる画像データを取得し、プレ処理部70dに供給する。プレ処理部70dは、画像取得部70cによって取得された画像データに対して伸張処理および色変換処理を施すとともに、サンプリング処理によって一定の割合で画像データをサンプリングする。処理選択部70eは、設定部70bの設定に応じて、画像データに対して施す補正処理の内容を選択する。
第2の認識手段としての第2の顔認識処理部70fは、後述するように画像補正モードとして「標準」が選択された場合に顔認識処理を実行し、画像データに人物が含まれているか否かおよび含まれている場合にはその位置等を特定するブロックである。シーン判別処理部70gは、第2の顔認識処理部70fの処理結果に基づいて画像データのシーンを判別する。なお、シーンとは、画像データの主たる被写体の種類を示し、例えば、主たる被写体が人物、風景、夜景等がある。シーン判別処理部70gは、画像データのシーンを判別し、補正量算出部70iに判別結果を通知する。
第1の認識手段としての第1の顔認識処理部70hは、設定部70bによって画像データのシーンとして人物が選択された場合に、当該画像データに含まれている人物の顔を認識してその位置および範囲を特定する処理を実行する。なお、第1の顔認識処理部70hは、第2の顔認識処理部70fに比較すると、顔認識処理の感度が高く設定されている。
補正量算出部70iは、設定部70bの設定内容、ならびに、シーン判別処理部70g、第2の顔認識処理部70f、および、第1の顔認識処理部70hの処理結果に応じて、画像データに対する補正量を決定し、補正処理部70jに供給する。
補正処理部70jは、補正量算出部70iによって算出された補正量に基づいて、対象となる画像データに対して補正処理を施し、出力する。
つぎに、本発明の実施の形態の動作について説明する。
図4は、本発明の実施の形態の動作を説明するためのフローチャートである。このフローチャートは、メモリカードMがカードスロット18に挿入されるか、または、図示せぬディジタルカメラが図示せぬ接続ケーブルによってI/F55に接続された場合に開始される。このフローチャートが開始されると、以下のステップが実行される。なお、以下では、メモリカードMがカードスロット18に挿入された場合を例に挙げて説明する。
ステップS10:入力部70aは、メモリカードMに格納されている画像データの中から印刷しようとする画像データを選択する情報の入力を受ける。すなわち、CPU50は、カードI/F回路60を介して、カードスロット18に挿入されたメモリカードMから画像データのサムネイル画像データを取得し、GP54に供給してLCD15に一覧表示させる。そして、ユーザが操作ボタン16を操作してLCD15に表示されている所定のサムネイル画像を選択した場合には、対応する画像データを選択する。
ステップS11:入力部70aは、LCD15にメニューを表示し、ユーザに補正内容を入力させ、当該入力された内容に基づいて設定を行う。具体的には、CPU50は、図5に示すような階層構造を有するメニューを表示させ、所定の項目の選択を受ける。この図の例では、メニュー項目である自動画質補正M1の下層には、自動画質補正を実行しないM2と、実行するM3とが存在する。また、実行するM3の下層には、標準M4、人物M5、風景M6、および、夜景M7が存在する。
ここで、実行しないM2は、画像データに対する自動補正処理を実行しない場合に選択される。実行するM3は画像データに対する自動補正処理を実行する場合に選択される。標準M4は、自動補正処理を実行する場合であって、標準的な補正処理を実行する場合に選択される。なお、標準M4はデフォルト設定とされているので、人物M5、風景M6、夜景M7等が選択されない場合には標準M4が自動的に選択される。
人物M5は、画像データの主たる被写体が人物である場合に選択され、人物の肌の色が最適となるように補正処理が実行される。風景M6は、画像データの主たる被写体が風景である場合に選択され、植物もしくは樹木等の緑色または空もしくは海の青色が最適となるように補正処理が実行される。また、夜景M7は、画像データの主たる被写体が夜景である場合に選択され、例えば、暗い部分は抑えたままで明るい部分を強調することにより鮮やかな夜景となるように補正処理が実行される。
図5に示すようなメニューにおいて、所定の項目が選択されると、図3に示す入力部70aは選択されたメニュー項目に対応する情報を取得し、設定部70bに供給する。設定部70bは、入力部70aを介して入力された情報に基づいて、処理選択部70eおよび補正量算出部70iを設定する。
ステップS12:プレ処理部70dは、画像データに対して伸張、色変換処理を施す。具体的には、まず、画像取得部70cは、選択された画像データに関する情報を入力部70aから受け取り、メモリカードMに記憶されている該当する画像データを取得する。プレ処理部70dは、画像取得部70cによって取得された画像データに対してプレ処理を施す。すなわち、メモリカードMに格納されている画像データは、JPEG形式により圧縮されており、また、YCbCr形式の表色系にて表現されているので、画像データに対して伸張処理を施すとともに、RGB形式の表色系にて表現されるデータに変換する。なお、YCbCr表色系をRGB表色系に変換する際には、JFIF規格に規定されたマトリクスを利用するが、当該処理については周知技術であるので、その説明は省略する。また、プレ処理部70dは、得られた画像データから一定の割合でサンプリング処理をしてサンプリング画像データを生成する。
ステップS13:補正処理部70jは、ステップS10で選択された画像データに対して、ステップS11で設定された設定内容に対応した補正処理を実行する。なお、この処理の詳細については、図6を参照して後述する。
ステップS14:補正処理部70jは、補正処理が完了した画像データを、プリンタエンジンコントローラ62に出力して本処理を終了する。なお、プリンタエンジンコントローラ62は、補正処理が完了した画像データをCMYK表色系の画像データに変換した後、ハーフトーン処理、解像度変換処理等を施して印刷用ラスタデータを得る。そして、プリンタエンジンコントローラ62は、印刷用ラスタデータに基づいて記録ヘッド68を駆動し、キャリッジ67に収納されている各色のインクを印刷用紙に対して吐出させ、画像データに対応するカラー画像を印刷用紙に印刷する。
つぎに、図4に示すステップS13の補正処理の詳細について説明する。図6は、図4に示すステップS13の詳細な処理の一例を説明するフローチャートである。このフローチャートが開始されると、以下のステップが実行される。
ステップS30:処理選択部70eは、設定部70bからの指示を参照し、補正内容として図5に示す標準M4が選択されているか否かを判定し、選択されている場合にはステップS39に進み、それ以外の場合にはステップS31に進む。
ステップS31:処理選択部70eは、設定部70bからの指示を参照し、補正内容として図5に示す人物M5、風景M6、および、夜景M7のいずれが選択されているかを判定し、人物M5が選択されている場合にはステップS32に進み、風景M6が選択されている場合にはステップS35に進み、夜景M7が選択されている場合にはステップS37に進む。
ステップS32:第1の顔認識処理部70hは、対象となる画像データに含まれている人物の顔を特定する顔認識処理を実行する。この処理により、画像データに含まれている人物の顔の位置およびその範囲が特定される。例えば、画像データ内に一人の人物が存在する場合には当該人物の顔の位置および範囲が特定され、また、複数の人物が存在する場合には、それぞれの人物の顔の位置および範囲が特定される。なお、この処理の詳細については図8を参照して後述する。人物の顔が特定された場合には、第1の顔認識処理部70hは、特定された人物の顔の位置および範囲に関する情報を補正量算出部70iに通知する。
ステップS32の処理では、ユーザによって人物画であることが指定されているので、画像データ中には必ず人物が含まれており、風景画を人物画と誤認識することはない。したがって、ステップS32の処理では、顔認識処理の感度を高くして、顔が確実に検出されるようにする。
ステップS33:補正量算出部70iは、第1の顔認識処理部70hから供給された人物の顔の位置と範囲を示す情報に基づいて、画像データに含まれている顔の領域を特定し、当該領域の画像データのカラーバランスが適切になるような補正量を求める。具体的には、補正量算出部70iは、まず、顔の領域に対応する画像データから画素を所定の割合でサンプリングする。なお、人物が画像データ中に複数存在する場合には、それぞれの人物の顔に対応する領域の画像データについてサンプリングを行う。
つぎに、補正量算出部70iは、サンプリングによって得られた画素(肌色の画素(以下、「肌色画素」と称する))を用いて、HSB色空間における肌色画素の平均彩度Saと、肌色画素の平均色相Haとを算出する。
つぎに、補正量算出部70iは、算出された肌色画素の平均彩度Saと、平均色相Haと、予め設定されている補正基準明度Brとを用いて、補正基準明度Brにおける肌色画素のRGBそれぞれの平均色成分値Ra,Ga,Baを算出する。
つぎに、補正量算出部70iは、補正の目標値となる肌色画素目標値である肌色画素目標色相Ht、肌色画素目標彩度St、および、先述した補正基準明度Brを、RGB空間に変換し、RGBそれぞれの目標色成分値Rt,Gt,Btを求める。ここで、肌色画素目標色相Htおよび肌色画素目標彩度Stは、補正基準明度Brにおける目標値であり、画像サンプルの解析等によって経験的に求められた、いわば、人物の肌の色として好ましい肌色である。
つづいて、補正量算出部70iは、先に求めた、平均色成分値Ra,Ga,Baと、目標色成分値Rt,Gt,Btとの差分を求め、それぞれの色における補正量ΔR,ΔG,ΔBを以下の式から求める。なお、kは補正係数であり、ステップS33の処理では、シーンが人物であることがユーザによって指定されており、肌色に関する補正がユーザによって望まれていると考えられるので、最大値である“1”に設定される。
ΔR=k・(Rt−Ra) ・・・(1a)
ΔG=k・(Gt−Ga) ・・・(1b)
ΔB=k・(Bt−Ba) ・・・(1c)
そして、補正量算出部70iは、式1a〜1cによって求められた補正量を、補正処理部70jに供給する。
ステップS34:補正処理部70jは、ステップS33において補正量算出部70iから供給されたRGBそれぞれの補正量ΔR,ΔG,ΔBに基づいて画像データに対する補正処理を実行する。具体的には、補正処理部70jは、図7に示すトーンカーブを用いた補正を実行する。ここで、図7の横軸は画像データの入力値(補正前の値)を示し、縦軸は画像データの出力値(補正後の値)を示す。また、図中の破線は補正を行わない場合(入力=出力)の入出力特性(無補正特性)を示している。また、R,G,Bそれぞれに対応する曲線は、それぞれの色の画素値に対する入出力特性を示している。Drefは、入力基準値であり、本実施の形態では、補正基準明度Brの値である“192”を用いている。式1a〜1cによって求めた補正量ΔR,ΔG,ΔBは、入力基準値Drefにおける、無補正特性線からのシフト量とされている。例えば、Rに注目すると、式1aで求めた補正量ΔRは、入力基準値Drefにおける破線で示す無補正特性線からのシフト量に対応している。
補正処理部70jは、図7に示すような特性曲線を用いて、画像データを構成するR,G,Bそれぞれの画素に対して補正処理を実行する。
つづいて、補正処理部70jは、補正処理が施された画像データに対して、記憶色補正処理を実行する。ここで、記憶色とは、一般に多くの人がイメージとして記憶している色をいう。補正処理部70jは、人物の肌の色、空の色、夕焼けの色、植物の緑色といった特定の被写体の色を記憶色として保持している。具体的には、補正処理部70jは、「人物の肌の色」の記憶色として、所定の彩度S、色相H、明度Bを記憶しており、補正処理部70jは、対応する画素データ(肌色の画素データ)に対してのみ、図7を参照して説明したのと同様の処理を施す。なお、その際、補正量ΔR,ΔG,ΔBについては、記憶されている「人物の肌の色」の記憶色を用いる。また、前述した式1a〜1cにおける補正係数kの値としては、前述のように、ユーザによって顔にふさわしい補正が望まれているので、最大値である“1”を用いる。以上の処理により、記憶色によって更に補正がなされた画像データが得られる。
前述した2つの処理により、画像データは、人物の顔の見え方が最適となるように補正がされることになる。そして、ステップS14の処理に復帰する。
図6に戻る。
ステップS35:ステップS31において、シーンとして風景が選択されたと判定された場合には、補正量算出部70iは、主たる被写体が風景である場合に対応する補正量を算出する。具体的には、補正量算出部70iは、プレ処理部70dによって生成されたサンプリングデータに基づいて画像データのヒストグラムを生成する。そして、当該ヒストグラムからコントラストを求め、当該コントラストが風景画の目標値として予め設定されているコントラストに近付くように補正量を算出する。また、彩度についても予め設定されている彩度に近付くように補正量を求める。さらに、前述した「空の色」、「植物の緑色」としての記憶色を利用して、ユーザが好ましいと思う色になるように前述の場合と同様の方法により補正量を算出する。このようにして求めた補正量は、補正処理部70jに供給される。
ステップS36:補正処理部70jは、ステップS35において求めた補正量に基づいて、画像データに対して補正処理を施す。これにより、風景にふさわしい補正がなされる。そして、ステップS14の処理に復帰する。
ステップS37:ステップS31において、シーンとして夜景が選択されたと判定された場合には、補正量算出部70iは、主たる被写体が夜景である場合に対応する補正量を算出する。具体的には、補正量算出部70iは、プレ処理部70dによって生成されたサンプリングデータに基づいて画像データのヒストグラムを生成する。そして、当該ヒストグラムから夜景画の目標値として予め設定されているコントラストに近付くように補正量を算出する。具体的には、暗い部分は抑えたままで、明るい部分を強調するようにトーンカーブを設定する。また、彩度についても予め設定されている彩度に近付くように補正量を求める。さらに、色かぶりが生じている場合には色かぶりを補正するための補正量を算出するとともに、彩度が予め設定されている値に近付くように補正するための補正量を求める。このようにして求めた補正量は、補正処理部70jに供給される。
ステップS38:補正処理部70jは、ステップS37において求めた補正量に基づいて、画像データに対して補正処理を施す。これにより、夜景がより鮮やかに再現される。そして、ステップS14の処理に復帰する。
ステップS39:ステップS30において、「標準」が選択されていると判定された場合には、第2の顔認識処理部70fが画像データに人物の顔が含まれているか判定する顔認識処理を実行する。なお、第2の顔認識処理部70fは、第1の顔認識処理部70hに比較すると、認識の感度が低くなるように設定されている。これは、標準に設定されている場合には、対象となる画像データが人物画であるとは限らないため、誤認識が生じて画像データの色合い等が不適切になることを防止するためである。なお、ステップS39における顔認識処理の詳細については後述する。
ステップS40:シーン判別処理部70gは、第2の顔認識処理部70fの認識結果に基づいてシーンを判別する処理を実行する。具体的には第2の顔認識処理部70fによって人物の顔が検出された場合には、人物画であると判定する。また、人物画でないと判定された場合であって、ヒストグラムが全体として左側に分布している場合には夜景画であると判定する。また、緑色または青色の領域が多い場合には風景画と判定する。
ステップS41:補正量算出部70iは、それぞれのシーン毎に画像データに対する補正量を算出する。具体的には、人物画である場合には、ステップS33の場合と同様の処理により補正量ΔR,ΔG,ΔBを算出する。但し、当該補正処理では、ユーザは人物画に特化した補正を選択したとは言えないので、ステップS33に比較して弱めの補正となるようにする。具体的には、前述した補正係数kの値を(k<1)となる所定の値(例えば、“0.8”)に設定する。
また、風景画および夜景画の場合についても、ステップS35およびステップS37において算出される補正量よりも少なめの補正となるように計算する。具体的には、例えば、コントラストの目標値として、ステップS35およびステップS37において使用される目標値よりも小さめの値を用いる等である。
ステップS42:補正処理部70jは、ステップS37において求めた補正量に基づいて、画像データに対して補正処理を施す。これにより、それぞれのシーンにふさわしい補正処理がなされる。そして、ステップS14の処理に復帰する。
つぎに、図6のステップS32およびステップS39に示す第1および第2の顔認識処理の詳細について説明する。図8は、図6のステップS32およびステップS39に示す第1および第2の顔認識処理の詳細について説明するフローチャートである。なお、ステップS32に示す第1の顔認識処理と、ステップS39に示す第2の顔認識処理は、顔であるか否かの判断をする処理の判断基準(後述するステップS54の判断基準)が異なる点が主たる差異であるので、ステップS32に示す第1の顔認識処理を例に挙げて説明する。
図8に示す処理が実行されると、以下のステップが実行される。
ステップS50:第1の顔認識処理部70hは、テンプレートを指定する変数nに値“1”を初期設定し、テンプレートの走査位置を指定する変数x,yに値“0”をそれぞれ初期設定する。
ステップS51:第1の顔認識処理部70hは、変数nによって指定される第n番目のテンプレート(詳細は後述する)を、例えば、ROM51から選択する。第1回目の処理では、変数nには値“1”が設定されているので、第1番目のテンプレートが選択される。図9(A)は、第1〜第5のテンプレートの一例を示している。この図に示すように、テンプレートは顔の特徴点(目、鼻、口等)を含む画像であり、第1〜第5の順でそのサイズが小さくなっている。なお、テンプレートの画像の解像度が高い場合には、各個人の顔の特徴に影響を受けてマッチング処理の精度が低下するので、図9(B)に示すように、テンプレートにモザイク処理を施すことにより、各個人の特徴に影響を受けにくくしている。
ステップS52:第1の顔認識処理部70hは、画像データからx,yを左上端とし、ステップS51で選択したテンプレートに対応するサイズの領域を抽出する。なお、以下では、抽出された画像データを抽出画像データと称する。いまの例では、x,y=0であり、第1のテンプレートが選択されているので、x,y=0を左上端とし、第1のテンプレートと同じサイズの領域が抽出画像データとして抽出される。
ステップS53:第1の顔認識処理部70hは、ステップS51において選択したテンプレートと、ステップS52において抽出された抽出画像データとのマッチング処理を実行する。マッチング方法としては、例えば、抽出画像データと、テンプレートの各画素の差分の2乗を累積加算し、所定の閾値以下になった場合には、これらの類似性が高い(顔が含まれている)と判断することができる。なお、これ以外にも、例えば、ニューラルネットワークを利用することも可能である。その場合、例えば、入力層、中間層、および、出力層の3層構造を有するニューラルネットワークを利用し、入力層にテンプレートの画像を、例えば、位置等をずらしながら入力して学習を行い、十分に学習を積んだニューラルネットワークを用いてマッチング処理を行うことが可能である。
また、ニューラルネットワークではなく、例えば、ジェネティックアルゴリズム(遺伝的アルゴリズム)を用いてマッチング処理を行うことも可能である。例えば、テンプレートを原画像に重ねる際のパラメータとして、テンプレートの種類n、左上端のx,y座標を定義し、各固体の染色体をこれらのパラメータに基づいて決定し、マッチング率を固体の適応度とみなして個体集団を進化させることにより、最適な個体をマッチング処理の結果とすることができる。
ステップS54:第1の顔認識処理部70hは、ステップS53の処理の結果に基づいて、ステップS52で抽出された抽出画像データに顔が含まれているか否かを判定し、含まれていると判定した場合にはステップS55に進み、それ以外の場合にはステップS56に進む。例えば、前述した差分の2乗を計算するマッチング処理の場合には、累積加算値が所定の閾値Thよりも小さい場合には顔が含まれていると判定する。なお、閾値Thについては、第1の顔認識処理部70hの方が、第2の顔認識処理部70fよりも大きくなるように設定する。これにより、顔認識の感度を第2の顔認識処理部70fよりも第1の顔認識処理部70hの方が高くなるように設定することができる。このように第1の顔認識処理部70hの顔認識の感度を高くなるように設定するのは、第1の顔認識処理部70hが処理対象とする画像データは、ユーザによって人物画であることが予め指定されているので、画像データに含まれる人物を確実に検出するためである。また、第2の顔認識処理部70fの感度を低く設定するのは、当該処理部が処理対象とする画像データは、人物画であるか否かは不明であるため、誤認識が生じて画像データの色調等が不適当となることを防止することを最優先とするためである。
ステップS55:第1の顔認識処理部70hは、顔が存在すると判定された領域の中心の座標をRAM52に記憶する。なお、中心座標を求めるには、現在選択されているテンプレートのサイズの半分の長さを、現在のx,y座標に加算すればよい。
ステップS56:第1の顔認識処理部70hは、それまでの処理で合計して10人分の顔を検出したか否かを判定し、10人分の顔を検出した場合には処理を終了してもとの処理に復帰し、それ以外の場合にはステップS57に進む。例えば、第1のテンプレートで、3人の顔が検出され、第3のテンプレートで7人の顔が検出された場合には処理を終了してもとの処理に復帰する。
なお、第1の顔認識処理については、ユーザによって人物画であることが指定されているので、10人ではなく全ての画像データの領域について認識処理を実行するようにし、第2の顔認識処理については10人または2〜3人とすることも可能である。予め人物画と指定された場合には、全ての人物に最適な補正を行う方が望ましいからである。なお、10人以外の人数であってもよい。
ステップS57:第1の顔認識処理部70hは、抽出画像データが抽出される領域が画像データの右端に到達したか否かを判定し、到達した場合にはステップS59に進み、それ以外の場合にはステップS58に進む。すなわち、本発明の実施の形態では、図10(A)に示すように、画像データからテンプレートに対応した大きさの画像データを抽出し、図10(B)に示す順序で抽出を繰り返す。このとき、画像を抽出する領域が右端に到達した場合には、ステップS59に進む。
ステップS58:第1の顔認識処理部70hは、左上端のx座標に対してΔxを加算する。なお、Δxは、選択されているテンプレートのサイズに応じて最適な値を決定する。例えば、テンプレートのサイズが小さい場合にはΔxの値を小さくし、サイズが大きい場合にはΔxの値を大きくする。
ステップS59:第1の顔認識処理部70hは、左上端のy座標に対してΔyを加算する。なお、Δyは、前述のΔxの場合と同様に、テンプレートのサイズに応じて決定する。
ステップS60:第1の顔認識処理部70hは、左上端のx座標を“0”に設定する。その結果、画像を抽出する領域が画像の左端に復帰する。
ステップS61:第1の顔認識処理部70hは、所定のテンプレートについて、全領域に対する処理が完了したか否かを判定し、終了したと判断した場合にはステップS62に進み、それ以外の場合にはステップS52に戻って同様の処理を繰り返す。
ステップS62:第1の顔認識処理部70hは、x,yのそれぞれに対して値“0”を設定する。その結果、画像を抽出する領域が画像データの左上端にリセットされる。
ステップS63:第1の顔認識処理部70hは、テンプレートを選択するための変数nを“1”だけインクリメントする。いまの例では、変数nには初期値“1”が設定されているので、変数nの値はこの処理により“2”となる。その結果、ステップS51の処理では第2のテンプレートが選択されることになる。
ステップS64:第1の顔認識処理部70hは、変数nの値がテンプレートの最大値を示す値Nよりも大きいか否かを判定し、大きい場合には処理を終了する。いまの例では、図9に示すように、N=5であるので、n>5である場合には処理を終了してもとの処理に復帰し、それ以外の場合にはステップS51に戻って同様の処理を繰り返す。
以上の処理により、画像データに含まれている人物の顔を認識して特定することが可能になる。
なお、図8のフローチャートは、画像データに対して人物が図10(A)に示す向き(画像データの長手方向が水平方向となる向き)で撮影されている場合に対応する処理であるが、長手方向が垂直方向となる向きで撮影される場合も想定される。したがって、画像を所定の角度で回転させた後に図8に示すフローチャートを実行することにより、そのような向きで撮影された場合についても確実に人物を検出することができる。
以上に説明したように、本発明の実施の形態によれば、ユーザによって人物画像であることが指定された場合には、感度の高い第1の顔認識処理部70hによって顔認識処理を実行し、それ以外の場合には感度の低い第2の顔認識処理部70fによって顔認識処理を実行するようにしたので、対象となる画像データが人物画でない場合に誤検出が生じることを防止できる。また、対象となる画像データが人物画である場合に人物の顔を確実に検出することが可能になる。
また、第1の顔認識処理部70hと第2の顔認識処理部70fによって認識されたそれぞれの人物の顔について、第1の顔認識処理部70hによって認識された顔の補正量の方が大きくなるようにした。これにより、ユーザによって人物画であることが指定された画像データについては補正処理を強めにし、より人物の顔らしい画像データを得ることが可能になる。
また、シーンとして風景または夜景が選択された場合には、顔認識処理を実行しないようにしたので、これらのシーンが選択された場合には、印刷までの待ち時間を短縮することが可能になる。
また、シーンとして風景または夜景が選択された場合には、標準が選択されて風景または夜景と判定された場合よりも、補正量を強くするようにしたので、それぞれのシーンに最適な補正を行うことが可能になる。また、標準の場合には、誤認識によって色合い等が不適切になることを防止できる。
なお、以上の実施の形態は、一例であって、これ以外にも種々の変形実施態様が存在する。例えば、以上の実施の形態では、画像データの抽出する領域は固定としたが、例えば、過去の処理に基づいて学習を行い、最適な範囲を設定するようにしてもよい。具体的には、画像データにおける顔が存在する確率が高い部分を過去のデータから特定し、当該部分を含むように領域を設定するようにすればよい。そのような方法によれば、最小限のコストで顔を発見することが可能になる。
また、以上の実施の形態では、複合型の印刷装置を例に挙げて説明を行ったが通常の印刷装置(パーソナルコンピュータと接続して使用するタイプの印刷装置)に対して本発明を適用することができる。また、複合型ではない通常のスタンドアロン型の印刷装置に対して本発明を適用することも可能である。
また、以上の実施の形態では、メモリカードMに記憶されている画像データを対象として処理を実行するようにしたが、例えば、スキャナ部14によって光学的に読み込まれた画像データに対して、前述した処理を行うことも可能である。すなわち、スキャナ部14に、例えば、写真等を配置してスキャンすることにより、画像を画像データに変換して読み込み、当該画像データに対して、前述の場合と同様の処理を実行することにより、被写体の種類に応じて補正処理を実行することができる。
また、以上の実施の形態では、顔の大きさに拘わらず、10人検出した場合に、処理を終了するようにしたが、例えば、小さい顔については重要度が低いと考えることができることから、大きい顔が所定の個数見つかった場合には、処理を終了するようにしてもよい。そのような実施の形態によれば、処理速度を向上させることができる。また、それぞれの大きさについて、個数を定めておき、定められた個数の顔が検出された場合には処理を終了するようにしてもよい。例えば、第1のテンプレートでは1つ、第2のテンプレートでは2つ、といった具合である。そのような処理によれば、主な被写体と考えられる大きな顔が検出された場合には、迅速に処理を終了することにより、処理時間を短縮することができる。
また、以上の実施の形態では、正面を向いた顔に対応するテンプレートを使用するようにしたが、例えば、上、下、右、および、左を向いたテンプレートを用いるようにしてもよい。その場合、正面と上、下、右、左の中間の段階のテンプレートを複数用意し、それぞれのテンプレートとのマッチング処理を実行してもよい。そのような実施の形態によれば、被写体の人物が正面以外の方向を向いている場合であっても、顔として認識される確率を向上させることができる。
また、以上の実施の形態では、図10(B)に示す順序で顔を検出するようにしたが、例えば、顔が含まれている蓋然性が最も高い、画面の中央から外側に向かって、螺旋状に旋回しながら検出するようにしてもよい。なお、そのとき、画面の中央部分では、抽出範囲の移動ステップを小さくし、外側に行くほどステップを大きくするようにしてもよい。そのような実施の形態によれば、例えば、顔が存在する蓋然性に応じたステップで検出処理を実行することができる。また、前述の大きい顔が見つかった場合には処理を終了する実施の形態と併せて実施するようにすれば、処理速度を向上させることが可能になる。
また、以上の実施の形態では、テンプレートを用いて、顔認識処理を行うようにしたが、例えば、目、鼻、口等の特徴部分を抽出し、抽出されたこれらの部分に基づいて認識処理を行うようにしてもよい。なお、その場合にも、抽出された特徴量から顔であるか否かの判断を行う閾値を、第1の顔認識処理および第2の顔認識処理でそれぞれ異なるように設定すればよい。
また、以上の実施の形態では、1つの画像データが選択された場合を例に挙げて説明したが、複数の画像データが一括して選択され、それに基づいて画像データに補正処理が施される場合も想定される。そのような場合、例えば、全ての画像データに対する処理を実行する前に、図5に示すメニューにおいて、実行しないM2が選択された場合には全ての画像データに対して補正処理を実行しないようにし、実行するM3が選択された場合には、1つの画像データの処理が開始される前に、標準M4、人物M5、風景M6、夜景M7等の選択を受けるようにしてもよい。あるいは、補正処理を開始する前に、全ての画像データに対する主たる被写体の種類の指定を受け、全ての画像データに対して一律に同じ処理を施すようにしてもよい。なお、その場合には、主たる被写体の選択を誤る場合が想定されるので、人物M5、風景M6、または、夜景M7が選択された場合に、該当する被写体が存在しない(例えば、人物M5が選択された場合に顔が認識できない)ときは、主たる被写体を再度選択するようにユーザに促すようにしてもよい。
また、以上の実施の形態では、図4,6,8に示す処理を、印刷装置11において実行するようにしたが、例えば、印刷装置11に接続されているホストコンピュータにおいて実行することも可能である。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、画像処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disk)、DVD−RAM、CD−ROM(Compact Disk ROM)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
70a 入力部(入力手段)、70f 第2の顔認識処理部(第2の顔認識手段)、70h 第1の顔認識処理部(第1の顔認識手段)、70i 補正量算出部(補正手段の一部)、70j 補正処理部(補正手段の一部)