以下に本発明の実施の形態を説明するが、本発明の構成要件と、発明の詳細な説明に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、発明の詳細な説明に記載されていることを確認するためのものである。従って、発明の詳細な説明中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の側面は、第1のフレーム(例えば、図26のフレームt)の動きベクトルを第2のフレーム(例えば、図26のフレームt+1)に割り付ける画像処理装置(例えば、図4の画像信号記録再生装置1)において前記第1のフレームの着目点(例えば、図24の着目点611)の動きベクトル(例えば、図24の着目ベクトル612)を取得する取得手段(例えば、図23のステップS301の処理を実行する図16の背景ベクトル検出部706)と、前記着目点の動きベクトル上の他の画素(例えば、図24の画素621乃至画素626)の動きベクトルを検出する検出手段(例えば、図23のステップS304の処理を実行する図16の背景ベクトル検出部706)と、前記着目点の動きベクトルと、検出された前記他の画素の動きベクトルとで構成されるパターンを判定する判定手段(例えば、図23のステップS305,S306,S309,S312の処理を実行する図16の背景ベクトル検出部706)と、判定された前記パターンに基づいて、前記着目点の動きベクトルの前記第2のフレームに対する割り付けを禁止する禁止手段(例えば、図23のステップS311の処理を実行する図16の背景ベクトル検出部706)とを備える画像処理装置である。
前記検出手段は、前記着目点の動きベクトルと前記他の画素の動きベクトルとが一致するグループ(例えば、図26のグループG1,G3)と、一致しないグループ(例えば、図26のグループG2)のパターンを検出することができる。
前記検出手段は、前記着目点を基準にして、前記着目点の動きベクトルを含み、前記着目点の動きベクトルと一致する少なくとも1個の動きベクトルからなる第1のグループ(例えば、図26のグループG1)、前記第1のグループの次に位置する、前記着目点の動きベクトルと一致しない少なくとも1個の動きベクトルからなる第2のグループ(例えば、図26のグループG2)、並びに前記第2のグループの次に位置する、前記着目点の動きベクトルと一致する少なくとも1個の動きベクトルからなる第3のグループ(例えば、図26のグループG3)からなるパターンを検出することができる。
また本発明の側面は、第1のフレーム(例えば、図26のフレームt)の動きベクトルを第2のフレーム(例えば、図26のフレームt+1)に割り付ける画像処理方法(例えば、図4の画像信号記録再生装置1の画像処理方法)、プログラム、または記録媒体において、前記第1のフレームの着目点(例えば、図24の着目点611)の動きベクトル(例えば、図24の着目ベクトル612)を取得し(例えば、図23のステップS301)、前記着目点の動きベクトル上の他の画素(例えば、図24の画素621乃至画素626)の動きベクトルを検出し(例えば、図23のステップS304)、前記着目点の動きベクトルと、検出された前記他の画素の動きベクトルとで構成されるパターンを判定し(例えば、図23のステップS305,S306,S309,S312)、判定された前記パターンに基づいて、前記着目点の動きベクトルの前記第2のフレームに対する割り付けを禁止する(例えば、図23のステップS311)ステップを備える画像処理方法、プログラムまたは記録媒体である。
以下、図を参照して本発明の実施の形態について説明する。
図4は、本発明を適用した画像処理装置としての画像信号記録再生装置の構成を示すブロック図である。この画像信号記録再生装置1は、画像信号入力部2、信号処理装置3、並びに画像信号出力部4により構成されている。
画像信号入力部2は、例えばチューナやディスクドライバなどにより構成され、受信した画像信号あるいは記録媒体より再生した画像信号を信号処理装置3に出力する。信号処理装置3は、画像信号入力部2より供給された画像信号のフレーム周波数の変換処理を実行する。信号処理装置3より出力されたフレーム周波数が変換された画像信号は、画像信号出力部4に供給される。画像信号出力部4は、信号処理装置3より入力された画像信号をLCD(Liquid Crystal Display)やCRT(cathode-ray tube)などの表示部に出力し、表示させる他、さらにユーザからの指示に応じて図示せぬ記録媒体に記録する。
図5は、信号処理装置3の構成を示すブロック図である。
なお、信号処理装置3の各機能をハードウェアで実現するか、ソフトウェアで実現するかは問わない。つまり、本明細書の各ブロック図は、ハードウェアのブロック図と考えても、ソフトウェアによる機能ブロック図と考えてもよい。
図5に構成を示す信号処理装置3においては、例えば、フレーム周波数が24Hzのプログレッシブ画像信号(以下、24P信号と称する)の画像が入力され、入力された画像(入力画像)が、フレーム周波数が60Hzのプログレッシブ画像信号(以下、60P信号と称する)の画像に変換されて、出力される。
信号処理装置3に入力された24P信号の入力画像は、フレームメモリ51、ベクトル検出部52、ベクトル割付部54、割付補償部57、および画像補間部58に供給される。フレームメモリ51は、入力画像をフレーム単位で記憶し、出力する(1フレーム分の時間だけ遅延して出力する)。フレームメモリ51は、時刻t+1の入力画像の1つ前の時刻tのフレームを記憶する。フレームメモリ51に記憶される時刻tのフレームは、ベクトル検出部52、ベクトル割付部54、割付補償部57、および画像補間部58に供給される。なお、以下、フレームメモリ51上の時刻tのフレームをフレームtと称し、時刻t+1の入力画像のフレームを、フレームt+1と称する。
ベクトル検出部52は、フレームメモリ51上のフレームtの着目ブロックと、入力画像のフレームt+1の対象ブロックの間で動きベクトルを検出し、検出した動きベクトルを、検出ベクトルメモリ53に記憶する。この2フレーム間の動きベクトルの検出方法には、勾配法またはブロックマッチング法などが用いられる。ベクトル検出部52の構成の詳細は、図12を参照して後述する。検出ベクトルメモリ53は、フレームtにおいて、ベクトル検出部52により検出された動きベクトルを記憶する。
ベクトル割付部54は、24P信号のフレームt上において求められた動きベクトルを、割付ベクトルメモリ55上の、補間する60P信号のフレーム(以下、60P信号のフレームは、24P信号のフレームと区別するため、内挿フレームとも称する)上の画素に割り付け、動きベクトルが割り付けられた画素の割付フラグメモリ56の割付フラグを1(true)に書き換える。ベクトル割付部54の構成の詳細は、図16を参照して後述する。
割付ベクトルメモリ55は、ベクトル割付部54により割り付けられた動きベクトルを、内挿フレームの各画素に対応させて記憶する。割付フラグメモリ56は、内挿フレームの画素毎に、割り付けられる動きベクトルの有無を示す割付フラグを記憶している。例えば、true(1)である割付フラグは、対応する画素に動きベクトルが割り付けられていることを示し、false(0)である割付フラグは、対応する画素に動きベクトルが割り付けられていないことを示す。
割付補償部57は、割付フラグメモリ56の割付フラグを参照し、ベクトル割付部54により動きベクトルが割り付けられなかった着目画素に対して、その着目画素の周辺画素の動きベクトルを補い、割付ベクトルメモリ55の内挿フレーム上に割り付ける。このとき、割付補償部57は、動きベクトルを割り付けた着目画素の割付フラグを1(true)に書き換える。割付補償部57の構成の詳細は、図29を参照して後述する。
画像補間部58は、割付ベクトルメモリ55の内挿フレームに割り付けられた動きベクトルと、フレームtおよび次のフレームt+1の画素値を用いて、内挿フレームの画素値を補間生成する。そして、画像補間部58は、生成された内挿フレームを出力し、その次に、必要に応じて、フレームt+1を出力することにより、60P信号の画像を、後段の画像信号出力部4に出力する。なお、以下においては、画素値を、適宜、輝度値とも称する。
図6は、信号処理装置3における処理の原理を説明する図である。図6の例においては、点線が、信号処理装置3に入力される、時刻t,t+1,およびt+2における24P信号のフレームを表しており、実線が、入力された24P信号から信号処理装置3により、生成される時刻t,t+0.4,t+0.8,t+1.2,t+1.6,およびt+2における60P信号の内挿フレームを表している。
一般に、24P信号を、60P信号に変換するためには、5/2倍のフレームが必要になる。すなわち、2枚の24P信号の画像から5枚の60P信号の画像が生成されなければならない。このとき、生成される60P信号の内挿フレームは、そのフレーム間隔を等しくするために、24P信号上での時間位相が0.0,0.4,0.8,1.2,および1.6となる位置に配置される。この中で、時間位相が0.0である時刻tの1フレームを除く4フレーム(t+0.4,t+0.8,t+1.2,およびt+1.6のフレーム)は、24P信号上には存在しない画像である。したがって、信号処理装置3は、24P信号の画像が入力されると、24P信号の時刻tおよび時刻t+1の2枚のフレームから、4つの内挿フレームを生成する。したがって、信号処理装置3からは、時刻t,t+0.4,t+0.8,t+1.2,およびt+1.6の5枚のフレームからなる60P信号の画像が出力される。
以上のようにして、信号処理装置3は、24P信号の画像から60P信号の画像に、フレーム周波数を変換する処理を実行する。
なお、原理的には、上述したように、24P信号の時刻tおよび時刻t+1の2枚のフレームから、時刻t,t+0.4,t+0.8,t+1.2,およびt+1.6の5枚の60P信号のフレームが新しく生成されるが、実際には、図6の例の場合、24P信号の時刻tおよび時刻t+1の2枚のフレームに基づいて、t,t+0.4,t+0.8の60P信号のフレームが生成され、24P信号の時刻t+1およびt+2の2枚のフレームに基づいて、t+1.2,t+1.6,およびt+2の60P信号のフレームが生成される。
図7は、信号処理装置3の処理をより具体的に説明する図である。図7の例においては、太線矢印は、各状態への遷移を表しており、矢印Tは、状態81乃至85における時間の経過方向を表している。また、状態81乃至85は、信号処理装置3を構成する各部への入出力時の、24P信号の時刻tのフレームt、時刻tの次の時刻t+1のフレームt+1、または、フレームtおよびフレームt+1の間に生成される60P信号の内挿フレームFの状態を概念的に表している。すなわち、実際には、例えば、状態82に示されるような動きベクトルが検出されたフレームがベクトル割付部54に入力される訳ではなく、フレームと動きベクトルは、別々にベクトル割付部54に入力される。
状態81は、ベクトル検出部52に入力される、24P信号のフレームtおよびフレームt+1の状態を表している。状態81のフレームt上の黒点は、フレームt上の画素を表している。ベクトル検出部52は、状態81のフレームt上の画素が、次の時刻のフレームt+1において、どの位置に移動するかを検出し、その動きを、状態82のフレームt上に示されるように、各画素に対応する動きベクトルとして出力する。この2フレーム間の動きベクトルの検出方法には、ブロックマッチング法または勾配法などが用いられる。なお、このとき、画素に複数の動きベクトルが検出された場合、ベクトル検出部52は、各動きベクトルについて、図8を参照して後述する評価値を求め、その評価値に基づいて動きベクトルを選択する。
状態82は、ベクトル割付部54に入力される、フレームtおよびフレームt+1の状態を表している。状態82において、フレームtの各画素の矢印は、ベクトル検出部52により検出された動きベクトルを表している。
ベクトル割付部54は、状態82のフレームtの各画素に対して検出された動きベクトルを、次のフレームt+1まで延長させ、予め設定されている時間位相(例えば、図6のt+0.4)にある内挿フレームF上のどの位置を通過するかを求める。これは、フレームtおよびフレームt+1の間が一定動きであると仮定すると、動きベクトルが内挿フレームFを通過した点が、そのフレームでの画素位置となるためである。したがって、ベクトル割付部54は、この通過する動きベクトルを、状態83の内挿フレームF上の近傍4画素に割り付ける。また、このとき、内挿フレームの画素によっては、動きベクトルが存在しない場合、あるいは、複数の動きベクトルが、割付候補となりうる場合がある。後者のような場合には、ベクトル割付部54は、ベクトル検出部52と同様に、各動きベクトルについての評価値を求め、その評価値に基づいて割り付ける動きベクトルを選択する。
状態83は、割付補償部57に入力される、フレームtおよびフレームt+1、並びに動きベクトルが割り付けられた内挿フレームFの状態を表している。状態83の内挿フレームFにおいては、ベクトル割付部54により動きベクトルが割り付けられている画素と、動きベクトルが割り付けられなかった画素が示されている。
割付補償部57は、状態83の動きベクトルが割り付けられていない画素に対して、その画素の周辺画素に割り付けられている動きベクトルを用いて補う。これは、ある着目画素の近傍領域が同じ動きであるという仮定が成り立つならば、着目画素の周辺画素の動きベクトルと、その着目画素の動きベクトルは似たものであることに基づく処理である。これにより、動きベクトルが割り付けられなかった画素にも、ある程度正確な動きベクトルが与えられ、状態84の内挿フレームF上のすべての画素に動きベクトルが割り付けられる。なお、この場合にも、複数の周辺画素の動きベクトルが候補として存在するため、割付補償部57は、ベクトル割付部54と同様に、各動きベクトルについての評価値を求め、その評価値に基づいて割り付ける動きベクトルを選択する。
状態84は、画像補間部58に入力される、フレームtおよびフレームt+1、並びに、すべての画素に動きベクトルが割り付けられた内挿フレームFの状態を表している。これらのすべての画素に割り付けられた動きベクトルにより、画像補間部58は、内挿フレームF上の画素と、2枚のフレームtおよびフレームt+1の画素の位置関係を決定することができる。したがって、画像補間部58は、内挿フレームF上に割り付けられた動きベクトルと、フレームtおよびフレームt+1の画素値を用いて、状態85の内挿フレームFの黒点に示されるように、内挿フレームF上の画素値を補間生成する。そして、画像補間部58は、生成された内挿フレームを出力し、その次に、必要に応じて、フレームt+1を出力することにより、60P信号の画像を、後段の画像信号出力部4に出力する。
次に、図8を参照して、信号処理装置3において用いられる動きベクトルの評価値を説明する。図7を参照して上述したように、信号処理装置3の各部(ベクトル検出部52、ベクトル割付部54、および割付補償部57)において、後段の処理に最適な動きベクトルが選択される。このとき、信号処理装置3の各部においては、動きベクトルに対する評価値として、2つのフレームの注目するベクトルに対応する分だけずらしたブロック間の相関値を表す差分絶対値和(DFD(Displaced Frame Difference))が用いられる。
図8の例においては、時刻tのフレームt上の画素位置pを中心としたm×nのブロック、および、時刻t+1のフレームt+1上の画素位置pから注目する動きベクトルvのベクトル量分ずらした画素位置p+vを中心としたm×nのブロックの2つのブロックが示されている。これら2つのブロック間において求められる差分絶対値和DFDt(p)は、次の式(1)で表される。
ここで、Ft(p)は、時刻tにおける画素位置pの輝度値を表しており、m×nは、差分絶対値和を求めるためのDFD演算範囲(ブロック)を表している。この差分絶対値和は、2つのフレームにおけるDFD演算範囲(ブロック)間の相関値を表しているため、一般的には、この差分絶対値和が小さいほどフレーム間のブロックの波形が一致しており、差分絶対値和が小さいほど、動きベクトルvの信頼度が高いと判定される。これにより、この差分絶対値和は、複数の候補の中から、最も確からしい動きベクトルを選ぶ場合などに用いられる。
したがって、以降、信号処理装置3の各部(ベクトル検出部52、ベクトル割付部54、および割付補償部57)においては、動きベクトルが選択される場合の評価値として、特に言及しない場合には、差分絶対値和(以下、評価値DFDと称する)が用いられることとする。
次に、図9のフローチャートを参照して、信号処理装置3のフレーム周波数を変換する処理を説明する。
ステップS1において、ベクトル検出部52は、フレームの画素値を入力する。すなわち、時刻t+1の入力画像のフレームt+1と、フレームメモリ51に記憶されている入力画像の1つ前の時刻tのフレームtの画素値が入力される。なお、このとき、ベクトル割付部54、割付補償部57および画像補間部58も、時刻t+1の入力画像のフレームt+1と、フレームメモリ51の入力画像の1つ前の時刻tのフレームtの画素値を入力する。
ステップS2において、ベクトル検出部52は、動きベクトル検出処理を実行する。すなわち、ベクトル検出部52は、フレームメモリ51上のフレームtの着目ブロックと、入力画像である次のフレームt+1の対象ブロックの間で動きベクトルを検出し、検出した動きベクトルを、検出ベクトルメモリ53に記憶する。この2フレーム間の動きベクトルの検出方法には、勾配法またはブロックマッチング法などが用いられる。また、動きベクトルの候補が複数ある場合には、各動きベクトルに対して、評価値DFDが求められ、求められた評価値DFDに基づいた信頼度の高い動きベクトルが検出される。すなわち、この場合、動きベクトルを検出する着目ブロックにおいて、最も確からしい動きベクトルが選択され、検出される。ステップS2における、動きベクトル検出処理の詳細は、図15を参照して後述する。
ステップS3において、ベクトル割付部54は、ベクトル割付処理を実行する。すなわち、ベクトル割付部54は、ステップS3において、フレームt上において求められた動きベクトルを、割付ベクトルメモリ55上の、補間する内挿フレーム上の着目画素に割り付け、動きベクトルが割り付けられた画素の割付フラグメモリ56の割付フラグを1(true)に書き換える。例えば、trueである割付フラグは、対応する画素に動きベクトルが割り付けられていることを示し、falseである割付フラグは、対応する画素に動きベクトルが割り付けられていないことを示す。なお、各画素において、動きベクトルの候補が複数ある場合には、各動きベクトルに対して、評価値DFDが求められ、求められた評価値DFDに基づいた信頼度の高い動きベクトルが割り付けられる。すなわち、この場合、動きベクトルを割り付ける着目画素において、最も確からしい動きベクトルが選択され、割り付けられる。ステップS3における、ベクトル割付処理の詳細は、図22を参照して後述する。
ステップS4において、割付補償部57は、割付補償処理を実行する。すなわち、割付補償部57は、ステップS4において、割付フラグメモリ56の割付フラグを参照し、ベクトル割付部54により動きベクトルが割り付けられなかった着目画素に対して、その着目画素の周辺画素の動きベクトルを補い、割付ベクトルメモリ55の内挿フレーム上に割り付ける。このとき、割付補償部57は、動きベクトルを補い、割付けた着目画素の割付フラグを1(true)に書き換える。なお、周辺画素の動きベクトルが複数ある場合には、各動きベクトルに対して、評価値DFDが求められ、求められた評価値DFDに基づいた、信頼度の高い動きベクトルが割り付けられる。すなわち、この場合、動きベクトルを割り付ける着目画素において、最も確からしい動きベクトルが選択され、割り付けられる。ステップS54における、割付補償処理の詳細は、図41を参照して後述する。
ステップS5において、画像補間部58は、画像補間処理を実行する。すなわち、画像補間部58は、ステップS5において、割付ベクトルメモリ55の内挿フレームに割り付けられた動きベクトルと、フレームtおよびフレームt+1の画素値を用いて、内挿フレームの画素値を補間生成する。ステップS5における、画像補間処理の詳細は、図11を参照して後述する。画像補間部58は、ステップS6において、60P信号の画像を出力し(生成された内挿フレームを出力し)、その次に、必要に応じて、フレームt+1を出力することにより、60P信号の画像を、後段の画像信号出力部4に出力する。
ステップS7において、ベクトル検出部52は、すべてのフレームの処理が終了したかを判断し、すべてのフレームの処理がまだ終了していないと判断した場合、処理はステップS1に戻り、それ以降の処理が繰り返される。一方、ベクトル検出部52は、ステップS7において、すべてのフレームの処理が終了したと判断した場合、フレーム周波数を変換する処理を終了する。
以上のように、信号処理装置3は、24P信号の入力画像のフレームから動きベクトルを検出し、検出した動きベクトルを、60P信号のフレーム上の画素に割付け、割付けられた動きベクトルに基づいて、60P信号のフレーム上の画素値を生成する。このとき、信号処理装置3は、各処理において、評価値DFD(差分絶対値和)に基づく、より信頼度の高い動きベクトルを選択する。したがって、信号処理装置3においては、動きが破綻することなどが抑制され、より精度のよい画像を生成することができる。
次に、画像補間部58の構成の詳細について説明する。
図10は、画像補間部58の構成を示すブロック図である。図10に構成を示す画像補間部58は、割付ベクトルメモリ55の内挿フレームに割り付けられた動きベクトルと、フレームtおよびフレームt+1の画素値を用いて、内挿フレームの画素値を補間生成し、60P信号の画像を出力する処理を行う。
図10の例において、時刻tの画像のフレームtは、空間フィルタ92−1に入力され、時刻t+1の画像のフレームt+1は、空間フィルタ92−2およびバッファ95に入力される。
補間制御部91は、割付ベクトルメモリ55の内挿フレームの画素を選択し、選択した画素に割り付けられている動きベクトルに基づいて、内挿フレーム上の画素と、2枚のフレームtおよびフレームt+1の画素との位置関係(空間シフト量)をそれぞれ求める。すなわち、補間制御部91は、内挿フレームの画素を基準に、その動きベクトルで対応付けられるフレームt上の位置と、内挿フレームの画素に対応するフレームt上の画素の位置から、それらの空間シフト量を求め、求めた空間シフト量を空間フィルタ92−1に供給する。同様に、補間制御部91は、内挿フレームの画素を基準に、その動きベクトルで対応付けられるフレームt+1上の位置と、内挿フレームの画素に対応するフレームt+1上の画素の位置から、それらの空間シフト量を求め、求めた空間シフト量を空間フィルタ92−2に供給する。
また、補間制御部91は、予め設定されている内挿フレームの時間位相(時刻)に基づいて、フレームtとフレームt+1の間における補間重みを求め、求めた補間重みを、乗算器93−1および93−2に設定する。例えば、内挿フレームの時刻が、フレームt+1の時刻t+1から「k」離れた時刻で、かつ、フレームtの時刻tから「1−k」離れた時刻である場合(すなわち、内挿フレームが時刻tと時刻t+1を「1−k」:「k」に内分する時刻に生成される場合)、補間制御部91は、乗算器93−1に「1−k」の補間重みを設定し、乗算器93−2に「k」の補間重みを設定する。
空間フィルタ92−1および92−2は、例えば、キュービックフィルタなどにより構成される。空間フィルタ92−1は、入力されるフレームt上の画素の画素値と、補間制御部91から供給される空間シフト量に基づいて、内挿フレームの画素に対応する、フレームt上の画素値を求め、求めた画素値を乗算器93−1に出力する。空間フィルタ92−2は、入力されるフレームt+1上の画素の画素値と、補間制御部91から供給される空間シフト量に基づいて、内挿フレームの画素に対応する、フレームt+1上の画素値を求め、求めた画素値を乗算器93−2に出力する。
なお、内挿フレームの画素の位置が、フレームtまたはフレームt+1上の画素の位置と一致しない場合(すなわち、内挿フレームの画素の位置が、フレームtまたはフレームt+1において画素以下成分である(画素と画素の間の位置である)場合)、空間フィルタ92−1および92−2は、フレームtまたはフレームt+1における内挿フレームの画素の位置の周辺4画素の画素値を用いて、周辺4画素の距離の逆比の和を求めることにより、内挿フレームの画素に対応するフレーム上の画素値を求める。すなわち、画素以下位置の画素値は、周辺4画素との距離を基にした線形補間で値が求められる(その詳細は、図17を参照して後述する)。
乗算器93−1は、空間フィルタ92−1から入力されるフレームt上の画素値に、補間制御部91により設定された補間重み「1−k」を乗算し、重み付けされた画素値を、加算器94に出力する。乗算器93−2は、空間フィルタ92−2から入力されるフレームt+1上の画素値に、補間制御部91により設定された補間重み「k」を乗算し、重み付けされた画素値を、加算器94に出力する。
加算器94は、乗算器93−1から入力される画素値と、乗算器93−2から入力される画素値を加算することにより、内挿フレームの画素の画素値を生成し、生成された内挿フレームの画素値を、バッファ95に出力する。バッファ95は、入力されたフレームt+1をバッファしている。バッファ95は、生成された内挿フレームを出力し、その次に、予め設定されている60Pフレームの時間位相(時刻)に基づいて、必要に応じて、バッファしているフレームt+1を出力することにより、60P信号の画像を、後段に出力する。
以上のように構成される画像補間部58の画像補間処理の詳細を、図11のフローチャートを参照して説明する。
補間制御部91は、ステップS51において、処理する内挿フレームの補間重みを求める。すなわち、処理する内挿フレームの時間位相に基づいて、フレームtとフレームt+1の間における内挿フレームの補間重み(例えば、「k」および「1−k」)が求められ、求められた補間重みが、乗算器93−1および93−2にそれぞれ設定される。補間制御部91は、ステップS52において、割付ベクトルメモリ55の内挿フレーム上の画素を選択する。なお、内挿フレーム上の画素は、フレームの左上の画素からラスタスキャン順に1個ずつ選択される。
補間制御部91は、ステップS53において、選択された画素の動きベクトルに基づいて、空間シフト量を求める。すなわち、ステップS52で選択された画素に割り付けられている動きベクトルに基づいて、内挿フレーム上の画素と、2枚のフレームtおよびフレームt+1の画素との位置関係(空間シフト量)がそれぞれ求められ、求められた空間シフト量が、それぞれ空間フィルタ92−1および92−2に供給される。具体的には、補間制御部91は、ステップS53において、内挿フレームの画素を基準に、その動きベクトルで対応付けられるフレームt上の位置と、内挿フレームの画素に対応するフレームt上の画素の位置から、それらの空間シフト量を求め、求めた空間シフト量を空間フィルタ92−1に供給する。同様に、補間制御部91は、内挿フレームの画素を基準に、その動きベクトルで対応付けられるフレームt+1上の位置と、内挿フレームの画素に対応するフレームt+1上の画素の位置から、それらの空間シフト量を求め、求めた空間シフト量を空間フィルタ92−2に供給する。
時刻tの画像のフレームtの画素値は、空間フィルタ92−1に入力され、時刻t+1の画像のフレームt+1の画素値は、空間フィルタ92−2に入力されている。ステップS54において、空間フィルタ92−1および92−2は、内挿フレームの画素に対応する各フレーム上の画素値を求める。すなわち、入力されるフレームtおよびt+1上の画素の画素値と、補間制御部91から供給される空間シフト量に基づいて、内挿フレームの画素に対応する、各フレーム上の画素値が求められ、求められた画素値が乗算器93−1および93−2にそれぞれ出力される。
乗算器93−1および93−2は、ステップS55において、画素値に重み付けをする。すなわち、空間フィルタ92−1または92−2から入力される各フレーム上の画素値に、補間制御部91により設定された補間重みが重み付けされ、重み付けされた画素値が、加算器94に出力される。具体的には、乗算器93−1は、空間フィルタ92−1から入力されるフレームt上の画素値に、補間制御部91により設定された補間重み「1−k」を乗算し、重み付けされた画素値を、加算器94に出力する。乗算器93−2は、空間フィルタ92−2から入力されるフレームt+1上の画素値に、補間制御部91により設定された補間重み「k」を乗算し、重み付けされた画素値を、加算器94に出力する。
加算器94は、ステップS56において、選択された画素の画素値を生成する。すなわち、乗算器93−1により重み付けされた画素値と、乗算器93−2により重み付けされた画素値を加算することにより、内挿フレームの画素の画素値が生成され、生成された画素値が、バッファ95に出力される。補間制御部91は、ステップS57において、内挿フレーム上のすべての画素についての処理が終了したかを判断し、内挿フレーム上のすべての画素についての処理がまだ終了していないと判断した場合、処理はステップS52に戻り、それ以降の処理が繰り返される。補間制御部91は、ステップS57において、内挿フレーム上のすべての画素についての処理が終了したと判断した場合、画像補間処理を終了する。
以上のように、内挿フレームに割り付けられた動きベクトルに基づいて、内挿フレームの画素値が生成され、上述した図9のステップS6において、バッファ95により、内挿フレームが出力され、その次に、必要に応じて、フレームt+1が出力されることにより、60P信号の画像が、後段に出力される。したがって、内挿フレームの画素に、最も確からしい動きベクトルが割り付くので、精度のよい内挿フレームを生成することができる。
次に、ベクトル検出部52の構成の詳細について説明する。
図12は、ベクトル検出部52の構成を示すブロック図である。図12に構成を示すベクトル検出部52は、入力される時刻tの画像のフレームtと、時刻t+1の画像のフレームt+1を用いて、フレームt上の動きベクトルを検出する。この動きベクトルを検出する処理は、複数の画素からなる所定のブロック毎に実行される。
初期ベクトル選択部101は、所定のブロック毎に、過去の動きベクトルの検出結果から求められる信頼度が高い動きベクトルを、勾配法に用いられる初期値となる初期ベクトルV0として、反復勾配法演算部103に出力する。具体的には、初期ベクトル選択部101は、検出ベクトルメモリ53に記憶されてい過去に求められた周辺のブロックの動きベクトルや、シフト初期ベクトルメモリ107に記憶されているシフト初期ベクトルを、初期ベクトルの候補ベクトルとして選択する。そして、初期ベクトル選択部101は、フレームtとフレームt+1を用いて、候補ベクトルの評価値DFDを求め、候補ベクトルの中から、求められた評価値DFDに基づく、最も信頼度が高いものを選択し、初期ベクトルV0として出力する。
プリフィルタ102−1および102−2は、ローパスフィルタやガウシアンフィルタにより構成され、それぞれ、入力される画像のフレームtおよびフレームt+1のノイズ成分を除去し、反復勾配法演算部103に出力する。
反復勾配法演算部103は、初期ベクトル選択部101から入力された初期ベクトルV0と、プリフィルタ102−1および102−2を介して入力されるフレームtおよびフレームt+1を用いて、所定のブロック毎に、勾配法により、動きベクトルVnを算出する。反復勾配法演算部103は、初期ベクトルV0と、算出された動きベクトルVnをベクトル評価部104に出力する。また、反復勾配法演算部103は、ベクトル評価部104による動きベクトルの評価結果に基づいて、勾配法の演算を繰り返し行い、動きベクトルVnを算出する。
ベクトル評価部104は、反復勾配法演算部103からの動きベクトルVn−1(または初期ベクトルV0)と、動きベクトルVnの評価値DFDを求め、求められた評価値DFDに基づいて、反復勾配法演算部103を制御し、勾配法の演算を繰り返し実行させ、最終的に、評価値DFDに基づく、信頼性の高いものを選択し、動きベクトルVとして、検出ベクトルメモリ53に記憶する。このとき、ベクトル評価部104は、動きベクトルVとともに、その動きベクトルVに対して求められた評価値DFDを、シフト初期ベクトル割付部105に供給する。
シフト初期ベクトル割付部105は、ベクトル評価部104より動きベクトルVおよびその評価値DFDが供給されると、次のフレーム上の着目ブロックを通過する動きベクトルを、その着目ブロックにシフトさせた、シフト初期ベクトルとして設定する。換言すると、シフト初期ベクトル割付部105は、動きベクトルVの終点のブロックと同じ位置の次のフレーム上の着目ブロックを始点とした、動きベクトルVと同じ大きさで同じ向きの動きベクトルを、シフト初期ベクトルとして設定する。そして、シフト初期ベクトル割付部105は、設定したシフト初期ベクトルを、着目ブロックに対応させて、シフト初期ベクトルメモリ107に割り付ける。
具体的には、シフト初期ベクトル割付部105は、シフト初期ベクトルとして割り付けられた動きベクトルVの評価値DFDを、着目ブロックに対応させて、評価値メモリ106に記憶させておき、同じ着目ブロックを通過する(すなわち、着目ブロックと同じ位置の過去のフレームのブロックを終点とする)他の動きベクトルVの評価値DFDと比較する。そして、シフト初期ベクトル割付部105は、評価値DFDに基づく、信頼度が高いとされた動きベクトルVを、着目ブロックにシフトさせ、着目ブロックのシフト初期ベクトルとして、シフト初期ベクトルメモリ107に割り付ける。
次に、ベクトル検出部52において用いられる勾配法の原理について説明する。まず、動画像中において、水平、垂直、時間軸を用いた座標(x,y,t)で表される画素の輝度値をg(x,y,t)とする。ここで、着目画素(x0,y0,t0)が、微小時間中に、(dx,dy,dt)だけ変位したとき、水平、垂直、時間軸の勾配(差分差)を、それぞれgx(x0,y0,t0),gy(x0,y0,t0),gt(x0,y0,t0)と表すと、変位後の画素の輝度値は、Taylor展開近似を用いて、次の式(2)で表される。
g(x0+dx,y0+dy,t0+dt)
≒ g(x0,y0,t0)+gx(x0,y0,t0)dx
+ gy(x0,y0,t0)dy+gt(x0,y0,t0)dt
・・・(2)
ここで、動画像中のある着目画素が1フレーム後に水平vx,垂直vyだけ移動した場合(以降、(vx,vy)と表す)、その画素の輝度値は、次の式(3)で表される。
g(x0+vx,y0+vy,t0+1) = g(x0,y0,t0)
・・・(3)
式(2)を式(3)に代入すると、次の式(4)で表される。
gx(x0,y0,t0)vx+gy(x0,y0,t0)vy
+gt(x0,y0,t0) = 0
・・・(4)
式(4)は、vx,vyの2変数の式であるので、着目1画素に対する単独の式では、その解を求めることができない。そこで、次に説明するように、着目画素の周辺領域であるブロックを1つの処理単位として考え、ブロック(周辺領域)内の全画素が同じ動き(vx,vy)をすると仮定し、各画素について同様の式を立てる。仮定が前提となるが、2変数に対して周辺画素の個数の式が得られる。したがって、それらの式を連立させ、ブロック内全画素の動き補償フレーム差分の自乗和が最小になるような(vx,vy)を求める。
画素(x,y,t)が1フレーム間に(vx,vy)だけ移動したとき、その動き補償フレーム間差分dは、次の式(5)で表される。
d = g(x+vx,y+vy,t+1)−g(x,y,t)
= Δxvx+Δyvy+Δt
・・・(5)
式(5)において、Δx=gx(x,y,t)であり、水平方向の勾配を表し、Δy=gy(x,y,t)であり、垂直方向の勾配を表し、Δt=gt(x,y,t)であり、時間方向の勾配を表す。これらを用いて、動き補償フレーム間差分の自乗和をEとすると、式(6)で表される。
E = Σd2
= Σ(Δx2vx2+Δy2vy2+2ΔxΔyvxvy
+2ΔxΔtvx+2ΔyΔtvy+Δt2)
=vx2ΣΔx2+vy2ΣΔy2+2vxvyΣΔxΔy
+2vxΣΔxΔt+2vyΣΔyΔt+ΣΔt2
・・・(6)
ここで、Eが最小となる(vx,vy)は、各変数における偏微分値が0になるとき、すなわち、δE/δvx=δE/δvy=0の条件が成立するときなので、式(6)から、次の式(7)および式(8)となる。
vxΣΔx2+vyΣΔxΔy+ΣΔxΔt = 0
・・・(7)
vyΣΔy2+vxΣΔxΔy+ΣΔyΔt = 0
・・・(8)
これらの式(7)および式(8)から、求めたい動きである(vx,vy)は、次の式(9)を演算することにより求めることができる。
以上の勾配法の原理を、図13を参照して、具体的に説明する。図13の例において、矢印Xは、水平方向を示しており、矢印Yは、垂直方向を示している。また、矢印Tは、図中、右奥の時刻tのフレームtから、左手前の時刻t+1のフレームt+1への時間の経過方向を示している。なお、図13の例においては、各フレームは、着目画素pの周辺領域(ブロック)として、勾配法演算に用いられる8画素×8画素の領域のみ示されている。
フレームtにおいて、左上の画素から下に5番目、右に5番目の画素である着目画素pの動きベクトルV(vx,vy)を、上述した勾配法を用いて求める場合、動きベクトルV(vx,vy)は、着目画素pのx,y方向のそれぞれについて求められる隣接画素pxおよびpyとの輝度の差分差(すなわち、勾配)ΔxおよびΔy、フレームt+1において求められる着目画素pの同位相に位置する画素qとの時間方向の輝度の差分差(勾配)Δtを、着目画素pの周辺領域(8画素×8画素)のすべての画素について求め、それらの差分差を、式(9)を用いて演算することにより、求めることができる。
すなわち、勾配法とは、2フレーム間において、勾配Δx,Δy,およびΔtを求め、求められたΔx,Δy,およびΔtから、差分自乗和を用いて、統計的に、動きベクトルV(vx,vy)を算出するものである。
一般的に、このような勾配法を用いた動きベクトル検出方法においては、微小動きに対して精度の高い結果が得られる。しかしながら、実際の動画像の中で動きを求めようとするとする場合、この勾配法は、その動き量が大きすぎるため実用的とはいえない。これに対応して、この勾配法を複数回反復する方法が考えられる。勾配法を反復して実行することにより、各演算で求められる動き量が収束するため、徐々に正しい動きが求められる。
しかしながら、ただ、勾配法を反復するだけでは、リアルタイム処理を行おうとした場合、演算時間の面から実用的ではない。そこで、ベクトル検出部52においては、過去フレームと現在フレームでの周辺画素の動きに基づいて求められる初期ベクトルを、初期値として用いることで、勾配法の繰り返し回数を軽減している。すなわち、動きの起点となる着目画素から、初期ベクトルが指す先へオフセットを予め加えることで大まかな動きを算出し、オフセットが加えられたその位置から勾配法を用いた演算を行うようにすれば、画素以下動きを含めた微調整を行うことができる。これにより、演算時間を増大させることなく、精度のよい動きベクトルを検出することができる。
図14は、初期ベクトルを用いて実行される反復勾配法について具体的に説明する図である。図14の例においては、矢印Tは、図中、左手前の時刻tのフレームtから、右奥の時刻t+1のフレームt+1への時間の経過を示している。なお、各画素p,q0,q1,q2,およびq3を中心としたブロックは、その画素の、勾配法演算に用いられる周辺領域(ブロック)を表している。
図14の例の場合、フレームtにおける着目画素pに対して、フレームt+1においては、着目画素pの同位相に位置する画素q0ではなく、予め求めておいた初期ベクトルv0をオフセット(移動)して計算した位置(画素)q1を開始点として1回目の勾配法演算が行われ、その結果、動きベクトルv1が得られる。
次に、画素q0からv0+v1をオフセットして計算した位置(画素)q2を開始点として、2回目の勾配法演算が行われ、その結果、動きベクトルv2が得られる。これにより、最終的に動きベクトルVは、式(10)として求められる。
V = v0+v1+v2
・・・(10)
以上のようにして、初期ベクトルを用いて、反復勾配法の演算を実行することにより、演算時間を短縮させつつ、精度の高い動きベクトルを求めることができる。
次に、図15のフローチャートを参照して、動きベクトル検出処理の詳細について説明する。ベクトル検出部52には、入力される時刻tの画像のフレームtと、時刻t+1の画像のフレームt+1が入力される。
初期ベクトル選択部101は、ステップS101において、着目ブロックを選択する。すなわち、フレームt上の処理の対象となる1つのブロックが、着目ブロックとして選択される。なお、フレーム上においては、左上のブロックからラスタスキャン順に処理が実行される。
ステップS102において、初期ベクトル選択部101は、初期ベクトル選択処理を実行する。初期ベクトル選択部101は、所定のブロック毎に、過去の動きベクトルの検出結果から、信頼度が高い動きベクトルを選択し、選択した動きベクトルを、勾配法に用いられる初期値となる初期ベクトルV0として、反復勾配法演算部103に出力する。
すなわち、初期ベクトル選択部101は、過去の勾配法演算評価処理(後述するステップS103)において求められ、検出ベクトルメモリ53に記憶された周辺ブロックの動きベクトルや、過去のシフト初期ベクトル割付処理(後述するステップS104)においてシフト初期ベクトルメモリ107に記憶されたシフト初期ベクトルを、初期ベクトルの候補ベクトルとして選択する。そして、初期ベクトル選択部101は、フレームtとフレームt+1を用いて、候補ベクトルの評価値DFDを求め、候補ベクトルの中から、求められた評価値DFDに基づいた信頼度が高いものを選択し、選択された候補ベクトルを、初期ベクトルV0として出力する。
ステップS103において、反復勾配法演算部103およびベクトル評価部104は、反復勾配法演算評価処理(なお、反復勾配法演算処理とも称する)を実行する。具体的には、ステップS103において、反復勾配法演算部103は、初期ベクトル選択部101から入力された初期ベクトルV0と、プリフィルタ102−1および102−2を介して入力されるフレームtおよびフレームt+1を用いて、ベクトル評価部104による動きベクトルの評価結果に基づいて、勾配法の演算を繰り返し行い、動きベクトルVnを算出する。また、ベクトル評価部104は、反復勾配法演算部103からの動きベクトルVn−1と、動きベクトルVnの評価値DFDを求め、求められた評価値DFDに基づく、最も信頼性の高いものを選択し、動きベクトルVとして、検出ベクトルメモリ53に記憶する。このとき、ベクトル評価部104は、動きベクトルVとともに、その動きベクトルVに対して求めた評価値DFDを、シフト初期ベクトル割付部105に供給する。
ステップS104において、シフト初期ベクトル割付部105は、シフト初期ベクトル割付処理を実行する。シフト初期ベクトル割付部105は、ベクトル評価部104より動きベクトルVおよびその評価値DFDが供給されると、ステップS104において、次のフレーム上の着目ブロックを通過する動きベクトルを、その着目ブロックにシフトさせた、シフト初期ベクトルとして設定する。すなわち、換言すると、動きベクトルVの終点のブロックと同じ位置の次のフレーム上の着目ブロックを始点とした、動きベクトルVと同じ大きさで同じ向きの動きベクトルが、シフト初期ベクトルとして設定される。そして、シフト初期ベクトル割付部105は、設定したシフト初期ベクトルを、着目ブロックに対応させて、シフト初期ベクトルメモリ107に割り付ける。
なお、具体的には、シフト初期ベクトル割付部105は、シフト初期ベクトルとして割り付けられた動きベクトルVの評価値DFDを、着目ブロックに対応させて、評価値メモリ106に記憶させておき、同じ着目ブロックを通過する(すなわち、着目ブロックと同じ位置の過去のフレームのブロックを終点とする)他の動きベクトルVの評価値DFDと比較し、評価値DFDに基づく、信頼度が高いとされた動きベクトルVを、そのブロックにシフトさせてシフト初期ベクトルと設定し、シフトさせたブロックに対応させて、シフト初期ベクトルメモリ107に割り付ける。
ステップS105において、初期ベクトル選択部101は、フレームtにおいて、すべてのブロックの処理が終了したか否かを判断し、すべてのブロックの処理が終了していないと判断した場合、処理はステップS101に戻り、それ以降の処理が繰り返される。また、ステップS105において、初期ベクトル選択部101は、フレームtにおいて、すべてのブロックの処理が終了したと判断した場合、すなわち、フレームt上のすべてのブロックにおいて、動きベクトルVが検出されたと判断し、動きベクトル検出処理を終了する。
以上のように、過去に検出された動きベクトルから初期ベクトルが選択され、選択された初期ベクトルに基づいて、反復勾配法の演算が用いられて、繰り返し動きベクトルが算出され、算出された動きベクトルの中から、評価値DFDに基づく、信頼度が高い(すなわち、最も確からしい)動きベクトルが検出される。この結果、検出ベクトルメモリ53に、フレームt上のすべてのブロックに対応する動きベクトルVが記憶される。
次に、ベクトル割付部54の構成の詳細について説明する。
図16は、ベクトル割付部54の構成を示すブロック図である。図16に構成を示すベクトル割付部54は、24P信号の入力される時刻tの画像のフレームtと、時刻t+1の画像のフレームt+1を用いて、フレームt上において検出された動きベクトルを、割付ベクトルメモリ55上の、補間する60P信号の内挿フレーム上の画素に割り付ける処理を行う。
図16の例において、時刻tの画像のフレームtと、時刻t+1の画像のフレームt+1は、画素情報演算部701、評価値演算部702、および着目画素差分演算部703に入力される。
画素情報演算部701は、検出ベクトルメモリ53のフレームt上の画素に検出された動きベクトルであって、背景ベクトル検出部706により検出された背景ベクトルを除く動きベクトルを、左上の画素からラスタスキャン順に取得し、取得した動きベクトルを、次の時刻のフレームt+1方向に延ばし、延ばした動きベクトルと、内挿フレームとの交点を算出する。そして、画素情報演算部701は、算出された動きベクトルと内挿フレームとの交点から、内挿フレーム上において、その動きベクトルの割付対象となる画素(以下、割付対象画素と称する)を設定し、動きベクトルおよび割付対象画素の位置の情報を、ベクトル選択部705に出力する。また、画像情報演算部701は、割付対象画素と、動きベクトルで対応付けられるフレームtの位置Pおよびフレームt+1上の位置Qを算出し、算出されたフレームtおよびフレームt+1上の位置情報を、評価値演算部702、および着目画素差分演算部703に出力する。
評価値演算部702は、画素情報演算部701から、割付対象画素と、動きベクトルで対応付けられるフレームtおよびフレームt+1上の位置情報を入力すると、フレームtの位置Pおよびフレームt+1の位置Qの評価値DFDを演算するため、位置Pおよび位置Qを中心とした一定範囲のDFD演算範囲(m×n)をそれぞれ設定し、それらのDFD演算範囲が画枠内にあるか否かを判断する。評価値演算部702は、DFD演算範囲が画枠内にあると判断した場合、このDFD演算範囲を用いて演算することにより、動きベクトルに対する割付対象画素の評価値DFDを求め、求めた評価値DFDを、ベクトル評価部704に出力する。
着目画素差分演算部703は、画素情報演算部701から、割付対象画素と、動きベクトルで対応付けられるフレームtおよびフレームt+1上の位置情報を入力すると、フレームtの位置Pおよびフレームt+1の位置Qを用いて、割付対象画素に対する輝度差分絶対値を求め、求めた輝度差分絶対値を、ベクトル評価部704に出力する。
ベクトル評価部704は、画素差分判断部711および評価値判断部712により構成される。画素差分判断部711は、着目画素差分演算部703から入力された割付対象画素に対する輝度差分絶対値が所定のしきい値よりも小さいか否かを判断する。評価値判断部712は、画素差分判断部711により着目画素差分演算部703から入力された割付対象画素に対する輝度差分絶対値が所定のしきい値よりも小さいと判断された場合に、評価値演算部702から入力された割付対象画素の評価値DFDが、ベクトル選択部705が有するDFDテーブルの最小評価値より小さいか否かを判断する。そして、評価値判断部712は、割付対象画素の評価値DFDが、DFDテーブルの最小評価値より小さいと判断した場合に、割付対象画素が対応する動きベクトルの信頼度が高いと判断し、ベクトル選択部705に、割付対象画素の評価値DFDを出力する。
ベクトル選択部705は、内挿フレーム上の各画素における最小評価値を保持するDFDテーブルを有しており、内挿フレーム上の各画素に対して、0ベクトルを割り付けた場合の評価値DFD0を、内挿フレーム上の各画素における最小評価値としてDFDテーブルに予め保持している。ベクトル選択部705は、ベクトル評価部704からの割付対象画素の評価値DFDを入力すると、画素情報演算部701からの割付対象画素の位置の情報に基づいて、割付フラグメモリ56のフラグを1(true)に書き換え、割付対象画素のDFDテーブルの最小評価値を、その割付対象画素の評価値DFDに書き換える。また、ベクトル選択部705は、画素情報演算部701からの割付対象画素の位置の情報に基づいて、割付ベクトルメモリ55の割付対象画素に、画素情報演算部701からの動きベクトルを割り付ける。
背景ベクトル検出部706は、検出ベクトルメモリ53に記憶されている動きベクトルのうち、貫き劣化の発生の原因となる背景の動きベクトル(背景ベクトル)を検出し、その動きベクトルにフラグを設定する。ベクトル選択部705はフラグが設定されている場合、その動きベクトルの割り付けを禁止する。背景ベクトル検出部706の処理の詳細は、図23のフローチャートを参照して後述する。
次に、動きベクトルの画素以下精度を説明する。上述した式(1)で表されるDFD評価の演算においては、フレームtの画素位置pをベクトルv量分ずらした先のフレームt+1上の位相p+vは、実際には、24p信号のフレームt+1上の画素位置と一致しない場合が多く、その場合の輝度値は定義されていない。したがって、画素以下精度を有する動きベクトルvに対する評価値DFDの演算を行うためには、画素以下の位相における輝度値を何らかの方法で生成しなければならない。
これに対応して、フレームtの画素位置pをベクトルv量分ずらした先のフレームt+1上の位相p+vに最も近い画素の輝度値をそのまま用いる方法がある。しかしながら、この方法では、評価する動きベクトルの画素以下成分を丸めてしまうため、動きベクトルの画素以下成分を捨てていることになり、これにより求められた評価値DFDの信頼度は、低くなってしまう。
そこで、本発明の実施の形態においては、周辺4画素の輝度値による4点補間処理を用いている。図17は、本発明の4点補間処理の概念を示す図である。図17においては、矢印Xが、フレームt+1における水平方向を示しており、矢印Yが、フレームt+1における垂直方向を示している。このフレームt+1において、白丸は、フレームt+1上の画素位置を表しており、黒点は、画素以下の位置を表している。また、フレームt+1上における最左上の黒点p+vとその周辺4画素は、ウインドウEに拡大して示されている。ウインドウEにおいて、白丸内のアルファベットは、周辺4画素の輝度値を示している。
このフレームt+1における最左上の黒点p+vが、フレームtの画素位置pをベクトルv量分ずらした先の位相p+vとすると、位相p+vの輝度値Ft+1(p+v)は、位相p+vの水平方向の画素以下成分αおよび垂直方向の画素以下成分β、並びに、位相p+vの周辺4画素の輝度値L0乃至L3を用いて、周辺4画素の距離の逆比の和で求められる。すなわち、輝度値Ft+1(p+v)は、次の式(11)で表される。
Ft+1(p+v) = (1―α)(1−β)L0+α(1−β)L1
+(1−α)βL2+αβL3 ・・・(11)
以上のように、4点補間処理により求められる輝度値Ft+1(p+v)を用いて、評価値DFDの演算を行うことにより、ハードウェア実装上のコストを引き上げることなく、評価値DFDの信頼度の低下を抑制することができる。なお、以下においては、ベクトル割付の際の評価値DFDや輝度差分絶対値などの演算において、この4点補間を適用した例を説明するが、もちろん、上述した初期ベクトル選択処理やベクトル検出処理、または、後述する割付補償処理などのベクトルを評価する場合の評価値DFDの演算においても、この4点補間は適用される。
次に、ベクトル割付処理の概念を説明する。例えば、24P信号上でオブジェクトが速度vで動いており、任意の2フレーム間で、このオブジェクトの動きについて等速仮定が成り立つと仮定した場合に、24P信号のフレーム間に、新しくフレームを内挿することを考える。この場合、24P信号のオブジェクトから動きベクトルvを延ばすと、動きベクトルvと内挿フレームとの交点は、同じオブジェクトであり、同じ速度vを有する。
したがって、ベクトル検出部53で検出された24P信号のフレーム(以下、内挿フレームに対して、元フレームとも称する)の動きベクトルを、その動きベクトルと、内挿する60P信号の内挿フレーム上との交点に割り付けることで、内挿フレーム上の各画素の動きを求めることができる。また、逆に、割り付けられた動きベクトルから、内挿フレーム上の画素が24P信号フレーム上でどの位置から動いたものなのかを求めることができる。
図18は、24P信号の元フレームで検出された動きベクトルと、60P信号の内挿フレーム上の画素の例を1次元で示している。図18の例においては、2つの24P信号の時刻tのフレームtおよび時刻t+1のフレームt+1の間に、例えば、時刻t+0.4の内挿フレームF1、および時刻t+0.8の内挿フレームF2が2つ挿入されている。なお、この内挿フレームの位置は、上述したように、24P信号上での時間位相が0.0,0.4,0.8,1.2,および1.6となる位置に、60P信号のフレームが置かれることから、信号処理装置3において予め設定されている。
各フレーム上の丸は、各画素を示している。前段のベクトル検出部52によりフレームtにおいて検出された動きベクトルv1,v2、およびv3が、フレームt+1方向に延ばされている。これらの動きベクトルを内挿フレームF1およびF2の各画素に割り付ける場合、内挿フレーム上の各画素の近傍を通る動きベクトルは、その画素に割り付けられる候補ベクトル(以下、割付候補ベクトルとも称する)とされる。
したがって、フレームtの最も左側の画素から、フレームt+1の左から4番目と5番目の画素近傍への動きベクトルv1は、内挿フレームF1上の左から2番目と3番目の画素の間、内挿フレームF2上の左から3番目と4番目の画素の間を通っている。したがって、動きベクトルv1は、動きベクトルv1が内挿フレームF1およびF2を交差する点の近傍N1に含まれる画素(内挿フレームF1の左から2番目と3番目の画素および内挿フレームF2の左から3番目と4番目の画素)に割り付けられる割付候補ベクトルとなる。
また、フレームtの左から3番目の画素から、フレームt+1の左から2番目と3番目の画素近傍への動きベクトルv2は、内挿フレームF1上の左から2番目と3番目の画素の間、内挿フレームF2上の左から2番目と3番目の画素の間を通っている。したがって、動きベクトルv2は、動きベクトルv2が内挿フレームF1およびF2を交差する点の近傍領域N2に含まれる画素(内挿フレームF1の左から2番目と3番目の画素および内挿フレームF2の左から2番目と3番目の画素)に割り付けられる割付候補ベクトルとなる。
さらに、フレームtの左から5番目の画素から、フレームt+1の左から4番目と5番目の画素近傍への動きベクトルv3は、内挿フレームF1上の左から4番目と5番目の画素の間、内挿フレームF2上の左から4番目と5番目の画素の間を通っている。したがって、動きベクトルv3は、動きベクトルv3が内挿フレームF1およびF2を交差する点の近傍領域N3に含まれる画素(内挿フレームF1の左から4番目と5番目の画素および内挿フレームF2の左から4番目と5番目の画素)に割り付けられる割付候補ベクトルとなる。
すなわち、内挿フレームF2の左から2番目の画素の割付候補ベクトルは、動きベクトルv2であり、内挿フレームF1上の左から2番目および3番目の画素、並びに内挿フレームF2の左から3番目の画素の割付候補ベクトルは、動きベクトルv1およびv2である。また、内挿フレームF2の左から4番目の画素の割付候補ベクトルは、動きベクトルv1およびv3であり、内挿フレームF1上の左から4番目および5番目の画素、並びに内挿フレームF2の左から5番目の画素の割付候補ベクトルは、動きベクトルv3である。
以上のように、元フレームにおいて検出された動きベクトルの中から、内挿フレーム上の各画素に割り付けられる割付候補ベクトルが求められる。なお、内挿フレームF1およびF2の左端の画素および右端の画素(図中黒丸)においては、近傍を通る動きベクトルは、示されていない。すなわち、内挿フレームF1およびF2の左端の画素および右端の画素には、割り付けられる割付候補ベクトルが存在しない。したがって、これらの画素については、後述する後段の割付補償部57において割付補償処理が実行される。
さらに、図19を参照して、元フレームで検出された動きベクトルと、60P信号の内挿フレーム上の画素について詳しく説明する。図19の例において、矢印Tは、図中、左前の時刻tのフレームtから、右奥の時刻t+1のフレームt+1への時間の経過方向を示している。また、時刻tと時刻t+1の間の時刻t+postに内挿フレームF1が置かれている。
図19の例の場合、フレームt上の画素(xa,ya)で検出された動きベクトルva(xva,yva)をフレームt+1方向に延ばし、内挿フレームF1との交点(xia,yia)を演算する。交点は、24P信号のフレームt上の動きベクトルvaの端点にあたる画素が移動した点であると考えられるので、具体的には、式(12)および式(13)のように表される。
xia = xa+postxva ・・・(12)
yia = ya+postyva ・・・(13)
ここで、上述したように、動きベクトルvaが画素以下精度を有する場合には、動きベクトルvaの交点と、内挿フレームF1上の画素位置は、一致するとは限らない。一致しない場合、図19に示されるように、動きベクトルvaは、内挿フレームF1上の交点の近傍4画素G1乃至G4に対して割り付けられる。すなわち、動きベクトルvaは、近傍の各画素G1乃至G4上にシフト(平行移動)されて、それぞれの画素に対して割り付けられる割付候補ベクトルとされ、割付補償処理が実行される。
なお、このように、1つの動きベクトルが、近傍4画素に対して割り付けられる候補となることもあるため、画素によっては、複数の動きベクトルが割付候補ベクトルとされる。この場合、ベクトル割付部54は、各動きベクトルについて、内挿フレーム上の画素と、その動きベクトルで対応付けられる元フレーム上の交点を算出し、その交点を用いて、各動きベクトルを評価することにより、最終的に、内挿フレーム上の画素に、割り付ける動きベクトルを決定する。
図20を参照して、ベクトル割付部55における動きベクトルの評価について説明する。図20は、下から、図19の時刻tのフレームt、時刻t+postの内挿フレームF1、および、時刻t+1のフレームt+1を、1次元的に示している。
図20の例において、動きベクトルsvaは、フレームt上の画素(xa,ya)において検出された動きベクトルvaが、近傍の画素G4の割付候補ベクトルとして、画素G4上にシフト(平行移動)されたものである。ここで、画素G4上にシフトされた動きベクトルsvaと、フレームtおよびフレームt+1との交点を、それぞれ点Pおよび点Qとする。
ベクトル割付部54は、動きベクトルsvaの第1の評価として、まず、点Pおよび点Qを中心としたDFD演算範囲をそれぞれ求め、求めたDFD演算範囲が画枠をはみ出してしまうか否かを判断する。したがって、点Pおよび点Qを中心としたDFD演算範囲が画枠をはみ出てしまった場合には、動きベクトルsvaは、候補から除外される。
また、この点Pおよび点Qが、例えば、異なるオブジェクトに属する場合、点Pの輝度値Ft(P)と、点Qの輝度値Ft+1(Q)の差は、大きくなってしまう。したがって、ベクトル割付部54は、動きベクトルsvaの第2の評価として、点Pと点Qを用いて、画素G4における輝度差分絶対値dpを求め、輝度差分絶対値dpが所定の値より大きいか否かを判断する。輝度差分絶対値dpが所定の値より大きいと判断された場合には、画素G4における動きベクトルsvaの信頼度が低いとされ、動きベクトルsvaは、候補から除外される。なお、輝度差分絶対値dpは、次の式(14)で表される。
dp = |Ft(P)― Ft+1(Q)| ・・・(14)
そして、動きベクトルsvaの第3の評価として、ベクトル割付部54は、点Pおよび点Qを中心としたDFD演算範囲の相関値を表す差分絶対値による評価判断を行う。すなわち、ベクトル割付部54は、点Pおよび点Qを中心としたDFD演算範囲を用いて、画素G4における動きベクトルsvaの評価値DFD(差分絶対値)を求め、求められた評価値DFDがDFDテーブルの最小評価値よりも小さいか否かを判断する。以上の評価の結果、ベクトル割付部54は、求められた評価値DFDの中で最小の評価値DFDを有する動きベクトルを、画素G4に割り付ける。
以上のように、内挿フレームの画素における割付候補の動きベクトルを、割付対象画素の評価値DFDだけでなく、割付対象画素における輝度差分絶対値を用いて評価するようにしたので、従来の評価値DFDを用いるだけの場合よりも、確からしい動きベクトルを、割付対象画素に割り付けることができる。この結果、ベクトル割付の精度が向上する。
また、ベクトル割付部54は、貫き危険フラグが貫き劣化部の発生の原因となる動きベクトルであることを示している場合、その動きベクトルの割り付けを禁止する。これにより、貫き劣化部が発生するのを抑制することができる。
なお、上述したように内挿フレームの画素における割付候補の動きベクトルを評価するためには、内挿フレームの画素を基準に、その動きベクトルで対応付けられる元フレーム上の位置が用いられるが、輝度差分絶対値dpおよび評価値DFDを求める際に、割付候補の動きベクトルは、内挿フレームの画素位置を基準に延長するため、動きベクトルと元フレーム上の交点は、元フレームの画素位置と一致しないことがあり、このままでは画素値を求めることができない。このような場合に、図17を参照して上述した4点補間処理が実行される。
図21は、ベクトル割付処理における4点補間の例を示している。図21において、図19および図20における場合と対応する部分には対応する符号を付してあり、その説明は繰り返しになるので省略する。
図21の例においては、割付候補の動きベクトルsvaは、内挿フレームF1の画素位置G4を基準に延長されているため、動きベクトルsvaとフレームtとの交点Pは、フレームt上の画素位置(フレームt上の白丸)と一致しておらず、また、動きベクトルsvaとフレームt+1との交点Qも、フレームt+1上の画素位置(フレームt上の白丸)と一致していない。したがって、フレームtおよびフレームt+1においては、それぞれ交点Pおよび交点Qを中心とした近傍Eの4画素(フレームtおよびフレームt+1上の白丸)を用いて、上述した4点補間演算が行なわれ、交点Pおよび交点Qの画素値が求められる。
このように、このベクトル割付処理においては、4点補間処理により求められる交点Pおよび交点Qの画素値が用いられて、輝度差分絶対値dpおよび評価値DFDが演算されるので、従来の画素以下成分を丸めてしまう方法よりも、輝度差分絶対値dpや評価値DFDを精度よく求めることができる。
次に、図22のフローチャートを参照して、ベクトル割付処理の詳細を説明する。24P信号の元フレームである、時刻tの画像のフレームtと、時刻t+1の画像のフレームt+1は、画素情報演算部701、評価値演算部702、および着目画素差分演算部703に入力される。
ステップS201において、背景ベクトル検出部706は背景ベクトル検出処理を実行する。その詳細は、図23のフローチャートを参照して後述するが、これにより、背景を構成する画素の動きベクトルであって、貫き劣化の発生のおそれのある動きベクトル(背景ベクトル)が検出され、その背景フラグに1(true)が設定される。背景フラグが1に設定された動きベクトル(背景ベクトル)は、後述するステップS206の画素位置演算処理(より詳細には、図27のステップS722の処理)により割り付け対象の動きベクトルから除外される。
画素情報演算部701は、新しい元フレームが入力されると、ベクトル選択部705を制御し、ステップS202において、割付フラグメモリ56の割付フラグを0(false)で初期化させる。また、ステップS203において、ベクトル選択部705は、画素情報演算部701により制御され、割付ベクトルメモリ55を0ベクトルで初期化する。これにより、結果的に、動きベクトルが割り付けられない画素に、0ベクトル(動きが0であることを意味する動きベクトル)が割り付けられる。
また、画素情報演算部701は、ステップS204において、評価値演算部702を制御し、0ベクトルを用いて評価値DFD0を算出させる。すなわち、内挿フレーム上のすべての画素に対して、0ベクトルを用いて評価値DFD0が算出される。また、画像情報演算部701は、ベクトル選択部705を制御し、評価値演算部702により算出された0ベクトルの評価値DFD0を、内挿フレームの各画素に対する最小評価値としてベクトル選択部705のDFDテーブルに記憶させる。すなわち、ステップS204において、評価値演算部702は、内挿フレームのすべての画素に対して、0ベクトルを用いて評価値DFD0を算出し、算出した評価値DFD0を、ベクトル評価部704を介して、ベクトル選択部705に出力する。そして、ベクトル選択部705は、ベクトル評価部704を介して入力された評価値DFD0を、DFDテーブルの対応する画素の最小評価値として記憶する。
画素情報演算部701は、ステップS205において、検出ベクトルメモリ53上の元フレームから画素を選択する。なお、この場合、フレームの左上からラスタスキャン順に画素が1つずつ選択される。
画素情報演算部701は、ステップS206において、画素位置演算処理を実行する。この画素位置演算処理の詳細は図27を参照して後述するが、これにより、ステップS205において選択された画素において検出された動きベクトルが割り付けられる対象となる内挿フレーム上の割付対象画素が算出され、算出された割付対象画素を基準に、その動きベクトルで対応付けられる元フレーム上の位置が算出される。
画素情報演算部701は、ステップS207において、算出された割付対象画素を選択し、選択した割付対象画素と、その動きベクトルを、ベクトル選択部705に出力する。このとき、同時に、画素情報演算部701は、選択した割付対象画素を基準に、その動きベクトルで対応付けられる元フレーム上の位置の情報を、評価値演算部702および着目画素演算部703に出力する。なお、ステップS207において、画素情報演算部701は、割付対象画素が複数存在する場合には、左上の画素から選択する。
ステップS208において、画素情報演算部701は、選択された割付対象画素に関して、割付ベクトル評価処理を実行する。この割付ベクトル評価処理の詳細は図28を参照して後述するが、これにより、割付対象画素における動きベクトルの評価値DFDおよび輝度差分絶対値が求められ、割付対象画素における動きベクトルの信頼度が判断され、これらの判断の結果、信頼度が高いとされた動きベクトルで、割付ベクトルメモリ55の動きベクトルが書き換えられる。
画素情報演算部701は、ステップS209において、すべての割付対象画素の処理が終了したか否かを判断する。まだ、すべての割付対象画素の処理が終了していない場合には、処理はステップS207に戻り、次の割付対象画素が選択され、それ以降の処理が繰り返される。
ステップS209において、すべての割付対象画素の処理が終了したと判断された場合、並びにステップS206で貫き危険フラグがtrueであると判定された場合、処理はステップS210進む。画素情報演算部701は、ステップS210において、検出ベクトルメモリ53上の元フレームのすべての画素の処理を終了したかを判断する。ステップS210において、検出ベクトルメモリ53上の元フレームのすべての画素の処理がまだ終了していないと判断された場合、処理はステップS205に戻り、検出ベクトルメモリ53上の元フレームの次の画素が選択され、それ以降の処理が繰り返される。また、画素情報演算部701は、ステップS210において、検出ベクトルメモリ53のすべての画素についての処理を終了したと判断した場合、ベクトル割付処理を終了する。
次に、図23のフローチャートを参照して、図22のステップS201における背景ベクトル検出処理の詳細について説明する。
ステップS301において、背景ベクトル検出部706は着目ベクトルを選択する。すなわち、検出ベクトルメモリ53に記憶されている動きベクトルの中から、着目画素の動きベクトルを着目ベクトルとして選択する。ステップS302において、背景ベクトル検出部706は、変数STATEに0を初期設定する。このSTATEは検出するパターンの状態を表す変数であり、後述するステップS307,S310,S313において更新される。
ステップS303において、背景ベクトル検出部706は、背景フラグに0(false)を初期設定する。ステップS304において、背景ベクトル検出部706は着目ベクトル上の1つの画素の動きベクトルを選択する。例えば、図24に示されるように、着目点611の座標が(x0,y0)である場合、着目ベクトル612は次の式(15)で表される。
例えば図24に示されるように、4×4個の画素を1つのブロックとし、各ブロック単位で1つの動きベクトルを検出する場合には、各ブロックから1つの画素が選択される。そして、その画素は着目ベクトル612に最も近い画素とされ、その動きベクトルが選択ベクトルとしてここで選択される。図24の例においては、最初に最上段の左から2番目のブロックの画素621の動きベクトルが選択される。
ステップS305において、背景ベクトル検出部706は、変数STATEが0であるかを判定する。今の場合、ステップS302において、変数STATEには0が初期設定されているためYESと判定され、処理はステップS306に進む。ステップS306において、背景ベクトル検出部706は、選択ベクトルが着目ベクトルと一致するかを判定する。すなわち、ステップS304で選択された選択ベクトルがステップS301で選択された着目ベクトルと一致するかが判定される。次の式(16)と式(17)の両方が満足されるとき、選択ベクトルは着目ベクトルと一致すると判定される。
ここで、(vx0,vy0)は、着目ベクトル612の座標(到達点626の座標)を表す。また、(vx,vy)は選択ベクトルを意味する。
なお、選択ベクトルが0ベクトルである場合には、ステップS306においては、着目ベクトルと一致すると判定される。
ステップS306において、選択ベクトルが着目ベクトルと一致すると判定された場合、背景ベクトル検出部706は、ステップS308において、着目ベクトルの到達点に達したかを判定する。すなわち、図24に示されるように、着目ベクトル612上の各ブロックの画素621,623,624,625が、ステップS304において順次選択さるが、選択された画素の位置が着目ベクトル612の到達点626としての画素に達したかがここで判定される。着目ベクトルが到達点に達していない場合には、処理はステップS304に戻り、次の画素の動きベクトルが選択される。例えば、図24における画素623の動きベクトルが選択され、そして、その動きベクトルに関して上述した場合と同様の判定処理が実行される。
ステップS306において、選択ベクトルが着目ベクトルと一致しないと判定された場合には、背景ベクトル検出部706は、ステップS307において、変数STATEに1を設定する(変数STATEを0から1に更新する)。その後処理はステップS308に進み、着目ベクトルの到達点に達したかが再び判定され、まだ着目ベクトルの到達点に達していない場合には処理はステップS304に戻り、新たな画素の動きベクトルが選択され、その動きベクトルに関して同様の処理が実行される。
ステップS305において、変数STATEが0ではないと判定された場合(例えば、ステップS307において、変数STATEに1が設定されている場合)、ステップS309において、背景ベクトル検出部706は、選択ベクトルが着目ベクトルと一致するかを判定する。なお、このステップS309においては、選択ベクトルが0ベクトルである場合には、着目ベクトルと一致しないと判定される。
選択ベクトルが着目ベクトルと一致すると判定された場合、ステップS310において、背景ベクトル検出部706は、変数STATEに2を設定する。そして、ステップS311において、背景ベクトル検出部706は背景フラグに1を設定する(背景フラグを0から1に更新する)。
このように、着目ベクトルと異なる選択ベクトルが検出され、変数STATE=1に設定された後、着目ベクトルと一致する選択ベクトルが検出された場合には、変数STATE=2に設定され、背景フラグが1に設定される。
ステップS309において、選択ベクトルが着目ベクトルと一致しないと判定された場合、ステップS312において、背景ベクトル検出部706は、選択ベクトルが0ベクトルかを判定する。選択ベクトルが0ベクトルでない場合には、処理はステップS308に進み、選択ベクトルを選択する画素の位置が着目ベクトルの到達点にまだ達していない場合には、処理は再びステップS304に戻り、新たな画素の動きベクトルが選択され、その動きベクトルについて上述した場合と同様の処理が繰り返し実行される。
ステップS312において、選択ベクトルは0ベクトルであると判定された場合、背景ベクトル検出部706はステップS313において、変数STATEに3を設定し、ステップS311において、さらに背景フラグに1を設定する。
以上のようにして、着目ベクトル612上(図24に示されるように、その近傍を含む)の画素621,623,624,625,626が順次選択され、それぞれの動きベクトルについて上述した処理が実行され、ステップS308において着目ベクトルが到達点626に到達したと判定されるか、ステップS311において背景フラグに1が設定された場合、背景ベクトル検出処理は終了され、処理は図22のステップS202に戻る。
以上の処理により、着目点の動きベクトルと他の画素の動きベクトルとで構成されるパターンが判定される。このことについて図25と図26を参照して、具体的に説明する。ただし、図26の例においては、着目ベクトル上の他の画素の動きベクトルの検出は、ブロック単位ではなく、画素単位で行われるものとする。
例えば、図25に示されるように、比較的高速で図中左方向に動きベクトルv1で移動する背景の前を、前景651が比較的ゆっくりした速度で図中右方向に動きベクトルv0で移動しているとする。この場合に、図23の処理を実行すると、図26に示されるパターンの判定が行われることになる。なお、図26において、画面は紙面と垂直な方向に存在し、図中上方向が時間が進む方向である。
すなわち、図26に示されるように、フレームt上の左から順番に位置する各画素では、動きベクトルv1,v1,v1,v1,v0,v0,v1,v1,v1,0,0,v1が検出されている。各画素の動きベクトルの下方には、その画素を着目画素とした場合におけるその着目ベクトル上の他の画素の動きベクトルの並びを表している。例えば、左から7番目の動きベクトルv1は、図中左方向に向かうベクトルであるため、この動きベクトル(着目ベクトル)v1上には、その着目画素を基準にして、図中左方向に存在する画素が存在する。これらの画素の動きベクトルv0,v0,v1,v1が動きベクトルの並びとして縦方向に示されている。
動きベクトルv1どうし、並びに動きベクトルv0どうしは、それぞれ一致するベクトルと判定され、動きベクトルv1と動きベクトルv0は異なる(一致しない)ベクトルと判定される。
図23のステップS301において、この図26の左から7番目の着目ベクトルv1が選択されたとすると、ステップS304において、動きベクトルv0,v0,v1,v1が選択ベクトルとして順次選択されることになる。最初の動きベクトルv0が選択されると、ステップS306において、この選択ベクトルv0は着目ベクトルv1と一致しないと判定されるため、ステップS307において変数STATEが1に設定される。次の動きベクトルv0がステップS304で選択されると、ステップS305で変数STATEが0ではないと判定されるため、ステップS309で選択ベクトルv0が着目ベクトルv1と一致するかが判定される。両者は一致しないため、ステップS312においてその選択ベクトルv0は0ベクトルかが判定されるが、0ベクトルではないため、処理はステップS304に戻り、再び新たな選択ベクトルv1が選択される。このとき、ステップS309において、選択ベクトルv1が着目ベクトルv1と一致すると判定されるため、ステップS310で変数STATE=2と設定され、ステップS311において背景フラグが1に設定される。
すなわち、この場合には、着目ベクトルv1を含むグループG1と、着目ベクトルv1とは一致しない動きベクトルv0のグループG2、さらに着目ベクトルv1と一致する動きベクトルv1のグループG3が、順次続くパターンが検出される。このパターンが検出されると、ステップS311において、背景フラグに1が設定されることになる。
また、図26において、左から8番目の画素を着目画素とすると、その動きベクトル(着目ベクトル)v1も図中左方向に向かう動きベクトルであるから、その着目ベクトル上には、その着目画素から左方向に位置する画素が存在し、それらの動きベクトルv1,v0,v0,v1が動きベクトルの並びとして図中下方向に示されている。ステップS304において、これらの動きベクトルが順次選択ベクトルとして選択されることになる。
最初に選択ベクトルv1が選択されたとき、ステップS306において、その選択ベクトルv1は着目ベクトルv1と一致すると判定されるため、変数STATEは更新されることなく(0のままとされ)、次の選択ベクトルv0が選択される。このとき、ステップS306において、選択ベクトルv0は着目ベクトルv1と一致しないと判定され、ステップS307において変数STATEが1に設定される。
次の選択ベクトルv0が選択された場合には、今変数STATEは1であるため、ステップS309において、選択ベクトルv0は着目ベクトルv1と一致するかが判定される。今の場合、選択ベクトルv0は着目ベクトルv1と一致しないため、ステップS312,S308を介して、再びステップS304において次の選択ベクトルv1が選択される。この選択ベクトルv1は、ステップS309において着目ベクトルv1と一致すると判定されるため、ステップS310において変数STATEが2に設定され、ステップS311において背景フラグが1に設定される。
このようにして、この場合には、着目ベクトルv1と、それと一致する選択ベクトルv1により構成されるグループG1と、そのグループG1の次に続く着目ベクトルv1と異なる選択ベクトルv0のグループG2、さらに着目ベクトルv1と一致する選択ベクトルv1のグループG3からなるパターンが検出され、これらのパターンが検出されたとき、背景フラグに1が設定される。
換言すれば、このパターンが発生する場合に、動きベクトルv0と動きベクトルv1がフレームt+1に達するまでの間に交差し、貫き劣化が発生するおそれがあるので、このパターンが検出された場合に、その着目ベクトルの動きベクトル(背景ベクトル)を割り付け候補から除外する(後述する図27のステップS722の処理)ことで、貫き劣化の発生を抑制するのである。
図26において、左から5番目の着目画素の動きベクトル(着目ベクトル)v0は、図中右方向に向かうベクトルであるため、その着目画素より右方向に位置する画素の動きベクトルv0,v1がその着目ベクトル上に存在する動きベクトル(選択ベクトル)となる。そして、これらの動きベクトルがステップS304において順次選択されるが、最初の選択ベクトルv0が選択された時、この選択ベクトルv0は着目ベクトルv0と一致するため変数STATEは更新されず、次の選択ベクトルv1が選択された時、その選択された動きベクトルv1は着目ベクトルv0と一致しないと判定され、ステップS307において変数STATEが1に更新される。しかしこの場合には、これで着目ベクトルの到達点に達したと判定されるため、その後の処理は行われないことになる。すなわち、変数STATEは1のままであり、背景フラグは0のままとなる。
図26において、左から6番目の着目ベクトルv0は、図中右方向に向かうベクトルであるため、その着目ベクトル上の画素として、着目画素から右方向の画素が選択され、その動きベクトルが選択ベクトルv1,v1としてステップS304で順次選択される。しかし、これらの選択ベクトルv1は着目ベクトルv0と一致しないため、ステップS307において変数STATEが1に設定され、その後、ステップS309においてやはり一致しないと判定される。そして、ステップS312において、選択ベクトルv1は0ベクトルではないと判定されるため、ステップS308において、着目ベクトルv0の到達点に達したと判定される結果、変数STATEは1に設定されたままとなり、背景フラグは0のままとして処理が終了される。
図26において、図中最も左側から4番目までの着目ベクトルv1が選択された場合には、その着目ベクトル上に存在する他の選択ベクトルはすべて選択ベクトルv1である。したがって、着目ベクトルv1と一致する選択ベクトルv1だけであるため、変数STATEは更新されず、背景フラグも0のままとして図23の処理が終了されることになる。
図26において、図中最も右側に示される着目ベクトルv1は、左方向に向かう動きベクトルであるため、その着目ベクトルv1上には選択ベクトル0,0,v1,v1が順次存在し、ステップS304で選択される。ステップS306における一致判定では、0ベクトルは一致と判定され、また、他の選択ベクトルv1は着目ベクトルv1と一致するため、この場合にも、変数STATEは更新されず0のままとされ、背景フラグも0のままとされる。
以上のようにして、動きベクトルのパターンから貫き劣化の発生するおそれがある動きベクトルが検出され、検出された場合に対応する背景フラグが1に設定される。その結果、貫き劣化の発生が抑制される。
次に、図27のフローチャートを参照して、図22のステップS206の画素位置演算処理の詳細を説明する。
ステップS721において、画素情報演算部701は、ステップS205の処理により選択された画素で検出された動きベクトルを、検出メモリベクトル53から取得する。ステップS722において、画素情報演算部701は、0ベクトルと背景ベクトルを割り付け対象の動きベクトルから除外する。すなわち、選択された画素の動きベクトルが0ベクトルである場合、割付ベクトルメモリ55には、初期値として0ベクトルが予め記憶されているので、以降のステップS723乃至S725、および、図22のステップS207乃至S209の処理はスキップされ、処理はステップS210に進む。
同様に、図23のステップS311で背景フラグが1に設定されている動きベクトルは、新たに生成されるフレームの画素に割り付けると貫き劣化の発生が予想されるので、割り付け対象の動きベクトルから除外される。すなわち、この場合においても、ステップS723乃至S725、および、図22のステップS207乃至S209の処理はスキップされる。
画素情報演算部701は、ステップS723において、取得された動きベクトルと内挿フレームの交点を算出する。すなわち、画素情報演算部701は、取得した動きベクトルを、次フレームt+1方向に延ばし、延ばした動きベクトルと、内挿フレームとの交点を算出する。
画素情報演算部701は、ステップS724において、動きベクトルと内挿フレームから算出された交点から、割付対象となる画素を設定する。このとき、画素情報演算部701は、交点が内挿フレーム上の画素位置に一致する場合には、交点を、割付対象画素に設定する。一方、画素情報演算部701は、交点が内挿フレーム上の画素位置に一致しない場合には、上述したように、内挿フレーム上の交点の近傍4画素を、割付対象画素に設定する。
ステップS725において、画素情報演算部701は、評価値演算部702および着目画素差分演算部703が評価値DFDおよび輝度差分絶対値を求める上で必要である、各割付対象画素を基準に、取得された動きベクトルで対応付けた元フレーム上の位置を算出する。具体的には、画素情報演算部701は、ステップS725において、取得された動きベクトルを、設定された割付対象画素にシフト(平行移動)し、シフトされた動きベクトルと、元フレーム上の交点の位置を求め、画素位置演算処理を終了する。その後、処理は図22のステップS207に戻る。
次に、図28のフローチャートを参照して、割付ベクトル評価処理の詳細を説明する。なお、図28は、図22のステップS208の割付ベクトル評価処理の例を示している。
図22のステップS207において、画素情報演算部701により、選択した割付対象画素を基準に、その動きベクトルで対応付けられる元フレーム上の位置が求められ、求められた元フレーム上の位置の情報が、評価値演算部702および着目画素差分演算部703に入力される。
評価値演算部702は、画素情報演算部701から、元フレーム上の位置の情報が入力されると、ステップS741において、割付対象画素における動きベクトルの評価値DFDを求めるために、フレームtおよびフレームt+1上の位置を中心としたDFD演算範囲(m×n)をそれぞれ求め、さらにステップS742において、求められたDFD演算範囲が画枠内にあるか否かを判断する。評価値演算部702は、ステップS742において、DFD演算範囲が画枠からはみ出していると判断した場合、その動きベクトルは、割付対象画素に割り付ける割付候補ベクトルにはならないと判断し、ステップS743乃至S749の処理をスキップし、割付ベクトル評価処理を終了する。その後処理は図22のステップS209に戻る。
評価値演算部702は、ステップS742において、求められたDFD演算範囲が画枠内にあると判断した場合、ステップS743に進み、画枠内にあると判断されたDFD演算範囲を用いて、割付対象画素の評価値DFDを演算し、求められた評価値DFDを、評価値判断部712に出力する。なお、このとき、元フレーム上の位置が画素以下であった場合には、上述した4点補間を用いて、元フレーム上の交点の輝度値を求めることにより、割付対象画素の評価値DFDが演算される。
一方、着目画素差分演算部703は、画素情報演算部701から、元フレーム上の位置の情報が入力されると、ステップS744において、割付対象画素における輝度差分絶対値dpを求め、求められた輝度差分絶対値dpを、画素差分判断部711に出力する。なお、このときも、元フレーム上の位置が画素以下であった場合には、着目画素差分演算部703は、上述した4点補間を用いて、元フレーム上の交点の輝度値を求めることにより、割付対象画素における輝度差分絶対値dpを演算する。
画素差分判断部711は、ステップS745において、着目画素差分演算部703からの割付対象画素の輝度差分絶対値dpが、所定のしきい値以下であるか否かを判断し、割付対象画素の輝度差分絶対値dpが、所定のしきい値より大きいと判断した場合、フレームtおよびフレームt+1の交点がそれぞれ異なるオブジェクトに属する可能性が高いと判断し、すなわち、その動きベクトルは、割付対象画素における信頼度が低く、割付対象画素に割り付ける割付候補ベクトルにはならないと判断し、ステップS746乃至S749の処理をスキップし、割付ベクトル評価処理を終了する。その後処理は図22のステップS209に戻る。
ステップS745において、画素差分判断部711により、割付対象画素の輝度差分絶対値dpが、所定のしきい値以下であると判断された場合、評価値判断部712は、ステップS746において、ベクトル選択部705のDFDテーブルを参照し、評価値演算部702からの割付対象画素の評価値DFDが、DFDテーブルに記憶されている割付対象画素の最小評価値(いまの場合、0ベクトルの評価値DFD0)よりも小さいか否かを判断し、評価値演算部702からの割付対象画素の評価値DFDが、DFDテーブルに記憶されている割付対象画素の最小評価値以上であると判断した場合、その動きベクトルは、割付対象画素において、信頼度が高くないと判断し、ステップS747乃至S749の処理をスキップし、割付ベクトル評価処理を終了する。その後処理は図22のステップS209に戻る。
一方、評価値判断部712は、ステップS746において、評価値演算部702からの割付対象画素の評価値DFDが、DFDテーブルに記憶されている割付対象画素の最小評価値よりも小さいと判断した場合、その動きベクトルは、割付対象画素において、いままで比較した動きベクトルの中で最も、評価値DFDに基づく信頼度が高いと判断し、信頼度が高いと判断された割付対象画素の評価値DFDを、ベクトル選択部705に出力する。
ベクトル選択部705は、評価値判断部712からの割付対象画素の評価値DFDを入力すると、ステップS747において、割付フラグメモリ56の割付対象画素の割付フラグを1(True)に書き換え、ステップS748において、DFDテーブルの割付対象画素が対応する最小評価値を、評価値判断部712により信頼度が高いと判断された評価値DFDに書き換える。
ベクトル選択部705には、ステップS706において、画素情報演算部701から選択した割付対象画素とその動きベクトルが入力されている。したがって、ベクトル選択部705は、ステップS749において、割付ベクトルメモリ55の割付対象画素に割り付けられている動きベクトルを、信頼度が高いと判断された評価値DFDに対応する動きベクトルで書き換え、割付ベクトル評価処理を終了する。その後処理は図22のステップS209に戻る。
以上のように、内挿フレームの割付対象画素に割り付けられる動きベクトルを選ぶときに、評価値DFDだけでなく、割付対象画素を基準に動きベクトルで対応付けた元フレーム上の位置に基づいて求められる、割付対象画素の輝度差分絶対値を別扱いにし、評価するようにしたので、従来の評価値DFDを用いるだけの場合よりも、割付候補ベクトルの中から、最も確からしい動きベクトルを選んで、割付対象画素に割り付けることができる。これにより、ベクトル割付の精度が向上し、後段の画像補間処理において生成される画像の不連続性などを抑制することができ、画像の品質を向上させることができる。
さらに、評価値DFDや輝度差分絶対値を求める際などに、画素以下位置の画素値が必要な場合に、その画素以下位置の近傍4画素との距離を基にした線形補間で値を求めるようにしたので、画素以下位置精度の処理が可能になり、さらに、従来の画素以下成分を丸めてしまう方法よりも、輝度差分絶対値dpや評価値DFDを精度よく求めることができ、これにより、割付候補ベクトルの中から、着目画素により確からしい動きベクトルを割り付けることができる。すなわち、ベクトル割付処理の精度が向上する。
また、0ベクトルによる評価値DFDを初期値として、DFDテーブルに予め保持しておき、動きベクトルを順次処理している間に、ある動きベクトルによる評価値DFDがその時点で最小評価値となった場合に、DFDテーブルの最小評価値と、割付ベクトルメモリ55に割り付けられている動きベクトルを、随時更新するようにしたので、時間とリソースを効率的に使用することができる。
次に、割付補償部57の構成の詳細について説明する。
図29は、割付補償部57の構成を示すブロック図である。図29に構成を示す割付補償部57は、割付ベクトル判定部801およびベクトル補償部802により構成され、ベクトル割付部54により動きベクトルが割り付けられなかった60P信号の内挿フレーム上の画素に、その周辺画素の動きベクトルを補って割り付ける処理を行う。
前段のベクトル割付部54により、割付ベクトルメモリ55上の内挿フレームの画素には動きベクトルが割り付けられている。また、ベクトル割付部54により動きベクトルが割り付けられた画素の割付フラグメモリ56の割付フラグには、1(true)が書き込まれており、動きベクトルが割り付けられなかった画素の割付フラグメモリ56の割付フラグには、0(false)が書き込まれている。
割付ベクトル判定部801は、割付フラグメモリ56の割付フラグを参照し、着目画素に、ベクトル割付部54により動きベクトルが割り付けられているか否かを判定する。そして、割付ベクトル判定部801は、ベクトル割付部54により動きベクトルが割り付けられなかった着目画素を選択し、選択した着目画素に対して、ベクトル補償部802を制御し、その着目画素の周辺画素の動きベクトルを選択して、割付ベクトルメモリ55の内挿フレーム上に割り付けさせる。
ベクトル補償部802は、割付ベクトルメモリ55から、着目画素の周辺画素に割り付けられている動きベクトルを取得し、入力される時刻tの画像のフレームtと、時刻t+1の画像のフレームt+1を用いて、取得した動きベクトルの評価値DFDを求めて比較することにより、着目画素の周辺画素に割り付けられた動きベクトルのうち、評価値DFDに基づく、最も信頼度が高い動きベクトルを、割付ベクトルメモリ55の着目画素に割り付ける。また、ベクトル補償部802は、動きベクトルが割り付けられた着目画素の割付フラグを1(true)に書き換える。
図30は、ベクトル補償部802の構成を示すブロック図である。図30に構成を示すベクトル補償部802は、補償処理部811および評価値演算部812により構成される。
補償処理部811は、最小評価値DFDと、最小評価値DFDの動きベクトルを候補ベクトル(以下、補償候補ベクトルとも称する)として記憶するメモリ821を有しており、割付ベクトル判定部801により選択された着目画素の初期値として、0ベクトルの評価値DFDを最小評価値としてメモリ821に記憶し、0ベクトルを、補償候補ベクトルとしてメモリ821に記憶する。補償処理部811は、割付フラグメモリ56を参照して、着目画素の周辺画素の動きベクトルの有無を判断し、割付ベクトルメモリ55から、周辺画素に割り付けられている動きベクトルを取得し、評価値演算部812を制御し、その動きベクトルの評価値DFDを演算させる。
また、補償処理部811は、評価値演算部812により演算された評価値DFDがメモリ821に記憶されている最小評価値よりも小さいか否かを判断し、演算された評価値DFDが最小評価値よりも小さいと判断した場合、メモリ821の補償候補ベクトルと最小評価値を、演算された評価値DFDとその動きベクトルに書き換え、最終的に、評価値DFDが最も小さいと判断された周辺画素の動きベクトル(補償候補ベクトル)を、着目画素の動きベクトルとして、割付ベクトルメモリ55の着目画素に割り付ける。さらに、補償処理部811は、動きベクトルが割り付けられた着目画素の割付フラグメモリ56の割付フラグを1(true)に書き換える。
評価値演算部812は、割付ベクトルメモリ55から周辺画素の動きベクトルを取得すると、入力される時刻tの24P信号の画像のフレームtと、時刻t+1の画像のフレームt+1を用いて、割付ベクトルメモリ55からの動きベクトルの評価値DFDを演算し、演算した評価値DFDを補償処理部811に出力する。
図31は、割付補償処理の原理を説明する図である。図31の例においては、内挿フレーム上の各画素が示されている。画素から出力される矢印は、各画素に割り付けられている動きベクトルを表しており、矢印がない画素は、動きベクトルが割り付けられていない画素を表している。
ここで、前段のベクトル割付部54により動きベクトルの割り付けられなかった中央の着目画素Pに対して、着目画素Pの近傍の周辺画素に割り付けられている動きベクトルの中から、評価値DFDに基づく、信頼度が高いものを選択して割り付ける。図31の例の場合、着目画素Pには、着目画素Pの上の画素の動きベクトル(太線矢印)が選択され、割り付けられている。これは、次に説明する動き相関に基づいて実行される処理である。
図32は、動き相関の原理について説明する図である。図32の例においては、あるフレーム上を動きv1で動くオブジェクトO1と、動きv2で動くオブジェクトO2が示されている。オブジェクトO1に属している着目画素P1とその近傍K1は、オブジェクトO1とほぼ同一動きv1を有している。また、オブジェクトO2に属している着目画素P2とその近傍K2は、オブジェクトO2とほぼ同じ動きv2を有している。
このように、動き相関とは、ある同じ時間における空間内(同一フレーム内)において、あるオブジェクトに属する画素の動きは、ほぼ同一動きをしていることが多いということを表すものである。したがって、動きベクトルを割り付けることができなかった画素に対しては、ある同じ時刻における空間内(同一フレーム内)において、このような動き相関があることを利用して、周辺画素の動きベクトルから、その画素の対応する動きベクトルを選択することができる。なお、説明は省略するが、時間方向の相関も同様である。
次に、図33乃至図39を参照して、動き相関に基づいて実行される動きベクトルの補償処理について説明する。この処理は、周辺画素の動きベクトルから、動きベクトルを選択し、着目画素の動きベクトルとして補う処理である。図33の例においては、白丸は、内挿フレーム上の画素を表しており、動きベクトルを求めようとしている着目画素Pの周辺に、周辺8画素が示されている。この着目画素Pの動きベクトルは、この周辺8画素の動きベクトルを参照して求められる。
図34の例においては、着目画素Pの周辺8画素の中で、左上画素、右上画素、および、右下画素(図中黒丸で示される画素)に、前段の処理(例えば、上述したベクトル割付処理)などにより求められた動きベクトル(矢印)が示されている。すなわち、この場合の着目画素Pの補償候補ベクトルは、左上画素、右上画素、および、右下画素の動きベクトルとされる。なお、フレーム上において、動きベクトルは、フレーム上の左上の画素からラスタスキャン順に求められていくため、周辺8画素のうち、まだ動きベクトルの求められていない画素も存在する可能性もあるが、まだ動きベクトルは求められていないため、補償候補ベクトルにはできない。
ここで、図35の例に示されるように、周辺8画素の中には、前段の処理において求められた動きベクトルを有する画素(黒丸で示される画素)の他に、本処理により求められた動きベクトルを有する画素(ハッチングされた丸で示される画素)も存在する。すなわち、本処理においては、本処理自体の前段の結果も利用される。したがって、図35の例の場合の着目画素Pの補償候補ベクトルは、動きベクトルがすでに存在する画素(黒丸で示される画素)の動きベクトルと、前段の本処理により求められた動きベクトルを有する画素(ハッチングされた丸で示される画素)の動きベクトルにより構成されている。
また、図36の例に示されるように、動き量を0とした0ベクトル(静止ベクトル)S0も補償候補ベクトルとして利用することができる。なお、図35の例においては、本処理により求められた動きベクトルを有する画素と、動きベクトルがすでに存在する画素を別々に表したが、どちらも動きベクトルを有するという点で同じであるので、図36乃至図39においては、本処理により求められた動きベクトルを有する画素も、動きベクトルがすでに存在する画素(黒丸で示される画素)に含まれることとする。したがって、図36の例の場合、着目画素Pの補償候補ベクトルは、動きベクトルがすでに存在する画素(黒丸で示される画素)の動きベクトルおよび0ベクトルS0により構成されている。
以上のようにして構成される補償候補ベクトルの信頼度(確からしさ)を比較するために、動きベクトルの評価方法である評価値DFDは、以下の図37乃至図39に示されるようにして求められる。図37は、補償候補ベクトルとして、0ベクトルS0が用いられる例を示している。図38は、補償候補ベクトルとして、周辺8画素の左上画素の動きベクトルVK1が用いられる例を示している。図39は、補償候補ベクトルとして、周辺8画素の上中央画素の動きベクトルVK2が用いられる例を示している。
図37の例においては、図中左側に示される着目画素Pの補償候補ベクトルの中から、0ベクトルS0が選択され、選択された0ベクトルS0の評価値DFDを求める例が示されている。すなわち、0ベクトルS0に対する評価値DFDは、着目画素P(60P信号の内挿フレーム)を挟む、24P信号のフレームtとフレームt+1上において、内挿フレーム上の着目画素Pを基準にして、選択された0ベクトルS0が対応付けられる交点を求め、この交点を中心として所定の範囲(m×n)のDFD演算範囲D1−1(フレームt)およびD1−2(フレームt+1)を算出し、算出されたDFD演算範囲D1−1およびD1−2を用いて、上述した式(1)を演算することにより求められる。
図38の例においては、図中左側に示される着目画素Pの補償候補ベクトルの中から、周辺8画素の左上画素の動きベクトルVK1が選択され、選択された動きベクトルVK1の評価値DFDを求める例が示されている。すなわち、周辺8画素の左上画素の動きベクトルVK1に対する評価値DFDは、着目画素P(内挿フレーム)を挟むフレームtとフレームt+1上において、内挿フレーム上の着目画素Pを基準にして、選択された動きベクトルVK1が対応付けられる交点を求め、この交点を中心として所定の範囲(m×n)のDFD演算範囲D2−1(フレームt)およびD2−2(フレームt+1)を算出し、算出されたDFD演算範囲D2−1およびD2−2を用いて、上述した式(1)を演算することにより求められる。
図39の例においては、図中左側に示される着目画素Pの補償候補ベクトルの中から、補償候補ベクトルとして、周辺8画素の上中央画素の動きベクトルVK2が選択され、選択された動きベクトルVK2の評価値DFDを求める例が示されている。すなわち、周辺8画素の上中央画素の動きベクトルVK2に対する評価値DFDは、着目画素P(内挿フレーム)を挟むフレームtとフレームt+1上において、内挿フレーム上の着目画素Pを基準にして、選択された動きベクトルVK2が対応付けられる交点を求め、この交点を中心として所定の範囲(m×n)のDFD演算範囲D3−1(フレームt)およびD3−2(フレームt+1)を算出し、算出されたDFD演算範囲D3−1およびD3−2を用いて、上述した式(1)を演算することにより求められる。
なお、図中左側に示される他の補償候補ベクトルについても、基本的に同様の処理であるため、その説明は省略するが、以上のようにして、着目画素Pの周辺画素の補償候補ベクトルすべての評価値DFDが求められ、求められたそれらの評価値DFDが比較され、その中で、最も評価値DFDが最小となる補償候補ベクトルが、図30に示されるように、着目画素Pに割り付けられる最も信頼度がある、確からしい動きベクトルとして選択される。
図40の例の場合、着目画素Pの周辺画素の補償候補ベクトルの中から、周辺8画素の左上画素の動きベクトルVK1の評価値DFDが最も小さいとして判断され、動きベクトルVK1が、着目画素Pの動きベクトルとして選択され、割り付けられている。
以上のように、ベクトル割付部54において割り付けることができなかった画素の動きベクトルを、動き相関を利用して、周辺画素の動きベクトルから補償するようにしたので、動きベクトルが割り付けられず、例えば、0ベクトルが割り付けられていたような場合よりも、動きの乱れを抑制することができる。また、このようにして補償された画素の動きベクトルも、他の画素の補償候補ベクトルとして再度利用することができる。すなわち、空間方向の近傍の動きベクトルだけでなく、時間方向の近傍の動きベクトルも、補償候補ベクトルに用いることができるので、オブジェクト内でほぼ同じ動きをする画素には、ほぼ同一の動きベクトルが選択され、誤りの少ない安定した動きベクトルを得ることができる。これにより、ベクトル割付の精度が向上する。
次に、図41のフローチャートを参照して、図9のステップS4の割付補償処理の詳細を説明する。前段のベクトル割付部54により、割付ベクトルメモリ55上の内挿フレームの画素には動きベクトルが割り付けられている。また、ベクトル割付部54により動きベクトルが割り付けられた画素の割付フラグメモリ56の割付フラグには、1(true)が書き込まれており、動きベクトルが割り付けられなかった画素の割付フラグメモリ56の割付フラグには、0(false)が書き込まれている。
割付ベクトル判定部801は、ステップS801において、割付フラグメモリ56の内挿フレームの画素を、着目画素として選択し、ステップS802に進む。このとき、割付ベクトル判定部801は、フレームの左上の画素からラスタスキャン順に画素を選択する。
割付ベクトル判定部801は、ステップS802において、割付フラグメモリ56内の着目画素の割付フラグが、0(false)であるか否かを判断し、割付フラグメモリ56内の着目画素の割付フラグが、0(false)であると判断した場合、動きベクトルが割り付けられていないと判定し、ステップS803において、補償処理部811を制御し、ベクトル補償処理を実行させる。このベクトル補償処理により、周辺画素に割り付けられた動きベクトルの中から、評価値DFDの最小の動きベクトルが補償候補ベクトルとしてメモリ821に記憶される。
補償処理部811は、ステップS804において、メモリ821の補償候補ベクトルを、着目画素の動きベクトルとして、割付ベクトルメモリ55に割り付け、さらにステップS805において、割付フラグメモリ56の着目画素の割り付けフラグを、1(true)に書き換える。
一方、ステップS802において、割付ベクトル判定部801は、割付フラグメモリ56内の着目画素の割付フラグが、0(false)ではない(1(true)である)と判断した場合、その着目画素にはすでに動きベクトルが割り付けられていると判定して、ステップS803乃至S805の処理をスキップする。
割付ベクトル判定部801は、ステップS806において、割付フラグメモリ56の内挿フレームのすべての画素の処理を終了したかを判断する。すべての画素の処理がまだ終了していないと判断された場合、処理はステップS801に戻り、割付フラグメモリ56の内挿フレームの次の画素が、着目画素として選択され、それ以降の処理が実行される。ステップS806において、割付フラグメモリ56の内挿フレームのすべての画素の処理が終了したと判断された場合、割付補償処理は終了される。
以上のように、ベクトル割付処理において、割り付けることができなかった画素に関しても、動き相関があることを利用して、その画素の周辺の動きベクトルの中から、評価値DFDに基づく、最も信頼度がある、確からしい動きベクトルを得ることができる。これにより、ベクトルが割り付けられず、0ベクトルなどを割り付けておく場合よりも、ベクトル割付の精度が向上し、後段の画像補間処理において生成される画像の不連続性を抑制することができる。
また、上述した割付補償処理により動きベクトルが割り付けられた画素の割付フラグを1(true)に書き換えるようにし、割付補償処理により割り付けられた動きベクトルも、次の画素の補償候補ベクトルとして用いるようにしたので、オブジェクト内でほぼ同じ動きをする画素には、ほぼ同一の動きベクトルが選択されるようになり、誤りの少ない安定した動きベクトルを得ることができる。その結果、後段において生成される画像のブロックノイズや粉状ノイズなどを抑制し、品質を向上させることができる。
また、動きベクトルを求める着目画素について、0ベクトルの評価値DFDを予め算出し、最小評価値としてメモリに保持しておくことにより、すべての補償候補ベクトル評価値DFDを一度に算出し、その中から最小の評価値DFDを選択する場合よりも、時間とリソースを効率的に使用することができる。
なお、上記説明においては、ベクトル割付部54において割り付けられなかった画素に対してベクトル補償処理を行っているが、ベクトル検出部52において検出されなかった(0ベクトルが検出された)画素など、何らかの処理において動きベクトルが求められなかった画素に対してベクトル補償処理を行うようにしてもよい。また、さらに、検出された動きベクトル、または、割り付けられた動きベクトルが確からしくない(信頼度が低い)とされる画素に対してベクトル補償処理を行うようにしてもよい。
本実施の形態においては、動きベクトルを選択する際の評価値として、差分絶対値和である評価値DFDを用いて説明したが、評価値DFDに限定されず、動きベクトルの信頼度を評価するものであれば、他のものを用いるようにしてもよい。
また、本実施の形態においては、各処理を行うブロックを、例えば、8画素×8画素や9画素×9画素などにより構成するようにして説明したが、これらは、一例であり、各処理を行うブロックを構成する画素は、上記画素数に限定されない。
さらに、本実施の形態においては、24P信号から60P信号への信号変換を例に、説明を行ったが、本発明は、例えば、動画像のフレーム周波数変換として、インターレース信号や、他のフレームレート変換にも適用することができる。
図42は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータの構成の例を示すブロック図である。CPU(Central Processing Unit)921は、ROM(Read Only Memory)922、または記憶部928に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)923には、CPU921が実行するプログラムやデータなどが適宜記憶される。これらのCPU921、ROM922、およびRAM923は、バス924により相互に接続されている。
CPU921にはまた、バス924を介して入出力インターフェース925が接続されている。入出力インターフェース925には、キーボード、マウス、マイクロホンなどよりなる入力部926、ディスプレイ、スピーカなどよりなる出力部927が接続されている。CPU921は、入力部926から入力される指令に対応して各種の処理を実行する。そして、CPU921は、処理の結果を出力部927に出力する。
入出力インターフェース925に接続されている記憶部928は、例えばハードディスクからなり、CPU921が実行するプログラムや各種のデータを記憶する。通信部929は、インターネットやローカルエリアネットワークなどのネットワークを介して外部の装置と通信する。
また、通信部929を介してプログラムを取得し、記憶部928に記憶してもよい。
入出力インターフェース925に接続されているドライブ930は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア931が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部928に転送され、記憶される。
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム格納媒体からインストールされる。
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム格納媒体は、図42に示すように、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini-Disc)を含む)、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア931、または、プログラムが一時的もしくは永続的に格納されるROM922や、記憶部928を構成するハードディスクなどにより構成される。プログラム格納媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインターフェースである通信部929を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
なお、本明細書において、プログラム格納媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
なお、本明細書において、フローチャートに示されるステップは、記載された順序に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
3 信号処理装置, 51 フレームメモリ, 52 ベクトル検出部, 53 検出ベクトルメモリ, 55 ベクトル割付部, 56 割付ベクトルメモリ, 57 割付フラグメモリ, 58 割付補償部, 59 画像補間部, 101 初期ベクトル選択部, 103 反復勾配法演算部, 104 ベクトル評価部, 105 シフト初期ベクトル割付部, 106 評価値メモリ, 107 シフト初期ベクトルメモリ 701 画素情報演算部, 702 評価値演算部, 703 着目画素差分演算部, 704 ベクトル評価部, 705 ベクトル選択部, 706 背景ベクトル検出部, 711 画素差分判断部, 712 評価値判断部