画像変形方法、画像処理装置、及びコンピュータプログラム
【課題】画像の変形精度を向上させる。
【解決手段】本発明は、変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像変形方法である。この方法は、前記原画像中における複数のパーツを設定するパーツ設定ステップ(ステップS1)と、前記複数のパーツそれぞれについて、制御格子の格子間隔を設定する格子間隔設定ステップ(ステップS3)と、を含む。複数のパーツそれぞれの画像変形は、前記格子間隔設定ステップにて設定された格子間隔の制御格子を用いて行われる。
【解決手段】本発明は、変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像変形方法である。この方法は、前記原画像中における複数のパーツを設定するパーツ設定ステップ(ステップS1)と、前記複数のパーツそれぞれについて、制御格子の格子間隔を設定する格子間隔設定ステップ(ステップS3)と、を含む。複数のパーツそれぞれの画像変形は、前記格子間隔設定ステップにて設定された格子間隔の制御格子を用いて行われる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像変形法、画像処理装置、及びコンピュータプログラムに関するものである。
【背景技術】
【0002】
近年、多くの映像作品や幅広い研究分野において画像変形に対するニーズは増加傾向にあり、これに関してメッシュワープやフィールドモーフィング、放射基底関数やB−spline変換(free−form deformation法)等、多くの手法が提案されている。
【0003】
この中で、B−spline変換を基にしたfree−form deformation法は多少の変形誤差は発生するものの、自然で滑らかな変形を可能とする非常に有用な変形手法である。また、この変形誤差を低減させるための手法としてmulti−level B−spline変換という手法が提案されている(非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】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
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、従来の画像変形法よりも、変形精度を向上させることを目的とする。
また、本発明の他の目的は、従来の画像変形法よりも、計算量を削減することである。
【課題を解決するための手段】
【0006】
(1)本発明は、変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像変形方法であって、前記原画像中における複数のパーツを設定するパーツ設定ステップと、前記複数のパーツそれぞれについて、制御格子の格子間隔を設定する格子間隔設定ステップと、を含み、複数のパーツそれぞれの画像変形を、前記格子間隔設定ステップにて設定された格子間隔の制御格子を用いて行うことを特徴とする画像変形方法である。
【0007】
上記本発明によれば、パーツ毎に格子間隔が設定された制御格子を用いて画像変形を行うことができる。
【0008】
(2)前記格子間隔設定ステップでは、格子間隔の設定対象となっているパーツに含まれる基準点の間隔に応じて、格子間隔を決定するのが好ましい。
【0009】
(3)前記格子間隔設定ステップでは、前記パーツ内において隣り合う基準点の格子方向における最大間隔に応じて、当該格子方向における格子間隔を決定するのが好ましい。
【0010】
(4)前記格子間隔設定ステップでは、前記最大間隔にほぼ等しい値を、当該格子方向における格子間隔として決定するのが好ましい。
【0011】
(5)設定された格子間隔の制御格子を用いた前記画像変形によって移動した後の基準点の位置と前記目標点の位置との誤差が、所定の閾値よりも大きい箇所については、設定された前記格子間隔よりも小さい格子間隔の制御格子を用いて、再度の画像変形を行うことができる。
この場合、誤差が小さい箇所の計算を省略できるため、再度の画像変形を行っても処理時間の増大を抑えることができる。
【0012】
(6)他の観点からみた本発明は、変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像処理装置であって、前記原画像中における複数のパーツを設定するパーツ設定手段と、前記複数のパーツそれぞれについて、制御格子の格子間隔を設定する格子間隔設定手段と、を含み、複数のパーツそれぞれの画像変形が、前記格子間隔設定手段にて設定された格子間隔の制御格子を用いて行われるよう構成されていることを特徴とする画像処理装置である。
【0013】
(7)他の観点からみた本発明は、コンピュータを、上記画像処理装置として機能させるためのコンピュータプログラムである。
【発明の効果】
【0014】
本発明によれば、複数のパーツそれぞれの格子間隔を異ならせて、パーツごとに画像変形ができるため、変形精度を向上させることが可能である。
【図面の簡単な説明】
【0015】
【図1】制御格子を示す図である。
【図2】画像変形処理の概念図である。
【図3】従来のmulti−level B−spline変換に用いられる制御格子を示す図である。
【図4】画像処理装置の機能ブロック図である。
【図5】パーツを示す図である。
【図6】画像変形処理のフローチャートである。
【図7】制御格子の格子間隔決定方法を示す図である。
【図8】制御格子の格子間隔決定方法を示す図である。
【図9】基準点の移動と誤差の説明図である。
【図10】適応的格子法における格子分割の例を示す図である。
【図11】基準点の影響領域と実際の変形領域を示す図である。
【図12】形状の不自然率を示すチャートである。
【発明を実施するための形態】
【0016】
以下、本発明の好ましい実施形態について添付図面を参照しながら説明する。
以下では、まず、基本的なB−spline変換及び非特許文献1記載のmulti−level B−spline変換について説明し、その後、本実施形態に係る画像処理装置の構成とその処理方法について説明する。
【0017】
[1.基本的なB−spline変換]
原画像の形状変形を行うにあたり、変形元となる点p(x,y)から変形先となる点p’(x’,y’)へ一意に座標変換する必要がある。この座標変換はx,yの座標軸毎にx’=fx(x,y),y’=fy(x,y)という二つの変形関数で表すことが出来る。
B−spline変換ではこの変換関数にB−spline基底関数を用いて画像の変形を実現する。
【0018】
オーソドックスなB−spline変換では、図1の様な制御格子を用いて変形を行う。具体的には、格子中の各頂点(以下、「制御点」という)にそれぞれ移動量を付与し、これを用いて原画像全体において一意の形状変形を実現する。
図1では原画像をm×nに分割し、その周囲に擬似的に局所領域を一列配置している。原画像全体において、制御点の数は(m+3)×(n+3)個となる。
【0019】
画像変形は、図2(b)に示すように原画像上に設定された基準点が、目標点の位置に移動するように行われる。
また、制御格子における各制御点の移動量は、基準点及び目標点の位置に基づいて決定される。
【0020】
B−spline変換では、まず、ある1個の局所領域の近傍に存在する16個の制御点の移動量を用いて、その中央に存在する当該局所領域の変形を行う。図1に示す制御格子において、m=0〜1,n=0〜1の範囲にある局所領域Aの変形を行う場合、この局所領域Aの近傍領域(図1の斜線部分)に存在する16個の制御点の移動量を用いて、局所領域Aの変形処理を行う。
【0021】
そして、上記の変形処理を、原画像中のすべての局所領域に対して繰り返し行うことで原画像全体として一意の形状変形を実現する。
【0022】
Ω={(x,y)|−1≦x≦m+1,−1≦y≦n+1}をxy座標空間に配置した格子平面とする。そしてxyz三次元空間に散らばる点の集合P={(x,y,z)}を用いて変形を行う。ここで、{(x,y)}はΩ上の点、{z}はこの点における注目画素の移動量を表す。
画像中のすべての座標においてこの点群Pの補間を実現するためにΩ上に存在する制御点群Φにより定義されるB−spline変換を変形関数fとして用いる。
【0023】
ここで、φijを、Φ中のij番目の制御点の重みパラメータとする。変形関数fは、この制御点の重みパラメータを用いることで以下の様に表すことが出来る。
【数1】
【0024】
そしてBkとBlは、以下のようなB−spline基底関数を表すものである。
【数2】
【0025】
画像変形を行うにあたり、変形元の基準点群{(x1,y1),(x2,y2),・・・,(xn,yn)}と変形先の目標点群{(x1’,y1’),(x2’,y2’),・・・,(xn’,yn’)}の座標は、事前に取得しておく。
各制御点へパラメータとして付与するx,yの各座標軸方向の重みパラメータ(φxklとφykl)は以下に示すコスト関数を最小化することによって取得できる。
【数3】
【0026】
ここで、各基準点の移動により影響を受ける領域はその点の近傍の9個の局所領域である。もし複数の基準点から影響を受ける領域が重なり合ってしまった場合、その領域に存在する制御点は各基準点からの影響を重複して受けることとなり、この領域では自然な形状変化を行うことが出来なくなる。よって複数の基準点が近傍に存在する場合でも正確な形状変化を実現するため、この問題を解決する必要がある。
【0027】
φijをΦ上のij番目の制御点における求めるべき重みパラメータ(実際の変形に使用する重みパラメータ)、φcijをij番目の制御点において基準点cから個別に与えられる重みパラメータとする。この求めるべき重みパラメータφijは、以下のコスト関数を最小化することにより得られる。
【数4】
【0028】
以上の式により実現されるB−spline変換は、非常に滑らかで自然な変形を実現するが、その変形結果は多少の変形誤差を有する。
【0029】
[2.multi−level B−spline変換]
前述のB−spline変換は滑らかで自然な変形が可能であるが、その変形には多少の変形誤差(目標点に対する誤差)が含まれる。これはサイズの小さな格子を用いて変形を行うことにより低減することが可能であるが、その場合、局所的に急激な変形が発生してしまい、自然でスムーズな変形とは程遠いものとなる。従来のB−spline変換では変形の正確さと自然さ・スムーズさは両立しがたいものとなっている。
【0030】
前掲の非特許文献1では、変形の自然さ・スムーズさを保ちつつ、変形誤差を低減させる手法としてmulti−level B−spline変換という手法が提案されている。
【0031】
この手法は複数の制御格子Φ1,Φ2,・・・,Φhを用いて変形を行う。このうちΦ1は従来のB−spline変換で用いる制御格子であり、Φ2はΦ1よりも小さな格子間隔の制御格子である。この格子間隔の縮小率は任意に決めることが出来るが、ここででは後の計算を簡略化する為に1/2倍の格子を使用する。
ここで、Φkが(m+3)×(n+3)個の格子頂点(制御点)を持つ制御格子とする場合、Φk+1は(2m+3)×(2n+3)個の格子頂点を持つことになる。Φkにおけるij番目の制御点の配置は、Φk+1中の(2i,2j)目の制御点の配置と一致する。
【0032】
multi−level B−spline変換を行うには、はじめに図3(a)に示すように粗い制御格子Φ1を用いた通常のB−spline変換を行う。そしてここで発生した誤差を、図3(b)に示すようにΦ1よりも小さな格子間隔を持つ変形格子Φ2を用いて埋め合わせしてゆく。実際には粗い格子を用いた変形時の誤差を新たな移動量とし、一段階細かい格子を使用した変形を繰り返す。これにより変形を繰り返す度に誤差を低減することが可能となる。
【0033】
B−spline変換は移動量に引かれる様に滑らかに変形するので、変形を繰り返すことで前段階よりも誤差が増加することはない。ただし、変形回数に応じて計算時間は増加することになる。
multi−level B−spline変換は非常に有用な変形手法であるが、その反面多くの計算時間を必要とする。また、変形精度についても改善の余地がある。
【0034】
[3.画像処理装置の構成とその処理方法]
本実施形態に係る画像処理装置は、従来のmulti−level B−spline変換よりも変形精度をさらに向上し、変換の計算時間削減を達成したものである。
本実施形態に係る画像処理装置1は、以下に説明する画像変形処理を実行するコンピュータプログラムをコンピュータにインストールして構成されたものであり、画像処理装置1における各種の機能は、このコンピュータプログラムによって実現されている。
なお、前記コンピュータは、演算処理装置、記憶部、入出力デバイスなどを有している。
【0035】
図4は、画像処理装置1の機能ブロックを示している。この画像処理装置1は、基準点設定部11、目標点設定部12、パーツ設定部13、格子間隔設定部14、画像変形処理部15、誤差判定部16、及び格子間隔調整部17としての機能を有している。
【0036】
基準点設定部11は、変形の対象となる画像(原画像)上において変形の基準となる複数の基準点(図2(b)参照)を設定するためのものである。基準点設定部11は、ユーザから基準点の位置を示す情報を受け付けて当該基準点の位置を記憶部に記憶するものであってもよいし、他のソフトウェアから与えられた基準点情報を受け付けて記憶部に記憶するものであってもよい。
なお、基準点は、画像中の変形対象物(例えば、人の顔)の任意の位置に設定することができる。
【0037】
隣り合う基準点間の配置間隔は、一つのパーツ内において、ほぼ揃うように設定される。配置間隔は、完全に一致している必要はないが、ほぼ揃っていることで、当該パーツの適切な格子間隔を設定するのが容易となる。
【0038】
目標点設定部12は、設定された複数の基準点それぞれについて、当該基準点の移動先を示す目標点(図2(b)参照 )を設定するためのものである。目標点設定部12も、ユーザから目標点の位置を示す情報を受け付けて当該目標点の位置を記憶部に記憶するものであってもよいし、他のソフトウェアから与えられた目標点情報を受け付けて記憶部に記憶するものであってもよい。
【0039】
パーツ設定部13は、原画像において変形の対象となる領域を、複数のパーツ(領域)に分割して設定するためのものである。例えば、変形の対象となる領域が、人の顔である場合、複数のパーツとしては、例えば、図5中の各図において点線で囲まれた領域(目、眉毛、鼻、口、輪郭)を設定することができる。なお、一つのパーツが、互いに離れた複数の領域から構成されていてもよい。
パーツ設定部13は、パーツとなる領域をユーザからの入力によって設定するためのものであってもよいし、原画像に対する画像処理によって自動的にパーツを切り出すものであってもよい。
【0040】
格子間隔設定部14は、パーツ設定部13にて設定された各パーツの画像変形に用いられる制御格子の格子間隔を設定するためのものである。この格子間隔設定部14では、複数のパーツそれぞれについて適切な格子間隔を設定する。
【0041】
画像変形処理部15では、格子間隔設定部14で設定された格子間隔を有する制御格子を用いて原画像の画像変形処理を行うためのものである。この画像変形処理部15では、パーツ毎に異なる格子間隔の制御格子を用いて、B−spline変換により、パーツ毎の画像変形を行う。パーツ毎に異なる格子間隔の制御格子を用いるため、パーツ毎の適切な変形が実現できる。
【0042】
誤差判定部16は、パーツ毎に設定された制御格子を用いた画像変形によって移動した後の基準点の位置と前記目標点の位置との誤差を判定するためのものである。この誤差判定は、複数の基準点それぞれについて行われる。
【0043】
格子間隔調整部17は、誤差判定部16によって算出された誤差が、所定の閾値よりも大きい基準点が存在する箇所については、先の画像変形で用いられた制御格子の格子間隔よりも小さい格子間隔(例えば、先の格子間隔の1/2の格子間隔)にするためのものである。格子間隔調整部17によって、格子間隔が小さくなるように調整された箇所(基準点)については、画像変形処理部15が、新たに設定された格子間隔の制御格子を用いて、再度の画像変形を行う。
【0044】
図6は、画像処理装置1による画像変形処理を示している。まず、変形を行いたいパーツの設定処理が行われる(ステップS1)。パーツ設定処理では、パーツ設定部13が、パーツとなる領域を指定する入力をユーザから受け付ける処理等を行う。後述の画像変形(ステップS4)では、パーツ毎に独立した画像変形の処理が行われる。
【0045】
続いて、各パーツ内に、基準点及び基準点の移動先である目標点を設定する処理が行われる(ステップS2)。基準点及び目標点設定処理では、基準点設定部11及び目標点設定部12が、基準点及び目標点を指定する入力をユーザから受け付ける処理等を行う。なお、ステップS1,S2の実行順序は逆でもよい。
【0046】
続いて、設定されたパーツ毎に適用される制御格子の格子間隔を設定する処理が行われる(ステップS3)。格子間隔設定処理では、格子間隔設定部14が、各パーツに含まれる基準点の間隔に応じて、格子間隔を決定する。つまり、パーツ内の基準点の配置が密であれば、格子間隔を小さくし、パーツ内の基準点の配置が疎であれば、格子間隔を大きくする。
【0047】
本実施形態では、格子間隔設定部14は、パーツ内において隣り合う基準点の格子方向における最大間隔を利用して、格子間隔を決定する。
ここで、あるパーツP内の複数の基準点Cが、図7(a)に示すように配置されているものとする。また、図7(a)に示すX軸方向、Y軸方向は、制御格子のそれぞれの格子方向(2次元の場合、縦方向及び横方向)と一致しているものとする。
この場合、格子間隔設定部14は、これらの複数の基準点Cのうち、X軸方向において最も離れて隣り合っている2つの基準点CX1,CX2を決定する(図7(b)参照)。これらの基準点CX1,CX2間の間隔Xは、このパーツP内において、隣り合う基準点のX軸方向間隔としては最大である。
【0048】
また、格子間隔設定部14は、複数の基準点Cのうち、Y軸方向において最も離れて隣り合っている2つの基準点CY1,CY2を決定する(図7(b)参照)。これらの基準点CY1,CY2間の間隔Yは、このパーツP内において、隣り合う基準点のY軸方向間隔としては最大である。
【0049】
格子間隔設定部14は、X軸方向の最大間隔Xを、一方の格子方向(横方向)の格子間隔とし、Y軸方向の最大間隔Yを、他方の格子方向(縦方向)の格子間隔として設定する(図7(c)参照)。
以上のようにして、ある一つのパーツ用の制御格子の格子間隔が決定される。このようにして決定された格子間隔は、パーツ毎に適切なものとなっており、パーツ毎に適切な画像変形を行うのに好適である。
なお、上記のような格子間隔の決定の仕方が、好ましい理由については、後述する。
また、本実施形態では、最大間隔X,Yと格子間隔とを完全に一致させたが、多少は異なっていてもよい。
【0050】
以上のようなステップS3の格子間隔設定処理は、設定された複数のパーツそれぞれに対して行われる。したがって、パーツ毎に格子間隔が設定されることになる。
【0051】
また、図8(a)に示すように、あるパーツP1の変形を担う第1の基準点群と、他のパーツP2の変形を担う第2の基準点群とが、近接して存在している場合には、それぞれのパーツに異なる格子間隔を設定して変形を行うことが困難である。
そこで、基準点群が近接している複数のパーツP1,P2については、これら複数のパーツP1,P2に共通の格子間隔を設定する。
つまり、両パーツP1,P2における基準点群のうち、X軸方向の最大間隔が、一方の格子方向(横方向)の格子間隔となり、Y軸方向の最大間隔が、他方の格子方向(縦方向)の格子間隔となる。
【0052】
より具体的には、図8(b1)(b2)に示すように、まず、それぞれのパーツP1,P2について、図7に示した方法と同様の方法により、格子間隔を決定する。
その後、基準点群が近接しているパーツP1,P2については、図8(c)に示すように、それぞれの格子間隔を比較し、X軸方向及びY軸方向それぞれについて、より大きい格子間隔を、両パーツP1,P2共通の格子間隔として決定する(図8(d)参照)。
図8(d)の制御格子の場合、X軸方向の格子間隔は、パーツP2のX軸方向格子間隔が採用され、Y軸方向の格子間隔は、パーツP1のY軸方向格子間隔が採用されている。
【0053】
続いて、パーツ毎に設定された格子間隔の制御格子を用いて、各パーツ(目、眉毛、鼻、口、輪郭など)の画像変形が行われる(ステップS4)。本実施形態では、一つの画像であっても、パーツ毎の局所的な変形が独立して行われる(以下、パーツ毎に変形させる手法を、「部分変形法」という)。したがって、パーツ毎に異なる格子間隔の制御格子を用いることが可能である。なお、基準点群が近接するパーツについては、統合された共通の制御格子によって変形が一括して行われる。
【0054】
ステップS4の画像変形の後、画像変形に伴う各基準点の移動それぞれについて、誤差判定を行う(ステップS5)。誤差判定処理では、誤差判定部16が、図9に示すように、ある基準点が、制御格子を用いた画像変形によって移動した後の位置と、目標点と、の差分を求める。さらに、誤差判定部16は、その差分(誤差)を、所定の閾値と比較する。
【0055】
そして、誤差が、所定の閾値よりも大きい箇所(基準点)については、設定された前記格子間隔よりも小さい格子間隔の制御格子を用いて、再度の画像変形を行う(ステップS6)。
【0056】
ここで、従来のmulit−level B−spline変換では、まず、図3(a)に示すように粗い制御格子を使用して変形を行った後、画像全体に対して、図3(b)に示すように細かい格子間隔を持つ制御格子をして再度の画像変形を行う。
mulit−level B−spline変換では、より細かい格子間隔を持つ制御格子による画像変形を繰り返すため、変形の誤差は小さくできるが、画像全体の画像変形を繰り返すため計算量が増大する。
【0057】
したがって、パーツ毎に画像変形を行う部分変形法において、単純に、従来のmulit−level B−spline変換を適用すると、パーツ全体について再度の画像変形が行われ、計算量が増大するという上記問題が残ったままとなる。
【0058】
そこで、本実施形態では、変形誤差が、所定の閾値よりも大きい箇所(基準点)についてだけ、より細かい格子間隔を持つ制御格子による画像変形(以下、この画像変形の手法を、「適応的格子法」という)を行うことで、処理の高速化を図る(ステップS6)。
【0059】
適応的格子法では、変形誤差が少ない箇所では、比較的大きな格子間隔の制御格子による変換(低レベル変換)で済ませ、変形誤差が大きい箇所のみ、比較的小さな格子間隔の制御格子による変換(高レベル変換)を行う。これにより、再度の画像変形の際に、画像変形のための計算を行う領域を削減でき、不要な繰り返し計算を低減することができる。
【0060】
図10は、適応的格子法における格子間隔の縮小の仕方を示している。あるパーツに対して、図10(a)に示すサイズの制御格子を用いて第1段階の画像変形(ステップS4)が行われた後、変形誤差の大きい箇所については、格子間隔調整部17が、格子間隔を小さく(例えば、1/2縮小)する。図10(b)は、第2段階の画像変形のために、部分的に格子間隔が小さくなった制御格子を示している。
【0061】
そして、画像変形処理部15は、変形誤差の大きい箇所について、第1段階の画像変形(ステップS4)による移動後の基準点の位置を新たな基準点とし、当該新たな基準点を目標点まで移動させる画像変形を行う。
【0062】
このような再度の画像変形は、すべての基準点について、変形誤差が所定の閾値よりも小さくなるまで繰り返される。したがって、第2段階の画像変形で、変形誤差が残っている箇所については、図10(c)に示すように、さらに格子間隔の縮小化が行われる。適応的格子法では、制御格子の縮小化を繰り返しても、繰り返す度に、計算が必要な領域が小さくなるため、計算量の増大が抑えられる。
【0063】
適応的格子法では、誤差低減という観点では、mulit−level B−spline変換と同様の処理が行われているため、mulit−level B−spline変換と同様に良好な画像変形精度が得られる。
しかも、適応的格子法では、mulit−level B−spline変換のように画像全体にmulit−levelの処理を行うのではなく、変形誤差の大きい箇所だけmulit−levelの処理を行うため、計算量を削減できる。
【0064】
なお、本実施形態では、ユーザの見た目上、変形が発生しない箇所(算出された移動距離が1ピクセル未満の箇所等)については、ピクセル操作等の各ピクセルの移動量計算後の処理を省略する。
例えば、図11(a)のように、2つの基準点C,Cがあった場合、変形のための計算が行われる領域(基準点Cの影響領域)は、図11(a)における塗りつぶし範囲(基準点を含む周辺の領域)となる。
しかし、基準点C,Cから離れた位置においては、算出された移動量が1ピクセル未満となることがある。そのような範囲については、実際に画像の移動操作(画像変形処理)のための計算を行っても、結果として画像は変形しない。
【0065】
そこで、本実施形態では、各ピクセルについて、算出された移動量を、所定の閾値(例えば,0.5ピクセル)と比較し、移動量が閾値未満の場合には、見た目上変形が発生しない箇所であると判定し、そのピクセルの移動操作処理を省略する。
図11(b)の塗りつぶし範囲は、実際に移動操作処理が行われる範囲を示している。なお、ここでは、ピクセルの移動操作処理の際には、算出された移動距離を四捨五入するため、移動量が閾値(0.5)以上の場合には、1ピクセル分の移動が生じることになる。
【0066】
[4.基準点の配置間隔と格子間隔についての考察]
変形対象に基準点を配置する際、高精度の変形を実現しようとすると基準点の配置間隔は各パーツの形状の細かさに応じて変化してくる。細かさの異なる複数のパーツに対して同一サイズの制御格子を用いた変形を行った場合、その格子の格子間隔は必ずしも変形に最適なものではなく、変形精度を悪化させる要因となる。
【0067】
変形精度の悪化の原因としては、格子間隔が大きすぎる場合と、格子間隔が小さすぎる場合とに大別される。
格子間隔が大きすぎる場合、(i)意図しない領域における変形の発生、(ii)変形精度の悪化などの問題が生じる。
【0068】
変形に使用する制御格子の格子間隔を拡大すると、それに伴って各基準点の移動により影響を受ける範囲も拡大する。これが極端になると変形の局所性が失われ、本来の変形対象領域外でも大きな変形が発生してしまう様になる。
また、格子間隔の大きな制御格子を用いて変形を行う場合、前述のように各基準点から影響を受ける領域は大きくなり、近傍に存在する他の基準点の影響領域と重なりやすくなる。この際、式(1)によりその誤差を最小とする様配慮はしていても多数の影響領域が重なり合う場合にはこの誤差は大きくなり、ぼやけも発生しがちとなる。
【0069】
また、格子間隔が小さすぎる場合、(iii)形状変化の過度な局所化、(iv)形状変化の不成立などの問題が生じる。
【0070】
複数の基準点を用いて一つのパーツの変形を実現する場合、サイズの小さ過ぎる格子を使用して変形を行うと、各基準点による変形が必要以上に局所化してしまう。この結果、それぞれの変形がスムーズに繋がり合わず、自然な変形を行うことが出来なくなる。
また、B−spline変換では、基準点の周囲9つの領域においてのみ点の移動の影響を受ける.しかし、小さなサイズの格子を用いて変形を行った場合(もしくは基準点の移動量が格子サイズに対して著しく大きい場合)、基準点の移動先がこの領域内に収まらなくなり。正常な変形が実現されない。この不自然さは上記の(i)〜(iii)において発生する不自然さよりも顕著なものとなる。
【0071】
これらを考慮すると高精度のB−spline変換を行うには同一パーツの変形を担う隣り合った基準点の影響領域はある程度以上重なり合う必要がある。
一方、他パーツの変形を担う基準点の影響領域とは重なりが発生しないように調節する必要があることがわかる。
【0072】
また、同一パーツの変形を担う基準点同士でもすべての基準点において影響領域が重複する場合、基準点の数にもよるがぼやけや変形誤差が発生しがちとなる。
同一パーツの変形を担う隣り合った基準点においてのみ変形に不自然さが発生しない程度に影響領域を重複させ、それ以外の場合は極力影響領域が重なり合わない様に格子の間隔を調整するのが好ましい。
【0073】
また、上記の4つの問題点のうち、問題(iv)が発生した場合、変形の不自然さは最も大きなものとなる。そこで、問題(iv)が発生しないことを最重要と考え,その上で他の3つの問題が極力発生しない様に格子のサイズを規定するのが好ましい。
【0074】
ここで、B−spline変換による変形実行時の制御格子の分割数を検討するため、基準点間の距離(最大間隔)と制御格子の格子間隔とを関連付けてアンケート調査を行った。 アンケート調査には25名の男女の顔画像に対して格子間隔を変化させて変形を行った100枚の画像を使用し、32名の男女から回答を得た。この調査結果を下記の図12に示す。
【0075】
図12より格子間隔が基準点間の距離よりも大きな場合、8割以上の回答者が不自然さを感じないと回答していることがわかる。また、その後のヒアリングにより格子間隔と基準点間の距離が同程度の画像では上記の問題(iii)(iv)はほとんど認知されていないことがわかった。不自然さの理由としては変形させている顔の輪郭の形状に対するものがほとんどであるが、その周囲に配置されている頭髪の形状に不自然さを感じる回答者もいた。
【0076】
また、図12より問題(iii)(iv)が認識されなくなったあと、制御格子のサイズ(格子間隔)を大きくしても形状が不自然だとする回答数はあまり収束していないことがわかる。また、先に説明した様に格子のサイズを大きくしすぎると問題(i)、(ii)よる影響が大きく反映されてしまう。このことから前記部分変形法では同一パーツの変形を担う基準点群のうち、隣り合う基準点間の最大距離を制御格子の格子間隔として定義し、変形に使用した。これにより問題(iii)、(iv)をなるべく低減させ,問題(i)、(ii)による影響も抑えることが可能となる。
【0077】
[5.実験結果]
下記表1は、a)従来のmulti−level B−spline変換の計算時間、b)画像全体を適応的格子法だけで処理した場合の計算時間(部分変形法は不採用)、c)部分変形法と従来のmulti−level B−spline変換とを組み合わせた場合の計算時間、d)部分変形法と適応的格子法を組み合わせた場合(図6の場合)の計算時間、を示している。
【0078】
【表1】
【0079】
表1に示すようにb)適応的格子法では、a)従来のmulti−level B−spline変換の処理を削減できているため、処理が高速化していることがわかる。また、c)の部分変形法では、計算時間は、a)従来のmulti−level B−spline変換とほとんどかわらないが、誤差を小さくできた。
d)部分変形法と適応的格子法を組み合わせた場合は、誤差を小さくできるとともに、計算時間の削減も達成できている。
【0080】
[6.付記]
なお、上記において開示した事項は、例示であって、本発明を限定するものではなく、様々な変形が可能である。
また、本明細書には、特許請求の範囲に記載した発明以外の他の発明も開示されている。例えば、本明細書には、以下の発明が記載されている。
【0081】
変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像変形方法であって、原画像に含まれる基準点の間隔に応じて、前記制御格子の格子間隔を決定するステップを含むことを特徴とする画像変形方法。
【0082】
変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像変形方法であって、所定の格子間隔の制御格子を用いた前記画像変形によって移動した後の基準点の位置と前記目標点の位置との誤差が、所定の閾値よりも大きい箇所については、前記格子間隔よりも小さい格子間隔の制御格子を用いて、再度の画像変形を行うことを特徴とする画像変形方法。
【符号の説明】
【0083】
1 画像処理装置
11 基準点設定部
12 目標点設定部
13 パーツ設定部
14 格子間隔設定部
15 画像変形処理部
16 誤差判定部
17 格子間隔調整部
【技術分野】
【0001】
本発明は、画像変形法、画像処理装置、及びコンピュータプログラムに関するものである。
【背景技術】
【0002】
近年、多くの映像作品や幅広い研究分野において画像変形に対するニーズは増加傾向にあり、これに関してメッシュワープやフィールドモーフィング、放射基底関数やB−spline変換(free−form deformation法)等、多くの手法が提案されている。
【0003】
この中で、B−spline変換を基にしたfree−form deformation法は多少の変形誤差は発生するものの、自然で滑らかな変形を可能とする非常に有用な変形手法である。また、この変形誤差を低減させるための手法としてmulti−level B−spline変換という手法が提案されている(非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】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
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、従来の画像変形法よりも、変形精度を向上させることを目的とする。
また、本発明の他の目的は、従来の画像変形法よりも、計算量を削減することである。
【課題を解決するための手段】
【0006】
(1)本発明は、変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像変形方法であって、前記原画像中における複数のパーツを設定するパーツ設定ステップと、前記複数のパーツそれぞれについて、制御格子の格子間隔を設定する格子間隔設定ステップと、を含み、複数のパーツそれぞれの画像変形を、前記格子間隔設定ステップにて設定された格子間隔の制御格子を用いて行うことを特徴とする画像変形方法である。
【0007】
上記本発明によれば、パーツ毎に格子間隔が設定された制御格子を用いて画像変形を行うことができる。
【0008】
(2)前記格子間隔設定ステップでは、格子間隔の設定対象となっているパーツに含まれる基準点の間隔に応じて、格子間隔を決定するのが好ましい。
【0009】
(3)前記格子間隔設定ステップでは、前記パーツ内において隣り合う基準点の格子方向における最大間隔に応じて、当該格子方向における格子間隔を決定するのが好ましい。
【0010】
(4)前記格子間隔設定ステップでは、前記最大間隔にほぼ等しい値を、当該格子方向における格子間隔として決定するのが好ましい。
【0011】
(5)設定された格子間隔の制御格子を用いた前記画像変形によって移動した後の基準点の位置と前記目標点の位置との誤差が、所定の閾値よりも大きい箇所については、設定された前記格子間隔よりも小さい格子間隔の制御格子を用いて、再度の画像変形を行うことができる。
この場合、誤差が小さい箇所の計算を省略できるため、再度の画像変形を行っても処理時間の増大を抑えることができる。
【0012】
(6)他の観点からみた本発明は、変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像処理装置であって、前記原画像中における複数のパーツを設定するパーツ設定手段と、前記複数のパーツそれぞれについて、制御格子の格子間隔を設定する格子間隔設定手段と、を含み、複数のパーツそれぞれの画像変形が、前記格子間隔設定手段にて設定された格子間隔の制御格子を用いて行われるよう構成されていることを特徴とする画像処理装置である。
【0013】
(7)他の観点からみた本発明は、コンピュータを、上記画像処理装置として機能させるためのコンピュータプログラムである。
【発明の効果】
【0014】
本発明によれば、複数のパーツそれぞれの格子間隔を異ならせて、パーツごとに画像変形ができるため、変形精度を向上させることが可能である。
【図面の簡単な説明】
【0015】
【図1】制御格子を示す図である。
【図2】画像変形処理の概念図である。
【図3】従来のmulti−level B−spline変換に用いられる制御格子を示す図である。
【図4】画像処理装置の機能ブロック図である。
【図5】パーツを示す図である。
【図6】画像変形処理のフローチャートである。
【図7】制御格子の格子間隔決定方法を示す図である。
【図8】制御格子の格子間隔決定方法を示す図である。
【図9】基準点の移動と誤差の説明図である。
【図10】適応的格子法における格子分割の例を示す図である。
【図11】基準点の影響領域と実際の変形領域を示す図である。
【図12】形状の不自然率を示すチャートである。
【発明を実施するための形態】
【0016】
以下、本発明の好ましい実施形態について添付図面を参照しながら説明する。
以下では、まず、基本的なB−spline変換及び非特許文献1記載のmulti−level B−spline変換について説明し、その後、本実施形態に係る画像処理装置の構成とその処理方法について説明する。
【0017】
[1.基本的なB−spline変換]
原画像の形状変形を行うにあたり、変形元となる点p(x,y)から変形先となる点p’(x’,y’)へ一意に座標変換する必要がある。この座標変換はx,yの座標軸毎にx’=fx(x,y),y’=fy(x,y)という二つの変形関数で表すことが出来る。
B−spline変換ではこの変換関数にB−spline基底関数を用いて画像の変形を実現する。
【0018】
オーソドックスなB−spline変換では、図1の様な制御格子を用いて変形を行う。具体的には、格子中の各頂点(以下、「制御点」という)にそれぞれ移動量を付与し、これを用いて原画像全体において一意の形状変形を実現する。
図1では原画像をm×nに分割し、その周囲に擬似的に局所領域を一列配置している。原画像全体において、制御点の数は(m+3)×(n+3)個となる。
【0019】
画像変形は、図2(b)に示すように原画像上に設定された基準点が、目標点の位置に移動するように行われる。
また、制御格子における各制御点の移動量は、基準点及び目標点の位置に基づいて決定される。
【0020】
B−spline変換では、まず、ある1個の局所領域の近傍に存在する16個の制御点の移動量を用いて、その中央に存在する当該局所領域の変形を行う。図1に示す制御格子において、m=0〜1,n=0〜1の範囲にある局所領域Aの変形を行う場合、この局所領域Aの近傍領域(図1の斜線部分)に存在する16個の制御点の移動量を用いて、局所領域Aの変形処理を行う。
【0021】
そして、上記の変形処理を、原画像中のすべての局所領域に対して繰り返し行うことで原画像全体として一意の形状変形を実現する。
【0022】
Ω={(x,y)|−1≦x≦m+1,−1≦y≦n+1}をxy座標空間に配置した格子平面とする。そしてxyz三次元空間に散らばる点の集合P={(x,y,z)}を用いて変形を行う。ここで、{(x,y)}はΩ上の点、{z}はこの点における注目画素の移動量を表す。
画像中のすべての座標においてこの点群Pの補間を実現するためにΩ上に存在する制御点群Φにより定義されるB−spline変換を変形関数fとして用いる。
【0023】
ここで、φijを、Φ中のij番目の制御点の重みパラメータとする。変形関数fは、この制御点の重みパラメータを用いることで以下の様に表すことが出来る。
【数1】
【0024】
そしてBkとBlは、以下のようなB−spline基底関数を表すものである。
【数2】
【0025】
画像変形を行うにあたり、変形元の基準点群{(x1,y1),(x2,y2),・・・,(xn,yn)}と変形先の目標点群{(x1’,y1’),(x2’,y2’),・・・,(xn’,yn’)}の座標は、事前に取得しておく。
各制御点へパラメータとして付与するx,yの各座標軸方向の重みパラメータ(φxklとφykl)は以下に示すコスト関数を最小化することによって取得できる。
【数3】
【0026】
ここで、各基準点の移動により影響を受ける領域はその点の近傍の9個の局所領域である。もし複数の基準点から影響を受ける領域が重なり合ってしまった場合、その領域に存在する制御点は各基準点からの影響を重複して受けることとなり、この領域では自然な形状変化を行うことが出来なくなる。よって複数の基準点が近傍に存在する場合でも正確な形状変化を実現するため、この問題を解決する必要がある。
【0027】
φijをΦ上のij番目の制御点における求めるべき重みパラメータ(実際の変形に使用する重みパラメータ)、φcijをij番目の制御点において基準点cから個別に与えられる重みパラメータとする。この求めるべき重みパラメータφijは、以下のコスト関数を最小化することにより得られる。
【数4】
【0028】
以上の式により実現されるB−spline変換は、非常に滑らかで自然な変形を実現するが、その変形結果は多少の変形誤差を有する。
【0029】
[2.multi−level B−spline変換]
前述のB−spline変換は滑らかで自然な変形が可能であるが、その変形には多少の変形誤差(目標点に対する誤差)が含まれる。これはサイズの小さな格子を用いて変形を行うことにより低減することが可能であるが、その場合、局所的に急激な変形が発生してしまい、自然でスムーズな変形とは程遠いものとなる。従来のB−spline変換では変形の正確さと自然さ・スムーズさは両立しがたいものとなっている。
【0030】
前掲の非特許文献1では、変形の自然さ・スムーズさを保ちつつ、変形誤差を低減させる手法としてmulti−level B−spline変換という手法が提案されている。
【0031】
この手法は複数の制御格子Φ1,Φ2,・・・,Φhを用いて変形を行う。このうちΦ1は従来のB−spline変換で用いる制御格子であり、Φ2はΦ1よりも小さな格子間隔の制御格子である。この格子間隔の縮小率は任意に決めることが出来るが、ここででは後の計算を簡略化する為に1/2倍の格子を使用する。
ここで、Φkが(m+3)×(n+3)個の格子頂点(制御点)を持つ制御格子とする場合、Φk+1は(2m+3)×(2n+3)個の格子頂点を持つことになる。Φkにおけるij番目の制御点の配置は、Φk+1中の(2i,2j)目の制御点の配置と一致する。
【0032】
multi−level B−spline変換を行うには、はじめに図3(a)に示すように粗い制御格子Φ1を用いた通常のB−spline変換を行う。そしてここで発生した誤差を、図3(b)に示すようにΦ1よりも小さな格子間隔を持つ変形格子Φ2を用いて埋め合わせしてゆく。実際には粗い格子を用いた変形時の誤差を新たな移動量とし、一段階細かい格子を使用した変形を繰り返す。これにより変形を繰り返す度に誤差を低減することが可能となる。
【0033】
B−spline変換は移動量に引かれる様に滑らかに変形するので、変形を繰り返すことで前段階よりも誤差が増加することはない。ただし、変形回数に応じて計算時間は増加することになる。
multi−level B−spline変換は非常に有用な変形手法であるが、その反面多くの計算時間を必要とする。また、変形精度についても改善の余地がある。
【0034】
[3.画像処理装置の構成とその処理方法]
本実施形態に係る画像処理装置は、従来のmulti−level B−spline変換よりも変形精度をさらに向上し、変換の計算時間削減を達成したものである。
本実施形態に係る画像処理装置1は、以下に説明する画像変形処理を実行するコンピュータプログラムをコンピュータにインストールして構成されたものであり、画像処理装置1における各種の機能は、このコンピュータプログラムによって実現されている。
なお、前記コンピュータは、演算処理装置、記憶部、入出力デバイスなどを有している。
【0035】
図4は、画像処理装置1の機能ブロックを示している。この画像処理装置1は、基準点設定部11、目標点設定部12、パーツ設定部13、格子間隔設定部14、画像変形処理部15、誤差判定部16、及び格子間隔調整部17としての機能を有している。
【0036】
基準点設定部11は、変形の対象となる画像(原画像)上において変形の基準となる複数の基準点(図2(b)参照)を設定するためのものである。基準点設定部11は、ユーザから基準点の位置を示す情報を受け付けて当該基準点の位置を記憶部に記憶するものであってもよいし、他のソフトウェアから与えられた基準点情報を受け付けて記憶部に記憶するものであってもよい。
なお、基準点は、画像中の変形対象物(例えば、人の顔)の任意の位置に設定することができる。
【0037】
隣り合う基準点間の配置間隔は、一つのパーツ内において、ほぼ揃うように設定される。配置間隔は、完全に一致している必要はないが、ほぼ揃っていることで、当該パーツの適切な格子間隔を設定するのが容易となる。
【0038】
目標点設定部12は、設定された複数の基準点それぞれについて、当該基準点の移動先を示す目標点(図2(b)参照 )を設定するためのものである。目標点設定部12も、ユーザから目標点の位置を示す情報を受け付けて当該目標点の位置を記憶部に記憶するものであってもよいし、他のソフトウェアから与えられた目標点情報を受け付けて記憶部に記憶するものであってもよい。
【0039】
パーツ設定部13は、原画像において変形の対象となる領域を、複数のパーツ(領域)に分割して設定するためのものである。例えば、変形の対象となる領域が、人の顔である場合、複数のパーツとしては、例えば、図5中の各図において点線で囲まれた領域(目、眉毛、鼻、口、輪郭)を設定することができる。なお、一つのパーツが、互いに離れた複数の領域から構成されていてもよい。
パーツ設定部13は、パーツとなる領域をユーザからの入力によって設定するためのものであってもよいし、原画像に対する画像処理によって自動的にパーツを切り出すものであってもよい。
【0040】
格子間隔設定部14は、パーツ設定部13にて設定された各パーツの画像変形に用いられる制御格子の格子間隔を設定するためのものである。この格子間隔設定部14では、複数のパーツそれぞれについて適切な格子間隔を設定する。
【0041】
画像変形処理部15では、格子間隔設定部14で設定された格子間隔を有する制御格子を用いて原画像の画像変形処理を行うためのものである。この画像変形処理部15では、パーツ毎に異なる格子間隔の制御格子を用いて、B−spline変換により、パーツ毎の画像変形を行う。パーツ毎に異なる格子間隔の制御格子を用いるため、パーツ毎の適切な変形が実現できる。
【0042】
誤差判定部16は、パーツ毎に設定された制御格子を用いた画像変形によって移動した後の基準点の位置と前記目標点の位置との誤差を判定するためのものである。この誤差判定は、複数の基準点それぞれについて行われる。
【0043】
格子間隔調整部17は、誤差判定部16によって算出された誤差が、所定の閾値よりも大きい基準点が存在する箇所については、先の画像変形で用いられた制御格子の格子間隔よりも小さい格子間隔(例えば、先の格子間隔の1/2の格子間隔)にするためのものである。格子間隔調整部17によって、格子間隔が小さくなるように調整された箇所(基準点)については、画像変形処理部15が、新たに設定された格子間隔の制御格子を用いて、再度の画像変形を行う。
【0044】
図6は、画像処理装置1による画像変形処理を示している。まず、変形を行いたいパーツの設定処理が行われる(ステップS1)。パーツ設定処理では、パーツ設定部13が、パーツとなる領域を指定する入力をユーザから受け付ける処理等を行う。後述の画像変形(ステップS4)では、パーツ毎に独立した画像変形の処理が行われる。
【0045】
続いて、各パーツ内に、基準点及び基準点の移動先である目標点を設定する処理が行われる(ステップS2)。基準点及び目標点設定処理では、基準点設定部11及び目標点設定部12が、基準点及び目標点を指定する入力をユーザから受け付ける処理等を行う。なお、ステップS1,S2の実行順序は逆でもよい。
【0046】
続いて、設定されたパーツ毎に適用される制御格子の格子間隔を設定する処理が行われる(ステップS3)。格子間隔設定処理では、格子間隔設定部14が、各パーツに含まれる基準点の間隔に応じて、格子間隔を決定する。つまり、パーツ内の基準点の配置が密であれば、格子間隔を小さくし、パーツ内の基準点の配置が疎であれば、格子間隔を大きくする。
【0047】
本実施形態では、格子間隔設定部14は、パーツ内において隣り合う基準点の格子方向における最大間隔を利用して、格子間隔を決定する。
ここで、あるパーツP内の複数の基準点Cが、図7(a)に示すように配置されているものとする。また、図7(a)に示すX軸方向、Y軸方向は、制御格子のそれぞれの格子方向(2次元の場合、縦方向及び横方向)と一致しているものとする。
この場合、格子間隔設定部14は、これらの複数の基準点Cのうち、X軸方向において最も離れて隣り合っている2つの基準点CX1,CX2を決定する(図7(b)参照)。これらの基準点CX1,CX2間の間隔Xは、このパーツP内において、隣り合う基準点のX軸方向間隔としては最大である。
【0048】
また、格子間隔設定部14は、複数の基準点Cのうち、Y軸方向において最も離れて隣り合っている2つの基準点CY1,CY2を決定する(図7(b)参照)。これらの基準点CY1,CY2間の間隔Yは、このパーツP内において、隣り合う基準点のY軸方向間隔としては最大である。
【0049】
格子間隔設定部14は、X軸方向の最大間隔Xを、一方の格子方向(横方向)の格子間隔とし、Y軸方向の最大間隔Yを、他方の格子方向(縦方向)の格子間隔として設定する(図7(c)参照)。
以上のようにして、ある一つのパーツ用の制御格子の格子間隔が決定される。このようにして決定された格子間隔は、パーツ毎に適切なものとなっており、パーツ毎に適切な画像変形を行うのに好適である。
なお、上記のような格子間隔の決定の仕方が、好ましい理由については、後述する。
また、本実施形態では、最大間隔X,Yと格子間隔とを完全に一致させたが、多少は異なっていてもよい。
【0050】
以上のようなステップS3の格子間隔設定処理は、設定された複数のパーツそれぞれに対して行われる。したがって、パーツ毎に格子間隔が設定されることになる。
【0051】
また、図8(a)に示すように、あるパーツP1の変形を担う第1の基準点群と、他のパーツP2の変形を担う第2の基準点群とが、近接して存在している場合には、それぞれのパーツに異なる格子間隔を設定して変形を行うことが困難である。
そこで、基準点群が近接している複数のパーツP1,P2については、これら複数のパーツP1,P2に共通の格子間隔を設定する。
つまり、両パーツP1,P2における基準点群のうち、X軸方向の最大間隔が、一方の格子方向(横方向)の格子間隔となり、Y軸方向の最大間隔が、他方の格子方向(縦方向)の格子間隔となる。
【0052】
より具体的には、図8(b1)(b2)に示すように、まず、それぞれのパーツP1,P2について、図7に示した方法と同様の方法により、格子間隔を決定する。
その後、基準点群が近接しているパーツP1,P2については、図8(c)に示すように、それぞれの格子間隔を比較し、X軸方向及びY軸方向それぞれについて、より大きい格子間隔を、両パーツP1,P2共通の格子間隔として決定する(図8(d)参照)。
図8(d)の制御格子の場合、X軸方向の格子間隔は、パーツP2のX軸方向格子間隔が採用され、Y軸方向の格子間隔は、パーツP1のY軸方向格子間隔が採用されている。
【0053】
続いて、パーツ毎に設定された格子間隔の制御格子を用いて、各パーツ(目、眉毛、鼻、口、輪郭など)の画像変形が行われる(ステップS4)。本実施形態では、一つの画像であっても、パーツ毎の局所的な変形が独立して行われる(以下、パーツ毎に変形させる手法を、「部分変形法」という)。したがって、パーツ毎に異なる格子間隔の制御格子を用いることが可能である。なお、基準点群が近接するパーツについては、統合された共通の制御格子によって変形が一括して行われる。
【0054】
ステップS4の画像変形の後、画像変形に伴う各基準点の移動それぞれについて、誤差判定を行う(ステップS5)。誤差判定処理では、誤差判定部16が、図9に示すように、ある基準点が、制御格子を用いた画像変形によって移動した後の位置と、目標点と、の差分を求める。さらに、誤差判定部16は、その差分(誤差)を、所定の閾値と比較する。
【0055】
そして、誤差が、所定の閾値よりも大きい箇所(基準点)については、設定された前記格子間隔よりも小さい格子間隔の制御格子を用いて、再度の画像変形を行う(ステップS6)。
【0056】
ここで、従来のmulit−level B−spline変換では、まず、図3(a)に示すように粗い制御格子を使用して変形を行った後、画像全体に対して、図3(b)に示すように細かい格子間隔を持つ制御格子をして再度の画像変形を行う。
mulit−level B−spline変換では、より細かい格子間隔を持つ制御格子による画像変形を繰り返すため、変形の誤差は小さくできるが、画像全体の画像変形を繰り返すため計算量が増大する。
【0057】
したがって、パーツ毎に画像変形を行う部分変形法において、単純に、従来のmulit−level B−spline変換を適用すると、パーツ全体について再度の画像変形が行われ、計算量が増大するという上記問題が残ったままとなる。
【0058】
そこで、本実施形態では、変形誤差が、所定の閾値よりも大きい箇所(基準点)についてだけ、より細かい格子間隔を持つ制御格子による画像変形(以下、この画像変形の手法を、「適応的格子法」という)を行うことで、処理の高速化を図る(ステップS6)。
【0059】
適応的格子法では、変形誤差が少ない箇所では、比較的大きな格子間隔の制御格子による変換(低レベル変換)で済ませ、変形誤差が大きい箇所のみ、比較的小さな格子間隔の制御格子による変換(高レベル変換)を行う。これにより、再度の画像変形の際に、画像変形のための計算を行う領域を削減でき、不要な繰り返し計算を低減することができる。
【0060】
図10は、適応的格子法における格子間隔の縮小の仕方を示している。あるパーツに対して、図10(a)に示すサイズの制御格子を用いて第1段階の画像変形(ステップS4)が行われた後、変形誤差の大きい箇所については、格子間隔調整部17が、格子間隔を小さく(例えば、1/2縮小)する。図10(b)は、第2段階の画像変形のために、部分的に格子間隔が小さくなった制御格子を示している。
【0061】
そして、画像変形処理部15は、変形誤差の大きい箇所について、第1段階の画像変形(ステップS4)による移動後の基準点の位置を新たな基準点とし、当該新たな基準点を目標点まで移動させる画像変形を行う。
【0062】
このような再度の画像変形は、すべての基準点について、変形誤差が所定の閾値よりも小さくなるまで繰り返される。したがって、第2段階の画像変形で、変形誤差が残っている箇所については、図10(c)に示すように、さらに格子間隔の縮小化が行われる。適応的格子法では、制御格子の縮小化を繰り返しても、繰り返す度に、計算が必要な領域が小さくなるため、計算量の増大が抑えられる。
【0063】
適応的格子法では、誤差低減という観点では、mulit−level B−spline変換と同様の処理が行われているため、mulit−level B−spline変換と同様に良好な画像変形精度が得られる。
しかも、適応的格子法では、mulit−level B−spline変換のように画像全体にmulit−levelの処理を行うのではなく、変形誤差の大きい箇所だけmulit−levelの処理を行うため、計算量を削減できる。
【0064】
なお、本実施形態では、ユーザの見た目上、変形が発生しない箇所(算出された移動距離が1ピクセル未満の箇所等)については、ピクセル操作等の各ピクセルの移動量計算後の処理を省略する。
例えば、図11(a)のように、2つの基準点C,Cがあった場合、変形のための計算が行われる領域(基準点Cの影響領域)は、図11(a)における塗りつぶし範囲(基準点を含む周辺の領域)となる。
しかし、基準点C,Cから離れた位置においては、算出された移動量が1ピクセル未満となることがある。そのような範囲については、実際に画像の移動操作(画像変形処理)のための計算を行っても、結果として画像は変形しない。
【0065】
そこで、本実施形態では、各ピクセルについて、算出された移動量を、所定の閾値(例えば,0.5ピクセル)と比較し、移動量が閾値未満の場合には、見た目上変形が発生しない箇所であると判定し、そのピクセルの移動操作処理を省略する。
図11(b)の塗りつぶし範囲は、実際に移動操作処理が行われる範囲を示している。なお、ここでは、ピクセルの移動操作処理の際には、算出された移動距離を四捨五入するため、移動量が閾値(0.5)以上の場合には、1ピクセル分の移動が生じることになる。
【0066】
[4.基準点の配置間隔と格子間隔についての考察]
変形対象に基準点を配置する際、高精度の変形を実現しようとすると基準点の配置間隔は各パーツの形状の細かさに応じて変化してくる。細かさの異なる複数のパーツに対して同一サイズの制御格子を用いた変形を行った場合、その格子の格子間隔は必ずしも変形に最適なものではなく、変形精度を悪化させる要因となる。
【0067】
変形精度の悪化の原因としては、格子間隔が大きすぎる場合と、格子間隔が小さすぎる場合とに大別される。
格子間隔が大きすぎる場合、(i)意図しない領域における変形の発生、(ii)変形精度の悪化などの問題が生じる。
【0068】
変形に使用する制御格子の格子間隔を拡大すると、それに伴って各基準点の移動により影響を受ける範囲も拡大する。これが極端になると変形の局所性が失われ、本来の変形対象領域外でも大きな変形が発生してしまう様になる。
また、格子間隔の大きな制御格子を用いて変形を行う場合、前述のように各基準点から影響を受ける領域は大きくなり、近傍に存在する他の基準点の影響領域と重なりやすくなる。この際、式(1)によりその誤差を最小とする様配慮はしていても多数の影響領域が重なり合う場合にはこの誤差は大きくなり、ぼやけも発生しがちとなる。
【0069】
また、格子間隔が小さすぎる場合、(iii)形状変化の過度な局所化、(iv)形状変化の不成立などの問題が生じる。
【0070】
複数の基準点を用いて一つのパーツの変形を実現する場合、サイズの小さ過ぎる格子を使用して変形を行うと、各基準点による変形が必要以上に局所化してしまう。この結果、それぞれの変形がスムーズに繋がり合わず、自然な変形を行うことが出来なくなる。
また、B−spline変換では、基準点の周囲9つの領域においてのみ点の移動の影響を受ける.しかし、小さなサイズの格子を用いて変形を行った場合(もしくは基準点の移動量が格子サイズに対して著しく大きい場合)、基準点の移動先がこの領域内に収まらなくなり。正常な変形が実現されない。この不自然さは上記の(i)〜(iii)において発生する不自然さよりも顕著なものとなる。
【0071】
これらを考慮すると高精度のB−spline変換を行うには同一パーツの変形を担う隣り合った基準点の影響領域はある程度以上重なり合う必要がある。
一方、他パーツの変形を担う基準点の影響領域とは重なりが発生しないように調節する必要があることがわかる。
【0072】
また、同一パーツの変形を担う基準点同士でもすべての基準点において影響領域が重複する場合、基準点の数にもよるがぼやけや変形誤差が発生しがちとなる。
同一パーツの変形を担う隣り合った基準点においてのみ変形に不自然さが発生しない程度に影響領域を重複させ、それ以外の場合は極力影響領域が重なり合わない様に格子の間隔を調整するのが好ましい。
【0073】
また、上記の4つの問題点のうち、問題(iv)が発生した場合、変形の不自然さは最も大きなものとなる。そこで、問題(iv)が発生しないことを最重要と考え,その上で他の3つの問題が極力発生しない様に格子のサイズを規定するのが好ましい。
【0074】
ここで、B−spline変換による変形実行時の制御格子の分割数を検討するため、基準点間の距離(最大間隔)と制御格子の格子間隔とを関連付けてアンケート調査を行った。 アンケート調査には25名の男女の顔画像に対して格子間隔を変化させて変形を行った100枚の画像を使用し、32名の男女から回答を得た。この調査結果を下記の図12に示す。
【0075】
図12より格子間隔が基準点間の距離よりも大きな場合、8割以上の回答者が不自然さを感じないと回答していることがわかる。また、その後のヒアリングにより格子間隔と基準点間の距離が同程度の画像では上記の問題(iii)(iv)はほとんど認知されていないことがわかった。不自然さの理由としては変形させている顔の輪郭の形状に対するものがほとんどであるが、その周囲に配置されている頭髪の形状に不自然さを感じる回答者もいた。
【0076】
また、図12より問題(iii)(iv)が認識されなくなったあと、制御格子のサイズ(格子間隔)を大きくしても形状が不自然だとする回答数はあまり収束していないことがわかる。また、先に説明した様に格子のサイズを大きくしすぎると問題(i)、(ii)よる影響が大きく反映されてしまう。このことから前記部分変形法では同一パーツの変形を担う基準点群のうち、隣り合う基準点間の最大距離を制御格子の格子間隔として定義し、変形に使用した。これにより問題(iii)、(iv)をなるべく低減させ,問題(i)、(ii)による影響も抑えることが可能となる。
【0077】
[5.実験結果]
下記表1は、a)従来のmulti−level B−spline変換の計算時間、b)画像全体を適応的格子法だけで処理した場合の計算時間(部分変形法は不採用)、c)部分変形法と従来のmulti−level B−spline変換とを組み合わせた場合の計算時間、d)部分変形法と適応的格子法を組み合わせた場合(図6の場合)の計算時間、を示している。
【0078】
【表1】
【0079】
表1に示すようにb)適応的格子法では、a)従来のmulti−level B−spline変換の処理を削減できているため、処理が高速化していることがわかる。また、c)の部分変形法では、計算時間は、a)従来のmulti−level B−spline変換とほとんどかわらないが、誤差を小さくできた。
d)部分変形法と適応的格子法を組み合わせた場合は、誤差を小さくできるとともに、計算時間の削減も達成できている。
【0080】
[6.付記]
なお、上記において開示した事項は、例示であって、本発明を限定するものではなく、様々な変形が可能である。
また、本明細書には、特許請求の範囲に記載した発明以外の他の発明も開示されている。例えば、本明細書には、以下の発明が記載されている。
【0081】
変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像変形方法であって、原画像に含まれる基準点の間隔に応じて、前記制御格子の格子間隔を決定するステップを含むことを特徴とする画像変形方法。
【0082】
変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像変形方法であって、所定の格子間隔の制御格子を用いた前記画像変形によって移動した後の基準点の位置と前記目標点の位置との誤差が、所定の閾値よりも大きい箇所については、前記格子間隔よりも小さい格子間隔の制御格子を用いて、再度の画像変形を行うことを特徴とする画像変形方法。
【符号の説明】
【0083】
1 画像処理装置
11 基準点設定部
12 目標点設定部
13 パーツ設定部
14 格子間隔設定部
15 画像変形処理部
16 誤差判定部
17 格子間隔調整部
【特許請求の範囲】
【請求項1】
変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像変形方法であって、
前記原画像中における複数のパーツを設定するパーツ設定ステップと、
前記複数のパーツそれぞれについて、制御格子の格子間隔を設定する格子間隔設定ステップと、を含み、
複数のパーツそれぞれの画像変形を、前記格子間隔設定ステップにて設定された格子間隔の制御格子を用いて行う
ことを特徴とする画像変形方法。
【請求項2】
前記格子間隔設定ステップでは、格子間隔の設定対象となっているパーツに含まれる基準点の間隔に応じて、格子間隔を決定する
ことを特徴とする請求項1記載の画像変形方法。
【請求項3】
前記格子間隔設定ステップでは、前記パーツ内において隣り合う基準点の格子方向における最大間隔に応じて、当該格子方向における格子間隔を決定する
ことを特徴とする請求項2記載の画像変形方法。
【請求項4】
前記格子間隔設定ステップでは、前記最大間隔にほぼ等しい値を、当該格子方向における格子間隔として決定する
ことを特徴とする請求項3記載の画像変形方法。
【請求項5】
設定された格子間隔の制御格子を用いた前記画像変形によって移動した後の基準点の位置と前記目標点の位置との誤差が、所定の閾値よりも大きい箇所については、設定された前記格子間隔よりも小さい格子間隔の制御格子を用いて、再度の画像変形を行う
請求項1〜4のいずれか1項に記載の画像変形方法。
【請求項6】
変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像処理装置であって、
前記原画像中における複数のパーツを設定するパーツ設定手段と、
前記複数のパーツそれぞれについて、制御格子の格子間隔を設定する格子間隔設定手段と、を含み、
複数のパーツそれぞれの画像変形が、前記格子間隔設定手段にて設定された格子間隔の制御格子を用いて行われるよう構成されている
ことを特徴とする画像処理装置。
【請求項7】
コンピュータを、請求項6記載の画像処理装置として機能させるためのコンピュータプログラム。
【請求項1】
変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像変形方法であって、
前記原画像中における複数のパーツを設定するパーツ設定ステップと、
前記複数のパーツそれぞれについて、制御格子の格子間隔を設定する格子間隔設定ステップと、を含み、
複数のパーツそれぞれの画像変形を、前記格子間隔設定ステップにて設定された格子間隔の制御格子を用いて行う
ことを特徴とする画像変形方法。
【請求項2】
前記格子間隔設定ステップでは、格子間隔の設定対象となっているパーツに含まれる基準点の間隔に応じて、格子間隔を決定する
ことを特徴とする請求項1記載の画像変形方法。
【請求項3】
前記格子間隔設定ステップでは、前記パーツ内において隣り合う基準点の格子方向における最大間隔に応じて、当該格子方向における格子間隔を決定する
ことを特徴とする請求項2記載の画像変形方法。
【請求項4】
前記格子間隔設定ステップでは、前記最大間隔にほぼ等しい値を、当該格子方向における格子間隔として決定する
ことを特徴とする請求項3記載の画像変形方法。
【請求項5】
設定された格子間隔の制御格子を用いた前記画像変形によって移動した後の基準点の位置と前記目標点の位置との誤差が、所定の閾値よりも大きい箇所については、設定された前記格子間隔よりも小さい格子間隔の制御格子を用いて、再度の画像変形を行う
請求項1〜4のいずれか1項に記載の画像変形方法。
【請求項6】
変形前の原画像において設定された基準点及び当該基準点の移動先を示す目標点から、画像を変形させるための制御格子における各頂点の移動量を取得し、各頂点の移動量が取得された制御格子を用いて、前記原画像の変形を行う画像処理装置であって、
前記原画像中における複数のパーツを設定するパーツ設定手段と、
前記複数のパーツそれぞれについて、制御格子の格子間隔を設定する格子間隔設定手段と、を含み、
複数のパーツそれぞれの画像変形が、前記格子間隔設定手段にて設定された格子間隔の制御格子を用いて行われるよう構成されている
ことを特徴とする画像処理装置。
【請求項7】
コンピュータを、請求項6記載の画像処理装置として機能させるためのコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2011−170541(P2011−170541A)
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願番号】特願2010−32680(P2010−32680)
【出願日】平成22年2月17日(2010.2.17)
【出願人】(593006630)学校法人立命館 (359)
【Fターム(参考)】
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願日】平成22年2月17日(2010.2.17)
【出願人】(593006630)学校法人立命館 (359)
【Fターム(参考)】
[ Back to top ]