下記の順序に従って本発明の実施例を説明する。
(1)画像処理装置の概略構成:
(2)顔形状補正印刷処理:
(2‐1)対象画像の選択から変形領域の設定まで:
(2‐2)変形領域の除外処理:
(2‐3)変形領域の分割から印刷処理まで:
(3)追加の説明および他の実施例:
(1)画像処理装置の概略構成:
図1は、本発明にかかる画像処理装置の一例としてのプリンタ100の構成を、概略的に示す説明図である。プリンタ100は、記録メディア(例えば、メモリカードMC等)から取得した画像データに基づき画像を印刷する、いわゆるダイレクトプリントに対応したスタンドアローンタイプのカラーインクジェットプリンタである。またプリンタ100は、印刷機能以外にも、コピー機能(不図示)やスキャナ機能(不図示)など、多種の機能を備えた装置である。この意味でプリンタ100は、いわゆる複合機とも呼べる。
プリンタ100は、プリンタ100の各部を制御するCPU110と、例えばROMやRAMによって構成された内部メモリ120と、ボタンやタッチパネルにより構成された操作部140と、液晶ディスプレイにより構成された表示部150と、プリンタエンジン160と、カードインターフェース(カードI/F)170等を備える。プリンタ100は、さらに、他の機器(例えばデジタルスチルカメラ)とのデータ通信を行うためのインターフェースを備えているとしてもよい。プリンタ100の各構成要素は、バスを介して互いに接続されている。
プリンタエンジン160は、印刷データに基づき印刷を行う印刷機構である。カードインターフェース170は、カードスロット172に挿入されたメモリカードMCとの間でデータのやり取りを行うためのインターフェースである。本実施例では、メモリカードMCにRGBデータとしての画像データが格納されており、プリンタ100は、カードインターフェース170を介してメモリカードMCに格納された画像データの取得を行う。
内部メモリ120には、顔形状補正部200と、表示処理部310と、印刷処理部320とが格納されている。顔形状補正部200は、所定のオペレーティングシステムの下で、後述する顔形状補正処理を実行するためのコンピュータプログラムである。表示処理部310は、表示部150を制御して、表示部150上に処理メニューやメッセージを表示させるディスプレイドライバである。印刷処理部320は、画像データから印刷データを生成し、プリンタエンジン160を制御して、印刷データに基づく画像の印刷を実行するためのコンピュータプログラムである。CPU110は、内部メモリ120から、これらのプログラムを読み出して実行することにより、これら各部の機能を実現する。
顔形状補正部200は、プログラムモジュールとして、変形態様設定部210と、顔領域検出部220と、顔領域調整部230と、変形領域設定部240と、除外判別部270と、変形領域分割部250と、変形処理部260と、を含んでいる。変形態様設定部210は、指定取得部212を含んでいる。顔領域調整部230は、基準領域設定部232と、評価部234と、決定部236と、を含んでいる。これらの各部の機能については、後述の顔形状補正印刷処理の説明において詳述する。
内部メモリ120には、また、顔領域サイズ上限値テーブル430と、分割点配置パターンテーブル410と、分割点移動テーブル420とが格納されている。顔領域サイズ上限値テーブル430、分割点配置パターンテーブル410および分割点移動テーブル420の内容についても、後述の顔形状補正印刷処理の説明において詳述する。
(2)顔形状補正印刷処理:
プリンタ100は、メモリカードMCに格納された画像データに基づき、画像の印刷を行う。カードスロット172にメモリカードMCが挿入されると、表示処理部310により、メモリカードMCに格納された画像の一覧表示を含むユーザインターフェースが表示部150に表示される。
図2は、画像の一覧表示を含むユーザインターフェースの一例を示す説明図である。画像の一覧表示は、例えば、メモリカードMCに格納された画像データ(画像ファイル)に含まれるサムネイル画像を用いて実現される。プリンタ100は、図2に示すユーザインターフェースにおいて、ユーザにより、1つ(または複数)の画像が選択されると共に通常印刷ボタンが選択されると、選択された画像を通常通り印刷する通常印刷処理を実行する。他方、当該ユーザインターフェースにおいて、ユーザにより、1つ(または複数)の画像が選択されると共に顔形状補正印刷ボタンが選択されると、プリンタ100は、選択された画像について、画像中の顔の形状を補正して補正後の画像を印刷する顔形状補正印刷処理を実行する。
図3は、本実施例のプリンタ100による顔形状補正印刷処理の流れを示すフローチャートである。
ステップS(以下、ステップの表記を省略。)100では、顔形状補正部200(図1)が、顔形状補正処理を実行する。顔形状補正処理は、画像中に顔が存在する場合に、当該顔について補正するか否かを所定の条件に基づいて判別し、補正すると判別した場合に、当該顔の少なくとも一部の形状(例えば顔の輪郭形状や目の形状)を補正する処理である。
(2‐1)対象画像の選択から変形領域の設定まで:
図4は、本実施例における顔形状補正処理の流れを示すフローチャートである。
S110では、顔形状補正部200(図1)が、顔形状補正処理の対象となる対象画像TIを設定する。顔形状補正部200は、図2に示したユーザインターフェースにおいてユーザにより選択された画像を対象画像TIとして設定する。設定された対象画像TIの画像データは、メモリカードMCからカードインターフェース170を介してプリンタ100に取得され、内部メモリ120の所定領域に格納される。
S120では、変形態様設定部210(図1)が、顔形状補正のための画像変形のタイプと画像変形の度合いとを設定する。変形態様設定部210は、画像変形のタイプおよび度合いを設定するためのユーザインターフェースを表示部150に表示するように表示処理部310に指示し、当該ユーザインターフェースを通じてユーザにより指定された画像変形のタイプおよび度合いを選択し、処理に使用する画像変形タイプおよび度合いとして設定する。
図5は、画像変形のタイプおよび度合いを設定するためのユーザインターフェースの一例を示す説明図である。図5に示すように、このユーザインターフェースには、画像変形タイプを設定するためのインターフェースが含まれている。本実施例では例えば、顔の形状をシャープにする変形タイプ「タイプA」や、目の形状を大きくする変形タイプ「タイプB」等が選択肢として予め設定されているものとする。ユーザは、このインターフェースを介して画像変形のタイプを指定する。変形態様設定部210は、ユーザにより指定された画像変形タイプを、実際の処理に使用する画像変形タイプとして設定する。
また、図5に示すユーザインターフェースには、画像変形の度合い(程度)を設定するためのインターフェースが含まれている。図5に示すように、本実施例では、画像変形の度合いとして、強(S)、中(M)、弱(W)の3段階が選択肢として予め設定されているものとする。ユーザは、このインターフェースを介して画像変形の度合いを指定する。変形態様設定部210は、ユーザにより指定された画像変形の度合いを、実際の処理に使用する画像変形の度合いとして設定する。
なお本実施例では、ユーザによる変形態様の詳細指定が可能となっている。図5に示すユーザインターフェースにおいて、ユーザにより、詳細指定を希望する旨のチェックボックスにチェックが入れられた場合には、ユーザによる変形態様の詳細指定がなされる。
ただし以降では、画像変形のタイプとして顔の形状をシャープにするための変形タイプ「タイプA」が設定され、画像変形の度合いとして程度「中」の度合いが設定され、ユーザによる詳細指定の希望はなかったものとして説明を行う。
S130では、顔領域検出部220(図1)が、対象画像TIにおける顔領域(顔画像)FAの検出を行う。ここで、顔領域FAとは、対象画像TI上の画像領域であって、少なくとも顔の一部の画像が含まれる領域を意味している。顔領域FAは、特許請求の範囲に記載した特定画像の一例に該当する。顔領域検出部220による顔領域FAの検出は、例えばテンプレートを利用したパターンマッチングによる方法(特開2004‐318204参照)といった公知の顔検出方法を用いて実行される。
図6は、顔領域FAの検出結果の一例を示す説明図である。図6に示すように、本実施例で用いた顔検出方法によると、対象画像TI上の目と鼻と口の画像を含む矩形の領域が顔領域FAとして検出される。顔領域FAは正方形であってもよい。図6に示した基準線RLは、顔領域FAの高さ方向(上下方向)を定義すると共に、顔領域FAの幅方向(左右方向)の中心を示す線である。すなわち、基準線RLは、矩形の顔領域FAの重心を通り、顔の略上下方向に沿った矩形の境界線に平行な直線である。S130において、顔領域FAが検出されなかった場合には、その旨が表示部150を通じてユーザに通知される。この場合には、顔形状補正を伴わない通常印刷が行われるとしてもよいし、他の顔検出方法を用いた顔領域FAの再度の検出処理が行われるとしてもよい。
ここで、一般に、テンプレートを利用したパターンマッチングによる方法等の公知の顔検出方法は、顔全体や顔の部位(目や口等)について位置や傾き(角度)を詳細に検出するものではなく、対象画像TI中から顔の画像が概ね含まれると考えられる領域を顔領域FAとして設定するものである。他方、本実施例のプリンタ100は、後述するように、検出された顔領域FAに基づいて顔形状補正のための画像変形処理を施す領域(後述の変形領域TA)を設定する。顔の画像は、一般に、観察者の注目度が高いため、設定された変形領域TAと顔の画像との位置や角度の関係によっては、顔形状補正後の画像が不自然なものとなる可能性がある。そこで、本実施例では、より自然で好ましい顔形状補正が実現されるように、S130で検出された顔領域FAについて、以下に説明する位置調整および傾き調整を行うものとしている。
S140では、顔領域調整部230(図1)が、S130で検出された顔領域FAの上下方向の位置調整を行う。顔領域FAの上下方向の位置調整とは、顔領域FAの基準線RL(図6参照)に沿った位置を調整して、対象画像TIにおける顔領域FAを再設定することを意味している。
図7は、本実施例における顔領域FAの上下方向の位置調整処理の流れを示すフローチャートである。S141では、基準領域設定部232(図1)が、基準領域SAを設定する。ここで、基準領域SAとは、対象画像TI上の領域であって、顔領域FAの上下方向の位置調整を実行する際に参照する所定の参照被写体の画像を含む領域である。本実施例では、参照被写体は「目」と設定され、基準領域SAは「目」の画像を含む領域として設定される。
図8は、基準領域SAの一例を示す説明図である。本実施例では、基準領域設定部232が、基準領域SAを顔領域FAとの関係に基づいて設定する。具体的には、顔領域FAの大きさを、基準線RLに直行する方向および基準線RLに平行な方向に、所定比率で縮小(または拡大)した大きさの領域であって、顔領域FAの位置と所定の位置関係を有する領域が、基準領域SAとして設定される。すなわち、本実施例では、顔領域検出部220により検出された顔領域FAとの関係に基づき基準領域SAを設定すれば、基準領域SAが両方の目の画像を含む領域となるように、上記所定比率や所定の位置関係が予め設定されている。なお、基準領域SAは、目の画像とまぎらわしい画像(例えば髪の毛の画像)がなるべく含まれないように、両目の画像を含む限りにおいて、なるべく小さい領域として設定されることが好ましい。
また、図8に示すように、基準領域SAは、基準線RLに対して対称な矩形形状の領域として設定される。基準領域SAは、基準線RLにより、向かって左側の領域(以下「左分割領域SA(l)」とも呼ぶ)と、向かって右側の領域(以下「右分割領域SA(r)」とも呼ぶ)とに分割される。基準領域SAは、左分割領域SA(l)と右分割領域SA(r)とのそれぞれに片目の画像が含まれるように設定される。
S142では、評価部234(図1)が、基準領域SAにおける目の画像の位置を検出するための評価値を算出する。
図9は、評価値の算出方法の一例を示す説明図である。本実施例では、RGB画像データとしての対象画像TIの各画素のR値(R成分値)が評価値の算出に用いられる。これは、肌の部分の画像と目の部分の画像とではR値の差が大きいため、R値を評価値の算出に用いることにより、目の画像の検出精度を向上させることができると考えられるからである。また、本実施例では、対象画像TIのデータがRGBデータとして取得されているため、R値を評価値の算出に用いることにより、評価値の算出の効率化を図ることができるからでもある。なお、図9に示すように、評価値の算出は、2つの分割領域(右分割領域SA(r)および左分割領域SA(l))のそれぞれについて個別に行われる。
評価部234は、図9に示すように、各分割領域(右分割領域SA(r)および左分割領域SA(l))内に、基準線RLと直行するn本の直線(以下「対象画素特定線PL1〜 PLn」と呼ぶ)を設定する。対象画素特定線PL1〜 PLnは、分割領域の高さ(基準線RLに沿った大きさ)を(n+1)等分する直線である。すなわち、対象画素特定線PL同士の間隔は、すべて等間隔sである。評価部234は、対象画素特定線PL1〜 PLnのそれぞれについて、対象画像TIを構成する画素の中から評価値の算出に用いる画素(以下「評価対象画素TP」と呼ぶ)を選択する。
図10は、評価対象画素TPの選択方法の一例を示す説明図である。評価部234は、対象画像TIを構成する画素の内、対象画素特定線PLと重なる画素を評価対象画素TPとして選択する。図10(a)は、対象画素特定線PLが対象画像TIの画素の行方向(図10のX方向)と平行である場合を示している。この場合には、各対象画素特定線PLと重なる画素行上の画素(図10(a)において○印を付した画素)が、各対象画素特定線PLについての評価対象画素TPとして選択される。
一方、顔領域FAの検出方法や基準領域SAの設定方法によっては、図10(b)に示すように、対象画素特定線PLが対象画像TIの画素の行方向(X方向)と平行とはならない場合も生ずる。このような場合にも、原則として、各対象画素特定線PLと重なる画素が、各対象画素特定線PLについての評価対象画素TPとして選択される。ただし、例えば図10(b)における対象画素特定線PL1と画素PXaおよび画素PXbとの関係のように、ある対象画素特定線PLが、対象画像TIの画素マトリクスの同一列に位置する(すなわちY座標が同一の)2つの画素と重なる場合には、重なり部分の距離のより短い方の画素(例えば画素PXb)は評価対象画素TPから除外される。すなわち、各対象画素特定線PLについて、画素マトリクスの1つの列からは1つの画素のみが評価対象画素TPとして選択される。
なお、対象画素特定線PLの傾きが、X方向に対して45度を超える場合には、上記説明において画素マトリクスの列と行との関係が逆転し、画素マトリクスの1つの行から1つの画素のみが評価対象画素TPとして選択されることとなる。また、対象画像TIと基準領域SAとの大きさの関係によっては、1つの画素が複数の対象画素特定線PLについての評価対象画素TPとして選択される場合もある。
評価部234は、対象画素特定線PLのそれぞれについて、評価対象画素TPのR値の平均値を評価値として算出する。ただし、本実施例では、各対象画素特定線PLについて、選択された複数の評価対象画素TPの内、R値の大きい一部の画素を評価値の算出対象から除外するものとしている。具体的には、例えば、ある対象画素特定線PLについてk個の評価対象画素TPが選択された場合、評価対象画素TPが、R値の比較的大きい0.75k個の画素により構成される第1グループと、比較的R値の小さい0.25k個の画素により構成される第2グループとの2グループに分けられ、第2グループに属する画素のみが評価値としてのR値の平均値の算出対象となる。このように一部の評価対象画素TPを評価値の算出対象から除外する理由については後述する。
以上のように、本実施例では、評価部234により各対象画素特定線PLについての評価値が算出される。ここで、対象画素特定線PLは基準線RLに直行する直線であるため、評価値は、基準線RLに沿った複数の位置(評価位置)について算出されると表現することができる。また、評価値は、各評価位置について、基準線RLに直行する方向に沿った画素値の分布の特徴を表す値と表現することができる。
S143では、決定部236(図1)が、基準領域SAにおける目の位置を検出し、検出結果に基づき高さ基準点Rhを決定する。まず、決定部236は、図9の右側に示すように、各分割領域について、基準線RLに沿った評価値(R値の平均値)の分布を表す曲線を作成し、評価値が極小値をとる基準線RL方向に沿った位置を目の位置Ehとして検出する。なお、左分割領域SA(l)における目の位置EhをEh(l)と表し、右分割領域SA(r)における目の位置EhをEh(r)と表わす。
黄色人種の場合、分割領域中の肌の画像を表す部分はR値が大きい一方、目(より詳細には目の中央の黒目部分)の画像を表す部分はR値が小さいと考えられる。そのため、上述のように、評価値(R値の平均値)が極小値をとる基準線RLに沿った位置を目の位置Ehと判断することが可能となる。なお、図9に示すように、分割領域には、目の画像以外にもR値の小さい他の画像(例えば、眉や髪の毛の画像)が含まれている場合もある。そのため、決定部236は、基準線RLに沿った評価値の分布を表す曲線が複数の極小値をとる場合には、所定の判断基準に基づいて、一つの極小値に対応する位置を目の位置Ehと判断する。例えば、複数の極小値に対応する基準線RL上の各位置のうち、基準領域SA内の基準線RLの中心位置に最も近い位置を目の位置Ehとする。これは、上述したように基準領域SAは目の画像を含むなるべく小さい領域として設定されているため、目の位置は、基準領域SA内における基準線RLの中心位置に近く、一方、眉や髪の毛は各分割領域の境界線付近に位置していると想定されるからである。
また、上記曲線が、目の画像の位置以外であっても、評価値が大きいながらも極小値をとる可能性があるため、極小値の内、所定の閾値より大きいものは無視するものとしてもよい。あるいは、単純に、各対象画素特定線PLについて算出された評価値の内の最小値に対応した対象画素特定線PLの位置を目の位置Ehとしてもよい。
なお、本実施例では、顔において周囲との色の差が比較的大きいと考えられる部位である目(目の中央の黒目部分)を顔領域FAの位置調整の参照被写体として用いている。しかし、評価値としてのR値の平均値は、対象画素特定線PL上の複数の評価対象画素TPを対象として算出されるため、例えば、黒目の周縁の白目部分の画像の影響により、黒目部分の検出の精度が低下する怖れがある。本実施例では、上述したように、参照被写体とは色の差が大きいと考えられる一部の評価対象画素TP(例えば上述した第1のグループに属する比較的R値の大きい画素)を評価値の算出対象から除外することにより、参照被写体の検出精度をより向上させている。
次に、決定部236は、検出された目の位置Ehに基づき高さ基準点Rhを決定する。
図11は、高さ基準点Rhの決定方法の一例を示す説明図である。高さ基準点Rhは、顔領域FAの高さ方向の位置調整の際に、基準として用いられる点である。本実施例では、図11に示すように、左右2つの目の位置Eh(l)およびEh(r)の中間に位置する基準線RL上の点が高さ基準点Rhとして設定される。すなわち、左の目の位置Eh(l)を示す直線EhL(l)と基準線RLとの交点と、右の目の位置Eh(r)を示す直線EhL(r)と基準線RLとの交点と、の中点が、高さ基準点Rhとして設定される。
本実施例では、決定部236が、検出された目の位置Ehに基づき、顔画像の概略の傾き角(以下「概略傾き角RI」と呼ぶ)を算出するものとしている。顔画像の概略傾き角RIは、対象画像TI中の顔の画像が、顔領域FAの基準線RLに対して概ねどれぐらい傾いているかを推定した角度である。
図12は、概略傾き角RIの算出方法の一例を示す説明図である。図12に示すように、決定部236は、まず、左分割領域SA(l)の幅Ws(l)を半分に分割する直線と直線EhL(l)との交点IP(l)と、右分割領域SA(r)の幅Ws(r)を半分に分割する直線と直線EhL(r)との交点IP(r)とを決定する。そして、交点IP(l)と交点IP(r)とを結ぶ直線に直交する直線ILと、基準線RLとのなす角が、概略傾き角RIとして算出される。
S144では、顔領域調整部230(図1)が、顔領域FAの上下方向の位置調整を行う。
図13は、顔領域FAの高さ方向の位置調整方法の一例を示す説明図である。顔領域FAの高さ方向の位置調整は、高さ基準点Rhが、位置調整後の顔領域FAにおける所定の位置に位置することとなるように、顔領域FAを再設定することにより行う。具体的には、図13に示すように、高さ基準点Rhが、顔領域FAについての上下方向の長さHfを所定の比率r1対r2で分けるような位置に位置することとなるように、顔領域FAを定義する矩形枠が基準線RLに沿って位置調整される。図13の例では、破線で示した調整前の顔領域FAを顔の上方向に移動することにより、実線で示した調整後の顔領域FAが再設定されている。
顔領域FAの位置調整の後、S150(図4)では、顔領域調整部230(図1)が、顔領域FAの傾き調整(角度調整)を行う。ここで、顔領域FAの傾き調整とは、対象画像TIにおける顔領域FAの傾きを顔の画像の傾きに適合するように調整して、顔領域FAを再設定することを意味している。本実施例では、顔領域FAの傾き調整を実行する際に参照する所定の参照被写体は、「両目」と設定されている。本実施例における顔領域FAの傾き調整では、傾き調整の調整角度の選択肢を表す複数の評価方向が設定され、各評価方向に対応した評価基準領域ESAが両目の画像を含む領域として設定される。そして、各評価方向について評価基準領域ESAの画像の画素値に基づき評価値が算出され、評価値に基づき決定される傾き調整の調整角度を用いて顔領域FAの傾きが調整される。
図14は、本実施例における顔領域FAの傾き調整処理の流れを示すフローチャートである。
図15は、顔領域FAの傾き調整のための評価値の算出方法の一例を示す説明図である。
S151では、基準領域設定部232(図1)が、初期評価基準領域ESA(0)を設定する。初期評価基準領域ESA(0)は、顔領域FAの位置調整後の基準線RL(図13参照)と平行な方向(以下「初期評価方向」とも呼ぶ)に対応付けられた評価基準領域ESAである。本実施例では、位置調整後の顔領域FAに対応した基準領域SA(図13参照)が、そのまま初期評価基準領域ESA(0)として設定される。なお、評価基準領域ESAは、顔領域FAの位置調整時の基準領域SAとは異なり、左右2つの領域に分割されることはない。図15の最上段には、設定された初期評価基準領域ESA(0)が示されている。
S152では、基準領域設定部232(図1)が、複数の評価方向と各評価方向に対応した評価基準領域ESAとを設定する。複数の評価方向は、傾き調整の調整角度の選択肢を表す方向として設定される。本実施例では、基準線RLとのなす角が所定の範囲内である複数の評価方向線ELが設定され、評価方向線ELと平行な方向が評価方向として設定される。図15に示すように、基準線RLを初期評価基準領域ESA(0)の中心点(重心)CPを中心として反時計回りおよび時計回りに所定の角度α刻みで回転させることにより定まる直線が、複数の評価方向線ELとして設定される。なお、基準線RLとのなす角がφ度である評価方向線ELをEL(φ)と表す。
本実施例では、上述した各評価方向線ELと基準線RLとのなす角についての所定の範囲は±20度と設定される。本明細書では、基準線RLを時計回りに回転させたときの回転角を負の値で表し、基準線RLを反時計回りに回転させたときの回転角を正の値で表す。基準領域設定部232は、基準線RLを反時計回りおよび時計回りにα度、2α度・・・と20度を超えない範囲で回転角を増加させつつ回転させ、複数の評価方向線ELを設定する。図15には、基準線RLをα度,2α度,−α度回転させることによりそれぞれ定まる評価方向線EL(EL(α),EL(2α),EL(−α))が示されている。なお、基準線RLは、評価方向線EL(0)とも表現できる。
各評価方向を表す評価方向線ELに対応した評価基準領域ESAは、初期評価基準領域ESA(0)を、中心点CPを中心として、評価方向線ELの設定時の回転角と同じ角度で回転させた領域である。評価方向線EL(φ)に対応した評価基準領域ESAは、評価基準領域ESA(φ)と表される。図15には、評価方向線EL(α),EL(2α),EL(−α)のそれぞれに対応した評価基準領域ESA(ESA(α),ESA(2α),ESA(−α))が示されている。なお、初期評価基準領域ESA(0)も評価基準 領域ESAの1つとして扱われるものとする。
S153では、評価部234(図1)が、複数の評価方向のそれぞれについて、評価基準領域ESAの画像の画素値に基づき評価値を算出する。本実施例では、顔領域FAの傾き調整における評価値として、上述した顔領域FAの位置調整における評価値と同様に、R値の平均値が用いられる。評価部234は、評価方向に沿った複数の評価位置についての評価値を算出する。
評価値の算出方法は、上述した顔領域FAの位置調整における評価値の算出方法と同様である。すなわち、評価部234は、図15に示すように、各評価基準領域ESA内に、評価方向線ELに直交する対象画素特定線PL1〜 PLnを設定し、各対象画素特定線PL1〜 PLnについて評価対象画素TPを選択し、選択された評価対象画素TPのR値の平均値を評価値として算出する。
評価基準領域ESAにおける対象画素特定線PLの設定方法や評価対象画素TPの選択方法は、領域を左右に分割するか否かの違いはあるものの、図9および図10に示した顔領域FAの位置調整における方法と同様である。なお、顔領域FAの位置調整時と同様に、選択された評価対象画素TPの内の一部(例えばk個の評価対象画素TPの内のR値の比較的大きい0.75k個の画素)を評価値の算出対象から除外するとしてもよい。図15の右側には、各評価方向について、算出された評価値の評価方向線ELに沿った分布を示している。
なお、対象画素特定線PLは評価方向線ELに直行する直線であるため、評価値は、評価方向線ELに沿った複数の位置(評価位置)について算出されると表現することができる。また、評価値は、各評価位置について、評価方向線ELに直行する方向に沿った画素値の分布の特徴を表す値と表現することができる。
S154では、決定部236(図1)が、顔領域FAの傾き調整に用いる調整角度を決定する。決定部236は、各評価方向について、S153において算出された評価値の評価方向線ELに沿った分散を算出し、分散の値が最大となる評価方向を選択する。そして、選択された評価方向に対応した評価方向線ELと基準線RLとのなす角を、傾き調整に用いる調整角度として決定する。
図16は、各評価方向についての評価値の分散の算出結果の一例を示す説明図である。図16の例では、回転角がα度である評価方向において、分散が最大値Vmaxをとる。従って、α度、すなわち反時計回りにα度の回転角が、顔領域FAの傾き調整に用いる調整角度として決定される。
評価値の分散の値が最大となるときの評価方向に対応した角度が傾き調整に用いる調整角度として決定される理由について説明する。図15の上から2段目に示すように、回転角がα度であるときの評価基準領域ESA(α)では、左右の目の中央部(黒目部分)の画像が、概ね対象画素特定線PLに平行な方向(すなわち評価方向線ELに直行する方向)に並ぶような配置となっている。また、このときには、左右の眉の画像も同様に、概ね評価方向線ELに直行する方向に並ぶような配置となる。従って、このときの評価方向線ELに対応した評価方向が、概ね顔の画像の傾きを表す方向であると考えられる。のときには、一般にR値が小さい目や眉の画像と一般にR値が大きい肌の部分の画像との位置関係が、対象画素特定線PLの方向に沿って両者が重なる部分の小さい位置関係となる。そのため、目や眉の画像の位置における評価値は比較的小さくなり、肌の部分の画像の位置における評価値は比較的大きくなる。従って、評価方向線ELに沿った評価値の分布は、図15に示すように、比較的ばらつきの大きい(振幅の大きい)分布となり、分散の値は大きくなる。
一方、図15中の最上段および3段目、4段目に示すように、回転角が0度,2α度,−α度であるときの評価基準領域ESA(0),ESA(2α),ESA(−α)では、左右の目の中央部や左右の眉の画像が、評価方向線ELに直行する方向に並ばず、ずれた配置となっている。従って、このときの評価方向線ELに対応した評価方向は、顔の画像の傾きを表していはいない。このときには、目や眉の画像と肌の部分の画像との位置関係が、対象画素特定線PLの方向に沿って両者が重なる部分の大きい位置関係となる。そのため、評価方向線ELに沿った評価値の分布は、図15に示すように、比較的ばらつきの小さい(振幅の小さい)分布となり、分散の値は小さくなる。
以上のように、評価方向が顔の画像の傾きの方向に近い場合には、評価方向線ELに沿った評価値の分散の値が大きくなり、評価方向が顔の画像の傾きの方向から遠い場合には、評価方向線ELに沿った評価値の分散の値が小さくなる。従って、評価値の分散の値が最大となるときの評価方向に対応した角度を傾き調整に用いる調整角度として決定すれば、顔領域FAの傾きが顔の画像の傾きに適合するような顔領域FAの傾き調整を実現することができる。
なお本実施例では、評価値の分散の算出結果が、角度の範囲の臨界値すなわち基準線RLに対して−20度または20度において、最大値をとるような結果となった場合には、顔の傾きが正確に評価されていない可能性が高いと考えられるため、顔領域FAの傾き調整を行わないものとしている。また本実施例では、決定された調整角度が、上述した顔領域FAの位置調整の際に算出された概略傾き角RIと比較される。調整角度と概略傾き角RIとの差が所定の閾値より大きい場合には、顔領域FAの位置調整および傾き調整における評価や決定の際に何らかの誤りが発生したと考えられるため、顔領域FAの位置調整および傾き調整を行わないものとしている。
S155では、顔領域調整部230(図1)が、顔領域FAの傾き調整を行う。
図17は、顔領域FAの傾き調整方法の一例を示す説明図である。顔領域FAの傾き調整は、顔領域FAを、初期評価基準領域ESA(0)の中心点CPを中心に、S154において決定された調整角度だけ回転させることにより行う。図17の例では、破線で示した調整前の顔領域FAを反時計回りにα度回転させることにより、実線で示した調整後の顔領域FAが設定される。
顔領域FAの傾き調整終了後のS160では、変形領域設定部240(図1)が、変形領域TAを設定する。変形領域TAは、対象画像TI上の領域であって顔形状補正のための画像変形処理の対象の候補となる領域である。この意味で、S160で設定する変形領域TAは、特許請求の範囲に記載した候補領域の一例に該当する。
図18は、変形領域TAの設定方法の一例を示す説明図である。図18に示すように、本実施例では、変形領域TAは、顔領域FAを基準線RLと平行な方向(高さ方向)および基準線RLに直行する方向(幅方向)に伸張(または短縮)した領域として設定される。具体的には、顔領域FAの高さ方向の大きさをHf、幅方向の大きさをWfとすると、顔領域FAの矩形を、上方向にk1・Hf、下方向にk2・Hfだけ伸ばすと共に、左右にそれぞれk3・Wfだけ伸ばした領域が、変形領域TAとして設定される。なお、k1,k2,k3は、所定の係数である。
このように変形領域TAが設定されると、顔領域FAの高さ方向の輪郭線に平行な直線である基準線RLは、変形領域TAの高さ方向の輪郭線にも平行な直線となる。また、基準線RLは、変形領域TAの幅を半分に分割する直線となる。
図18に示すように、変形領域TAは、顔の高さ方向に関しては、概ね顎から額までの画像を含み、顔の幅方向に関しては、左右の頬の画像を含むような領域として設定される。すなわち、本実施例では、変形領域TAが概ねそのような範囲の画像を含む領域となるように、顔領域FAの大きさとの関係に基づき、上述の係数k1,k2,k3が予め設定されている。ここで変形領域設定部240は、特許請求の範囲に記載した候補領域設定部に該当すると言える。また、上述の顔領域検出部220と、顔領域調整部230と、変形領域設定部240とを合わせて候補領域設定部と呼ぶこともできる。
なお図6等では、対象画像TI中に一つだけ人顔が存在する場合を例示しているが、対象画像TI中に複数の顔が存在する場合には、上記S130〜160において、複数の顔が検出されて顔毎に、顔領域FAの設定、顔領域FAの位置調整・傾き調整、および変形領域TAの設定が行われる。
(2‐2)変形領域の除外処理:
上記S160までの処理によって対象画像TI上における変形領域TAの設定が行われたら、S170においては、除外判別部270(図1)が、後述する各種除外の条件に従って、変形領域TA毎に、変形処理の対象とする否かの判別を行い、変形処理の対象としないと判別した変形領域については変形処理の対象から除外する。つまり本実施例では、必ずしも上記S160までの処理によって設定された変形領域TAの全てを、後述する画像変形の対象とする訳ではなく、設定された変形領域TAのうち各種除外の条件に該当しないものだけを画像変形の対象とする。その結果、画像変形を行うことによるプリンタ100の処理負担量および内部メモリ120等におけるメモリ領域の消費を、適切に抑制することができる。
図27は、S170の処理内容を示したフローチャートの一例である。
S171では、第1の除外判別として、除外判別部270は変形領域TA毎に、顔領域FAの傾きに応じたサイズ規制に従って、変形処理の対象から除外するか否かを判別する。
図28は、S171の処理の詳細をフローチャートにより示している。
S1711では除外判別部270は、変形領域TA毎に、顔領域FAの傾き及びサイズを取得する。当該S1711において取得する傾きとは、対象画像TIの上下を向く垂直基準線Vsあるいは対象画像TIの水平方向を向く水平基準線Hsと、顔領域FAの基準線RLと、がなす角度の大きさを言うものとする。
図29は、S1711において、ある一つの変形領域TAを対象として顔領域FAの傾きを取得する様子を例示している。ここではまず、傾きを取得する際の比較の基準となる方向を垂直基準線Vsとするか水平基準線Hsとするかを決定する。この場合、基準線RLが、垂直基準線Vsと水平基準線Hsとのいずれの側により傾いているかによって決定する。つまり対象画像TI上において、顔の上方向が対象画像TIの略上側又は略下側を向いている場合には、垂直基準線Vsが傾きを取得する際の基準となり、顔の上方向が対象画像TIの略右側又は略左側を向いている場合には、水平基準線Hsが傾きを取得する際の基準となる。
図29に示した例では、基準線RLは対象画像TIの水平基準線Hsよりも垂直基準線Vs側により傾いているため、S1711では、垂直基準線Vsと基準線RLとがなす角度βが顔領域FAの傾きとして検出される。なお、当該角度βは、基準線RLと垂直基準線Vs(あるいは水平基準線Hs)とがなす角度の大きさであるため、正の値として取得される。S1711では顔領域FAのサイズの取得も行う。顔領域FAのサイズとしては、顔領域FAの面積など様々な値を用いることが可能である。本実施例では一例として、顔領域FAの矩形の各辺のうち、高さ方向の辺の長さ(上記Hf)を顔領域FAのサイズとする。この場合、対象画像TI上でのHfの長さを、対象画像TI上の画素数に換算して取得する。ただし、幅方向の辺の長さ(上記Wf)を顔領域FAのサイズとして取得してもよいし、上述したように顔領域FAを正方形とするならば顔領域FAの4辺のうちいずれか1辺の長さを顔領域FAのサイズとして取得するとしてもよい。
S1712では、除外判別部270は、顔領域サイズ上限値テーブル430(図1)を参照することにより、上記取得した顔領域FAの傾きに応じた顔領域FAのサイズの上限値を取得する。
図30は、顔領域サイズ上限値テーブル430の一例を示している。顔領域サイズ上限値テーブル430では、上記のように取得される顔領域FAの複数の傾きに関し、許容される顔領域FAのサイズ(本実施例においては、顔領域FAの高さ方向の辺の画素数)の上限値を予め規定したテーブルである。本実施例においては、顔領域FAの上記傾きがある所定の上限角度(角度βLと呼ぶ)に近づくほどに、その顔領域FAを含む変形領域TAの変形処理に要するメモリ消費量が増えるという事情(当該事情については後述する。)に鑑み、顔領域FAの傾きを示す値が上記角度βLに近づくほどにサイズの上限値を小さい値に規定した顔領域サイズ上限値テーブル430を採用している。
除外判別部270は、上記S1711で取得した傾き(角度β)に対応したサイズ上限値が顔領域サイズ上限値テーブル430に直接規定されていれば、当該直接規定されている上限値を読み出せばよい。一方、上記取得した傾き(角度β)に対応したサイズ上限値が顔領域サイズ上限値テーブル430に直接規定されていない場合には、規定されている他の上限値を基にした補間演算等によって、上記取得した傾き(角度β)に対応した上限値を取得すればよい。
S1713では、除外判別部270は、S1711で取得した顔領域FAのサイズがS1712で取得したサイズ上限値内であるか否か判断し、上限値を超える場合には、当該上限値を超えるサイズを持つ顔領域FAを有する変形領域TAを、変形処理の対象から除外する決定をする。この結果、対象画像TI上での傾き(角度β)に起因して変形処理に要するメモリ消費量が多くなってしまう変形領域TAを、変形処理の対象から除外することが可能となる。
次にS172では、第2の除外判別として、除外判別部270は、画像出力に用いられる複数のアスペクト比に基づく各トリミングによって対象画像TIから切り出される各トリミング画像に共通する画像範囲から、変形領域TAの少なくとも一部がはみ出るか否か判別し、少なくとも一部がはみ出る変形領域TAについては変形処理の対象から除外する処理を行なう。当該判別は、上記S171において変形処理の対象から除外すると判別されなかった変形領域TA毎に行う。
本実施例では、プリンタ100は、顔形状補正の処理を行う過程において、対象画像TIを共通する一つのサイズの画像データとして扱っている。対象画像TIの画像データは、例えば、長辺と短辺とが320×240画素(アスペクト比4:3)のQVGA(Quarter Video Graphics Array)サイズの画像データとされている。一方、プリンタ100において対象画像TIの印刷に使用可能な印刷用紙の種類は、A4サイズ、L版サイズ、レターサイズなど様々であり、印刷用紙の種類によってアスペクト比も様々である。従って、対象画像TIが印刷される際には、その画像データが、印刷に用いるものとして選択された印刷用紙のアスペクト比に基づいて適宜トリミングされることになる。
図31(a)は、対象画像TIをある印刷用紙のアスペクト比に基づいてトリミングした場合を例示している。対象画像TIを、対象画像TIのアスペクト比とは異なるアスペクト比でトリミングすると、同図に示すように、対象画像TI上に設定された変形領域TAの一部がトリミングの範囲外(ハッチングを記した部分)にはみ出てしまうこともあり得る。トリミングの範囲外にはみ出たデータ部分は切り捨てられるため、このように一部がトリミング範囲からはみ出る変形領域TAに含まれる顔を変形処理するには、当該顔を含む変形領域TAを、その全てがトリミングの範囲内に収まるように再度設定する(変形領域TAの矩形の移動や縮小を行う)必要がある。しかしこのような変形領域TAの再設定処理は、プリンタ100における処理負担増およびメモリ消費量の増大を招く。
そこで、除外判別部270は、図31(b)に示すように、対象画像TI上に、プリンタ100が使用可能な全ての印刷用紙のアスペクト比に基づいて夫々トリミングしたときに切り出される各トリミング画像に共通する、共通画像範囲CAを設定する。図31(b)では説明を容易とするために、プリンタ100が使用可能な印刷用紙のアスペクト比であって対象領域TIのアスペクト比と異なるアスペクト比が全部で2種類であるとし、当該2つのアスペクト比によって夫々トリミングしたときに切り出されずに捨てられる対象画像TI上の領域に、ハッチングを施している。つまり、同図においてハッチングが付されていない対象画像TI上の領域が共通画像範囲CAとなる。除外判別部270は、判別の対象となる変形領域TA毎に、共通画像範囲CAからはみ出ていないか判断し、一部でも共通画像範囲CAからはみ出ている変形領域TAについては、変形処理の対象から除外する決定をする。
この結果、共通画像範囲CAに全体が含まれる変形領域TAのみが変形処理の対象となり得るため、上述したような変形領域TAの再設定の必要性が無くなり、プリンタ100における処理負担増およびメモリ消費量の増大を避けることができる。また、対象画像TI中の顔が、印刷に用いる印刷用紙の種類の違い(印刷用紙のアスペクト比の違い)によって変形処理されたりされなかったりするという状況も無くなるため、ユーザに違和感を与えることもない。
次にS173では、第3の除外判別として、除外判別部270は変形領域TAについて、対象画像TI上における傾きが所定の角度範囲に属するか否か判別し、当該所定の角度範囲に属さないものについては、変形処理の対象から除外する処理を行なう。当該判別は、上記S171,172において変形処理の対象から除外すると判別されなかった変形領域TA毎に行う。
図32は、上記所定の角度範囲の一例を示している。本実施例では、水平基準線Hsの正方向(対象画像TIの右方向。0度方向。)、垂直基準線Vsの正方向(対象画像TIの上方向。90度方向。)、水平基準線Hsの負方向(対象画像TIの左方向。180度方向。)をそれぞれ中心として±15度の範囲を、上記所定の角度範囲と定めている。むろん、上記所定の角度範囲の設定は上記数値に限られない。
当該S173では、除外判別部270は、判別対象となる変形領域TAについて、その基準線RLの傾きが上記所定の角度範囲に属するか否かを判別する。この判別の際には、除外判別部270は、基準線RLの上下つまり基準線RLの両端のうちどちらの側が顔の上方向を指しているかを認識する必要がある。
ここで、公知の顔検出方法によって顔領域FAの検出を行った場合には、顔領域FAの矩形の4つの頂点の夫々について、顔の右上の点であるか、顔の左上の点であるか、顔の右下の点であるか、顔の左下の点であるかといった情報を示した頂点位置情報を得ることができる。従って、例えば顔領域検出部220は、頂点位置情報を参照して顔領域FAの右上の点と右下の点(或いは、左上の点と左下の点)を特定するとともに、基準線RLの両端側のうち上記特定した右上の点(左上の点)に近い側を、基準線RLの上方向として特定することができる。
基準線RLの両端のうちどちらの側が顔の上方向を指しているかの特定は、次のように行っても良い。図7を用いて説明したように、上記S142では、評価部234が基準領域SAにおける目の画像の位置を検出するための評価値を算出している。かかる評価値は、図9に示したように、目の位置Ehにおいて一つの極小値をとるとともに、目以外のR成分が少ない位置、つまり眉や髪の毛の画像においても極小値をとる。そして、人顔において眉や髪の毛は、目よりも上側に存在すると言える。そこで上記決定部236は、上記高さ基準点Rhを決定する処理と併せ、高さ基準点Rhの位置から見て、目の位置に対応する極小値とは別の極小値に対応する基準線RL上の位置の側を、顔の上方向と特定する処理を行う。この結果、基準線RLの両端のうちどちらの側が顔の上方向を指しているかが特定される。
このように変形領域TAの基準線RLの両端のうちどちらが顔の上方向を指しているかが特定されるため、除外判別部270はかかる特定結果に基づいて、判別対象となる変形領域TA毎に、対象画像TIの右方向(0度方向)と基準線RLの上方向とが反時計回りなす角度γが、図32に例示したような所定の角度範囲に属するか否か判別し、角度γがいずれの所定の角度範囲にも属さない変形領域TAについては、変形処理の対象から除外する決定をする。
このように、対象画像TI上における顔の傾きに基づいて、変形処理の対象とする顔をある程度限定することにより、プリンタ100における処理負担増およびメモリ消費量の増大を避けることができる。
S174では、第4の除外判別として、除外判別部270は変形領域TAについて、対象画像TI上における顔の上下の向きに基づいて、変形処理の対象とするか否かの判別を行い、ある一つの向き以外の向きに属するものについては、変形処理の対象から除外する処理を行なう。当該判別は、上記S171〜S173において変形処理の対象から除外すると判別されなかった変形領域TAを対象に行う。
図33は、S174の処理の詳細をフローチャートにより示している。
S1741では、除外判別部270は、まず、対象画像TI上の変形領域TAを、顔の上下の向きの共通性に応じてグループ分けする。上記S173までの処理によって、対象画像TI上には、顔の上方向が対象画像TIの略上側を向いている(上記角度γが対象画像TIの上方向±15度の範囲に属している)変形領域TAのグループと、顔の上方向が対象画像TIの略右側を向いている(上記角度γが対象画像TIの右方向±15度の範囲に属している)変形領域TAのグループと、顔の上方向が対象画像TIの略左側を向いている(上記角度γが対象画像TIの左方向±15度の範囲に属している)変形領域TAのグループとが存在し得る。また、S173の処理の精度次第では、稀に顔の上方向が対象画像TIの略下側を向いている(上記角度γが垂直基準線Vsの負方向±15度の範囲に属している)変形領域TAも存在し得る。
除外判別部270は、対象画像TI上の変形領域TAを、それらの基準線RLの上方向が向く角度γに応じて、上記のような上下左右の各グループに分ける。
S1742では、除外判別部270は、属する変形領域TAの数が最大であるグループが、複数存在するか否か判断する。属する変形領域TAの数が最大であるグループが一つである場合には、S1743に進み、属する変形領域TAの数が最大であるグループに属する変形領域TA以外の変形領域TAについて、変形処理の対象から除外する決定をする。
図34に例示するように対象画像TI上に複数の変形領域TAが設定されている場合においては、顔が略上側を向いている変形領域TAの数が2であり最大であるとともに、2以上の顔が略共通して向いている他の方向(右、左または下側)は存在しない。そのため、上記S1743において、略上側以外の方向を向いている変形領域TAについて変形処理の対象から除外する決定をする。
一方、S1742において、属する変形領域TAの数が最大であるグループが複数存在すると判断した場合には、除外判別部270はS1744に進み、属する変形領域TAの数が最大である各グループの中に、顔領域FAのサイズが最大である変形領域TAを含むグループが複数あるか否か判断する。顔領域FAのサイズについては上述の通りである。顔領域FAのサイズが最大である変形領域TAを含むグループが一つである場合には、S1745に進み、属する変形領域TAの数が最大であってかつ顔領域FAのサイズが最大である変形領域TAを含むグループに属する変形領域TA、以外の変形領域TAについて変形処理の対象から除外する決定をする。
図35に例示するように対象画像TI上に複数の変形領域TAが設定されている場合においては、顔が略上側を向いている変形領域TAの数と顔が略右側を向いている変形領域TAの数とがいずれも最大数(2)であり、かつ顔が略上側を向いている変形領域TAのグループの中に顔領域FAが最大のものが含まれている。そのため、上記S1745において、略上側以外の方向を向いている変形領域TAについて変形処理の対象から除外する決定をする。
一方、属する変形領域TAの数が最大である各グループの中に、顔領域FAのサイズが最大である変形領域TAを含むグループが複数存在する場合には、除外判別部270はS1746に進み、その複数のグループの中から所定の優先順位に従って一つの向きにかかるグループを選択する。そして、当該選択したグループに属する変形領域TA以外の変形領域TAについて、変形処理の対象から除外する決定をする。ここで言う所定の優先順位とは、上下左右についての順位であり、少なくとも上側を最優先としたものとする。左、右、下についての優先順は特に限られないが、例えば、下、左、右というように順位を予め付けておく。
図36に例示するように対象画像TI上に複数の変形領域TAが設定されている場合においては、顔が略上側を向いている変形領域TAと、顔が略右側を向いている変形領域TAと、顔が略左側を向いている変形領域TAとの数がいずれも同数であり、かつ顔が略上側を向いている変形領域TAと、顔が略右側を向いている変形領域TAと、顔が略左側を向いている変形領域TAとの各顔領域FAのサイズも同じである。そのため、上記S1746では上記優先順位に従い、略上側以外の方向を向いている変形領域TAについて変形処理の対象から除外する決定をする。
このようにS174の処理によれば、対象画像TI上に設定された各変形領域TAの顔の上下の向きが、略上側、略下側、略右側、略左側というようにばらばらな向きであっても、変形処理の対象とする変形領域TAの向きを、各向きにおける変形領域TAの数やサイズ、あるいは各向き間における優先順位に従って一つだけ選択する。そのため、プリンタ100における処理負担増およびメモリ消費量の増大を避けることができる。なお図33に示したフローチャートはあくまで一例であり、除外判別部270は必ずしもこのフローチャート通りのステップを踏む必要は無い。例えば、S1742において“Yes”の判断をした後に、S1744の判断行うこと無くS1746の判断に移るとしてもよい。かかる手順とすれば、S174の処理をより簡素に行うことができる。
S175では、第5の除外判別として、除外判別部270は、変形領域TAの間で重なりが生じている場合に当該重なりが解消されるように一以上の変形領域TAを変形処理の対象から除外する処理を行なう。当該判別は、上記S171〜S174において変形処理の対象から除外すると判別されなかった変形領域TAを対象に行う。
図37は、S175の処理の詳細をフローチャートにより示している。
S1751では、除外判別部270は、その時点で変形処理の対象から除外するものと判別されていない変形領域TAのうち、顔領域FAのサイズが最大の変形領域TAを一つ選択する。
S1752では、直近のS1751で選択した変形領域TAに対して重なる、その時点で変形処理の対象から除外するものと判別されていない他の変形領域TAが存在するか否か判断する。上記重なる他の変形領域TAが存在する場合には、除外判別部270はS1753に進み、上記重なる他の変形領域TAの全てについて、変形処理の対象から除外する決定をする。
S1753の後においては、あるいはS1752で“No”の判断がされた場合には、S1754に進む。S1754では除外判別部270は、過去のS1751で選択した変形領域TA以外にその時点で変形処理の対象から除外するものと判別されていない変形領域TAが存在するか否か判断する。存在すると判断した場合にはS1751に戻り、除外判別部270は、過去のS1751で選択した変形領域TA以外の変形領域TAを新たに選択し、S1752以降の処理を繰り返す。一方、過去のS1751で選択した変形領域TA以外に、その時点で変形処理の対象から除外するものと判別されていない変形領域TAが存在しない場合には、図37の処理を終了する。
図38に示すように、対象画像TI上に複数の変形領域TAが重なり合って設定されている場合を例に、図37の処理を説明すると次のようになる。図38においては、変形領域TA1〜TA6の中で変形領域TA1が最も顔領域FAのサイズが大きいため、当該変形領域TA1がまず最初にS1751で選択される。そして、変形領域TA1に対しては、変形領域TA5が重なっているため、変形領域TA5が変形処理の対象から除外される。次のS1751では、過去のS1751で選択されていない変形領域TAのうち顔領域FAのサイズが最大の変形領域TA2が選択される。変形領域TA2に対しては、変形領域TA3および変形領域TA4が重なっているため、変形領域TA3,TA4が変形処理の対象から除外される。次のS1751では、変形領域TA6が選択される。ただし、その時点で除外されずに変形領域TA6に重なっている他の変形領域TAは存在しない(S1752でNo)。また、変形領域TA1,TA2,TA6以外に、その時点で変形処理の対象から除外するものと判別されていない変形領域TAは存在しないため(S1754でNo)、図37の処理を終了する。この結果図38の例においては、変形領域TA1,TA2,TA6が除外されずに残り、変形領域TAの重なりが解消される。
ここで、対象画像TI上において一部が重なり合っている両変形領域TAをそれぞれ変形処理するには、一方の領域を先に変形処理し、後に他方の領域を変形するために、上記一方の領域にかかる変形後の画像データを、オリジナル画像(いずれの変形領域TAも変形処理していない状態の対象画像TI)とは別に保持しておく必要がある。そのため、メモリの使用量が莫大となる。本実施例では、除外判別部270は、複数の変形領域TAの中から顔領域FAのサイズの大きい順に一の変形領域TAを選択するとともに当該選択した変形領域TAに対して重なる他の変形領域TAを変形処理の対象から除外する処理を繰り返し行うことにより、変形対象となる変形領域TAが重なることを回避している。そのため、本実施例によれば、サイズが大きくユーザにとっての重要度がより高いと想定される顔を変形処理の対象として残しつつ、変形領域TAの重なりに起因する上述したようなメモリの大量消費を解消することができる。
ここで、変形領域TAの重なりを解消する手法は上述した手法に限られない。例えば、除外判別部270は、変形領域TAの重なりを解消すべく一つの変形領域TAを選択する際に、顔領域FAのサイズを基準に選択するのではなく、外部から入力された変形領域TAの選択指示に従って選択するとしてもよい。つまり、除外判別部270は、ユーザの操作部140の操作による選択指示を受付ける。この場合、除外判別部270は、対象画像TI上の変形領域TAを任意に選択可能なユーザインターフェースを表示部150に表示するように表示処理部310に指示し、当該ユーザインターフェースを介してユーザによって入力された選択指示に応じて変形領域TAを選択する。そして、当該選択した変形領域TAに対して重なる他の変形領域TAが存在する場合、当該重なる他の変形領域TAの全てについて変形処理の対象から除外する決定をする。かかる構成とすれば、ユーザが選択した変形領域TAを変形処理の対象として残しつつ、変形領域TA間の重なりを解消することができる。
S176では、第6の除外判別として、除外判別部270は、対象画像TI上の変形領域TAの数が予め定められたしきい値(最大処理数)を超えるか否か判断し、当該しきい値を超える場合には、当該しきい値に収まる数の変形領域TAを選択するとともに、選択外の変形領域TAについては、変形処理の対象から除外する決定を行う。当該判別は、上記S171〜S175において変形処理の対象から除外すると判別されなかった変形領域TAを対象に行う。上記しきい値としては様々な数値を用いることが可能であるが、本実施例ではプリンタ100の処理能力を考慮し、一例として上記しきい値を“5個”としている。
除外判別部270は、対象画像TI上の変形領域TAの数が上記しきい値を超える場合には、例えば、顔領域FAのサイズが大きい順に、しきい値以内の数の変形領域TAを選択する。その結果、サイズが大きくユーザにとっての重要度がより高いと想定される顔を変形処理の対象として残しつつ、プリンタ100の処理能力を超えた数の変形領域TAを変形処理の対象としてしまうことを回避することができる。
S177では、第7の除外判別として、除外判別部270は、外部から入力されたトリミングの指示に基づいて切り出されるトリミング画像から少なくとも一部が出る変形領域TAが存在するか否か判別し、存在する場合には当該トリミング画像から少なくとも一部が出る変形領域TAについては変形処理の対象から除外する決定を行う。当該判別は、上記S171〜S176において変形処理の対象から除外すると判別されなかった変形領域TA毎に行う。上記S172では、プリンタ100が使用可能な全印刷用紙のアスペクト比に基づいて対象画像TIをそれぞれトリミングしたときに共通して残る共通画像範囲CAからはみ出る変形領域TAについては除外するとしたが、さらにS177では、ユーザが任意に設定することが可能なトリミングの範囲からはみ出る変形領域TAについても、変形処理の対象から除外する。
上記S177においては、除外判別部270は、外部からのトリミングの指示を取得する。この場合、すでにユーザの操作部140を介した入力操作によって対象画像TIのトリミングの指示がなされている場合には、当該指示に基づいて、対象画像TI上にトリミングによって切り出される画像範囲を設定する。或いは除外判別部270は、対象画像TIに対するトリミングの設定を行うためのユーザインターフェースを表示部150に表示するように表示処理部310に指示し、当該ユーザインターフェースを介してユーザによって入力されたトリミングの指示に基づいて、対象画像TI上にトリミングによる画像範囲を設定してもよい。除外判別部270は、判別の対象となる変形領域TA毎に、上記設定したトリミングの画像範囲からはみ出ていないか判断し、一部でもはみ出ている変形領域TAについては、変形処理の対象から除外する決定をする。
上記S177の処理によれば、ユーザが指示されたトリミングによって切り出される画像範囲に全体が含まれる変形領域TAのみが変形処理の対象となり得るため、上述したような変形領域TAの再設定の必要性が無くなり、プリンタ100における処理負担増およびメモリ消費量の増大を避けることができる。ただしS177の処理は、外部からトリミングの指示が得られない場合には実行されない。
このように本実施例では、上述した第1〜第7の除外判別が上記順序によって行われ、いずれの除外判別によっても除外されずに最終的に残った変形領域TAを対象として、S180以降の処理が行われる。ただし、上記に示した第1〜第7の除外判別の順序はあくまで一例であり、除外判別部270は、各除外判別の処理をどのような順序で実施することも可能であるし、上記第1〜第7の除外判別の一部だけを実施することも可能である。
(2‐3)変形領域の分割から印刷処理まで:
S180(図4)では、変形領域分割部250(図1)が、変形領域TAを複数の小領域に分割する。図19は、変形領域TAの小領域への分割方法の一例を示す説明図である。変形領域分割部250は、変形領域TAに複数の分割点Dを配置し、分割点Dを結ぶ直線を用いて変形領域TAを複数の小領域に分割する。変形領域TAが複数存在する場合には、変形領域TA毎に小領域への分割を行う。
分割点Dの配置の態様(分割点Dの個数および位置)は、分割点配置パターンテーブル410(図1)により、S120(図4)において設定される変形タイプと対応付けて定義されている。変形領域分割部250は、分割点配置パターンテーブル410を参照し、S120において設定された変形タイプと対応付けられた態様で分割点Dを配置する。本実施例では、上述したように、変形タイプとして顔をシャープにするための変形「タイプA」(図5参照)が設定されているため、この変形タイプに対応付けられた態様で分割点Dが配置される。
図19に示すように、分割点Dは、水平分割線Lhと垂直分割線Lvとの交点と、水平分割線Lhおよび垂直分割線Lvと変形領域TAの外枠との交点とに配置される。ここで、水平分割線Lhおよび垂直分割線Lvは、変形領域TA内に分割点Dを配置するための基準となる線である。図19に示すように、顔をシャープにするための変形タイプに対応付けられた分割点Dの配置では、基準線RLと直行する2本の水平分割線Lhと、基準線RLに平行な4本の垂直分割線Lvとが設定される。2本の水平分割線Lhを、変形領域TAの下方から順に、Lh1,Lh2と呼ぶ。また、4本の垂直分割線Lvを、変形領域TAの左から順に、Lv1,Lv2,Lv3,Lv4と呼ぶ。
水平分割線Lh1は、変形領域TAにおいて、顎の画像より下方に配置され、水平分割線Lh2は、目の画像のすぐ下付近に配置される。また、垂直分割線Lv1およびLv4は、頬のラインの画像の外側に配置され、垂直分割線Lv2およびLv3は、目尻の画像の外側に配置される。なお、水平分割線Lhおよび垂直分割線Lvの配置は、水平分割線Lhおよび垂直分割線Lvと画像との位置関係が結果的に上述の位置関係となるように予め設定された変形領域TAの大きさとの対応関係に従い実行される。
上述した水平分割線Lhと垂直分割線Lvとの配置に従い、水平分割線Lhと垂直分割線Lvとの交点と、水平分割線Lhおよび垂直分割線Lvと変形領域TAの外枠との交点とに、分割点Dが配置される。図19に示すように、水平分割線Lhi(i=1または2)上に位置する分割点Dを、左から順に、D0i,D1i,D2i,D3i,D4i,D5iと呼ぶものとする。例えば、水平分割線Lh1上に位置する分割点Dは、D01,D11,D21,D31,D41,D51と呼ばれる。同様に、垂直分割線Lvj(j=1,2,3,4のいずれか)上に位置する分割点Dを、下から順に、Dj0,Dj1,Dj2,Dj3と呼ぶものとする。例えば、垂直分割線Lv1上に位置する分割点Dは、D10,D11,D12,D13と呼ばれる。
なお、図19に示すように、本実施例における分割点Dの配置は、基準線RLに対して対称の配置となっている。
変形領域分割部250は、配置された分割点Dを結ぶ直線(すなわち水平分割線Lhおよび垂直分割線Lv)により、変形領域TAを複数の小領域に分割する。本実施例では、図19に示すように、変形領域TAが15個の矩形の小領域に分割される。
なお本実施例では、分割点Dの配置は、水平分割線Lhおよび垂直分割線Lvの本数および位置により定まるため、分割点配置パターンテーブル410は水平分割線Lhおよび垂直分割線Lvの本数および位置を定義していると言い換えることも可能である。
S190(図4)では、変形処理部260(図1)が、対象画像TIの変形領域TAを対象とした画像の変形処理を行う。変形処理部260による変形処理は、S180で変形領域TA内に配置された分割点Dの位置を移動して、小領域を変形することにより行われる。S190の処理も、変形領域TAが複数存在する場合には各変形領域TAを対象として行われる。
変形処理のための各分割点Dの位置の移動態様(移動方向および移動距離)は、分割点移動テーブル420(図1)により、S120(図4)において設定される変形タイプと変形の度合いとの組み合わせに対応付けて、予め定められている。変形処理部260は、分割点移動テーブル420を参照し、S120において設定された変形タイプと変形の度合いとの組み合わせに対応付けられた移動方向および移動距離で、分割点Dの位置を移動する。
本実施例では、上述したように、変形タイプとして顔をシャープにするための変形「タイプA」(図5参照)が設定され、変形度合いとして程度「中」の度合いが設定されているため、これらの変形タイプおよび変形度合いの組み合わせに対応付けられた移動方向および移動距離で、分割点Dの位置が移動されることとなる。
図20は、分割点移動テーブル420の内容の一例を示す説明図である。また図21は、分割点移動テーブル420に従った分割点Dの位置の移動の一例を示す説明図である。図20には、分割点移動テーブル420により定義された分割点Dの位置の移動態様の内、顔をシャープにするための変形タイプと程度「中」の変形度合いとの組み合わせに対応付けられた移動態様を示している。図20に示すように、分割点移動テーブル420には、各分割点Dについて、基準線RLと直行する方向(H方向)および基準線RLと平行な方向(V方向)に沿った移動量が示されている。なお、本実施例では、分割点移動テーブル420に示された移動量の単位は、対象画像TIの画素ピッチPPである。また、H方向については、向かって右側への移動量が正の値として表され、向かって左側への移動量が負の値として表され、V方向については、顔の上方への移動量が正の値として表され、顔の下方への移動量が負の値として表される。例えば、分割点D11は、H方向に沿って右側に画素ピッチPPの7倍の距離だけ移動され、V方向に沿って上方に画素ピッチPPの14倍の距離だけ移動される。また、例えば分割点D22は、H方向およびV方向共に移動量がゼロであるため、移動されない。
なお、本実施例では、変形領域TAの内外の画像間の境界が不自然とならないように、変形領域TAの外枠上に位置する分割点D(例えば図21に示す分割点D10等)の位置は移動されないものとしている。従って、図20に示した分割点移動テーブル420には、変形領域TAの外枠上に位置する分割点Dについての移動態様は定義されていない。
図21では、移動前の分割点Dは白抜きの丸で、移動後の分割点Dや位置の移動の無い分割点Dは黒丸で示されている。また、移動後の分割点Dは分割点D’と呼ばれるものとする。例えば分割点D11の位置は、図21において右上方向に移動され、分割点D’11となる。
なお、本実施例では、基準線RLに対して対称な位置関係にある2つの分割点Dの組み合わせ(例えば分割点D11とD41との組み合わせ)のすべてが、分割点Dの移動後も、基準線RLに対して対称な位置関係を維持するように、移動態様が定められている。
変形処理部260は、変形領域TAを構成する各小領域について、分割点Dの位置移動前の状態における小領域の画像が、分割点Dの位置移動により新たに定義された小領域の画像となるように、画像の変形処理を行う。例えば、図21において、分割点D11,D21,D22,D12を頂点とする小領域(ハッチングを付して示す小領域)の画像は、分割点D’11,D’21,D22,D’12を頂点とする小領域の画像に変形される。
図22は、変形処理部260による画像の変形処理方法の概念を示す説明図である。図22では、分割点Dを黒丸で示している。図22では、説明を簡略化するために、4つの小領域について、左側に分割点Dの位置移動前の状態を、右側に分割点Dの位置移動後の状態を、それぞれ示している。図22の例では、中央の分割点Daが分割点Da’の位置に移動され、その他の分割点Dの位置は移動されない。これにより、例えば、分割点Dの移動前の分割点Da,Db,Dc,Ddを頂点とする矩形の小領域(以下「変形前注目小領域BSA」とも呼ぶ)の画像は、分割点Da’,Db,Dc,Ddを頂点とする矩形の小領域(以下「変形後注目小領域ASA」とも呼ぶ)の画像に変形される。
本実施例では、矩形の小領域を小領域の重心CGを用いて4つの三角形領域に分割し、三角形領域単位で画像の変形処理を行っている。図22の例では、変形前注目小領域BSAが、変形前注目小領域BSAの重心CGを頂点の1つとする4つの三角形領域に分割される。同様に、変形後注目小領域ASAが、変形後注目小領域ASAの重心CG’を頂点の1つとする4つの三角形領域に分割される。そして、分割点Daの移動前後のそれぞれの状態において対応する三角形領域毎に、画像の変形処理が行われる。例えば、変形前注目小領域BSA中の分割点Da,Ddおよび重心CGを頂点とする三角形領域の画像が、変形後注目小領域ASA中の分割点Da’,Ddおよび重心CG’を頂点とする三角形領域の画像に変形される。
図23は、三角形領域における画像の変形処理方法の概念を示す説明図である。図23の例では、点s,t,uを頂点とする三角形領域stuの画像が、点s’,t’,u’を頂点とする三角形領域s’t’u’の画像に変形される。画像の変形は、変形後の三角形領域s’t’u’の画像中のある画素の位置が、変形前の三角形領域stuの画像中のどの位置に相当するかを算出し、算出された位置における変形前の画像における画素値を変形後の画像の画素値とすることにより行う。
例えば、図23において、変形後の三角形領域s’t’u’の画像中の注目画素p’の位置は、変形前の三角形領域stuの画像中の位置pに相当するものとする。位置pの算出は、以下のように行う。まず、注目画素p’の位置を、下記の式(1)のようにベクトルs’t’とベクトルs’u’との和で表現するための係数m1およびm2を算出する。
次に、算出された係数m1およびm2を用いて、下記の式(2)により、変形前の三角形領域stuにおけるベクトルstとベクトルsuとの和を算出することにより、位置pが求まる。
変形前の三角形領域stuにおける位置pが、変形前の画像の画素中心位置に一致した場合には、当該画素の画素値が変形後の画像の画素値とされる。一方、変形前の三角形領域stuにおける位置pが、変形前の画像の画素中心位置からはずれた位置となった場合には、位置pの周囲の画素の画素値を用いたバイキュービック等の補間演算により、位置pにおける画素値を算出し、算出された画素値が変形後の画像の画素値とされる。
変形後の三角形領域s’t’u’の画像中の各画素について上述のように画素値を算出することにより、三角形領域stuの画像から三角形領域s’t’u’の画像への画像変形処理を行うことができる。変形処理部260は、図21に示した変形領域TAを構成する各小領域について、上述したように三角形領域を定義して変形処理を行い、変形領域TAにおける画像変形処理を行う。
ここで、本実施例の顔形状補正の態様についてより詳細に説明する。図24は、本実施例における顔形状補正の態様を示す説明図である。本実施例では、上述したように、変形タイプとして顔をシャープにするための変形「タイプA」(図5参照)が設定され、変形度合いとして程度「中」の度合いが設定されている。図24には、変形領域TAを構成する各小領域の変形態様のイメージを矢印により示している。
図24に示すように、本実施例の顔形状補正では、基準線RLと平行な方向(V方向)に関し、水平分割線Lh1上に配置された分割点D(D11,D21,D31,D41)の位置は上方に移動される一方、水平分割線Lh2上に配置された分割点D(D12,D22,D32,D42)の位置は移動されない(図20参照)。従って、水平分割線Lh1と水平分割線Lh2との間に位置する画像は、V方向に関して縮小される。上述したように、水平分割線Lh1は顎の画像より下方に配置され、水平分割線Lh2は目の画像のすぐ下付近に配置されるため、本実施例の顔形状補正では、顔の画像の内、顎から目の下にかけての部分の画像がV方向に縮小されることとなる。この結果、画像中の顎のラインは上方に移動する。
他方、基準線RLと直行する方向(H方向)に関しては、垂直分割線Lv1上に配置された分割点D(D11,D12)の位置は右方向に移動され、垂直分割線Lv4上に配置された分割点D(D41,D42)の位置は左方向に移動される(図20参照)。さらに、垂直分割線Lv2上に配置された2つの分割点Dの内、水平分割線Lh1上に配置された分割点D(D21)の位置は右方向に移動され、垂直分割線Lv3上に配置された2つの分割点Dの内、水平分割線Lh1上に配置された分割点D(D31)の位置は左方向に移動される(図20参照)。従って、垂直分割線Lv1より左側に位置する画像は、H方向に関して右側に拡大され、垂直分割線Lv4より右側に位置する画像は、左側に拡大される。また、垂直分割線Lv1と垂直分割線Lv2との間に位置する画像は、H方向に関して縮小または右側に移動され、垂直分割線Lv3と垂直分割線Lv4との間に位置する画像は、H方向に関して縮小または左側に移動される。さらに、垂直分割線Lv2と垂直分割線Lv3との間に位置する画像は、水平分割線Lh1の位置を中心にH方向に関して縮小される。
上述したように、垂直分割線Lv1およびLv4は、頬のラインの画像の外側に配置され、垂直分割線Lv2およびLv3は、目尻の画像の外側に配置される。そのため、本実施例の顔形状補正では、顔の画像の内、両目尻より外側の部分の画像が全体的にH方向に縮小される。特に顎付近において縮小率が高くなる。この結果、画像中の顔の形状は、全体的に幅方向に細くなる。
上述したH方向およびV方向の変形態様を総合すると、本実施例の顔形状補正により、対象画像TI中の顔の形状がシャープになる。なお、顔の形状がシャープになるとは、いわゆる「小顔」になると表現することもできる。
なお、図24に示す分割点D22,D32,D33,D23を頂点とする小領域(ハッチングを付した領域)は、上述した水平分割線Lh2や垂直分割線Lv2およびLv3の配置方法によると、両目の画像を含む領域となる。図20に示すように、分割点D22およびD32はH方向にもV方向にも移動されないため、この両目の画像を含む小領域は変形されない。このように本実施例では、両目の画像を含む小領域については変形しないこととし、顔形状補正後の画像がより自然で好ましいものとなるようにしている。
S200(図4)では、顔形状補正部200(図1)が、顔形状補正後の対象画像TIを表示部150に表示するよう表示処理部310に指示する。図25は、顔形状補正後の対象画像TIが表示された表示部150の状態の一例を示す説明図である。顔形状補正後の対象画像TIが表示された表示部150により、ユーザは、補正結果を確認することができる。ユーザが補正結果に満足せず「戻る」ボタンを選択した場合には、例えば表示部150に図5に示した変形タイプおよび変形度合いを選択する画面が表示され、ユーザによる変形タイプや変形度合いの再度の設定が実行される。ユーザが補正結果に満足し、「印刷」ボタンを選択した場合には、以下の補正画像印刷処理が開始される。
S300(図3)では、印刷処理部320(図1)が、プリンタエンジン160を制御して、顔形状補正処理後の対象画像TIの印刷を行う。図26は、本実施例における補正画像印刷処理の流れを示すフローチャートである。印刷処理部320は、顔形状補正処理後の対象画像TIの画像データの解像度を、プリンタエンジン160による印刷処理に適した解像度に変換し(S310)、解像度変換後の画像データを、プリンタエンジン160における印刷に用いられる複数のインク色で階調表現されたインク色画像データに変換する(S320)。なお、本実施例では、プリンタエンジン160における印刷に用いられる複数のインク色は、シアン(C)、マゼンタ(M)、イエロー(Y)、ブラック(K)の4色であるものとする。さらに、印刷処理部320は、インク色画像データにおける各インク色の階調値に基づいてハーフトーン処理を実行することによって、印刷画素毎のインクドットの形成状態を示すドットデータを生成し(S330)、ドットデータを配列して印刷データを生成する(S340)。印刷処理部320は、生成された印刷データをプリンタエンジン160に供給し、プリンタエンジン160に対象画像TIの印刷を行わせる(S350)。これにより、顔形状補正後の対象画像TIの印刷が完了する。
以上説明したように、本実施例のプリンタ100による顔形状補正印刷処理では、対象画像TI上に設定された変形領域TA内に複数の分割点Dが配置され、分割点D同士を結ぶ直線(水平分割線Lhおよび垂直分割線Lv)を用いて変形領域TAが複数の小領域に分割される。また、分割点Dの位置が移動され、小領域が変形されることにより変形領域TA内の画像の変形処理が実行される。このように、本実施例のプリンタ100による顔形状補正印刷処理では、変形領域TA内に分割点Dを配置して、配置された分割点Dを移動するだけで画像変形を行うことができ、多様な変形態様に対応した画像変形を、容易に、かつ効率的に実現することができる。
また本実施例によれば、顔領域検出に基づいて対象画像TI上に設定された変形領域TAのうち、上述の各除外判別のいずれによっても変形処理の対象から除外するものと判別されなかった変形領域TAを対象として、画像の変形処理を行なう。そのため、従来、顔領域検出に基づいて対象画像TI上に設定された変形領域TAの全てに対し変形処理を実行していたことによって生じていた、プリンタ100のCPU110に対する過剰な処理負担やメモリの大量消費を、適切に抑制することができる。特に、プリンタ100が上述したような複合機である場合には、顔形状補正印刷処理のために確保できるリソースも限られるため、本実施例のように変形処理の対象とする変形領域TAを限定することは、プリンタ100の安定した稼動の実現に繋がる。
(3)追加の説明および他の実施例:
上記S171の説明の際に述べた、顔領域FAの傾き(角度β)がある所定の上限角度(角度βL)に近づくほどに変形領域TAの変形処理に要するメモリ消費量が増える、という事情について説明する。
図39(a)は、垂直基準線Vsと基準線RLとがなす角度βが0度である変形領域TAの一部を示しており、図39(b)は、垂直基準線Vsと基準線RLとがなす角度βが0度より大きい所定の角度(例えば、角度β2。)である変形領域TAの一部分を示している。
ここで、上記S190の変形処理の過程においては、変形処理部260は、変形後の対象画像TIのデータを垂直基準線Vsに直交する行(画素行)単位で順次生成する。つまり、変形後の画像の各画素に対応する画素値を変形前の対象画像TI(オリジナル画像)から取得する処理を、画素行毎に順次行うことにより、変形が施された一枚の対象画像TIを最終的に得る。この画素行毎の生成を行なう過程においては、プリンタ100は、1つの画素行を生成する処理の間、当該1つの画素行の各画素に対応する画素値を取得するために必要なオリジナル画像上の所定範囲のデータを、一時的に内部メモリ200内等の所定のバッファ領域に保存して変形処理に利用することとなる。従って、変形後の1つの画素行の各画素に対応する画素値を取得するために必要なオリジナル画像上の範囲が広ければ広いほど、プリンタ100内におけるメモリ消費量が増えるということになる。
図39(a),(b)では、分割点D11,D21を含む変形領域TAの左下の領域を中心に示している。分割点D11,D21(基準線RLより右側の分割点D31,41も同様。)は、本実施例の変形処理において変形前後の移動距離dが最も長い分割点である(分割点移動テーブル420を参照。)ため、このような移動距離の長い分割点Dの移動を例に、変形処理に要するメモリ量の違いを説明する。
例えば、S190の変形処理において、図39(a)に示した分割点D’21を含む画素行L1を生成するには、少なくとも分割点D’21の移動前の分割点D21にかかるオリジナル画像上のデータが必要となる。また、画素行L1を生成するには、分割点D’21以外の画素行L1上の他の画素についても画素値をオリジナル画像から取得する必要があるため、オリジナル画像における、画素行L1と同位置の画素行のデータや、分割点D21ほどは離れてないが画素行L1からある程度離れた位置の画素行のデータが必要となる。
そのため、画素行L1の生成の際には、オリジナル画像内のデータであって、少なくとも画素行L1と同位置の画素行から分割点D21を含む画素行までの幅(Vband1)分の画像データを、上記のように一時的にバッフ領域に保存して変形処理に利用することとなる。一方、図39(b)のように、変形領域TAが対象画像TI上で傾いている状況において、分割点D’21を含む画素行L2を生成する場合にも、分割点D’21の移動前の分割点D21にかかるオリジナル画像上のデータ等、が必要となる。従って、画素行L2の生成の際には、オリジナル画像内のデータであって、少なくとも画素行L2と同位置の画素行から分割点D21を含む画素行までの幅(Vband2)分の画像データを、一時的にバッフ領域に保存して変形処理に利用することとなる。
変形領域TAが垂直基準線Vsに対し傾いていても傾いていなくても、各分割点Dの移動距離dは変らない。しかし、本実施例の変形処理においては、図24等の説明からも判るように、変形前後で移動する各点の殆どは基準線RLに対して平行な方向ではなく基準線RLに対して斜めの方向に移動する。分割点D21も、基準線RLと平行な移動ではなく変形領域TA内において右上方向に移動する。従って、変形領域TAが図39(b)のように垂直基準線Vsに対し傾くことで、分割点D21の移動方向が垂直基準線Vsに対し平行な状態に近づき、移動前後の分割点D21,D’21間の垂直基準線Vsに平行な方向における距離が長くなる。つまり、図39(a),(b)に示したように、変形領域TAが垂直基準線Vsに対し傾き0度のときは、分割点D’21を含む画素行L1の生成に必要なバッファ領域は、オリジナル画像におけるVband1分の画像データを記憶可能な容量で済むが、変形領域TAが垂直基準線Vsに対しβ2の傾きを有するときは、分割点D’21を含む画素行L2の生成に必要なバッファ領域は、Vband1よりバンド幅の大きいVband2分の画像データを記憶可能な容量となってしまう。
なお本実施例では、変形領域TA内の変形処理は、中央の基準線RLを挟んで左右対称に行われる。そのため、図39(b)のように、変形領域TAが垂直基準線Vsに対して傾いている場合、基準線RLを挟んで対称関係にある左右の分割点D(例えば、分割点D21と分割点D31との関係)については、一方の移動方向は垂直基準線Vsに対し略平行に近い状態となり、他方の移動方向は垂直基準線Vsに対し略垂直に近い状態となる。しかしながら、画像変形処理のために確保しなければ成らないバッファ領域のサイズは、必要となる最大量に対応したものでなければならないため、結局、図39(a)の場合よりも、図39(b)の場合に変形処理を行なう方が、必要とされるバッファ領域のサイズは大きいものとなってしまう。また上記では、基準線RLと垂直基準線Vsとの関係で説明を行ったが、基準線RLと水平基準線Hsとの関係においても同様のことが言える。つまり、基準線RLが水平基準線Hsと平行である場合と比較して、基準線RLと水平基準線Hsとの間にある角度βが生じている場合の方が、上記分割点D11,21(あるいは分割点D31,42)等の移動方向が垂直基準線Vsと平行な状態に近づくからである。
このように本実施例においては、顔領域FAのサイズが同じであっても、変形前後における分割点Dの移動方向が、対象画像TI上における顔領域FA(変形領域TA)の傾きに起因して垂直基準線Vsあるいは水平基準線Hsと平行な状態になっているほど、変形処理に多くのメモリが必要になると言える。そこで本実施例では、上述したように、顔領域FAの傾き(角度β)が上限角度βLに近いほど、変形処理の対象とし得る顔領域FAのサイズの上限値を小さい値とし、プリンタ100におけるメモリ消費の抑制を図っているのである。
なお、上限角度βLの値は、変形前後の移動距離が長い分割点Dについての変形領域TA内での移動方向に基づいて規定することができる。例えば、分割点移動テーブル420に規定された分割点D21のH方向(基準線RLと直交する方向)およびV方向(基準線RLと平行な方向)への移動距離に基づいて、分割点D21の変形領域TA内における移動方向を特定し、当該分割点D21の移動方向とV方向とがなす角度を上限角度βLとすることができる。また、変形領域TA内における各分割点Dの移動方向は、S120において設定される変形の度合い等によっても異なり得るため、上限角度βL(上限角度βLなどを規定した顔領域サイズ上限値テーブル430)を、S120において設定される変形の度合い等ごとに規定しておいてもよい。
あるいは、上記S171の後に行われるS173の処理(第3の除外判別)を考慮して上限角度βLの値を設定してもよい。本実施例では、第3の除外判別を経る以上、水平基準線Hsの正方向と基準線RLの上方向とがなす上記角度γが、水平基準線Hsの正方向、垂直基準線Vsの正方向、水平基準線Hsの負方向をそれぞれ中心とした±15度の範囲に属する変形領域TAしか変形処理の対象として残らない。そのため、上記15度という数値を上限角度βLとしても差し支えない。なお、上限角度βLが15度と設定されている状況で、上記S1711(図28)において角度βとして15度より大きい値が検出された場合には、その角度βを検出した変形領域TAについてはそれ以上第1の除外判別を続行する必要はない。この場合、その角度βを検出した変形領域TAについては第3の除外判別によって変形対象から除外する決定がなされる。
また、対象画像TI上における顔の上下の向きがばらばらである場合にも、変形後の画素行の各画素に対応する画素値を取得するために必要なオリジナル画像上の範囲が拡大してしまい、変形処理にかかる負担が増加する。例えば、図39(a)に示した画素行L1上であって同図に示した変形領域TAよりも右側あるいは左側の位置に、別の変形領域TA(不図示)が存在している場合を想定する。当該別の変形領域TAの上の向きが、図39(a)に示した変形領域TAの上の向きと共通していれば(両方の変形領域TAの上の向きが、対象画像TIの略上側を向いていれば)、画素行L1の各画素の画素値を取得するために必要なオリジナル画像上の範囲は、およそ、画素行L1および画素行L1より下方の複数の画素行からなる画素行の束に限定される。しかし、当該別の変形領域TAの上の向きが、略下側や略右側や略左側を向いていると、変形領域TA毎に、領域内の画素の移動方向の傾向が異なることになる。そのため、画素行L1の各画素の画素値を取得するために必要なオリジナル画像上の範囲は、画素行L1の上方及び下方にそれぞれ拡大されがちであり、その結果、多くのバッファを必要としてしまう。そこで、本実施例では上述したように、変形処理の対象とする変形領域TAの顔の向きを略統一し(第4の除外判別)、対象画像TI上における顔の上下の向きがばらばらであることに起因するメモリ消費量の増大を防いでいる。
さらに他の実施例として、除外判別部270は、第1〜第7の除外判別の最中において、逐一、プリンタ100内のメモリにおける使用可能な空き容量を検知するようにしてもよい。そして、検知した空き容量が、その時点で変形処理の対象から除外されていない全ての変形領域TAについて変形処理を行うために必要十分な容量であると判断した場合には、S170の処理を途中で中断し、その時点で変形処理の対象から除外されていない全ての変形領域TAを、S180以降の処理の対象とするとしてもよい。
なお、この発明は上記実施例に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能である。
上記実施例では、画像処理装置としてのプリンタ100による顔形状補正印刷処理を説明したが、顔形状補正印刷処理は例えば、顔形状補正(S100)がパーソナルコンピュータにより実行され、印刷処理(S300)のみがプリンタにより実行されるとしてもよい。また、プリンタ100はインクジェットプリンタに限らず、他の方式のプリンタ、例えばレーザプリンタや昇華型プリンタであるとしてもよい。
100…プリンタ、110…CPU、120…内部メモリ、140…操作部、150…表示部、160…プリンタエンジン、170…カードインターフェース、172…カードスロット、200…顔形状補正部、210…変形態様設定部、212…指定取得部、220…顔領域検出部、230…顔領域調整部、232…基準領域設定部、234…評価部、236…決定部、240…変形領域設定部、250…変形領域分割部、260…変形処理部、270…除外判別部、310…表示処理部、320…印刷処理部、410…分割点配置パターンテーブル、420…分割点移動テーブル、430…顔領域サイズ上限値テーブル