図1は、本発明にかかる画像処理装置の第1実施形態を用いた印刷システムを示す図である。この印刷システムは、デジタルカメラ200の撮影により取得された画像データを、メモリカードM、USB(Universal Serial Bus)ケーブルや無線LAN(Local Area Network)等によって印刷装置100に転送し、印刷装置100で印刷するものである。すなわち、ここではユーザーがデジタルカメラ200で画像を撮影して画像データを生成し、その画像データをそのまま印刷装置100で読み込んで印刷する、いわゆるダイレクト印刷を想定しているが、本発明を適用可能な印刷システムはこれに限定されるものではない。つまり、デジタルカメラ200で生成した画像データをパーソナルコンピューターや携帯電話などに取り込み、パーソナルコンピューターから印刷装置100に画像データを送信して印刷する印刷システムにも本発明を適用することは可能である。
デジタルカメラ200では、同図に示すように、CPU(Central Processing Unit)201、ROM(Read Only Memory)202、RAM(Random Access Memory)203、CCD(Charge Coupled Device)204、GP(Graphic Processor)205およびI/F(Interface)206がバス207を介して相互に接続され、これらの間で情報の授受が可能となっている。そして、CPU201はROM202に格納されているプログラムに応じて各種演算処理を実行しながらデジタルカメラ200の制御を行う。このとき一時的に必要となるデータはRAM203に格納される。また、CCD204は、光学系208によって集光された被写体からの光学像を電気信号に変換して出力する。この光学系208は、複数のレンズおよびアクチュエータによって構成されており、アクチュエータによってフォーカス等を調整しながら被写体の光学像を複数のレンズによってCCD204の受光面に結像する。さらに、GP205は、CPU201から供給される表示命令に基づいて表示用の画像処理を実行し、得られた表示用画像データをLCD(Liquid Crystal Display)209に供給して表示させる。
I/F206はデジタルカメラ200の入出力機能を提供するものであり、操作ボタン210、ジャイロセンサー211およびカードI/F回路212の間で情報を授受する際に、データの表現形式を適宜変換する装置である。I/F206に接続される操作ボタン210には、電源、モード切替え、シャッターなどのボタンや、各種機能を設定できる入力手段があり、これらによってユーザーはデジタルカメラ200を任意に制御して動作させることが可能となっている。また、ジャイロセンサー211はデジタルカメラ200によって被写体を撮影した際のカメラ本体の角度(水平面に対する角度)を示す信号を生成して出力する。デジタルカメラ200は、上記したカメラ本体の角度を含め、撮影時における種々の情報(例えば、露光、被写体等に関する情報)を生成する。それらの情報の一つである撮影情報に後述する顔情報が含まれる。なお、本実施形態では、デジタルカメラ200は、撮影情報をExif(Exchangeable Image File Format)情報に記載し、画像データに付加した画像ファイルを生成することができる構造となっている。
また、カードI/F回路212はカードスロット213に挿入されたメモリカードMとの間で情報を読み書きするためのインタフェースである。さらに、I/F206は図示を省略するUSB、無線LANなどの外部機器との接続機能も有しており、有線または無線にて印刷装置100との間で画像ファイルの授受が可能となっている。なお、デジタルカメラ200で作成され、印刷装置100に与えられる画像ファイル(画像データ+Exif情報)については、後で詳述する。
印刷装置100はデジタルカメラ200で撮像された画像を印刷する装置であり、次のように構成されている。印刷装置100では、CPU101、ROM102、RAM103、EEPROM(Electrically Erasable and Programmable ROM)104、GP105およびI/F106がバス107を介して相互に接続され、これらの間で情報の授受が可能となっている。CPU101はROM102およびEEPROM104に格納されているプログラムに応じて各種演算処理を実行するとともに印刷装置100の各部を制御し、本発明の「顔情報検出部」、「顔情報付加判別部」、「顔信頼度算出部」、「顔情報決定部」および「補正部」として機能する。また、CPU101が実行対象とするプログラムやデータについてはRAM103に一時的に格納される一方、印刷装置の電源が切断された後も保持しておくデータ等についてはEEPROM104に格納される。さらに、CPU101は必要に応じてGP105に対して表示命令を与え、この表示命令に応じてGP105が表示用の画像処理を実行し、その処理結果をLCD108に供給して表示させる。
I/F106は、操作ボタン109、カードI/F回路110およびプリンターエンジンコントローラー111の間で情報を授受する際に、データの表現形式を適宜変換する装置である。印刷装置100では、操作ボタン109は印刷装置100のメニュー選択等を行う時に押されるように構成されている。また、カードI/F回路110は、カードスロット112と接続されており、このカードスロット112に挿入されたメモリカードMからデジタルカメラ200によって生成された画像ファイルを読み出す。なお、I/F106は、図示を省略するUSB、無線LANなどの外部機器との接続機能も有しており、有線通信または無線通信にてデジタルカメラ200との間で画像ファイルの授受が可能となっている。
そして、印刷装置100は、メモリカードMを介して、あるいはデータ通信により画像データを受け取ると、CPU101により種々の処理を行うとともにプリンターエンジンコントローラー111によりプリンターエンジン113を制御し、これによって画像データに対応する画像を印刷する。以下、図2ないし図4に基づき画像ファイルの構成を説明した上で、本実施形態における画像処理動作および印刷動作について詳述する。
図2は上記のように構成されたデジタルカメラで作成される画像ファイルの一例を示す図である。また、図3は図2の部分拡大図である。この実施形態では、デジタルカメラ200はCCD204で撮像された画像データをRAM203に格納する。また、デジタルカメラ200は、被写体に人物が含まれているときには顔認識処理を行う(なお、顔認識方式については従来より数多く提案されており、それらのうちいずれの方式を採用してもよい)。なお、本実施形態では、顔認識結果は、図4に示すような座標情報が顔位置の情報、つまり顔情報として表現される。すなわち、同図に示すように、画像データは所定の画像幅(Width)と画像高さ(Height)の画素で構成されており、Xが横軸、Yが縦軸を表しており、左上が原点(0,0)である。そして、画像データから顔が検出されると、その顔画像が含まれる顔領域FRを左上(LT)、左下(LB)、右上(RT)、右下(RB)の4点の座標で囲まれる領域で表し、顔領域FRを示す座標、つまり顔座標(顔位置)を、認識した顔の個数(つまり顔個数)NcとともにRAM203に格納する。また、本明細書では、後で説明するように、印刷装置100においてもデジタルカメラ200での顔認識と同様に顔認識を行って顔座標を求めるため、デジタルカメラ200での顔認識により得られる顔座標を「カメラ顔座標」と称し、左上(LTc)、左下(LBc)、右上(RTc)、右下(RBc)で示す。また、顔認識処理により複数個の顔が検出される場合もあるため、第n番目のカメラ顔座標を左上(LTnc)、左下(LBnc)、右上(RTnc)、右下(RBnc)で示す。なお、後述するように印刷装置100の顔認識で得られる顔座標については「プリンター顔座標」と称し、第n番目のプリンター顔座標については、左上(LTnp)、左下(LBnp)、右上(RTnp)、右下(RBnp)で示す。
また、この実施形態では、上記のように画像データ、顔個数および顔座標などをRAM203に格納しているが、その記録方式としてディジタルスチルカメラ用画像ファイルフォーマット規格Exif Ver.2.2.1を使用している。このExif画像ファイルの構造は、基本的には通常のJPEG(Joint Photographic Experts Group)画像形式そのものであり、その中にサムネイル画像や撮影関連データ等のデータをJPEGの規約に準拠した形で埋め込んだものである。
本実施形態で使用する画像ファイルは、図2の左側部分に示すように、最初にSOI(Start of image)301がある。その後に、APP1(アプリケーション・マーカーセグメント)302、DQT(Define Quantization Table)303、DHT(Define Huffman Table)304の順となっている。さらにその後に、SOF(Start of Frame)305、SOS(Start of Stream)マーカー306、圧縮データ(Compress Data)307の順となっている。最後にEOI(End of Image)308がある。これらのうちAPP1はアプリケーションプログラムで使用するためのデータ領域として図2の中央部分に示す構造を有している。APP1の構造は、先頭にAPP1 Marker領域302aがある。そして、その次にLength領域302bがある。
Length領域302bに続くデータの最初の6バイトの領域302cでは、識別子としてASCII文字の“Exif"が、その次に2バイトの0x00が続く。そこからTiff(Tagged Image File Format)形式でデータが格納されている。Tiff形式の最初の8バイトはTiffヘッダー(Header)領域302dである。
また、Tiffヘッダー領域302dの次の0th IFD(IFD of main image)領域302eに、同図の右側部分に示すように、画像幅、画像高さ等の画像関連情報(あるは、単に画像情報とも呼ぶ)が格納される。そして、0th IFDの次に0th IFD Value領域302fがある。さらに、その次にExif IFD領域302gが設けられ、露出時間、Fナンバー、撮影シーンタイプなどの撮影関連情報(あるいは、単に撮影情報とも呼ぶ)が格納される。また、Exif IFD領域302gにExif IFD Value領域302hがある。なお、現在のところ、顔認識処理により検出される顔個数NcとNc個の顔座標をExifタグに書き込む規格は規定されていないが、本実施形態では顔個数NcがExif IFD領域302gに書き込まれ、Nc個の顔座標がExif IFD Value領域302hに書き込まれるとともに該書込位置をポイントする情報がExif IFD領域302gに書き込まれると仮定して説明を続ける。もちろん、これらの情報をメーカーに依存する領域に書き込むように構成してもよい。このように、顔位置(顔座標)の情報である顔情報はExif情報に記載され、画像データに添付されている。したがって、Exif情報に顔情報が含まれる場合には、顔個数Ncなどとともに画像データの補正に利用される。一方、Exif情報に顔情報が含まれていない場合、顔情報がないと判断される。
次に、上記のようなデータ構造(図2)を有する画像ファイルがメモリカードMに保存されており、そのメモリカードMから画像ファイルを読み出し、印刷装置100により画像ファイルに含まれる各種情報に基づき所定の画像処理を実行して印刷する動作について、図5ないし図7を参照しつつ説明する。
図5および図6は図1の印刷装置で実行される画像処理および印刷動作を示すフローチャートである。また、図7は座標リストを示す図である。ユーザーが印刷装置100のカードスロット112にメモリカードMを挿入し、操作ボタン109を操作して印刷指令を与えると、CPU101がROM102に格納されているプログラムにしたがって装置各部を制御して以下の画像処理および印刷動作を実行する。
まず、CPU101は、印刷の対象となる画像ファイルをメモリカードMから取得し、ハフマン解凍処理を実行し、量子化DCT(Discrete Cosine Transform)係数を得る(ステップS10)。より具体的には、CPU101は、図2に示す画像ファイルからエントロピー符号化テーブルを取得し、圧縮データ307に含まれているY(輝度)成分、Cr(色差成分)、および、Cb(色差成分)のそれぞれのブロックのDC係数と、AC係数とを復号する。なお、この際、最小符号化単位であるMCU(Minimum Coded Unit)単位で復号を行う。
また、CPU101は、ステップS10において得られた量子化DCT係数を逆量子化する(ステップS11)。具体的には、CPU101は、図2に示す画像ファイルから量子化テーブルを取得し、ステップS10において得られた量子化DCT係数に乗じることにより(逆量子化することにより)、DCT係数を得る。
次に、CPU101は、画像を回転させるために必要な情報を、例えばRAM103にキャッシュする(ステップS12)。具体的には、JPEG方式によって圧縮された画像を回転させる場合、MCUのDC成分(直流成分)とAC成分(交流成分)のそれぞれを一度ハフマン展開しなければならない。ここで、DC成分については隣接するDC成分値の差分をハフマン符号化することから、隣接するMCUとの相関関係が問題となる。また、AC成分ではハフマン符号化処理によりそのデータ長が各MCUで一定にならず、JPEGデータのビットストリーム中のどのデータが求めるMCUのAC成分値であるかが不明となることが問題となる。そこで、ステップS12では、各MCUのDC成分値とAC成分のアドレスを求めてキャッシュしておくことにより、ローテート処理を可能とする。
そして、CPU101はステップS11で得られたDCT係数に対して逆DCT演算を施すことによりもとの画素値を得る(ステップS13)。また、CPU101は、ステップS13の処理によって得られたYCC空間の画像をRGB(Red Green Blue)空間の画像と、HSB(Hue Saturation Brightness)空間の画像に変換する(ステップS14)。
そして、CPU101はステップS13およびステップS14の処理において得られたYCC,RGB,HSBのそれぞれの画像をRAM103に格納して保持する。なお、このとき、データ量を削減するために画素を所定の割合で間引きした後にRAM103に格納してもよい(ステップS15)。
また、CPU101は、ステップS15においてRAM103に格納されたYCC,RGB,HSBそれぞれの画像の成分について、ヒストグラムを計算する(ステップS16)。具体的には、RGB画像については、R,G,Bそれぞれの画像についてヒストグラムを計算する。その結果、画像を構成する各成分の分布を得る。
上記したように、本実施形態では、ステップS10〜16の処理はMCU単位で行われており、CPU101は、全てのMCUについての処理が終了したことを確認するまで、ステップS10に戻って処理を繰り返して実行する。一方、全てのMCUについての処理が終了した場合には、次のステップS17に進む。
このステップS17では、CPU101は、図2の画像ファイル中のExifタグから顔情報としてカメラ顔座標を読み込み、さらにQVGA(Quarter Video Graphics Array)サイズに規格化し、それらをRAM103に格納する。そして、CPU101はカメラ顔座標の有無に応じて閾値Tの値を設定する(ステップS18)。本実施形態における「閾値」とは、顔領域に含まれる顔画像が人物の顔であるか否かの判別基準となる値であり、本実施形態では後述する「顔信頼度」との関係でカメラ顔座標が付加されているときには閾値Tを「800」に設定し(ステップS19)、付加されていないときには閾値Tを「400」に設定する(ステップS20)。なお、「顔信頼度」、「800」、「400」の物理的意味などについては後で説明する。
ここで、カメラ顔座標がないとき(ステップS18で「NO」)には、閾値Tの設定後、直ちにステップS22に進むのに対し、カメラ顔座標があるとき(ステップS18で「YES」)には、閾値Tの設定(ステップS19)に続いて、CPU101はステップS17で規格化されたカメラ顔座標を座標リストの登録顔情報No.1、2、…の順序で記憶した(ステップS21)後に、ステップS22に進む。なお、本実施形態の座標リストは、例えば図7に示すように予め10個の顔座標を登録顔情報として記憶するためのメモリ空間であり、RAM103に設けられている。このメモリ空間にステップS17で規格化された顔座標が登録顔情報No.1、2、…の順序で記憶される。例えば図3に示すように2個のカメラ顔座標が画像データに付加されている場合には、QVGAサイズに規格化された顔座標(LT1c、LB1c、RT1c、RB1c)が座標リストの登録顔情報No.1のアドレスに登録される。また、2つ目の顔座標(LT2c、LB2c、RT2c、RB2c)が座標リストの登録顔情報No.2のアドレスに登録される。また、該当する顔座標がない登録顔情報のアドレスにはゼロを登録する。また、本実施形態では、最大10個の顔座標を登録することが可能となっているが、登録可能個数はこれに限定されるものではなく、任意である。なお、この点については、第2実施形態で採用している「カメラ顔登録リスト」、「プリンター顔登録リスト」、「エンハンス顔登録リスト」においても同様である。
次のステップS22〜S36で、CPU101は、テンプレート(検索領域)を用いた顔認識処理を行うとともに、顔認識処理により検出されるプリンター顔座標で特定されるプリンター顔領域に含まれる顔画像について顔信頼度を算出し、その顔信頼度を閾値Tと対比して信頼性の高いプリンター顔座標を座標リストに登録する。すなわち、CPU101は、顔認識に用いるテンプレートの顔サイズSを有効最大顔サイズ(240ピクセル)に設定し(ステップS22)、そのテンプレートを原点(0,0)に位置させる(ステップS23、S24)。そして、CPU101は、テンプレートをΔX(この実施形態では、ΔX=S/2)単位でX方向にステップ移動させながら原点位置および各移動位置でステップS25〜S30の処理を実行する。すなわち、CPU101は、画像データに対してテンプレートを適用して顔認識処理を行う(ステップS25)。また、CPU101は、保持した画像データを90゜、180゜および270゜回転させて顔認識処理を行う(ステップS26〜S28)。このようなテンプレートを用いた顔認識処理(ステップS25〜S28)については、従来より多用されているもので用いることができ、例えば45゜単位で回転させながら顔認識を行ってもよい。
このような顔認識処理によって人物の顔を検出した場合には、CPU101は、テンプレート(検索領域)に含まれる顔画像について顔信頼度を算出した後、その顔信頼度をステップS19、S20で設定した閾値Tと対比する(ステップS29)。この「顔信頼度」とは、顔画像が真の顔画像であることの確からしさを表す指標値であり、例えば特開2009−217607号公報や特開2010−191592号公報などに記載されているように、従来から種々の態様が提案されている。本実施形態では、顔画像が真の顔画像であることの確からしさを0〜1000の範囲で数値化しており、顔信頼度「400」、「800」はそれぞれ40%、80%の確率で人物の顔であることを示している。なお、顔信頼度はこれに限定されるものではなく、従来より提案されているものを用いることができる。
このステップS29で「YES」、つまり顔認識処理によって検出したプリンター顔座標により特定される顔領域(テンプレート)に含まれる顔画像についての顔信頼度が閾値Tを上回っており、人物の顔である可能性が高いと判別したときのみ、CPU101は当該プリンター顔座標を座標リストに登録する(ステップS30)。一方、閾値T以下のときには座標リストへの登録を行わず、当該プリンター顔座標を誤検出情報として排除している。
また、X方向の1ラインについて顔認識処理、顔信頼度算出処理、プリンター顔座標の登録/排除の決定処理(以下「顔情報決定処理」という)が完了する(ステップS32で「YES」)と、CPU101はテンプレートTPをY方向にΔY(この実施形態では、ΔY=S/2)だけ移動させる(ステップS33)。そして、テンプレートがY方向の端部まで位置するまでの間(ステップS34で「NO」の間)、上記したステップS24〜S33を繰り返して行う。これにより、画像データ全体に対して顔サイズSのテンプレートを用いた顔認識処理、顔信頼度の算出処理、顔情報決定処理が実行される。
なお、CPU101は、上記した一連の顔認識処理(ステップS23〜S34)が完了する毎にテンプレートの顔サイズSをΔS(この実施形態では10ピクセルに設定)だけ小さくし(ステップS35)、顔サイズSが有効最小顔サイズ(20ピクセル)を下回るまでステップS23に戻って上記した一連の顔認識処理、顔信頼度算出処理および顔情報決定処理(ステップS23〜S34)を繰り返して行う。
こうして、印刷装置100による顔認識処理、顔信頼度算出処理および顔情報決定処理が行われると、次のステップS37で、CPU101は座標リストにカメラ顔座標および/またはプリンター顔座標が登録されている否かを判別する。そして、カメラ顔座標かプリンター顔座標かを問わず、顔座標が登録されている場合(ステップS37で「YES」)には、CPU101は、座標リストに登録された顔座標に基づいて全ての顔位置や顔領域を計算し、さらに顔の平均顔色を取得した(ステップS38)後、顔色が最適になるようにエンハンスパラメータを計算する(ステップS39)。なお、エンハンスパラメータ計算の詳細については省略するが、RAM103に記憶したRGBヒストグラムに基づきコントラスト、明度、彩度、シャープネスなどの各画質パラメータの特徴量を抽出し、抽出した特徴量が所定の画質パラメータの特徴量に近づくようエンハンスのパラメータを設定する。
一方、座標リストにカメラ顔座標もプリンター顔座標も登録されていない場合(ステップS37で「NO」)、CPU101は、画像全体が最適になるようにエンハンスパラメータを計算する(ステップS40)。
次のステップS41では、CPU101は、印刷対象となる画像ファイルにおいて、解凍処理の対象となる位置を示すファイルポインタをリセットし、処理位置を画像ファイルの先頭に復元する。そして、CPU101は、以下のステップS42〜S49を繰り返して画像データに基づいて画像を印刷する。
CPU101は、RAM103にキャッシュされた1MCUライン分の画像データにハフマン解凍処理を施し、量子化DCT係数を得る(ステップS42)。ここで、1MCUラインとは、画像を回転させる場合には、画像を構成する列方向に1列のMCU群をいい、回転させない場合には、画像を構成する行方向に1列のMCU群をいう。そして、CPU101は、ステップS29の処理において得られた量子化DCT係数を逆量子化し(ステップS43)、さらにステップS42で得られたDCT係数に対して逆DCT演算を施すことによりもとのデータを得る(ステップS44)。
こうして得られたYCC空間の画像を、CPU101はRGB空間の画像に変換する(ステップS45)。そして、CPU101は、RGB空間の画像を構成する各画素に対してステップS39、S40において算出したエンハンスパラメータを適用することにより、印刷される画像を最適な色合いに補正し(ステップS46)、次のステップS47に進む。
CPU101は、こうして補正された画像データに対して、リサイズ、回転などのレイアウト処理を施し(ステップS47)、プリンターエンジンコントローラー111の図示せぬバンドバッファに供給する。これを受けたプリンターエンジンコントローラー111は、プリンターエンジン113の各部を制御して画像データに対応する画像を印刷する(ステップS48)。そして、印刷処理が完了すると、CPU101はRAM103のキャッシュ状態を更新する(ステップS49)。そして、全MCUライン分について上記ステップS42〜S49が完了すると、一連の処理を終了する。
以上のように、本実施形態によれば、画像データからプリンター顔座標を検出するとともに同プリンター顔座標で特定される顔領域に含まれる顔画像の顔信頼度を算出し、その顔信頼度を閾値Tと対比して同プリンター顔座標を登録顔座標として座標リストに加えるのか、そのまま排除するのかを判別している。このように閾値Tは、顔画像が人物の顔であるか否かの判別基準として用いられ、誤検出の発生防止が図られている。また、本実施形態では、単一の閾値Tを用いるのではなく、画像データにカメラ顔座標が付加されているか否かに応じて閾値Tを変更している。すなわち、画像データにカメラ顔座標が付加されている場合(ステップS18で「YES」)には、カメラ顔座標が付加されていない場合の閾値Tよりも大きい(もしくは高い)閾値Tを設定している。このため、誤検出の発生確率を低く抑えながらカメラ顔座標以外の顔座標を検出することができ、デジタルカメラ200側での顔認識の補佐としての機能を果たすことができる。なお、画像データにカメラ顔座標が付加されていない場合(ステップS18で「NO」)には、比較的小さい(もしくは低い)閾値Tが設定される。このため、画像データの処理に必要となる顔情報、つまり座標リストに登録される顔座標を積極的に検出することができる。その結果、顔情報に基づく画像データの処理をより確実なものとする。
また、上記実施形態では、画像データにカメラ顔座標が付加されているとき、当該カメラ顔座標を登録顔座標として座標リストに加えている。したがって、画像データを補正するための顔情報の個数が増え、画像データの補正を高精度に行うことができる。
このように、本実施形態では、プリンター顔座標およびカメラ顔座標がそれぞれ本発明の「第1情報」および「第2情報」に相当し、それらのうち座標リストに登録されたプリンター顔座標やカメラ顔座標が本発明の「顔情報」に相当する。
ところで、上記第1実施形態では、画像データに付加されたカメラ顔座標についてはそのまま座標リストに顔情報として登録するとともに、顔認識処理により検出された顔画像のうち顔信頼度の高いものについては当該顔画像を含む顔領域を示すプリンター顔座標を座標リストに登録している。例えば図8に示すような検出結果が得られる場合には、7つの顔情報が座標リストに登録される。すなわち、同図(a)に示すように、デジタルカメラ200側での顔認識処理の結果、4人の顔画像が検出され、各顔画像の位置を示すカメラ顔座標(LT1c,LB1c,RT1c,RB1c)、(LT2c,LB2c,RT2c,RB2c)、(LT3c,LB3c,RT3c,RB3c)、(LT4c,LB4c,RT4c,RB4c)が画像データに付加されている。また、同図(c)に示すように、印刷装置100側での顔認識処理の結果、閾値T(カメラ顔座標が画像データに付加されているため、T=800)を超える顔信頼度を有する三人の顔画像が検出され、各顔画像の位置を示すプリンター顔座標(LT1p,LB1p,RT1p,RB1p)、(LT2p,LB2p,RT2p,RB2p)、(LT3p,LB3p,RT3p,RB3p)が求められている。この場合、3つの顔画像のうち2つの顔画像については同一であるにもかかわらず、カメラ顔座標およびプリンター顔座標が登録顔情報として座標リストに加わり、画像データの補正に用いられる。
そこで、1つの顔画像に対して1つの顔情報を用いて画像データを補正するように構成し、補正の適正化を図ることが考えられる。特に、本発明では、上記したようにカメラ顔座標が画像データに付加されている場合に閾値Tを大きな値に変更した上でプリンター顔座標を求めているため、印刷装置100側での顔画像の誤検出の可能性は低く、高い信頼度で顔情報を求めることができる。また、デジタルカメラ200で人物を撮像する際、ピント合わせを行った後で人物が動いてしまうことがあり、同図(b)に示すように撮像された顔画像(顔領域FRpに含まれる顔)がデジタルカメラ200でピント合わせした時点での顔画像(顔領域FRcに含まれる顔)からずれてしまうことがある。さらに、テンプレートのサイズを可変しながら顔画像を検出しているため、プリンター顔座標は印刷装置100における画像データの補正に適したサイズで検出される。これらの点を考慮すると、同一の顔画像についてカメラ顔座標およびプリンター顔座標が併存する場合には、プリンター顔座標を登録顔情報として座標リストに加える一方、カメラ顔座標については排除するのが望ましい。以下、この技術思想に基づく第2実施形態について、図9ないし図11を参照しながら説明する。
図9および図10は本発明にかかる画像処理装置の第2実施形態を示すフローチャートであり、同画像処理装置を装備する印刷装置で実行される画像処理および印刷動作を示すフローチャートである。また、図11は第2実施形態で用いる登録リストを示す図であり、第2実施形態では、カメラ顔登録リスト、プリンター顔登録リストおよびエンハンス顔登録リスト(第1実施形態での「座標リスト」に相当)が準備されている。この第2実施形態が第1実施形態と大きく相違する点は、カメラ顔とプリンター顔との重複率を算出し、プリンター顔と同一のカメラ顔については、そのカメラ顔を含む顔領域を示すカメラ顔座標を排除している点であり、その他の構成および動作は基本的に同一である。したがって、以下においては、相違点を中心に説明し、同一構成については同一符号を付して説明を省略する。
この第2実施形態では、第1実施形態と同様にして、CPU101は、カメラ顔座標が画像データに付加されているか否かに応じて閾値Tを設定した(ステップS19、S20)後、全カメラ顔座標をRAM103のカメラ顔登録リストに登録するとともに、カメラ顔座標の登録個数、つまりカメラ顔個数NcをRAM103に記憶する(ステップS21)。例えば4つのカメラ顔座標(LT1c,LB1c,RT1c,RB1c)、(LT2c,LB2c,RT2c,RB2c)、(LT3c,LB3c,RT3c,RB3c)、(LT4c,LB4c,RT4c,RB4c)が画像データに付加されている場合、図11(a)に示すように、それらを登録顔情報No.1、2、…の順序で記憶する。また、カメラ顔個数Ncは「4」である。なお、同図中の欄「ILフラグ」とは、顔情報の有効/無効を示すものであり、「0」は有効な顔情報であり、画像データの補正に用いられるものであることを示し、「1」は無効な顔情報であることを示している。また、カメラ顔個数Ncについては画像ファイル中のExifタグから読み出した値を設定してもよいし、登録されたカメラ顔座標をカウントするように構成してもよい。
こうして、全カメラ顔座標のカメラ顔登録リストへの登録が完了すると、CPU101は、プリンター顔の個数、つまりプリンター顔個数Npをゼロにリセットする(ステップS60)。そして、第1実施形態と同様に顔認識処理、顔信頼度算出処理および顔情報決定処理を行う(ステップS22〜S29、S30A、S31〜S36)。ただし、第2実施形態では検出したプリンター顔の顔信頼度が閾値Tを超えるとき(ステップS29で「YES」)、当該プリンター顔を含む顔領域を示すプリンター顔座標をプリンター顔登録リスト(図11(b))に登録するとともに、プリンター顔個数Npを「1」だけインクリメントする(ステップS30A)。例えば図11(b)に示すように3つのプリンター顔座標がプリンター顔登録リストに登録された場合、プリンター顔個数Npは「3」となる。
カメラ顔登録リストおよびプリンター顔登録リストへの登録処理が完了すると、CPU101は、ステップS61〜S68を実行してプリンター顔座標の全部と、プリンター顔と重複しないカメラ顔のカメラ顔座標とをエンハンス顔登録リストに登録する。すなわち、CPU101は、エンハンス顔個数Neをゼロにリセットした(ステップS61)後、カメラ顔登録リストに登録されたカメラ顔座標の各々がプリンター顔登録リストに登録されたプリンター顔座標のいずれかと一致するか否かを判別する(ステップS62〜S67)。すなわちステップS62で、CPU101は、プリンター顔個数Npがゼロよりも大きいか否かを判別する。ここで、プリンター顔登録リストにプリンター顔座標が登録されていない場合、あるいはステップS63〜S67の処理をプリンター顔登録リストに登録された全プリンター顔座標について完了した時点でプリンター顔個数Np=0となるため、これらの場合には、CPU101はステップS62で「NO」と判別し、ステップS68に進む。
一方、ステップS62で「YES」のとき、つまりカメラ顔座標で特定されるカメラ顔領域との重なり判別が実施されていないプリンター顔座標が残っている間、ステップS63〜S67の処理を繰り返して行う。このステップS63で、CPU101は、カメラ顔個数Ncがゼロよりも大きいか否かを判別する。そして、ステップS63で「YES」のとき、つまりNp番目のプリンター顔座標で特定されるプリンター顔領域との重なり判別が実施されていないカメラ顔座標が残っているときには、CPU101は、Np番目のプリンター顔座標で特定されるプリンター顔領域FRpと、各カメラ顔座標で特定されるカメラ顔領域FRcとの重複率を算出する(ステップS64)。例えば図8(b)に示すように、カメラ顔座標(LT3c,LB3c,RT3c,RB3c)で特定されるカメラ顔領域FRcと、プリンター顔座標(LT2p,LB2p,RT2p,RB2p)で特定されるプリンター顔領域FRpとの重なっている重複領域(同図(b)中のハッチング領域)ORの面積を求めるとともに、顔領域FRc(またはFRp)に対する重複領域ORの面積率を上記重複率として求める。
また、CPU101は、その他のカメラ顔領域FRcについても同様にして求めた後、重複率が40%以上となるカメラ顔領域FRcが存在する、つまりカメラ顔登録リスト中のカメラ顔のなかにNp番目のプリンター顔と重なる(あるいは一致する)ものがあるか否かを判別する(ステップS65)。また、Np番目のプリンター顔と重なるカメラ顔、つまり重複顔領域が見つかった場合のみ、CPU101は、当該カメラ顔を特定するカメラ顔座標をカメラ顔登録リストから削除するとともに、カメラ顔個数Ncを「1」だけデクリメントし(ステップS66)、ステップS67に進む。なお、Np番目のプリンター顔と重なるカメラ顔がない場合には、ステップS66を実行することなく、ステップS67に進む。
このステップS67で、CPU101はNp番目のプリンター顔座標をRAM103のエンハンス顔登録リストに登録する。このエンハンス顔登録リストは、例えば図11(c)に示すように予め10個の顔座標を記憶するためのRAM103に設定されたメモリ空間であり、上記カメラ顔登録リストおよびプリンター顔登録リストとは別個に設けられたものである。また、CPU101は、Np番目プリンター顔座標のエンハンス顔登録リストへの登録後に、プリンター顔個数Npを「1」だけデクリメントするとともに、エンハンス顔個数Neを「1」だけインクリメントし、ステップS62に戻る。
このようにステップS62〜S67の実行により、プリンター顔登録リストに登録された全プリンター顔座標はエンハンス顔登録リストに登録されるのに対し、カメラ顔登録リストに登録されていたカメラ顔座標のうちプリンター顔と重なるカメラ顔を特定するカメラ顔座標についてはRAM103から削除される。また、プリンター顔個数Npがゼロになる(ステップS62で「NO」)と、CPU101は、カメラ顔登録リストに残っている全カメラ顔座標をエンハンス顔登録リストに登録するとともに、エンハンス顔個数Neにカメラ顔個数Ncを加算してエンハンス顔個数Neを更新する(ステップS68)。
こうしてプリンター顔とカメラ顔との重複に基づいてカメラ顔座標の整理が完了すると、第1実施形態と同様に、CPU101はエンハンス顔登録リストにカメラ顔座標および/またはプリンター顔座標が登録されている否かを判別する(ステップS37)。そして、カメラ顔座標かプリンター顔座標かを問わず、顔座標が登録されている場合(ステップS37で「YES」)には、CPU101は、エンハンス顔登録リストに登録された顔座標(顔情報)に基づいて全ての顔位置を計算し、さらに顔の平均顔色を取得した(ステップS38)後、顔色が最適になるようにエンハンスパラメータを計算する(ステップS39)。一方、エンハンス顔登録リストにカメラ顔座標もプリンター顔座標も登録されていない場合(ステップS37で「NO」)、CPU101は、画像全体が最適になるようにエンハンスパラメータを計算する(ステップS40)。そして、CPU101は第1実施形態と同様にして印刷処理を実行する(ステップS41〜S49)。
以上のように、第2実施形態によれば、第1実施形態と同様の作用効果が得られるのみならず、1つの顔画像に対して1つの登録顔座標が採用されるように構成しているので、画像データの補正をさらに適正化することができる。このように、第2実施形態では、顔領域FRpおよびFRcがそれぞれ本発明の「第1顔領域」および「第2顔領域」に相当している。また、エンハンス顔登録リストに登録される登録顔座標が本発明の「顔情報」に相当する。
なお、本発明は上記した実施形態に限定されるものではなく、その趣旨を逸脱しない限りにおいて上述したもの以外に種々の変更を行うことが可能である。例えば、上記実施形態では、画像データに顔座標などを付加した画像ファイルをメモリカードMに記録し、当該メモリカードMを介して印刷装置100に供給して印刷しているが、有線または無線通信により画像ファイルが印刷装置100に供給される場合も、本発明を適用することで上記した実施形態と同様の作用効果が得られる。
また、上記実施形態では、顔領域を4点の座標で示しているが、顔領域の表現方式はこれに限定されるものではなく、例えば中心座標に大きさを組み合わせたもの、中心座標に幅および高さを組み合わせたもの等を用いることができ、これらの表現方式でカメラ顔領域やプリンター顔領域を特定した顔座標も本発明の「第1情報」、「第2情報」、「顔情報」に含まれる。
また、上記実施形態では、本発明にかかる画像処理装置および方法を印刷装置100に適用しているが、複数の電子機器から構成される印刷システムにも、また印刷装置以外の1つの電子機器(例えば複合機、ファクシミリ装置など)にも適用可能である。
また、上記実施形態にかかる画像処理方法を実行するプログラムを、CD−ROM、光ディスク、光磁気ディスク、不揮発性メモリカードなどの記憶媒体に記憶させ、この記憶媒体からプログラムをコードとして読み出し、コンピューターにおいて実行してもよい。つまり、上記プログラムを記憶した記憶媒体、コンピュータープログラム自体も本発明の一実施形態に含まれる。