画像処理装置および画像処理方法
【課題】画像変形処理に要するメモリ量を低減する技術を提供する。
【解決手段】画像処理装置は、変形前画像から画像領域内に変形後画像を生成する処理部を備える。この処理部は、画像領域の一部を構成する対象ブロックを設定する。そして、対象ブロックに対応づけられた変形前画像内の参照ブロックの画像を参照して対象ブロック内に画像を生成する。変形後画像の全体は、対象ブロックを画像領域内で順次移動して、移動後の対象ブロック内の画像を生成することにより生成される。この対象ブロックの画像の生成に先立って、参照ブロックの最大ブロックサイズが算出され、その大きさの画像を格納しうるように、メモリ領域が確保される。対象ブロックの画像は、対象ブロックに対応づけられた参照ブロックの画像をメモリ領域に格納するとともに、メモリ領域に格納された参照ブロックの画像を参照して生成される。
【解決手段】画像処理装置は、変形前画像から画像領域内に変形後画像を生成する処理部を備える。この処理部は、画像領域の一部を構成する対象ブロックを設定する。そして、対象ブロックに対応づけられた変形前画像内の参照ブロックの画像を参照して対象ブロック内に画像を生成する。変形後画像の全体は、対象ブロックを画像領域内で順次移動して、移動後の対象ブロック内の画像を生成することにより生成される。この対象ブロックの画像の生成に先立って、参照ブロックの最大ブロックサイズが算出され、その大きさの画像を格納しうるように、メモリ領域が確保される。対象ブロックの画像は、対象ブロックに対応づけられた参照ブロックの画像をメモリ領域に格納するとともに、メモリ領域に格納された参照ブロックの画像を参照して生成される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像に変形処理を施す画像処理技術に関する。
【背景技術】
【0002】
画像を変形するための画像変形処理では、変形後の画像を構成する画素(参照元画素)を変形元の画像の画素(参照先画素)に対応付け(「マッピング」と呼ばれる)、参照元画素の画素値を参照先画素の画素値に設定することが行われる。
【0003】
このようにマッピングを用いた画像変形処理では、参照元画素と参照先画素との位置関係は、変形処理の内容によっては、変形後の画像中の参照元画素の位置によって変化する。そのため、マッピングを用いた画像変形処理では、従来、変形前後の画像全体を格納しうるメモリ領域を確保し、確保されたメモリ領域において変形処理が施されていた。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−318204
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、変形対象の画像の大きさや画像処理を行う画像処理装置のメモリ容量によっては、変形前後の画像全体を格納可能なメモリ領域を確保することができず、変形処理が行えない場合が発生する。
【0006】
本発明は、上述した従来の課題を解決するためになされたものであり、画像を変形するための画像変形処理に要するメモリ量を低減することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
【0008】
[適用例1]
画像処理装置であって、変形前画像に変形処理を施して、変形後画像領域内に変形後画像を生成する画像変形処理部を備え、前記画像変形処理部は、前記変形後画像領域の一部を構成し、前記変形処理のデスティネーションとなる対象ブロックを設定する対象ブロック設定部と、前記対象ブロックに対応づけられ、前記変形処理のソースとなる前記変形前画像内の参照ブロックに含まれる画像を参照することにより、前記対象ブロック内に画像を生成するブロック変形処理部と、前記対象ブロックを前記変形後画像領域内の異なる位置に順次移動して、移動後の前記対象ブロック内の画像を前記ブロック変形処理部に生成させることにより、前記変形後画像の全体を生成するブロック走査部と、前記ブロック変形処理部による前記対象ブロックの画像の生成に先立って、前記対象ブロックが配置される全ての位置における前記参照ブロックの最大ブロックサイズを算出する最大ブロックサイズ算出部と、前記最大ブロックサイズ算出部により算出された最大ブロックサイズの大きさの画像を格納しうるように、ソースメモリ領域を確保するソースメモリ領域確保部と、を備え、前記ブロック変形処理部は、前記対象ブロックに対応づけられた前記参照ブロックに含まれる画像を前記ソースメモリ領域に格納するとともに、前記ソースメモリ領域に格納された前記参照ブロックに含まれる画像を参照して前記対象ブロックの画像を生成する、画像処理装置。
【0009】
この適用例では、ブロック変形処理部による対象ブロックの画像の生成に先立って、対象ブロックが配置される全ての位置における参照ブロックの最大ブロックサイズが算出される。そして、最大ブロックサイズの大きさの画像を格納しうるように、ソースメモリ領域が確保される。そのため、ソースメモリ領域には、対象ブロック内の画像の生成に要する変形前画像を格納することができるので、変形処理をブロック単位で行うことができる。変形処理をブロック単位で行うことにより、変形処理に使用されるメモリ領域を小さくすることができ、画像変形処理に要するメモリ量を低減することができる。
【0010】
[適用例2]
適用例1記載の画像処理装置であって、前記画像変形処理部は、元画像に前記変形処理をN回(Nは、2以上の整数)施すことによって、多重変形後画像を生成することが可能であり、前記最大ブロックサイズ算出部は、前記多重変形後画像の画像領域内に設定される個々の対象ブロックから参照される前記N回の変形処理におけるN個の参照ブロックの論理和をとった上限ブロックサイズを前記N回の変形処理に先立って算出する上限ブロックサイズ算出部を有し、前記メモリ領域確保部は、個々の変形処理に対応して前記上限ブロックサイズの大きさの画像を格納しうるN個のソースメモリ領域を確保し、前記N個のソースメモリ領域のうち、i(iは、1以上かつN以下の整数)番目のソースメモリ領域は、i回目の変形処理のソースとして使用され、i−1回目の変形処理のデスティネーションとして使用される、画像処理装置。
【0011】
この適用例では、個々の変形処理に対応して上限ブロックサイズの大きさの画像を格納しうるN個のソースメモリ領域が確保される。そのため、N回の変形処理のいずれにおいても、変形処理のデスティネーション画像の生成に要するソース画像をソースメモリ領域に格納することができる。そのため、複数回の変形処理を行う場合においても、変形処理をブロック単位で行うことができ、画像変形処理に要するメモリ量を低減することができる。
【0012】
なお、本発明は、種々の態様で実現することが可能であり、例えば、画像処理方法および装置、画像変形方法および装置、画像補正方法および装置、これらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態で実現することができる。
【図面の簡単な説明】
【0013】
【図1】本発明の一実施例としての画像処理装置が適用されるプリンタの構成を概略的に示す説明図。
【図2】画像の一覧表示を含むユーザインタフェースの一例を示す説明図である。
【図3】プリンタにおいて顔形状補正印刷を行う際に実行される顔形状補正印刷ルーチンを示すフローチャート。
【図4】画像変形のタイプおよび度合いを設定するためのユーザインタフェースの一例を示す説明図。
【図5】変形領域の設定結果の一例を示す説明図。
【図6】2つの変形領域のそれぞれが小領域に分割される様子を示す説明図。
【図7】変形パラメータが設定される様子を示す説明図。
【図8】ステップS150において、2つの変形領域2のそれぞれについて変形パラメータが設定された様子を示す説明図。
【図9】ステップS200において実行されるバンドバッファ確保処理の流れを示すフローチャート。
【図10】画像を変形する際に必要なバンド幅を示す説明図。
【図11】図9のステップS210において実行される最大バンド幅の算出処理の流れを示すフローチャート。
【図12】複数の変形処理が行われる際に必要なバンド幅を示す説明図。
【図13】ステップS300において実行されるライン変形処理の流れを示すフローチャート。
【図14】ライン変形処理により変形済の画像が生成される様子を示す説明図。
【図15】ステップS330において実行される参照範囲の変形済画像生成処理の流れを示すフローチャート。
【図16】画像の変形処理が行われる際のバンドバッファの状態を示す説明図。
【発明を実施するための形態】
【0014】
次に、本発明の実施の形態を実施例に基づいて以下の順序で説明する。
A.実施例:
B.変形例:
【0015】
A.実施例:
図1は、本発明の一実施例としての画像処理装置が適用されるプリンタ100の構成を概略的に示す説明図である。プリンタ100は、メモリカードMC等から取得した画像データに基づき画像を印刷する、いわゆるダイレクトプリントに対応したカラーインクジェットプリンタである。プリンタ100は、プリンタ100の各部を制御するCPU110と、例えばROMやRAMによって構成された内部メモリ120と、ボタンやタッチパネルにより構成された操作部140と、液晶ディスプレイにより構成された表示部150と、プリンタエンジン160と、カードインタフェース(カードI/F)170と、を備えている。プリンタ100は、さらに、他の機器(例えば、デジタルスチルカメラやパーソナルコンピュータ)とのデータ通信を行うためのインタフェースを備えているものとしてもよい。プリンタ100の各構成要素は、バスを介して互いに接続されている。
【0016】
プリンタエンジン160は、印刷データに基づき印刷を行う印刷機構である。カードインタフェース170は、カードスロット172に挿入されたメモリカードMCとの間でデータのやり取りを行うためのインタフェースである。なお、本実施例では、メモリカードMCにRGBデータとしての画像データが格納されており、プリンタ100は、カードインタフェース170を介してメモリカードMCに格納された画像データの取得を行う。
【0017】
内部メモリ120には、顔形状補正部200と、表示処理部310と、印刷処理部320とが格納されている。顔形状補正部200は、所定のオペレーティングシステムの下で、後述する顔形状補正処理を実行するためのコンピュータプログラムである。表示処理部310は、表示部150を制御して、表示部150上に処理メニューやメッセージを表示させるディスプレイドライバである。印刷処理部320は、画像データから印刷データを生成し、プリンタエンジン160を制御して、印刷データに基づく画像の印刷を実行するためのコンピュータプログラムである。CPU110は、内部メモリ120から、これらのプログラムを読み出して実行することにより、これら各部の機能を実現する。
【0018】
顔形状補正部200は、プログラムモジュールとして、変形態様設定部210と、変形領域設定部220と、変形領域分割部230と、変形パラメータ設定部240と、分割領域変形部250と、を含んでいる。分割領域変形部250は、最大バンド幅算出部252と、バンドバッファ割付部254と、変形処理部256と、を含んでいる。これらの各部の機能については、後述する。
【0019】
内部メモリ120には、また、分割点配置パターンテーブル410と分割点移動テーブル420とが格納されている。バンドバッファ430は、後述するようにバンドバッファ割付部254により、内部メモリ120内に確保される記憶領域である。分割点配置パターンテーブル410および分割点移動テーブル420の内容ならびにバンドバッファ430の機能については、後述する。
【0020】
プリンタ100は、メモリカードMCに格納された画像データに基づき、画像の印刷を行う。カードスロット172にメモリカードMCが挿入されると、表示処理部310により、メモリカードMCに格納された画像の一覧表示を含むユーザインタフェースが表示部150に表示される。図2は、画像の一覧表示を含むユーザインタフェースの一例を示す説明図である。なお、本実施例では、画像の一覧表示は、メモリカードMCに格納された画像データ(画像ファイル)に含まれるサムネイル画像を用いて実現される。図2に示すユーザインタフェースには、8つのサムネイル画像TN1〜TN8と、5つのボタンBN1〜BN5が表示されている。
【0021】
ユーザが、図2に示すユーザインタフェース上で画像を選択し、通常印刷ボタンBN3を操作すると、プリンタ100は、選択された画像を通常通り印刷する通常印刷処理を実行する。一方、ユーザがユーザインタフェース上で、画像を選択し、顔形状補正印刷ボタンBN4を操作すると、プリンタ100は、選択された画像について、画像中の顔の形状を補正して補正後の画像を印刷する顔形状補正印刷処理を実行する。図2の例では、サムネイル画像TN1が選択され、顔形状補正印刷ボタンBN4が操作されている。そのため、プリンタ100は、サムネイル画像TN1に対応する画像について顔の形状を補正して補正後の画像を印刷する。
【0022】
図3は、プリンタ100が顔形状補正印刷を行う際に実行される顔形状補正印刷処理の流れを示すフローチャートである。この顔形状補正印刷処理は、上述のように、図2に示すユーザインタフェース上でのユーザの顔形状補正印刷ボタンBN4の操作に応じて、プリンタ100により実行される。
【0023】
ステップS110において、顔形状補正部200(図1)は、顔形状補正処理の対象となる対象画像を設定する。顔形状補正部200は、図2に示したユーザインタフェースにおいてユーザにより選択されたサムネイル画像TN1に対応する画像を対象画像として設定する。なお、以下では、顔形状の補正の対象となる元の画像を「元画像」とも呼び、元画像を表す画像データを「元画像データ」とも呼ぶ。
【0024】
ステップS120では、変形態様設定部210(図1)が、顔形状補正のための画像変形のタイプと画像変形の度合いとを設定する。変形態様設定部210は、画像変形のタイプおよび度合いを設定するためのユーザインタフェースを表示部150に表示するように表示処理部310に指示し、当該ユーザインタフェースを通じてユーザにより指定された画像変形のタイプおよび度合いを選択し、処理に使用する画像変形タイプおよび度合いとして設定する。
【0025】
図4は、画像変形のタイプおよび度合いを設定するためのユーザインタフェースの一例を示す説明図である。図4に示すように、このユーザインタフェースには、画像変形タイプを設定するためのインタフェースと、補正結果のプレビュー画像と、が含まれている。画像変形タイプとしては、顔の形状をシャープにする変形タイプ「タイプA」や、目の形状を大きくする変形タイプ「タイプB」等の複数の選択肢が予め設定されている。ユーザは、このインタフェースを操作することにより、画像変形のタイプを複数の選択肢から選択する。変形態様設定部210は、ユーザにより選択された画像変形タイプを、実際の処理に使用する画像変形タイプとして設定する。
【0026】
また、図4に示すユーザインタフェースには、画像変形の度合い(程度)を設定するためのインタフェースが含まれている。画像変形の度合いとしては、例えば、強(S)、中(M)、弱(W)の3段階の選択肢が予め設定されている。ユーザは、このインタフェースを操作して画像変形の度合いを指定する。変形態様設定部210は、ユーザにより指定された画像変形の度合いを、実際の処理に使用する画像変形の度合いとして設定する。ユーザインタフェースに設けられたチェックボックスは、ユーザが変形態様の詳細指定を希望する場合にチェックされる。
【0027】
ユーザが、図4に示すユーザインタフェースに設けられた種々のインタフェースを操作すると、顔形状補正部は元画像を縮小した縮小画像に変形処理を施し、変形処理が施された画像がサムネイル画像として表示される。但し、サムネイル画像の表示を省略することも可能である。
【0028】
なお、以下では、画像変形のタイプとして顔の形状をシャープにするための変形タイプ「タイプA」が設定され、画像変形の度合いとして程度「中」の度合いが設定され、ユーザによる詳細指定の希望はなかったものとして説明を行う。
【0029】
ステップS130(図3)において、変形領域設定部220は、顔形状補正のための画像変形処理を施す領域(変形領域)を設定する。変形領域の設定では、まず、顔領域の検出が行われる。検出された顔領域は、位置や方向が調整される。そして、位置や方向が調整された結果を基に変形領域が設定される。なお、顔領域は、例えばテンプレートを利用したパターンマッチングによる方法(特開2004−318204参照)といった公知の顔検出方法により検出される。
【0030】
図5は、変形領域の設定結果の一例を示す説明図である。図5(a)は、顔領域の検出結果を示しており、図5(b)は、検出された顔領域に基づいて設定される変形領域を示している。図5の例では、対象画像TIには2人の人物が含まれている。そのため、図5(a)の太線で示すように、対象画像TIから2人の人物に対応して2つの顔領域FA1,FA2が検出される。これらの顔領域FA1,FA2は、それぞれの目と鼻と口の画像を含む矩形の領域となっている。図5(b)の破線は、2つの顔領域FA1,FA2を示しており、太線は、2つの顔領域FA1,FA2のそれぞれについて設定された2つの変形領域TA1,TA2を示している。
【0031】
図3のステップS140において、変形領域分割部230は、ステップS130において設定された変形領域を複数の小領域に分割する。具体的には、変形領域分割部230は、ステップS130において設定された変形領域に対して分割点を配置する。そして、分割点を結ぶ直線を用いて、変形領域を複数の小領域に分割する。なお、変形領域内における分割点の配置態様(分割点の個数および位置)は、分割点配置パターンテーブル410(図1)により、ステップS120(図3)において設定される変形タイプと対応付けて定義されている。図4に示すように、変形タイプとして顔をシャープにするための変形「タイプA」が選択されている場合には、変形領域は15個の矩形の小領域に分割される。
【0032】
図6は、図3のステップS130において設定された2つの変形領域TA1,TA2のそれぞれが、小領域に分割される様子を示す説明図である。図6(a)は、図3のステップS130において設定された2つの変形領域TA1,TA2の配置を示している。図6(b)は、ステップS140において、2つの変形領域TA1,TA2のそれぞれが小領域に分割された様子を示している。本実施例では、変形タイプとして変形「タイプA」が選択されている。そのため、図6(b)に示すように、2つの変形領域TA1,TA2は、それぞれ、15個の矩形の小領域に分割される。
【0033】
図3のステップS150において、変形パラメータ設定部240は、変形領域に変形処理を施す際の種々のパラメータを設定する。具体的には、変形領域の小領域への分割に使用された分割点の移動態様(移動方向および移動距離)を設定する。分割点の移動態様は、分割点移動テーブル420(図1)により、ステップS120(図3)において設定される変形タイプと変形の度合いとの組み合わせに対応付けて、予め定められている。上述したように、変形タイプとして顔をシャープにするための変形「タイプA」(図4参照)が設定され、変形度合いとして程度「中」の度合いが設定されている場合には、分割点の移動態様は、これらの変形タイプおよび変形度合いの組み合わせに対応付けられた移動方向および移動距離に設定される。
【0034】
図7は、変形パラメータが設定される様子を示す説明図である。図7(a)は、変形パラメータ設定部240により参照される分割点移動テーブル420の内容の一例を示している。図7(b)は、図7(a)に示す分割点移動テーブル420に従った分割点の移動態様を示している。
【0035】
分割点移動テーブル420には、各分割点D11〜D42について、基準線RLと直交する方向(H方向)および基準線RLと平行な方向(V方向)に沿った移動量が示されている。ここで基準線RLとは、変形領域TAを垂直に二分する方向であり、顔の上下方向に相当する方向である。分割点移動テーブル420に示された移動量の単位は、画像上の画素ピッチPPである。また、H方向については、向かって右側への移動量が正の値として表され、向かって左側への移動量が負の値として表され、V方向については、上方への移動量が正の値として表され、下方への移動量が負の値として表される。例えば、分割点D11は、H方向に沿って右側に画素ピッチPPの7倍の距離だけ移動され、V方向に沿って上方に画素ピッチPPの14倍の距離だけ移動される。また、例えば分割点D22は、H方向およびV方向共に移動量がゼロであるため、移動されない。
【0036】
このように、分割点の移動態様が設定されることにより、変形領域TA内の分割点は、図7(b)に示すように、白丸で示す位置から黒丸で示す位置に移動する。なお、図7(b)において、移動されない分割点の位置も黒丸で示している。このように、変形パラメータを設定することにより、変形処理において、変形領域TA内の破線で示す小領域内の画像は、実線で示す小領域内の画像に変形される。例えば、分割点D11,D21,D22,D12を頂点とする小領域(ハッチングを付して示す小領域)内の画像は、分割点D'11,D'21,D22,D'12を頂点とする小領域内の画像に変形される。
【0037】
小領域内の画像の変形は、変形後の小領域中の点を変形前の小領域中の点に対応づけること(マッピング)により行われる。マッピングによる変形では、変形後の小領域中の画素(対象画素)の位置(対象画素位置)から、変形前の小領域中の対応する画素(参照画素)の位置(参照位置)が算出される。そして、変形前の小領域における参照画素の画素値が、対象画素の画素値に設定されることにより、小領域内の画像の変形が行われる。なお、参照位置が変形前の小領域の画素の位置からずれている場合、対象画素の画素値には、参照位置の近傍の画素から補間処理(例えば、バイリニア法やバイキュービック法)により算出された画素値が設定される。なお、以下では、このように補間処理により画素値が算出される仮想的な画素も参照画素と呼ぶ。
【0038】
なお、図6(a)に示すように、ステップS130において設定された2つの変形領域TA1,TA2は、互いに重複した状態となっている。このように変形領域が重複する場合、変形パラメータ設定部240は、ステップS140において、重複する変形領域の変形の優先順位を決定する。変形の優先順位は、変形領域の位置等により設定される。この場合、例えば、変形領域の上端位置がより上方の変形領域TA2が優先される。但し、変形の優先順位は、変形領域の大きさ等の他のパラメータに基づいて設定するものとしてもよい。なお、以下では、より優先順位の高い変形領域を「上位の」変形領域とも呼び、上位の変形領域を変形する処理を「上位の」変形処理とも呼ぶ。また、より優先順位の低い変形領域を「下位の」変形領域とも呼び、下位の変形領域を変形する処理を「下位の」変形処理とも呼ぶ。
【0039】
図8は、ステップS150において、2つの変形領域TA1,TA2のそれぞれについて変形パラメータが設定された様子を示す説明図である。図8に示すように、2つの変形領域TA1,TA2がそれぞれ有する白丸で示す分割点は、黒丸で示す位置に移動される。そのため、点線で示す2つの変形領域TA1,TA2中の小領域は、それぞれ実線で示す小領域に変形される。
【0040】
図3のステップS200において、バンドバッファ割付部254(図1)は、内部メモリ120(図1)内にバンドバッファを確保する。図9は、ステップS200において実行されるバンドバッファ確保処理の流れを示すフローチャートである。
【0041】
ステップS210において、バンドバッファ割付部254は、最大バンド幅を算出する。ここで、バンドとは、後述する変形処理において使用される画像の横方向に延びた帯状の領域であり、バンド幅とは、バンドに含まれる縦方向の画素数をいう。
【0042】
図10は、画像を変形する際に必要なバンド幅を示す説明図である。図10の例では、図10(a)に示す図形(矢印)の下方の2個の頂点が、図10(b)に示すように移動されるように、画像が変形されている。図10(b)の四角は、移動されない頂点V1〜V3,V6,V7を示している。図10(b)の白丸は、変形前の頂点V4,V5の位置を示しており、黒丸は変形後の頂点V4’,V5’の位置を示している。
【0043】
変形後の頂点V4’を対象画素とした場合には、参照画素は、頂点V4となる。そのため、図10(a)から図10(b)のように変形を行う場合において、対象画素V4’の画素値を決定するために、参照画素V4の画素値が参照される。従って、図10に示すように画像を変形する場合には、対象画素V4’と、対象画素V4’よりも下方に距離dd(以下、「下側変位」とも呼ぶ)離れた参照画素V4がバンドに含まれるようにバンド幅が設定される。同様に、対象画素V5’の画素値を決定するために、参照画素V5の画素値が参照される。従って、図10に示すように画像を変形する場合には、対象画素V5’と、対象画素V5’から上方に距離du(以下、「上側変位」とも呼ぶ)離れた参照画素V5がバンドに含まれるようにバンド幅が設定される。
【0044】
図11は、図9のステップS210において実行される最大バンド幅の算出処理の流れを示すフローチャートである。ステップS211では、最大バンド幅算出部252(図1)が、上側変位と下側変位の最大値をいずれもゼロに設定する。次いで、最大バンド幅算出部252は、対象画素の左上端の画素を対象画素に設定する(ステップS212)。
【0045】
ステップS213において、最大バンド幅算出部252は、対象画素の参照位置を取得する。そして、ステップS214において、参照位置と対象画素位置の上側変位あるいは下側変位(以下、上側変位と下側変位とを併せて、単に「変位」とも呼ぶ)を取得する。取得された変位は、最大バンド幅算出部252により変位の最大値と比較されて変位の最大値が更新される(ステップS215)。
【0046】
ステップS216において、最大バンド幅算出部252は、上位の変形処理があるか否かを判断する。上位の変形処理があると判断された場合には、制御はステップS217に移される。一方、上位の変形処理がないと判断された場合には、制御はステップS218に移される。
【0047】
ステップS217において、最大バンド幅算出部252は、上位の変形処理による参照画素の参照位置を取得する。参照画素の参照位置の取得後、制御はステップS214に戻され、参照位置の取得の対象となる上位の変形処理が無くなるまで、ステップS214〜S217が繰り返し実行される。
【0048】
図12は、複数の変形処理が行われる際に必要なバンド幅を示す説明図である。図12の例では、第1の変形処理と第2の変形処理との2回の変形処理が行われる。図12(a)は、上位の変形処理である第1の変形処理が行われる様子を示し、図12(b)は、下位の変形処理である第2の変形処理が行われる様子を示している。図12(c)は、第1の変形処理の後第2の変形処理が行われた状態を示している。なお、図12(a)〜図12(c)において、破線は変形処理前の小領域の形状を表しており、実線は変形処理後の小領域の形状を表している。
【0049】
図12(a)に示すように、第1の変形処理では、白四角を頂点とする矩形の小領域は、黒四角を頂点とする四角形の小領域に変形される。そのため、白丸で示す変形前の小領域中の画素P0は、第1の変形処理により、距離d1上方の画素P1に移動される。同様に、図12(b)に示すように、第2の変形処理では、白三角を頂点とする矩形の小領域は、黒三角を頂点とする四角形の小領域に変形され、白丸で示す変形前の小領域中の画素P1は距離d2上方の画素P2に移動される。
【0050】
このように、第1の変形処理と第2の変形処理を順次行うことにより、図12(c)に示すように、画素P0の位置は、画素P2の位置に移動される。図11のステップS213において、対象画素が画素P2に設定された場合、ステップS214において、まず下側変位d2が取得される。そして、上位の変形処理(第1の変形処理)があるため、ステップS217において、参照画素(画素P1)の参照位置、すなわち、画素P0の位置が取得される。そのため、ステップS214において、距離d1と距離d2の和が対象画素P2の下側変位として取得され、ステップS215において変位の最大値が更新される。このように、ステップS214〜S217を繰り返し実行することにより、複数の変形処理を順次行う場合においても、上側変位と、下側変位と、対象画素の幅(すなわち、1)を足しあわせた幅のバンドを使用することにより、対象画素P2の変形処理を行うことができる。
【0051】
図11のステップS218において、最大バンド幅算出部252は、バンド幅の算出が対象画像の全ての画素について行われたか否かを判断する。対象画像の全ての画素についてバンド幅の算出が行われた場合、制御は図9のバンドバッファ確保処理に戻される。一方、バンド幅の算出が行われていない画素がある場合、制御はステップS219に移される。
【0052】
ステップS219において、最大バンド幅算出部252は、対象画素の次の画素を新たな対象画素に設定する。具体的には、対象画素が画像の右端の画素でない場合、対象画素の右側の画素が新たな対象画素に設定される。一方、対象画素が対象画像の右端の画素である場合、対象画素の直下の列の左端の画素が新たな対象画素に設定される。そして、ステップS218において、対象画像の全ての画素についてバンド幅の算出が行われたと判断されるまで、ステップS213〜S219が繰り返し実行される。
【0053】
このようにして、最大バンド幅算出部252は、全ての画素について必要となるバンド幅の最大値(最大バンド幅)を算出する。最大バンド幅の算出の後、図9のステップS220において、バンドバッファ割付部254(図1)は、変形前の画像である元画像を格納するための最大バンド幅のバンドバッファ(元画像バッファ)を確保する。次いで、ステップS230において、バンドバッファ割付部254は、変形処理後の画像を格納するための最大バンド幅のバンドバッファ(変形画像バッファ)を変形処理毎に確保する。変形画像バッファの確保の後、制御は図3の顔形状補正印刷処理に戻される。なお、変形画像バッファは、変形処理が行われた画像が生成される領域であるので、「変形後画像領域」とも呼ぶことができる。
【0054】
図3のステップS300において、変形処理部256(図1)は、1ライン中の個々の画素の画素値を設定することにより画像を変形するライン変形処理を行う。ここで、ラインとは、画像の横方向全体に延びた縦1画素分の画素列をいう。
【0055】
図13は、ステップS300において実行されるライン変形処理の流れを示すフローチャートである。図14は、ライン変形処理により変形済の画像が生成される様子を示す説明図である。なお、図14の左側の列は、それぞれ変形前の画像を表している。また、図14の中央の列は、それぞれ第1の変形処理後の画像を表し、右側の列は、それぞれ第2の変形処理後の画像を表している。
【0056】
図14(a)は、最初のライン変形処理が行われる前の状態を示している。最初のライン変形処理は、画像の上端のラインに対して行われる。そのため、図14(a)に示すように、生成ライン(ハッチング部)は、画像の上端のラインに設定される。なお、図14(a)に示す状態においては、画素値を設定するライン変形処理が行われていないため、第1の変形処理後の画像と第2の変形処理後の画像は、いずれも生成されていない状態となっている。
【0057】
ステップS310において、変形処理部256は、変形処理の対象(変形処理の「デスティネーション」)となるラインの参照範囲(変形処理の「ソース」)を特定する。なお、変形処理の対象となるラインは、変形済画像が生成されるラインであるので、以下では「生成ライン」とも呼ぶ。変形処理部256は、具体的には、生成ライン中の画素のそれぞれについて、参照画素の位置を算出する。そして、縦方向が参照画素の上下端にわたり、横方向が画像全体に延びた範囲が参照範囲として特定される。図14(b)は、生成ラインの参照範囲が特定された状態を示しており、矢印で示すように、第1の変形処理後の画像中の生成ラインの参照範囲が特定される。
【0058】
ステップS320において、変形処理部256は、参照範囲が上位の変形処理において変形済であるか否か、すなわち、上位の変形処理により画像が生成されているか否かを判断する。参照範囲が上位の変形処理において変形済であると判断された場合には、制御はステップS340に移される。一方、参照範囲が上位の変形処理において変形済でないと判断された場合には、制御はステップS330に移される。なお、参照範囲が変形済であるか否かは、上位の変形済画像を構成する複数のラインそれぞれについて、ライン上の画像が生成済か否かを表すフラグを設けることにより判断することができる。図14の例では、図14(b)に示すように、参照範囲には、第1の変形処理による変形済画像が生成されていない。そのため、ハッチングを付して示す参照範囲は変形済でないと判断され、制御はステップS330に移される。
【0059】
ステップS330において、変形処理部256は、上位の変形処理により参照範囲内に変形済画像を生成する。図14の例では、図14(c)に示すようにハッチングで示す参照範囲から、矢印で示すように、元画像中の参照先が特定される。そして、図14(d)の矢印で示すように、元画像中の参照先の画像に第1の変形処理が施された画像が参照範囲内に生成される。なお、参照範囲内に上位の変形処理により変形済画像を生成する処理(参照範囲画像生成処理)の具体的内容については、後述する。なお、上述の説明から判るように、下位の変形処理におけるソースは、上位の変形処理におけるデスティネーションとなる。
【0060】
ステップS340において、変形処理部256は、生成ライン上に変形済画像を生成する。具体的には、図14(e)に示すように、参照範囲に生成された画像に第2の変形処理を施すことにより、生成ライン上に第2の変形処理が施された画像を生成する。これにより、生成ラインには第1の変形処理と第2の変形処理とがそれぞれ順に施された画像(多重変形後画像)が生成される。
【0061】
図15は、ステップS330において実行される参照範囲画像生成処理の流れを示すフローチャートである。図16は、画像の変形処理が行われる際のバンドバッファの状態を示す説明図である。図16の左側の列は、それぞれ元画像バッファの状態を示している。図16の中央の列は、第1の変形処理のための第1の変形画像バッファの状態を示し、図16の右側の列は、第2の変形処理のための第2の変形画像バッファの状態を示している。
【0062】
図16(a)は、上側の生成ライン上に変形済画像が生成された状態を示している。上述のように、生成ライン上に変形済画像を生成するため、第1の変形画像バッファ中の生成ラインの参照範囲には、第1の変形処理後の画像が生成されている。生成ライン上への変形済画像の生成が完了すると、図16(b)に示すように、ラインは下方に1画素分移動される。このとき、元画像バッファには、メモリカードMC(図1)から1ライン分の画像が取り込まれる。そして、破線で示すバンドバッファの上端のラインは破棄される。
【0063】
図16(b)の第2の変形画像バッファのハッチング部は、ライン移動後の生成ラインを示している。そして、この生成ラインの参照範囲は、図13のステップS310において、第1の変形画像バッファの太枠内の範囲と特定される。図16(b)に示すように、生成ラインの参照範囲のうち、下端の1ラインは変形済画像が生成されていない。そのため、図13のステップS320において、参照範囲が変形済でないと判断され、ステップS330において、図15に示す参照範囲画像生成処理が実行される。
【0064】
ステップS331において、変形処理部256は、参照範囲の上端のラインを対象ラインに設定する。そして、ステップS332において、対象ラインが変形済、すなわち、変形済画像が生成済であるか否かを判断する。対象ラインが変形済と判断された場合には、制御はステップS338に移される。一方、対象ラインが変形済でないと判断された場合には、制御はステップS333に移される。
【0065】
図16の例では、図16(a)に示すように、上側の生成ラインに変形済画像が生成する際に第1の変形画像バッファには、第1の変形処理後の画像が生成されている。そのため、ステップS332において、対象ラインが変形済であると判断され、制御はステップS337に移される。
【0066】
ステップS337において、変形処理部256は、対象ラインが参照範囲の下端か否かを判断する。対象ラインが参照範囲の下端と判断された場合、図16の処理は終了して制御は戻される。一方、対象ラインが参照範囲の下端でないと判断された場合、制御はステップS338に移される。そして、ステップS338において、変形処理部256は、対象ラインの次(下側)のラインを新たな対象ラインに設定する。
【0067】
このようにして、対象ラインは、参照範囲の上端から下方に向かって順次移動され、対象ラインが図16(b)の太枠で示す参照範囲の上部内にある間、2つのステップS332,S338が繰り返し実行される。対象ラインが下方に向かって順次移動されて、参照範囲の下端の1ラインが対象ラインに設定されると。ステップS332では、対象ラインが変形済でないと判断される。そして、ステップS332から制御はステップS333に移される。
【0068】
ステップS333において、変形処理部256は、対象ライン上の画像を生成するための変形処理が最上位の変形処理であるか否かを判断する。変形処理が最上位であると判断された場合には、制御はステップS336に移され、対象ライン上に変形済画像が生成される。一方、変形処理が最上位でないと判断された場合には、制御はステップS334に移される。
【0069】
ステップS334において、変形処理部256は、図13のステップS310と同様に、対象ラインの参照範囲を特定する。次いで、ステップS335において、変形処理部256は、図13のステップS310とどうように、対象ラインの参照範囲が上位の変形処理において変形済であるか否かを判断する。参照範囲が上位の変形処理において変形済であると判断された場合には、制御はステップS336に移される。一方、参照範囲が上位の変形処理において変形済でないと判断された場合には、制御はステップS330に移され参照範囲画像生成処理は再帰的に実行される。このように、参照範囲画像生成処理を再帰的に実行することにより、複数の変形処理が行われる場合においても、対象ライン上には上位の変形処理により変形済画像が生成される。
【0070】
図16の例では、第1の変形処理が最上位の変形処理となっている。そのため、ステップS333では、変形処理が最上位の変形処理であると判断される。次いで、ステップS336において、図16(d)に示すように、参照範囲の下端の1ライン上に元画像に第1の変形処理を施した画像が生成される。このように、参照範囲画像生成処理により、第1の変形画像バッファ中の参照範囲には、第1の変形処理が施された画像が生成される。そして、第2の変形画像バッファ中の生成ライン上には、図16(e)に示すように、第1の変形画像バッファ中の参照範囲の画像に第2の変形処理を施すことにより、変形済の画像が生成される。
【0071】
このようにして、生成ライン上に変形済画像が生成されると、図13に示すライン変形処理は終了し、制御は、図3に示す顔形状補正印刷処理に戻される。
【0072】
図3のステップS410では、変形済の画像が生成された生成ラインの印刷処理が行われる。具体的には、生成ラインの画像を表すデータ(ラインデータ)が印刷処理部320に供給される。印刷処理部320では、供給されたラインデータを必要に応じて蓄積し、解像度変換やハーフトーン処理などの処理を施して印刷データを生成する。生成された印刷データは、印刷処理部320からプリンタエンジン160に供給される。
【0073】
ステップS420では、対象画像の全ラインについてライン変形処理(ステップS300)とライン印刷処理(ステップS410)が行われたか否かが判断される。これらの処理が全ラインについて終了したと判断された場合には、図3の顔形状補正印刷処理は終了する。一方、未処理のラインが存在すると判断された場合には、制御はステップS430に移される。
【0074】
ステップS430では、変形処理の対象となる生成ラインが上述のように次のラインに移動する。そして、ステップS420において、ライン変形処理(ステップS300)とライン印刷処理(ステップS410)が全ラインについて終了したと判断されるまで、ステップS300〜S430が繰り返し実行される。これにより、プリンタエンジン160において対象画像に変形処理を施した画像が印刷される。
【0075】
このように、本実施例では、対象画像を変形する際、変形済画像を構成する全ての画素の画素値を決定するために必要な最大バンド幅が予め算出される。そして、算出された最大バンド幅のバンドバッファを確保することにより、バンドバッファに格納された画像を用いて対象画像を変形することができる。そのため、対象画像の変形処理に要するメモリ量を低減することができる。
【0076】
また、本実施例では、1つの対象画像を変形する場合、バンドバッファのバンド幅は最大バンド幅に固定的に定められている。そのため、ライン毎に必要なバンド幅を決定し、決定されたバンド幅のバンドバッファを確保する場合よりも、バンドバッファ確保を行う処理の回数を低減することができる。そのため、対象画像を変形するための処理時間を短縮することができる。
【0077】
さらに、本実施例では、予め算出された最大バンド幅でバンドバッファを確保することにより、変形済画像を生成するラインが移動した場合にも、ライン移動前にバンドバッファに格納された画像やバンドバッファ中に生成された画像の一部をそのまま利用することができる。そのため、バンドバッファへの画像の格納や、バンドバッファ中への画像の再生成が省略できるので、対象画像を変形するための処理時間を短縮することができる。
【0078】
B.変形例:
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【0079】
B1.変形例1:
上記実施例では、ライン毎に変形画像を生成しているが、変形画像は、変形画像の一部となるブロック毎であれば、任意形態のブロック毎に生成するものとしてもよい。ブロックとしては、例えば、変形済画像の一部の矩形領域や、ラインの一部分となる画素ブロックを使用することもできる。
【0080】
B2.変形例2:
上記実施例では、本発明を顔形状の変形処理に適用しているが、本発明は、顔形状の変形処理とは異なる変形処理に適用することができる。本発明は、画像に含まれる物体(オブジェクト)の変形処理一般に適用できる。
【0081】
B3.変形例3:
上記実施例では、変形領域を小領域に分割し、分割された小領域を変形することにより変形領域全体の変形を行っているが、変形領域の分割を省略することも可能である。一般に、本発明は、マッピングによる変形処理であれば、任意の形態の変形処理に適用できる。
【0082】
B4.変形例4:
上記実施例では、第2の変形画像バッファを確保して、変形済画像のバンドを格納しているが、生成ラインが格納しうる領域が確保されていれば、変形済画像のバンドを格納するバンドバッファを省略することも可能である。このようにしても、生成ライン上に変形済画像を生成することが可能である。
【0083】
B5.変形例5:
上記実施例では、複数の変形領域の変形処理を別個に行っているが、複数の変形領域の変形を1回の変形処理で行うこともできる。この場合、最終的に生成される変形済画像の対象画素に対応づけられる画素の元画像上の位置が求められる。そして、対象画素に対応づけられる画素の画素値から、対象画素の画素値が設定される。
【0084】
B6.変形例6:
上記実施例では、生成したライン毎に印刷処理を行っているが、印刷処理は必ずしもライン毎に行う必要はない。たとえば、最終的に生成される変形済画像全体を格納する領域を確保して、その領域に生成されたライン毎に画像を格納していくものとしてもよい。
【0085】
B7.変形例7:
上記実施例では、本発明をプリンタ100に適用しているが、本発明は、元画像から変形済画像を生成する変形処理を行う装置であれば、画像の変形処理を行う機能をする任意の装置に適用することができる。本発明は、画像の変形処理を行う機能を有していれば、例えば、パーソナルコンピュータや、デジタルカメラにも適用することができる。
【0086】
B8.変形例8:
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。
【符号の説明】
【0087】
100…プリンタ
110…CPU
120…内部メモリ
140…操作部
150…表示部
160…プリンタエンジン
170…カードインタフェース
172…カードスロット
200…顔形状補正部
210…変形態様設定部
220…変形領域設定部
230…変形領域分割部
240…変形パラメータ設定部
250…分割領域変形部
252…最大バンド幅算出部
254…バンドバッファ割付部
256…変形処理部
310…表示処理部
320…印刷処理部
410…分割点配置パターンテーブル
420…分割点移動テーブル
430…バンドバッファ
【技術分野】
【0001】
本発明は、画像に変形処理を施す画像処理技術に関する。
【背景技術】
【0002】
画像を変形するための画像変形処理では、変形後の画像を構成する画素(参照元画素)を変形元の画像の画素(参照先画素)に対応付け(「マッピング」と呼ばれる)、参照元画素の画素値を参照先画素の画素値に設定することが行われる。
【0003】
このようにマッピングを用いた画像変形処理では、参照元画素と参照先画素との位置関係は、変形処理の内容によっては、変形後の画像中の参照元画素の位置によって変化する。そのため、マッピングを用いた画像変形処理では、従来、変形前後の画像全体を格納しうるメモリ領域を確保し、確保されたメモリ領域において変形処理が施されていた。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−318204
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、変形対象の画像の大きさや画像処理を行う画像処理装置のメモリ容量によっては、変形前後の画像全体を格納可能なメモリ領域を確保することができず、変形処理が行えない場合が発生する。
【0006】
本発明は、上述した従来の課題を解決するためになされたものであり、画像を変形するための画像変形処理に要するメモリ量を低減することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
【0008】
[適用例1]
画像処理装置であって、変形前画像に変形処理を施して、変形後画像領域内に変形後画像を生成する画像変形処理部を備え、前記画像変形処理部は、前記変形後画像領域の一部を構成し、前記変形処理のデスティネーションとなる対象ブロックを設定する対象ブロック設定部と、前記対象ブロックに対応づけられ、前記変形処理のソースとなる前記変形前画像内の参照ブロックに含まれる画像を参照することにより、前記対象ブロック内に画像を生成するブロック変形処理部と、前記対象ブロックを前記変形後画像領域内の異なる位置に順次移動して、移動後の前記対象ブロック内の画像を前記ブロック変形処理部に生成させることにより、前記変形後画像の全体を生成するブロック走査部と、前記ブロック変形処理部による前記対象ブロックの画像の生成に先立って、前記対象ブロックが配置される全ての位置における前記参照ブロックの最大ブロックサイズを算出する最大ブロックサイズ算出部と、前記最大ブロックサイズ算出部により算出された最大ブロックサイズの大きさの画像を格納しうるように、ソースメモリ領域を確保するソースメモリ領域確保部と、を備え、前記ブロック変形処理部は、前記対象ブロックに対応づけられた前記参照ブロックに含まれる画像を前記ソースメモリ領域に格納するとともに、前記ソースメモリ領域に格納された前記参照ブロックに含まれる画像を参照して前記対象ブロックの画像を生成する、画像処理装置。
【0009】
この適用例では、ブロック変形処理部による対象ブロックの画像の生成に先立って、対象ブロックが配置される全ての位置における参照ブロックの最大ブロックサイズが算出される。そして、最大ブロックサイズの大きさの画像を格納しうるように、ソースメモリ領域が確保される。そのため、ソースメモリ領域には、対象ブロック内の画像の生成に要する変形前画像を格納することができるので、変形処理をブロック単位で行うことができる。変形処理をブロック単位で行うことにより、変形処理に使用されるメモリ領域を小さくすることができ、画像変形処理に要するメモリ量を低減することができる。
【0010】
[適用例2]
適用例1記載の画像処理装置であって、前記画像変形処理部は、元画像に前記変形処理をN回(Nは、2以上の整数)施すことによって、多重変形後画像を生成することが可能であり、前記最大ブロックサイズ算出部は、前記多重変形後画像の画像領域内に設定される個々の対象ブロックから参照される前記N回の変形処理におけるN個の参照ブロックの論理和をとった上限ブロックサイズを前記N回の変形処理に先立って算出する上限ブロックサイズ算出部を有し、前記メモリ領域確保部は、個々の変形処理に対応して前記上限ブロックサイズの大きさの画像を格納しうるN個のソースメモリ領域を確保し、前記N個のソースメモリ領域のうち、i(iは、1以上かつN以下の整数)番目のソースメモリ領域は、i回目の変形処理のソースとして使用され、i−1回目の変形処理のデスティネーションとして使用される、画像処理装置。
【0011】
この適用例では、個々の変形処理に対応して上限ブロックサイズの大きさの画像を格納しうるN個のソースメモリ領域が確保される。そのため、N回の変形処理のいずれにおいても、変形処理のデスティネーション画像の生成に要するソース画像をソースメモリ領域に格納することができる。そのため、複数回の変形処理を行う場合においても、変形処理をブロック単位で行うことができ、画像変形処理に要するメモリ量を低減することができる。
【0012】
なお、本発明は、種々の態様で実現することが可能であり、例えば、画像処理方法および装置、画像変形方法および装置、画像補正方法および装置、これらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態で実現することができる。
【図面の簡単な説明】
【0013】
【図1】本発明の一実施例としての画像処理装置が適用されるプリンタの構成を概略的に示す説明図。
【図2】画像の一覧表示を含むユーザインタフェースの一例を示す説明図である。
【図3】プリンタにおいて顔形状補正印刷を行う際に実行される顔形状補正印刷ルーチンを示すフローチャート。
【図4】画像変形のタイプおよび度合いを設定するためのユーザインタフェースの一例を示す説明図。
【図5】変形領域の設定結果の一例を示す説明図。
【図6】2つの変形領域のそれぞれが小領域に分割される様子を示す説明図。
【図7】変形パラメータが設定される様子を示す説明図。
【図8】ステップS150において、2つの変形領域2のそれぞれについて変形パラメータが設定された様子を示す説明図。
【図9】ステップS200において実行されるバンドバッファ確保処理の流れを示すフローチャート。
【図10】画像を変形する際に必要なバンド幅を示す説明図。
【図11】図9のステップS210において実行される最大バンド幅の算出処理の流れを示すフローチャート。
【図12】複数の変形処理が行われる際に必要なバンド幅を示す説明図。
【図13】ステップS300において実行されるライン変形処理の流れを示すフローチャート。
【図14】ライン変形処理により変形済の画像が生成される様子を示す説明図。
【図15】ステップS330において実行される参照範囲の変形済画像生成処理の流れを示すフローチャート。
【図16】画像の変形処理が行われる際のバンドバッファの状態を示す説明図。
【発明を実施するための形態】
【0014】
次に、本発明の実施の形態を実施例に基づいて以下の順序で説明する。
A.実施例:
B.変形例:
【0015】
A.実施例:
図1は、本発明の一実施例としての画像処理装置が適用されるプリンタ100の構成を概略的に示す説明図である。プリンタ100は、メモリカードMC等から取得した画像データに基づき画像を印刷する、いわゆるダイレクトプリントに対応したカラーインクジェットプリンタである。プリンタ100は、プリンタ100の各部を制御するCPU110と、例えばROMやRAMによって構成された内部メモリ120と、ボタンやタッチパネルにより構成された操作部140と、液晶ディスプレイにより構成された表示部150と、プリンタエンジン160と、カードインタフェース(カードI/F)170と、を備えている。プリンタ100は、さらに、他の機器(例えば、デジタルスチルカメラやパーソナルコンピュータ)とのデータ通信を行うためのインタフェースを備えているものとしてもよい。プリンタ100の各構成要素は、バスを介して互いに接続されている。
【0016】
プリンタエンジン160は、印刷データに基づき印刷を行う印刷機構である。カードインタフェース170は、カードスロット172に挿入されたメモリカードMCとの間でデータのやり取りを行うためのインタフェースである。なお、本実施例では、メモリカードMCにRGBデータとしての画像データが格納されており、プリンタ100は、カードインタフェース170を介してメモリカードMCに格納された画像データの取得を行う。
【0017】
内部メモリ120には、顔形状補正部200と、表示処理部310と、印刷処理部320とが格納されている。顔形状補正部200は、所定のオペレーティングシステムの下で、後述する顔形状補正処理を実行するためのコンピュータプログラムである。表示処理部310は、表示部150を制御して、表示部150上に処理メニューやメッセージを表示させるディスプレイドライバである。印刷処理部320は、画像データから印刷データを生成し、プリンタエンジン160を制御して、印刷データに基づく画像の印刷を実行するためのコンピュータプログラムである。CPU110は、内部メモリ120から、これらのプログラムを読み出して実行することにより、これら各部の機能を実現する。
【0018】
顔形状補正部200は、プログラムモジュールとして、変形態様設定部210と、変形領域設定部220と、変形領域分割部230と、変形パラメータ設定部240と、分割領域変形部250と、を含んでいる。分割領域変形部250は、最大バンド幅算出部252と、バンドバッファ割付部254と、変形処理部256と、を含んでいる。これらの各部の機能については、後述する。
【0019】
内部メモリ120には、また、分割点配置パターンテーブル410と分割点移動テーブル420とが格納されている。バンドバッファ430は、後述するようにバンドバッファ割付部254により、内部メモリ120内に確保される記憶領域である。分割点配置パターンテーブル410および分割点移動テーブル420の内容ならびにバンドバッファ430の機能については、後述する。
【0020】
プリンタ100は、メモリカードMCに格納された画像データに基づき、画像の印刷を行う。カードスロット172にメモリカードMCが挿入されると、表示処理部310により、メモリカードMCに格納された画像の一覧表示を含むユーザインタフェースが表示部150に表示される。図2は、画像の一覧表示を含むユーザインタフェースの一例を示す説明図である。なお、本実施例では、画像の一覧表示は、メモリカードMCに格納された画像データ(画像ファイル)に含まれるサムネイル画像を用いて実現される。図2に示すユーザインタフェースには、8つのサムネイル画像TN1〜TN8と、5つのボタンBN1〜BN5が表示されている。
【0021】
ユーザが、図2に示すユーザインタフェース上で画像を選択し、通常印刷ボタンBN3を操作すると、プリンタ100は、選択された画像を通常通り印刷する通常印刷処理を実行する。一方、ユーザがユーザインタフェース上で、画像を選択し、顔形状補正印刷ボタンBN4を操作すると、プリンタ100は、選択された画像について、画像中の顔の形状を補正して補正後の画像を印刷する顔形状補正印刷処理を実行する。図2の例では、サムネイル画像TN1が選択され、顔形状補正印刷ボタンBN4が操作されている。そのため、プリンタ100は、サムネイル画像TN1に対応する画像について顔の形状を補正して補正後の画像を印刷する。
【0022】
図3は、プリンタ100が顔形状補正印刷を行う際に実行される顔形状補正印刷処理の流れを示すフローチャートである。この顔形状補正印刷処理は、上述のように、図2に示すユーザインタフェース上でのユーザの顔形状補正印刷ボタンBN4の操作に応じて、プリンタ100により実行される。
【0023】
ステップS110において、顔形状補正部200(図1)は、顔形状補正処理の対象となる対象画像を設定する。顔形状補正部200は、図2に示したユーザインタフェースにおいてユーザにより選択されたサムネイル画像TN1に対応する画像を対象画像として設定する。なお、以下では、顔形状の補正の対象となる元の画像を「元画像」とも呼び、元画像を表す画像データを「元画像データ」とも呼ぶ。
【0024】
ステップS120では、変形態様設定部210(図1)が、顔形状補正のための画像変形のタイプと画像変形の度合いとを設定する。変形態様設定部210は、画像変形のタイプおよび度合いを設定するためのユーザインタフェースを表示部150に表示するように表示処理部310に指示し、当該ユーザインタフェースを通じてユーザにより指定された画像変形のタイプおよび度合いを選択し、処理に使用する画像変形タイプおよび度合いとして設定する。
【0025】
図4は、画像変形のタイプおよび度合いを設定するためのユーザインタフェースの一例を示す説明図である。図4に示すように、このユーザインタフェースには、画像変形タイプを設定するためのインタフェースと、補正結果のプレビュー画像と、が含まれている。画像変形タイプとしては、顔の形状をシャープにする変形タイプ「タイプA」や、目の形状を大きくする変形タイプ「タイプB」等の複数の選択肢が予め設定されている。ユーザは、このインタフェースを操作することにより、画像変形のタイプを複数の選択肢から選択する。変形態様設定部210は、ユーザにより選択された画像変形タイプを、実際の処理に使用する画像変形タイプとして設定する。
【0026】
また、図4に示すユーザインタフェースには、画像変形の度合い(程度)を設定するためのインタフェースが含まれている。画像変形の度合いとしては、例えば、強(S)、中(M)、弱(W)の3段階の選択肢が予め設定されている。ユーザは、このインタフェースを操作して画像変形の度合いを指定する。変形態様設定部210は、ユーザにより指定された画像変形の度合いを、実際の処理に使用する画像変形の度合いとして設定する。ユーザインタフェースに設けられたチェックボックスは、ユーザが変形態様の詳細指定を希望する場合にチェックされる。
【0027】
ユーザが、図4に示すユーザインタフェースに設けられた種々のインタフェースを操作すると、顔形状補正部は元画像を縮小した縮小画像に変形処理を施し、変形処理が施された画像がサムネイル画像として表示される。但し、サムネイル画像の表示を省略することも可能である。
【0028】
なお、以下では、画像変形のタイプとして顔の形状をシャープにするための変形タイプ「タイプA」が設定され、画像変形の度合いとして程度「中」の度合いが設定され、ユーザによる詳細指定の希望はなかったものとして説明を行う。
【0029】
ステップS130(図3)において、変形領域設定部220は、顔形状補正のための画像変形処理を施す領域(変形領域)を設定する。変形領域の設定では、まず、顔領域の検出が行われる。検出された顔領域は、位置や方向が調整される。そして、位置や方向が調整された結果を基に変形領域が設定される。なお、顔領域は、例えばテンプレートを利用したパターンマッチングによる方法(特開2004−318204参照)といった公知の顔検出方法により検出される。
【0030】
図5は、変形領域の設定結果の一例を示す説明図である。図5(a)は、顔領域の検出結果を示しており、図5(b)は、検出された顔領域に基づいて設定される変形領域を示している。図5の例では、対象画像TIには2人の人物が含まれている。そのため、図5(a)の太線で示すように、対象画像TIから2人の人物に対応して2つの顔領域FA1,FA2が検出される。これらの顔領域FA1,FA2は、それぞれの目と鼻と口の画像を含む矩形の領域となっている。図5(b)の破線は、2つの顔領域FA1,FA2を示しており、太線は、2つの顔領域FA1,FA2のそれぞれについて設定された2つの変形領域TA1,TA2を示している。
【0031】
図3のステップS140において、変形領域分割部230は、ステップS130において設定された変形領域を複数の小領域に分割する。具体的には、変形領域分割部230は、ステップS130において設定された変形領域に対して分割点を配置する。そして、分割点を結ぶ直線を用いて、変形領域を複数の小領域に分割する。なお、変形領域内における分割点の配置態様(分割点の個数および位置)は、分割点配置パターンテーブル410(図1)により、ステップS120(図3)において設定される変形タイプと対応付けて定義されている。図4に示すように、変形タイプとして顔をシャープにするための変形「タイプA」が選択されている場合には、変形領域は15個の矩形の小領域に分割される。
【0032】
図6は、図3のステップS130において設定された2つの変形領域TA1,TA2のそれぞれが、小領域に分割される様子を示す説明図である。図6(a)は、図3のステップS130において設定された2つの変形領域TA1,TA2の配置を示している。図6(b)は、ステップS140において、2つの変形領域TA1,TA2のそれぞれが小領域に分割された様子を示している。本実施例では、変形タイプとして変形「タイプA」が選択されている。そのため、図6(b)に示すように、2つの変形領域TA1,TA2は、それぞれ、15個の矩形の小領域に分割される。
【0033】
図3のステップS150において、変形パラメータ設定部240は、変形領域に変形処理を施す際の種々のパラメータを設定する。具体的には、変形領域の小領域への分割に使用された分割点の移動態様(移動方向および移動距離)を設定する。分割点の移動態様は、分割点移動テーブル420(図1)により、ステップS120(図3)において設定される変形タイプと変形の度合いとの組み合わせに対応付けて、予め定められている。上述したように、変形タイプとして顔をシャープにするための変形「タイプA」(図4参照)が設定され、変形度合いとして程度「中」の度合いが設定されている場合には、分割点の移動態様は、これらの変形タイプおよび変形度合いの組み合わせに対応付けられた移動方向および移動距離に設定される。
【0034】
図7は、変形パラメータが設定される様子を示す説明図である。図7(a)は、変形パラメータ設定部240により参照される分割点移動テーブル420の内容の一例を示している。図7(b)は、図7(a)に示す分割点移動テーブル420に従った分割点の移動態様を示している。
【0035】
分割点移動テーブル420には、各分割点D11〜D42について、基準線RLと直交する方向(H方向)および基準線RLと平行な方向(V方向)に沿った移動量が示されている。ここで基準線RLとは、変形領域TAを垂直に二分する方向であり、顔の上下方向に相当する方向である。分割点移動テーブル420に示された移動量の単位は、画像上の画素ピッチPPである。また、H方向については、向かって右側への移動量が正の値として表され、向かって左側への移動量が負の値として表され、V方向については、上方への移動量が正の値として表され、下方への移動量が負の値として表される。例えば、分割点D11は、H方向に沿って右側に画素ピッチPPの7倍の距離だけ移動され、V方向に沿って上方に画素ピッチPPの14倍の距離だけ移動される。また、例えば分割点D22は、H方向およびV方向共に移動量がゼロであるため、移動されない。
【0036】
このように、分割点の移動態様が設定されることにより、変形領域TA内の分割点は、図7(b)に示すように、白丸で示す位置から黒丸で示す位置に移動する。なお、図7(b)において、移動されない分割点の位置も黒丸で示している。このように、変形パラメータを設定することにより、変形処理において、変形領域TA内の破線で示す小領域内の画像は、実線で示す小領域内の画像に変形される。例えば、分割点D11,D21,D22,D12を頂点とする小領域(ハッチングを付して示す小領域)内の画像は、分割点D'11,D'21,D22,D'12を頂点とする小領域内の画像に変形される。
【0037】
小領域内の画像の変形は、変形後の小領域中の点を変形前の小領域中の点に対応づけること(マッピング)により行われる。マッピングによる変形では、変形後の小領域中の画素(対象画素)の位置(対象画素位置)から、変形前の小領域中の対応する画素(参照画素)の位置(参照位置)が算出される。そして、変形前の小領域における参照画素の画素値が、対象画素の画素値に設定されることにより、小領域内の画像の変形が行われる。なお、参照位置が変形前の小領域の画素の位置からずれている場合、対象画素の画素値には、参照位置の近傍の画素から補間処理(例えば、バイリニア法やバイキュービック法)により算出された画素値が設定される。なお、以下では、このように補間処理により画素値が算出される仮想的な画素も参照画素と呼ぶ。
【0038】
なお、図6(a)に示すように、ステップS130において設定された2つの変形領域TA1,TA2は、互いに重複した状態となっている。このように変形領域が重複する場合、変形パラメータ設定部240は、ステップS140において、重複する変形領域の変形の優先順位を決定する。変形の優先順位は、変形領域の位置等により設定される。この場合、例えば、変形領域の上端位置がより上方の変形領域TA2が優先される。但し、変形の優先順位は、変形領域の大きさ等の他のパラメータに基づいて設定するものとしてもよい。なお、以下では、より優先順位の高い変形領域を「上位の」変形領域とも呼び、上位の変形領域を変形する処理を「上位の」変形処理とも呼ぶ。また、より優先順位の低い変形領域を「下位の」変形領域とも呼び、下位の変形領域を変形する処理を「下位の」変形処理とも呼ぶ。
【0039】
図8は、ステップS150において、2つの変形領域TA1,TA2のそれぞれについて変形パラメータが設定された様子を示す説明図である。図8に示すように、2つの変形領域TA1,TA2がそれぞれ有する白丸で示す分割点は、黒丸で示す位置に移動される。そのため、点線で示す2つの変形領域TA1,TA2中の小領域は、それぞれ実線で示す小領域に変形される。
【0040】
図3のステップS200において、バンドバッファ割付部254(図1)は、内部メモリ120(図1)内にバンドバッファを確保する。図9は、ステップS200において実行されるバンドバッファ確保処理の流れを示すフローチャートである。
【0041】
ステップS210において、バンドバッファ割付部254は、最大バンド幅を算出する。ここで、バンドとは、後述する変形処理において使用される画像の横方向に延びた帯状の領域であり、バンド幅とは、バンドに含まれる縦方向の画素数をいう。
【0042】
図10は、画像を変形する際に必要なバンド幅を示す説明図である。図10の例では、図10(a)に示す図形(矢印)の下方の2個の頂点が、図10(b)に示すように移動されるように、画像が変形されている。図10(b)の四角は、移動されない頂点V1〜V3,V6,V7を示している。図10(b)の白丸は、変形前の頂点V4,V5の位置を示しており、黒丸は変形後の頂点V4’,V5’の位置を示している。
【0043】
変形後の頂点V4’を対象画素とした場合には、参照画素は、頂点V4となる。そのため、図10(a)から図10(b)のように変形を行う場合において、対象画素V4’の画素値を決定するために、参照画素V4の画素値が参照される。従って、図10に示すように画像を変形する場合には、対象画素V4’と、対象画素V4’よりも下方に距離dd(以下、「下側変位」とも呼ぶ)離れた参照画素V4がバンドに含まれるようにバンド幅が設定される。同様に、対象画素V5’の画素値を決定するために、参照画素V5の画素値が参照される。従って、図10に示すように画像を変形する場合には、対象画素V5’と、対象画素V5’から上方に距離du(以下、「上側変位」とも呼ぶ)離れた参照画素V5がバンドに含まれるようにバンド幅が設定される。
【0044】
図11は、図9のステップS210において実行される最大バンド幅の算出処理の流れを示すフローチャートである。ステップS211では、最大バンド幅算出部252(図1)が、上側変位と下側変位の最大値をいずれもゼロに設定する。次いで、最大バンド幅算出部252は、対象画素の左上端の画素を対象画素に設定する(ステップS212)。
【0045】
ステップS213において、最大バンド幅算出部252は、対象画素の参照位置を取得する。そして、ステップS214において、参照位置と対象画素位置の上側変位あるいは下側変位(以下、上側変位と下側変位とを併せて、単に「変位」とも呼ぶ)を取得する。取得された変位は、最大バンド幅算出部252により変位の最大値と比較されて変位の最大値が更新される(ステップS215)。
【0046】
ステップS216において、最大バンド幅算出部252は、上位の変形処理があるか否かを判断する。上位の変形処理があると判断された場合には、制御はステップS217に移される。一方、上位の変形処理がないと判断された場合には、制御はステップS218に移される。
【0047】
ステップS217において、最大バンド幅算出部252は、上位の変形処理による参照画素の参照位置を取得する。参照画素の参照位置の取得後、制御はステップS214に戻され、参照位置の取得の対象となる上位の変形処理が無くなるまで、ステップS214〜S217が繰り返し実行される。
【0048】
図12は、複数の変形処理が行われる際に必要なバンド幅を示す説明図である。図12の例では、第1の変形処理と第2の変形処理との2回の変形処理が行われる。図12(a)は、上位の変形処理である第1の変形処理が行われる様子を示し、図12(b)は、下位の変形処理である第2の変形処理が行われる様子を示している。図12(c)は、第1の変形処理の後第2の変形処理が行われた状態を示している。なお、図12(a)〜図12(c)において、破線は変形処理前の小領域の形状を表しており、実線は変形処理後の小領域の形状を表している。
【0049】
図12(a)に示すように、第1の変形処理では、白四角を頂点とする矩形の小領域は、黒四角を頂点とする四角形の小領域に変形される。そのため、白丸で示す変形前の小領域中の画素P0は、第1の変形処理により、距離d1上方の画素P1に移動される。同様に、図12(b)に示すように、第2の変形処理では、白三角を頂点とする矩形の小領域は、黒三角を頂点とする四角形の小領域に変形され、白丸で示す変形前の小領域中の画素P1は距離d2上方の画素P2に移動される。
【0050】
このように、第1の変形処理と第2の変形処理を順次行うことにより、図12(c)に示すように、画素P0の位置は、画素P2の位置に移動される。図11のステップS213において、対象画素が画素P2に設定された場合、ステップS214において、まず下側変位d2が取得される。そして、上位の変形処理(第1の変形処理)があるため、ステップS217において、参照画素(画素P1)の参照位置、すなわち、画素P0の位置が取得される。そのため、ステップS214において、距離d1と距離d2の和が対象画素P2の下側変位として取得され、ステップS215において変位の最大値が更新される。このように、ステップS214〜S217を繰り返し実行することにより、複数の変形処理を順次行う場合においても、上側変位と、下側変位と、対象画素の幅(すなわち、1)を足しあわせた幅のバンドを使用することにより、対象画素P2の変形処理を行うことができる。
【0051】
図11のステップS218において、最大バンド幅算出部252は、バンド幅の算出が対象画像の全ての画素について行われたか否かを判断する。対象画像の全ての画素についてバンド幅の算出が行われた場合、制御は図9のバンドバッファ確保処理に戻される。一方、バンド幅の算出が行われていない画素がある場合、制御はステップS219に移される。
【0052】
ステップS219において、最大バンド幅算出部252は、対象画素の次の画素を新たな対象画素に設定する。具体的には、対象画素が画像の右端の画素でない場合、対象画素の右側の画素が新たな対象画素に設定される。一方、対象画素が対象画像の右端の画素である場合、対象画素の直下の列の左端の画素が新たな対象画素に設定される。そして、ステップS218において、対象画像の全ての画素についてバンド幅の算出が行われたと判断されるまで、ステップS213〜S219が繰り返し実行される。
【0053】
このようにして、最大バンド幅算出部252は、全ての画素について必要となるバンド幅の最大値(最大バンド幅)を算出する。最大バンド幅の算出の後、図9のステップS220において、バンドバッファ割付部254(図1)は、変形前の画像である元画像を格納するための最大バンド幅のバンドバッファ(元画像バッファ)を確保する。次いで、ステップS230において、バンドバッファ割付部254は、変形処理後の画像を格納するための最大バンド幅のバンドバッファ(変形画像バッファ)を変形処理毎に確保する。変形画像バッファの確保の後、制御は図3の顔形状補正印刷処理に戻される。なお、変形画像バッファは、変形処理が行われた画像が生成される領域であるので、「変形後画像領域」とも呼ぶことができる。
【0054】
図3のステップS300において、変形処理部256(図1)は、1ライン中の個々の画素の画素値を設定することにより画像を変形するライン変形処理を行う。ここで、ラインとは、画像の横方向全体に延びた縦1画素分の画素列をいう。
【0055】
図13は、ステップS300において実行されるライン変形処理の流れを示すフローチャートである。図14は、ライン変形処理により変形済の画像が生成される様子を示す説明図である。なお、図14の左側の列は、それぞれ変形前の画像を表している。また、図14の中央の列は、それぞれ第1の変形処理後の画像を表し、右側の列は、それぞれ第2の変形処理後の画像を表している。
【0056】
図14(a)は、最初のライン変形処理が行われる前の状態を示している。最初のライン変形処理は、画像の上端のラインに対して行われる。そのため、図14(a)に示すように、生成ライン(ハッチング部)は、画像の上端のラインに設定される。なお、図14(a)に示す状態においては、画素値を設定するライン変形処理が行われていないため、第1の変形処理後の画像と第2の変形処理後の画像は、いずれも生成されていない状態となっている。
【0057】
ステップS310において、変形処理部256は、変形処理の対象(変形処理の「デスティネーション」)となるラインの参照範囲(変形処理の「ソース」)を特定する。なお、変形処理の対象となるラインは、変形済画像が生成されるラインであるので、以下では「生成ライン」とも呼ぶ。変形処理部256は、具体的には、生成ライン中の画素のそれぞれについて、参照画素の位置を算出する。そして、縦方向が参照画素の上下端にわたり、横方向が画像全体に延びた範囲が参照範囲として特定される。図14(b)は、生成ラインの参照範囲が特定された状態を示しており、矢印で示すように、第1の変形処理後の画像中の生成ラインの参照範囲が特定される。
【0058】
ステップS320において、変形処理部256は、参照範囲が上位の変形処理において変形済であるか否か、すなわち、上位の変形処理により画像が生成されているか否かを判断する。参照範囲が上位の変形処理において変形済であると判断された場合には、制御はステップS340に移される。一方、参照範囲が上位の変形処理において変形済でないと判断された場合には、制御はステップS330に移される。なお、参照範囲が変形済であるか否かは、上位の変形済画像を構成する複数のラインそれぞれについて、ライン上の画像が生成済か否かを表すフラグを設けることにより判断することができる。図14の例では、図14(b)に示すように、参照範囲には、第1の変形処理による変形済画像が生成されていない。そのため、ハッチングを付して示す参照範囲は変形済でないと判断され、制御はステップS330に移される。
【0059】
ステップS330において、変形処理部256は、上位の変形処理により参照範囲内に変形済画像を生成する。図14の例では、図14(c)に示すようにハッチングで示す参照範囲から、矢印で示すように、元画像中の参照先が特定される。そして、図14(d)の矢印で示すように、元画像中の参照先の画像に第1の変形処理が施された画像が参照範囲内に生成される。なお、参照範囲内に上位の変形処理により変形済画像を生成する処理(参照範囲画像生成処理)の具体的内容については、後述する。なお、上述の説明から判るように、下位の変形処理におけるソースは、上位の変形処理におけるデスティネーションとなる。
【0060】
ステップS340において、変形処理部256は、生成ライン上に変形済画像を生成する。具体的には、図14(e)に示すように、参照範囲に生成された画像に第2の変形処理を施すことにより、生成ライン上に第2の変形処理が施された画像を生成する。これにより、生成ラインには第1の変形処理と第2の変形処理とがそれぞれ順に施された画像(多重変形後画像)が生成される。
【0061】
図15は、ステップS330において実行される参照範囲画像生成処理の流れを示すフローチャートである。図16は、画像の変形処理が行われる際のバンドバッファの状態を示す説明図である。図16の左側の列は、それぞれ元画像バッファの状態を示している。図16の中央の列は、第1の変形処理のための第1の変形画像バッファの状態を示し、図16の右側の列は、第2の変形処理のための第2の変形画像バッファの状態を示している。
【0062】
図16(a)は、上側の生成ライン上に変形済画像が生成された状態を示している。上述のように、生成ライン上に変形済画像を生成するため、第1の変形画像バッファ中の生成ラインの参照範囲には、第1の変形処理後の画像が生成されている。生成ライン上への変形済画像の生成が完了すると、図16(b)に示すように、ラインは下方に1画素分移動される。このとき、元画像バッファには、メモリカードMC(図1)から1ライン分の画像が取り込まれる。そして、破線で示すバンドバッファの上端のラインは破棄される。
【0063】
図16(b)の第2の変形画像バッファのハッチング部は、ライン移動後の生成ラインを示している。そして、この生成ラインの参照範囲は、図13のステップS310において、第1の変形画像バッファの太枠内の範囲と特定される。図16(b)に示すように、生成ラインの参照範囲のうち、下端の1ラインは変形済画像が生成されていない。そのため、図13のステップS320において、参照範囲が変形済でないと判断され、ステップS330において、図15に示す参照範囲画像生成処理が実行される。
【0064】
ステップS331において、変形処理部256は、参照範囲の上端のラインを対象ラインに設定する。そして、ステップS332において、対象ラインが変形済、すなわち、変形済画像が生成済であるか否かを判断する。対象ラインが変形済と判断された場合には、制御はステップS338に移される。一方、対象ラインが変形済でないと判断された場合には、制御はステップS333に移される。
【0065】
図16の例では、図16(a)に示すように、上側の生成ラインに変形済画像が生成する際に第1の変形画像バッファには、第1の変形処理後の画像が生成されている。そのため、ステップS332において、対象ラインが変形済であると判断され、制御はステップS337に移される。
【0066】
ステップS337において、変形処理部256は、対象ラインが参照範囲の下端か否かを判断する。対象ラインが参照範囲の下端と判断された場合、図16の処理は終了して制御は戻される。一方、対象ラインが参照範囲の下端でないと判断された場合、制御はステップS338に移される。そして、ステップS338において、変形処理部256は、対象ラインの次(下側)のラインを新たな対象ラインに設定する。
【0067】
このようにして、対象ラインは、参照範囲の上端から下方に向かって順次移動され、対象ラインが図16(b)の太枠で示す参照範囲の上部内にある間、2つのステップS332,S338が繰り返し実行される。対象ラインが下方に向かって順次移動されて、参照範囲の下端の1ラインが対象ラインに設定されると。ステップS332では、対象ラインが変形済でないと判断される。そして、ステップS332から制御はステップS333に移される。
【0068】
ステップS333において、変形処理部256は、対象ライン上の画像を生成するための変形処理が最上位の変形処理であるか否かを判断する。変形処理が最上位であると判断された場合には、制御はステップS336に移され、対象ライン上に変形済画像が生成される。一方、変形処理が最上位でないと判断された場合には、制御はステップS334に移される。
【0069】
ステップS334において、変形処理部256は、図13のステップS310と同様に、対象ラインの参照範囲を特定する。次いで、ステップS335において、変形処理部256は、図13のステップS310とどうように、対象ラインの参照範囲が上位の変形処理において変形済であるか否かを判断する。参照範囲が上位の変形処理において変形済であると判断された場合には、制御はステップS336に移される。一方、参照範囲が上位の変形処理において変形済でないと判断された場合には、制御はステップS330に移され参照範囲画像生成処理は再帰的に実行される。このように、参照範囲画像生成処理を再帰的に実行することにより、複数の変形処理が行われる場合においても、対象ライン上には上位の変形処理により変形済画像が生成される。
【0070】
図16の例では、第1の変形処理が最上位の変形処理となっている。そのため、ステップS333では、変形処理が最上位の変形処理であると判断される。次いで、ステップS336において、図16(d)に示すように、参照範囲の下端の1ライン上に元画像に第1の変形処理を施した画像が生成される。このように、参照範囲画像生成処理により、第1の変形画像バッファ中の参照範囲には、第1の変形処理が施された画像が生成される。そして、第2の変形画像バッファ中の生成ライン上には、図16(e)に示すように、第1の変形画像バッファ中の参照範囲の画像に第2の変形処理を施すことにより、変形済の画像が生成される。
【0071】
このようにして、生成ライン上に変形済画像が生成されると、図13に示すライン変形処理は終了し、制御は、図3に示す顔形状補正印刷処理に戻される。
【0072】
図3のステップS410では、変形済の画像が生成された生成ラインの印刷処理が行われる。具体的には、生成ラインの画像を表すデータ(ラインデータ)が印刷処理部320に供給される。印刷処理部320では、供給されたラインデータを必要に応じて蓄積し、解像度変換やハーフトーン処理などの処理を施して印刷データを生成する。生成された印刷データは、印刷処理部320からプリンタエンジン160に供給される。
【0073】
ステップS420では、対象画像の全ラインについてライン変形処理(ステップS300)とライン印刷処理(ステップS410)が行われたか否かが判断される。これらの処理が全ラインについて終了したと判断された場合には、図3の顔形状補正印刷処理は終了する。一方、未処理のラインが存在すると判断された場合には、制御はステップS430に移される。
【0074】
ステップS430では、変形処理の対象となる生成ラインが上述のように次のラインに移動する。そして、ステップS420において、ライン変形処理(ステップS300)とライン印刷処理(ステップS410)が全ラインについて終了したと判断されるまで、ステップS300〜S430が繰り返し実行される。これにより、プリンタエンジン160において対象画像に変形処理を施した画像が印刷される。
【0075】
このように、本実施例では、対象画像を変形する際、変形済画像を構成する全ての画素の画素値を決定するために必要な最大バンド幅が予め算出される。そして、算出された最大バンド幅のバンドバッファを確保することにより、バンドバッファに格納された画像を用いて対象画像を変形することができる。そのため、対象画像の変形処理に要するメモリ量を低減することができる。
【0076】
また、本実施例では、1つの対象画像を変形する場合、バンドバッファのバンド幅は最大バンド幅に固定的に定められている。そのため、ライン毎に必要なバンド幅を決定し、決定されたバンド幅のバンドバッファを確保する場合よりも、バンドバッファ確保を行う処理の回数を低減することができる。そのため、対象画像を変形するための処理時間を短縮することができる。
【0077】
さらに、本実施例では、予め算出された最大バンド幅でバンドバッファを確保することにより、変形済画像を生成するラインが移動した場合にも、ライン移動前にバンドバッファに格納された画像やバンドバッファ中に生成された画像の一部をそのまま利用することができる。そのため、バンドバッファへの画像の格納や、バンドバッファ中への画像の再生成が省略できるので、対象画像を変形するための処理時間を短縮することができる。
【0078】
B.変形例:
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【0079】
B1.変形例1:
上記実施例では、ライン毎に変形画像を生成しているが、変形画像は、変形画像の一部となるブロック毎であれば、任意形態のブロック毎に生成するものとしてもよい。ブロックとしては、例えば、変形済画像の一部の矩形領域や、ラインの一部分となる画素ブロックを使用することもできる。
【0080】
B2.変形例2:
上記実施例では、本発明を顔形状の変形処理に適用しているが、本発明は、顔形状の変形処理とは異なる変形処理に適用することができる。本発明は、画像に含まれる物体(オブジェクト)の変形処理一般に適用できる。
【0081】
B3.変形例3:
上記実施例では、変形領域を小領域に分割し、分割された小領域を変形することにより変形領域全体の変形を行っているが、変形領域の分割を省略することも可能である。一般に、本発明は、マッピングによる変形処理であれば、任意の形態の変形処理に適用できる。
【0082】
B4.変形例4:
上記実施例では、第2の変形画像バッファを確保して、変形済画像のバンドを格納しているが、生成ラインが格納しうる領域が確保されていれば、変形済画像のバンドを格納するバンドバッファを省略することも可能である。このようにしても、生成ライン上に変形済画像を生成することが可能である。
【0083】
B5.変形例5:
上記実施例では、複数の変形領域の変形処理を別個に行っているが、複数の変形領域の変形を1回の変形処理で行うこともできる。この場合、最終的に生成される変形済画像の対象画素に対応づけられる画素の元画像上の位置が求められる。そして、対象画素に対応づけられる画素の画素値から、対象画素の画素値が設定される。
【0084】
B6.変形例6:
上記実施例では、生成したライン毎に印刷処理を行っているが、印刷処理は必ずしもライン毎に行う必要はない。たとえば、最終的に生成される変形済画像全体を格納する領域を確保して、その領域に生成されたライン毎に画像を格納していくものとしてもよい。
【0085】
B7.変形例7:
上記実施例では、本発明をプリンタ100に適用しているが、本発明は、元画像から変形済画像を生成する変形処理を行う装置であれば、画像の変形処理を行う機能をする任意の装置に適用することができる。本発明は、画像の変形処理を行う機能を有していれば、例えば、パーソナルコンピュータや、デジタルカメラにも適用することができる。
【0086】
B8.変形例8:
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。
【符号の説明】
【0087】
100…プリンタ
110…CPU
120…内部メモリ
140…操作部
150…表示部
160…プリンタエンジン
170…カードインタフェース
172…カードスロット
200…顔形状補正部
210…変形態様設定部
220…変形領域設定部
230…変形領域分割部
240…変形パラメータ設定部
250…分割領域変形部
252…最大バンド幅算出部
254…バンドバッファ割付部
256…変形処理部
310…表示処理部
320…印刷処理部
410…分割点配置パターンテーブル
420…分割点移動テーブル
430…バンドバッファ
【特許請求の範囲】
【請求項1】
画像処理装置であって、
変形前画像に変形処理を施して、変形後画像領域内に変形後画像を生成する画像変形処理部を備え、
前記画像変形処理部は、
前記変形後画像領域の一部を構成し、前記変形処理のデスティネーションとなる対象ブロックを設定する対象ブロック設定部と、
前記対象ブロックに対応づけられ、前記変形処理のソースとなる前記変形前画像内の参照ブロックに含まれる画像を参照することにより、前記対象ブロック内に画像を生成するブロック変形処理部と、
前記対象ブロックを前記変形後画像領域内の異なる位置に順次移動して、移動後の前記対象ブロック内の画像を前記ブロック変形処理部に生成させることにより、前記変形後画像の全体を生成するブロック走査部と、
前記ブロック変形処理部による前記対象ブロックの画像の生成に先立って、前記対象ブロックが配置される全ての位置における前記参照ブロックの最大ブロックサイズを算出する最大ブロックサイズ算出部と、
前記最大ブロックサイズ算出部により算出された最大ブロックサイズの大きさの画像を格納しうるように、ソースメモリ領域を確保するソースメモリ領域確保部と、
を備え、
前記ブロック変形処理部は、前記対象ブロックに対応づけられた前記参照ブロックに含まれる画像を前記ソースメモリ領域に格納するとともに、前記ソースメモリ領域に格納された前記参照ブロックに含まれる画像を参照して前記対象ブロックの画像を生成する、
画像処理装置。
【請求項2】
請求項1記載の画像処理装置であって、
前記画像変形処理部は、元画像に前記変形処理をN回(Nは、2以上の整数)施すことによって、多重変形後画像を生成することが可能であり、
前記最大ブロックサイズ算出部は、前記多重変形後画像の画像領域内に設定される個々の対象ブロックから参照される前記N回の変形処理におけるN個の参照ブロックの論理和をとった上限ブロックサイズを前記N回の変形処理に先立って算出する上限ブロックサイズ算出部を有し、
前記メモリ領域確保部は、個々の変形処理に対応して前記上限ブロックサイズの大きさの画像を格納しうるN個のソースメモリ領域を確保し、
前記N個のソースメモリ領域のうち、i(iは、1以上かつN以下の整数)番目のソースメモリ領域は、i回目の変形処理のソースとして使用され、i−1回目の変形処理のデスティネーションとして使用される、
画像処理装置。
【請求項3】
画像処理方法であって、
変形前画像に変形処理を施して、変形後画像領域内に変形後画像を生成する画像変形処理工程を備え、
前記画像変形処理工程は、
(a)前記変形後画像領域の一部を構成し、前記変形処理のデスティネーションとなる対象ブロックを設定する工程と、
(b)前記対象ブロックに対応づけられ、前記変形処理のソースとなる前記変形前画像内の参照ブロックに含まれる画像を参照することにより、前記対象ブロック内に画像を生成する工程と、
(c)前記対象ブロックを前記変形後画像領域内の異なる位置に順次移動して、移動後の前記対象ブロック内の画像を前記工程(b)において生成することにより、前記変形後画像の全体を生成する工程と、
(d)前記工程(b)における前記対象ブロックの画像の生成に先立って、前記対象ブロックが配置される全ての位置における前記参照ブロックの最大ブロックサイズを算出する工程と、
(e)前記工程(d)において算出された最大ブロックサイズの大きさの画像を格納しうるように、ソースメモリ領域を確保する工程と、
を含み、
前記工程(b)は、前記対象ブロックに対応づけられた前記参照ブロックに含まれる画像を前記ソースメモリ領域に格納するとともに、前記ソースメモリ領域に格納された前記参照ブロックに含まれる画像を参照して前記対象ブロックの画像を生成する工程を有する、
画像処理方法。
【請求項1】
画像処理装置であって、
変形前画像に変形処理を施して、変形後画像領域内に変形後画像を生成する画像変形処理部を備え、
前記画像変形処理部は、
前記変形後画像領域の一部を構成し、前記変形処理のデスティネーションとなる対象ブロックを設定する対象ブロック設定部と、
前記対象ブロックに対応づけられ、前記変形処理のソースとなる前記変形前画像内の参照ブロックに含まれる画像を参照することにより、前記対象ブロック内に画像を生成するブロック変形処理部と、
前記対象ブロックを前記変形後画像領域内の異なる位置に順次移動して、移動後の前記対象ブロック内の画像を前記ブロック変形処理部に生成させることにより、前記変形後画像の全体を生成するブロック走査部と、
前記ブロック変形処理部による前記対象ブロックの画像の生成に先立って、前記対象ブロックが配置される全ての位置における前記参照ブロックの最大ブロックサイズを算出する最大ブロックサイズ算出部と、
前記最大ブロックサイズ算出部により算出された最大ブロックサイズの大きさの画像を格納しうるように、ソースメモリ領域を確保するソースメモリ領域確保部と、
を備え、
前記ブロック変形処理部は、前記対象ブロックに対応づけられた前記参照ブロックに含まれる画像を前記ソースメモリ領域に格納するとともに、前記ソースメモリ領域に格納された前記参照ブロックに含まれる画像を参照して前記対象ブロックの画像を生成する、
画像処理装置。
【請求項2】
請求項1記載の画像処理装置であって、
前記画像変形処理部は、元画像に前記変形処理をN回(Nは、2以上の整数)施すことによって、多重変形後画像を生成することが可能であり、
前記最大ブロックサイズ算出部は、前記多重変形後画像の画像領域内に設定される個々の対象ブロックから参照される前記N回の変形処理におけるN個の参照ブロックの論理和をとった上限ブロックサイズを前記N回の変形処理に先立って算出する上限ブロックサイズ算出部を有し、
前記メモリ領域確保部は、個々の変形処理に対応して前記上限ブロックサイズの大きさの画像を格納しうるN個のソースメモリ領域を確保し、
前記N個のソースメモリ領域のうち、i(iは、1以上かつN以下の整数)番目のソースメモリ領域は、i回目の変形処理のソースとして使用され、i−1回目の変形処理のデスティネーションとして使用される、
画像処理装置。
【請求項3】
画像処理方法であって、
変形前画像に変形処理を施して、変形後画像領域内に変形後画像を生成する画像変形処理工程を備え、
前記画像変形処理工程は、
(a)前記変形後画像領域の一部を構成し、前記変形処理のデスティネーションとなる対象ブロックを設定する工程と、
(b)前記対象ブロックに対応づけられ、前記変形処理のソースとなる前記変形前画像内の参照ブロックに含まれる画像を参照することにより、前記対象ブロック内に画像を生成する工程と、
(c)前記対象ブロックを前記変形後画像領域内の異なる位置に順次移動して、移動後の前記対象ブロック内の画像を前記工程(b)において生成することにより、前記変形後画像の全体を生成する工程と、
(d)前記工程(b)における前記対象ブロックの画像の生成に先立って、前記対象ブロックが配置される全ての位置における前記参照ブロックの最大ブロックサイズを算出する工程と、
(e)前記工程(d)において算出された最大ブロックサイズの大きさの画像を格納しうるように、ソースメモリ領域を確保する工程と、
を含み、
前記工程(b)は、前記対象ブロックに対応づけられた前記参照ブロックに含まれる画像を前記ソースメモリ領域に格納するとともに、前記ソースメモリ領域に格納された前記参照ブロックに含まれる画像を参照して前記対象ブロックの画像を生成する工程を有する、
画像処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2010−166624(P2010−166624A)
【公開日】平成22年7月29日(2010.7.29)
【国際特許分類】
【出願番号】特願2010−104673(P2010−104673)
【出願日】平成22年4月30日(2010.4.30)
【分割の表示】特願2007−125635(P2007−125635)の分割
【原出願日】平成19年5月10日(2007.5.10)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】
【公開日】平成22年7月29日(2010.7.29)
【国際特許分類】
【出願日】平成22年4月30日(2010.4.30)
【分割の表示】特願2007−125635(P2007−125635)の分割
【原出願日】平成19年5月10日(2007.5.10)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】
[ Back to top ]