デジタルビデオカメラなどによる撮像(撮影)では、撮像中のデジタルビデオカメラの支持が不安定な場合に、動画像中の各画像間で微妙なブレ(ゆれ)が生じる、いわゆる、手ブレ現象が発生することがある。手ブレが発生している画像を再生して視聴すると、ユーザは、画像がぶれて(ゆれて)いるので、見にくさを感じることがある。
この画像のブレをなくす方法としては、例えば、撮像された複数枚の画像のうちの、1枚目の撮像画像を基準画像とするとともに、2枚目以降の撮像画像それぞれをターゲット画像として、基準画像に対して、ターゲット画像が、どのようなブレの方向(位置関係)にあるかを検出し、そのブレの方向と反対の方向にターゲット画像を補正することにより、基準画像との画像のブレをなくす、いわゆる手ブレ補正がある。この手ブレ補正のパラメータとしては、例えば、「回転、平行移動、拡大縮小」の(を表す)パラメータなどが使用される。
ここで、基準画像に対する、ターゲット画像の「回転、平行移動、拡大縮小」は、ターゲット画像の一部分だけではなく、ターゲット画像全体に生じるので、以下では、ターゲット画像の「回転、平行移動、拡大縮小」を、グローバルモーション(画像全体の動き)とも呼ぶことにする。
さて、従来から行われているグローバルモーションの値、即ち、「回転、平行移動、拡大縮小」の量を求める方法(以下、単に従来の方法という)としては、以下に示すような様々な方法がある。
即ち、従来の方法としては、例えば、非特許文献1や2などに開示されている、Phase Correlation、あるいは、Mellin Transformによる方法がある。これらの方法では、基準画像とターゲット画像に対して、それぞれフーリエ変換を行い、周波数空間上での位相情報より、基準画像とターゲット画像の2つの画像の位置関係、即ち、「回転、平行移動、拡大縮小」のパラメータ(グローバルモーションの値)が求められる。
しかしながら、これらの方法は、フーリエ変換を行うために計算量が膨大となり、実際の製品に適用するのは、現実的ではない。
そこで、図1は、その他の従来の方法によりグローバルモーションの値を求める処理を行う画像処理装置の機能的な構成例を示すブロック図である。
図1の画像処理装置は、グローバルモーション計算処理部11で構成されており、グローバルモーション計算処理部11は、動きベクトル検出部21とグローバルモーション計算部22とで構成されている。
動きベクトル検出部21には、例えば、時系列に撮像された複数の撮像画像のうちの、ブレを補正するときの基準の画像となる基準画像と、基準画像に合わせてブレが補正される画像となるターゲット画像とが入力される。動きベクトル検出部21は、ターゲット画像を複数のブロック(領域)に分割する。そして、動きベクトル検出部21は、ターゲット画像の各ブロックに対して、基準画像内で一番類似している領域を求め、さらに、各ブロックの中心から、基準画像内の最も類似している領域の中心までの、方向と距離(長さ)を表す動きベクトル(Mx(h,k),My(h,k))を求めて、グローバルモーション計算部22に出力する。
ここで、動きベクトル(Mx(h,k),My(h,k))は、ターゲット画像中を複数のブロックに分割したときの、X方向(左から)にh+1番目で、Y方向に(上から)k+1番目のブロック(h,k)についての動きベクトル(Mx(h,k),My(h,k))を表している。なお、Mx(h,k)とMy(h,k)は、それぞれ、動きベクトルのX方向とY方向の成分である。
グローバルモーション計算部22は、動きベクトル検出部21から供給される、各ブロックの動きベクトル(Mx(h,k),My(h,k))から、グローバルモーションの値(P,Q,T,U)を求めて出力する。このグローバルモーションの値(P,Q,T,U)は、図2で後述するように、上述の「回転、平行移動、拡大縮小」のパラメータに置き換え可能な、基準画像とターゲット画像との画像間の位置関係を表す。
図2を参照して、図1のグローバルモーション計算部22の処理について説明する。
図2では、ターゲット画像FTが示されている。
ここで、ターゲット画像FTについては、ターゲット画像FTの左上を原点として、右方向をX方向とするとともに、下方向をY方向とするXY座標系を、ターゲット画像FTの座標系と定義する。基準画像についても、同様に、基準画像のXY座標系を定義する。
また、図2に示すように、ターゲット画像FTを複数のブロックに分割した場合の、ターゲット画像FTのX方向に左からh+1番目で、Y方向に上からk+1番目のブロックを、ブロックblk(h,k)と表し、さらに、ブロックblk(h,k)の中心位置(座標)を、(Cx(h,k),Cy(h,k))と表す。
ブロックblk(h,k)について、動きベクトル(Mx(h,k),My(h,k))が検出された場合、そのブロックblk(h,k)の中心位置(Cx(h,k),Cy(h,k))は、基準画像(のXY座標系上)位置(Cx(h,k)+Mx(h,k),Cy(h,k)+My(h,k))に対応することになる。即ち、ブレによって生じたターゲット画像FTと基準画像との位置関係は、動きベクトル(Mx(h,k),My(h,k))で表される。
また、このようなターゲット画像FTと基準画像との位置関係は、ターゲット画像FTのグローバルモーションによって生じているため、ターゲット画像FTのブロックblk(h,k)の中心位置(Cx(h,k),Cy(h,k))に対応する基準画像の位置(Cx(h,k)+Mx(h,k),Cy(h,k)+My(h,k))は、グローバルモーションの値(P,Q,T,U)を用いて、式(1)で表すことができる。
ここで、式(1)の左辺は、点(位置)(Cx(h,k),Cy(h,k))に対して、角度θの回転、(T,U)の平行移動、S倍の拡大縮小を施すアフィン変換を表している。但し、式(1)において、P=S×cosθ,Q=S×sinθである。
ターゲット画像FT上のすべてのブロックblkには、基準画像に対して、同一のブレが生じるので、ターゲット画像FTのすべてのブロックblk(h,k)に対して、式(1)が成り立つはずである。
但し、動きベクトル(Mx(h,k),My(h,k))の検出の誤差等のために、すべてのブロックblk(h,k)について、式(1)を満たすパラメータ(P,Q,T,U)を求めることは困難である。そこで、例えば、最小自乗法により、式(1)から得られる次式(2)を最小とするパラメータ(P,Q,T,U)が、基準画像に対するターゲット画像FTの位置関係を表すグローバルモーションの値(P,Q,T,U)として求められる。
ここで、式(2)のΣは、ターゲット画像FTの(h,k)のすべての組にわたる総和を表す。
図1のグローバルモーション計算部22は、以上のようにして、ターゲット画像FTの各ブロックblk(h,k)の動きベクトル(Mx(h,k),My(h,k))から、グローバルモーションの値(P,Q,T,U)を求める。
しかしながら、図2での動きベクトル(Mx(h,k),My(h,k))は、ブロックblk(h,k)内の各点が動いた方向と距離の平均的な値となっている。つまり、動きベクトル(Mx(h,k),My(h,k))は、ブロックblk(h,k)全体が移動した方向と距離を示すものであり、ブロックblk(h,k)の中心位置(Cx(h,k),Cy(h,k))が動いた方向と距離そのものを正確に表しているとは限らない。従って、厳密にいうと、ブロックblk(h,k)の中心位置(Cx(h,k),Cy(h,k))が動いた方向と距離を、動きベクトル(Mx(h,k),My(h,k))で、いわば近似して、最小自乗法により図2で説明したようにして求められるグローバルモーションの値(P,Q,T,U)は、正確な値ではない。
そこで、図3は、図1および図2で説明した方法に改良を加えた従来の方法によりグローバルモーションの値を求める画像処理装置の機能的な構成例を示すブロック図である。
図3の画像処理装置では、図1のグローバルモーション計算処理部11の後段に、グローバルモーション高精度計算処理部31が設けられている。
グローバルモーション計算処理部11は、図1と同様に、グローバルモーションの値(P,Q,T,U)を求める。そして、グローバルモーション計算処理部11が求めたグローバルモーションの値(P,Q,T,U)が、初期値(P0,Q0,T0,U0)として、グローバルモーション高精度計算処理部31に供給される。
即ち、グローバルモーション計算処理部11で求められるグローバルモーションの値(P,Q,T,U)は、グローバルモーションを正確に表していなくても、その概略を表している。つまり、グローバルモーション計算処理部11で求められるグローバルモーションの値(P,Q,T,U)は、厳密には正確ではないが、まったく見当違いなわけではなく、大まかな値としては正確である。そこで、グローバルモーション高精度計算処理部31は、グローバルモーション計算処理部11から供給されたグローバルモーションの値(P0,Q0,T0,U0)を初期値として用いて、基準画像およびターゲット画像とから、正確なグローバルモーションの値(P1,Q1,T1,U1)を求めて出力する。
具体的には、グローバルモーション高精度計算処理部31は、グローバルモーションの初期値(P0,Q0,T0,U0)の近辺(P0+dP,Q0+dQ,T0+dT,U0+dU)をすべて探索し、(dP,dQ,dT,dU)の中から、最適な(後述する差分自乗誤差が最小となる)値(dP1,dQ1,dT1,dU1)を求めることにより、正確なグローバルモーションの値(P0+dP1,Q0+dQ1,T0+dT1,U0+dU1)=(P1,Q1,T1,U1)を求める。ここで、値(dP,dQ,dT,dU)それぞれは、任意の微小値で、(P0,Q0,T0,U0)からの変化量を表すので、以下では、値(dP,dQ,dT,dU)を、グローバルモーションの変化量という。
図4を参照して、図3のグローバルモーション高精度計算処理部31の処理について説明する。
図4では、上側に基準画像FBが、下側にターゲット画像FTが、それぞれ示されている。
基準画像FBおよびターゲット画像FTは、ともに、X方向にW画素、Y方向にH画素のW×H画素で構成されている。ここで、基準画像FBとターゲット画像FTそれぞれのXY座標系の原点に一番近い左上の画素を(0,0)画素として、左からi+1番目で、上からj+1番目の画素を、(i,j)画素と表す。また、ターゲット画像FTの(i,j)画素の画素値をGi,jとする。
ターゲット画像FTの(i,j)画素を(の位置)、グローバルモーション計算処理部11から供給されたグローバルモーションの初期値(P0,Q0,T0,U0)によって基準画像FB上の位置に位置変換(アフィン変換)したときの、その基準画像FB上の位置を、図4に示すように、(X0ij,Y0ij)で表す。
この場合、基準画像FB上の位置(X0ij,Y0ij)は、式(3)で表すことができる。
また、ターゲット画像FT上の(i,j)画素を、グローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)によってアフィン変換することにより得られる基準画像FB上の位置を、(Xij,Yij)と表すと、位置(Xij,Yij)は、式(4)で求めることができる。
いま、基準画像FB上の位置(Xij,Yij)における画像データ(画素値)を、GXij,Yijと表すこととすると、ターゲット画像FT上の(i,j)画素を、その(i,j)画素に真に対応する基準画像FB上の位置にアフィン変換する、正確なグローバルモーションの値(P1,Q1,T1,U1)は、例えば、式(5)に示すように、ターゲット画像FTの(i,j)画素の画素値Gi,jと、その(i,j)画素(の位置)をアフィン変換して得られる基準画像FB上の位置(Xij,Yij)における画像データGXij,Yijとの差分自乗誤差(Gi,j−GXij,Yij)2の、ターゲット画像FTを構成するすべての画素についての総和を最小にするグローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)として与えられる。
なお、ターゲット画像FTの(i,j)画素の画素値Gi,jと、その(i,j)画素(の位置)をアフィン変換して得られる基準画像FB上の位置(Xij,Yij)における画像データGXij,Yijとの差分自乗誤差(Gi,j−GXij,Yij)2の、ターゲット画像FTを構成するすべての画素についての総和を最小にするグローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)におけるdP,dQ,dT,dUを、それぞれ、dP1,dQ1,dT1,dU1と表す。この場合、正確なグローバルモーションの値(P1,Q1,T1,U1)=(P0+dP1,Q0+dQ1,T0+dT1,U0+dU1)である。
ここで、式(5)では、差分自乗誤差(Gi,j−GXij,Yij)2を用いているが、差分自乗誤差(Gi,j−GXij,Yij)2の代わりに、ターゲット画像FTの(i,j)画素の画素値Gi,jと、その(i,j)画素(の位置)をアフィン変換して得られる基準画像FB上の位置(Xij,Yij)における画像データGXij,Yijとの差異を表す、例えば、差分絶対値|Gi,j−GXij,Yij|などを用いることが可能である。
ターゲット画像FTの(i,j)画素を、グローバルモーションの値(P,Q,T,U)=(P0+dP,Q0+dQ,T0+dT,U0+dU)によってアフィン変換することにより得られる基準画像FB上の位置(Xij,Yij)における画像データGXij,Yijは、グローバルモーションの値(P,Q,T,U)によって異なる。
従って、ターゲット画像FTの(i,j)画素の画素値Gi,jと、その(i,j)画素(の位置)をアフィン変換して得られる基準画像FB上の位置(Xij,Yij)における画像データGXij,Yijとの差異も、グローバルモーションの値(P,Q,T,U)によって異なり、あるグローバルモーションの値(P,Q,T,U)に対する画素値Gi,jと画像データGXij,Yijとの差異を、エラーEij(P,Q,T,U)と表すとすると、式(5)は、式(6)で表すことができる。
グローバルモーション高精度計算処理部31では、式(6)を満たすエラーEij(P,Q,T,U)の引数(P,Q,T,U)が、正確なグローバルモーションの値(P1,Q1,T1,U1)として求められる。
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。
請求項1に記載の画像処理方法は、
複数の撮像画像のうちの、1の撮像画像である基準画像と、他の1の撮像画像であるターゲット画像との位置関係を求める画像処理方法において、
前記基準画像とターゲット画像との位置関係の基準となる基準位置関係の初期値を取得する初期値取得ステップ(例えば、図12のステップS31の処理)と、
前記基準画像とターゲット画像との位置関係を、前記基準位置関係と変数とで表す引数をとり、かつ、その引数が表す位置関係の前記基準画像とターゲット画像との、対応する位置どうしの画像データの統計的な差異を表す統計エラー関数を求めるエラー関数演算ステップ(例えば、図12のステップS32の処理)と、
前記統計エラー関数に基づいて、前記基準画像とターゲット画像との位置関係を求める位置関係演算ステップ(例えば、図12のステップS33の処理)と
を含むことを特徴とする。
請求項5に記載の画像処理方法は、
前記統計エラー関数を最小にする前記引数を求める引数演算ステップ(例えば、図12のステップS35の処理)と、
前記基準位置関係を、前記統計エラー関数を最小にする前記引数が表す位置関係に更新する更新ステップ(例えば、図12のステップS36の処理)と
をさらに含み、
前記位置関係演算ステップでは、前記基準位置関係が更新された後の前記統計エラー関数に基づいて、前記基準画像とターゲット画像との位置関係を求める
ことを特徴とする。
請求項9に記載の画像処理装置は、
複数の撮像画像のうちの、1の撮像画像である基準画像と、他の1の撮像画像であるターゲット画像との位置関係を求める画像処理装置において、
前記基準画像とターゲット画像との位置関係の基準となる基準位置関係の初期値を取得する初期値取得手段(例えば、図12のステップS31の処理を行う図5のコンピュータ51のCPU71)と、
前記基準画像とターゲット画像との位置関係を、前記基準位置関係と変数とで表す引数をとり、かつ、その引数が表す位置関係の前記基準画像とターゲット画像との、対応する位置どうしの画像データの統計的な差異を表す統計エラー関数を求めるエラー関数演算手段(例えば、図12のステップS32の処理を行う図5のコンピュータ51のCPU71)と、
前記統計エラー関数に基づいて、前記基準画像とターゲット画像との位置関係を求める位置関係演算手段(例えば、図12のステップS33の処理を行う図5のコンピュータ51のCPU71)と
を備えることを特徴とする。
請求項10に記載のプログラムは、
複数の撮像画像のうちの、1の撮像画像である基準画像と、他の1の撮像画像であるターゲット画像との位置関係を求める画像処理をコンピュータに行わせるプログラムにおいて、
前記基準画像とターゲット画像との位置関係の基準となる基準位置関係の初期値を取得する初期値取得ステップ(例えば、図12のステップS31の処理)と、
前記基準画像とターゲット画像との位置関係を、前記基準位置関係と変数とで表す引数をとり、かつ、その引数が表す位置関係の前記基準画像とターゲット画像との、対応する位置どうしの画像データの統計的な差異を表す統計エラー関数を求めるエラー関数演算ステップ(例えば、図12のステップS32の処理)と、
前記統計エラー関数に基づいて、前記基準画像とターゲット画像との位置関係を求める位置関係演算ステップ(例えば、図12のステップS33の処理)と
を含む処理をコンピュータに実行させることを特徴とする。
以下、図を参照して、本発明の実施の形態について説明する。
図5は、本発明を適用した画像処理装置の一実施の形態の構成例を示している。
図5の画像処理装置は、基準画像に対するターゲット画像の位置関係を表すパラメータ、即ち、グローバルモーションの値(P,Q,T,U)を求める処理を行うコンピュータ51と、そのコンピュータ51に基準画像またはターゲット画像となる撮像画像を供給するデジタルカメラ(デジタルビデオカメラ)52とで構成されている。また、コンピュータ51は、インターネット53に接続されている。
CPU(Central Processing Unit)71、メモリ72、ディスプレイコントローラ73、入力機器インタフェース74、ネットワークインタフェース75、および外部機器インタフェース76は、バス77を介して相互に接続されている。
CPU71は、HDD(Hard Disk Drive)81に記憶されているオペレーティングシステム(OS)を実行し、そのオペレーティングシステムの制御の下で、各種のプログラム(アプリケーションプログラム)を実行する。例えば、CPU71は、デジタルカメラ52から外部機器インタフェース76を介して供給される複数の撮像画像(の画像データ)を、HDD81に記憶(保存)させる。また、CPU71は、デジタルカメラ52から供給された、または、HDD81に記憶されている複数の撮像画像のうちの、所定の撮像画像を基準画像とするとともに、他の撮像画像をターゲット画像として、基準画像に対するターゲット画像の位置関係を算出する処理を行う。以下、この処理を位置関係算出処理という。この位置関係算出処理では、基準画像に対するターゲット画像の位置関係を、グローバルモーションの値(P,Q,T,U)として求める。
メモリ72は、CPU71において実行されるプログラムを記憶(ロード)し、また、CPU71が処理に必要な作業データを一時的に記憶する。なお、メモリ72は、ROM(Read Only Memory)などの不揮発性メモリおよびDRAM(Dynamic Random Access Memory)などの揮発性メモリの両方で構成することができる。
ディスプレイコントローラ73は、CPU71から供給される描画命令に従い、ディスプレイ78に画像を表示させる。即ち、ディスプレイコントローラ73は、CPU71から供給される描画命令に従い、描画データを得て、図示しないフレームバッファに書き込む。ディスプレイ78は、フレームバッファに書き込まれた描画データに基づいて、画像を表示する。これにより、ディスプレイ78では、HDD81に記憶されている画像や、HDD81に記憶されている画像をCPU71で処理(加工)した画像などが表示され、ユーザは、そのディスプレイ78上に表示された画像を見ることができる。
入力機器インタフェース74には、キーボード(KBD)79やマウス80が接続されている。ユーザは、キーボード79またはマウス80を操作することにより、例えば、撮像画像をディスプレイ78に表示させるコマンドや、画像処理を行わせるコマンドなどを入力することができる。入力機器インタフェース74は、キーボード79やマウス80から供給される、その操作に対応した信号を、バス77を介して、CPU71に供給する。
ネットワークインタフェース75は、例えば、ADSL(Asymmetric Digital Subscriber Line)モデムやNIC(Network Interface Card)などで構成され、インターネット53などの広域ネットワークや、Ethernet(登録商標)に代表されるLAN(Local Area Network)などの局所的ネットワークなどとの間で通信を行うための通信制御を行う。
なお、インターネット53などのネットワーク上では、図示しない複数のホスト端末またはサーバなどと呼ばれるコンピュータが、互いにトランスペアレントな状態で接続され、分散コンピューティング環境が構築されている。そのネットワーク上にあるサーバなどは、例えば、ソフトウエア(プログラム)やコンテンツデータなどをユーザに配信する配信サービスなどを行うことができる。コンピュータ51は、ネットワークインタフェース75を介して、例えば、インターネット53上のサーバから、他人が撮像した画像をHDD81にダウンロードすることができる。
外部機器インタフェース76には、デジタルカメラ52,HDD81、およびメディアドライブ82などの外部機器が接続されている。外部機器インタフェース76は、デジタルカメラ52,HDD81、またはメディアドライブ82それぞれとの間でのデータのやりとりを制御する。
HDD81は、磁気ディスクを記録媒体として有する、ランダムアクセス可能な記憶装置(記録装置)であり、記憶容量やデータ転送速度などの点が優れている。
HDD81には、各種のプログラムが実行可能な状態でインストール(記憶)されている。例えば、HDD81には、CPU71が実行すべきオペレーティングシステムのプログラムや、その他のアプリケーションプログラム、デバイスドライバなどが不揮発的に記憶されている。
また、本実施の形態では、上述したように、コンピュータ51が、基準画像に対するターゲット画像の位置関係、即ち、グローバルモーションの値(P,Q,T,U)を求める位置関係算出処理を行うが、この位置関係算出処理を行うプログラムも、HDD81に記憶(インストール)されている。
メディアドライブ82には、CD(Compact Disc)やMO(Magneto-Optical disc)、DVD(Digital Versatile Disc)などの可般型のディスク83が装着される。そして、メディアドライブ82は、ディスク83のデータ記録面にアクセスし、そこに記録されているプログラムやデータを読み出し、また、外部機器インタフェース76から供給されたデータなどをディスク83に書き込む(記録する)。
ディスク83は、主に、プログラムやデータのバックアップをとるためや、プログラムまたはデータの販売、流通、配布などを目的として移動するために使用される。従って、基準画像に対するターゲット画像の位置関係を算出する位置関係算出処理を行うプログラムも、ディスク83に記録した形で、販売等することができる。
以上のように構成されるコンピュータ51は、例えば、デジタルカメラ52から供給された、時系列に撮像された複数の撮像画像、または、HDD81に記憶されている複数枚の撮像画像などを対象として、位置関係算出処理を行う。即ち、コンピュータ51は、所定の1枚の撮像画像を基準画像とするとともに、他の撮像画像をターゲット画像として、基準画像に対するターゲット画像のグローバルモーションの値(P,Q,T,U)を算出する。
なお、コンピュータ51は、例えば、米IBM社のパーソナル・コンピュータ”PC/AT(Personal Computer/Advanced Technology)”の互換機又は後継機を採用することができる。勿論、コンピュータ51は、他のアーキテクチャを備えたコンピュータでも良い。また、コンピュータ51と同様の構成は、デジタルカメラ52内に内蔵することが可能である。この場合、デジタルカメラ52内で、位置関係算出処理が行われる。
次に、コンピュータ51による位置関係算出処理について具体的に説明する。
コンピュータ51による位置関係算出処理では、ターゲット画像を複数のブロックに分割し、1つのブロック内のすべての画素は、基準画像に対して、同一の平行移動のみが行われたものであると近似する。この近似を、以下、適宜、平行移動の近似という。
そこで、最初に、図6と図7を参照して、平行移動の近似について説明する。
ターゲット画像FTは、図6に示すように、基準画像FBの座標系を基準とした場合、手ブレにより、座標系がずれた画像となっている。即ち、ここでは、説明を簡単にするため、基準画像FBとターゲット画像FTに動物体が存在しないものとすると、ターゲット画像FTは、基準画像FBに対して、回転、平行移動、または拡大縮小した画像となっている。
位置関係算出処理では、ターゲット画像FTが、所定の画素数を有する複数のブロックblkに分割される。ここで、ターゲット画像FTのX方向に左からh+1番目で、Y方向に上からk+1番目のブロックを、図2で説明した場合と同様に、ブロックblk(h,k)とする。また、ブロックblk(h,k)の中心位置も、図2で説明した場合と同様に、(Cx(h,k),Cy(h,k))とする。
位置関係算出処理では、ターゲット画像FT内のブロックblk(h,k)内のすべての画素が、図7に示すように、基準画像FBに対して、「回転、平行移動、拡大縮小」のうちの、同一の距離と方向の平行移動のみを行っていると近似する。実際の手ブレには、回転および拡大縮小の成分は、ほとんど含まれないため、撮像画像の画像サイズに対して、ブロックblk(h,k)の大きさを十分に小さくすれば、このような近似を行っても十分な精度を得ることができる。
いま、ターゲット画像FTの左からi+1番目で、上からj+1番目の(i,j)画素が、ブロックblk(h,k)内にあるものとして、ブロックblk(h,k)内の(i,j)画素(の位置)をアフィン変換によって基準画像FB上の対応する位置に移動することを考える。
なお、以下では、基準画像FBに対するターゲット画像FTの位置関係、即ち、グローバルモーションの値(P,Q,T,U)を、前述の図3および図4で説明した場合と同様に、(P0+dP,Q0+dQ,T0+dT,U0+dU)と表す。また、このグローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)は、(P0,Q0,T0,U0)を基準として、グローバルモーションの変化量(dP,dQ,dT,dU)だけ変化しているとみることができるので、(P0,Q0,T0,U0)を、以下、適宜、グローバルモーションの基準値という。
いま、ターゲット画像FT上の(i,j)画素が、グローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)によってアフィン変換され、基準画像FB上の対応する位置(Xij,Yij)に移動するものとすると、位置(Xij,Yij)は、前述の式(4)によって計算される。
但し、ここでは、上述したように、ターゲット画像FT内のブロックblk(h,k)内の各画素は、基準画像FBに対して、図8に示すように、平行移動の関係(ずれ)のみがあると近似することにしているので、ブロックblk(h,k)内の画素それぞれについて、逐一、式(4)を計算する必要はない。
即ち、例えば、ターゲット画像FT上のブロックblk(h,k)の中心位置(Cx(h,k),Cy(h,k))に対応する基準画像FB上の位置は、式(4)に従い、次の式(7)で表すことができる。
この場合、平行移動の近似により、ブロックblk(h,k)内の任意の(i,j)画素の、基準画像FB上の対応する位置(Xij,Yij)は、次式で表される。
ここで、式(8)の
は、(i,j)画素の、ブロックblk(h,k)の中心(Cx(h,k),Cy(h,k))からの相対位置(相対移動量)を表す2次元ベクトルである。
即ち、ブロックblk(h,k)内の画素は、図8に示すように、同一の距離だけ、同一の方向に移動しているので、そのブロックblk(h,k)内のある1つの(i,j)画素(またはある位置)について、式(4)により、基準画像FB上の位置(Xij,Yij)を計算すれば、ブロックblk(h,k)内の他の画素については、式(4)により求められた位置(Xij,Yij)と2次元ベクトルとの加算によって、基準画像FB上のアフィン変換先の位置を求めることができる。
具体的には、例えば、式(7)乃至式(9)によれば、ブロックblk(h,k)内の任意の(i,j)画素の、グローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)によるアフィン変換後の基準画像FB上の位置(Xij,Yij)は、式(7)のアフィン変換結果と、式(9)の2次元ベクトルとの加算によって求めることができる。
なお、式(8)においてブロックblk(h,k)内の画素ごとに異なるのは、右辺の最後の項の2次元ベクトル(i,j)だけなので、実装レベルでは、式(8)の右辺のうちの次式(10)で示される部分を計算し、その計算結果に対して、2次元ベクトル(i,j)を加算することにより、ブロックblk(h,k)内の任意の(i,j)画素の、グローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)によるアフィン変換後の基準画像FB上の位置(Xij,Yij)を求めるのが望ましい。
以上のように、平行移動の近似を行うことにより、ターゲット画像FT内の画素すべてについて、式(4)の行列計算をする必要がなくなり、計算量を大幅に軽減することができる。
即ち、上述した式(6)のエラーEij(P,Q,T,U)を求める場合の、ターゲット画像FT上のブロックblk(h,k)内の(i,j)画素を、基準画像FB上にアフィン変換した先の位置(Xij,Yij)を容易に求めることができ、その結果、式(6)のエラーEij(P,Q,T,U)の計算量を軽減することができる。
次に、平行移動の近似を行う場合であっても、式(6)のエラーEij(P,Q,T,U)は、そのグローバルモーションの値(P,Q,T,U)のうちのグローバルモーションの変化量(dP,dQ,dT,dU)を様々な値に変えて求める必要がある。
そこで、コンピュータ51による位置関係算出処理では、基準画像FBとターゲット画像FTとの位置関係を、グローバルモーションの基準値(P0,Q0,T0,U0)と、変数であるグローバルモーションの変化量(dP,dQ,dT,dU)とによるグローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)で表す引数(P,Q,T,U)(=(P0+dP,Q0+dQ,T0+dT,U0+dU))をとり、かつ、その引数(P,Q,T,U)が表す位置関係の基準画像FBとターゲット画像FTとの、対応する位置どうしの画像データの統計的な差異を表す統計エラー関数fE(P,Q,T,U)を求めて処理することで、グローバルモーションの変化量(dP,dQ,dT,dU)を様々な値に変えて、エラーEij(P,Q,T,U)を求めずに済むようにしている。
ここで、統計エラー関数fE(P,Q,T,U)の引数(P,Q,T,U)は、グローバルモーションの基準値(P0,Q0,T0,U0)と、変数であるグローバルモーションの変化量(dP,dQ,dT,dU)との和であるグローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)である。そして、このグローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)のうちの、グローバルモーションの変化量(dP,dQ,dT,dU)が、様々な値に変えるべき変数であり、従って、統計エラー関数fE(P,Q,T,U)は、その引数であるグローバルモーションの値(P,Q,T,U)のうちの、変数であるグローバルモーションの変化量(dP,dQ,dT,dU)だけを引数とする統計エラー関数fE(dP,dQ,dT,dU)と書くこともできる。
ところで、統計エラー関数fE(P,Q,T,U)は、その引数(P,Q,T,U)が表す位置関係の基準画像FBとターゲット画像FTとの、対応する位置の画像データの統計的な差異を表すものであるから、引数であるグローバルモーションの値(P,Q,T,U)によって、ターゲット画像FTの(i,j)画素をアフィン変換して得られる基準画像FB上の位置(Xij,Yij)における基準画像FBの画像データGXij,Yijと、ターゲット画像FTの(i,j)画素の画素値Gi,jとの差異としての、例えば、画像データGXij,Yijと画素値Gi,jとの差分自乗誤差の、ターゲット画像FTの画素すべてについての総和などと定義することができる。
なお、画像データGXij,Yijと画素値Gi,jとの差異としては、その他、例えば、画像データGXij,Yijと画素値Gi,jとの差分絶対値などを用いることが可能である。
上述のように、統計エラー関数fE(P,Q,T,U)は、引数であるグローバルモーションの値(P,Q,T,U)によって、ターゲット画像FTの(i,j)画素をアフィン変換して得られる基準画像FB上の位置(Xij,Yij)における基準画像FBの画像データGXij,Yijと、ターゲット画像FTの(i,j)画素の画素値Gi,jとの差分自乗誤差の、ターゲット画像FTの画素すべてについての総和であるため、例えば、ターゲット画像FTのある(i,j)画素を、グローバルモーションの値(P,Q,T,U)によってアフィン変換して得られる基準画像FB上の位置(Xij,Yij)の画像データGXij,Yijとの差分自乗誤差を、ターゲット画像FTの(i,j)画素のアフィン変換に用いるグローバルモーションの値(P,Q,T,U)を引数とする関数の、ターゲット画像FTの画素すべてについての総和として求めることができる。
そこで、ターゲット画像FTのある1つの(i,j)画素の画素値Gi,jと、その(i,j)画素をグローバルモーションの値(P,Q,T,U)によってアフィン変換して得られる基準画像FB上の位置(Xij,Yij)における基準画像FBの画像データGXij,Yijとの差分自乗誤差の関数を、画素エラー関数E(i,j,dxij,dyij)と書くこととする。
ここで、画素エラー関数E(i,j,dxij,dyij)の引数iとjは、ターゲット画像FTの(i,j)画素(の位置)を表す。また、画素エラー関数E(i,j,dxij,dyij)の引数dxijとdyijは、ターゲット画像FTの(i,j)画素を、グローバルモーションの値(P,Q,T,U)によってアフィン変換して得られる基準画像FB上の位置(Xij,Yij)に対応する変数であり、従って、グローバルモーションの値(P,Q,T,U)にも対応する変数である。
即ち、いま、グローバルモーションの変化量(dP,dQ,dT,dU)をすべて0とすると、グローバルモーションの値(P,Q,T,U)は、グローバルモーションの基準値(P0,Q0,T0,U0)となるが、このグローバルモーションの基準値(P0,Q0,T0,U0)によって、ターゲット画像FTの(i,j)画素をアフィン変換して得られる基準画像FB上の位置を、(X0ij,Y0ij)と表すこととする。
ここで、基準画像FB上の位置(X0ij,Y0ij)は、式(8)におけるdP,dQ,dT,dUをすべて0として次式で表すことができる。
画素エラー関数E(i,j,dxij,dyij)の引数dxijとdyijは、ターゲット画像FTの(i,j)画素を、グローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)によってアフィン変換して得られる基準画像FB上の位置(Xij,Yij)と、dP,dQ,dT,dUをすべて0としたアフィン変換によって得られる式(11)の基準画像FB上の位置(X0ij,Y0ij)との差のX方向とY方向それぞれの成分である。即ち、引数dxijは、式dxij=Xij−X0ijで表され、引数dyijは、式dyij=Yij−Y0ijで表される。
以上のような、i,j,dxij,dyijを引数とする画素エラー関数E(i,j,dxij,dyij)は、ターゲット画像FTの(i,j)画素を、グローバルモーションの基準値(P0,Q0,T0,U0)によってアフィン変換して得られる基準画像FB上の位置(X0ij,Y0ij)から、(dxij,dyij)だけ離れた位置(Xij,Yij)(=(X0ij+dxij,Y0ij+dyij))に、(i,j)画素をアフィン変換するグローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)が与えられた場合の、そのグローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)によって、(i,j)画素をアフィン変換して得られる基準画像FB上の位置(Xij,Yij)(=(X0ij+dxij,Y0ij+dyij))の画像データGXij,Yijと、(i,j)画素の画素値Gi,jとの差分自乗誤差を表す。
ここで、ターゲット画像FTの(i,j)画素を、グローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)によってアフィン変換して得られる基準画像FB上の位置(Xij,Yij)は、グローバルモーションの変化量(dP,dQ,dT,dU)に対応するから、そのようなXijから求められる引数dxijと、Yijから求められるdyijも、グローバルモーションの変化量(dP,dQ,dT,dU)に対応する。
従って、グローバルモーションの変化量(dP,dQ,dT,dU)に対応するdxijとdyijを引数とする画素エラー関数E(i,j,dxij,dyij)は、等価的に、グローバルモーションの変化量(dP,dQ,dT,dU)、ひいては、グローバルモーションの値(P,Q,T,U)を引数とする関数であるということができる。
ところで、図8で説明したような、ブロックblk(h,k)内の(i,j)画素を、グローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)によってアフィン変換した位置(Xij,Yij)は、一般的に、基準画像FBの画素の位置(中心位置)と一致しない場合がほとんどである。
そのため、撮像画像の画像データがデジタルデータである場合、(i,j)画素(の位置)を基準画像FB上にアフィン変換して得られる位置の画像データ(画素値)は、その周辺の画素値から内挿(補間)すること等によって求める必要がある。つまり、(i,j)画素の画素値Gi,jと、(i,j)画素を、グローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)によりアフィン変換して得られる基準画像FB上の位置(Xij,Yij)の画像データGXij,Yijとの差分自乗誤差を求めるためには、位置(Xij,Yij)の周辺の画素値を用いた補間処理によって、その位置(Xij,Yij)の画像データGXij,Yijを求めなければならず、その結果、計算量が膨大となる。
そこで、コンピュータ51による位置関係算出処理では、(i,j)画素(の中心位置)をアフィン変換して得られる基準画像FB上の位置(Xij,Yij)が、基準画像FBの画素(の中心位置)に一致する場合のグローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)によってアフィン変換を行うことにより、上述のような補間処理を行わずに、画素エラー関数E(i,j,dxij,dyij)、ひいては、統計エラー関数fE(dP,dQ,dT,dU)を求める。
いま、(i,j)画素(の中心位置)をアフィン変換して得られる基準画像FB上の位置(Xij,Yij)が、基準画像FBの画素(の中心位置)に一致する場合の、その基準画像FB上の位置(Xij,Yij)を、特に、整数位置と呼ぶこととすると、(i,j)画素に対しては、次のような整数位置が設定される。
即ち、(i,j)画素をアフィン変換して得られる基準画像FB上の位置(Xij,Yij)が、整数位置となる場合のグローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)は、グローバルモーションの変化量(dP,dQ,dT,dU)が微小値であることから、(i,j)画素を、グローバルモーションの基準値(P0,Q0,T0,U0)によってアフィン変換して得られる基準画像FB上の位置(Xij,Yij)、つまり、式(11)で表される位置(X0ij,Y0ij)に近い位置となる。
そこで、(i,j)画素に対しては、図9に示すように、その(i,j)画素を、グローバルモーションの基準値(P0,Q0,T0,U0)によってアフィン変換して得られる基準画像FB上の位置(X0ij,Y0ij)に近い、例えば、3×3(横×縦)の9点の基準画像FB上の整数位置が設定される。
なお、式(7)乃至式(10)で説明したことから、ブロックblk(h,k)内の各画素を、グローバルモーションの基準値(P0,Q0,T0,U0)によりアフィン変換した位置(X0ij,Y0ij)は、式(11)のうちの式(12)で示される部分を1回だけ計算しておけば、その式(12)の計算結果と、ブロックblk(h,k)内の各画素の位置を表す2次元ベクトル(i,j)との加算だけで求めることができる。
図9では、位置(X0ij,Y0ij)に一番近い整数位置(IntX0ij,IntY0ij)と、その整数位置(IntX0ij,IntY0ij)に隣接する8点の整数位置(IntX0ij−1,IntY0ij−1),(IntX0ij,IntY0ij−1),(IntX0ij+1,IntY0ij−1),(IntX0ij−1,IntY0ij),(IntX0ij+1,IntY0ij),(IntX0ij−1,IntY0ij+1),(IntX0ij,IntY0ij+1),および(IntX0ij+1,IntY0ij+1)が示されている。
整数位置は、上述したように、基準画像FB上の画素の位置(中心位置)に一致するので、整数位置の画像データは、基準画像FB上の、その整数位置の画素の画素値そのものである。
従って、(i,j)画素の画素値Gi,jと、その(i,j)画素に対する9個の整数位置の基準画像FBの画素の画素値との差分自乗誤差は、補間処理を行わずに、基準画像FBとターゲット画像FTの画素値をそのまま用いて、容易に求めることができる。
即ち、ターゲット画像FT上の(i,j)画素の画素値Gi,jと、その(i,j)画素に対する基準画像FB上の整数位置(IntX0ij−1,IntY0ij−1)の画素値GIntX0ij-1,IntY0ij-1、整数位置(IntX0ij,IntY0ij−1)の画素値GIntX0ij,IntY0ij-1、整数位置(IntX0ij+1,IntY0ij−1)の画素値GIntX0ij+1,IntY0ij-1、整数位置(IntX0ij−1,IntY0ij)の画素値GIntX0ij-1,IntY0ij、整数位置(IntX0ij,IntY0ij)の画素値GIntX0ij,IntY0ij、整数位置(IntX0ij+1,IntY0ij)の画素値GIntX0ij+1,IntY0ij、整数位置(IntX0ij−1,IntY0ij+1)の画素値GIntX0ij-1,IntY0ij+1、整数位置(IntX0ij,IntY0ij+1)の画素値GIntX0ij,IntY0ij+1、整数位置(IntX0ij+1,IntY0ij+1)の画素値GIntX0ij+1,IntY0ij+1それぞれとの差分自乗誤差Ea(i,j),Eb(i,j),Ec(i,j),Ed(i,j),Ee(i,j),Ef(i,j),Eg(i,j),Eh(i,j),Ei(i,j)は、次の式(13)乃至式(21)で求めることができる。
以上の式(13)乃至式(21)の差分自乗誤差Ea(i,j),Eb(i,j),Ec(i,j),Ed(i,j),Ee(i,j),Ef(i,j),Eg(i,j),Eh(i,j),Ei(i,j)が、画素エラー関数E(i,j,dxij,dyij)の値(関数値)となる。
なお、画素エラー関数E(i,j,dxij,dyij)の引数dxijとdyijは、上述したように、ターゲット画像FTの(i,j)画素を、グローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)によってアフィン変換して得られる式(8)の基準画像FB上の位置(Xij,Yij)と、dP,dQ,dT,dUをすべて0としたアフィン変換によって得られる式(11)の基準画像FB上の位置(X0ij,Y0ij)との差のX方向とY方向それぞれの成分である。即ち、引数dxijは、式dxij=Xij−X0ijで表され、引数dyijは、式dyij=Yij−Y0ijで表される。
従って、画素エラー関数E(i,j,dxij,dyij)の引数dxijとdyijは、式(8)から式(11)を減算することにより、次式で求められる。
式(22)によれば、引数dxijおよびdyijは、グローバルモーションの変化量(dP,dQ,dT,dU)を引数とする関数であり、従って、グローバルモーションの変化量(dP,dQ,dT,dU)に対応する。また、式(22)では、ブロックblk(h,k)内の(i,j)画素を表す変数iおよびjの項が相殺されて消去されている。従って、ブロックblk(h,k)内のすべての画素において、変数dxijおよびdyijは、同一であり、ブロックblk(h,k)内のある1画素について引数dxijおよびdyijを計算すれば、その計算結果は、ブロックblk(h,k)の他の画素に使用することができる。その結果、計算量を軽減することができる。
次に、上述したように、画素エラー関数E(i,j,dxij,dyij)は、ターゲット画像FTの(i,j)画素の画素値Gi,jと、その(i,j)画素をグローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)によってアフィン変換して得られる基準画像FB上の位置(Xij,Yij)=(X0ij+dxij,Y0ij+dyij)の基準画像FBの画像データGXij,Yijとの差分自乗誤差を表す。
画素エラー関数E(i,j,dxij,dyij)は、このように、ターゲット画像FTの位置(i,j)における(i,j)画素の画素値Gi,jと、基準画像FB上の位置(X0ij+dxij,Y0ij+dyij)における画像データGXij,Yijとの差分自乗誤差を表すという性質上、図10に示すように、位置に関係する引数dxij,dyijについて、滑らかな関数となる。なお、画素エラー関数E(i,j,dxij,dyij)は、理想的には、図10に示すように、式(13)乃至式(21)の差分自乗誤差Ea(i,j),Eb(i,j),Ec(i,j),Ed(i,j),Ee(i,j),Ef(i,j),Eg(i,j),Eh(i,j),Ei(i,j)が表す点をすべて通る面となる。
そこで、本実施の形態では、画素エラー関数E(i,j,dxij,dyij)を、例えば、引数dxij,dyijそれぞれの最大次数が2次の関数として、次式で定義することとする。
ここで、C0乃至C8は、画素エラー関数E(i,j,dxij,dyij)を定義する係数である。この係数C0乃至C8は、次のようにして求めることができる。
即ち、例えば、式(13)の差分自乗誤差Ea(i,j)が得られる基準画像FB上の位置(IntX0ij−1,IntY0ij−1)が、(i,j)画素をグローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)によりアフィン変換することにより得られる位置(Xij,Yij)、つまり、(X0ij+dxij,Y0ij+dyij)であるとする。この場合、式(13)の差分自乗誤差Ea(i,j)が得られる基準画像FB上の位置(IntX0ij−1,IntY0ij−1)は、図11に示すように、アフィン変換により得られる位置(X0ij+dxij,Y0ij+dyij)に一致するから、画素エラー関数E(i,j,dxij,dyij)の引数dxijとdyijは、dxij=(IntX0ij−1−X0ij)とdyij=(IntY0ij−1−Y0ij)と、それぞれ表すことができる。
従って、式(23)で定義される画素エラー関数E(i,j,dxij,dyij)の引数dxijとdyijが、dxij=(IntX0ij−1−X0ij)とdyij=(IntY0ij−1−Y0ij)であるときに、画素エラー関数E(i,j,dxij,dyij)は、式(13)の差分自乗誤差Ea(i,j)に等しくなる。
即ち、式(24)が成り立つ。
同様にして、式(14)乃至式(21)の差分自乗誤差Eb(i,j)乃至Ei(i,j)について、次の式(25)乃至(32)が成り立つ。
上述の9個の式(24)乃至(32)は、9個の係数C0乃至C8を未知変数とする連立方程式である。従って、式(24)乃至(32)の連立方程式を解くことにより、式(23)の係数C0乃至C8を求めることができる。
ところで、グローバルモーションの変化量(dP,dQ,dT,dU)は、上述したように、微小値であるため、そのような微小値のグローバルモーションの変化量(dP,dQ,dT,dU)に対応する引数dxijおよびdyijも微小値となる。
このように、引数dxijおよびdyijが微小値である場合、式(23)の画素エラー関数E(i,j,dxij,dyij)の引数dxijおよびdyijの合計の次数が3次以上である項については、その項を無視しても、計算精度にほとんど影響しない。そこで、式(23)は、式(33)に示すように、最高次数が2次の2次関数で近似することができる。
ここで、dxijおよびdyijは、上述したように、グローバルモーションの変化量(dP,dQ,dT,dU)に対応する値であり、式(22)に示したように、グローバルモーションの変化量(dP,dQ,dT,dU)で表すことができる。式(33)では、そのことを分かりやすくするために、dxijをdxij(dP,dQ,dT,dU)と、dyijをdyij(dP,dQ,dT,dU)と、それぞれ、dP,dQ,dT、およびdUの関数として表している。
上述したことから、ターゲット画像FT上の(i,j)画素について定式化した式(33)の画素エラー関数E(i,j,dxij(dP,dQ,dT,dU),dyij(dP,dQ,dT,dU))の、ターゲット画像FT上のすべての画素についての総和が、統計エラー関数fE(dP,dQ,dT,dU)である。従って、統計エラー関数fE(dP,dQ,dT,dU)は、式(34)で表すことができる。そして、ターゲット画像FTに対して求めるべき正確なグローバルモーションの値(P1,Q1,T1,U1)=(P0+dP1,Q0+dQ1,T0+dT1,U0+dU1)は、式(34)を最小にするグローバルモーションの変化量(dP,dQ,dT,dU)を用いて表されるグローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)によって与えられる。
ここで、式(34)のΣは、ターゲット画像FTの画素(W×H画素)すべてについての総和を表す。
式(34)の統計エラー関数fE(dP,dQ,dT,dU)は、ターゲット画像FTの各画素についての式(33)の画素エラー関数E(i,j,dxij,dyij)の総和であり、式(33)と同様に変数dxijとdyijそれぞれの最大次数が2次の2次関数となる。従って、式(34)の統計エラー関数fE(dP,dQ,dT,dU)が最小となる変数dP,dQ,dT、およびdUの値は、式(34)の統計エラー関数fE(dP,dQ,dT,dU)を、変数dP,dQ,dT,dUのそれぞれで偏微分し、その偏微分した式を0とする方程式を解くことで得ることができる。
具体的には、ターゲット画像FT上の(i,j)画素それぞれに対して得られた画素エラー関数E(i,j,dxij(dP,dQ,dT,dU),dyij(dP,dQ,dT,dU))の総和である統計エラー関数fE(dP,dQ,dT,dU)として、例えば、式(35)が得られたとする。
ここで、式(35)では、ターゲット画像FT上のある(i,j)画素における画素エラー関数E(i,j,dxij(dP,dQ,dT,dU),dyij(dP,dQ,dT,dU))が、(3dP2+4dQ2−2dPdQ+・・・)となっており、また別の(i’,j’)画素の画素エラー関数E(i’,j’,dxi’j’(dP,dQ,dT,dU),dyi’j’(dP,dQ,dT,dU))が、(5dP2−2dQ2+10dPdQ+・・・)となっている。さらに、式(35)では、ターゲット画像FT上の全画素の画素エラー関数E(i,j,dxij(dP,dQ,dT,dU),dyij(dP,dQ,dT,dU))の総和である統計エラー関数fE(dP,dQ,dT,dU)が、(100dP2−60dQ2+18dPdQ+・・・)となっている。この場合、統計エラー関数fE(dP,dQ,dT,dU)である(100dP2−60dQ2+18dPdQ+・・・)を、変数dP,dQ,dT,dUで偏微分した式それぞれが0となるときの変数dP,dQ,dT、およびdUの値を求めることにより、ターゲット画像FTに対する正確なグローバルモーションの値(P1,Q1,T1,U1)を得ることができる。
統計エラー関数fE(dP,dQ,dT,dU)は、dP,dQ,dT,dUを引数とする、いわば解析的な関数、即ち、変数dP,dQ,dT,dUそれぞれで偏微分することができる関数であるため、この統計エラー関数fE(dP,dQ,dT,dU)を用いることにより、ターゲット画像FTに対する正確なグローバルモーションの値(P1,Q1,T1,U1)を求めるにあたって、dP,dQ,dT、およびdUを様々な値に変えて、差分自乗誤差を計算する必要はない。従って、コンピュータ51による位置関係算出処理によれば、計算量を大幅に軽減することができる。
次に、図12のフローチャートを参照して、コンピュータ51の位置関係算出処理について説明する。この位置関係算出処理は、ユーザの操作により、例えば、キーボード79またはマウス80などから、位置関係算出処理を開始するコマンドが入力されたときに開始される。また、コンピュータ51は、位置関係算出処理の対象とする基準画像FBとターゲット画像FTを、既に認識(取得)しているものとする。
初めに、ステップS31において、コンピュータ51(のCPU71)は、グローバルモーションの基準値(P0,Q0,T0,U0)の初期値を取得し、グローバルモーションの基準値(P0,Q0,T0,U0)(としての変数)にセットして、ステップS32に進む。
なお、ステップS31では、グローバルモーションの基準値(P0,Q0,T0,U0)の初期値としては、例えば、コンピュータ51自身が、上述した図1のグローバルモーション計算処理部11で説明した処理を行うことにより求めたグローバルモーションの値を採用することができる。また、その他の装置で算出されたグローバルモーションの値を、ユーザが、キーボード79またはマウス80などを操作することにより、あるいは、外部機器インタフェース76を介して、コンピュータ51に入力し、コンピュータ51は、その入力されたグローバルモーションの値を初期値として使用してもよい。なお、手ブレ量が大きい場合には、このような所定の方法で計算されたグローバルモーションの値を初期値として使用するのが望ましい。一方、撮像画像にほとんど手ブレが生じていない場合には、グローバルモーションの基準値(P0,Q0,T0,U0)の初期値として、例えば、(1,0,0,0)を使用することもできる。
ステップS32において、コンピュータ51は、グローバルモーションの基準値(P0,Q0,T0,U0)と、変数であるグローバルモーションの変化量(dP,dQ,dT,dU)とで表されるグローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)=(P,Q,T,U)を引数とする式(34)の統計エラー関数fE(P,Q,T,U)=fE(dP,dQ,dT,dU)を求め、ステップS33に進む。なお、ステップS32における式(34)の統計エラー関数fE(P,Q,T,U)=fE(dP,dQ,dT,dU)を求める処理については、図13を参照して後述する。
ステップS33において、コンピュータ51は、ステップS32で求められた統計エラー関数fE(P,Q,T,U)=fE(dP,dQ,dT,dU)が所定の条件を満たすかどうか、即ち、例えば、グローバルモーションの変化量(dP,dQ,dT,dU)を、(0,0,0,0)とした場合の統計エラー関数fE(P0,Q0,T0,U0)が十分に小さいかどうかを判定する。
具体的には、ステップS33では、統計エラー関数fE(P0,Q0,T0,U0)が、例えば、所定の閾値以下であるかどうかや、最小値となったかどうかが判定される。
ここで、統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)は、式(33)で表される画素エラー関数E(i,j,dxij,dyij)の、ターゲット画像FTの画素すべてについての総和であるから、統計エラー関数fE(P0,Q0,T0,U0)が、所定の閾値以下であるかどうか等を判定するためには、グローバルモーションの変化量(dP,dQ,dT,dU)を、(0,0,0,0)とした場合の画素エラー関数E(i,j,dxij,dyij)を求める必要がある。
ところで、グローバルモーションの変化量(dP,dQ,dT,dU)が、(0,0,0,0)である場合、式(22)により、dxijとdyijは、ともに0となる。従って、グローバルモーションの変化量(dP,dQ,dT,dU)を、(0,0,0,0)とした場合の画素エラー関数E(i,j,dxij,dyij)は、その引数であるdxijとdyijを0とすることによって求めることができる。
なお、統計エラー関数fE(P0,Q0,T0,U0)が十分に小さいということは、ターゲット画像FT上の(i,j)画素を、現在のグローバルモーションの基準値(P0,Q0,T0,U0)によりアフィン変換した位置(Xij,Yij)の基準画像FB上の画素値GXij,Yijと、ターゲット画像FT上の(i,j)画素の画素値Gi,jとの差が、基準画像FBの画素すべてにわたって十分に小さく、グローバルモーションの基準値(P0,Q0,T0,U0)によるアフィン変換によって、ターゲット画像FTを、基準画像FBに対して正確に位置合わせすることができることを意味する。
ステップS33において、ステップS32で求められた統計エラー関数fE(P,Q,T,U)=fE(dP,dQ,dT,dU)が所定の条件を満たす、即ち、グローバルモーションの変化量(dP,dQ,dT,dU)を、(0,0,0,0)とした場合の統計エラー関数fE(P0,Q0,T0,U0)が十分に小さいと判定された場合、ステップS34に進み、コンピュータ51は、現在のグローバルモーションの基準値(P0,Q0,T0,U0)を、ターゲット画像FTに対するグローバルモーションの値(P1,Q1,T1,U1)として出力して、処理を終わる。ここで、1回目のステップS33の処理において、グローバルモーションの変化量(dP,dQ,dT,dU)を、(0,0,0,0)とした場合の統計エラー関数fE(P0,Q0,T0,U0)が十分に小さいと判定された場合、ステップS31でグローバルモーションの基準値(P0,Q0,T0,U0)にセットした初期値が、ターゲット画像FTに対するグローバルモーションの値(P1,Q1,T1,U1)として出力されることとなる。
一方、ステップS33において、ステップS32で求められた統計エラー関数fE(P,Q,T,U)=fE(dP,dQ,dT,dU)が所定の条件を満たさない、即ち、グローバルモーションの変化量(dP,dQ,dT,dU)を、(0,0,0,0)とした場合の統計エラー関数fE(P0,Q0,T0,U0)がまだ大きいと判定された場合、ステップS35に進み、コンピュータ51は、ステップS32で求められた統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)を最小とする引数であるグローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)を解析的に求める。即ち、ステップS33では、コンピュータ51は、式(34)の統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)を、変数dP,dQ,dT,dUのそれぞれで偏微分し、その偏微分した式が0となる変数dP,dQ,dT、およびdUを求めることで、式(34)の統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)が最小となる変数dP1,dQ1,dT1,U1を求める。
ステップS35の後、ステップS36に進み、コンピュータ51は、現在のグローバルモーションの基準値(P0,Q0,T0,U0)を、ステップS35で求めたグローバルモーションの値(P,Q,T,U)=(P0+dP1,Q0+dQ1,T0+dT1,U0+dU1)に更新し、ステップS32に戻る。そして、続くステップS33において、グローバルモーションの変化量(dP,dQ,dT,dU)を、(0,0,0,0)とした場合の統計エラー関数fE(P0,Q0,T0,U0)が十分に小さいと判定されるまで、上述したステップS32,S33,S35、およびS36の処理が繰り返される。
次に、図13を参照して、図12のステップS32での統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)を求める処理について説明する。
初めに、ステップS51において、コンピュータ51は、X方向の画素の位置iが0≦i≦W−1の範囲で表され、かつ、Y方向の画素の位置jが0≦j≦H−1の範囲で表されるターゲット画像FTを、複数のブロックblk(h,k)に分割して、ステップS52に進む。
ステップS52において、コンピュータ51は、式(11)により、ブロックblk(h,k)内の(i,j)画素(の位置)を、現在のグローバルモーションの基準値(P0,Q0,T0,U0)により変換した位置(X0ij,Y0ij)を、すべてのブロックの画素について求め、ステップS53に進む。なお、ステップS53では、上述した平行移動の近似により、ブロックblk(h,k)内のすべての画素が、同一の平行移動を行っているものとして、現在のグローバルモーションの基準値(P0,Q0,T0,U0)によりアフィン変換した位置(X0ij,Y0ij)を求める計算が行われる。
ステップS53において、コンピュータ51は、ステップS52でターゲット画像FTの各画素について求めた位置(X0ij,Y0ij)それぞれに対して、近傍の3×3の整数位置を求めて、ステップS54に進む。即ち、ステップS54では、ターゲット画像FTの1つの(i,j)画素につき、図9を参照して説明したように、9個の整数位置(IntX0ij−1,IntY0ij−1),(IntX0ij,IntY0ij−1),(IntX0ij+1,IntY0ij−1),(IntX0ij−1,IntY0ij),(IntX0ij,IntY0ij),(IntX0ij+1,IntY0ij),(IntX0ij−1,IntY0ij+1),(IntX0ij,IntY0ij+1),および(IntX0ij+1,IntY0ij+1)が求められる。
ステップS54において、コンピュータ51は、ステップS53で求めた9個の整数位置に対して、式(13)乃至式(21)で表される差分自乗誤差Ea(i,j)乃至Ei(i,j)を、ターゲット画像FTの画素すべてについて計算して、ステップS55に進む。
ステップS55において、コンピュータ51は、ステップS54で求めた式(13)乃至(21)の差分自乗誤差Ea(i,j)乃至Ei(i,j)を用いて得られる式(24)乃至式(32)の連立方程式をたてて解くことにより、式(23)で表される画素エラー関数E(i,j,dxij,dyij)の係数C0乃至C8を、ターゲット画像FTの画素すべてについて求め、ステップS56に進む。
ステップS56において、コンピュータ51は、式(23)の変数dxijおよびdyijの合計の次数が3次以上である項を削除することにより、式(23)を近似した式(33)の画素エラー関数E(i,j,dxij,dyij)を、ターゲット画像FTの画素すべてについて求め、ステップS57に進む。なお、式(23)の画素エラー関数E(i,j,dxij,dyij)を、式(33)の画素エラー関数E(i,j,dxij,dyij)に近似せずに、そのまま用いるようにしてもよい。
ステップS57において、コンピュータ51は、ステップS56で求めた式(33)の画素エラー関数E(i,j,dxij,dyij)を、ターゲット画像FTの全ての画素について加算することにより、式(34)の統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)を求めて、リターンする。
以上のように、コンピュータ51による位置関係算出処理によれば、基準画像FBとターゲット画像FTとの位置関係の基準となるグローバルモーションの基準値(P0,Q0,T0,U0)の初期値を取得し、基準画像FBとターゲット画像FTとの位置関係を、グローバルモーションの基準値(P0,Q0,T0,U0)と、変数であるグローバルモーションの変化量(dP,dQ,dT,dU)とで表す引数(P0+dP,Q0+dQ,T0+dT,U0+dU)をとり、かつ、その引数(P0+dP,Q0+dQ,T0+dT,U0+dU)が表す位置関係の基準画像FBとターゲット画像FTとの、対応する位置どうしの画像データの統計的な差異を表す統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)を求め、その統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)に基づいて、基準画像FBとターゲット画像FTとの位置関係としてのグローバルモーションの値(P1,Q1,T1,U1)を求めるようにしたので、少ない計算量で、正確なグローバルモーションの値(P1,Q1,T1,U1)を求めることができる。
即ち、位置関係算出処理によれば、ターゲット画像FTを複数のブロックblk(h,k)に分割し、ブロックblk(h,k)における画素(の位置)が、すべて、同一の平行移動を行っており、従って、基準画像FBの対応する位置と同一の位置関係を有するものとして、統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)を求めるので、計算量を低減することができる。
さらに、位置関係算出処理によれば、統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)の引数(P0+dP,Q0+dQ,T0+dT,U0+dU)が、ターゲット画像FTの(i,j)画素の位置(i,j)と、その位置(i,j)に対してグローバルモーションの基準値(P0,Q0,T0,U0)に対応する位置関係にある基準画像FBの位置(X0ij,Y0ij)の近傍の画素の位置である整数位置(図9の(IntX0ij−1,IntY0ij−1)など)との位置関係を表すときの、ターゲット画像FTの(i,j)画素の画素値Gi,jと、整数位置の画素の画素値(例えば、式(13)のGIntX0ij-1,IntY0ij-1など)との差異としての、例えば、差分自乗誤差を用いて、統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)を求めるので、補間処理を行わずに済み、やはり計算量を低減することができる。
また、統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)は、引数dxijとdyijそれぞれの最大次数が2次の画素エラー関数E(i,j,dxij,dyij)の総和であり、そのような画素エラー関数E(i,j,dxij,dyij)は、式(23)に示したように、9個の係数C0乃至C8で定義することができる。従って、画素エラー関数E(i,j,dxij,dyij)は、引数dxijおよびdyijに対応するグローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)が、ターゲット画像FTの(i,j)画素の位置(i,j)と、その位置(i,j)に対してグローバルモーションの基準値(P0,Q0,T0,U0)に対応する位置関係にある基準画像FBの位置(X0ij,Y0ij)の近傍の、例えば、3×3の9個の整数位置それぞれとの第1乃至第9の位置関係を表すときの、ターゲット画像FTの(i,j)画素の画素値Gi,jと、第1乃至第9の位置関係の基準画像FBの画素の画素値それぞれとの差異としての式(13)乃至式(21)の差分自乗誤差を用いて求めることができる。そして、統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)は、そのような画素エラー関数E(i,j,dxij,dyij)の総和として求めることができる。
さらに、位置関係算出処理では、統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)を最小にする引数(P0+dP,Q0+dQ,T0+dT,U0+dU)を、統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)を偏微分することにより、解析的に求め、グローバルモーションの基準値(P0,Q0,T0,U0)を、統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)を最小にする引数(P0+dP1,Q0+dQ1,T0+dT1,U0+dU1)に更新する。そして、更新後のグローバルモーションの基準値(P0,Q0,T0,U0)を用いた統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)に基づいて、基準画像FBとターゲット画像FTとの位置関係としての、ターゲット画像FTに対するグローバルモーションの値(P1,Q1,T1,U1)を求めるので、少ない計算量で、正確なグローバルモーションの値(P1,Q1,T1,U1)を求めることができる。
即ち、第1の処理として、統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)を求め、第2の処理として、その統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)を最小にする引数(P0+dP1,Q0+dQ1,T0+dT1,U0+dU1)を求め、第3の処理として、グローバルモーションの基準値(P0,Q0,T0,U0)を、統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)を最小にする引数(P0+dP1,Q0+dQ1,T0+dT1,U0+dU1)に更新する、ことを、統計エラー関数fE(P0,Q0,T0,U0)が所定の条件を満たすまで繰り返すので、少ない計算量で、正確なグローバルモーションの値(P1,Q1,T1,U1)を求めることができる。
ここで、第1乃至第3の処理は、繰り返さずに、1回だけ行うようにしてもよい。即ち、グローバルモーションの基準値(P0,Q0,T0,U0)に初期値をセットして求められる統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)を最小にする引数(P0+dP1,Q0+dQ1,T0+dT1,U0+dU1)を求め、グローバルモーションの基準値(P0,Q0,T0,U0)を、統計エラー関数fE(P0+dP,Q0+dQ,T0+dT,U0+dU)を最小にする引数(P0+dP1,Q0+dQ1,T0+dT1,U0+dU1)に更新し、その更新後のグローバルモーションの基準値(P0,Q0,T0,U0)を、ターゲット画像FTに対するグローバルモーションの値(P1,Q1,T1,U1)としてもよい。
なお、上述の例において、ターゲット画像FT上の(i,j)画素が、ターゲット画像FTの周辺部の画素である場合、その(i,j)画素を、グローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)により変換して得られる位置(Xij,Yij)が、基準画像FBの領域外となってしまうことがある。これに対する対処としては、例えば、ターゲット画像FTの周辺部にM画素のマージンをとって、ターゲット画像FTの画素のうちの、M≦i≦W−M−1、かつM≦j≦H−M−1の範囲の画素を、位置関係算出処理の対象とするようにすればよい。
なお、位置関係算出処理を行う基準画像FBまたはターゲット画像FTの中に、動いている物体(動物体の被写体)が撮像されている領域がある場合、この動物体の領域を、グローバルモーションの値を求めるのに用いると、手ブレ(グローバルモーション)とは関係がない動物体の動きの影響を受け、グローバルモーションの値の精度が劣化する。従って、正確な手ブレによるグローバルモーションの値を求めるためには、例えば、動物体の位置(領域)をユーザに指定してもらうなどして、位置関係算出処理の対象から動物体の領域を含むブロックblk(h,k)を除外して、グローバルモーションの値(P,Q,T,U)を求めるようにすればよい。また、ユーザに指定してもらう以外に、コンピュータ51自身が、動物体の位置(領域)を検出するようにしてもよい。
また、上述した例では、グローバルモーションを表す変数として、(P,Q,T,U)の4つの変数を用いたが、回転、平行移動、または拡大縮小のいずれかが発生していない、または、無視できるほど微小である場合には、対応する変数の値を1または0の定数として、実質上のグローバルモーションを表す変数(P,Q,T,U)の数を少なくすることができる。
逆に、ターゲット画像FT上の(i,j)画素の、基準画像FB上の対応する位置(Xij,Yij)に対する位置関係を表すグローバルモーションは、式(36)に示すように、(α,β,γ,δ,T,U)の6個の変数を用いて、さらに一般化して表すこともできる。
なお、以上のような位置関係算出処理は、ビデオカメラにおける手ブレ補正や、デジタルスチルカメラにおいて、高速撮像により複数枚の画像を得て加算するときの位置あわせなどに適用することができる。
また、本実施の形態では、画素エラー関数E(i,j,dxij,dyij)を、引数dxij,dyijそれぞれの最大次数が2次の関数として、式(23)で定義することとしたが、画素エラー関数E(i,j,dxij,dyij)は、引数dxij,dyijそれぞれの最大次数が2次以外の関数として、他の式で定義することが可能である。但し、画素エラー関数E(i,j,dxij,dyij)を、式(23)で定義する場合には、その式(23)における9個の係数C0乃至C8を求めるために、上述したように、9点の整数位置を設定する必要があるが、画素エラー関数E(i,j,dxij,dyij)を他の式で定義する場合には、少なくとも、その式における求めるべき係数の数に等しい数の整数位置を設定する必要がある。
ここで、通常の撮影において生じる手振れの、回転と拡大縮小の成分は、最大でも、例えば、160画素あたり4画素程度である。従って、ブロックblk(h,k)のサイズは、17×17画素(横×縦)(またはそれ以下)とすることができる。
即ち、ターゲット画像FTのブロックblk(h,k)内の(i,j)画素を、グローバルモーションの値(P0+dP,Q0+dQ,T0+dT,U0+dU)によってアフィン変換することにより得られる基準画像FB上の位置は、上述の式(4)で表される(Xij,Yij)である。また、ターゲット画像FTのブロックblk(h,k)内の(i,j)画素を、平行移動のみを行っていると近似した基準画像FB上の位置は、上述の式(8)で表される(Xij,Yij)である。従って、平行移動の近似をしたときの誤差は、式(4)で得られる(Xij,Yij)と式(8)で得られる(Xij,Yij)との差となる。
式(4)と式(8)とは、ターゲット画像FTのブロックblk(h,k)内の位置を表す(i,j)が、その中心位置(Cx(h,k),Cy(h,k))を表しているときに一致し、この場合、平行移動の近似を行うことにより式(8)から得られる基準画像FB上の位置(Xij,Yij)は、式(4)のアフィン変換で得られる基準画像FB上の位置(Xij,Yij)に一致するので、平行移動の近似を行うことにより式(8)から得られる基準画像FB上の位置(Xij,Yij)には、誤差は生じない。
一方、平行移動の近似を行うことにより式(8)から得られる基準画像FB上の位置(Xij,Yij)において最大の誤差が生じるのは、誤差が生じないブロックblk(h,k)の中心位置(Cx(h,k),Cy(h,k))から最も離れた位置(i,j)を、基準画像FB上の位置(Xij,Yij)に変換する場合である。
そして、ブロックblk(h,k)のサイズが、上述したように、17×17画素である場合には、その中心位置(Cx(h,k),Cy(h,k))から最も離れたブロックblk(h,k)内の位置(i,j)は、X方向およびY方向のいずれについても、中心位置(Cx(h,k),Cy(h,k))から8画素分だけ離れた位置である。
回転と拡大縮小の成分は、上述したように、160画素あたり4画素程度であるから、8画素あたりでは、0.2画素程度である。
従って、ブロックblk(h,k)のサイズが、17×17画素である場合に、平行移動の近似を行うことにより式(8)から得られる基準画像FB上の位置(Xij,Yij)の最大の誤差は、たかだか0.2画素分であり、この程度の誤差は、グローバルモーションの値を求めるにあたって要求される精度に影響しない。
なお、本明細書において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
11 グローバルモーション計算処理部, 31 グローバルモーション高精度計算処理部, 51 コンピュータ, 52 デジタルカメラ, 53 インターネット, 71 CPU, 72 メモリ, 81 HDD, 83 ディスク