次に、本発明の実施の形態を実施例に基づいて以下の順序で説明する。
A.第1実施例:
A−1.画像処理装置の構成:
A−2.画像処理:
B.第2実施例:
C.変形例:
A.第1実施例:
A−1.画像処理装置の構成:
図1は、本発明の第1実施例における画像処理装置としてのプリンタ100の構成を概略的に示す説明図である。本実施例のプリンタ100は、メモリカードMC等から取得した画像データに基づき画像を印刷する、いわゆるダイレクトプリントに対応したインクジェット式カラープリンタである。プリンタ100は、プリンタ100の各部を制御するCPU110と、ROMやRAMによって構成された内部メモリ120と、ボタンやタッチパネルにより構成された操作部140と、液晶ディスプレイにより構成された表示部150と、プリンタエンジン160と、カードインターフェース(カードI/F)170と、を備えている。プリンタ100は、さらに、他の機器(例えばデジタルスチルカメラやパーソナルコンピュータ)とのデータ通信を行うためのインターフェースを備えているとしてもよい。プリンタ100の各構成要素は、バスを介して互いに接続されている。
プリンタエンジン160は、印刷データに基づき印刷を行う印刷機構である。カードインターフェース170は、カードスロット172に挿入されたメモリカードMCとの間でデータのやり取りを行うためのインターフェースである。なお、本実施例では、メモリカードMCに画像データを含む画像ファイルが格納されている。
内部メモリ120には、画像処理部200と、表示処理部310と、印刷処理部320と、が格納されている。画像処理部200は、所定のオペレーティングシステムの下で、後述する画像処理を実行するためのコンピュータプログラムである。表示処理部310は、表示部150を制御して、表示部150上に処理メニューやメッセージ、画像等を表示させるディスプレイドライバである。印刷処理部320は、画像データから印刷データを生成し、プリンタエンジン160を制御して、印刷データに基づく画像の印刷を実行するためのコンピュータプログラムである。CPU110は、内部メモリ120から、これらのプログラムを読み出して実行することにより、これら各部の機能を実現する。
画像処理部200は、プログラムモジュールとして、領域検出部210と、処理種別設定部220と、条件設定部230と、を含んでいる。領域検出部210は、対象画像データの表す対象画像における所定の種類の被写体の画像(顔の画像および顔の器官の画像)に対応する画像領域の検出を行う。領域検出部210は、判定対象設定部211と、評価値算出部212と、判定部213と、領域設定部214と、を含んでいる。これら各部の機能については、後述の画像処理の説明において詳述する。なお、後述するように、領域検出部210は、顔の画像に対応する顔領域の検出を行うため、本発明における顔領域検出部として機能する。また、判定部213および領域設定部214は、本発明における領域設定部として機能する。
処理種別設定部220は、実行すべき画像処理の種別を設定する。処理種別設定部220は、ユーザによる実行すべき画像処理の種別の指定を取得する指定取得部222を含んでいる。条件設定部230は、後述する画像処理において検出される顔領域に表されるべき顔の角度等に関する条件を設定する。
内部メモリ120には、また、予め設定された複数の顔学習データFLDおよび複数の顔器官学習データOLDが格納されている。顔学習データFLDおよび顔器官学習データOLDは、領域検出部210による所定の画像領域の検出に用いられる。図2は、顔学習データFLDおよび顔器官学習データOLDの種類を示す説明図である。図2(a)ないし図2(h)には、顔学習データFLDおよび顔器官学習データOLDの種類と、当該種類の顔学習データFLDおよび顔器官学習データOLDを用いて検出される画像領域の例と、を示している。
顔学習データFLDの内容については後述の画像処理の説明において詳述するが、顔学習データFLDは、顔傾きと顔向きとの組み合わせに対応付けられて設定されている。ここで、顔傾きとは、画像面内(インプレーン)における顔の傾き(回転角度)を意味している。すなわち、顔傾きは、画像面に垂直な軸を中心とした顔の回転角度である。本実施例では、対象画像上の領域や被写体等の傾きを、領域や被写体等の上方向が対象画像の上方向と一致した状態を基準状態(傾き=0度)とした場合における基準状態からの時計回りの回転角度で表すものとしている。例えば、顔傾きは、対象画像の上下方向に沿って顔が位置している状態(頭頂が上方向を向き顎が下方向を向いた状態)を基準状態(顔傾き=0度)とした場合における基準状態からの顔の時計回りの回転角度で表される。
また、顔向きとは、画像面外(アウトプレーン)における顔の向き(顔の振りの角度)を意味している。ここで、顔の振りとは、略円筒状の首の軸を中心とした顔の方向である。すなわち、顔向きは、画像面に平行な軸を中心とした顔の回転角度である。本実施例では、デジタルスチルカメラ等の画像生成装置の撮像面に正対した顔の顔向きを「正面向き」と呼び、撮像面に向かって右を向いた顔(画像の観賞者からみて左を向いた顔の画像)の顔向きを「右向き」と、撮像面に向かって左を向いた顔(画像の観賞者からみて右を向いた顔の画像)の顔向きを「左向き」と呼ぶものとしている。
内部メモリ120には、図2(a)ないし図2(d)に示す4つの顔学習データFLD、すなわち、図2(a)に示す正面向きの顔向きと0度の顔傾きとの組み合わせに対応する顔学習データFLDと、図2(b)に示す正面向きの顔向きと30度の顔傾きとの組み合わせに対応する顔学習データFLDと、図2(c)に示す右向きの顔向きと0度の顔傾きとの組み合わせに対応する顔学習データFLDと、図2(d)に示す右向きの顔向きと30度の顔傾きとの組み合わせに対応する顔学習データFLDと、が格納されている。なお、正面向きの顔と右向き(または左向き)の顔とは、別の種類の被写体と解釈することも可能であり、このように解釈した場合には、顔学習データFLDは被写体の種類と被写体の傾きとの組み合わせに対応して設定されていると表現することも可能である。
後述するように、ある顔傾きに対応する顔学習データFLDは、当該顔傾きを中心に顔傾きの値がプラスマイナス15度の範囲の顔の画像を検出可能なように学習によって設定されている。また、人物の顔は実質的に左右対称である。そのため、正面向きの顔向きについては、0度の顔傾きに対応する顔学習データFLD(図2(a))と30度の顔傾きに対応する顔学習データFLD(図2(b))との2つが予め準備されれば、これら2つの顔学習データFLDを90度単位で回転させることにより、あらゆる顔傾きの顔の画像を検出可能な顔学習データFLDを得ることができる。右向きの顔向きについても同様に、0度の顔傾きに対応する顔学習データFLD(図2(c))と30度の顔傾きに対応する顔学習データFLD(図2(d))との2つが予め準備されれば、あらゆる顔傾きの顔の画像を検出可能な顔学習データFLDを得ることができる。また、左向きの顔向きについては、右向きの顔向きに対応する顔学習データFLDを反転させることにより、あらゆる顔傾きの顔の画像を検出可能な顔学習データFLDを得ることができる。
顔器官学習データOLDは、顔の器官の種類と器官傾きとの組み合わせに対応付けられて設定されている。本実施例では、顔の器官の種類として、目(右目および左目)と口とが設定されている。また、器官傾きとは、上述の顔傾きと同様に、画像面内(インプレーン)における顔の器官の傾き(回転角度)を意味している。すなわち、器官傾きは、画像面に垂直な軸を中心とした顔の器官の回転角度である。器官傾きは、顔傾きと同様に、対象画像の上下方向に沿って顔の器官が位置している状態を基準状態(器官傾き=0度)とした場合における基準状態からの顔の器官の時計回りの回転角度で表される。
内部メモリ120には、図2(e)ないし図2(h)に示す4つの顔器官学習データOLD、すなわち、図2(e)に示す目と0度の器官傾きとの組み合わせに対応する顔器官学習データOLDと、図2(f)に示す目と30度の器官傾きとの組み合わせに対応する顔器官学習データOLDと、図2(g)に示す口と0度の器官傾きとの組み合わせに対応する顔器官学習データOLDと、図2(h)に示す口と30度の器官傾きとの組み合わせに対応する顔器官学習データOLDと、が格納されている。目と口とは別の種類の被写体であるため、顔器官学習データOLDは被写体の種類と被写体の傾きとの組み合わせに対応して設定されていると表現できる。
顔学習データFLDと同様に、ある器官傾きに対応する顔器官学習データOLDは、当該器官傾きを中心に器官傾きの値がプラスマイナス15度の範囲の器官の画像を検出可能なように学習によって設定されている。また、人物の目や口は実質的に左右対称である。そのため、目については、0度の器官傾きに対応する顔器官学習データOLD(図2(e))と30度の器官傾きに対応する顔器官学習データOLD(図2(f))との2つが予め準備されれば、これら2つの顔器官学習データOLDを90度単位で回転させることにより、あらゆる器官傾きの目の画像を検出可能な顔器官学習データOLDを得ることができる。口についても同様に、0度の器官傾きに対応する顔器官学習データOLD(図2(g))と30度の器官傾きに対応する顔器官学習データOLDであることを(図2(h))との2つが予め準備されれば、あらゆる器官傾きの口の画像を検出可能な顔器官学習データOLDを得ることができる。なお、本実施例では、右目と左目とは同じ種類の被写体であるとし、右目の画像に対応する右目領域と左目の画像に対応する左目領域とを共通の顔器官学習データOLDを用いて検出するものとしているが、右目と左目とは異なる種類の被写体であるとして、右目領域検出用と左目領域検出用とにそれぞれ専用の顔器官学習データOLDを準備するものとしてもよい。
内部メモリ120(図1)には、さらに、予め設定された条件テーブルCTが格納されている。条件テーブルCTは、実行される画像処理の種別と、検出される顔領域に表されるべき顔の角度等に関する条件と、を対応付ける情報を含んでいる。条件テーブルCTの内容については後に詳述する。
A−2.画像処理:
図3は、第1実施例における画像処理の流れを示すフローチャートである。本実施例における画像処理は、実行すべき画像処理の種別を設定し、設定された種別の画像処理を実行する処理である。
画像処理のステップS110(図3)では、処理種別設定部220(図1)が、実行すべき画像処理の種別を設定する。具体的には、処理種別設定部220は、表示処理部310(図1)を制御して表示部150上に画像処理種別設定のためのユーザインタフェースを表示させる。図4は、画像処理種別設定のためのユーザインタフェースの一例を示す説明図である。図4に示すように、本実施例のプリンタ100は、画像処理種別として、肌色補正と顔変形と赤目補正と笑顔検出と証明写真検出との5つの種別を有している。
肌色補正は、人物の肌の色を好ましい肌色に補正する画像処理である。顔変形は、顔領域内の画像または顔領域に基づき設定される顔の画像を含む画像領域内の画像を変形する画像処理である。赤目補正は、赤目現象が発生した目の画像の色を自然な目の色に補正する画像処理である。笑顔検出は、人物の笑顔の画像を検出する画像処理である。証明写真検出は、証明写真に適する画像を検出する画像処理である。
ユーザが操作部140を介して画像処理の種別の1つを選択指定すると、指定取得部222(図1)は、選択指定された画像処理の種別を特定する情報(以下「画像処理種別特定情報」とも呼ぶ)を取得し、処理種別設定部220は、画像処理種別特定情報により特定される画像処理の種別を実行すべき画像処理の種別として設定する。なお、本実施例における画像処理の種別は、すべて、後述の顔領域検出処理(図3のステップS140)により検出される顔領域(または顔領域に基づき設定される画像領域)を対象として所定の処理が実行されるものである。そのため、設定された画像処理の種別は、顔領域検出結果の用途であると表現でき、画像処理種別特定情報は、顔領域検出結果の用途を特定する用途特定情報であると表現できる。従って、画像処理種別特定情報を取得する指定取得部222は、本発明における用途特定情報取得部として機能するといえる。
ステップS120(図3)では、条件設定部230(図1)が、画像処理種別特定情報と条件テーブルCT(図1)とに基づき、後述の顔領域検出処理において検出される顔領域に表されるべき顔の角度等に関する条件を設定し、設定された条件に基づき、使用する学習データと使用するウィンドウサイズとを設定する。
図5は、条件テーブルCTの内容の一例を示す説明図である。図5に示すように、条件テーブルCTは、画像処理の種別毎に、検出サイズと検出傾きと検出向きと検出器官とを規定している。
条件テーブルCT(図5)に規定された検出傾きは、顔領域検出処理(図3のステップS140)の対象となる画像(後述の顔検出用画像FDImg(図8参照))において顔領域として検出すべき画像領域に表されるべき顔の傾きである。図5に示すように、肌色補正と顔変形と赤目補正と笑顔検出とについては、検出傾きが規定されていない。これは、あらゆる傾きの顔を表す画像領域を顔領域として検出すべきであることを意味している。そのため、実行すべき画像処理の種別が肌色補正と顔変形と赤目補正と笑顔検出との内の1つである場合には、条件設定部230(図1)は、検出傾きとして、すべての顔傾きを設定する。
一方、証明写真検出については、図5に示すように、検出傾きは、90度および270度を中心としたプラスマイナス15度の範囲(すなわち75度から105度までおよび255度から285度まで)であると規定されている。このように規定されているのは、一般に証明写真は縦長画像であって、顔の画像の上下方向が証明写真全体の上下方向にほぼ平行であると考えられるからである。そのため、実行すべき画像処理の種別が証明写真検出である場合には、条件設定部230(図1)は、検出傾きとして、90度および270度を中心としたプラスマイナス15度の範囲の傾きを設定する。
条件テーブルCT(図5)に規定された検出向きは、顔領域検出処理の対象となる画像(顔検出用画像FDImg)において顔領域として検出すべき画像領域に表されるべき顔の向きである。図5に示すように、肌色補正および赤目補正については、検出向きは、正面向き、右向き、左向きのすべてであると規定されている。このように規定されているのは、肌色補正および赤目補正は、顔の向きに関わらず処理可能であるからである。そのため、実行すべき画像処理の種別が肌色補正および赤目補正の内の1つである場合には、条件設定部230(図1)は、検出向きとして、すべての顔向きを設定する。
一方、顔変形と笑顔検出と証明写真検出とについては、図5に示すように、検出向きは、正面向きのみであると規定されている。このように規定されているのは、顔変形については、正面向き以外の向き(すなわち右向きや左向き)の顔を対象として顔変形処理を実行すると処理結果が不自然なものとなるおそれがあるからであり、笑顔検出および証明写真検出顔変形については、検出対象として正面向きの顔が想定されているからである。そのため、実行すべき画像処理の種別が顔変形と笑顔検出と証明写真検出との内の1つである場合には、条件設定部230(図1)は、検出向きとして、正面向きを設定する。
条件設定部230(図1)は、条件テーブルCT(図5)に規定された検出傾きおよび検出向きの組み合わせに基づき、顔領域検出処理において使用する顔学習データFLDを設定する。すなわち、条件設定部230は、設定された実行すべき画像処理の種別に応じて、条件テーブルCTに規定された検出傾きおよび検出向きを有する顔の画像に対応する顔領域が検出されるよう、当該検出傾きおよび検出向きに対応する顔学習データFLDを使用する顔学習データFLDとして設定する。具体的には、実行すべき画像処理の種別が肌色補正および赤目補正である場合には、すべての顔傾き(詳細には後述する特定顔傾き、以下同じ)とすべての顔向き(詳細には後述する特定顔向き、以下同じ)との組み合わせに対応付けられた顔学習データFLDが、使用する学習データとして設定される。実行すべき画像処理の種別が顔変形および笑顔検出である場合には、すべての顔傾きと正面向きの顔向きとの組み合わせに対応付けられた顔学習データFLDが、使用する学習データとして設定される。実行すべき画像処理の種別が証明写真検出である場合には、90度および270度の顔傾きと正面向きの顔向きとの組み合わせに対応付けられた顔学習データFLDが、使用する学習データとして設定される。
条件テーブルCT(図5)に規定された検出器官は、後述の器官領域検出処理(図3のステップS180)において検出すべき顔の器官の種類である。図5に示すように、肌色補正については、検出器官が規定されていない。これは、器官領域検出処理の実行が不要であることを意味する。肌色補正について検出器官が規定されていないのは、肌色補正の実行の際には、顔の器官の位置が参照されることはなく、また、顔領域の位置や傾き等に関する精度が求められることもないからである。顔変形および証明写真検出については、検出器官は目および口であると規定されている。このように規定されているのは、顔変形については、検出された器官領域(目領域および口領域)に基づき顔領域を調整して顔領域の精度を向上させることにより顔変形処理結果をより自然なものとするためであり、証明写真検出については、検出された器官領域に基づき顔領域を調整することにより検出精度を向上させるためである。赤目補正については、赤目の画像を検出するために、検出器官は目であると規定されている。笑顔検出については、口の画像に基づき笑顔判定を行うために、検出器官は口であると規定されている。
条件設定部230(図1)は、条件テーブルCT(図5)に規定された検出器官を、器官領域検出処理において検出すべき顔の器官の種類として設定する。また、条件設定部230は、条件テーブルCTに規定された検出器官に基づき、器官領域検出処理において使用する顔器官学習データOLDを設定する。すなわち、条件設定部230は、設定された実行すべき画像処理の種別に応じて、条件テーブルCTに規定された検出器官に対応する器官領域が検出されるよう、当該検出器官に対応する顔器官学習データOLDを使用する顔器官学習データOLDとして設定する。具体的には、実行すべき画像処理の種別が顔変形および証明写真検出である場合には、目に対応する顔器官学習データOLDと口に対応する顔器官学習データOLDとが、使用する学習データとして設定される。実行すべき画像処理の種別が赤目補正である場合には、目に対応する顔器官学習データOLDが、使用する学習データとして設定される。実行すべき画像処理の種別が笑顔検出である場合には、口に対応する顔器官学習データOLDが、使用する学習データとして設定される。
条件テーブルCT(図5)に規定された検出サイズは、顔領域検出処理(図3のステップS140)の対象となる画像(顔検出用画像FDImg)において顔領域として検出すべき画像領域のサイズである。条件テーブルCTには、顔検出用画像FDImgのサイズが横320画素×縦240画素である場合の検出サイズが示されている。なお、本実施例では、顔領域は正方形形状の画像領域として検出されるものとされており、検出サイズは、顔領域の1辺の長さが画素数を単位として規定されている。
図5に示すように、肌色補正および赤目補正については、検出サイズは20画素から240画素までであると規定されている。この検出サイズの範囲は、本実施例において検出可能な顔領域のサイズの範囲全体である。顔変形については、検出サイズは60画素から180画素までであると規定されており、比較的小さいサイズ(20画素から60画素まで)および比較的大きいサイズ(180画素から240画素まで)が検出サイズから除外されている。このように規定されているのは、顔検出用画像FDImgのサイズに対して過小なサイズの顔領域および過大なサイズの顔領域に基づき顔変形処理が行われることにより処理結果が不自然なものとなることを防止するためである。笑顔検出については、検出サイズは60画素から240画素までであると規定されており、比較的小さいサイズ(20画素から60画素まで)が検出サイズから除外されている。このように規定されているのは、顔検出用画像FDImgのサイズに対して過小なサイズの顔領域に基づき笑顔判定が行われることによる検出精度の低下を防止するためである。証明写真検出については、検出サイズは180画素から240画素までであると規定されており、比較的大きいサイズのみに限定されている。このように規定されているのは、一般に、証明写真においては画像全体の大きさに対する顔の画像の大きさの比が大きいと考えられるからである。
条件設定部230(図1)は、条件テーブルCT(図5)において規定された検出サイズを、顔領域検出処理において顔領域として検出すべき画像領域のサイズとして設定する。また、条件設定部230は、条件テーブルCTに規定された検出サイズに従った顔領域の検出が実行されるように、使用ウィンドウサイズを設定する。本実施例では、後述するように、顔領域検出処理において、顔検出用画像FDImg上に正方形形状のウィンドウSWがそのサイズおよび位置が変更されつつ配置され、配置されたウィンドウSWにより規定される顔検出用画像FDImg上の画像領域である判定対象画像領域JIAが顔の画像に対応する画像領域であるか否かを判定することにより、顔領域の検出が行われる(図8参照)。使用ウィンドウサイズは、顔領域検出処理において使用されるウィンドウSWのサイズの範囲(すなわち判定対象画像領域JIAのサイズとして取りうる値の範囲)である。
図6は、使用ウィンドウサイズの設定方法の一例を示す説明図である。条件設定部230(図1)は、図6(a)に示す予め設定された15個のウィンドウSWの標準サイズを有している。すなわち、ウィンドウSWの標準サイズ(1辺の長さ)は、20画素(最小サイズ)、24画素、29画素、35画素、41画素、50画素、60画素、72画素、86画素、103画素、124画素、149画素、180画素、213画素、240画素(最大サイズ)の合計15個のサイズである。図6(b)には、顔検出用画像FDImg上に配置された最小サイズのウィンドウSW(SWs(20))と最大サイズのウィンドウSW(SWs(240))とを示している。
条件設定部230は、設定された実行すべき画像処理の種別に応じて、15個のウィンドウSWの標準サイズの内、条件テーブルCT(図5)に規定された検出サイズの範囲内に含まれる標準サイズを、使用ウィンドウサイズとして設定する。肌色補正および赤目補正については、検出サイズが20画素から240画素までと規定されているため、ウィンドウSWの15個の標準サイズのすべてが使用ウィンドウサイズとして設定される。
顔変形については、図6(c)に示すように、検出サイズが60画素から180画素までと規定されているため、使用ウィンドウサイズは、検出サイズ内に含まれる標準サイズである60画素、72画素、86画素、103画素、124画素、149画素、180画素の7個のサイズとなる。笑顔検出については、図6(d)に示すように、検出サイズが60画素から240画素までと規定されているため、使用ウィンドウサイズは、検出サイズ内に含まれる標準サイズである60画素、72画素、86画素、103画素、124画素、149画素、180画素、213画素、240画素の9個のサイズとなる。証明写真検出については、図6(e)に示すように、検出サイズが180画素から240画素までと規定されているため、使用ウィンドウサイズは、検出サイズ内に含まれる標準サイズである180画素、213画素、240画素の3個のサイズとなる。
画像処理(図3)のステップS130では、画像処理部200(図1)が、画像処理の対象となる画像を表す画像データを取得する。本実施例のプリンタ100では、カードスロット172に挿入されたメモリカードMCに格納された画像ファイルのサムネイル画像が表示部150に表示される。ユーザは、表示されたサムネイル画像を参照しつつ、操作部140を介して処理の対象となる1つまたは複数の画像を選択する。画像処理部200は、選択された1つまたは複数の画像に対応する画像データを含む画像ファイルをメモリカードMCより取得して内部メモリ120の所定の領域に格納する。なお、取得された画像データを原画像データと呼び、原画像データの表す画像を原画像OImgと呼ぶものとする。
ステップS140(図3)では、領域検出部210(図1)が、顔領域検出処理を行う。顔領域検出処理は、顔の画像に対応する画像領域を顔領域FAとして検出する処理である。顔領域検出処理の際には、ステップS120で設定された使用学習データおよび使用ウィンドウサイズが採用される。図7は、顔領域検出処理の流れを示すフローチャートである。また、図8は、顔領域検出処理の概要を示す説明図である。図8の最上段には原画像OImgの一例を示している。
顔領域検出処理(図7)におけるステップS310では、領域検出部210(図1)が、原画像OImgを表す原画像データから顔検出用画像FDImgを表す顔検出用画像データを生成する。本実施例では、図8に示すように、顔検出用画像FDImgは横320画素×縦240画素のサイズの画像である。領域検出部210は、必要により原画像データの解像度変換を行うことにより、顔検出用画像FDImgを表す顔検出用画像データを生成する。
ステップS320(図7)では、判定対象設定部211(図1)が、判定対象画像領域JIA(後述)の設定に用いるウィンドウSWのサイズを初期値に設定する。ステップS330では、判定対象設定部211が、ウィンドウSWを顔検出用画像FDImg上の初期位置に配置する。ステップS340では、判定対象設定部211が、顔検出用画像FDImg上に配置されたウィンドウSWにより規定される画像領域を、顔の画像に対応する画像領域であるか否かの判定(以下「顔判定」とも呼ぶ)の対象となる判定対象画像領域JIAに設定する。図8の中段には、顔検出用画像FDImg上に初期値のサイズのウィンドウSWが初期位置に配置され、ウィンドウSWにより規定される画像領域が判定対象画像領域JIAに設定される様子を示している。本実施例では、後述するように、正方形形状のウィンドウSWのサイズおよび位置が変更されつつ判定対象画像領域JIAの設定が順に行われるが、ウィンドウSWのサイズの初期値はステップS120(図3)で設定された使用ウィンドウサイズの内の最大サイズであり、ウィンドウSWの初期位置はウィンドウSWの左上の頂点が顔検出用画像FDImgの左上の頂点に重なるような位置である。例えば、実行すべき画像処理の種別が肌色補正である場合には、ウィンドウSWのサイズの初期値は240画素であり(図6(a)参照)、実行すべき画像処理の種別が顔変形である場合には、ウィンドウSWのサイズの初期値は180画素である(図6(c)参照)。また、ウィンドウSWは、その傾きが0度の状態で配置される。なお、上述したように、ウィンドウSWの傾きとは、ウィンドウSWの上方向が対象画像(顔検出用画像FDImg)の上方向と一致した状態を基準状態(傾き=0度)とした場合における基準状態からの時計回りの回転角度を意味している。
ステップS350(図7)では、評価値算出部212(図1)が、判定対象画像領域JIAについて、判定対象画像領域JIAに対応する画像データ基づき、顔判定に用いる累計評価値Tvを算出する。なお、本実施例では、顔判定は、ステップS120(図3)で設定された使用学習データを用いて、予め設定された特定顔傾きと特定顔向きとの組み合わせの内の、実行すべき画像処理の種別に対応する組み合わせ毎に実行される。すなわち、実行すべき画像処理の種別に対応する組み合わせ毎に、判定対象画像領域JIAが当該特定顔傾きと特定顔向きとを有する顔の画像に対応する画像領域であるか否かの判定が行われる。そのため、累計評価値Tvも、実行すべき画像処理の種別に対応する特定顔傾きと特定顔向きとの組み合わせ毎に算出される。ここで、特定顔傾きとは、所定の顔傾きであり、本実施例では、基準顔傾き(顔傾き=0度)と基準顔傾きから顔傾きを30度ずつ増加させた顔傾きとの計12個の顔傾き(0度、30度、60度、・・・、330度)が、特定顔傾きとして設定されている。また、特定顔向きとは、所定の顔向きであり、本実施例では、正面向きと右向きと左向きとの計3個の顔向きが特定顔向きとして設定されている。
図9は、顔判定に用いる累計評価値Tvの算出方法の概要を示す説明図である。本実施例では、累計評価値Tvの算出にN個のフィルタ(フィルタ1〜フィルタN)が用いられる。各フィルタの外形はウィンドウSWと同じアスペクト比を有しており(すなわち正方形形状であり)、各フィルタにはプラス領域paとマイナス領域maとが設定されている。評価値算出部212は、判定対象画像領域JIAにフィルタX(X=1,2,・・・,N)を順に適用して評価値vX(すなわちv1〜vN)を算出する。具体的には、評価値vXは、フィルタXのプラス領域paに対応する判定対象画像領域JIA上の領域内に位置する画素の輝度値の合計から、マイナス領域maに対応する判定対象画像領域JIA上の領域内に位置する画素の輝度値の合計を差し引いた値である。
算出された評価値vXは、各評価値vXに対応して設定された閾値thX(すなわちth1〜thN)と比較される。本実施例では、評価値vXが閾値thX以上である場合には、フィルタXに関しては判定対象画像領域JIAが顔の画像に対応する画像領域であると判定され、フィルタXの出力値として値「1」が設定される。一方、評価値vXが閾値thXより小さい場合には、フィルタXに関しては判定対象画像領域JIAが顔の画像に対応する画像領域ではないと判定され、フィルタXの出力値として値「0」が設定される。各フィルタXには重み係数WeX(すなわちWe1〜WeN)が設定されており、すべてのフィルタについての出力値と重み係数WeXとの積の合計が、累計評価値Tvとして算出される。
なお、顔判定に用いられるフィルタXの態様や閾値thX、重み係数WeX、後述の閾値THは、顔学習データFLDに規定されている。すなわち、例えば、正面向きの顔向きと0度の顔傾きとの組み合わせに対応する累計評価値Tvの算出や顔判定には、正面向きの顔向きと0度の顔傾きとの組み合わせに対応する顔学習データFLD(図2(a)参照)に規定されたフィルタXの態様、閾値thX、重み係数WeX、閾値THが用いられる。同様に、正面向きの顔向きと30度の顔傾きとの組み合わせに対応する累計評価値Tvの算出や顔判定には、正面向きの顔向きと30度の顔傾きとの組み合わせに対応する顔学習データFLD(図2(b)参照)が用いられる。また、正面向きの顔向きと他の特定顔傾きとの組み合わせに対応する累計評価値Tvの算出や顔判定の際には、正面向きの顔向きと0度の顔傾きとの組み合わせに対応する顔学習データFLD(図2(a))と正面向きの顔向きと30度の顔傾きとの組み合わせに対応する顔学習データFLD(図2(b))とに基づき、正面向きの顔向きと当該他の特定顔傾きとの組み合わせに対応する顔学習データFLDが評価値算出部212により生成され、使用される。右向きや左向きの顔向きについても同様に、内部メモリ120に予め格納された顔学習データFLDに基づき必要な顔学習データFLDが生成され、使用される。なお、本実施例における顔学習データFLDは、判定対象画像領域JIAが顔の画像に対応する画像領域であることの確からしさを表す評価値を算出するためのデータであるため、本発明における評価用データに相当する。顔学習データFLDは、検出傾きおよび検出向き(図5参照)として設定され得る値に応じて予め設定されている。
なお、顔学習データFLDは、サンプル画像を用いた学習によって設定される。図10は、正面向きの顔に対応する顔学習データFLDの設定のための学習に用いられるサンプル画像の一例を示す説明図である。学習には、正面向きの顔に対応する画像であることが予めわかっている複数の顔サンプル画像によって構成された顔サンプル画像群と、正面向きの顔に対応する画像ではないことが予めわかっている複数の非顔サンプル画像によって構成された非顔サンプル画像群と、が用いられる。
学習による正面向きの顔に対応する顔学習データFLDの設定は特定顔傾き毎に実行されるため、図10に示すように、顔サンプル画像群は、12個の特定顔傾きのそれぞれに対応するものが準備される。例えば0度の特定顔傾きについての顔学習データFLDの設定は、0度の特定顔傾きに対応する顔サンプル画像群と非顔サンプル画像群とを用いて実行され、30度の特定顔傾きについての顔学習データFLDの設定は、30度の特定顔傾きに対応する顔サンプル画像群と非顔サンプル画像群とを用いて実行される。
各特定顔傾きに対応する顔サンプル画像群は、画像サイズに対する顔の画像の大きさの比が所定の値の範囲内であると共に顔の画像の傾きが特定顔傾きに等しい複数の顔サンプル画像(以下「基本顔サンプル画像FIo」とも呼ぶ)を含む。また、顔サンプル画像群は、少なくとも1つの基本顔サンプル画像FIoについて、基本顔サンプル画像FIoを1.2倍から0.8倍までの範囲の所定の倍率で拡大および縮小した画像(例えば図10における画像FIaおよびFIb)や、基本顔サンプル画像FIoの顔傾きをプラスマイナス15度の範囲で変化させた画像(例えば図10における画像FIcおよびFId)をも含む。
サンプル画像を用いた学習は、例えばニューラルネットワークを用いた方法や、ブースティング(例えばアダブースティング)を用いた方法、サポートベクターマシーンを用いた方法等により実行される。例えば学習がニューラルネットワークを用いた方法により実行される場合には、各フィルタX(すなわちフィルタ1〜フィルタN、図9参照)について、ある特定顔傾きに対応する顔サンプル画像群と非顔サンプル画像群とに含まれるすべてのサンプル画像を用いて評価値vX(すなわちv1〜vN)が算出され、所定の顔検出率を達成する閾値thX(すなわちth1〜thN)が設定される。ここで、顔検出率とは、顔サンプル画像群を構成する顔サンプル画像の総数に対する、評価値vXによる閾値判定によって顔の画像に対応する画像であると判定される顔サンプル画像の数の割合を意味している。
次に、各フィルタXに設定された重み係数WeX(すなわちWe1〜WeN)が初期値に設定され、顔サンプル画像群および非顔サンプル画像群の中から選択された1つのサンプル画像についての累計評価値Tvが算出される。後述するように、顔判定においては、ある画像について算出された累計評価値Tvが所定の閾値TH以上の場合には、当該画像は顔の画像に対応する画像であると判定される。学習においては、選択されたサンプル画像(顔サンプル画像または非顔サンプル画像)について算出された累計評価値Tvによる閾値判定結果の正誤に基づき、各フィルタXに設定された重み係数WeXの値が修正される。以降、サンプル画像の選択と、選択されたサンプル画像について算出された累計評価値Tvによる閾値判定、および判定結果の正誤に基づく重み係数WeXの値の修正が、顔サンプル画像群および非顔サンプル画像群に含まれるすべてのサンプル画像について繰り返し実行される。このような処理によって、正面向きの顔向きと特定顔傾きとの組み合わせに対応する顔学習データFLDが設定される。
なお、他の特定顔向き(右向きおよび左向き)に対応する顔学習データFLDも同様に、右向き(または左向き)の顔に対応する画像であることが予めわかっている複数の顔サンプル画像によって構成された顔サンプル画像群と、右向き(または左向き)の顔に対応する画像ではないことが予めわかっている複数の非顔サンプル画像によって構成された非顔サンプル画像群とを用いた学習によって設定される。
上述したように、実行すべき画像処理の種別が肌色補正および赤目補正である場合には、すべての特定顔傾きとすべての特定顔向きとの組み合わせに対応付けられた顔学習データFLDが、使用する学習データとして設定されるため、当該顔学習データFLDを使用した累計評価値Tvの算出が実行される。同様に、実行すべき画像処理の種別が顔変形および笑顔検出である場合には、すべての特定顔傾きと正面向きの特定顔向きとの組み合わせに対応付けられた顔学習データFLDを使用した累計評価値Tvの算出が実行され、実行すべき画像処理の種別が証明写真検出である場合には、90度および270度の特定顔傾きと正面向きの特定顔向きとの組み合わせに対応付けられた顔学習データFLDを使用した累計評価値Tvの算出が実行される。
判定対象画像領域JIAについて特定顔傾きと特定顔向きとの組み合わせ毎に累計評価値Tvが算出されると(図7のステップS350)、判定部213(図1)は、累計評価値Tvを特定顔傾きと特定顔向きとの組み合わせ毎に設定された閾値THと比較する(ステップS360)。ある特定顔傾きと特定顔向きとの組み合わせについて累計評価値Tvが閾値TH以上である場合には、領域検出部210が、判定対象画像領域JIAは当該特定顔傾きと当該特定顔向きとを有する顔の画像に対応する画像領域であるとして、判定対象画像領域JIAの位置、すなわち現在設定されているウィンドウSWの座標と、当該特定顔傾きおよび当該特定顔向きと、を記憶する(ステップS370)。一方、いずれの特定顔傾きと特定顔向きとの組み合わせについても累計評価値Tvが閾値THより小さい場合には、ステップS370の処理はスキップされる。
ステップS380(図7)では、領域検出部210(図1)が、現在設定されているサイズのウィンドウSWにより顔検出用画像FDImg全体がスキャンされたか否かを判定する。未だ顔検出用画像FDImg全体がスキャンされていないと判定された場合には、判定対象設定部211(図1)が、ウィンドウSWを所定の方向に所定の移動量だけ移動する(ステップS390)。図8の下段には、ウィンドウSWが移動した様子を示している。本実施例では、ステップS390において、ウィンドウSWがウィンドウSWの水平方向の大きさの2割分の移動量で右方向に移動するものとしている。また、ウィンドウSWがさらに右方向には移動できない位置に配置されている場合には、ステップS390において、ウィンドウSWが顔検出用画像FDImgの左端まで戻ると共に、ウィンドウSWの垂直方向の大きさの2割分の移動量で下方向に移動するものとしている。ウィンドウSWがさらに下方向には移動できない位置に配置されている場合には、顔検出用画像FDImg全体がスキャンされたこととなる。ウィンドウSWの移動(ステップS390)の後には、移動後のウィンドウSWについて、上述のステップS340以降の処理が実行される。
ステップS380(図7)において現在設定されているサイズのウィンドウSWにより顔検出用画像FDImg全体がスキャンされたと判定された場合には、ステップS120(図3)で設定された使用ウィンドウサイズがすべて使用されたか否かが判定される(ステップS400)。未だ使用されていない使用ウィンドウサイズがあると判定された場合には、判定対象設定部211(図1)が、ウィンドウSWのサイズを、使用ウィンドウサイズの内の現在設定されているサイズの次に小さいサイズに変更する(ステップS410)。すなわち、ウィンドウSWのサイズは、最初に使用ウィンドウサイズの内の最大サイズに設定され、その後、順に小さいサイズに変更されていく。ウィンドウSWのサイズの変更(ステップS410)の後には、変更後のサイズのウィンドウSWについて、上述のステップS330以降の処理が実行される。
ステップS400(図7)において、ステップS120で設定された使用ウィンドウサイズがすべて使用されたと判定された場合には、領域設定部214(図1)が、顔領域設定処理を実行する(ステップS420)。図11および図12は、顔領域設定処理の概要を示す説明図である。領域設定部214は、図7のステップS360において累計評価値Tvが閾値TH以上であると判定され、ステップS370において記憶されたウィンドウSWの座標(すなわちウィンドウSWの位置およびサイズ)と特定顔傾きとに基づき、顔の画像に対応する画像領域としての顔領域FAを設定する。具体的には、記憶された特定顔傾きが0度である場合には、ウィンドウSWにより規定される画像領域(すなわち判定対象画像領域JIA)が、そのまま顔領域FAとして設定される。一方、記憶された特定顔傾きが0度以外である場合には、ウィンドウSWの傾きを特定顔傾きに一致させ(すなわちウィンドウSWを所定の点(例えばウィンドウSWの重心)を中心として特定顔傾き分だけ時計回りに回転させ)、傾きを変化させた後のウィンドウSWにより規定される画像領域が顔領域FAとして設定される。例えば図11(a)に示すように、30度の特定顔傾きについて累計評価値Tvが閾値TH以上であると判定された場合には、図11(b)に示すように、ウィンドウSWの傾きを30度に変化させ、傾き変化後のウィンドウSWにより規定される画像領域が顔領域FAとして設定される。
また、領域設定部214(図1)は、ステップS370(図7)においてある特定顔傾きについて互いに一部が重複する複数のウィンドウSWが記憶された場合には、各ウィンドウSWにおける所定の点(例えばウィンドウSWの重心)の座標の平均の座標を重心とし、各ウィンドウSWのサイズの平均のサイズを有する1つの新たなウィンドウ(以下「平均ウィンドウAW」とも呼ぶ)を設定する。例えば図12(a)に示すように、互いに一部が重複する4つのウィンドウSW(SW1〜SW4)が記憶された場合には、図12(b)に示すように、4つのウィンドウSWのそれぞれの重心の座標の平均の座標を重心とし、4つのウィンドウSWのそれぞれのサイズの平均のサイズを有する1つの平均ウィンドウAWが定義される。このとき、上述したのと同様に、記憶された特定顔傾きが0度である場合には、平均ウィンドウAWにより規定される画像領域がそのまま顔領域FAとして設定される。一方、記憶された特定顔傾きが0度以外である場合には、平均ウィンドウAWの傾きを特定顔傾きに一致させ(すなわち平均ウィンドウAWを所定の点(例えば平均ウィンドウAWの重心)を中心として特定顔傾き分だけ時計回りに回転させ)、傾きを変化させた後の平均ウィンドウAWにより規定される画像領域が顔領域FAとして設定される(図12(c)参照)。
なお、図11に示したように、他のウィンドウSWと重複しない1つのウィンドウSWが記憶された場合にも、図12に示した互いに一部が重複する複数のウィンドウSWが記憶された場合と同様に、1つのウィンドウSW自身が平均ウィンドウAWであると解釈することも可能である。
本実施例では、学習の際に用いられる顔サンプル画像群(図10参照)に、基本顔サンプル画像FIoを1.2倍から0.8倍までの範囲の所定の倍率で拡大および縮小した画像(例えば図10における画像FIaおよびFIb)が含まれているため、ウィンドウSWの大きさに対する顔の画像の大きさが基本顔サンプル画像FIoと比べてわずかに大きかったり小さかったりする場合にも、顔領域FAが検出されうる。従って、本実施例では、ウィンドウSWの標準サイズとして上述した15個の離散的なサイズのみが設定されているが、設定された検出サイズ(図5参照)の範囲内のあらゆる大きさの顔の画像について顔領域FAが検出されうる。同様に、本実施例では、学習の際に用いられる顔サンプル画像群に、基本顔サンプル画像FIoの顔傾きをプラスマイナス15度の範囲で変化させた画像(例えば図10における画像FIcおよびFId)が含まれているため、ウィンドウSWに対する顔の画像の傾きが基本顔サンプル画像FIoとはわずかに異なっている場合にも、顔領域FAが検出されうる。従って、本実施例では、特定顔傾きとして上述した12個の離散的な傾き値のみが設定されているが、設定された検出傾き(図5参照)の範囲内のあらゆる傾きの顔の画像について顔領域FAが検出されうる。
顔領域検出処理(図3のステップS140)において、顔領域FAが検出されなかった場合には(ステップS150:No)、画像処理は終了する。一方、少なくとも1つの顔領域FAが検出された場合には(ステップS150:Yes)、画像処理部200(図1)が、器官領域検出処理の実行要否を判定する(ステップS160)。ステップS110で設定された実行すべき画像処理の種別が肌色補正である場合には、条件テーブルCT(図5)に検出器官が規定されていないため、器官領域検出処理の実行は不要であると判定される(ステップS160:NO)。この場合には、器官領域検出処理(ステップS180)はスキップされ、処理はステップS200に進む。
一方、ステップS110で設定された実行すべき画像処理の種別が肌色補正以外である場合には、条件テーブルCT(図5)に何らかの検出器官が規定されているため、器官領域検出処理の実行は必要であると判定される(ステップS160:Yes)。この場合には、処理はステップS170に進み、領域検出部210(図1)が、検出された顔領域FAの1つを選択する。
ステップS180(図3)では、領域検出部210(図1)が、器官領域検出処理を行う。器官領域検出処理は、選択された顔領域FAにおける顔の器官の画像に対応する画像領域を器官領域として検出する処理である。領域検出部210は、ステップS110で設定された実行すべき画像処理の種別に応じて、条件テーブルCTにより画像処理の種別に対応付けられた検出器官に対応する器官の検出を行う。例えば、実行すべき画像処理の種別が赤目補正である場合には、領域検出部210は、右目の画像に対応する右目領域EA(r)と左目の画像に対応する左目領域EA(l)との検出を行う。また、実行すべき画像処理の種別が笑顔検出である場合には、領域検出部210は、口の画像に対応する口領域MAの検出を行う。
図13は、器官領域検出処理の流れを示すフローチャートである。また、図14は、器官領域検出処理の概要を示す説明図である。図14の最上段には、顔領域検出処理により検出された顔検出用画像FDImg上の顔領域FAの例を示している。
器官領域検出処理(図13)におけるステップS510では、領域検出部210(図1)が、顔検出用画像FDImgを表す顔検出用画像データから器官検出用画像ODImgを表す器官検出用画像データを生成する。本実施例では、図14に示すように、器官検出用画像ODImgは、顔検出用画像FDImgにおける顔領域FAに対応した画像であって、横60画素×縦60画素のサイズの画像である。領域検出部210は、必要により顔検出用画像データのトリミング、アフィン変換、解像度変換を行うことにより、器官検出用画像ODImgを表す器官検出用画像データを生成する。
器官検出用画像ODImgからの器官領域の検出は、上述した顔検出用画像FDImgからの顔領域FAの検出と同様に行われる。すなわち、図14に示すように、矩形形状のウィンドウSWがそのサイズおよび位置が変更されつつ器官検出用画像ODImg上に配置され(図13のステップS520,S530,S580〜S610)、配置されたウィンドウSWにより規定される画像領域が顔の器官の画像に対応する器官領域であるか否かの判定(以下「器官判定」とも呼ぶ)の対象となる判定対象画像領域JIAとして設定される(図13のステップS540)。設定された判定対象画像領域JIAについて、顔器官学習データOLD(図1)を用いて、検出器官毎に、器官判定に用いられる累計評価値Tvが算出される(図13のステップS550)。顔器官学習データOLDは、累計評価値Tvの算出や器官判定に用いられるフィルタXの態様や閾値thX、重み係数WeX、閾値TH(図9参照)を規定する。なお、顔器官学習データOLDの設定のための学習は、顔学習データFLDの設定のための学習と同様に、顔の器官の画像を含むことが予めわかっている複数の器官サンプル画像によって構成された器官サンプル画像群と、顔の器官の画像を含まないことが予めわかっている複数の非器官サンプル画像によって構成された非器官サンプル画像群と、を用いて実行される。
なお、顔領域検出処理(図3のステップS140)においては累計評価値Tvが特定顔傾き毎に算出され、特定顔傾き毎に顔判定が行われるのに対し、器官領域検出処理では、累計評価値Tvは1つの判定対象画像領域JIAについて傾き0度に対応した1つの値のみが算出され、傾き0度に対応した器官の画像についての器官判定のみが行われる。これは、顔の器官の傾きは、顔全体の傾きに概ね一致するものと考えられるからである。ただし、器官領域検出処理においても、所定の傾き毎に累計評価値Tvが算出され、所定の傾き毎に器官判定が行われるものとしてもよい。
検出器官毎に算出された累計評価値Tvが所定の閾値TH以上である場合には、判定対象画像領域JIAは当該器官の画像に対応する画像領域であるとして、判定対象画像領域JIAの位置、すなわち現在設定されているウィンドウSWの座標が記憶される(図13のステップS570)。一方、累計評価値Tvが閾値THより小さい場合には、ステップS570の処理はスキップされる。ウィンドウSWの所定のサイズのすべてについて、ウィンドウSWにより器官検出用画像ODImg全体がスキャンされた後に、器官領域設定処理が実行される(図13のステップS620)。器官領域設定処理は、顔領域設定処理(図7参照)と同様に、平均ウィンドウAWを設定して、平均ウィンドウAWにより規定される画像領域を器官領域として設定する処理である。
ステップS190(図3)では、領域検出部210(図1)が、ステップS170において未だ選択されていない顔領域FAが存在するか否かを判定する。未だ選択されていない顔領域FAが存在すると判定された場合には(ステップS190:No)、ステップS170に戻って未選択の顔領域FAの1つが選択され、ステップS180以降の処理が実行される。一方、すべての顔領域FAが選択されたと判定された場合には(ステップS190:Yes)、処理はステップS200に進む。
ステップS200(図3)では、画像処理部200(図1)が、ステップS110で実行すべきとして設定された種別の画像処理を実行する。具体的には、実行すべき画像処理の種別が肌色補正である場合には、顔領域FAまたは顔領域FAに基づき設定される顔の画像を含む画像領域内における人物の肌の色が好ましい肌色に補正される。実行すべき画像処理の種別が顔変形である場合には、検出された器官領域(右目領域EA(r)、左目領域EA(l)、口領域MA)の相互の位置関係に基づき顔領域FAが調整され、調整後の顔領域FA内の画像または調整後の顔領域FAに基づき設定される顔の画像を含む画像領域内の画像が変形される。実行すべき画像処理の種別が赤目補正である場合には、顔領域FAにおいて検出された器官領域(右目領域EA(r)、左目領域EA(l))において赤目の画像が検出され、当該画像の色が自然な目の色に近づくように補正される。実行すべき画像処理の種別が笑顔検出である場合には、検出された顔領域FAおよび器官領域(口領域MA)の輪郭検出が行われ、例えば口角の開き具合を評価することにより顔領域FA内の画像が笑顔の画像か否かの判定(笑顔判定)が実行される。笑顔判定に必要な技術は、特開2004−178593号公報や、副島義貴著「場景変動を考慮した移動物体の追跡に関する研究」1998年2月15日等に記載されている。実行すべき画像処理の種別が証明写真検出である場合には、検出された器官領域(右目領域EA(r)、左目領域EA(l)、口領域MA)の相互の位置関係に基づき顔領域FAが調整され、対象画像が証明写真であるか否かの判定が実行される。
以上説明したように、第1実施例のプリンタ100による画像処理では、顔領域検出の用途である画像処理の種別を特定する情報が取得され、取得された情報に基づき顔領域FAに表されるべき顔の角度に関する条件が設定され、対象画像を表す画像データに基づき設定された条件に適合する顔の画像に対応する顔領域FAが検出される。そのため、顔領域検出処理(図3のステップS140)では、実行すべき画像処理の種別に応じて使用する顔学習データFLDが設定され、設定された顔学習データFLDのみを用いて、顔の角度に関する条件(具体的には検出傾きおよび検出向き)に適合する顔の画像に対応する顔領域FAの検出のための顔判定が実行され、上記条件に適合しない顔の画像に対応する顔領域FAの検出のための顔判定は実行されない。従って、本実施例のプリンタ100による画像処理では、画像における顔領域検出処理の高速化を図ることができる。
B.第2実施例:
図15は、本発明の第2実施例における画像処理装置としてのプリンタ100aの構成を概略的に示す説明図である。第2実施例のプリンタ100aは、画像処理部200が顔領域選別部240を含む点で、図1に示す第1実施例のプリンタ100とは異なっているが、プリンタ100aのその他の構成は、第1実施例のプリンタ100と同じである。
顔領域選別部240は、顔領域検出処理により検出された顔領域FAを、条件テーブルCT(図5)において実行すべき画像処理の種別に応じて規定された検出サイズ、検出傾き、検出向きに関する条件に適合する顔の画像に対応する顔領域FA(以下「適合顔領域FAf」とも呼ぶ)と、当該条件に適合しない顔の画像に対応する顔領域FA(以下「非適合顔領域FAn」とも呼ぶ)と、に選別する。
図16は、第2実施例における画像処理の流れを示すフローチャートである。第2実施例における画像処理は、図3に示した第1実施例における画像処理と同様に、実行すべき画像処理の種別を設定し、設定された種別の画像処理を実行する処理である。
第2実施例における画像処理(図16)のステップS110の処理内容は、第1実施例における画像処理(図3)のステップS110の処理内容(実行すべき画像処理の種別の設定)と同じである。第2実施例における画像処理では、顔領域検出処理において顔領域FAとして検出すべき顔の画像の角度等に関する条件の設定および設定された条件に基づく使用学習データおよび使用ウィンドウサイズの設定(図3のステップS120)は実行されない。すなわち、第2実施例における画像処理では、ステップS110で設定された実行すべき画像処理の種別に関わらず、顔領域検出処理において、使用可能な学習データおよびウィンドウサイズがすべて用いられ、検出可能な顔領域FAがすべて検出される。
第2実施例における画像処理(図16)のステップS130からS190までの処理内容は、上述したように顔領域検出処理において顔領域FAとして検出すべき顔の画像の角度等に関する条件が設定されない点を除き、第1実施例における画像処理(図3)のステップS130からS190までの処理内容と同じである。すなわち、第2実施例における画像処理のステップS130からS190までの処理内容は、ステップS110で設定された実行すべき画像処理の種別に関わらず同じである。
第2実施例における画像処理(図16)のステップS192では、画像処理部200(図1)が、表示処理部310を制御して、表示部150に顔領域検出処理の結果を表示させる。図17は、顔領域検出結果表示の一例を示す説明図である。図17には、ステップS110で実行すべき画像処理の種別として顔変形が設定された場合における顔領域検出結果表示の例を示している。図17に示した例では、顔領域検出処理により、対象画像から2つの顔領域FAが検出されている。
ここで、顔領域検出結果表示の際に、顔領域選別部240(図15)は、検出された顔領域FAを適合顔領域FAfと非適合顔領域FAnとに選別する。顔領域FAの選別は、顔領域FAのサイズと、顔領域FAの検出に用いられた顔学習データFLDに対応する顔傾きおよび顔向きと、に基づき実行される。すなわち、例えば、顔領域FAの検出に用いられた顔学習データFLDが、30度の顔傾きと正面向きの顔向きとの組み合わせに対応する顔学習データFLDであった場合には、条件テーブルCTによって顔変形に対応付けられた検出傾きおよび検出向きに適合する。この場合には、検出された顔領域FAのサイズが条件テーブルCTによって顔変形に対応付けられた検出サイズの範囲内であれば、顔領域FAは適合顔領域FAfであると判定され、顔領域FAのサイズが検出サイズの範囲外であれば、顔領域FAは非適合顔領域FAnであると判定される。また、例えば、顔領域FAの検出に用いられた顔学習データFLDが、0度の顔傾きと右向きの顔向きとの組み合わせに対応する顔学習データFLDであった場合には、条件テーブルCTによって顔変形に対応付けられた検出傾きおよび検出向きに適合しない。この場合には、検出された顔領域FA顔領域FAは非適合顔領域FAnであると判定される。
図17に示すように、画像処理部200は、顔領域選別部240による顔領域FAの選別結果に基づき、顔領域FAが適合顔領域FAfと非適合顔領域FAnとに識別可能なように、顔領域FAを表示部150に表示させる。例えば、図17に示すように、表示部150上に表示された画像において、適合顔領域FAfは実線によって位置が特定され、非適合顔領域FAnは破線によって位置が特定される。顔変形に対応付けられた検出向きは正面向きのみであるため(図5参照)、図17に示すように、右向きの顔の画像に対応する顔領域FAは非適合顔領域FAnとして破線で位置が特定されている。
第2実施例における画像処理の顔領域検出結果表示(図16のステップS192)の後には、第1実施例における画像処理と同様に、ステップS110で設定された種別の画像処理が実行される。第2実施例では、適合顔領域FAfのみを対象として画像処理が実行される。
以上説明したように、第2実施例のプリンタ100aによる画像処理では、対象画像から顔領域FAが検出され、検出された顔領域FAが、実行すべき画像処理の種別に適する適合顔領域FAfと、実行すべき画像処理の種別に適しない非適合顔領域FAnと、に選別される。そして、検出された顔領域FAは、適合顔領域FAfと非適合顔領域FAnとが識別可能なように表示部150に表示される。そのため、第2実施例のプリンタ100aによる画像処理では、検出された顔領域FAについて、顔領域FAの用途に適するか否かを容易に識別することができる。
C.変形例:
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
C1.変形例1:
上記各実施例における画像処理種別(図4参照)は、あくまで一例であり、プリンタ100が、実行可能な画像処理の種別として他の種別を有していてもよいし、図4に示した画像処理種別の一部を実行できないとしてもよい。例えば、プリンタ100が、実行可能な画像処理の種別として、笑顔判定以外の顔の画像の表情の判別処理を有していてもよいし、証明写真検出以外の特定の傾きおよび大きさを有する顔の画像の検出処理を有していてもよい。
また、条件テーブルCT(図5)において画像処理種別に応じて規定された検出サイズ、検出傾き、検出向き、検出器官はあくまで一例であり種々変更可能である。また、条件テーブルCTにおいて、検出サイズ、検出傾き、検出向き、検出器官のすべてが規定されている必要はなく、これらの内の一部のみが規定されているとしてもよい。
C2.変形例2:
上記各実施例において、実行すべき画像処理の種別は、ユーザによる指定に従い設定される必要はなく、自動的に設定されるとしてもよい。また、顔領域検出処理や器官領域検出処理における検出サイズ、検出傾き、検出向き、検出器官は、実行すべき画像処理の種別に応じて設定される必要はなく、直接的な指定に応じて、あるいは自動的に、設定されるとしてもよい。
C3.変形例3:
上記各実施例では、画像処理装置としてのプリンタ100による画像処理を説明したが、本発明はデジタルスチルカメラ、デジタルビデオカメラ等の撮像装置に適用することも可能である。本発明をデジタルスチルカメラ、デジタルビデオカメラ等の撮像装置に適用する場合には、顔領域検出結果の用途を撮像実行タイミングの設定とすることも可能である。すなわち、条件テーブルCTと同様に、検出サイズ、検出傾き、検出向き、検出器官の少なくとも1つに関する条件が設定され、例えば撮像ボタンが半押しされたときに生成される準備画像において、設定された条件に合致した顔領域が検出されると、自動的に撮像が行われたり、撮像ボタンの全押しによる撮像指示が可能になったりするとしてもよい。
C4.変形例4:
上記各実施例では、器官領域検出処理において、器官検出用画像ODImgが生成され、生成された器官検出用画像ODImg上にウィンドウSWが配置されて判定対象画像領域JIAが設定されているが、器官検出用画像ODImgは必ずしも生成される必要はなく、顔検出用画像FDImg上にウィンドウSWが配置されて判定対象画像領域JIAが設定されるとしてもよい。この場合には、検出された顔領域FAの傾きと同じ傾きに対応する顔器官学習データOLDを用いて累計評価値Tvを算出すればよい。反対に、器官検出用画像ODImgが生成される場合には、0度の傾きに対応する顔器官学習データOLDのみを用いて累計評価値Tvを算出することが可能であり、内部メモリ120に0度の傾きに対応する顔器官学習データOLDのみが格納されていればよい。
C5.変形例5:
上記第1実施例では、設定された実行すべき画像処理の種別に応じて、検出する顔領域FAの条件(図5参照)を設定し、条件に適合する顔領域FAのみの検出を行っているが、条件の適否に関わらずすべての顔領域FAを検出し、検出後に条件に適合する顔領域FAのみを抽出するものとしてもよい。
C6.変形例6:
上記第2実施例における適合顔領域FAfと非適合顔領域FAnとの表示部150における表示形態は、あくまで一例であり、適合顔領域FAfと非適合顔領域FAnとが識別可能なように表示されれば、他の表示形態を採用することも可能である。例えば、適合顔領域FAfと非適合顔領域FAnとを、領域または領域枠の表示色で識別可能としてもよいし、一方を点滅表示させることにより識別可能としてもよい。また、適合顔領域FAfと非適合顔領域FAnとの一方または両方に文字や図形や記号を付加することにより、両者を識別可能としてもよい。
C7.変形例7:
上記各実施例における顔領域検出処理(図3)や器官領域検出処理(図13)の態様はあくまで一例であり、種々変更可能である。例えば顔検出用画像FDImg(図8参照)のサイズは320画素×240画素に限られず、他のサイズであってもよいし、原画像OImgそのものを顔検出用画像FDImgとして用いることも可能である。また、使用されるウィンドウSWのサイズやウィンドウSWの移動方向および移動量(移動ピッチ)は上述したものに限られない。また、上記各実施例では、顔検出用画像FDImgのサイズが固定され、複数種類のサイズのウィンドウSWが顔検出用画像FDImg上に配置されることにより複数サイズの判定対象画像領域JIAが設定されているが、複数種類のサイズの顔検出用画像FDImgが生成され、固定サイズのウィンドウSWが顔検出用画像FDImg上に配置されることにより複数サイズの判定対象画像領域JIAが設定されるものとしてもよい。
また、上記各実施例では、累計評価値Tvを閾値THと比較することにより顔判定および器官判定を行っているが(図9参照)、顔判定および器官判定を複数の判別器を用いた判別等の他の方法によって行ってもよい。顔判定および器官判定の方法に応じて、顔学習データFLDおよび顔器官学習データOLDの設定に用いられる学習方法も変更される。また、顔判定および器官判定は、必ずしも学習を用いた判別方法により行われる必要はなく、パターンマッチング等の他の方法により行われるとしてもよい。
また、上記各実施例では、30度刻みの12種類の特定顔傾きが設定されているが、より多くの種類の特定顔傾きが設定されてもよいし、より少ない種類の特定顔傾きが設定されてもよい。また、必ずしも特定顔傾きが設定される必要はなく、0度の顔傾きについての顔判定が行われるとしてもよい。また、上記各実施例では、顔サンプル画像群に基本顔サンプル画像FIoを拡大・縮小した画像や回転させた画像が含まれるとしているが、顔サンプル画像群に必ずしもこのような画像が含まれる必要はない。
上記各実施例において、あるサイズのウィンドウSWにより規定される判定対象画像領域JIAについての顔判定(または器官判定)で顔の画像(または顔の器官の画像)に対応する画像領域であると判定された場合には、当該サイズより所定の比率以上小さいサイズのウィンドウSWを配置する場合には、顔の画像に対応する画像領域であると判定された判定対象画像領域JIAを避けて配置するものとしてもよい。このようにすれば、処理の高速化を図ることができる。
上記各実施例では、メモリカードMCに格納された画像データが原画像データに設定されているが、原画像データはメモリカードMCに格納された画像データに限らず、例えばネットワークを介して取得された画像データであってもよい。
上記各実施例では、顔の器官の種類として、右目と左目と口とが設定されており、器官領域として、右目領域EA(r)と左目領域EA(l)と口領域MAとの検出が行われるが、顔の器官の種類として顔のどの器官を設定するかは変更可能である。例えば、顔の器官の種類として、右目と左目と口とのいずれか1つまたは2つのみが設定されるとしてもよい。また、顔の器官の種類として、右目と左目と口とに加えて、または右目と左目と口との少なくとも1つに代わり、顔のその他の器官の種類(例えば鼻や眉)が設定され、器官領域としてこのような器官の画像に対応する領域が検出されるとしてもよい。
上記各実施例では、顔領域FAおよび器官領域は矩形の領域であるが、顔領域FAおよび器官領域は矩形以外の形状の領域であってもよい。
上記各実施例では、画像処理装置としてのプリンタ100による画像処理を説明したが、処理の一部または全部がパーソナルコンピュータやデジタルスチルカメラ、デジタルビデオカメラ等の他の種類の画像処理装置により実行されるものとしてもよい。また、プリンタ100はインクジェットプリンタに限らず、他の方式のプリンタ、例えばレーザプリンタや昇華型プリンタであるとしてもよい。
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。
また、本発明の機能の一部または全部がソフトウェアで実現される場合には、そのソフトウェア(コンピュータプログラム)は、コンピュータ読み取り可能な記録媒体に格納された形で提供することができる。この発明において、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスクやCD−ROMのような携帯型の記録媒体に限らず、各種のRAMやROM等のコンピュータ内の内部記憶装置や、ハードディスク等のコンピュータに固定されている外部記憶装置も含んでいる。