(58)【調査した分野】(Int.Cl.,DB名)
前記位相決定部が、前記数列内の隣接する2項間で当該数列の値の符号が変化した回数に基づいて、前記いずれかの点における前記1組の信号列の位相がもつπの整数倍の不定部分の値を決定する、請求項1に記載の信号処理装置。
前記第1の算出部が、前記1組の信号列のそれぞれについて、当該信号列の各標本点を通過し、かつ隣り合う区間の多項式同士が滑らかに連続する区分的多項式を算出する、請求項1または2に記載の信号処理装置。
前記第2の算出部が、前記複数の区間のそれぞれにおいて、前記第1の関数と前記第2の関数に関する終結式行列の小行列である複数の部分終結式行列の行列式に基づいて、前記多項式剰余列から得られる前記数列に代えて、当該数列の各項を正の定数倍した数列を算出する、請求項1から3のいずれか1項に記載の信号処理装置。
前記位相決定部が位相を決定した点の中に位相差がπより大きい隣接する2点が含まれる位相の信号列を、前記信号出力部が出力する、請求項1から4のいずれか1項に記載の信号処理装置。
【発明を実施するための形態】
【0013】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
本実施形態の信号処理装置は、取得した1組の信号列F,Gから位相Θ=tan
−1(G/F)を計算し、出力する。この位相Θはmπ(mは整数)の不定性があり一意に求まらないが、Θが連続になる適切な整数値mを定めることを「位相アンラップ」という。本実施形態の信号処理装置は、この位相アンラップを行う。
【0014】
まず、本実施形態の信号処理装置が適用されるシステムの例について説明する。
合成開口レーダ(Synthetic Aperture Radar:SAR)を用いて地表の情報を計測するシステムがある。SARは、飛行機や衛星に搭載されたレーダから地上に向けて電波を発射し、対象物から反射された電波を自身のアンテナで受信しており、アンテナ自身が飛行機や衛星によって移動することで仮想的に大きな開口面を実現したレーダである。合成開口レーダの1つである干渉合成開口レーダ(干渉SAR)は、同一地域について得られた2セットの複素画像を干渉させて生成される干渉縞から、地表高度や、地殻変動による地表高度の変化を計測する。
【0015】
その2セットの複素画像をそれぞれA
1=A
0exp(iφ
1),A
2=A
0exp(iφ
2)とすると、干渉縞はA
1A
2*=|A
0|
2exp(iΔφ)である。ここで、Δφ=φ
1−φ
2は位相差であり、次式で表される。realは実部、imagは虚部、*は複素共役を意味する。
【0017】
地表高度を求めるためにはΔφを求める必要があるが、正接関数tanには周期πの周期性があるため、Δφの値は一意に決まらない。そこで本実施形態の信号処理装置は、位相アンラップを行って、位相Δφが連続になる適切な整数値mを定める。
【0018】
位相アンラップにより連続な位相Δφが求まれば、地表高度は例えば以下のように求められる。
図1は、干渉SARにより地表高度を計測する方法の原理を説明するための図である。R
1,R
2はそれぞれの軌道1,2のレーダから地表の対象物までの距離、Bは軌道1,2のレーダ間の距離、Hはレーダの高度、hは測定対象の高度であり、
図1のように角θ,α,δθを定める。未知数はR
1,R
2,h,θである。すると、R
1はR
1=Bsin(θ−α)+R
2cosδθとなる。実際にはδθ≒0なので、cosδθ≒1であり、R
1=Bsin(θ−α)+R
2となる。すると、R
1とR
2の差ΔRは、ΔR=R
1−R
2=Bsin(θ−α)である。したがって、位相差Δφは次式で表される。
【0020】
ここで、λは電波の波長である。また、h=H−R
1cosθなので、Δφからθを求め、さらにhを求めることで、地表高度hが計測される。
【0021】
本実施形態の信号処理装置が適用されるシステムの別の例として、MRIを用いた核磁気共鳴画像システムがある。MRIは、体内のプロトン(水素原子の原子核(陽子))の密度と状態を画像化する技術である。人体は9割ほどが水と脂肪によって構成されており、それらはどちらも水素原子を多く含むため、プロトンの密度と状態からおおよその体の構造がわかる。MRIの撮像法の1つであるグラジエントフィールドエコー(gradient field echo:GRE)法では、水の信号と脂肪の信号が混合した状態から両者の成分を分離して撮像する、Dixon法という手法が用いられる。
【0022】
Dixon法では、水と脂肪の分子構造の違いから核磁気共鳴スペクトルにシフトが生じる(化学シフト現象)ことを利用する。外部から適切にパルスを加えると、次式のように、水と脂肪の信号が同位相になっている信号と、水と脂肪の信号が逆位相になっている信号が得られる。
同位相(in−phase) s
0=(W+F)exp(iθ
0)
逆位相(out−phase) s
1=(W−F)exp(i(θ
0+φ))
ここで、W,F,θ
0は定数である。すると、s
0*s
1/s
0s
1*=exp(i2φ)であるから、位相差φは以下のように求められる。
【0024】
本実施形態の信号処理装置は、ここで適切な整数値mを定めて連続な位相2φを求めるために用いられる。連続な位相2φが求まれば、次式により水画像と脂肪画像が得られる。
【0026】
このように、信号処理や画像処理では、2つの実数値連続関数の組f(x),g(x)が与えられ、tanΘ(x)=g(x)/f(x)を満足する連続関数Θ(x)を決定することが要請される。一般に独立変数は1つとは限らず、2変数の場合の応用が特に重要である。しかし、2変数の位相アンラップも、1変数の位相アンラップを各々の変数について計算することで実現できる。このため、本実施形態では簡単化のため1つの実数変数xの関数を考える。
【0027】
一般に、2つの実数の組(x,y)(ただしx≠0)が与えられるとき、tanθ=y/xを満たす実数θを(x,y)がなす位相という。しかし、上記の通り、正接関数tanは周期πの周期関数であるため、このθは一意に決まらない。すなわち、(x,y)がなす位相は、tanθ
0=y/xを満足する唯一のθ
0∈(−π/2,π/2)(主値という)を用いたθ=θ
0+mπ(mは任意の整数)のいずれでもよい。
【0028】
上記の連続関数Θ(x)を決定する位相アンラップ問題は、f(x)≠0となるxでは主値にπの適当な整数倍を加える補正を施し、かつf(x)=0となるxでは適当な実数値をΘ(x)に割り当てて連続関数Θを構成するという問題である。従来の位相アンラップの方法は試行錯誤的なものであり、系統的かつ安定な位相アンラップを実現する方法は未だ確立されていない。多くの最先端の計測システムの性能は位相アンラップの成否に大きく左右されるため、安定した位相アンラップを実現する技術が確立できれば大きな波及効果が期待される。
【0029】
図2は、位相アンラップを行う位相データの例を示した画像である。これらの画像は、法政大学情報科学部花泉弘研究室のWebページ[online][平成24年4月2日検索](URL:http://cis.k.hosei.ac.jp/research/laboratory/digital/hanaizumi/remote_sensing.html)から引用した。
【0030】
図2(a)は、位相アンラップを行う前の2次元の位相データの画像である。
図2の各画像では白黒の濃淡により位相の値の大小を示しており、
図2(a)では位相が−πからπの間に制限されている。このため、値が−πからπまたはπから−πに不連続に変わる点が存在することから、濃淡の変化が不連続な、白と黒にはっきり分かれた部分が見られる。このように、値(値域)が−πからπの間などに制限された位相のことを、以下では「ラップ位相(Wrapped Phase)」という。
【0031】
図2(b)は、
図2(a)の位相データに対して適切に位相アンラップを行って得られる画像である。
図2(b)の場合、位相の値は−πからπの間に制限されず、値が不連続に変わる点が存在しない。位相がすべての点で連続的に変化していることを反映して、濃淡が連続的に変化していることがわかる。このように、位相アンラップを行って値域の制限を取り除いた位相のことを、以下では「アンラップ位相(Unwrapped Phase)」という。
【0032】
一方、
図2(c)は、
図2(a)の位相データに対する位相アンラップに失敗した場合の画像である。すなわち、
図2(c)では、位相アンラップを行った後でも位相が2πだけ不連続に変わる点が存在するため、濃淡の変化が不連続な部分が見られる。従来の試行錯誤的な位相アンラップの方法では、隣接する標本点間のアンラップ位相の変動が±π以下であるという仮定に基づいているため、例えば位相が急激に変化する点がある場合、
図2(c)のように位相アンラップが失敗する。
【0033】
本実施形態の信号処理装置は、必ずしも実多項式関数で表されない1組の信号列について、連続なアンラップ位相を系統的な方法で求める。そのために、本実施形態の信号処理装置は、取得した1組の信号列をそれぞれスプライン関数で近似し、得られたスプライン関数の各区間の多項式を用いて位相アンラップを行う。位相アンラップは、スプライン関数の多項式にユークリッドの互除法を適用することにより多項式列を算出し、各区間の位相を求める点におけるその多項式列の値を並べた数列の符号の変化の回数を調べ、その変化の回数に基づいてπの整数倍の不定部分を決定するという手順で行う。
【0034】
なお、本実施形態において、「連続」という用語は、関数に対しては数学的な意味で用いるが、実際のシステムで扱われる離散的な信号の位相に対しては、
図2(a)や
図2(c)で見られるような値の変化の不自然な「飛び」がないという意味で用いる。
【0035】
<第1の実施形態>
図3は、本実施形態の信号処理装置10の機能構成例を示したブロック図である。図示するように、信号処理装置10は、信号取得部11と、区間決定部12と、スプライン算出部13と、関数格納部14と、多項式列算出部15と、数列生成部16と、符号カウント部17と、アンラップ処理部18と、信号出力部19とを備える。
【0036】
信号取得部11は、処理対象となる1組の信号列を取得する。例えば、上記の干渉SARの場合はA
1A
2*の実部と虚部を、MRIの場合はs
0*s
1/s
0s
1*の実部と虚部をそれぞれ1組の信号列として取得する。以下では、信号取得部11が取得する1組の信号列のそれぞれをF(x),G(x)と表す。例えばこれらの信号列が時系列信号である場合には、xは時刻を表す。
【0037】
区間決定部12は、信号取得部11が取得した信号列からスプライン算出部13がスプライン関数を求める際の区間を決定する。標本点x
0,x
1,…,x
Nでの信号F(x),G(x)を信号取得部11が取得したとすると、区間決定部12は、スプライン算出部13がスプライン関数を求める際の区間を例えば[x
0,x
1],…,[x
N−1,x
N]と定める。なお、区間[a,b]という表記は、端点aおよびbを含む区間を意味する。
【0038】
スプライン算出部13は、信号取得部11が取得した信号列F(x),G(x)をそれぞれ近似する区分的多項式の一例として、スプライン関数S
F(x),S
G(x)を算出する。スプライン算出部13がスプライン関数S
F(x),S
G(x)を求める処理の詳細については、
図5を用いて後述する。本実施形態では、第1の算出部の一例として、スプライン算出部13を設けている。
【0039】
関数格納部14は、スプライン算出部13が算出したスプライン関数S
F(x),S
G(x)や、多項式列算出部15が算出した多項式列を格納する。
【0040】
多項式列算出部15は、スプライン算出部13が算出したスプライン関数S
F(x),S
G(x)がそれぞれ多項式で表される各区間[x
0,x
1],…,[x
N−1,x
N]について、その区間でのS
F(x)とS
G(x)にユークリッドの互除法を適用して、多項式列を算出する。多項式列算出部15が多項式列を求める処理は、非特許文献3に示されている手順に従って行う。その詳細については、
図6を用いて後述する。
【0041】
数列生成部16は、多項式列算出部15が多項式列を算出した各区間内の点xにおけるその多項式列の値を並べた数列を生成する。例えば、区間[x
0,x
1]については、その区間内のx
0における各多項式の値(すなわち、x
0を代入したときの値)を計算し、その計算結果を順に並べて数列とする。本実施形態では、第2の算出部の一例として、多項式列算出部15と数列生成部16を設けている。
【0042】
符号カウント部17は、数列生成部16が生成した数列内の隣接する2項間でその数列の値の符号が変化した回数を数える。
【0043】
アンラップ処理部18は、数列生成部16が数列を生成した点x=tにおける信号列F(t),G(t)の位相がもつπの整数倍の不定部分の値を、符号カウント部17が得た符号変化の回数に基づき決定する。アンラップ処理部18がπの整数倍の値を決定する処理の詳細についても後述する。本実施形態では、位相決定部の一例として、符号カウント部17とアンラップ処理部18を設けている。
【0044】
信号出力部19は、アンラップ処理部18が各点で求めた位相の値を信号列として出力する。本実施形態のアンラップ処理部18が決定する位相は各点で連続的に変化するものであるため、信号出力部19が出力する位相の信号列も連続的なものになる。
【0045】
以下では、本実施形態の信号処理装置10の動作について説明する。
図4は、信号処理装置10の動作例の概略を示したフローチャートである。
【0046】
まず、標本点x
0,x
1,…,x
Nでの1組の信号列F(x),G(x)を信号取得部11が取得する(ステップ10)。そして、xの区間[x
0,x
1],…,[x
N−1,x
N]を区間決定部12が決定した上で、それぞれの信号列を近似するスプライン関数S
F(x),S
G(x)をスプライン算出部13が算出する(ステップ20)。算出されたスプライン関数S
F(x),S
G(x)は、関数格納部14が格納する。
【0047】
そして、xの最初の区間[x
0,x
1]について、関数格納部14に格納されているスプライン関数S
F(x),S
G(x)から、多項式列算出部15が多項式列を算出する(ステップ30)。区間[x
0,x
1]においてS
F(x),S
G(x)がそれぞれ多項式f
0(x),g
0(x)で表されるとすると、多項式列算出部15はこのf
0(x),g
0(x)にユークリッドの互除法を適用して、多項式列{ψ
0(x),…,ψ
q(x)}を算出する。ここで、qはψ
q(x)が0次(定数)となる番号である。例えばψ
0(x)とψ
1(x)を3次とすると、この多項式列は、例えばψ
2(x)が2次、ψ
3(x)が1次、ψ
4(x)が0次(定数)のように、次数が順に下がる有限個の列となる(この例ではq=4である)。本実施形態では、この多項式列のことを「多項式剰余列」とも呼ぶ。算出された多項式列{ψ
0(x),…,ψ
q(x)}は、関数格納部14が格納する。
【0048】
次に、区間[x
0,x
1]内の点x=tについて、数列生成部16が多項式列{ψ
0(x),…,ψ
q(x)}の値を計算し、それらの値を並べた数列{ψ
0(t),…,ψ
q(t)}を作る(ステップ40)。そして符号カウント部17が、その数列{ψ
0(t),…,ψ
q(t)}について、隣接する2項間で符号が変化する回数を数える(ステップ50)。この符号変化の回数をV{ψ(t)}と書く。
【0049】
符号変化の回数V{ψ(t)}の求め方について、具体的に説明する。例えば、数列の項数が6であり、各項の符号が{+,+,−,0,0,+}であったとする。第1項から第2項は符号が正のまま変わらないが、第2項から第3項にかけて正から負に変化するので、これを1回と数える。第4項と第5項は0であるが、このように0の項は飛ばして次に0でない第6項を見る。すると、第3項から第6項にかけて負から正に変化するので、これを1回と数える。よって、この数列についてはV{ψ(t)}=2である。
【0050】
非特許文献1〜3によると、x=tでの多項式f(x),g(x)のアンラップ位相θ(t)は、次式で与えられることが証明されている。
【0052】
ここで、t
0はアンラップ位相θ(t)を求めるための基準点である。右辺第2項と第3項は(−π/2,π/2)の範囲の値(主値)であり、V{ψ(t)}はステップ50で求めたx=tでの符号変化の回数である。また、V{ψ(t
0)}は、基準点x=t
0での多項式列{ψ
0(x),…,ψ
q(x)}の値を並べた数列の符号変化の回数である。すなわち、主値にπの何倍を加えればアンラップ位相が得られるのかということは、ステップ50で求めた符号変化の回数V{ψ(t)}から上式により厳密に求められる。
【0053】
スプライン関数S
F(x),S
G(x)は区間ごとに異なる多項式で表されることから、本実施形態では上記の基準点t
0も区間ごとに定める。例えば、「区間[x
0,x
1]ではx
0,…,区間[x
N−1,x
N]ではx
N−1」というように、区間の開始点(左端の点)を基準点t
0とすればよい。
【0054】
したがって、アンラップ処理部18は、区間[x
0,x
1]については基準点をt
0=x
0として、関数格納部14に格納されている区間[x
0,x
1]での多項式f
0(x),g
0(x)とステップ50で求めたV{ψ(t)}を用いて、数5を計算する。すなわち、アンラップ処理部18は、次式を計算することにより、区間[x
0,x
1]内のx=tでのアンラップ位相θ(t)を求める(ステップ60)。
【0056】
そして、区間[x
0,x
1]内の別の点についてもアンラップ位相を求める場合はステップ40に戻り、次の区間[x
1,x
2]の処理に移る場合はステップ80に進む(ステップ70)。なお、各区間内のどの点でアンラップ位相を計算してもよいが、本実施形態では、少なくとも各区間の端点x
0,x
1,…,x
Nでのアンラップ位相は計算しておく。
【0057】
次の区間がある場合、処理はステップ30に戻る(ステップ80でYes)。区間[x
1,x
2]でアンラップ位相を求めるときは、アンラップ処理部18は、基準点をt
0=x
1として、区間[x
1,x
2]での多項式f
1(x),g
1(x)とステップ50で求めたV{ψ(t)}を用いて、数6と同様の計算を行う。区間[x
2,x
3]以降についても同様である。
【0058】
一方、次の区間がない場合、すなわち、区間[x
N−1,x
N]までアンラップ位相を求めた場合、処理はステップ90に進む(ステップ80でNo)。そして最後に、今までに求めた各アンラップ位相の値を信号出力部19が信号列として出力する(ステップ90)。以上で信号処理装置10の動作は終了する。
【0059】
次に、
図4のステップ20でスプライン算出部13がスプライン関数S
F(x),S
G(x)を算出する処理について説明する。
本実施形態では、信号列F(x),G(x)の標本値を用いて、スプライン算出部13がF(x),G(x)のそれぞれをスプライン関数で近似することにより、各標本点を通る2つの区分的多項式を求める。n次のスプライン関数S(x)は、「各区間においてS(x)がn次以下の多項式であり、かつ定義域全体でS(x)とその(n−1)次以下の導関数が連続な関数」と定義される。すなわち、スプライン関数は、複数の多項式を互いに接続した区分的多項式であって、多項式同士のつなぎ目(節点という)も含めて数学的な意味で滑らかな関数である。
【0060】
一般に、関数f(x)の有限個の標本点(x
k,f(x
k))(k=1,2,3,…,p)が与えられたときに、これらの標本点を通過する何らかの関数h(x)を求めるには、h(x)を(p―1)次多項式として、その多項式の係数に関する連立方程式を解けばよい。しかし、標本点の個数pが大きくなると、多項式h(x)は標本点以外のxで大きく振動するため、1つの多項式で補間することは適切とはいえない。一方、スプライン関数を用いれば、1つの多項式で補間する場合より低次なものにすることができ、振動の小さな関数になる。そこで本実施形態では、信号列F(x),G(x)のそれぞれに対してスプライン関数の補間アルゴリズムを利用する。
【0061】
次に、標本点を3次のスプライン関数で補間する場合の計算方法について説明する。ここでは、標本点とスプライン関数の節点とを一致させる。つまり、標本(x
k,y
k)(k=0,1,…,Nかつx
0<x
1<…<x
N)が与えられたときに、区間[x
0,x
1]ではある3次関数、区間[x
1,x
2]では別のある3次関数というように、標本点間をそれぞれ別の3次関数でつなぐものとする。求めるスプライン関数をS(x)とすると、S(x)は、標本点(x
k,y
k)(k=0,1,…,N)をすべて通過し、かつ区間(x
0,x
N)上で2階微分までが連続になる。
【0062】
さて、標本点x
kでの2階微分の値をM
k(k=0,1,…,N)と書くと、区間[x
k−1,x
k](k=1,2,…,N)でのS(x)の2階微分S’’(x)は次式で表される。
【0064】
ただし、h
k=x
k−x
k−1である。これを2回積分し、S(x
k−1)=y
k−1,S(x
k)=y
kを用いると、区間[x
k−1,x
k]でS(x)は次式のように表される。
【0066】
よって、後はM
k(k=0,1,…,N)がわかればS(x)が求まる。このM
kを求めるために1階微分を考えると、上記の結果から、区間[x
k−1,x
k]でのS’(x)は次式で表される。
【0068】
よって、x
k(k=1,2,…,N−1)におけるS’(x)の左方微分係数と右方微分係数は、次式のように表される。
【0070】
1回微分の連続性からS’(x
k−)=S’(x
k+)なので、次式が導かれる。
【0072】
未知数がM
k(k=0,1,…,N)の(N+1)個であるのに対し、数11の方程式は(N−1)個しかないので、未知数を一意に決めるためにM
0=M
N=0とおく。すると、数11の方程式から未知数M
k(k=1,2,…,N−1)が求まるので、数8からS(x)が求まる。このようにして、信号列F(x),G(x)をそれぞれスプライン関数で補間する。
【0073】
なお、本実施形態では一例として3次のスプライン関数を用いるが、次数は何次であってもよい。ただし、S
F(x)とS
G(x)は同じ次数にするとよい。また、上記のように標本点とスプライン関数の節点を1対1に対応させる必要はなく、例えばx
0からx
3までの区間[x
0,x
3]を1つの3次関数で表してもよい。さらに、標本点以外の点を節点としてもよい。ただし、S
F(x)とS
G(x)の間では、節点の取り方を一致させるとよい。
【0074】
図5は、スプライン算出部13の動作例を示したフローチャートである。スプライン算出部13は、信号取得部11が取得した信号列F(x),G(x)のそれぞれについて、以下の手順でスプライン関数S
F(x),S
G(x)を算出する。
【0075】
まず、標本点x
0,x
1,…,x
Nをもとに、区間決定部12がスプライン関数の節点を定める(ステップ21)。上記の通り節点を標本点と同じにする必要はないが、ここでは簡単のため、それぞれの標本点を節点として、区間を[x
0,x
1],…,[x
N−1,x
N]と定める。この区間割りは、F(x)とG(x)の間で共通のものとする。
【0076】
次に、スプライン算出部13は、数11を解いてM
0,…,M
Nを求める(ステップ22)。その際、数11においてh
k=x
k−x
k−1とする。また、F(x)の場合はy
k=F(x
k)、G(x)の場合はy
k=G(x
k)とする。そして、スプライン算出部13は、1つの区間[x
k−1,x
k]について、数8により3次関数を求める(ステップ23)。次の区間がある場合はステップ23に戻り、すべての区間[x
0,x
1],…,[x
N−1,x
N]について3次関数を求め終わったらステップ25に進む(ステップ24)。ここまでで、S
F(x)は、「[x
0,x
1]において3次関数f
0,…,[x
N−1,x
N]において3次関数f
N−1」と表されている。S
G(x)も、「[x
0,x
1]において3次関数g
0,…,[x
N−1,x
N]において3次関数g
N−1」と表されている。そこで、スプライン算出部13は、このように区間と多項式を対応付けて、S
F(x)とS
G(x)をそれぞれ関数格納部14に格納する(ステップ25)。以上でスプライン算出部13の動作は終了する。
【0077】
なお、スプライン補間の計算方法も、これまでに様々なものが提案されている。スプライン算出部13は、
図5の方法に限らず、別の既存の計算方法を利用してもよい。
【0078】
次に、
図4のステップ30で多項式列算出部15が多項式列を算出する処理について説明する。
図6は、第1の実施形態の多項式列算出部15の動作例を示したフローチャートである。
【0079】
まず、現在の処理対象の区間[x
k−1,x
k]について、多項式列算出部15は関数格納部14からスプライン関数S
F,S
Gの3次関数f
k,g
kを取得し、それぞれをψ
0,ψ
1とする(ステップ31)。そして、変数jをj=1とする(ステップ32)。多項式列算出部15はψ
jの次数が0でないかどうかを判定し、次数が0でなければステップ34に進み、0であれば後述するステップ37に進む(ステップ33)。
【0080】
ψ
jの次数が0でない場合、多項式列算出部15は、ψ
j−1をψ
jで割り(ステップ34)、その余りを−ψ
j+1とする(ステップ35)。そしてjに1を加算し(ステップ36)、処理はステップ33に戻る。一方、ψ
jの次数が0である場合は、多項式列算出部15が多項式列{ψ
0,…,ψ
j}を関数格納部14に格納する(ステップ37)。以上で多項式列算出部15の動作は終了する。
【0081】
図6の処理は、ψ
0,ψ
1(すなわち、スプライン関数S
F,S
Gの3次関数f
k,g
k)にユークリッドの互除法を適用して多項式列{ψ
0,…,ψ
j}を求めるものである。ただし、上記では説明を省略しているが、多項式列{ψ
0,…,ψ
j}による数列の符号変化の回数からアンラップ位相を求めるためには、各多項式ψ
jがxのべき乗を因数にもつ(すなわち、0次の項が0になる)場合、そのべき乗を除いた部分をψ
jと定義し直して
図6の処理を行うとよい。本実施形態でいうユークリッドの互除法は、そのような変形例も含むものとする。
【0082】
一般に、実数値をとる多項式の組(f(x),g(x))が与えられたとき、それらにユークリッドの互除法を適用して得られる多項式剰余列は、スツルム列と呼ばれる条件を満たすことが知られている。(f(x),g(x))から連続なアンラップ位相を求めるには主値にπの適当な整数倍を補正項として加える必要がある。非特許文献1,2では、f(x)が0になるxの前後の(f(x),g(x))の符号(+,−)からこの補正項を決定できることが示されている。
図6の方法は、スツルム列の性質を利用することにより、f(x)が0になるxの位置の情報がなくても補正項を正しく求めることを可能にしている。
【0083】
このように、本実施形態の信号処理装置10は、多項式からアンラップ位相を決定する部分は数学的に厳密な方法を用いている。このため、入力信号列を区分的多項式で上手く近似できれば、精度よく位相アンラップを行うことが可能になる。そして、入力信号列をスプライン関数で近似することにより、標本点間を結ぶ多項式関数を精度よく求めることができ、位相アンラップの精度の向上につながる。
【0084】
<第2の実施形態>
第1の実施形態の信号処理装置10は、アンラップ位相を決定するための多項式列を算出する際に、
図6に示したユークリッドの互除法を実行している。しかし、この方法では、多項式の次数が高くなると数値的な不安定性が回避できなくなる。これは、
図6の処理に多項式の割り算をするステップ(ステップ34)があることに起因する(ψ
j+1(x)は、ψ
j−1(x)をψ
j(x)で割った余りを−1倍して求められる)。計算機で実際に
図6の処理を実行しようとすると、この多項式の割り算が正確に行えない場合がある。例えば、1割る1/3の答えは3余り0であるが、計算機では1/3を正確に表すことができないため、実際には余りが0にならない。また、係数を分母と分子に分けてそれぞれを整数として保存した場合でも、ユークリッドの互除法の途中で多項式の係数の桁が大きくなりすぎてしまい、正確に保存できなくなる。つまり、計算機でユークリッドの互除法を素直に実装しようとすると、ある多項式の係数の値が途中で正確でなくなり、その正確でない係数を用いて次の多項式を作るというステップを繰り返してしまうので、途中から多項式の係数が実際のものとずれてしまう。このような数値計算上の誤差が蓄積すると位相アンラップの計算結果に影響を与えるおそれがあるため、ユークリッドの互除法を直接実行せずに多項式列が生成されるようにすることが望ましい。
【0085】
そこで、第2の実施形態の信号処理装置10は、スプライン算出部13がスプライン関数を算出した後、
図6の処理により得られる多項式剰余列の正の定数倍である多項式列を、多項式列算出部15が算出する。その多項式列は、以下で説明する部分終結式を計算することにより得られる。ユークリッドの互除法を適用する多項式の組を(f(x),g(x))とすると、部分終結式を計算して得られる多項式の係数は、すべてf(x)とg(x)の係数の和と差と積を用いて計算される。よって、上記のように正確でない係数の多項式から次の多項式を作り出すという繰り返しは起こらない。第2の実施形態の多項式列算出部15は、
図6のユークリッドの互除法を直接実行しないので、上記のような数値計算上の不安定性が生じることがない。
【0086】
第2の実施形態の信号処理装置10は、多項式列算出部15が行う処理内容を除いて、第1の実施形態の信号処理装置10と同じである。このため、多項式列算出部15の処理内容以外の部分については説明を省略する。
【0087】
部分終結式の前に、まず終結式について説明する。終結式は、m次多項式f(x)=a
mx
m+a
m−1x
m−1+…a
0とn次多項式g(x)=b
nx
n+b
n−1x
n−1+…b
0が共通根をもつかどうかを判定するための行列の行列式であり、数12のような(m+n)次正方行列の行列式である。なお、行列の中で空欄になっている成分はすべて0である。本実施形態では、数12の行列を「終結式行列」と呼ぶ。
【0089】
そして、数12の終結式行列から、右側2j列と、係数a
0,…,a
mのついての下側j行と、係数b
0,…b
nのついての下側j行とを除いて、数13のような小行列M
j(f,g)を作る。ここで、p=min{m,n}として、j=0,1,…,p−1である。
【0091】
さらに、数13の行列M
j(f,g)について、右端の列の要素を、上から順にf(x)x
n−j−1,f(x)x
n−j−2,…,f(x),g(x)
m−j−1,g(x)x
m−j−2,…,g(x)で置き換えて、数14のような行列R
j(f,g)を作る。この行列の行列式が、f(x)とg(x)のj次の部分終結式である。R
j(f,g)は行列の要素に多項式を含むため、その行列式である部分終結式も多項式になる。本実施形態では、数14の行列を「部分終結式行列」と呼ぶ。
【0093】
さて、スプライン算出部13が算出したスプライン関数S
F(x),S
G(x)の、処理対象の区間における多項式f(x),g(x)が、ともにm次であるとする。この多項式f(x),g(x)について、Ψ
0(x)=f(x),Ψ
1(x)=g(x)とおく。そして、j=2,…,qについて数15により多項式列{Ψ
0(x),Ψ
1(x),…,Ψ
q(x)}を作る。ただし、qはΨ
qが0次(定数)となる番号である。
【0095】
ここで、b
mはg(x)のm次の項の係数である。例えばΨ
0(x)とΨ
1(x)を3次とすると、この多項式列は、例えばΨ
2(x)が2次、Ψ
3(x)が1次、Ψ
4(x)が0次(定数)のように、次数が順に下がる有限個の列となる(この例ではq=4であり、q=m+1の関係がある)。
【0096】
すると、こうして得られる多項式Ψ
0(x),Ψ
1(x),…,Ψ
q(x)は、
図6の処理により得られる対応する多項式ψ
0(x),…,ψ
q(x)の正の定数倍になる。すなわち、c
0,…,c
qを正の定数として、Ψ
0(x)=c
0ψ
0(x),…,Ψ
q(x)=c
qψ
q(x)の関係がある。さらに、この多項式列{Ψ
0(x),Ψ
1(x),…,Ψ
q(x)}を求めるときはユークリッドの互除法を直接実行しないので、数値計算上の不安定性が生じない。
【0097】
本実施形態の信号処理装置10は、多項式列から作られる数列の符号変化の回数に基づいてアンラップ位相を求めており、正の定数倍の違いはこの符号変化の回数を数える際に影響を与えない。したがって、第2の実施形態では、この多項式列{Ψ
0(x),Ψ
1(x),…,Ψ
q(x)}を算出することにより数値計算上の不安定性の問題を回避しつつ、連続的なアンラップ位相を決定する。
【0098】
さらに、第1の実施形態では多項式列を算出してから変数xに値を代入して数列を生成していたが、第2の実施形態では、部分終結式を計算する前に変数xに値を代入してしまえば、det(R
j(f,g))は数値の行列式になりその数列が直接求められる。数値の行列式は容易に計算することができるため、計算量の点でも、第2の実施形態の処理の方が第1の実施形態の処理より簡略化される。
【0099】
図4のステップ30で第2の実施形態の多項式列算出部15が多項式列を算出する処理についてまとめておく。
図7は、第2の実施形態の多項式列算出部15の動作例を示したフローチャートである。
【0100】
まず、現在の処理対象の区間[x
k−1,x
k]について、多項式列算出部15は関数格納部14からスプライン関数S
F,S
Gの3次関数f
k,g
kを取得し、それぞれをΨ
0,Ψ
1とする(ステップ41)。そして、変数jをj=1とする(ステップ42)。多項式列算出部15はΨ
jの次数が0でないかどうかを判定し、次数が0でなければステップ44に進み、0であれば後述するステップ47に進む(ステップ43)。
【0101】
Ψ
jの次数が0でない場合、多項式列算出部15は、数14により部分終結式行列R
j+1(Ψ
0,Ψ
1)を作成する(ステップ44)。そして、数15のΨ
j+1(x)にアンラップ位相を決定するx=tの値を代入した上で、数値の行列式Ψ
j+1(t)を計算する(ステップ45)。区間[x
k−1,x
k]内の別の点についてもアンラップ位相を求める場合は、ステップ45の行列式の計算を繰り返してもよい。その後jに1を加算し(ステップ46)、処理はステップ43に戻る。一方、Ψ
jの次数が0である場合は、多項式列算出部15が数列{Ψ
0(t),…,Ψ
j(t)}を出力し、符号カウント部17に渡す(ステップ47)。以上で多項式列算出部15の動作は終了する。
【0102】
なお、第1の実施形態と同様に、各多項式Ψ
j(x)がxのべき乗を因数にもつ(すなわち、0次の項が0になる)場合、多項式列算出部15は、そのべき乗を除いた部分をΨ
j(x)と定義し直して多項式列{Ψ
0(x),Ψ
1(x),…,Ψ
q(x)}を算出するとよい。
【0103】
このように、本実施形態の信号処理装置10は、アンラップ位相を決定するための多項式列を算出するときに、部分終結式の方法を用いる。この方法では、ユークリッドの互除法を直接実行しないため、多項式列が数値的に安定に算出される。また、本実施形態の方法は、浮動小数点演算であっても、多倍長整数演算であっても、安定に実現できる。
【0104】
<数値実験>
以下では、第1の実施形態の信号処理装置10を用いた位相アンラップの数値実験について説明する。この数値実験では、f(x)=cos(Θ(x)),g(x)=sin(Θ(x))でありΘ(x)が以下の数16で表される信号を一定の時間間隔にて観測し、観測した信号から元の信号f(x),g(x)の連続位相Θ(x)を推定する。この数値実験では、観測した信号から、信号処理装置10の位相アンラップ方法と別の位相アンラップ方法とにより、数16の位相を正しく求められるかどうかを調べる。
【0106】
その別の方法としては、隣接する標本点で生じるアンラップ位相の変動が±π以内に収まっていることを仮定し、この仮定に基づき、標本点のラップ位相を2πの整数倍ずつ変化させて1つ前の標本点におけるアンラップ位相の値から±π以上離れない値を求め、その値をその標本点のアンラップ位相とする方法を用いる。以下では、この方法のことを「比較法」と呼ぶことにする。
【0107】
図8は、位相アンラップの数値実験に用いた一方の入力信号f(x)のグラフであり、
図9は、その数値実験に用いた他方の入力信号g(x)のグラフである。
図8(a),
図8(b),
図8(c)は、それぞれ標本間隔を0.25,0.4,0.55として信号を観測した場合のグラフであり、これは
図9〜
図12でも共通である。それぞれのグラフの中に、標本点を○印で示している。また、それぞれのグラフにおいて、実線が真のf(x),g(x)である。鎖線は、各標本点での信号を信号列として信号取得部11が取得し、その信号列をもとにスプライン算出部13が算出したスプライン関数を示している。この数値実験では、隣接する標本点間をそれぞれ3次関数で近似している。標本間隔が0.25と小さい
図8(a)と
図9(a)では真のf(x),g(x)とスプライン関数との差はほとんどわからないが、標本間隔が0.55と大きくなる
図8(c)と
図9(c)では両者の差異がはっきり認められる。
【0108】
図10は、
図8および
図9の入力信号のラップ位相のグラフであり、
図11は、
図8および
図9の入力信号のアンラップ位相のグラフである。
図11のアンラップ位相は数16から得られる真のアンラップ位相であり、
図10のラップ位相はその値域を(−π,π]に制限して得られるラップ位相である。
図10のラップ位相は値が−πからπまたはπから−πに変化するところで不連続になっているが、
図11のアンラップ位相は連続関数である。なお、
図10(a)から
図10(c)のグラフと
図11(a)から
図11(c)のグラフは、数16をプロットしたものであるため、標本間隔の大きさにかかわらずすべて同じである。
【0109】
図12は、
図8および
図9の入力信号について位相アンラップを行った数値実験の結果を示したグラフである。実線は比較法により得られたΘ(x)の推定値を表し、鎖線は信号処理装置10により得られたΘ(x)の推定値を表す。標本間隔が比較的小さい
図12(a)と
図12(b)の場合には、信号処理装置10の方法と比較法のどちらでも、グラフは
図11(a)および
図11(b)のものとほとんど同じである。しかし、標本間隔が大きい
図12(c)の場合には、
図11(c)のグラフとの間に差異が見られる。
【0110】
比較法では、隣接する標本点で生じるアンラップ位相の変動が±π以内に収まっていることを仮定しているため、隣接標本点間の真のアンラップ位相が±π以上離れる場合には、正確に位相アンラップを行うことができない。このことは、
図12(c)で実際に確かめられる。
図11(c)を見ると、標本間隔が0.55の場合は、隣接する2つの標本点であるx=7.7とx=8.25におけるアンラップ位相Θ(x)の差がπより大きいことがわかる(差は約1.04πである)。そして、比較法によるアンラップ位相を表した
図12(c)の実線は、その標本点間で
図11(c)の曲線からずれている。このことから、比較法ではx=8.25における位相アンラップに失敗していることが確かめられる。
【0111】
一方、本実施形態の信号処理装置10では、
図12(c)の場合であっても、各標本点におけるアンラップ位相の推定値は
図11(c)の真のアンラップ位相に完全に一致しており、全体的に正しく位相アンラップを実行できていることが確かめられる。すなわち、隣接標本点間における真のアンラップ位相の差がπより大きい場合であっても、正しく位相アンラップを行うことができる。このため、信号処理装置10により出力される位相信号は、比較法による出力結果と異なり、隣接標本点間の位相差がπより大きいような標本点も含まれることがある。
【0112】
以上の数値実験の結果から、本実施形態の信号処理装置10では、入力信号列の標本間隔を十分小さくとっておけば、入力信号列がスプライン関数によって十分な精度で近似され、位相アンラップが成功することがわかる。
【0113】
ところで、本実施形態の信号処理装置10は、PC(Personal Computer)等の汎用のコンピュータ内で実現するとよい。最後に、このような汎用のコンピュータのハードウェア構成について説明する。
【0114】
図13は、コンピュータ90のハードウェア構成を示した図である。図示するように、コンピュータ90は、プロセッサ91と、メインメモリ92と、記憶装置93と、通信インタフェース94と、表示機構95と、入力インタフェース96とを備える。プロセッサ91は、記憶装置93に記憶されるプログラムを実行することにより、上述した各機能を実現する。メインメモリ92は、プロセッサ91が実行中のプログラムや、そのプログラムにより一時的に使用されるデータ等を記憶する。記憶装置93は、プロセッサ91が実行するプログラムやそのプログラムに関する入出力データ等を記憶する。通信インタフェース94は、外部装置との間でデータの送受信を行う。表示機構95は、ビデオメモリやディスプレイ等を含み、ユーザにデータ等を表示する。入力インタフェース96は、キーボードやマウス等を含み、ユーザからの入力操作を受け付ける。
【0115】
なお、
図3を用いて説明した信号処理装置10の各機能部は、
図13に示すプロセッサ91がプログラムを記憶装置93からメインメモリ92に読み込んで実行することにより実現される。また、関数格納部14は、例えば
図13に示すメインメモリ92により実現される。
【0116】
なお、本実施形態を実現するプログラムは、通信手段により提供してもよいし、CD−ROM等の記録媒体に格納して提供してもよい。