(57)【特許請求の範囲】
【請求項１】
変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像変形方法であって、
前記原画像中における複数のパーツを設定するパーツ設定ステップと、
前記制御格子の格子間隔を前記パーツ毎に異なるよう設定する格子間隔設定ステップと、を含み、
複数のパーツそれぞれの画像変形を、前記格子間隔設定ステップにて設定された格子間隔の制御格子を用いて行う
ことを特徴とする画像変形方法。
【請求項２】
変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像変形方法であって、
前記原画像中における複数のパーツを設定するパーツ設定ステップと、
前記複数のパーツそれぞれについて、制御格子の格子間隔を設定する格子間隔設定ステップと、を含み、
前記格子間隔設定ステップでは、格子間隔の設定対象となっているパーツに含まれる基準点の間隔に応じて、格子間隔を決定し、
複数のパーツそれぞれの画像変形を、前記格子間隔設定ステップにて設定された格子間隔の制御格子を用いて行う
ことを特徴とする画像変形方法。
【請求項３】
前記格子間隔設定ステップでは、前記パーツ内において隣り合う基準点の格子方向における最大間隔に応じて、当該格子方向における格子間隔を決定する
ことを特徴とする請求項２記載の画像変形方法。
【請求項４】
前記格子間隔設定ステップでは、前記最大間隔にほぼ等しい値を、当該格子方向における格子間隔として決定する
ことを特徴とする請求項３記載の画像変形方法。
【請求項５】
変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像変形方法であって、
前記原画像中における複数のパーツを設定するパーツ設定ステップと、
前記複数のパーツそれぞれについて、制御格子の格子間隔を設定する格子間隔設定ステップと、を含み、
複数のパーツそれぞれの画像変形を、前記格子間隔設定ステップにて設定された格子間隔の制御格子を用いて行い、
設定された格子間隔の制御格子を用いた前記画像変形によって移動した後の基準点の位置と前記目標点の位置との誤差が、所定の閾値よりも大きい前記制御格子の一部の箇所についてだけ、設定された前記格子間隔よりも小さい格子間隔の制御格子を用いて、再度の画像変形を行う
ことを特徴とする画像変形方法。
【請求項６】
変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像処理装置であって、
前記原画像中における複数のパーツを設定するパーツ設定手段と、
前記制御格子の格子間隔を前記パーツ毎に異なるよう設定する格子間隔設定手段と、を含み、
複数のパーツそれぞれの画像変形が、前記格子間隔設定手段にて設定された格子間隔の制御格子を用いて行われるよう構成されている
ことを特徴とする画像処理装置。
【請求項７】
コンピュータを、請求項６記載の画像処理装置として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像変形法、画像処理装置、及びコンピュータプログラムに関するものである。
【背景技術】
【０００２】
近年、多くの映像作品や幅広い研究分野において画像変形に対するニーズは増加傾向にあり、これに関してメッシュワープやフィールドモーフィング、放射基底関数やＢ−ｓｐｌｉｎｅ変換（ｆｒｅｅ−ｆｏｒｍ  ｄｅｆｏｒｍａｔｉｏｎ法）等、多くの手法が提案されている。
【０００３】
この中で、Ｂ−ｓｐｌｉｎｅ変換を基にしたｆｒｅｅ−ｆｏｒｍ  ｄｅｆｏｒｍａｔｉｏｎ法は多少の変形誤差は発生するものの、自然で滑らかな変形を可能とする非常に有用な変形手法である。また、この変形誤差を低減させるための手法としてｍｕｌｔｉ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換という手法が提案されている（非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】S. Lee、G. Wolberg、 S.Y. Shin、 “Scattered Data Interpolation with Multilevel B-spline”、 IEEE Transaction on Visualization and Computer Graphics、 Vol. 3、 PP.228-244、1997
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、従来の画像変形法よりも、変形精度を向上させることを目的とする。
また、本発明の他の目的は、従来の画像変形法よりも、計算量を削減することである。
【課題を解決するための手段】
【０００６】
（１）本発明は、変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像変形方法であって、前記原画像中における複数のパーツを設定するパーツ設定ステップと、前記複数のパーツそれぞれについて、制御格子の格子間隔を設定する格子間隔設定ステップと、を含み、複数のパーツそれぞれの画像変形を、前記格子間隔設定ステップにて設定された格子間隔の制御格子を用いて行うことを特徴とする画像変形方法である。
【０００７】
上記本発明によれば、パーツ毎に格子間隔が設定された制御格子を用いて画像変形を行うことができる。
【０００８】
（２）前記格子間隔設定ステップでは、格子間隔の設定対象となっているパーツに含まれる基準点の間隔に応じて、格子間隔を決定するのが好ましい。
【０００９】
（３）前記格子間隔設定ステップでは、前記パーツ内において隣り合う基準点の格子方向における最大間隔に応じて、当該格子方向における格子間隔を決定するのが好ましい。
【００１０】
（４）前記格子間隔設定ステップでは、前記最大間隔にほぼ等しい値を、当該格子方向における格子間隔として決定するのが好ましい。
【００１１】
（５）設定された格子間隔の制御格子を用いた前記画像変形によって移動した後の基準点の位置と前記目標点の位置との誤差が、所定の閾値よりも大きい箇所については、設定された前記格子間隔よりも小さい格子間隔の制御格子を用いて、再度の画像変形を行うことができる。
この場合、誤差が小さい箇所の計算を省略できるため、再度の画像変形を行っても処理時間の増大を抑えることができる。
【００１２】
（６）他の観点からみた本発明は、変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像処理装置であって、前記原画像中における複数のパーツを設定するパーツ設定手段と、前記複数のパーツそれぞれについて、制御格子の格子間隔を設定する格子間隔設定手段と、を含み、複数のパーツそれぞれの画像変形が、前記格子間隔設定手段にて設定された格子間隔の制御格子を用いて行われるよう構成されていることを特徴とする画像処理装置である。
【００１３】
（７）他の観点からみた本発明は、コンピュータを、上記画像処理装置として機能させるためのコンピュータプログラムである。
【発明の効果】
【００１４】
本発明によれば、複数のパーツそれぞれの格子間隔を異ならせて、パーツごとに画像変形ができるため、変形精度を向上させることが可能である。
【図面の簡単な説明】
【００１５】
【図１】制御格子を示す図である。
【図２】画像変形処理の概念図である。
【図３】従来のｍｕｌｔｉ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換に用いられる制御格子を示す図である。
【図４】画像処理装置の機能ブロック図である。
【図５】パーツを示す図である。
【図６】画像変形処理のフローチャートである。
【図７】制御格子の格子間隔決定方法を示す図である。
【図８】制御格子の格子間隔決定方法を示す図である。
【図９】基準点の移動と誤差の説明図である。
【図１０】適応的格子法における格子分割の例を示す図である。
【図１１】基準点の影響領域と実際の変形領域を示す図である。
【図１２】形状の不自然率を示すチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の好ましい実施形態について添付図面を参照しながら説明する。
以下では、まず、基本的なＢ−ｓｐｌｉｎｅ変換及び非特許文献１記載のｍｕｌｔｉ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換について説明し、その後、本実施形態に係る画像処理装置の構成とその処理方法について説明する。
【００１７】
［１．基本的なＢ−ｓｐｌｉｎｅ変換］
原画像の形状変形を行うにあたり、変形元となる点ｐ（ｘ，ｙ）から変形先となる点ｐ’（ｘ’，ｙ’）へ一意に座標変換する必要がある。この座標変換はｘ，ｙの座標軸毎にｘ’＝ｆｘ（ｘ，ｙ），ｙ’＝ｆｙ（ｘ，ｙ）という二つの変形関数で表すことが出来る。
Ｂ−ｓｐｌｉｎｅ変換ではこの変換関数にＢ−ｓｐｌｉｎｅ基底関数を用いて画像の変形を実現する。
【００１８】
オーソドックスなＢ−ｓｐｌｉｎｅ変換では、図１の様な制御格子を用いて変形を行う。具体的には、格子中の各頂点（以下、「制御点」という）にそれぞれ移動量を付与し、これを用いて原画像全体において一意の形状変形を実現する。
図１では原画像をｍ×ｎに分割し、その周囲に擬似的に局所領域を一列配置している。原画像全体において、制御点の数は（ｍ＋３）×（ｎ＋３）個となる。
【００１９】
画像変形は、図２（ｂ）に示すように原画像上に設定された基準点が、目標点の位置に移動するように行われる。
また、制御格子における各制御点の移動量は、基準点及び目標点の位置に基づいて決定される。
【００２０】
Ｂ−ｓｐｌｉｎｅ変換では、まず、ある１個の局所領域の近傍に存在する１６個の制御点の移動量を用いて、その中央に存在する当該局所領域の変形を行う。図１に示す制御格子において、ｍ＝０〜１，ｎ＝０〜１の範囲にある局所領域Ａの変形を行う場合、この局所領域Ａの近傍領域（図１の斜線部分）に存在する１６個の制御点の移動量を用いて、局所領域Ａの変形処理を行う。
【００２１】
そして、上記の変形処理を、原画像中のすべての局所領域に対して繰り返し行うことで原画像全体として一意の形状変形を実現する。
【００２２】
Ω＝｛（ｘ，ｙ）｜−１≦ｘ≦ｍ＋１，−１≦ｙ≦ｎ＋１｝をｘｙ座標空間に配置した格子平面とする。そしてｘｙｚ三次元空間に散らばる点の集合Ｐ＝｛（ｘ，ｙ，ｚ）｝を用いて変形を行う。ここで、｛（ｘ，ｙ）｝はΩ上の点、｛ｚ｝はこの点における注目画素の移動量を表す。
画像中のすべての座標においてこの点群Ｐの補間を実現するためにΩ上に存在する制御点群Φにより定義されるＢ−ｓｐｌｉｎｅ変換を変形関数ｆとして用いる。
【００２３】
ここで、φｉｊを、Φ中のｉｊ番目の制御点の重みパラメータとする。変形関数ｆは、この制御点の重みパラメータを用いることで以下の様に表すことが出来る。
【数１】
0005565671.tif 000002
【００２４】
そしてＢｋとＢｌは、以下のようなＢ−ｓｐｌｉｎｅ基底関数を表すものである。
【数２】
0005565671.tif 000003
【００２５】
画像変形を行うにあたり、変形元の基準点群｛（ｘ１，ｙ１），（ｘ２，ｙ２），・・・，（ｘｎ，ｙｎ）｝と変形先の目標点群｛（ｘ１’，ｙ１’），（ｘ２’，ｙ２’），・・・，（ｘｎ’，ｙｎ’）｝の座標は、事前に取得しておく。
各制御点へパラメータとして付与するｘ，ｙの各座標軸方向の重みパラメータ（φｘｋｌとφｙｋｌ）は以下に示すコスト関数を最小化することによって取得できる。
【数３】
0005565671.tif 000004
【００２６】
ここで、各基準点の移動により影響を受ける領域はその点の近傍の９個の局所領域である。もし複数の基準点から影響を受ける領域が重なり合ってしまった場合、その領域に存在する制御点は各基準点からの影響を重複して受けることとなり、この領域では自然な形状変化を行うことが出来なくなる。よって複数の基準点が近傍に存在する場合でも正確な形状変化を実現するため、この問題を解決する必要がある。
【００２７】
φｉｊをΦ上のｉｊ番目の制御点における求めるべき重みパラメータ（実際の変形に使用する重みパラメータ）、φｃｉｊをｉｊ番目の制御点において基準点ｃから個別に与えられる重みパラメータとする。この求めるべき重みパラメータφｉｊは、以下のコスト関数を最小化することにより得られる。
【数４】
0005565671.tif 000005
【００２８】
以上の式により実現されるＢ−ｓｐｌｉｎｅ変換は、非常に滑らかで自然な変形を実現するが、その変形結果は多少の変形誤差を有する。
【００２９】
［２．ｍｕｌｔｉ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換］
前述のＢ−ｓｐｌｉｎｅ変換は滑らかで自然な変形が可能であるが、その変形には多少の変形誤差（目標点に対する誤差）が含まれる。これはサイズの小さな格子を用いて変形を行うことにより低減することが可能であるが、その場合、局所的に急激な変形が発生してしまい、自然でスムーズな変形とは程遠いものとなる。従来のＢ−ｓｐｌｉｎｅ変換では変形の正確さと自然さ・スムーズさは両立しがたいものとなっている。
【００３０】
前掲の非特許文献１では、変形の自然さ・スムーズさを保ちつつ、変形誤差を低減させる手法としてｍｕｌｔｉ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換という手法が提案されている。
【００３１】
この手法は複数の制御格子Φ１，Φ２，・・・，Φｈを用いて変形を行う。このうちΦ１は従来のＢ−ｓｐｌｉｎｅ変換で用いる制御格子であり、Φ２はΦ１よりも小さな格子間隔の制御格子である。この格子間隔の縮小率は任意に決めることが出来るが、ここででは後の計算を簡略化する為に１／２倍の格子を使用する。
ここで、Φｋが（ｍ＋３）×（ｎ＋３）個の格子頂点（制御点）を持つ制御格子とする場合、Φｋ＋１は（２ｍ＋３）×（２ｎ＋３）個の格子頂点を持つことになる。Φｋにおけるｉｊ番目の制御点の配置は、Φｋ＋１中の（２ｉ，２ｊ）目の制御点の配置と一致する。
【００３２】
ｍｕｌｔｉ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換を行うには、はじめに図３（ａ）に示すように粗い制御格子Φ１を用いた通常のＢ−ｓｐｌｉｎｅ変換を行う。そしてここで発生した誤差を、図３（ｂ）に示すようにΦ１よりも小さな格子間隔を持つ変形格子Φ２を用いて埋め合わせしてゆく。実際には粗い格子を用いた変形時の誤差を新たな移動量とし、一段階細かい格子を使用した変形を繰り返す。これにより変形を繰り返す度に誤差を低減することが可能となる。
【００３３】
Ｂ−ｓｐｌｉｎｅ変換は移動量に引かれる様に滑らかに変形するので、変形を繰り返すことで前段階よりも誤差が増加することはない。ただし、変形回数に応じて計算時間は増加することになる。
ｍｕｌｔｉ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換は非常に有用な変形手法であるが、その反面多くの計算時間を必要とする。また、変形精度についても改善の余地がある。
【００３４】
［３．画像処理装置の構成とその処理方法］
本実施形態に係る画像処理装置は、従来のｍｕｌｔｉ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換よりも変形精度をさらに向上し、変換の計算時間削減を達成したものである。
本実施形態に係る画像処理装置１は、以下に説明する画像変形処理を実行するコンピュータプログラムをコンピュータにインストールして構成されたものであり、画像処理装置１における各種の機能は、このコンピュータプログラムによって実現されている。
なお、前記コンピュータは、演算処理装置、記憶部、入出力デバイスなどを有している。
【００３５】
図４は、画像処理装置１の機能ブロックを示している。この画像処理装置１は、基準点設定部１１、目標点設定部１２、パーツ設定部１３、格子間隔設定部１４、画像変形処理部１５、誤差判定部１６、及び格子間隔調整部１７としての機能を有している。
【００３６】
基準点設定部１１は、変形の対象となる画像（原画像）上において変形の基準となる複数の基準点（図２（ｂ）参照）を設定するためのものである。基準点設定部１１は、ユーザから基準点の位置を示す情報を受け付けて当該基準点の位置を記憶部に記憶するものであってもよいし、他のソフトウェアから与えられた基準点情報を受け付けて記憶部に記憶するものであってもよい。
なお、基準点は、画像中の変形対象物（例えば、人の顔）の任意の位置に設定することができる。
【００３７】
隣り合う基準点間の配置間隔は、一つのパーツ内において、ほぼ揃うように設定される。配置間隔は、完全に一致している必要はないが、ほぼ揃っていることで、当該パーツの適切な格子間隔を設定するのが容易となる。
【００３８】
目標点設定部１２は、設定された複数の基準点それぞれについて、当該基準点の移動先を示す目標点（図２（ｂ）参照 ）を設定するためのものである。目標点設定部１２も、ユーザから目標点の位置を示す情報を受け付けて当該目標点の位置を記憶部に記憶するものであってもよいし、他のソフトウェアから与えられた目標点情報を受け付けて記憶部に記憶するものであってもよい。
【００３９】
パーツ設定部１３は、原画像において変形の対象となる領域を、複数のパーツ（領域）に分割して設定するためのものである。例えば、変形の対象となる領域が、人の顔である場合、複数のパーツとしては、例えば、図５中の各図において点線で囲まれた領域（目、眉毛、鼻、口、輪郭）を設定することができる。なお、一つのパーツが、互いに離れた複数の領域から構成されていてもよい。
パーツ設定部１３は、パーツとなる領域をユーザからの入力によって設定するためのものであってもよいし、原画像に対する画像処理によって自動的にパーツを切り出すものであってもよい。
【００４０】
格子間隔設定部１４は、パーツ設定部１３にて設定された各パーツの画像変形に用いられる制御格子の格子間隔を設定するためのものである。この格子間隔設定部１４では、複数のパーツそれぞれについて適切な格子間隔を設定する。
【００４１】
画像変形処理部１５では、格子間隔設定部１４で設定された格子間隔を有する制御格子を用いて原画像の画像変形処理を行うためのものである。この画像変形処理部１５では、パーツ毎に異なる格子間隔の制御格子を用いて、Ｂ−ｓｐｌｉｎｅ変換により、パーツ毎の画像変形を行う。パーツ毎に異なる格子間隔の制御格子を用いるため、パーツ毎の適切な変形が実現できる。
【００４２】
誤差判定部１６は、パーツ毎に設定された制御格子を用いた画像変形によって移動した後の基準点の位置と前記目標点の位置との誤差を判定するためのものである。この誤差判定は、複数の基準点それぞれについて行われる。
【００４３】
格子間隔調整部１７は、誤差判定部１６によって算出された誤差が、所定の閾値よりも大きい基準点が存在する箇所については、先の画像変形で用いられた制御格子の格子間隔よりも小さい格子間隔（例えば、先の格子間隔の１／２の格子間隔）にするためのものである。格子間隔調整部１７によって、格子間隔が小さくなるように調整された箇所（基準点）については、画像変形処理部１５が、新たに設定された格子間隔の制御格子を用いて、再度の画像変形を行う。
【００４４】
図６は、画像処理装置１による画像変形処理を示している。まず、変形を行いたいパーツの設定処理が行われる（ステップＳ１）。パーツ設定処理では、パーツ設定部１３が、パーツとなる領域を指定する入力をユーザから受け付ける処理等を行う。後述の画像変形（ステップＳ４）では、パーツ毎に独立した画像変形の処理が行われる。
【００４５】
続いて、各パーツ内に、基準点及び基準点の移動先である目標点を設定する処理が行われる（ステップＳ２）。基準点及び目標点設定処理では、基準点設定部１１及び目標点設定部１２が、基準点及び目標点を指定する入力をユーザから受け付ける処理等を行う。なお、ステップＳ１，Ｓ２の実行順序は逆でもよい。
【００４６】
続いて、設定されたパーツ毎に適用される制御格子の格子間隔を設定する処理が行われる（ステップＳ３）。格子間隔設定処理では、格子間隔設定部１４が、各パーツに含まれる基準点の間隔に応じて、格子間隔を決定する。つまり、パーツ内の基準点の配置が密であれば、格子間隔を小さくし、パーツ内の基準点の配置が疎であれば、格子間隔を大きくする。
【００４７】
本実施形態では、格子間隔設定部１４は、パーツ内において隣り合う基準点の格子方向における最大間隔を利用して、格子間隔を決定する。
ここで、あるパーツＰ内の複数の基準点Ｃが、図７（ａ）に示すように配置されているものとする。また、図７（ａ）に示すＸ軸方向、Ｙ軸方向は、制御格子のそれぞれの格子方向（２次元の場合、縦方向及び横方向）と一致しているものとする。
この場合、格子間隔設定部１４は、これらの複数の基準点Ｃのうち、Ｘ軸方向において最も離れて隣り合っている２つの基準点ＣＸ１，ＣＸ２を決定する（図７（ｂ）参照）。これらの基準点ＣＸ１，ＣＸ２間の間隔Ｘは、このパーツＰ内において、隣り合う基準点のＸ軸方向間隔としては最大である。
【００４８】
また、格子間隔設定部１４は、複数の基準点Ｃのうち、Ｙ軸方向において最も離れて隣り合っている２つの基準点ＣＹ１，ＣＹ２を決定する（図７（ｂ）参照）。これらの基準点ＣＹ１，ＣＹ２間の間隔Ｙは、このパーツＰ内において、隣り合う基準点のＹ軸方向間隔としては最大である。
【００４９】
格子間隔設定部１４は、Ｘ軸方向の最大間隔Ｘを、一方の格子方向（横方向）の格子間隔とし、Ｙ軸方向の最大間隔Ｙを、他方の格子方向（縦方向）の格子間隔として設定する（図７（ｃ）参照）。
以上のようにして、ある一つのパーツ用の制御格子の格子間隔が決定される。このようにして決定された格子間隔は、パーツ毎に適切なものとなっており、パーツ毎に適切な画像変形を行うのに好適である。
なお、上記のような格子間隔の決定の仕方が、好ましい理由については、後述する。
また、本実施形態では、最大間隔Ｘ，Ｙと格子間隔とを完全に一致させたが、多少は異なっていてもよい。
【００５０】
以上のようなステップＳ３の格子間隔設定処理は、設定された複数のパーツそれぞれに対して行われる。したがって、パーツ毎に格子間隔が設定されることになる。
【００５１】
また、図８（ａ）に示すように、あるパーツＰ１の変形を担う第１の基準点群と、他のパーツＰ２の変形を担う第２の基準点群とが、近接して存在している場合には、それぞれのパーツに異なる格子間隔を設定して変形を行うことが困難である。
そこで、基準点群が近接している複数のパーツＰ１，Ｐ２については、これら複数のパーツＰ１，Ｐ２に共通の格子間隔を設定する。
つまり、両パーツＰ１，Ｐ２における基準点群のうち、Ｘ軸方向の最大間隔が、一方の格子方向（横方向）の格子間隔となり、Ｙ軸方向の最大間隔が、他方の格子方向（縦方向）の格子間隔となる。
【００５２】
より具体的には、図８（ｂ１）（ｂ２）に示すように、まず、それぞれのパーツＰ１，Ｐ２について、図７に示した方法と同様の方法により、格子間隔を決定する。
その後、基準点群が近接しているパーツＰ１，Ｐ２については、図８（ｃ）に示すように、それぞれの格子間隔を比較し、Ｘ軸方向及びＹ軸方向それぞれについて、より大きい格子間隔を、両パーツＰ１，Ｐ２共通の格子間隔として決定する（図８（ｄ）参照）。
図８（ｄ）の制御格子の場合、Ｘ軸方向の格子間隔は、パーツＰ２のＸ軸方向格子間隔が採用され、Ｙ軸方向の格子間隔は、パーツＰ１のＹ軸方向格子間隔が採用されている。
【００５３】
続いて、パーツ毎に設定された格子間隔の制御格子を用いて、各パーツ（目、眉毛、鼻、口、輪郭など）の画像変形が行われる（ステップＳ４）。本実施形態では、一つの画像であっても、パーツ毎の局所的な変形が独立して行われる（以下、パーツ毎に変形させる手法を、「部分変形法」という）。したがって、パーツ毎に異なる格子間隔の制御格子を用いることが可能である。なお、基準点群が近接するパーツについては、統合された共通の制御格子によって変形が一括して行われる。
【００５４】
ステップＳ４の画像変形の後、画像変形に伴う各基準点の移動それぞれについて、誤差判定を行う（ステップＳ５）。誤差判定処理では、誤差判定部１６が、図９に示すように、ある基準点が、制御格子を用いた画像変形によって移動した後の位置と、目標点と、の差分を求める。さらに、誤差判定部１６は、その差分（誤差）を、所定の閾値と比較する。
【００５５】
そして、誤差が、所定の閾値よりも大きい箇所（基準点）については、設定された前記格子間隔よりも小さい格子間隔の制御格子を用いて、再度の画像変形を行う（ステップＳ６）。
【００５６】
ここで、従来のｍｕｌｉｔ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換では、まず、図３（ａ）に示すように粗い制御格子を使用して変形を行った後、画像全体に対して、図３（ｂ）に示すように細かい格子間隔を持つ制御格子をして再度の画像変形を行う。
ｍｕｌｉｔ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換では、より細かい格子間隔を持つ制御格子による画像変形を繰り返すため、変形の誤差は小さくできるが、画像全体の画像変形を繰り返すため計算量が増大する。
【００５７】
したがって、パーツ毎に画像変形を行う部分変形法において、単純に、従来のｍｕｌｉｔ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換を適用すると、パーツ全体について再度の画像変形が行われ、計算量が増大するという上記問題が残ったままとなる。
【００５８】
そこで、本実施形態では、変形誤差が、所定の閾値よりも大きい箇所（基準点）についてだけ、より細かい格子間隔を持つ制御格子による画像変形（以下、この画像変形の手法を、「適応的格子法」という）を行うことで、処理の高速化を図る（ステップＳ６）。
【００５９】
適応的格子法では、変形誤差が少ない箇所では、比較的大きな格子間隔の制御格子による変換（低レベル変換）で済ませ、変形誤差が大きい箇所のみ、比較的小さな格子間隔の制御格子による変換（高レベル変換）を行う。これにより、再度の画像変形の際に、画像変形のための計算を行う領域を削減でき、不要な繰り返し計算を低減することができる。
【００６０】
図１０は、適応的格子法における格子間隔の縮小の仕方を示している。あるパーツに対して、図１０（ａ）に示すサイズの制御格子を用いて第１段階の画像変形（ステップＳ４）が行われた後、変形誤差の大きい箇所については、格子間隔調整部１７が、格子間隔を小さく（例えば、１／２縮小）する。図１０（ｂ）は、第２段階の画像変形のために、部分的に格子間隔が小さくなった制御格子を示している。
【００６１】
そして、画像変形処理部１５は、変形誤差の大きい箇所について、第１段階の画像変形（ステップＳ４）による移動後の基準点の位置を新たな基準点とし、当該新たな基準点を目標点まで移動させる画像変形を行う。
【００６２】
このような再度の画像変形は、すべての基準点について、変形誤差が所定の閾値よりも小さくなるまで繰り返される。したがって、第２段階の画像変形で、変形誤差が残っている箇所については、図１０（ｃ）に示すように、さらに格子間隔の縮小化が行われる。適応的格子法では、制御格子の縮小化を繰り返しても、繰り返す度に、計算が必要な領域が小さくなるため、計算量の増大が抑えられる。
【００６３】
適応的格子法では、誤差低減という観点では、ｍｕｌｉｔ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換と同様の処理が行われているため、ｍｕｌｉｔ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換と同様に良好な画像変形精度が得られる。
しかも、適応的格子法では、ｍｕｌｉｔ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換のように画像全体にｍｕｌｉｔ−ｌｅｖｅｌの処理を行うのではなく、変形誤差の大きい箇所だけｍｕｌｉｔ−ｌｅｖｅｌの処理を行うため、計算量を削減できる。
【００６４】
なお、本実施形態では、ユーザの見た目上、変形が発生しない箇所（算出された移動距離が１ピクセル未満の箇所等）については、ピクセル操作等の各ピクセルの移動量計算後の処理を省略する。
例えば、図１１（ａ）のように、２つの基準点Ｃ，Ｃがあった場合、変形のための計算が行われる領域（基準点Ｃの影響領域）は、図１１（ａ）における塗りつぶし範囲（基準点を含む周辺の領域）となる。
しかし、基準点Ｃ，Ｃから離れた位置においては、算出された移動量が１ピクセル未満となることがある。そのような範囲については、実際に画像の移動操作（画像変形処理）のための計算を行っても、結果として画像は変形しない。
【００６５】
そこで、本実施形態では、各ピクセルについて、算出された移動量を、所定の閾値（例えば，０．５ピクセル）と比較し、移動量が閾値未満の場合には、見た目上変形が発生しない箇所であると判定し、そのピクセルの移動操作処理を省略する。
図１１（ｂ）の塗りつぶし範囲は、実際に移動操作処理が行われる範囲を示している。なお、ここでは、ピクセルの移動操作処理の際には、算出された移動距離を四捨五入するため、移動量が閾値（０．５）以上の場合には、１ピクセル分の移動が生じることになる。
【００６６】
［４．基準点の配置間隔と格子間隔についての考察］
変形対象に基準点を配置する際、高精度の変形を実現しようとすると基準点の配置間隔は各パーツの形状の細かさに応じて変化してくる。細かさの異なる複数のパーツに対して同一サイズの制御格子を用いた変形を行った場合、その格子の格子間隔は必ずしも変形に最適なものではなく、変形精度を悪化させる要因となる。
【００６７】
変形精度の悪化の原因としては、格子間隔が大きすぎる場合と、格子間隔が小さすぎる場合とに大別される。
格子間隔が大きすぎる場合、（ｉ）意図しない領域における変形の発生、（ｉｉ）変形精度の悪化などの問題が生じる。
【００６８】
変形に使用する制御格子の格子間隔を拡大すると、それに伴って各基準点の移動により影響を受ける範囲も拡大する。これが極端になると変形の局所性が失われ、本来の変形対象領域外でも大きな変形が発生してしまう様になる。
また、格子間隔の大きな制御格子を用いて変形を行う場合、前述のように各基準点から影響を受ける領域は大きくなり、近傍に存在する他の基準点の影響領域と重なりやすくなる。この際、式(1)によりその誤差を最小とする様配慮はしていても多数の影響領域が重なり合う場合にはこの誤差は大きくなり、ぼやけも発生しがちとなる。
【００６９】
また、格子間隔が小さすぎる場合、（ｉｉｉ）形状変化の過度な局所化、（ｉｖ）形状変化の不成立などの問題が生じる。
【００７０】
複数の基準点を用いて一つのパーツの変形を実現する場合、サイズの小さ過ぎる格子を使用して変形を行うと、各基準点による変形が必要以上に局所化してしまう。この結果、それぞれの変形がスムーズに繋がり合わず、自然な変形を行うことが出来なくなる。
また、Ｂ−ｓｐｌｉｎｅ変換では、基準点の周囲９つの領域においてのみ点の移動の影響を受ける．しかし、小さなサイズの格子を用いて変形を行った場合（もしくは基準点の移動量が格子サイズに対して著しく大きい場合）、基準点の移動先がこの領域内に収まらなくなり。正常な変形が実現されない。この不自然さは上記の（ｉ）〜（ｉｉｉ）において発生する不自然さよりも顕著なものとなる。
【００７１】
これらを考慮すると高精度のＢ−ｓｐｌｉｎｅ変換を行うには同一パーツの変形を担う隣り合った基準点の影響領域はある程度以上重なり合う必要がある。
一方、他パーツの変形を担う基準点の影響領域とは重なりが発生しないように調節する必要があることがわかる。
【００７２】
また、同一パーツの変形を担う基準点同士でもすべての基準点において影響領域が重複する場合、基準点の数にもよるがぼやけや変形誤差が発生しがちとなる。
同一パーツの変形を担う隣り合った基準点においてのみ変形に不自然さが発生しない程度に影響領域を重複させ、それ以外の場合は極力影響領域が重なり合わない様に格子の間隔を調整するのが好ましい。
【００７３】
また、上記の４つの問題点のうち、問題（ｉｖ）が発生した場合、変形の不自然さは最も大きなものとなる。そこで、問題（ｉｖ）が発生しないことを最重要と考え，その上で他の３つの問題が極力発生しない様に格子のサイズを規定するのが好ましい。
【００７４】
ここで、Ｂ−ｓｐｌｉｎｅ変換による変形実行時の制御格子の分割数を検討するため、基準点間の距離（最大間隔）と制御格子の格子間隔とを関連付けてアンケート調査を行った。 アンケート調査には２５名の男女の顔画像に対して格子間隔を変化させて変形を行った１００枚の画像を使用し、３２名の男女から回答を得た。この調査結果を下記の図１２に示す。
【００７５】
図１２より格子間隔が基準点間の距離よりも大きな場合、８割以上の回答者が不自然さを感じないと回答していることがわかる。また、その後のヒアリングにより格子間隔と基準点間の距離が同程度の画像では上記の問題（ｉｉｉ）（ｉｖ）はほとんど認知されていないことがわかった。不自然さの理由としては変形させている顔の輪郭の形状に対するものがほとんどであるが、その周囲に配置されている頭髪の形状に不自然さを感じる回答者もいた。
【００７６】
また、図１２より問題（ｉｉｉ）（ｉｖ）が認識されなくなったあと、制御格子のサイズ（格子間隔）を大きくしても形状が不自然だとする回答数はあまり収束していないことがわかる。また、先に説明した様に格子のサイズを大きくしすぎると問題（ｉ）、（ｉｉ）よる影響が大きく反映されてしまう。このことから前記部分変形法では同一パーツの変形を担う基準点群のうち、隣り合う基準点間の最大距離を制御格子の格子間隔として定義し、変形に使用した。これにより問題（ｉｉｉ）、（ｉｖ）をなるべく低減させ，問題（ｉ）、（ｉｉ）による影響も抑えることが可能となる。
【００７７】
［５．実験結果］
下記表１は、ａ）従来のｍｕｌｔｉ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換の計算時間、ｂ）画像全体を適応的格子法だけで処理した場合の計算時間（部分変形法は不採用）、ｃ）部分変形法と従来のｍｕｌｔｉ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換とを組み合わせた場合の計算時間、ｄ）部分変形法と適応的格子法を組み合わせた場合（図６の場合）の計算時間、を示している。
【００７８】
【表１】
0005565671.tif 000006
【００７９】
表１に示すようにｂ）適応的格子法では、ａ）従来のｍｕｌｔｉ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換の処理を削減できているため、処理が高速化していることがわかる。また、ｃ）の部分変形法では、計算時間は、ａ）従来のｍｕｌｔｉ−ｌｅｖｅｌ  Ｂ−ｓｐｌｉｎｅ変換とほとんどかわらないが、誤差を小さくできた。
ｄ）部分変形法と適応的格子法を組み合わせた場合は、誤差を小さくできるとともに、計算時間の削減も達成できている。
【００８０】
［６．付記］
なお、上記において開示した事項は、例示であって、本発明を限定するものではなく、様々な変形が可能である。
また、本明細書には、特許請求の範囲に記載した発明以外の他の発明も開示されている。例えば、本明細書には、以下の発明が記載されている。
【００８１】
変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像変形方法であって、原画像に含まれる基準点の間隔に応じて、前記制御格子の格子間隔を決定するステップを含むことを特徴とする画像変形方法。
【００８２】
変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像変形方法であって、所定の格子間隔の制御格子を用いた前記画像変形によって移動した後の基準点の位置と前記目標点の位置との誤差が、所定の閾値よりも大きい箇所については、前記格子間隔よりも小さい格子間隔の制御格子を用いて、再度の画像変形を行うことを特徴とする画像変形方法。
【符号の説明】
【００８３】
１  画像処理装置
１１  基準点設定部
１２  目標点設定部
１３  パーツ設定部
１４  格子間隔設定部
１５  画像変形処理部
１６  誤差判定部
１７  格子間隔調整部
【図１】
0005565671.tif 000007
【図２】
0005565671.tif 000008
【図３】
0005565671.tif 000009
【図４】
0005565671.tif 000010
【図５】
0005565671.tif 000011
【図６】
0005565671.tif 000012
【図７】
0005565671.tif 000013
【図８】
0005565671.tif 000014
【図９】
0005565671.tif 000015
【図１０】
0005565671.tif 000016
【図１１】
0005565671.tif 000017
【図１２】
0005565671.tif 000018