JP4512985B2 - 画像処理装置および方法、記録媒体、並びにプログラム - Google Patents

画像処理装置および方法、記録媒体、並びにプログラム Download PDF

Info

Publication number
JP4512985B2
JP4512985B2 JP2004116012A JP2004116012A JP4512985B2 JP 4512985 B2 JP4512985 B2 JP 4512985B2 JP 2004116012 A JP2004116012 A JP 2004116012A JP 2004116012 A JP2004116012 A JP 2004116012A JP 4512985 B2 JP4512985 B2 JP 4512985B2
Authority
JP
Japan
Prior art keywords
pixel
vector
motion vector
frame
gradient
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004116012A
Other languages
English (en)
Other versions
JP2005301622A (ja
Inventor
彰彦 貝野
悠太 長木
幸弘 中村
典文 吉原
康昭 高橋
賢 堀士
邦雄 川口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2004116012A priority Critical patent/JP4512985B2/ja
Publication of JP2005301622A publication Critical patent/JP2005301622A/ja
Application granted granted Critical
Publication of JP4512985B2 publication Critical patent/JP4512985B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

本発明は、画像処理装置および方法、記録媒体、並びにプログラムに関し、特に、動きベクトル検出の精度を向上することができるようにした画像処理装置および方法、記録媒体、並びにプログラムに関する。
画像のフレーム周波数を変換する画像処理装置において、着目ブロックの動きベクトルを検出する1つの方法として、勾配法が用いられる。この勾配法においては、微小動きに対しては、精度の高い結果を得ることができるが、実際の動画像の中で動きを求める場合には、その動きが大きすぎて、実用的ではない。したがって、特許文献1に示されるように、勾配法の演算を繰り返し行うことにより対応している。
勾配法の演算を行う場合、着目ブロックに対応する、演算の対象となるブロックに属する複数の画素が使用され、1つの動きベクトルが求められる。
特開昭60−158786号公報
しかしながら、異なる動きの物体の境界付近などにおいては、勾配法の演算に用いるブロックの中に、それぞれに異なる動きをする画素が含まれることになる。このような場合、動きベクトルを正確に検出できないときがあるという課題があった。
本発明は、このような状況に鑑みてなされたものであり、より正確に動きベクトルを検出することができるようにするものである。
本発明の画像処理装置は、所定の画素の画素値の第1の方向の勾配、所定の画素の画素値の第2の方向の勾配、および所定の画素の画素値の時間方向の勾配を演算する勾配演算手段と、第1の方向の勾配、第2の方向の勾配、および時間方向の勾配を基に、第1の方向の動きを第1の軸とし、第2の方向の動きを第2の軸とする座標系における、画素の輝度が一定であるという条件を満たす画素の第1の方向の動きの成分および第2の方向の動きの成分の組に対応する点からなる直線の切片を算出する切片演算手段と、着目画素に対する直線の傾きが0または無限大でない場合、着目画素に対する直線の第1の方向の切片を第1の基準位置として、第1の基準位置から判定の対象となる画素に対する直線の第1の方向の切片までの距離が、所定の閾値より小さく、かつ、着目画素に対する直線の第2の方向の切片を第2の基準位置として、第2の基準位置から判定の対象となる画素に対する直線の第2の方向の切片までの距離が、所定の閾値より小さいか否かを基に、着目画素の前記動きベクトルを勾配法により検出する演算処理に、画素を使用するか否かを判定する判定手段とを備える
ことを特徴とする。
判定手段は、着目画素に対する直線の傾きが0である場合、着目画素に対する直線の第2の方向の切片を第2の基準位置として、第2の基準位置から判定の対象となる画素に対する直線の第2の方向の切片までの距離が、所定の閾値より小さく、かつ、判定の対象となる画素に対する直線の第1の方向の勾配が0でないか否かを基に、演算処理に、画素を使用するか否かを判定するようにすることができる。
判定手段は、着目画素に対する直線の傾きが無限大である場合、着目画素に対する直線の第1の方向の切片を第1の基準位置として、第1の基準位置から判定の対象となる画素に対する直線の第1の方向の切片までの距離が、所定の閾値より小さく、かつ、判定の対象となる画素に対する直線の第2の方向の勾配が0でないか否かを基に、演算処理に、画素を使用するか否かを判定するようにすることができる。
画像処理装置は、着目画素近傍の予め定められた領域内の画素のうち、判定手段により演算処理に使用されると判定された画素を用いて演算処理を行ない、着目画素の動きベクトルを検出する検出手段をさらに設けることができる。
画像処理装置は、動きベクトルの信頼度の高さを評価する評価手段をさらに設け、切片演算手段は、前回検出された動きベクトルの評価の結果を表す評価値が、0ベクトルである動きベクトルの評価値よりも大きい場合、画素の位置に前回検出された動きベクトルを加算した位置からの画素の第1の方向の動きの成分および第2の方向の動きの成分の組に対応する点からなる直線の切片を算出するようにすることができる。
本発明の画像処理方法は、所定の画素の画素値の第1の方向の勾配、所定の画素の画素値の第2の方向の勾配、および所定の画素の画素値の時間方向の勾配を演算する勾配演算ステップと、第1の方向の勾配、第2の方向の勾配、および時間方向の勾配を基に、第1の方向の動きを第1の軸とし、第2の方向の動きを第2の軸とする座標系における、画素の輝度が一定であるという条件を満たす画素の第1の方向の動きの成分および第2の方向の動きの成分の組に対応する点からなる直線の切片を算出する切片演算ステップと、着目画素に対する直線の傾きが0または無限大でない場合、着目画素に対する直線の第1の方向の切片を第1の基準位置として、第1の基準位置から判定の対象となる画素に対する直線の第1の方向の切片までの距離が、所定の閾値より小さく、かつ、着目画素に対する直線の第2の方向の切片を第2の基準位置として、第2の基準位置から判定の対象となる画素に対する直線の第2の方向の切片までの距離が、所定の閾値より小さいか否かを基に、着目画素の動きベクトルを勾配法により検出する演算処理に、画素を使用するか否かを判定する判定ステップとを含むことを特徴とする。
本発明の記録媒体のプログラムは、所定の画素の画素値の第1の方向の勾配、所定の画素の画素値の第2の方向の勾配、および所定の画素の画素値の時間方向の勾配を演算する勾配演算ステップと、第1の方向の勾配、第2の方向の勾配、および時間方向の勾配を基に、第1の方向の動きを第1の軸とし、第2の方向の動きを第2の軸とする座標系における、画素の輝度が一定であるという条件を満たす画素の第1の方向の動きの成分および第2の方向の動きの成分の組に対応する点からなる直線の切片を算出する切片演算ステップと、着目画素に対する直線の傾きが0または無限大でない場合、着目画素に対する直線の第1の方向の切片を第1の基準位置として、第1の基準位置から判定の対象となる画素に対する直線の第1の方向の切片までの距離が、所定の閾値より小さく、かつ、着目画素に対する直線の第2の方向の切片を第2の基準位置として、第2の基準位置から判定の対象となる画素に対する直線の第2の方向の切片までの距離が、所定の閾値より小さいか否かを基に、着目画素の動きベクトルを勾配法により検出する演算処理に、画素を使用するか否かを判定する判定ステップとを含むことを特徴とする。
本発明のプログラムは、所定の画素の画素値の第1の方向の勾配、所定の画素の画素値の第2の方向の勾配、および所定の画素の画素値の時間方向の勾配を演算する勾配演算ステップと、第1の方向の勾配、第2の方向の勾配、および時間方向の勾配を基に、第1の方向の動きを第1の軸とし、第2の方向の動きを第2の軸とする座標系における、画素の輝度が一定であるという条件を満たす画素の第1の方向の動きの成分および第2の方向の動きの成分の組に対応する点からなる直線の切片を算出する切片演算ステップと、着目画素に対する直線の傾きが0または無限大でない場合、着目画素に対する直線の第1の方向の切片を第1の基準位置として、第1の基準位置から判定の対象となる画素に対する直線の第1の方向の切片までの距離が、所定の閾値より小さく、かつ、着目画素に対する直線の第2の方向の切片を第2の基準位置として、第2の基準位置から判定の対象となる画素に対する直線の第2の方向の切片までの距離が、所定の閾値より小さいか否かを基に、着目画素の動きベクトルを勾配法により検出する演算処理に、画素を使用するか否かを判定する判定ステップとを含むことを特徴とする。
本発明の画像処理装置および方法、記録媒体、並びにプログラムにおいては、所定の画素の画素値の第1の方向の勾配、所定の画素の画素値の第2の方向の勾配、および所定の画素の画素値の時間方向の勾配が演算され、第1の方向の勾配、第2の方向の勾配、および時間方向の勾配を基に、第1の方向の動きを第1の軸とし、第2の方向の動きを第2の軸とする座標系における、画素の輝度が一定であるという条件を満たす画素の第1の方向の動きの成分および第2の方向の動きの成分の組に対応する点からなる直線の切片が算出され、着目画素に対する直線の傾きが0または無限大でない場合、着目画素に対する直線の第1の方向の切片を第1の基準位置として、第1の基準位置から判定の対象となる画素に対する直線の第1の方向の切片までの距離が、所定の閾値より小さく、かつ、着目画素に対する直線の第2の方向の切片を第2の基準位置として、第2の基準位置から判定の対象となる画素に対する直線の第2の方向の切片までの距離が、所定の閾値より小さいか否かを基に、着目画素の動きベクトルを勾配法により検出する演算処理に、画素を使用するか否かが判定される。
本発明によれば、より正確に動きベクトルを検出することができる。
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。したがって、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。
本発明によれば、画像処理装置が提供される。この画像処理装置は、所定の画素の画素値の第1の方向の勾配、所定の画素の画素値の第2の方向の勾配、および所定の画素の画素値の時間方向の勾配を演算する勾配演算手段(例えば、図26の勾配演算部622)と、第1の方向の勾配、第2の方向の勾配、および時間方向の勾配を基に、第1の方向の動きを第1の軸とし、第2の方向の動きを第2の軸とする座標系における、画素の輝度が一定であるという条件を満たす画素の第1の方向の動きの成分および第2の方向の動きの成分の組に対応する点からなる直線の切片を算出する切片演算手段(例えば、図26の切片演算部623)と、着目画素に対する直線の傾きが0または無限大でない場合、着目画素に対する直線の第1の方向の切片を第1の基準位置として、第1の基準位置から判定の対象となる画素に対する直線の第1の方向の切片までの距離が、所定の閾値より小さく、かつ、着目画素に対する直線の第2の方向の切片を第2の基準位置として、第2の基準位置から判定の対象となる画素に対する直線の第2の方向の切片までの距離が、所定の閾値より小さいか否かを基に、着目画素の前記動きベクトルを勾配法により検出する演算処理に、画素を使用するか否かを判定する判定手段(例えば、図26の切片位置判定部624)とを備える。
本発明は、24P信号から60P信号へのフレーム周波数変換処理を行う信号処理装置に適用できる。
以下、図を参照して本発明の実施の形態について説明する。
図1は、本発明を適用した信号処理装置1の構成例を表している。信号処理装置1は、例えば、パーソナルコンピュータなどで構成される。図1において、CPU(Central Processing Unit)11は、ROM(Read Only Memory)12、または記憶部18に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)13には、CPU11が実行するプログラムやデータなどが適宜記憶される。これらのCPU11、ROM12、およびRAM13は、バス14により相互に接続されている。
CPU11にはまた、バス14を介して入出力インタフェース15が接続されている。入出力インタフェース15には、キーボード、マウス、マイクロフォンなどよりなる入力部16、ディスプレイ、スピーカなどよりなる出力部17が接続されている。CPU11は、入力部16から入力される指令に対応して各種の処理を実行する。そして、CPU11は、処理の結果、得られた画像や音声等を出力部17に出力する。
入出力インタフェース15に接続されている記憶部18は、例えばハードディスクなどで構成され、CPU11が実行するプログラムや各種のデータを記憶する。通信部19は、インターネット、その他のネットワークを介して外部の装置と通信する。また、通信部19を介してプログラムを取得し、記憶部18に記憶してもよい。
入出力インタフェース15に接続されているドライブ20は、磁気ディスク31、光ディスク32、光磁気ディスク33、或いは半導体メモリ34などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部18に転送され、記憶される。
なお、信号処理装置1は、例えば、テレビジョン受像機、光ディスクプレーヤなど、または、それらの信号処理部とすることもできる。
図2は、信号処理装置1を示すブロック図である。
なお、信号処理装置1の各機能をハードウェアで実現するか、ソフトウェアで実現するかは問わない。つまり、本明細書の各ブロック図は、ハードウェアのブロック図と考えても、ソフトウェアによる機能ブロック図と考えてもよい。
図2に構成を示す信号処理装置1においては、例えば、フレーム周波数24Hzのプログレッシブ画像信号(以下、24P信号と称する)の画像が入力され、入力された画像(入力画像)が、フレーム周波数60Hzのプログレッシブ画像信号(以下、60P信号と称する)の画像に変換されて、出力される。すなわち、図2は、画像処理装置である信号処理装置の構成を示す図である。
信号処理装置1に入力された24P信号の入力画像は、フレームメモリ51、ベクトル検出部52、ベクトル割付部54、割付補償部57、および画像補間部58に供給される。フレームメモリ51は、入力画像をフレーム単位で記憶する。フレームメモリ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の構成の詳細は、後述する。検出ベクトルメモリ53は、フレームtにおいて、ベクトル検出部52により検出された動きベクトルを記憶する。
ベクトル割付部54は、24P信号のフレームt上において求められた動きベクトルを、割付ベクトルメモリ55上の、補間する60P信号のフレーム(以下、60P信号のフレームは、24P信号のフレームと区別するため、内挿フレームとも称する)上の画素に割り付け、動きベクトルが割り付けられた画素の割付フラグメモリ56の割付フラグを1(True)に書き換える。ベクトル割付部54の構成の詳細は、後述する。
割付ベクトルメモリ55は、ベクトル割付部54により割り付けられた動きベクトルを、内挿フレームの各画素に対応させて記憶する。割付フラグメモリ56は、内挿フレームの画素毎に、割り付けられる動きベクトルの有無を示す割付フラグを記憶している。例えば、True(1)である割付フラグは、対応する画素に動きベクトルが割り付けられていることを示し、False(0)である割付フラグは、対応する画素に動きベクトルが割り付けられていないことを示す。
割付補償部57は、割付フラグメモリ56の割付フラグを参照し、ベクトル割付部54により動きベクトルが割り付けられなかった着目画素に対して、その着目画素の周辺画素の動きベクトルを補い、割付ベクトルメモリ55の内挿フレーム上に割り付ける。このとき、割付補償部57は、動きベクトルを割り付けた着目画素の割付フラグを1(True)に書き換える。割付補償部57の構成の詳細は、後述する。
画像補間部58は、割付ベクトルメモリ55の内挿フレームに割り付けられた動きベクトルと、フレームtおよび次のフレームt+1の画素値を用いて、内挿フレームの画素値を補間生成する。そして、画像補間部58は、生成された内挿フレームを出力し、その次に、必要に応じて、フレームt+1を出力することにより、60P信号の画像を、図示せぬ後段に出力する。なお、以下においては、画素値を、適宜、輝度値とも称する。
図3は、本発明に係る信号処理装置1における処理の原理を説明する図である。図3の例においては、点線が、信号処理装置1に入力される、時刻t,t+1,およびt+2における24P信号のフレームを表しており、実線が、入力された24P信号から信号処理装置1により、生成される時刻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信号上には存在しない画像である。したがって、信号処理装置1は、24P信号の画像が入力されると、24P信号の時刻tおよび時刻t+1の2枚のフレームから、4つの内挿フレームを生成する。したがって、信号処理装置1からは、時刻t,t+0.4,t+0.8,t+1.2,およびt+1.6の5枚のフレームからなる60P信号の画像が出力される。
以上のようにして、信号処理装置1は、24P信号の画像から60P信号の画像に、フレーム周波数を変換する処理を実行する。
なお、原理的には、上述したように、24P信号の時刻tおよび時刻t+1の2枚のフレームから、時刻t,t+0.4,t+0.8,t+1.2,およびt+1.6の5枚の60P信号のフレームが新しく生成されるが、実際には、図3の例の場合、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信号のフレームが生成される。
図4は、本発明の処理をより具体的に説明する図である。図4の例においては、太線矢印は、各状態への遷移を表しており、矢印Tは、状態81乃至85における時間の経過方向を表している。また、状態81乃至85は、信号処理装置1を構成する各部への入出力時の、24P信号の時刻tのフレームt、時刻tの次の時刻t+1のフレームt+1、または、フレームtおよびフレームt+1の間に生成される60P信号の内挿フレームFの状態を概念的に表している。すなわち、実際には、例えば、状態82に示されるような動きベクトルが検出されたフレームは入力されず、フレームと動きベクトルは、別々に入力される。
状態81は、ベクトル検出部52に入力される、24P信号のフレームtおよびフレームt+1の状態を表している。状態81のフレームt上の黒点は、フレームt上の画素を表している。ベクトル検出部52は、状態81のフレームt上の画素が、次の時刻のフレームt+1において、どの位置に移動するかを検出し、その動きを、状態82のフレームt上に示されるように、各画素に対応する動きベクトルとして出力する。この2フレーム間の動きベクトルの検出方法には、ブロックマッチング法または勾配法などが用いられる。なお、このとき、画素に複数の動きベクトルが検出された場合、ベクトル検出部52は、各動きベクトルについて、後述する評価値を求め、その評価値に基づいて動きベクトルを選択する。
状態82は、ベクトル割付部54に入力される、フレームtおよびフレームt+1の状態を表している。状態82において、フレームtの各画素の矢印は、ベクトル検出部52により検出された動きベクトルを表している。
ベクトル割付部54は、状態82のフレームtの各画素に対して検出された動きベクトルを、次のフレームt+1まで延長させ、予め設定されている時間位相(例えば、図3の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信号の画像を、図示せぬ後段に出力する。
次に、図5を参照して、本発明に係る信号処理装置1において用いられる動きベクトルの評価値を説明する。図4を参照して上述したように、信号処理装置1の各部(ベクトル検出部52、ベクトル割付部54、および割付補償部57)において、後段の処理に最適な動きベクトルが選択される。このとき、信号処理装置1の各部においては、動きベクトルに対する評価値として、2つのフレームの注目するベクトル量分ずらしたブロック間の相関値を表す差分絶対値和(DFD(Displaced Frame Difference))が用いられる。
図5の例においては、時刻tのフレームt上の画素位置pを中心としたm×nのブロック、および、時刻t+1のフレームt+1上の画素位置pから注目する動きベクトルvのベクトル量分ずらした画素位置p+vを中心としたm×nのブロックの2つのブロックが示されている。これら2つのブロック間において求められる差分絶対値和DFDt(p)は、次の式(1)で表される。
Figure 0004512985
・・・(1)
ここで、Ft(p)は、時刻tにおける画素位置pの輝度値を表しており、m×nは、差分絶対値和を求めるためのDFD演算範囲(ブロック)を表している。この差分絶対値和は、2つのフレームにおけるDFD演算範囲(ブロック)間の相関値を表しているため、一般的には、この差分絶対値和が小さいほどフレーム間のブロックの波形が一致しており、差分絶対値和が小さいほど、動きベクトルvの信頼度が高いと判定される。これにより、この差分絶対値和は、複数の候補の中から、最も確からしい動きベクトルを選ぶ場合などに用いられる。
したがって、以降、信号処理装置1の各部(ベクトル検出部52、ベクトル割付部54、および割付補償部57)においては、動きベクトルが選択される場合の評価値として、特に言及しない場合には、差分絶対値和(以下、評価値DFDと称する)が用いられることとする。
次に、図6のフローチャートを参照して、信号処理装置1のフレーム周波数を変換する処理を説明する。
ステップS1において、ベクトル検出部52は、時刻t+1の入力画像のフレームt+1と、フレームメモリ51の入力画像の1つ前の時刻tのフレームtの画素値を入力し、ステップS2に進む。なお、このとき、ベクトル割付部54、割付補償部57および画像補間部58は、時刻t+1の入力画像のフレームt+1と、フレームメモリ51の入力画像の1つ前の時刻tのフレームtの画素値を入力する。
ステップS2において、ベクトル検出部52は、動きベクトル検出処理を実行し、ステップS3に進む。すなわち、ベクトル検出部52は、フレームメモリ51上のフレームtの着目ブロックと、入力画像である次のフレームt+1の対象ブロックの間で動きベクトルを検出し、検出した動きベクトルを、検出ベクトルメモリ53に記憶し、ステップS3に進む。この2フレーム間の動きベクトルの検出方法には、勾配法またはブロックマッチング法などが用いられる。また、動きベクトルの候補が複数ある場合には、各動きベクトルに対して、評価値DFDが求められ、求められた評価値DFDに基づいた信頼度の高い動きベクトルが検出される。すなわち、この場合、動きベクトルを検出する着目ブロックにおいて、最も確からしい動きベクトルが選択され、検出される。ステップS2における、動きベクトル検出処理の詳細は、後述する。
ステップS3において、ベクトル割付部54は、ベクトル割付処理を実行し、ステップS4に進む。すなわち、ベクトル割付部54は、ステップS3において、フレームt上において求められた動きベクトルを、割付ベクトルメモリ55上の、補間する内挿フレーム上の着目画素に割り付け、動きベクトルが割り付けられた画素の割付フラグメモリ56の割付フラグを1(True)に書き換える。例えば、Trueである割付フラグは、対応する画素に動きベクトルが割り付けられていることを示し、Falseである割付フラグは、対応する画素に動きベクトルが割り付けられていないことを示す。なお、各画素において、動きベクトルの候補が複数ある場合には、各動きベクトルに対して、評価値DFDが求められ、求められた評価値DFDに基づいた信頼度の高い動きベクトルが割り付けられる。すなわち、この場合、動きベクトルを割り付ける着目画素において、最も確からしい動きベクトルが選択され、割り付けられる。ステップS3における、ベクトル割付処理の詳細は、後述する。
ステップS4において、割付補償部57は、割付補償処理を実行し、ステップS5に進む。すなわち、割付補償部57は、ステップS4において、割付フラグメモリ56の割付フラグを参照し、ベクトル割付部54により動きベクトルが割り付けられなかった着目画素に対して、その着目画素の周辺画素の動きベクトルを補い、割付ベクトルメモリ55の内挿フレーム上に割り付ける。このとき、割付補償部57は、動きベクトルを補い、割付けた着目画素の割付フラグを1(True)に書き換える。なお、周辺画素の動きベクトルが複数ある場合には、各動きベクトルに対して、評価値DFDが求められ、求められた評価値DFDに基づいた、信頼度の高い動きベクトルが割り付けられる。すなわち、この場合、動きベクトルを割り付ける着目画素において、最も確からしい動きベクトルが選択され、割り付けられる。ステップS4における、割付補償処理の詳細は、後述する。
ステップS5において、画像補間部58は、画像補間処理を実行する。すなわち、画像補間部58は、ステップS5において、割付ベクトルメモリ55の内挿フレームに割り付けられた動きベクトルと、フレームtおよびフレームt+1の画素値を用いて、内挿フレームの画素値を補間生成し、ステップS6に進む。ステップS5における、画像補間処理の詳細は後述する。画像補間部58は、ステップS6において、生成された内挿フレームを出力し、その次に、必要に応じて、フレームt+1を出力することにより、60P信号の画像を、図示せぬ後段に出力し、ステップS7に進む。
ステップS7において、ベクトル検出部52は、すべてのフレームの処理が終了したか否かを判断し、すべてのフレームの処理が終了していないと判断した場合、ステップS1に戻り、それ以降の処理を繰り返す。一方、ベクトル検出部52は、ステップS7において、すべてのフレームの処理が終了したと判断した場合、フレーム周波数を変換する処理を終了する。
以上のように、本発明に係る信号処理装置1は、24P信号の入力画像のフレームから動きベクトルを検出し、検出した動きベクトルを、60P信号のフレーム上の画素に割付け、割付けられた動きベクトルに基づいて、60P信号のフレーム上の画素値を生成する。このとき、信号処理装置1は、各処理において、評価値DFD(差分絶対値和)に基づく、より信頼度の高い動きベクトルを選択し、後段に出力する。したがって、信号処理装置1においては、動きが破綻することなどが抑制され、より精度のよい画像を生成することができる。
次に、画像補間部58の構成の詳細について説明する。
図7は、画像補間部58の構成を示すブロック図である。図7に構成を示す画像補間部58は、割付ベクトルメモリ55の内挿フレームに割り付けられた動きベクトルと、フレームtおよびフレームt+1の画素値を用いて、内挿フレームの画素値を補間生成し、60P信号の画像を出力する処理を行う。
図7の例において、時刻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画素との距離を基にした線形補間で値が求められる(その詳細は後述する)。
乗算器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の画像補間処理の詳細を、図8のフローチャートを参照して説明する。
補間制御部91は、ステップS51において、処理する内挿フレームの時間位相に基づいて、フレームtとフレームt+1の間における内挿フレームの補間重み(例えば、「k」および「1−k」)を求め、求められた補間重みを、乗算器93−1および93−2にそれぞれ設定し、ステップS52に進む。補間制御部91は、ステップS52において、割付ベクトルメモリ55の内挿フレームの画素を選択し、ステップS53に進む。なお、内挿フレーム上の画素は、フレームの左上の画素からラスタスキャン順に選択される。
補間制御部91は、ステップS53において、選択した画素に割り付けられている動きベクトルに基づいて、内挿フレーム上の画素と、2枚のフレームtおよびフレームt+1の画素との位置関係(空間シフト量)をそれぞれ求め、求められた空間シフト量を、それぞれ空間フィルタ92−1および92−2に供給し、ステップS54に進む。具体的には、補間制御部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にそれぞれ出力し、ステップS55に進む。
乗算器93−1および93−2は、ステップS55において、空間フィルタ92−1または92−2から入力される各フレーム上の画素値に、補間制御部91により設定された補間重みを重み付けし、重み付けされた画素値を、加算器94に出力し、ステップS56に進む。すなわち、乗算器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に出力し、ステップS57に進む。補間制御部91は、ステップS57において、内挿フレーム上のすべての画素についての処理が終了したか否かを判断し、内挿フレーム上のすべての画素についての処理が終了していないと判断した場合、ステップS52に戻り、それ以降の処理を繰り返す。互換制御部91は、ステップS57において、内挿フレーム上のすべての画素についての処理が終了したと判断した場合、画像補間処理を終了する。
以上のように、内挿フレームに割り付けられた動きベクトルに基づいて、内挿フレームの画素値が生成され、上述した図6のステップS6において、バッファ95により、内挿フレームが出力され、その次に、必要に応じて、フレームt+1が出力されることにより、60P信号の画像が、後段に出力される。したがって、内挿フレームの画素に、最も確からしい動きベクトルが割り付くので、精度のよい内挿フレームを生成することができる。
次に、ベクトル検出部52の構成の詳細について説明する。
図9は、ベクトル検出部52の構成を示すブロック図である。図9に構成を示すベクトル検出部52は、入力される時刻tの画像のフレームtと、時刻t+1の画像のフレームt+1を用いて、フレームt上の動きベクトルを検出する。この動きベクトルを検出する処理は、複数の画素からなる所定のブロック毎に実行される。
初期ベクトル選択部101は、所定のブロック毎に、過去の動きベクトルの検出結果から求められる信頼度が高い動きベクトルを、勾配法に用いられる初期値となる初期ベクトルV0として、反復勾配法演算部103に出力する。具体的には、初期ベクトル選択部101は、検出ベクトルメモリ53に記憶される過去に求められた周辺のブロックの動きベクトルや、シフト初期ベクトルメモリ107に記憶されるシフト初期ベクトルを、初期ベクトルの候補ベクトルとして選択する。そして、初期ベクトル選択部101は、フレームtとフレームt+1を用いて、候補ベクトルの評価値DFDを求め、候補ベクトルの中から、求められた評価値DFDに基づく、最も信頼度が高いものを選択し、初期ベクトルV0として出力する。なお、初期ベクトル選択部101の構成の詳細は、後述する。
プリフィルタ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を算出する。なお、反復勾配法演算部103の構成の詳細は、後述する。
ベクトル評価部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に割り付ける。なお、シフト初期ベクトル割付部105の構成の詳細は、後述する。
次に、ベクトル検出部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)を演算することにより求めることができる。
Figure 0004512985
・・・(9)
ここで、図10を参照して、具体的に説明する。図10の例において、矢印Xは、水平方向を示しており、矢印Yは、垂直方向を示している。また、矢印Tは、図中、右奥の時刻tのフレームtから、左手前の時刻t+1のフレームt+1への時間の経過方向を示している。なお、図10の例においては、各フレームは、着目画素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においては、過去フレームと現在フレームでの周辺画素の動きに基づいて求められる初期ベクトルを、初期値として用いることで、勾配法の繰り返し回数を軽減している。すなわち、動きの起点となる着目画素から、初期ベクトルが指す先へオフセットを予め加えることで大まかな動きを算出し、オフセットが加えられたその位置から勾配法を用いた演算を行うようにすれば、画素以下動きを含めた微調整を行うことができる。これにより、演算時間を増大させることなく、精度のよい動きベクトルを検出することができる。
図11は、初期ベクトルを用いて実行される反復勾配法について具体的に説明する図である。図11の例においては、矢印Tは、図中、左手前の時刻tのフレームtから、右奥の時刻t+1のフレームt+1への時間の経過を示している。なお、各画素p,q0,q1,q2,およびq3を中心としたブロックは、その画素の、勾配法演算に用いられる周辺領域(ブロック)を表している。
図11の例の場合、フレームtにおける着目画素pに対して、フレームt+1においては、着目画素pの同位相に位置する画素q0ではなく、予め求めておいた初期ベクトルv0をオフセット(移動)して計算した位置(画素)q1を開始点として1回目の勾配法演算が行われ、その結果、動きベクトルv1が得られる。
次に、画素q0からv0+v1をオフセットして計算した位置(画素)q2を開始点として、2回目の勾配法演算が行われ、その結果、動きベクトルv2が得られる。これにより、最終的に動きベクトルVは、式(10)として求められる。
V = v0+v1+v2
・・・(10)
以上のようにして、初期ベクトルを用いて、反復勾配法の演算を実行することにより、演算時間を短縮させつつ、精度の高い動きベクトルを求めることができる。
次に、図12のフローチャートを参照して、動きベクトル検出処理の詳細について説明する。ベクトル検出部52には、入力される時刻tの画像のフレームtと、時刻t+1の画像のフレームt+1が入力される。
初期ベクトル選択部101は、ステップS101において、フレームt上の処理の対象となるブロックを、着目ブロックとして選択し、ステップS102に進む。なお、フレーム上においては、左上のブロックからラスタスキャン順に処理が実行される。
ステップS102において、初期ベクトル選択部101は、初期ベクトル選択処理を実行する。初期ベクトル選択部101は、ステップS101において、所定のブロック毎に、過去の動きベクトルの検出結果から、信頼度が高い動きベクトルを選択し、選択した動きベクトルを、勾配法に用いられる初期値となる初期ベクトルV0として、反復勾配法演算部103に出力し、ステップS103に進む。
すなわち、初期ベクトル選択部101は、過去の勾配法演算評価処理(後述するステップS103)において求められ、検出ベクトルメモリ53に記憶された周辺ブロックの動きベクトルや、過去のシフト初期ベクトル割付処理(後述するステップS104)においてシフト初期ベクトルメモリ107に記憶されたシフト初期ベクトルを、初期ベクトルの候補ベクトルとして選択する。そして、初期ベクトル選択部101は、フレームtとフレームt+1を用いて、候補ベクトルの評価値DFDを求め、候補ベクトルの中から、求められた評価値DFDに基づいた信頼度が高いものを選択し、選択された候補ベクトルを、初期ベクトルV0として出力する。なお、ステップS102における、初期ベクトル選択処理の詳細は、後述する。
ステップS103において、反復勾配法演算部103およびベクトル評価部104は、反復勾配法演算評価処理(なお、反復勾配法演算処理とも称する)を実行し、ステップS104に進む。具体的には、ステップ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に供給する。なお、ステップS103における、反復勾配法演算処理の詳細は、後述する。
ステップS104において、シフト初期ベクトル割付部105は、シフト初期ベクトル割付処理を実行し、ステップS105に進む。シフト初期ベクトル割付部105は、ベクトル評価部104より動きベクトルVおよびその評価値DFDが供給されると、ステップS104において、次のフレーム上の着目ブロックを通過する動きベクトルを、その着目ブロックにシフトさせた、シフト初期ベクトルとして設定する。すなわち、換言すると、動きベクトルVの終点のブロックと同じ位置の次のフレーム上の着目ブロックを始点とした、動きベクトルVと同じ大きさで同じ向きの動きベクトルが、シフト初期ベクトルとして設定される。そして、シフト初期ベクトル割付部105は、設定したシフト初期ベクトルを、着目ブロックに対応させて、シフト初期ベクトルメモリ107に割り付ける。
なお、具体的には、シフト初期ベクトル割付部105は、シフト初期ベクトルとして割り付けられた動きベクトルVの評価値DFDを、着目ブロックに対応させて、評価値メモリ106に記憶させておき、同じ着目ブロックを通過する(すなわち、着目ブロックと同じ位置の過去のフレームのブロックを終点とする)他の動きベクトルVの評価値DFDと比較し、評価値DFDに基づく、信頼度が高いとされた動きベクトルVを、そのブロックにシフトさせてシフト初期ベクトルと設定し、シフトさせたブロックに対応させて、シフト初期ベクトルメモリ107に割り付ける。なお、シフト初期ベクトル割付部105の構成の詳細は、後述する。
ステップS105において、初期ベクトル選択部101は、フレームtにおいて、すべてのブロックの処理が終了したか否かを判断し、すべてのブロックの処理が終了していないと判断した場合、ステップS101に戻り、それ以降の処理を繰り返す。また、ステップS105において、初期ベクトル選択部101は、フレームtにおいて、すべてのブロックの処理が終了したと判断した場合、すなわち、フレームt上のすべてのブロックにおいて、動きベクトルVが検出されたと判断し、動きベクトル検出処理を終了する。
以上のように、過去に検出された動きベクトルから初期ベクトルが選択され、選択された初期ベクトルに基づいて、反復勾配法の演算が用いられて、繰り返し動きベクトルが算出され、算出された動きベクトルの中から、評価値DFDに基づく、信頼度が高い(すなわち、最も確からしい)動きベクトルが検出される。この結果、検出ベクトルメモリ53に、フレームt上のすべてのブロックに対応する動きベクトルVが記憶される。
次に、シフト初期ベクトル割付部105の構成の詳細について説明する。
図13は、シフト初期ベクトル割付部105の構成を示すブロック図である。図13に構成を示すシフト初期ベクトル割付部105は、前(過去)フレームにおいて、ベクトル評価部104より検出された動きベクトルVに基づいて、初期ベクトルの候補ベクトルとなるシフト初期ベクトルを設定し、シフト初期ベクトルメモリ107に割り付ける処理を行う。シフト初期ベクトル割付部105には、ベクトル評価部104より検出された動きベクトルV、および、その動きベクトルVの評価値DFDが入力される。
割付対象位置演算部201は、ベクトル評価部104より検出された動きベクトルVが、次の時刻のフレーム上において通過するブロックの位置(すなわち、現在のフレーム上において検出された動きベクトルVの終点のブロックと同じ位置にある次のフレーム上のブロックの位置)を演算し、演算されたブロックの位置を、評価値メモリ106およびシフト初期ベクトル置換部203に供給する。
評価値比較部202は、動きベクトルV、および、その動きベクトルVの評価値DFDが入力されると、割付対象位置演算部201からのブロックの位置の評価値DFDを、評価値メモリ106から読み出す。そして、評価値比較部202は、評価値メモリ106から読み出された評価値DFDと、ベクトル評価部104により検出された動きベクトルVの評価値DFDとを比較判断し、検出された動きベクトルVの評価値DFDの方が小さい(すなわち、信頼度が高い)と判断した場合、シフト初期ベクトル置換部203を制御し、シフト初期ベクトルメモリ107の、シフト初期ベクトル割付部105により供給されたブロックの位置のシフト初期ベクトルを、評価値DFDに基づく、信頼度が高いと判断した動きベクトルVで書き換えさせる。また、それと同時に、評価値比較部202は、評価値置換部204を制御し、評価値メモリ106において、割付対象位置演算部201により選択されたブロックの位置の評価値DFDを、動きベクトルVの評価値DFDで書き換えさせる。
シフト初期ベクトル置換部203は、シフト初期ベクトルメモリ107の、割付対象位置演算部201により供給されたブロックの位置のシフト初期ベクトルを、評価値比較部202から供給される動きベクトルV(すなわち、動きベクトルVと同じ大きさで同じ向きの動きベクトル)で書き換える。評価値置換部204は、評価値比較部202の制御のもと、評価値メモリ106において、割付対象位置演算部201により選択されたブロックの位置の評価値DFDを、動きベクトルVの評価値DFDで書き換える。
評価値メモリ106は、次のフレーム上における、各ブロックに割り当てられるシフト初期ベクトル候補の評価値DFDをブロック毎に記憶する。シフト初期ベクトルメモリ107は、次のフレームにおける各ブロックにおいて最も評価値DFDが小さい(すなわち、最も信頼度がある)動きベクトルを、シフト初期ベクトルとして、そのブロックに対応させて記憶する。
図14は、シフト初期ベクトル割付部105により割り付けられるシフト初期ベクトルを1次元的に説明する図である。図14の例においては、上から順に、時刻T=t−1のフレームt−1、時刻T=tのフレームt、および、時刻T=t+1のフレームt+1が示されており、各フレーム上の仕切りは、各フレームにおけるブロックの境界を示している。
図14の例の場合、フレームt−1上のブロックBにおいて検出される動きベクトルを、動きベクトルV(図中、実線矢印)とし、ブロックBを始点とする動きベクトルVによるフレームt上の動き補償先(以下、オフセット先とも称する)を、ブロックBtとする。また、フレームt−1上の動きベクトルVをフレームt上のブロックBtにシフトした動きベクトルを、シフト初期ベクトルSV(図中、点線矢印)とする。なお、この場合、オフセット先とは、フレームt−1上において検出された動きベクトルVの終点のブロックと同じ位置にあるフレームt上のブロックBtのことを表しており、シフトとは、フレームt−1上において検出された動きベクトルVと同じ大きさで同じ向きの動きベクトルの始点を、フレームt−1上の動きベクトルVの終点のブロックと同じ位置にあるフレームt上のブロックBtとすることをいう。すなわち、シフト初期ベクトルSVは、フレームt−1上において検出された動きベクトルVの終点のブロックと同じ位置にあるフレームt上のブロックBtを始点とした、動きベクトルVと同じ大きさで同じ向きの動きベクトルのことである。
一般的に、連続するフレーム間では、動物体の動き量にある程度の連続性があり、その動き量の変化が小さいとされるので、図14の例においては、ブロックB上の物体が等速かそれに近い動きをする場合、ブロックBtにおける動きベクトルも、動きベクトルVかそれに近い動きのベクトルになることが多い。
したがって、このシフト初期ベクトルSVを、フレームt上の着目ブロックBtの動きベクトルを検出する場合に、勾配法演算に与える初期ベクトルの候補として用いることにより、周辺ブロックの動きベクトルだけを初期ベクトルの候補として用いる場合よりも、勾配法演算による動きベクトル検出に、より適切な初期ベクトルを得ることができる。
以上のことを、図15および図16を参照して、具体的に説明する。なお、図15および図16においては、各フレーム上には、9つのブロックが示されている。
図15は、大きな動きの物体が通過しているブロックと、その周辺ブロックの動きベクトルの例を表している。図15の例の場合、1ブロックからなる、ある物体O1の画像オブジェクトは、大きな動きの動きベクトルV1で、フレームt−1上の最右端(左から9番目)のブロックから、フレームt上の左から5番目のブロックを経由して、フレームt+1上の最左端のブロックへ移動している。一方、4ブロックからなる物体O2の画像オブジェクトは、動きベクトルV1よりも小さな動きの動きベクトルV2で、フレームt−1上の左から3乃至6番目の4ブロックから、フレームt上の左から4乃至7番目の4ブロックを経由して、フレームt+1上の左から5乃至8番目の4ブロックへ移動している。すなわち、フレームt上の左から5番目のブロックにおいて、物体O1の画像オブジェクトと物体O2の画像オブジェクトは、物体O1の画像オブジェクトを手前にして交差している。
このとき、フレームt上において、物体O1の画像オブジェクトが動きベクトルV1で通過する、左から5番目のブロックの動きベクトルを検出するために、周辺ブロックの動きから初期ベクトルを抽出しようとしても、周辺ブロック(左から4または6番目のブロック)に、物体O2の画像オブジェクトが、物体O1の画像オブジェクトとは異なる動きベクトルV2で通過しているため、適切な動きベクトルは、存在しない。一方、シフト初期ベクトルSV1(図中、点線矢印)は、このような場合であっても、過去のフレームT−1上で検出された動きベクトルV1を、そのフレームt上の左から5番目のブロックにシフトした動きベクトル(すなわち、フレームt−1上において検出された動きベクトルV1の終点のブロックと同じ位置にあるフレームt上のブロックを始点とした、動きベクトルV1と同じ大きさで同じ向きの動きベクトル)であるので、確実に取得することができる。
図16は、動物体の境界のブロックと、その周辺ブロックの動きベクトルの例を表している。図16の例の場合、1ブロックからなる、ある物体O3の画像オブジェクトは、動きベクトルV3で、フレームt−1上の左から6番目のブロックから、フレームt上の左から5番目のブロックを経由して、フレームt+1上の左から4番目のブロックへ移動している。一方、9ブロック以上からなる物体O4の画像オブジェクトは、動きベクトルV1とは異なる動きベクトルV4で、フレームt−1上の全9ブロックから、フレームt上の左から2乃至9番目の8ブロックを経由して、フレームt+1上の左から3乃至9番目の7ブロックへ移動している。すなわち、物体O3の画像オブジェクトは、フレームt−1の左から6番目のブロック、フレームt上の左から5番目のブロック、およびフレームt+1左から4番目のブロックにおいて、物体O4の画像オブジェクトの手前を通過している。
このとき、フレームt上において、物体O3の画像オブジェクトが動きベクトルV3で通過する、左から5番目のブロックの動きベクトルを検出するために、周辺ブロックの動きから初期ベクトルを抽出しようとしても、周辺ブロック(左から4または6番目のブロック)に、物体O4の画像オブジェクトが、物体O3の画像オブジェクトとは異なる動きベクトルV4で通過しているため、適切な動きベクトルは、存在しない。しかしながら、この場合においても、図15の場合と同様に、シフト初期ベクトルSV3(図中、点線矢印)は、過去のフレームT−1上で検出された動きベクトルV3を、そのフレームt上の右から5番目のブロックにシフトしたベクトル(すなわち、フレームt−1上において検出された動きベクトルV3の終点のブロックと同じ位置にあるフレームt上のブロックを始点とした、動きベクトルV3と同じ大きさで同じ向きの動きベクトル)であるので、確実に取得することができる。
以上のように、図15に示されるような大きな動きを持つ物体や、図16に示されるように動いている物体の境界においては、動きベクトルを検出しようとする着目ブロックの初期ベクトルの候補となる周辺ブロックに、着目ブロックの初期ベクトルとして最適な動きベクトルが存在しない場合が多く存在する。これに対して、シフト初期ベクトルは、過去のフレームt−1上において検出された動きベクトルの終点のブロックと同じ位置にあるフレームt上のブロックを始点とした、動きベクトルと同じ大きさで同じ向きの動きベクトルであるので、ブロック間の空間距離に依存しないため、周辺ブロックに、着目ブロックの初期ベクトルとして適切な動きベクトルが存在しない場合にも、確実に取得することができ、初期ベクトルの最適な候補として用いることができる。
ここで、一旦、図14に戻り、シフト初期ベクトルの決定方法について説明する。図14の例において、動きベクトル検出処理を行うフレームt上の着目ブロックBtを基準として、フレームt−1から、着目ブロックBtを通過する動きベクトル(すなわち、フレームt上のブロックBtと同じ位置にあるフレームt−1のブロックを終点とする動きベクトル)を探索しようとすると、フレームt−1上の全ブロックの動きベクトルを検索しなければならず、処理が膨大になってしまう。したがって、この場合、動きベクトル検出時に、膨大な処理分の演算量をこなさなければならず、その実現(ハードウェア化)が困難であった。
そこで、シフト初期ベクトル割付部105は、フレームt−1における動きベクトル検出の際に、着目ブロックBtにおいて検出された動きベクトルVが、次の時刻のフレームt上で通過するブロックの位置(すなわち、動きベクトルVの終点のブロックと同じ位置のフレームt上のブロック)を求め、その動きベクトルVを、ブロックBtに対するシフト初期ベクトルSVとして、予め割り付けておく。これにより、フレームt上での動きベクトル検出の際に必要となるシフト初期ベクトルを探索する演算量を削減することができ、ハードウェア化が実現できるようになり、現実的に、シフト初期ベクトルを、初期ベクトルの候補として用いることが可能になる。
図17を参照して、シフト初期ベクトル割付部105によるシフト初期ベクトルの決定方法を具体的に説明する。図17の例においては、矢印Tは、図中、左手前の時刻t−1のフレームt−1から、右奥の時刻tのフレームtへの時間の経過を示している。また、各フレーム上の丸は、画素を表している。
フレームt−1上において、ブロックB0は、4×4画素により構成される。ブロックB0において検出された動きベクトルVbとすると、ブロックB0をフレームt上にオフセット(動き補償)したオフセット先(ブロックB0の動きベクトルVbの終点のブロックと同じ位置のフレームt上のブロック)A0は、一般的には、フレームt上の4×4画素により構成される4つのブロックBt1乃至Bt4と重なりを持つ。したがって、図17の例の場合においては、このオフセット先A0と重なりを持つ4つのブロックBt1乃至Bt4のすべてが、動きベクトルVbを、シフト初期ベクトルとして割り付ける対象ブロックとされる。
以上のようにして前のフレームにおいて検出された動きベクトルを、シフト初期ベクトルとして割り付ける。この場合、割り付けられる対象となるブロックの位置は、動きベクトルの大きさと向きによる。このため、フレームt−1上で検出される動きベクトルの分布によっては、図18に示されるように、フレームt上において、複数のシフト初期ベクトルが割り付ける対象となり競合するブロックや、逆に、シフト初期ベクトルの割り付けが起こらないブロックが発生してしまう。
図18は、シフト初期ベクトルの割り付けの例を示している。図18の例において、各フレームの仕切りは、ブロックの境界を示しており、フレームt−1上には、図中左から、ブロックB1乃至B5により構成され、フレームt上には、図中左から、ブロックBt1乃至Bt5が示されている。
ブロックB1においては、動きベクトルV1が検出され、ブロックB1のオフセット先A1は、フレームt上のブロックBt1およびBt2と重なりを持つ。ブロックB2においては、動きベクトルV2が検出され、ブロックB2のオフセット先A2は、フレームt上のブロックBt1およびBt2と重なりを持つ。ブロックB3おいては、動きベクトルV3が検出され、ブロックB3のオフセット先A3は、フレームt上のブロックBt4およびBt5と重なりを持つ。ブロックB4においては、動きベクトルV4が検出され、ブロックB4のオフセット先A4は、フレームt上のブロックBt4およびBt5と重なりを持つ。ブロックB5においては、動きベクトルV5が検出され、ブロックB5のオフセット先A5は、フレームt上のブロックBt5および図示せぬ隣接ブロックと重なりを持つ。
すなわち、図18の例においては、フレームt上のブロックBt1およびBt2には、動きベクトルV1またはV2のどちらか一方がシフト初期ベクトルとして割り付けられる。また、フレームt上のブロックBt4には、動きベクトルV3およびV4のどちらか一方がシフト初期ベクトルとして割り付けられ、フレームt上のブロックBt5には、動きベクトルV3、V4、およびV5のうちのいずれかがシフト初期ベクトルとして割り付けられる。しかしながら、フレームt上のブロックBt3には、シフト初期ベクトルの候補となる動きベクトルが存在せず、シフト初期ベクトルは割り付けられない。
したがって、シフト初期ベクトル割付部105は、ブロックBt3のように、シフト初期ベクトルの割り付けが起こらないブロックに対して、0ベクトルをシフト初期ベクトルとして割り付ける。一方、シフト初期ベクトル割付部105は、ブロックBt1,Bt2,Bt4,およびBt5のように、複数の動きクトルが競合するブロックに対して、上述した評価値DFDに基づく、信頼度が高い動きベクトルを選択し、選択した動きベクトルを、シフト初期ベクトルとしてそれぞれのブロックに割り付ける。
なお、図18の例においては、説明の便宜上、オフセット先Aは、フレームt上から少しずらして示されている。
図19は、競合する動きベクトルの例を示す図である。図19の例においては、フレームt−1上のブロックB1およびB2から、それぞれにおいて検出された動きベクトルV1およびV2が、フレームt上のブロックBtを通過している。すなわち、ブロックBtは、動きベクトルV1のフレームt−1上の終点と同じ位置のフレームt上のブロックであり、動きベクトルV2のフレームt−1上の終点と同じ位置のフレームt上のブロックである。このように、複数の動きベクトルが同じブロックに対して競合する場合には、動きベクトルV1に対する評価値DFD1と、動きベクトルV2に対する評価値DFD2の値が比較され、評価値DFDが小さい方(すなわち、信頼度が高い方)がブロックBtに対応するシフト初期ベクトルSV2として選択される。これにより、評価値DFDに基づく、信頼度の高いシフト初期ベクトルを得ることができる。
次に、図20のフローチャートを参照して、シフト初期ベクトル割り付け処理の詳細について説明する。前段において、ベクトル評価部104は、フレームt−1上の着目ブロックの動きベクトルVを検出すると、検出された動きベクトルVとともに、その動きベクトルVに対して求めた評価値DFDを、シフト初期ベクトル割付部105に供給する。
ステップS201において、評価値比較部202は、ベクトル評価部104から、動きベクトルVとともに、その動きベクトルVの評価値DFDを入力する。また、このとき、割付対象位置演算部201も、動きベクトルVを入力し、ステップS202に進む。割付対象位置演算部201は、動きベクトルVのフレームtにおけるオフセット(動き補償)先の割付対象ブロックの位置を求める。すなわち、割付対象位置演算部201は、フレームt−1上において検出された動きベクトルVの終点のブロックと同じ位置にあるフレームt上のブロックの位置を求め、ステップS203に進む。割付対象位置演算部201は、ステップS203において、求められた割付対象ブロックのうち、1つの割付対象ブロックを選択し、選択した割り付け対象ブロックの位置を、評価値メモリ106およびシフト初期ベクトル置換部203に供給し、ステップS204に進む。なお、ステップS203においては、割付対象ブロックのうち、フレームt上において左上のブロックから順に選択される。
ステップS204において、評価値比較部202は、評価値メモリ106から、割付対象位置演算部201により選択された割付対象ブロックの評価値DFDを取得し、ステップS205に進み、ステップS201において入力された動きベクトルVの評価値DFDが、評価値メモリ106の評価値DFDよりも小さいか否か(すなわち、動きベクトルVの評価値DFDが、評価値メモリ106の評価値DFDよりも信頼度が高いか否か)を判断し、動きベクトルVの評価値DFDが、評価値メモリ106の評価値DFDよりも小さいと判断された場合、ステップS206に進む。
評価値比較部202は、ステップS206において、シフト初期ベクトル置換部203を制御し、割付対象位置演算部201により選択されたシフト初期ベクトルメモリ107の割付対象ブロックのシフト初期ベクトルを、動きベクトルV(すなわち、動きベクトルVと同じ大きさで同じ向きの動きベクトル)に書き換えさせ、ステップS207に進み、評価値置換部204を制御し、割付対象位置演算部201により選択された割付対象ブロックの評価値DFDを、動きベクトルVの評価値DFDで書き換えさせ、ステップS208に進む。
また、評価値比較部202は、ステップS205において、ステップS201において入力された動きベクトルVの評価値DFDが、評価値メモリ106に記憶される評価値DFDよりも小さくないと判断した場合、ステップS206およびS207の処理をスキップし、ステップS208に進む。すなわち、この場合、評価値メモリ106の評価値DFDが、動きベクトルVの評価値DFDよりも信頼度が高いと判断されるので、評価値メモリ106およびシフト初期ベクトルメモリ107の値は、書き換えられることはない。
割付対象位置演算部201は、ステップS208において、動きベクトルVの割り付け対象ブロックすべての処理が終了したか否かを判断し、割り付け対象ブロックすべての処理が終了していないと判断した場合、ステップS203に戻り、それ以降の処理を繰り返す。また、割付対象位置演算部201は、ステップS208において、動きベクトルVの割り付け対象ブロックすべての処理が終了したと判断した場合、シフト初期ベクトル割付処理を終了する。
なお、初回の処理においては、選択された割付対象ブロックに対応するシフト初期ベクトルが、シフト初期ベクトルメモリ107にまだ記憶されていない。したがって、そのシフト初期ベクトルの評価値DFDが、評価値メモリ106の対応する割付対象ブロックに、まだ記憶されていない場合には、ステップS204において、選択された割付対象ブロックから評価値DFDは、取得されないので、ステップS205においてはYesと判断されることとし、ステップS206およびS207の処理が実行される。
以上のように、着目ブロックの動きベクトルの検出を処理する際に、連続するフレーム間において動物体の動き量にはある程度の連続性があり、動き量の変化が小さいことに基づいて、前の時刻(過去)のフレームから、次の時刻のフレームの着目ブロックを通過する動きベクトル(すなわち、過去のフレーム上において検出された動きベクトルVの終点のブロックと同じ位置にある次のフレーム上のブロックを始点とした、動きベクトルVと同じ大きさで同じ向きの動きベクトル)であるシフト初期ベクトルを、初期ベクトルの候補ベクトルとすることにより、従来のように、周辺ブロックにおいて過去に求められている動きベクトルのみを初期ベクトルの候補ベクトルとする場合よりも、特に、動いている物体の境界においては、勾配法演算の初期値として適切な動きベクトルを与えることができ、これにより、勾配法の演算による動きベクトル検出の精度を向上させることができる。
また、シフト初期ベクトルを求める際に、前の時刻のフレームにおいて検出された動きベクトルが次の時刻のフレームにおいて通過するブロック(すなわち、フレームt−1上において検出された動きベクトルVの終点のブロックと同じ位置にあるフレームt上のブロック)を求め、次の時刻のフレーム上の着目ブロックにおけるシフト初期ベクトルとして割り付けるようにしたので、着目ブロックを通過する動きベクトルを、前の時刻のフレームの全ブロックの動きベクトルから探索する場合よりも、処理の演算量が削減されるため、膨大な演算量により実現が困難であったハードウェア化を実現することができる。
次に、初期ベクトル選択部101の構成の詳細について説明する。
図21は、初期ベクトル選択部101の構成を示すブロック図である。図21に構成を示す初期ベクトル選択部101は、前(過去)フレームにおいて検出された動きベクトルや、シフト初期ベクトルなどの候補ベクトル(以下、初期候補ベクトルとも称する)から、信頼度の高い動きベクトルを、初期ベクトルとして選択する処理を行う。初期ベクトル選択部101には、時刻tの画像のフレームtと、時刻t+1の画像のフレームt+1が入力される。
候補ベクトル位置演算部251は、フレームtが入力されると、フレームt上の処理の対象となる着目ブロックを選択し、着目ブロックの周辺領域から、着目ブロックの初期候補ベクトルを取得する候補ブロックの位置、初期候補ベクトルとなる動きベクトルの種類および優先順位を求め、求められた優先順位の順に、候補ブロックの位置情報および初期候補ベクトルの種類情報を、検出ベクトル取得部252およびシフト初期ベクトル取得部253に供給する。また、候補ベクトル位置演算部251は、候補ブロックの位置情報を、オフセット位置演算部254にも供給する。
なお、信号処理装置1においては、初期候補ベクトルの数は、初期ベクトルの精度と、ハードウェア能力の兼ね合いなどに基づいて所定数に設定されており、さらに、候補ブロックの位置、初期候補ベクトルの種類、および優先順位も、例えば、図23を参照して後述するように、予め設定されている。また、初期候補ベクトルの種類としては、過去フレームにおいて、所定のブロックを通過する動きベクトルを、その所定のブロックにシフトさせた動きベクトル(すなわち、過去フレーム上において検出された動きベクトルの終点のブロックと同じ位置にある次のフレーム上のブロックを始点とした、動きベクトルVと同じ大きさで同じ向きの動きベクトル)であるシフト初期ベクトルSV、過去フレームにおいて検出された動きベクトル(以下、過去ベクトルPVとも称する)、現在のフレームにおいて着目ブロックより手前のブロックにおいて検出された動きベクトル(現在ベクトルCVとも称する)、および0ベクトルがある。
したがって、候補ベクトル位置演算部251は、予め設定された初期候補ベクトルの種類情報が過去ベクトルまたは現在ベクトルであった場合、候補ブロックの位置情報および初期候補ベクトルの種類情報を、検出ベクトル取得部252に供給し、求めた初期候補ベクトルの種類情報がシフト初期ベクトルであった場合、候補ブロックの位置情報および初期候補ベクトルの種類情報を、シフト初期ベクトル取得部253に供給し、そのどちらでもなかった場合(例えば、初期候補ベクトルの種類情報が、0ベクトルである場合)、0ベクトルを設定し、0ベクトルと共に、候補ブロックの位置情報を、オフセット位置演算部254に供給する。
検出ベクトル取得部252は、候補ベクトル位置演算部251により供給された候補ブロックの位置情報および初期候補ベクトルの種類情報に応じた動きベクトルを、検出ベクトルメモリ53より取得し、取得した動きベクトルを、初期候補ベクトルとして、オフセット位置演算部254に出力する。
シフト初期ベクトル取得部253は、候補ベクトル位置演算部251により供給された候補ブロックの位置情報および初期候補ベクトルの種類情報に応じて、候補ブロックの位置情報に対応したシフト初期ベクトルを、シフト初期ベクトルメモリ107から取得し、初期候補ベクトルとしてオフセット位置演算部254に出力する。また、シフト初期ベクトル取得部253は、候補ベクトル位置演算部251により指示されたブロックの位置に、シフト初期ベクトルが割り付けられていない場合、0ベクトルを、オフセット位置演算部254に出力する。なお、シフト初期ベクトルが割り付けられていない場合には、0ベクトルが、シフト初期ベクトルメモリ107に予め記憶されているようにしてもよい。
オフセット位置演算部254は、検出ベクトル取得部252またはシフト初期ベクトル取得部253から初期候補ベクトル(あるいは候補ベクトル位置演算部251からの0ベクトル)を入力すると、候補ベクトル位置演算部251により供給された候補ブロックの位置情報に基づいて、各初期候補ベクトルに対して、フレームtの着目ブロックを、フレームt+1にオフセット(動き補償)させたオフセット先のブロック位置を演算する。そして、オフセット位置演算部254は、初期候補ベクトルとともに、候補ブロックの位置情報、およびオフセット先ブロック位置の情報を、評価値演算部255に出力する。
評価値演算部255は、オフセット位置演算部254より初期候補ベクトルとともに、候補ブロックの位置情報、およびオフセット先ブロック位置の情報を入力すると、フレームtとフレームt+1を用いて、初期候補ベクトルの評価値DFDを求める。そして、評価値演算部255は、初期候補ベクトルとともに、求められた評価値DFDを、評価値比較部256に出力する。
評価値比較部256は、評価値演算部255により入力された評価値DFDと、最適候補格納用レジスタ257に格納されている最適候補ベクトルの評価値DFDを比較し、評価値演算部255により入力された初期候補ベクトルの評価値DFDが、最適候補ベクトルの評価値DFDよりも小さい、すなわち、初期候補ベクトルが最適候補ベクトルよりも信頼度が高いと判断された場合、最適候補格納用レジスタ257の最適候補ベクトルおよびその評価値DFDを、信頼度が高いとされた初期候補ベクトルおよびその評価値DFDで置き換える。そして、最終的に、評価値比較部256は、最適候補格納用レジスタ257を制御し、すべての候補ベクトルの中から、評価値DFDに基づく、信頼度が最も高いと判断された最適候補ベクトルを、初期ベクトルV0として、反復勾配法演算部103に出力させる。
最適候補格納用レジスタ257は、評価値比較部256により評価値DFDが小さい(信頼度が高い)とされた初期候補ベクトルが、最適候補ベクトルとして、その評価値DFDとともに記憶されている。そして、最適候補格納用レジスタ257は、評価値比較部256の制御のもと、最終的に記憶されている最適候補ベクトルを、初期ベクトルV0として、反復勾配法演算部103に出力する。
図22は、初期ベクトルの候補ブロックとなり得る周辺領域を示している。図22の例において、矢印Tは、図中、左手前の時刻t−1の過去(前)フレームt−1から、右奥の時刻tの現在フレームtへの時間の経過方向を示している。なお、図22の例においては、初期ベクトルの候補となり得る周辺領域は、着目のブロックBtを中心とした7ブロック×7ブロックにより構成され、各ブロックは、画素数が4画素×4画素により構成されている。
動きベクトル検出処理は、上述したように、フレームの左上のブロックからラスタスキャン順に実行される。したがって、初期ベクトル選択部101は、現在フレームtの着目ブロックBtの動きベクトル検出処理の際には、その直前のブロックまでの動きベクトル検出の結果を、初期ベクトルの候補とすることができる。
すなわち、着目ブロックBtの周辺領域は、着目ブロックBtよりも手前に処理されるブロックCVB、および着目ブロックBtよりも後に処理されるブロックPVBにより構成されている。したがって、着目ブロックBtの初期ベクトルを求める場合、初期候補ベクトルは、ブロックCVBの現在フレームt上で検出された動きベクトル(現在ベクトルCV)、および、ブロックPVBの過去フレームt−1上で検出された動きベクトル(過去ベクトルPV)の中から選択することができる。なお、このとき、同じ周辺領域のブロックに割り付けられるシフト初期ベクトルも、初期候補ベクトルの候補となりうる。
図23は、候補ベクトル位置演算部251において設定される初期ベクトルの候補ブロックの例を示している。図23の例においては、着目ブロックBtの周辺領域のうち、「英字/数字」のシンボルがそれぞれ示されている8個の所定のブロックが、初期候補ベクトルが取得される候補ブロックとして設定されている。これらの8個の所定のブロックに示されている斜線の前後のシンボルは、「初期候補ベクトルの種類」と「優先順位」をそれぞれ表している。なお、初期候補ベクトルの種類のうち、Pは、過去フレームt−1で検出された過去ベクトルPVを表しており、Cは、現在フレームtで検出された現在ベクトルを表しており、Sは、シフト初期ベクトルSVを表している。
着目ブロックBtの「S/1」は、着目ブロックBtに割り付けられたシフト初期ベクトルSVが初期候補ベクトルとして、優先順位「1」番目に用いられることを表している。着目ブロックBtの左隣のブロックの「C/2」は、現在フレームtにおいて検出されたそのブロックの現在ベクトルCVが初期候補ベクトルとして、優先順位「2」番目に用いられることを表している。着目ブロックBtの右上のブロックの「C/3」は、現在フレームtにおいて検出されたそのブロックの現在ベクトルCVが、優先順位「3」番目に初期候補ベクトルとして用いられることを表している。着目ブロックBtの右下のブロックの「P/4」は、過去フレームt−1において検出されたそのブロックの過去ベクトルPVが、優先順位「4」番目に初期候補ベクトルとして用いられることを表している。
周辺領域7×7の左上隅の右下のブロックの「C/6」は、現在フレームtにおいて検出されたそのブロックの現在ベクトルCVが、優先順位「6」番目に初期候補ベクトルとして用いられることを表している。周辺領域7×7の右上隅の左下のブロックの「C/5」は、現在フレームtにおいて検出されたそのブロックの現在ベクトルCVが、優先順位「5」番目に初期候補ベクトルとして用いられることを表している。周辺領域7×7の左下隅の右上のブロックの「P/7」は、過去フレームt−1において検出されたそのブロックの過去ベクトルPVが、優先順位「7」番目に初期候補ベクトルとして用いられることを表している。周辺領域7×7の右下隅の左上のブロックの「P/8」は、過去フレームt−1において検出されたそのブロックの過去ベクトルPVが、優先順位「8」番目に初期候補ベクトルとして用いられることを表している。
以上のように、図23の例において、初期候補ベクトルは、着目ブロックBtを含む、着目ブロックBtに隣接するブロックのうち、着目ブロックBt、着目ブロックBtの左隣、右上、および右下のブロックとされ、着目ブロックBtに隣接していないブロックのうち、周辺領域7×7の四隅から、それぞれ内側に1つ入った位置のブロックから選択される。
すなわち、図23の例の場合、着目ブロックBtに隣接するブロック(空間的にも時間的にも近いブロック)のほうが少し離れたブロックよりも優先順位が高く、現在フレームtで検出された現在ベクトルのほうが、過去フレームt−1で検出された過去ベクトルよりも優先順位が高く設定されている。なお、これらの初期ベクトルの候補の位置、種類、および優先度は、できるだけ少ない候補数で、確かな初期候補ベクトルを得ることができるように、着目ブロックBtの近傍だけでなく、少し離れた位置のブロックも含め、また、偏りのないようになど、空間的な相関や時間的な相関などに基づいて設定されたものである。したがって、このように、予め設定された所定のブロックの動きベクトルを初期候補ベクトルとして用いることにより、初期候補ベクトル数が多くなってしまい、処理の演算量が膨大になってしまうことが抑制される。
なお、候補ブロックの種類と候補ブロックの位置は、図23の例に限定されるものではなく、他の種類のベクトルや、ブロックの位置を用いてもよい。また、周辺のブロックに、最適なベクトルが存在しない場合を考慮して、そのような場合に劣化を抑制する、0ベクトルを用いてもよい。また、候補ブロックの数も8個より多くても少なくてもよい。
次に、図24のフローチャートを参照して、初期ベクトル選択処理の詳細について説明する。
候補ベクトル位置演算部251は、ステップS251において、選択された着目ブロックの周辺領域から、予め設定されている着目ブロックの初期候補ベクトルを取得する候補ブロックの位置、初期候補ベクトルの種類および優先順位を求め、ステップS252において、求められた優先順位の順に、候補ブロックの初期候補ベクトルの種類が、過去ベクトルまたは現在ベクトルであるか否かを判断する。ステップS252において、候補ベクトル位置演算部251は、候補ブロックの初期候補ベクトルの種類が、過去ベクトルまたは現在ベクトルであると判断した場合、ステップS253に進み、候補ブロックの位置情報および初期候補ベクトルの種類情報を、検出ベクトル取得部252に供給し、
検出ベクトル取得部252に、候補ブロックの位置情報および初期候補ベクトルの種類情報に応じた動きベクトル(過去ベクトルPVまたは現在ベクトルCV)を、検出ベクトルメモリ53から取得させ、取得させた動きベクトルを、オフセット位置演算部254に出力させ、ステップS257に進む。
ステップS252において、候補ベクトル位置演算部251は、候補ブロックの初期候補ベクトルの種類が、過去ベクトルまたは現在ベクトルでないと判断した場合、ステップS254に進み、候補ベクトル位置演算部251は、候補ブロックの初期候補ベクトルの種類が、シフト初期ベクトルであるか否かを判断する。ステップS254において、候補ベクトル位置演算部251は、候補ブロックの初期候補ベクトルの種類が、シフト初期ベクトルであると判断した場合、ステップS255に進み、候補ブロックの位置情報および初期候補ベクトルの種類情報を、シフト初期ベクトル取得部253に供給し、シフト初期ベクトル取得部253に、候補ブロックの位置情報に対応したシフト初期ベクトルを、シフト初期ベクトルメモリ107から取得させ、取得させたシフト初期ベクトルを、オフセット位置演算部254に出力させ、ステップS257に進む。
ステップS254において、候補ベクトル位置演算部251は、候補ブロックの初期候補ベクトルの種類が、シフト初期ベクトルではないと判断した場合(すなわち、候補ブロックの初期候補ベクトルの種類が、0ベクトルであると判断した場合)、ステップS256に進み、初期候補ベクトルに0ベクトルを設定し、0ベクトルと共に、候補ブロックの位置情報を、オフセット位置演算部254に供給し、ステップS257に進む。なお、ステップS253およびS255においても、候補ベクトル位置演算部251は、候補ブロックの位置情報を、オフセット位置演算部254に供給している。
オフセット位置演算部254は、ステップS257において、検出ベクトル取得部252またはシフト初期ベクトル取得部253から初期候補ベクトルを入力すると、候補ベクトル位置演算部251により供給された候補ブロックの位置情報に基づいて、各初期候補ベクトルに対して、フレームtの着目ブロックを、フレームt+1にオフセットさせたオフセット先のブロック位置を演算する。そして、オフセット位置演算部254は、初期候補ベクトルとともに、候補ブロックの位置情報、およびオフセット先ブロック位置の情報を、評価値演算部255に出力し、ステップS258に進む。
評価値演算部255は、オフセット位置演算部254より初期候補ベクトルとともに、候補ブロックの位置情報、およびオフセット先ブロック位置の情報を入力すると、ステップS258において、フレームtとフレームt+1を用いて、初期候補ベクトルの評価値DFDを求め、初期候補ベクトルとともに、求められた評価値DFDを、評価値比較部256に出力し、S259に進む。
評価値比較部256は、ステップS259において、評価値演算部255により求められた評価値DFDが、最適候補格納用レジスタ257に格納されている最適候補ベクトルの評価値DFDより小さいか否かを判断し、評価値演算部255により求められた評価値DFDが、最適候補格納用レジスタ257に格納されている最適候補ベクトルの評価値DFDより小さい、すなわち、初期候補ベクトルが最適候補ベクトルよりも信頼度が高いと判断された場合、ステップS260において、最適候補格納用レジスタ257の最適候補ベクトルおよびその評価値DFDを、信頼度が高いとされた初期候補ベクトルおよびその評価値DFDで書き換え、ステップS261に進む。
また、ステップS259において、評価値比較部256は、評価値演算部255により求められた評価値DFDが、最適候補格納用レジスタ257に格納されている最適候補ベクトルの評価値DFDより小さくないと判断した場合、ステップS260の処理をスキップし、ステップS261に進む。
ステップS261において、候補ベクトル位置演算部251は、すべての初期候補ベクトル(図23の例の場合、8ベクトル)の処理が終了したか否かを判断し、すべての初期候補ベクトルの処理が終了していないと判断した場合、ステップS252に戻り、それ以降の処理を繰り返す。
ステップS261において、すべての初期候補ベクトルの処理が終了したと判断された場合、処理は、ステップS262に進み、評価値比較部256は、最適候補格納用レジスタ257を制御し、すべての初期候補ベクトルの中から、評価値DFDに基づく、信頼度が最も高いとされた最適候補ベクトルを、初期ベクトルV0として反復勾配法演算部103に出力させ、初期ベクトル選択処理を終了する。
以上のように、着目ブロックにおいて、複数の初期候補ベクトルの評価値DFDを求め、評価値DFDが最も小さい、すなわち、信頼度が最も高いとされる初期候補ベクトルを、初期ベクトルとして選択するようにしたので、後段の動きベクトル検出に最適な初期ベクトルを与えることができ、その結果、後段の動きベクトル検出の精度を向上させることができる。また、予め定められた所定のブロックの動きベクトルを、初期候補ベクトルとして用いるようにしたので、初期候補ベクトル数が多くなってしまい、処理の演算量が膨大になってしまうことが抑制される。
さらに、連続するフレーム間において動物体の動き量にはある程度の連続性があり、動き量の変化が小さいことに基づいて、前フレームから着目ブロックを通過する動きベクトルであるシフト初期ベクトルを、初期ベクトルの候補とするようにしたので、従来のように、周辺ブロックにおいて過去に求められている動きベクトルのみを初期ベクトルの候補とする場合よりも、精度の高い動き検出を行うことができる。これは、特に、動いている物体の境界において、効果的である。
次に、反復勾配法演算部103の構成の詳細について説明する。
図25は、反復勾配法演算部103の構成を示すブロック図である。図25に構成を示す反復勾配法演算部103は、入力される時刻tの画像のフレームtおよび、時刻t+1の画像のフレームt+1を用いて、正確な動きベクトルを検出する処理を行う。この動きベクトルを検出する処理は、複数の画素からなる所定のブロック毎に実行される処理であり、反復勾配法演算部103は、各ブロックにおいて、ブロック単位毎に、勾配法を用いた演算を繰り返し実行することにより、評価値DFDに基づく、信頼度が高い、正確な動きベクトルを出力する。
ここで、動きベクトルの検出処理単位としてのブロックは、着目画素を中心とする着目ブロックである。画像内のオブジェクトの動きを考えた場合、同じオブジェクトであれば、大方同じ動きをしていることが多い。そこで、反復勾配法演算部103は、着目ブロックを検出処理単位として、動きベクトルを検出し、ベクトル評価部104は、検出された動きベクトルを着目ブロック内の全ての画素に対し、動きベクトルとして設定する。
なお、着目ブロックは、前段において、初期ベクトル選択部101によって選択され、例えば、画像の左上のブロックからラスタスキャン順に選択される。
反復勾配法演算部103には、プリフィルタ102−1およびプリフィルタ102−2を介して、時刻tの画像のフレームtおよび時刻t+1の画像のフレームt+1が入力され、また、初期ベクトル選択部101から選択されている着目ブロックに対する初期ベクトルV0が入力される。
反復勾配法演算部103は、セレクタ601、有効画素判定部602、勾配法演算部603、および遅延部604を含むように構成される。
セレクタ601は、ベクトル評価部104からの制御のもと、初期ベクトル選択部101から入力された初期ベクトルV0または勾配法演算部603から出力された動きベクトルVnを、勾配法演算の初期値として用いる動きベクトル(以下、オフセットベクトルと称する)として、有効画素判定部602および勾配法演算部603に出力する。
有効画素判定部602は、着目画素を中心とする着目ブロック内の画素のそれぞれが、有効画素であるか否かを判断する。ここで、有効画素とは、後段の勾配法の演算に用いられる(使用される)画素をいう。有効画素判定部602における、有効画素であるか否かの判断の詳細は後述する。
また、有効画素判定部602は、着目ブロックにおいて、勾配法の演算に有効な有効画素の数が、しきい値より多いか否かを判断する。例えば、有効画素判定部602は、着目ブロックにおける、勾配法の演算に有効な有効画素の数が、あらかじめ記憶しているしきい値より多いか否かを判断する。
有効画素判定部602は、勾配法の演算に有効な有効画素の数が、しきい値以下であると判断した場合、勾配演算部603を制御し、動きベクトルを求める演算の実行を抑制させる。
有効画素判定部602は、着目ブロックにおいて、勾配法の演算に有効な画素の数が、しきい値より多いと判断した場合、勾配法演算部603を制御し、着目ブロック単位での勾配法演算処理を実行させる。
勾配法演算部603は、有効画素判定部602によって選択された有効画素を用いて、勾配法の演算を行い、動きベクトルVnを算出する。勾配法演算部603は、有効画素でないと判断された画素を勾配法の演算に使用しない。
より詳細には、勾配法演算部603は、有効画素判定部602の指令の基に、セレクタ601から出力されたオフセットベクトルを入力してから、プリフィルタ102−1およびプリフィルタ102−2を介して入力される、時刻tの画像のフレームtおよび時刻t+1の画像のフレームt+1のうち、フレームtの着目ブロックの有効画素と、着目ブロックに対して、オフセットベクトルで指示される、フレームt+1のブロックの対応する画素を基に、動きベクトルを求める勾配法演算を実行する。勾配法演算部603は、算出された動きベクトルVnを、遅延部604およびベクトル評価部104に出力する。
また、勾配法演算部603は、勾配法演算によって算出された動きベクトル(オフセットベクトルが加算される前の動きベクトル)vnのノルム値(|vn|)を演算(算出)し、算出した動きベクトルvnのノルム値をベクトル評価部104に出力する。なお、ノルム値の詳細については後述する。
さらに、有効画素判定部602において、着目ブロックにおける、有効画素の数がしきい値以下であると判断された場合、勾配法演算部603は、勾配法の演算を実行しないで、0ベクトルを動きベクトルVnとして、遅延部604およびベクトル評価部104に出力する。
遅延部604は、勾配法演算部603から出力された動きベクトルVnを、有効画素判定部602および勾配法演算部603の次の処理のサイクルまで保持しており、セレクタ601の制御に応じて、保持する動きベクトルVnを有効画素判定部602に出力する。
図26は、有効画素判定部602の詳細な構成を示すブロック図である。図26で示される例において、有効画素判定部602は、画素位置演算部621、勾配演算部622、切片演算部623、切片位置判定部624、有効画素数カウンタ625、有効画素フラグメモリ626、および勾配法継続判定部627を含むように構成される。
画素位置演算部621は、セレクタ601により選択されたオフセットベクトルを入力してから、着目ブロックにおいて、着目画素または周辺画素を順に選択し、選択した画その位置を演算する。例えば、着目画素は、着目ブロックの中心に位置する画素であり、周辺画素は、着目画素の周辺の画素であって、着目ブロックに属する画素である。例えば、画素位置演算部621は、着目ブロックにおいて、順に選択した画素の位置を示す座標(x,y)を演算する。画素位置演算部621は、演算された画素の位置およびオフセットベクトルを勾配演算部622に出力する。
勾配演算部622は、フレームtおよびフレームt+1を基に、画素位置演算部621によって演算された画素(着目画素または周辺画素)の位置、およびオフセットベクトルを入力してから、選択された画素の画素値の勾配を演算する。
より詳細には、勾配演算部622は、画素位置演算部621から入力した画素の位置、プリフィルタ102−2を介して入力されるフレームt、およびプリフィルタ102−1を介して入力されるフレームt+1を基に、選択された画素の画素値のx方向の勾配Δx、y方向の勾配Δy、および時間方向の勾配Δtを演算し、オフセットベクトル、並びに演算したx方向の勾配Δx、y方向の勾配Δy、および時間方向の勾配Δtを切片演算部623に出力する。
ここで、勾配とは、図10を参照して上述したように、選択された画素と選択された画素に隣接する画素との輝度の差分差(勾配)である。例えば、図10において、着目画素pのx方向の勾配Δxは、着目画素pと画素pxとのx方向における輝度の差分差(勾配)であり、y方向の勾配Δyは、着目画素pと画素pyとのy方向における輝度の差分差(勾配)であり、t方向の勾配Δtは、着目画素pと画素qとのt方向における輝度の差分差(勾配)である。
なお、以下、x方向の勾配Δx、y方向の勾配Δy、および時間方向の勾配Δtを個々に区別する必要がないとき、単に勾配と称する。
切片演算部623は、勾配演算部622からオフセットベクトルおよび勾配を入力してから、入力したオフセットベクトルおよび勾配を基に、選択されている画素(着目画素または周辺画素)について、所定の条件を満たす動きベクトルの成分(vx,vy)の組に対応する点からなる直線を求め、求めた直線の切片を演算する。切片演算部623は、演算された切片を切片位置判定部624に出力する。なお、切片の演算の詳細は後述する。
切片位置判定部624は、切片演算部623から供給された、選択されている画素についての、動きベクトルの成分(vx,vy)の組に対応する点からなる直線の切片を基に、その選択されている画素が動きベクトルの算出に有効であるか否かを判断する。換言すれば、切片位置判定部624は、選択されている画素についての、動きベクトルの成分(vx,vy)の組に対応する点からなる直線の切片を基に、その選択されている画素を動きベクトルに使用するか否かを判断する。
ここで、画素が動きベクトルの算出に有効であるとは、その画素が、より正確な動きベクトルの算出に寄与することをいう。すなわち、有効な画素が動きベクトルの算出に使用されると、より正確な動きベクトルが算出される。逆に、画素が動きベクトルの算出に有効でない場合、その画素が動きベクトルの算出に使用されると、より大きい誤差を含む動きベクトルが算出される。
例えば、切片位置判定部624は、選択されている着目画素について判断する場合、切片演算部623から着目画素に対応する直線の切片および周辺画素に対応する直線の切片を入力してから、着目画素に対応する直線の切片を基準位置として、基準位置から周辺画素に対応する直線の切片までの距離を演算し、演算した基準位置から周辺画素に対応する直線の切片までの距離を所定の閾値と比較することによって、選択された周辺画素が、着目画素の動きベクトルを検出するための勾配法の計算に用いるのに有効な画素であるか否かを判断する。
以下、有効な画素を単に有効画素とも称する。
切片位置判定部624は、選択された周辺画素が着目画素の動きベクトルを検出するための勾配法の計算に用いるのに有効な画素であると判断した場合、有効画素数カウンタ625の有効画素の数をインクリメントし、有効画素フラグメモリ626の判定の対象となる画素に対応するフラグを立てる(フラグに1を設定する)。
切片位置判定部624は、選択された周辺画素が着目画素の動きベクトルを検出するための勾配法の計算に用いるのに有効な画素でないと判断した場合、有効画素数カウンタ625の有効画素の数をインクリメントせず、また有効画素フラグメモリ626の判定の対象となる画素に対応するフラグを立てない(フラグに0を設定する)。
また、切片位置判定部624は、着目ブロック内の全ての画素の処理が終了したか否かを判断する。
有効画素数カウンタ625は、切片位置判定部624の制御によってその値がクリアされるか、またはインクリメントされ、着目ブロックについての動きベクトルの演算の毎に、切片位置判定部624によって、動きベクトルの計算に用いるのに有効であると判断された着目画素および周辺画素分の数をカウントする。また、有効画素数カウンタ625は、次の動きベクトルを算出しようとする場合、リセットされる。
有効画素フラグメモリ626は、着目ブロック内の画素が、有効画素であるか否かを示す有効画素情報を保持している。例えば、有効画素フラグメモリ626のそれぞれの1ビットのフラグは、1つの画素に対応する。1であるフラグは、対応する画素が有効画素であることを示し、0であるフラグは、対応する画素が有効画素でないことを示す。
なお、フラグに1を設定することをフラグを立てるとも称し、フラグに0を設定することをフラグをリセットするとも称する。
また、それぞれのフラグの値である、有効画素フラグメモリ626が保持している有効画素情報は、次の動きベクトルを算出しようとする場合、リセットされる。
勾配法継続判定部627は、有効画素数カウンタ625の値を基に、勾配法の演算を継続させるか否かを判断する。例えば、勾配法継続判定部627は、有効画素数カウンタ625の値を基に、着目ブロックに含まれる画素のうち、勾配法の演算に有効な画素の数が予め記憶しているしきい値より多いか否かを判断し、勾配法の演算に有効な画素の数がしきい値より多いと判断した場合、有効画素を用いて、勾配法による確からしい動きベクトルの検出ができるので勾配法演算部603に、勾配法演算を実行させる継続フラグ(flg=1)を出力する。
勾配法継続判定部627は、着目ブロックに、勾配法の演算に有効な画素の数がしきい値以下であると判断した場合、勾配法の演算に用いる有効画その数が少ないので、大きな誤差を含む動きベクトルが算出されてしまう恐れがあるため、勾配法演算部603に勾配法演算を打ち切る継続フラグ(flg=0)を出力する。
このようにして、有効画素判定部602の各部は、選択された画素に対して、有効画素判定処理を行う。
また、切片位置判定部624によって、着目ブロック内の全ての画素の処理が終了していないと判断された場合には、有効画素判定部602の各部は、次の選択した画素について、有効画素であるか否かを判定する。
図27は、勾配法演算部603の詳細な構成を示すブロック図である。図27の例において、勾配法演算部603は、画素値勾配演算部651、勾配積算部652、およびベクトル演算部653を含むように構成される。
画素値勾配演算部651は、有効画素判定部602から入力されるフラグに基づいて、勾配法演算部603の各部を制御する。すなわち、画素値勾配演算部651は、継続フラグが1である (flg=1)場合には、勾配法演算部603の各部に、勾配法演算の処理を実行させる。
また、継続フラグによって有効画素判定部602から着目ブロックについて動きベクトルの演算が指示されている場合、画素値勾配演算部651は、着目ブロックに属する画素について勾配を演算する。
具体的には、勾配演算部651は、有効画素判定部602からフラグを入力すると、プリフィルタ102−1およびプリフィルタ102−2を介して入力される時刻tの画像のフレームtおよび時刻t+1の画像のフレームt+1のうち、フレームtの着目ブロックの画素のうちの有効画素と、フレームtの着目ブロックを始点とするオフセットベクトルによって指示されるフレームt+1のブロックであって、着目ブロックに対応するブロックの画素のうちの有効画素に対応する画素とを選択する。そして、勾配演算部651は、着目ブロックの有効画素として選択された画素のx方向の勾配Δx、y方向の勾配Δy、および時間方向の勾配Δtを算出し、算出された画素の勾配を、勾配積算部652に出力する。
また、画素値勾配演算部651は、着目ブロック内の全ての画素の処理が終了した場合に、オフセットベクトルを、ベクトル演算部653に出力する。
一方、フラグが0を示す(flg=0)場合には、画素値勾配演算部651は、着目ブロック内の画素の勾配を算出しないので、勾配法演算部603の各部では、勾配法演算の処理が実行されず、処理は打ち切られる。なお、このとき、画素値勾配演算部651は、ベクトル演算部653を制御し、動きベクトルVに0ベクトルを設定させる。
勾配積算部652は、着目ブロックの有効画素の勾配を積算する。すなわち、勾配積算部652は、画素値勾配演算部651により算出された各有効画素のx方向の勾配Δx、y方向の勾配Δy、および時間方向の勾配Δtを基に、上述した式(9)におけるΣΔy2、ΣΔx2、ΣΔtΔx、ΣΔxΔy、およびΣΔtΔyを算出し、算出したΣΔy2、ΣΔx2、ΣΔtΔx、ΣΔxΔy、およびΣΔtΔyの値をベクトル演算部653に出力する。
より具体的には、勾配演算部652は、画素値勾配演算部651から供給される有効画素毎のx方向の勾配Δx、y方向の勾配Δy、および時間方向の勾配Δtを基に、有効画素毎に、Δy2、Δx2、ΔtΔx、ΔxΔy、およびΔtΔyを算出して、算出したΔy2、Δx2、ΔtΔx、ΔxΔy、およびΔtΔyのそれぞれを、ΣΔy2、ΣΔx2、ΣΔtΔx、ΣΔxΔy、およびΣΔtΔyのそれぞれを算出するための変数に加算することにより、式(9)におけるΣΔy2、ΣΔx2、ΣΔtΔx、ΣΔxΔy、およびΣΔtΔyを算出する。
以下、勾配積算部652によって計算されたΣΔy2、ΣΔx2、ΣΔtΔx、ΣΔxΔy、およびΣΔtΔyの値を勾配の積算値とも称する。
ベクトル演算部653は、勾配積算部652から勾配の積算値が入力されてから、勾配積算部652によって積算された勾配の積算値を設定した式(9)を演算することにより、動きベクトルvnを演算(算出)する。また、ベクトル演算部653は、画素値勾配演算部651からのオフセットベクトルを算出した動きベクトルvnに加算して、動きベクトルVnを求め、求めた動きベクトルVnをベクトル評価部104および遅延部604に出力する。
さらに、ベクトル演算部653は、算出された動きベクトルvnのノルム値を算出し、算出した動きベクトルvnのノルム値をベクトル評価部104に出力する。
次に、図28のフローチャートを参照して、図12のステップS103の処理に対応する反復勾配法演算処理の詳細を説明する。前段より着目ブロックが選択され、セレクタ601に初期ベクトルV0が入力される。
セレクタ601は、ステップS601において、フレームt上のブロックを、検出対象ブロック(着目ブロック)とし、ベクトル評価部104からの制御に応じて、初期ベクトル選択部101から入力された初期ベクトルV0または遅延部604から入力された動きベクトルVnをオフセットベクトルとして選択し、選択したオフセットベクトルを、有効画素判定部602および勾配法演算部603に出力し、ステップS602に進む。
例えば、ステップS601において、セレクタ601は、初期ベクトル選択部101から入力された初期ベクトルV0および遅延部604から入力された動きベクトルVnのそれぞれの評価値DFDを求め、求められたそれぞれの評価値DFDを比較することによって、信頼性の高いものをオフセットベクトルとして選択し、有効画素判定部602および勾配法演算部603に出力する。
ここで、遅延部604から入力された動きベクトルVnとは、後述する前回のステップS605の処理において、ベクトル評価部104によって求められた動きベクトルVnである。したがって、ステップS601において、1回目のオフセットベクトルの選択の処理を行う場合、勾配法演算処理が行われていないため、遅延部604には動きベクトルVnが保持されていないので、セレクタ601は、初期ベクトル選択部101から入力された初期ベクトルV0をオフセットベクトルとして選択する。
ステップS602において、有効画素判定部602の各部は、セレクタ601によって選択されたオフセットベクトルを用いて、有効画素判定処理を実行し、ステップS603に進む。この有効画素判定処理の詳細は、図37を参照して後述するが、この有効画素判定処理により、有効画素数カウンタ625には、着目ブロック内において、画素に対応する直線の切片が有効範囲内にあるか否かを基に、有効な画素であると判定された(すなわち、後段の勾配法演算で有効な画素であると判定された)有効画素の数がカウントされている。
ステップS603において、勾配法継続判定部627は、有効画素数カウンタ625にカウントされている画素数(有効画素数)が所定のしきい値αより多いか否かを判断し、有効画素数が所定のしきい値αより多いと判断した場合、勾配法演算を実行させるため、勾配法演算部603に、勾配法演算を実行させる継続フラグ(flg=1)を出力し、ステップS604に進む。
ここで、しきい値αは、例えば、着目ブロック内の画素数の50%の画素数の値とすることができる。なお、ここでの着目ブロック内の画素数の50%の画素数の値は、しきい値αの一例であり、本発明を限定するものではない。
ステップS604において、勾配法演算部603は、勾配法継続判定部627からのフラグに基づいて、セレクタ601からのオフセットベクトルを用いて、勾配法演算処理を実行し、ステップS605に進む。この勾配法演算処理の詳細は、図38を参照して後述するが、この勾配法演算処理により、動きベクトルVnが求められ、ベクトル評価部104および遅延部604に出力される。また、オフセットベクトルに加算される前の動きベクトルvnのノルムの値(|vn|)が求められ、ベクトル評価部104に出力される。
なお、動きベクトルVnは、ステップS604における今回の勾配法演算の処理により算出された動きベクトルvnに、オフセットベクトルV(n−1)が加算されたもの(Vn=V(n−1)+vn)である。例えば、動きベクトルV1は、1回目の勾配法演算により算出された動きベクトルv1に、オフセットベクトル(初期ベクトルV0)が加算されたもの(V1=V0+v1)である。
また、ここで、ノルムとは、あるベクトル空間におけるベクトルの大きさを表し、例えば、原点(0,0)を起点とした(x,y)へのベクトルvのノルムは、次の式(11)で表される。
Figure 0004512985
・・・(11)
ステップS605において、ベクトル評価部104は、勾配法演算処理により求められた動きベクトルVnの評価値DFD(n)およびオフセットベクトルとして用いられた動きベクトルV(n−1)の評価値DFD(n−1)を求め、求めた動きベクトルVnの評価値DFD(n)、オフセットベクトルとして用いられた動きベクトルV(n−1)の評価値DFD(n−1)、およびベクトル演算部653から入力されたノルム値(|vn|)を基に、ノルム値が所定のしきい値β以下であり、かつ評価値DFD(n−1)よりも評価値DFD(n)が小さいか否かを判断する。
すなわち、勾配法演算においては、一般に、微小動きに対して、精度の高い結果が得られるが、勾配法により求められた動きベクトルのノルム値(|vn|)が所定の大きさを超えてしまうと、その大きい動きベクトルvnに対して精度の高い結果が得られているとは限らない。したがって、勾配法演算により求められた動きベクトルのノルム値(|vn|)が所定の大きさを超えたか否か判断することにより、動きベクトルvnの信頼度を判断し、さらにオフセットベクトルとして用いられた動きベクトルV(n−1)よりも勾配法演算処理により求められた動きベクトルVnの信頼度が高いか否かを判断する。
具体的には、例えば、ノルム値(|vn|)は、着目ブロックが8×8の場合、16などの所定の値と比較される。また、1回目の処理においては、求められた動きベクトルV1の評価値DFD(1)と、オフセットベクトルとして用いられた初期ベクトルV0の評価値DFD(0)とが比較され、2回目の処理においては、求められた動きベクトルV2の評価値DFD(2)と、オフセットベクトルとして用いられた動きベクトルV1の評価値DFD(1)とが比較される。
なお、ノルム値(|vn|)と比較される16は、着目ブロックが8×8の場合の例であり、本発明を限定するものではない。
ベクトル評価部104は、ステップS605において、ノルム値(|vn|)がしきい値β以下であり、かつ評価値DFD(n−1)よりも評価値DFD(n)が小さいと判断した場合、すなわち、動きベクトルV(n−1)よりも動きベクトルVnの信頼度が高いと判断された場合、ステップS606において、算出された動きベクトルVn(1回目の場合、動きベクトルV1、2回目の場合、動きベクトルV2)を、検出対象ブロックの動きベクトルVに設定して、ステップS607に進む。ベクトル評価部104は、ステップS607において、反復回数nを1つカウントし、ステップS608に進み、反復回数nが設定された最大反復回数(例えば、2回)になったか否かを判断し、まだ、反復回数nが設定された最大反復回数ではないと判断した場合、セレクタ601を制御し、ステップS601に戻り、それ以降の処理を繰り返させる。
すなわち、ステップS601において、セレクタ601は、ベクトル演算部653から出力され、遅延部604に保持された動きベクトルV(n−1)または初期ベクトル選択部101から入力された初期ベクトルV0を、オフセットベクトルとして選択し、ステップS602において、有効画素判定部602の各部は、セレクタ601によって選択されたオフセットベクトルを用いて、有効画素判定処理を実行し、それ以降の処理を繰り返す。
ベクトル評価部104は、ステップS605において、ノルム値(|vn|)がしきい値β以下ではない、または評価値DFD(n−1)よりも評価値DFD(n)が小さくないと判断した場合、すなわち、動きベクトルV(n−1)の方が、動きベクトルVnよりも信頼度が高いと判断した場合、ステップS609に進み、勾配法演算のオフセットベクトルとしたベクトルV(n−1)(1回目の場合、初期ベクトルV0、2回目の場合、動きベクトルV1)を、検出対象ブロックの動きベクトルVに設定して、ステップS610に進む。また、ベクトル評価部104は、ステップS608において、反復回数nが設定された最大反復回数になったと判断した場合、ステップS610に進む。
ベクトル評価部104は、ステップS610において、動きベクトルVが、動きベクトルを検出する範囲として予め設定されたサーチエリア内であるか否かを判断し、動きベクトルVが、サーチエリア内であると判断した場合、ステップS612に進み、動きベクトルVを、検出対象ブロックに対応させて、検出ベクトルメモリ53に記憶し、反復勾配法処理を終了する。
ベクトル評価部104は、ステップS610において、動きベクトルVが、サーチエリア内ではないと判断した場合、ステップS611に進む。また、ステップS603において、勾配法継続判定部627は、有効画素数カウンタ625に保持されている有効画素数が所定のしきい値α以下であると判断した場合、勾配演算部603に勾配演算を打ち切るフラグ(flg=0)を出力し、ステップS611に進む。
ステップS611において、ベクトル評価部104は、上述したステップS602における有効画素判定処理によって、確からしい動きベクトルを得ることができないと予測されるか、またはステップS604における勾配法演算処理によって、確からしい動きベクトルを得ることができなかったので、動きベクトルVを0ベクトルに設定し、ステップS612に進み、動きベクトルV(0ベクトル)を、検出対象ブロックに対応させて、検出ベクトルメモリ53に記憶し、反復勾配法処理を終了する。
このようにして、反復勾配法演算部603は、勾配法の演算を繰り返し行うことによって動きベクトルVを算出し、算出した動きベクトルVをベクトル評価部104に出力する。
次に、図29乃至図38を参照して、図27のステップS602の有効画素判定処理について説明する。
図28のステップS602の有効画素判定処理においては、例えば、着目画素の動きベクトルvnの成分(vx,vy)で表されるvxおよびvyを軸とする2次元平面上において、画素の輝度が一定であるという条件を満たす周辺画素の動きベクトルVnの成分(vx,vy)の組に対応する点からなる直線の切片が、所定の有効範囲内にあるか否かを基に、有効画素であるか否かが判定される。
勾配法による2次元空間上での動きベクトルの検出は、式(5)乃至式(9)を用いて説明したように、複数要素を用いた近似計算を行うことで実現されており、複数要素としては、着目画素を中心とする周辺領域内の画素(周辺画素)を用いている。また、勾配法の計算においては、周辺領域内の全ての画素が、着目画素と同じ動き(vx,vy)をすると仮定して、演算が行われる。しかし、物体のエッジなどにおいては、着目画素の周辺領域内の画素が、着目画素と同じ動きをするとは限らず、一律にそれらの画素を勾配法の演算の要素に含めることは、行おうとする予測に対してノイズを取り入れることになり、動きベクトル検出の演算精度の低下につながる恐れがある。
そこで、あらかじめ設定された周辺領域内の画素を必要に応じて取捨選択することによって検出精度を向上させることができる。
具体的には、上述した式(5)で表される動き補償フレーム差分dは、時刻tの画像のフレームt上の画素が時刻t+1までの期間に(vx,vy)だけ変位した場合における、変位前の画素の輝度と変位後の画素の輝度との差を表している。動きベクトル検出の理想状態としては、動き補償フレーム差分dが0である状態、すなわち、画素の輝度が変位によらず一定である状態であり、式(12)で表される。
d=g(x+vx,y+vy,t+1)−g(x,y,t)
=Δxvx+Δyvy+Δt=0 (12)
また、より詳細には、フレームt上における着目画素に対して、フレームt+1では、あらかじめ求められたオフセットベクトルをオフセットとして計算した位置を開始点として勾配法演算が行われる。したがって、動きベクトルのx方向の成分vxは、オフセットベクトルのx方向の成分とオフセットベクトルをオフセットとして計算した位置からのx方向の動きの成分との和で表され、動きベクトルのy方向の成分vyは、オフセットベクトルのy方向の成分とオフセットベクトルをオフセットとして計算した位置からのy方向の動きの成分との和で表される。
そこで、実際には、勾配法の演算により求められた動きベクトルからシフトベクトルを引き算した結果が動きベクトルvnとして後段に出力される。
さらに、式(12)を変形すると、式(13)が得られる。
vy=−(Δx/Δy)vx−(Δt/Δy) ・・・(13)
すなわち、式(13)は、動きベクトルの成分(vx,vy)で表されるvxおよびvyを軸とする2次元平面上において、図29で示すような直線で表される。図29において、縦軸は、動きベクトルの成分vyを表し、横軸は、動きベクトルの成分vxを表す。また、直線W1は、画素の輝度が一定であるという条件を満たす画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線であるといえる。
したがって、求めたい動きベクトルvnの成分(vx,vy)は、直線W1上にあると考えられるが、1つの要素(直線)では、動きベクトルvnの成分の値は、一意に決定することができない。
そこで、勾配法演算における場合と同様に、周辺領域内の画素が、着目画素と同じ動きをすると仮定した場合を考える。図30は、画素の輝度が一定であるという条件を満たす各画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線のそれぞれを示図すである。
図30において、縦軸は、動きベクトルの成分vyを表し、横軸は、動きベクトルの成分vxを表す。また、直線W11は、画素の輝度が一定であるという条件を満たす着目画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線であり、直線J11、直線J12、および直線J13のそれぞれは画素の輝度が一定であるという条件を満たす周辺画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線のそれぞれである。また、領域R11は、確からしい着目画素の動きベクトルvnが含まれると予想される領域である。
直線W11、直線J11、直線J12、および直線J13に対応する画素のそれぞれが、着目画素と同じ動きをすると仮定した場合、理想的には、着目画素の動きベクトルvnの成分(vx,vy)は、直線W11、直線J11、直線J12、および直線J13の交点で示される。
しかしながら、実際には、周辺画素の中には、着目画素と異なる動きをする画素も含まれる。図31は、着目画素と異なる動きをする周辺画素を含む場合における、画素の輝度が一定であるという条件を満たす各画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線のそれぞれを示す図である。
図31において、縦軸は、着目画素の動きベクトルの成分vyを表し、横軸は、着目画素の動きベクトルの成分vxを表す。また、直線W21は、画素の輝度が一定であるという条件を満たす着目画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線であり、直線J21、直線J22、直線J23、直線J24、および直線J25のそれぞれは、画素の輝度が一定であるという条件を満たす周辺画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線のそれぞれである。また、領域R21は、確からしい着目画素の動きベクトルvnが含まれると予想される領域である。
図31において、直線W21、直線J21、直線J22、直線J23、直線J24、および直線J25は、1点で交わらないため、求めたい動きベクトルvnの成分は、直線W21、直線J21、直線J22、直線J23、直線J24、および直線J25からの距離が最小となる点で示され、領域R21内にあると予想される。
図31において、直線J21および直線J25のそれぞれは、着目画素と異なる動きをする周辺画素に対応する直線であり、他の直線の集中を妨げていることがわかる。すなわち、勾配法の演算をする場合、演算に用いられる周辺画素の中に直線J21および直線J25に対応するようなノイズ要因となる画素が含まれると、確からしい着目画素の動きベクトルvnが含まれると予想される領域R21が広くなってしまう。換言すれば、着目画素と異なる動きをする周辺画素を用いて、勾配法演算を行うことによって、勾配法演算によって求められる動きベクトルvnの演算精度が低下してしまう(より大きい誤差を含む動きベクトルが算出されてしまう)。
そこで、図32で示されるように、あらかじめvx軸およびvy軸上に所定の有効範囲を設けて、各直線の切片が有効範囲内にあるか否かを基に、有効画素判定処理を行うことによって、後段の動きベクトル検出の演算精度をより向上させることができる。
図32において、縦軸は、動きベクトルの成分vyを表し、横軸は、動きベクトルの成分vxを表す。また、直線W31は、画素の輝度が一定であるという条件を満たす着目画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線であり、直線J31、直線J32、直線J33、および直線J34のそれぞれは、画素の輝度が一定であるという条件を満たす周辺画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線のそれぞれである。また、領域R31は、確からしい着目画素の動きベクトルvnが含まれると予想される領域であり、有効範囲U31は、vx方向における有効範囲であり、有効範囲U32は、vy方向における有効範囲である。
例えば、図32で示すように、周辺画素の動きベクトルの成分に対応する直線のvx方向の切片が、有効範囲U31内にあるか否か、または、周辺画素の動きベクトルの成分に対応する直線のvx方向の切片が、有効範囲U31内にあり、かつvy方向の切片が、有効範囲U32内にあるか否かなどの条件を基に、勾配法演算に使用する周辺画素を取捨選択することができる。
例えば、周辺画素の動きベクトルの成分に対応する直線J31乃至J33のそれぞれのvx方向の切片が、有効範囲U31内にあり、直線J31乃至J33のそれぞれのvy方向の切片が、有効範囲U32内にあり、周辺画素の動きベクトルの成分に対応する直線J34のvx方向の切片が、有効範囲U31内になく、直線J34のvy方向の切片が、有効範囲U32内にないので、直線J31乃至J33のそれぞれに対応する画素を勾配法演算に使用し、直線J34に対応する画素を勾配法演算に使用しないようにすることができる。この場合、直線J34は考慮されず、直線W31、および直線J31乃至直線J33のみが考慮されるので、領域R31がより狭くなり、より正確な動きベクトルの算出が期待できる。
このように、所定の条件を基に、着目画素と同じ動きをすると予測することができる周辺画素を選択することによって、確からしい着目画素の動きベクトルvnが含まれると予想される領域R31を狭くし、後段において、より確からしい動きベクトルvnを検出することができる。
図33は、周辺画素の動きベクトルの成分に対応する直線のvx方向の切片およびvy方向の切片が、有効範囲内にあるか否かを基に、有効画素判定を行う場合の例である。
図33において、縦軸は、着目画素の動きベクトルの成分vyを表し、横軸は、着目画素の動きベクトルの成分vxを表す。また、直線W41は、画素の輝度が一定であるという条件を満たす着目画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線であり、直線J41は、画素の輝度が一定であるという条件を満たす周辺画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線である。また、有効範囲U41は、vx方向における有効範囲であって、直線W41のvx切片を中心として設けられた有効範囲である。U42は、vy方向における有効範囲であって、直線W41のvy切片を中心として設けられた有効範囲である。
図33において、直線J41のvx方向の切片が、有効範囲U41内にあり、かつ直線J41のvy方向の切片が、有効範囲U42内にあるので、直線J41に対応する周辺画素は、有効画素であると判断され、後段の勾配法演算に使用される。
また、着目画素が垂直方向に動く場合、着目画素が水平方向に動く場合、または着目画素が動かない場合(すなわち、少なくともvxまたはvyのいずれかが0ベクトルである場合)には、着目画素の動きベクトルの成分に対応する直線の切片のうち、x方向、y方向の切片、またはx方向の切片およびy方向の切片が存在しないため、例外処理が行われる。
図34は、着目画素の動きベクトルの成分に対応する直線のvy方向の切片が存在しない場合、すなわち、画像が画面の垂直方向に動く場合における、画素の輝度が一定であるという条件を満たす各画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線のそれぞれを示す図である。
図34において、縦軸は、動きベクトルの成分vyを表し、横軸は、動きベクトルの成分vxを表す。また、直線W51は、画素の輝度が一定であるという条件を満たす着目画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線であり、直線J51は、画素の輝度が一定であるという条件を満たす周辺画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線である。また、有効範囲U51は、直線W51のvx切片を中心として設けられた有効範囲である。
図34の例においては、直線W51のvy方向の切片が存在しないため、周辺画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線のvx方向の切片が有効範囲U51内にあるか否かを基に、有効画素判定がなされる。例えば、直線J51のvx方向の切片は、有効範囲U51内にあるから、直線J51に対応する周辺画素は、有効画素であると判断される。
図35は、着目画素の動きベクトルの成分に対応する直線のvx方向の切片が存在しない場合、すなわち、画像が画面の水平方向に動く場合における、画素の輝度が一定であるという条件を満たす各画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線のそれぞれを示すである。
図35において、縦軸は、動きベクトルの成分vyを表し、横軸は、動きベクトルの成分vxを表す。また、直線W61は、画素の輝度が一定であるという条件を満たす着目画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線であり、直線J61は、画素の輝度が一定であるという条件を満たす周辺画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線である。また、有効範囲U61は、直線W61のvy切片を中心として設けられた有効範囲である。
図35の例においては、直線W61のvx方向の切片が存在しないため、周辺画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる直線のvy方向の切片が有効範囲U61内にあるか否かを基に、有効画素判定がなされる。例えば、直線J61のvy方向の切片は、有効範囲U61内にあるので、直線J61に対応する周辺画素は、有効画素であると判断される。
図36は、着目画素の動きベクトルの成分に対応する直線(点)のvx方向およびvy方向の切片が存在しない場合、すなわち、画像が動かない場合における、画素の輝度が一定であるという条件を満たす着目画素の動きベクトルvnの成分(vx,vy)の組に対応する点を示す図である。
図36において、縦軸は、着目画素の動きベクトルの成分vyを表し、横軸は、着目画素の動きベクトルの成分vxを表す。画素の輝度が一定であるという条件を満たす着目画素の動きベクトルvnの成分(vx,vy)は、0ベクトルであり、勾配法演算に用いるのに有効な周辺画素は存在しないと判断することができる。この場合、図28のステップS603の処理において、有効画素数が閾値α以下であると判断され、ステップS611において、動きベクトルとして、0ベクトルが設定される。
このようにして、周辺画素の動きベクトルの成分に対応する直線の切片が、あらかじめ設定された有効範囲内にあるか否かを基に、勾配法演算に用いる周辺画素を取捨選択することによって、動きベクトルの検出精度をより向上させることができる。
次に、図37のフローチャートを参照して、ステップS602に対応する有効画素判定処理の詳細を説明する。
セレクタ601から、有効画素判定部602にオフセットベクトルが入力されてから、切片位置判定部624は、ステップS631において、有効画素数カウンタ625および有効画素フラグメモリ626をリセットし、ステップS632に進む。すなわち、ステップS631の処理において、有効画素数カウンタ625には、“0”が設定され、有効画素フラグメモリ626の全てのフラグには、“0”が設定される。
ステップS632において、画素位置演算部621は、着目画素の位置を演算(算出)し、演算した着目画素の位置を勾配演算部622に出力する。例えば、ステップS632において、画素位置演算部621は、画面上の垂直方向をy軸とし、水平方向をx軸とする2次元平面上における着目画素の位置(x,y)を演算する。また、着目画素は、選択された着目ブロックの中心に位置する画素とすることができる。
ステップS633において、勾配演算部622は、オフセットベクトル、並びに、プリフィルタ102−1およびプリフィルタ102−2を介して入力される時刻tの画像のフレームt、および時刻t+1の画像のフレームt+1を用いて、画素位置演算部621によって算出された着目画素の画素位置を基に、着目画素の画素値の勾配を演算し、演算した勾配を切片演算部623に出力する。
例えば、ステップS633において、勾配演算部622は、上述したように、着目画素の輝度および着目画素に隣接する画素の輝度を基に、着目画素のx方向の勾配Δx、y方向の勾配Δy、および時間方向の勾配Δtを演算する。例えば、ステップS633において、勾配演算部622は、着目画素のx方向の勾配Δxとして、着目画素と着目画素にx方向に隣接する画素との輝度の差分を演算し、y方向の勾配Δyとして、着目画素と着目画素にy方向に隣接する画素との輝度の差分を演算し、時間方向の勾配Δtとして、フレームtの着目画素と、フレームt+1における着目画素に対応する位置(例えば、着目画素を始点とするオフセットベクトルで示される位置)の画素との輝度の差分を演算する。
ステップS634において、切片演算部623は、勾配演算部622によって演算された着目画素の画素値の勾配を基に、画素の輝度が一定であるという条件を満たす着目画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなる動きベクトルの成分vxおよびvyを軸とする2次元平面上の直線のvx方向の切片およびvy方向の切片を演算し、演算したvx方向の切片およびvy方向の切片を切片位置判定部624に出力する。
例えば、ステップS634において、切片演算部623は、勾配演算部622によって演算された着目画素のx方向の勾配Δx、y方向の勾配Δy、および時間方向の勾配Δtを基に、上述した式(13)を用いて式(14)で表されるvx方向の(Xintercept)切片および式(15)で表されるvy方向の切片(Yintercept)を演算する。
Xintercept=Δt/Δx ・・・(14)
Yintercept=Δt/Δy ・・・(15)
ステップS635において、画素位置演算部621は、着目ブロックにおいて、1つの周辺画素を選択し、選択した周辺画素の位置を演算する。画素位置演算部621は、演算された周辺画素の位置を勾配演算部622に出力する。なお、例えば、周辺画素は、着目ブロックの左上の画素からラスタスキャン順に選択される。
例えば、ステップS635において、画素位置演算部621は、画面上の垂直方向をy軸とし、水平方向をx軸とする2次元平面上における選択された周辺画素の位置(x,y)を演算する。
ステップS636において、勾配演算部622は、オフセットベクトル、並びにプリフィルタ102−1およびプリフィルタ102−2を介して入力される、時刻tの画像のフレームtおよび時刻t+1の画像のフレームt+1を用いて、画素位置演算部621によって算出された周辺画素の画素位置を基に、周辺画素画素の画素値の勾配を演算し、演算した勾配を切片演算部623に出力する。
例えば、ステップS636において、勾配演算部622は、上述したように、選択された周辺画素の輝度および選択された周辺画素に隣接する画素の輝度を基に、着目画素のx方向の勾配Δx、y方向の勾配Δy、および時間方向の勾配Δtを演算する。例えば、ステップS636において、勾配演算部622は、選択された周辺画素について、x方向の勾配Δxとして、周辺画素と周辺画素にx方向に隣接する画素との輝度の差分を演算し、y方向の勾配Δyとして、周辺画素と周辺画素にy方向に隣接する画素との輝度の差分を演算し、時間方向の勾配Δtとして、フレームtの周辺画素と、フレームt+1における周辺画素に対応する位置(例えば、周辺画素を始点とするオフセットベクトルで示される位置)の画素との輝度の差分を演算する。
ステップS637において、切片演算部623は、勾配演算部622によって演算された周辺画素の画素値の勾配を基に、画素の輝度が一定であるという条件を満たす周辺画素の動きベクトルvnの成分(vx,vy)の組に対応する点からなるvxおよびvyを軸とする2次元平面上の直線のvx方向の切片およびvy方向の切片を演算し、演算したvx方向の切片およびvy方向の切片を切片位置判定部624に出力する。
例えば、ステップS637において、切片演算部623は、上述した式(14)および式(15)を用いて、勾配演算部622によって演算された周辺画素のx方向の勾配Δx、y方向の勾配Δy、および時間方向の勾配Δtを基に、周辺画素に対応する直線のvx方向の切片およびvy方向の切片を演算する。
ステップS638において、切片位置判定部624は、切片演算部623によって演算された着目画素に対応する直線のvx方向の切片およびvy方向の切片、並びに周辺画素に対応する直線のvx方向の切片およびvy方向の切片を基に、vx方向における着目画素に対応する直線の切片をvx方向の基準位置として、vx方向の基準位置から周辺画素に対応する直線のvx方向の切片までの距離およびvy方向における着目画素に対応する直線の切片をvy方向の基準位置として、vy方向の基準位置から周辺画素に対応する直線のvy方向の切片までの距離を演算する。
より具体的には、ステップS638において、切片位置判定部624は、着目画素に対応する直線のvx方向の切片およびvy方向の切片が存在する場合、vx方向における着目画素に対応する直線の切片をvx方向の基準位置として、vx方向の基準位置から周辺画素に対応する直線のvx方向の切片までの距離およびvy方向における着目画素に対応する直線の切片をvy方向の基準位置として、vy方向の基準位置から周辺画素に対応する直線のvy方向の切片までの距離を演算する。また、切片位置判定部624は、着目画素に対応する直線のvx方向の切片またはvy方向の切片が存在しない場合、すなわち、着目画素に対応する直線の傾きが、0または無限大である(着目画素に対応する直線が、vx方向の軸またはvy方向の軸に平行である)場合、切片が存在しない方向における基準位置から周辺画素に対応する直線の切片までの距離の演算を行わない。
したがって、例えば、着目画素に対応する直線のvx方向の切片が存在しない(着目画素に対応する直線の傾きが、0である)場合、ステップS638において、切片位置判定部624は、vx方向における基準位置から周辺画素に対応する直線の切片までの距離の演算を行わない。
ステップS639において、切片位置判定部624は、ステップS638において演算されたvx方向における基準位置から周辺画素に対応する直線の切片までの距離が、所定の閾値ηより小さく、かつvy方向における基準位置から周辺画素に対応する直線の切片までの距離が、所定の閾値θより小さいか否かを判断する。
より具体的には、ステップS639において、切片位置判定部624は、基準となる着目画素に対応する直線のx方向の勾配をΔxstdとし、基準となる着目画素に対応する直線のy方向の勾配をΔystdとし、基準となる着目画素に対応する直線のt方向の勾配をΔtstdとし、周辺画素に対応する直線のx方向の勾配をΔxiとし、周辺画素に対応する直線のy方向の勾配をΔyiとし、周辺画素に対応する直線のt方向の勾配をΔtiとすると、着目画素に対応する直線のvx切片(Δtstd/Δxstd)およびvy方向の切片(Δtstd/Δystd)が共に存在する場合、各勾配Δxstd、Δystd、Δtstd、Δxi、Δyi、およびΔtiのそれぞれを式(16)および式(17)のそれぞれに代入して得られる結果を基に、画素位置演算部621によって選択された周辺画素が、後段の勾配法演算に有効な画素であるか否かを判断する。
|(Δtstd/Δxstd)−(Δti/Δxi)|<η ・・・(16)

|(Δtstd/Δystd)−(Δti/Δyi)|<θ ・・・(17)
ここで、ηおよびθは、しきい値である。例えば、ηおよびθの値は、共に5.0とすることができる。
すなわち、ステップS639において、切片位置判定部624は、着目画素に対応する直線のvx方向の切片(Δtstd/Δxstd)およびvy方向の切片(Δtstd/Δystd)が共に存在する場合、各勾配Δxstd、Δystd、Δtstd、Δxi、Δyi、およびΔtiのそれぞれを式(16)および式(17)に代入した結果が、式(16)および式(17)のそれぞれの条件を満たす場合、選択された周辺画素が、後段の勾配法演算に有効な画素であると判断し、式(16)および式(17)のそれぞれの条件を満たさない場合、選択された周辺画素が、後段の勾配法演算に有効な画素でないと判断することができる。
ここで、各勾配を式(16)および式(17)に代入した結果が、式(16)および式(17)のそれぞれの条件を満たすか否かを基に、有効画素の判定を行うと説明したが、式(16)または式(17)のいずれかの条件を満たすか否かを基に、有効画素の判定を行うようにしてもよい。
また、例えば、ステップS639において、画素位置判定部624は、着目画素に対応する直線のvx方向における切片が存在し、かつ、vy方向における切片が存在しない(着目画素に対応する直線の傾きが、無限大である)場合、各勾配Δxstd、Δystd、Δtstd、Δxi、Δyi、およびΔtiのそれぞれを式(16)および式(18)のそれぞれに代入して得られる結果を基に、画素位置演算部621によって選択された周辺画素が、後段の勾配法演算に有効な画素であるか否かを判断する。
Δyi≠0 ・・・(18)
すなわち、各勾配Δxstd、Δystd、Δtstd、Δxi、Δyi、およびΔtiのそれぞれが式(16)および式(18)のそれぞれの条件を満たす場合、選択された周辺画素が、後段の勾配法演算に有効な画素であると判断し、式(16)および式(18)のそれぞれの条件を満たさない場合、選択された周辺画素が、後段の勾配法演算に有効な画素でないと判断することができる。
さらに、また、例えば、ステップS639において、画素位置判定部624は、着目画素に対応する直線のvx方向における切片が存在せず、かつ、vy方向における切片が存在する(着目画素に対応する直線の傾きが、0である)場合、各勾配Δxstd、Δystd、Δtstd、Δxi、Δyi、およびΔtiのそれぞれを式(17)および式(19)のそれぞれに代入して得られる結果を基に、画素位置演算部621によって選択された周辺画素が、後段の勾配法演算に有効な画素であるか否かを判断する。
Δxi≠0 ・・・(19)
すなわち、各勾配Δxstd、Δystd、Δtstd、Δxi、Δyi、およびΔtiのそれぞれが式(17)および式(19)のそれぞれの条件を満たす場合、選択された周辺画素が、後段の勾配法演算に有効な画素であると判断し、式(17)および式(19)のそれぞれの条件を満たさない場合、選択された周辺画素が、後段の勾配法演算に有効な画素でないと判断することができる。
さらに、また、例えば、ステップS639において、画素位置判定部624は、着目画素のvx方向における切片およびvy方向における切片が存在しない場合、後段の勾配法演算に有効な周辺画素が存在しないと判断する。この場合、図28のステップS603の処理において、有効画素数がしきい値α以下であると判断され、ステップS611において、動きベクトルとして0ベクトルが設定される。
ステップS639において、切片位置判定部624は、選択された周辺画素が、後段の勾配法演算に有効な画素であると判断した場合、ステップS640に進み、有効画素数カウンタ625の有効画素の数をインクリメントし、ステップS641に進む。
ステップS641において、切片位置判定部624は、有効画素フラグメモリ626の選択されている周辺画素に対応するフラグを立てる(選択されている周辺画素に対応するフラグに1を設定する)。有効画素フラグメモリ626には、着目ブロック内の画素のそれぞれが、勾配法演算に有効な画素であるか否かを示す有効画素情報が保持されている。有効画素情報は、例えば、着目ブロック内の1つの画素に対応する1ビットのフラグが着目ブロック内の画素の数だけ並べられた1ビットフラグのテーブルである。
したがって、例えば、64画素からなる着目ブロックの場合、有効画素情報は、64ビットのテーブルであり、1番目に選択された画素が有効な画素であると判断された場合、選択された画素に対応する1番目のフラグが立てられる。
また、切片位置判定部624は、ステップS639において、選択された周辺画素が、後段の勾配法演算に有効な画素ではないと判断した場合、ステップS640およびステップS641の処理はスキップされ、手続きは、ステップS642に進む。
切片位置判定部624は、ステップS642において、着目ブロック内のすべての画素の処理が終了したか否かを判断し、着目ブロック内のすべての画素の処理が終了していないと判断した場合、ステップS635に戻り、画素位置演算部621は、次の周辺画素を選択し、次の画素について、それ以降の処理を繰り返す。一方、画素位置判定部624は、ステップS642において、着目ブロック内のすべての画素の処理が終了したと判断した場合、ステップS643において、勾配演算部603は、有効画素フラグメモリ626から有効画素情報を入力し、有効画素判定処理を終了し、図28のステップS603の処理に戻る。
以上の処理により、有効画素カウンタ数625には、着目ブロック内において、後段の勾配法演算において有効であると判断された画素の数が格納される。したがって、勾配法継続判断部627は、図28のステップS603の処理において、この有効画素カウンタ625の画素の数を参照することにより、勾配法演算を行うか否かを判断することができる。
次に、図38のフローチャートを参照して、図28のステップS604に対応する勾配法演算処理の詳細を説明する。したがって、図38の例においては、画素値勾配演算部651には、勾配法継続判定部627から、勾配法演算を実行させる継続フラグが入力され、有効画素フラグメモリ626から有効画素情報が入力される。
勾配法継続判定部627から、動きベクトルの演算を指示する、1である継続フラグが入力され、有効画素フラグメモリ626から有効画素情報が入力されてから、ステップS671において、画素値勾配演算部651は、有効画素フラグメモリ626から入力した有効画素情報を基に、着目ブロックにおいて、有効であると判断された画素を選択し、ステップS672に進む。なお、有効画素は、着目ブロックの左上の画素からラスタスキャン順に選択される。
画素値勾配演算部651は、ステップS672において、セレクタ601からのオフセットベクトル、並びに、プリフィルタ102−1およびプリフィルタ102−2を介して入力される時刻tの画像のフレームt、および時刻t+1の画像のフレームt+1を用いて、選択された画素のx方向の勾配Δx、y方向の勾配Δy、およびt方向の勾配Δtを演算し、演算したx方向の勾配Δx、y方向の勾配Δy、およびt方向の勾配Δtを勾配積算部652に出力し、ステップS673に進む。
例えば、ステップS672において、画素値勾配演算部651は、図10を参照して上述したように、選択された画素の輝度および選択された画素に隣接する画素の輝度を基に、選択された画素のx方向の勾配Δx、y方向の勾配Δy、およびt方向の勾配Δtを演算する。
勾配積算部652は、ステップS673において、画素値勾配演算部651によって演算されたx方向の勾配Δx、y方向の勾配Δy、およびt方向の勾配Δtを積算し、積算した勾配の積算値をベクトル演算部653に出力する。
例えば、ステップS673において、勾配積算部652は、画素値勾配演算部651により算出された各有効画素のx方向の勾配Δx、y方向の勾配Δy、および時間方向の勾配Δtを基に、上述した式(9)におけるΣΔy2、ΣΔx2、ΣΔtΔx、ΣΔxΔy、およびΣΔtΔyを算出し、算出したΣΔy2、ΣΔx2、ΣΔtΔx、ΣΔxΔy、およびΣΔtΔyの値をベクトル演算部653に出力する。
ステップS674において、勾配積算部652は、着目ブロック内のすべての有効画素の処理が終了したか否かを判断し、着目ブロック内のすべての有効画素の処理が終了していないと判断された場合、ステップS671に戻り、次の有効画素を選択し、それ以降の処理を繰り返す。一方、勾配積算部652は、ステップS674において、着目ブロック内のすべての有効画素の処理が終了したと判断された場合、積算された勾配の積算値およびオフセットベクトルをベクトル積算部653に出力し、ステップS675に進む。
ステップS675において、ベクトル演算部653は、画素値勾配演算部651から勾配の積算値およびオフセットベクトルが入力されてから、勾配積算部652からの勾配の積算値および上述した式(9)の最小自乗和を用いて、動きベクトルvnを算出し、ステップS676に進む。すなわち、ステップS675において、ベクトル演算部653は、ΣΔy2、ΣΔx2、ΣΔtΔx、ΣΔxΔy、およびΣΔtΔyが設定された式(9)を解くことにより、動きベクトルvnを算出する。
ステップS676において、ベクトル演算部653は、演算(算出)した動きベクトルvnのノルム値を、上述した式(11)を用いて、算出する。
ステップS677において、ベクトル演算部653は、画素値勾配演算部651からのオフセットベクトルに、算出された動きベクトルvnを加算した、動きベクトルVnを求め、求めた動きベクトルVnをベクトル評価部104および遅延部604に出力する。また、ベクトル演算部653は、算出された動きベクトルvnのノルム値をベクトル評価部104に出力し、勾配法演算処理を終了し、図28のステップS605に戻る。
以上のように、着目ブロック内の選択された画素の動きベクトルの成分に対応する直線の切片が着目画素の動きベクトルの成分に対応する直線の切片を基準として設けた所定の有効領域内にない場合、選択された画素は、動きの乱れを発生させる恐れがあるとして、動きベクトルを検出するときの勾配法の演算から除外し、勾配法演算に用いられない画素数が、所定のしきい値よりも多かった場合、勾配法演算処理の処理を打ち切り、動きベクトルVとして0ベクトルを設定するようにしたので、より安定した勾配法演算が実行され、その結果、確からしい動きベクトルが検出され、これにより、動きベクトル検出の精度がより向上する。
なお、勾配法演算による動きベクトルの検出を、着目ブロック毎に行うと説明したが、画素単位で勾配法の演算を行ってもよい。この場合、着目画素を選択し、着目画素に対するブロックについて勾配法の演算が行われる。
また、着目ブロック内のすべての画素に検出された動きベクトルを設定すると説明したが、有効画素判定処理において、有効ではないと判断された画素に対して、動きベクトルを設定しないようにしてもよい。
次に、ベクトル割付部54の構成の詳細について説明する。
図39は、ベクトル割付部54の構成を示すブロック図である。図39に構成を示すベクトル割付部54は、24P信号の入力される時刻tの画像のフレームtと、時刻t+1の画像のフレームt+1を用いて、フレームt上において検出された動きベクトルを、割付ベクトルメモリ55上の、補間する60P信号の内挿フレーム上の画素に割り付ける処理を行う。
図39の例において、時刻tの画像のフレームtと、時刻t+1の画像のフレームt+1は、画素情報演算部701、評価値演算部702、および着目画素差分演算部703に入力される。
画素情報演算部701は、検出ベクトルメモリ53のフレームt上の画素に検出された動きベクトルを、左上の画素からラスタスキャン順に取得し、取得した動きベクトルを、次の時刻のフレーム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からの動きベクトルを割り付ける。
次に、動きベクトルの画素以下精度を説明する。上述した式(1)で表されるDFD評価の演算においては、フレームtの画素位置pをベクトルv量分ずらした先のフレームt+1上の位相p+vは、実際には、24p信号のフレームt+1上の画素位置と一致しない場合が多く、その場合の輝度値は定義されていない。したがって、画素以下精度を有する動きベクトルvに対する評価値DFDの演算を行うためには、画素以下の位相における輝度値を何らかの方法で生成しなければならない。
これに対応して、フレームtの画素位置pをベクトルv量分ずらした先のフレームt+1上の位相p+vに最も近い画素の輝度値をそのまま用いる方法がある。しかしながら、この方法では、評価する動きベクトルの画素以下成分を丸めてしまうため、動きベクトルの画素以下成分を捨てていることになり、これにより求められた評価値DFDの信頼度は、低くなってしまう。
そこで、本発明においては、周辺4画素の輝度値による4点補間処理を用いている。図40は、本発明の4点補間処理の概念を示す図である。図40においては、矢印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乃至L4を用いて、周辺4画素の距離の逆比の和で求められる。すなわち、輝度値Ft+1(p+v)は、次の式(20)で表される。
t+1(p+v) = (1―α)(1−β)L0+α(1−β)L1
+(1−α)βL2+αβL3 ・・・(20)
以上のように、4点補間処理により求められる輝度値Ft+1(p+v)を用いて、DFD評価の演算を行うことにより、ハードウェア実装上のコストを引き上げることなく、評価値DFDの信頼度の低下を抑制することができる。なお、以下においては、ベクトル割付の際の評価値DFDや輝度差分絶対値などの演算において、この4点補間を適用した例を説明するが、もちろん、上述した初期ベクトル選択処理やベクトル検出処理、または、後述する割付補償処理などのベクトルを評価する場合の評価値DFDの演算においても、この4点補間は適用される。
次に、ベクトル割付処理の概念を説明する。例えば、24P信号上でオブジェクトが速度vで動いており、任意の2フレーム間で、このオブジェクトの動きについて等速仮定が成り立つと仮定した場合に、24P信号のフレーム間に、新しくフレームを内挿することを考える。この場合、24P信号のオブジェクトから動きベクトルvを延ばすと、動きベクトルvと内挿フレームとの交点は、同じオブジェクトであり、同じ速度vを有する。
したがって、ベクトル検出部53で検出された24P信号のフレーム(以下、内挿フレームに対して、元フレームとも称する)の動きベクトルを、その動きベクトルと、内挿する60P信号の内挿フレーム上との交点に割り付けることで、内挿フレーム上の各画素の動きを求めることができる。また、逆に、割り付けられた動きベクトルから、内挿フレーム上の画素が24P信号フレーム上でどの位置から動いたものなのかを求めることができる。
図41は、24P信号の元フレームで検出された動きベクトルと、60P信号の内挿フレーム上の画素の例を1次元で示している。図41の例においては、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信号のフレームが置かれることから、信号処理装置1において予め設定されている。
各フレーム上の丸は、各画素を示している。前段のベクトル検出部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において割付補償処理が実行される。
さらに、図42を参照して、元フレームで検出された動きベクトルと、60P信号の内挿フレーム上の画素について詳しく説明する。図42の例において、矢印Tは、図中、左前の時刻tのフレームtから、右奥の時刻t+1のフレームt+1への時間の経過方向を示している。また、時刻tと時刻t+1の間の時刻t+postに内挿フレームF1が置かれている。
図42の例の場合、フレームt上の画素(xa,ya)で検出された動きベクトルva(xva,yva)をフレームt+1方向に延ばし、内挿フレームF1との交点(xia,yia)を演算する。交点は、24P信号のフレームt上の動きベクトルvaの端点にあたる画素が移動した点であると考えられるので、具体的には、式(21)および式(22)のように表される。
ia = xa+postva ・・・(21)
ia = ya+postva ・・・(22)
ここで、上述したように、動きベクトルvaが画素以下精度を有する場合には、動きベクトルvaの交点と、内挿フレームF1上の画素位置は、一致するとは限らない。一致しない場合、図42に示されるように、動きベクトルvaは、内挿フレームF1上の交点の近傍4画素G1乃至G4に対して割り付けられる。すなわち、動きベクトルvaは、近傍の各画素G1乃至G4上にシフト(平行移動)されて、それぞれの画素に対して割り付けられる割付候補ベクトルとされ、割付補償処理が実行される。
なお、このように、1つの動きベクトルが、近傍4画素に対して割り付けられる候補となることもあるため、画素によっては、複数の動きベクトルが割付候補ベクトルとされる。この場合、ベクトル割付部54は、各動きベクトルについて、内挿フレーム上の画素と、その動きベクトルで対応付けられる元フレーム上の交点を算出し、その交点を用いて、各動きベクトルを評価することにより、最終的に、内挿フレーム上の画素に、割り付ける動きベクトルを決定する。
図43を参照して、ベクトル割付部54における動きベクトルの評価について説明する。図43は、下から、図42の時刻tのフレームt、時刻t+postの内挿フレームF1、および、時刻t+1のフレームt+1を、1次元的に示している。
図43の例において、動きベクトル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は、次の式(23)で表される。
dp = |Ft(P)― Ft+1(Q)| ・・・(23)
そして、動きベクトルsvaの第3の評価として、ベクトル割付部54は、点Pおよび点Qを中心としたDFD演算範囲の相関値を表す差分絶対値による評価判断を行う。すなわち、ベクトル割付部54は、点Pおよび点Qを中心としたDFD演算範囲を用いて、画素G4における動きベクトルsvaの評価値DFD(差分絶対値)を求め、求められた評価値DFDがDFDテーブルの最小評価値よりも小さいか否かを判断する。以上の評価の結果、ベクトル割付部54は、求められた評価値DFDの中で最小の評価値DFDを有する動きベクトルを、画素G4に割り付ける。
以上のように、内挿フレームの画素における割付候補の動きベクトルを、割付対象画素の評価値DFDだけでなく、割付対象画素における輝度差分絶対値を用いて評価するようにしたので、従来の評価値DFDを用いるだけの場合よりも、確からしい動きベクトルを、割付対象画素に割り付けることができる。この結果、ベクトル割付の精度が向上する。
なお、上述したように内挿フレームの画素における割付候補の動きベクトルを評価するためには、内挿フレームの画素を基準に、その動きベクトルで対応付けられる元フレーム上の位置が用いられるが、輝度差分絶対値dpおよび評価値DFDを求める際に、割付候補の動きベクトルは、内挿フレームの画素位置を基準に延長するため、動きベクトルと元フレーム上の交点は、元フレームの画素位置と一致しないことがあり、このままでは画素値を求めることができない。このような場合に、図40を参照して上述した4点補間処理が実行される。
図44は、ベクトル割付処理における4点補間の例を示している。図44において、図42および図43における場合と対応する部分には対応する符号を付してあり、その説明は繰り返しになるので省略する。
図44の例においては、割付候補の動きベクトル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を精度よく求めることができる。
次に、図45のフローチャートを参照して、ベクトル割付処理の詳細を説明する。24P信号の元フレームである、時刻tの画像のフレームtと、時刻t+1の画像のフレームt+1は、画素情報演算部701、評価値演算部702、および着目画素差分演算部703に入力される。
画素情報演算部701は、新しい元フレームが入力されると、ベクトル選択部705を制御し、ステップS701において、割付フラグメモリ56の割付フラグを0(False)で初期化させ、ステップS702に進み、割付ベクトルメモリ55を0ベクトルで初期化させ、ステップS703に進む。これにより、結果的に、動きベクトルが割り付けられない画素に、0ベクトルが割り付けられる。
また、画素情報演算部701は、ステップS703において、評価値演算部702を制御し、内挿フレーム上のすべての画素に対して、0ベクトルを用いて評価値DFD0を算出させ、ベクトル選択部705を制御し、評価値演算部702により算出された0ベクトルの評価値DFD0を、内挿フレームの各画素に対する最小評価値としてDFDテーブルに記憶させ、ステップS704に進む。すなわち、ステップS703において、評価値演算部702は、内挿フレームすべての画素に対して、0ベクトルを用いて評価値DFD0を算出し、算出した評価値DFD0を、ベクトル評価部704を介して、ベクトル選択部705に出力する。そして、ベクトル選択部705は、ベクトル評価部704を介して入力された評価値DFD0を、DFDテーブルの対応する画素の最小評価値として記憶する。
画素情報演算部701は、ステップS704において、検出ベクトルメモリ53上の元フレームから画素を選択し、ステップS705に進む。なお、この場合、フレームの左上からラスタスキャン順に画素が選択される。
画素情報演算部701は、ステップS705において、画素位置演算処理を実行し、ステップS706に進む。この画素位置演算処理の詳細は、図46を参照して後述するが、この画素位置演算処理により、ステップS704において選択された画素において検出された動きベクトルが割り付けられる対象となる内挿フレーム上の割付対象画素が算出され、算出された割付対象画素を基準に、その動きベクトルで対応付けられる元フレーム上の位置が算出される。
画素情報演算部701は、ステップS706において、算出された割付対象画素を選択し、選択した割付対象画素と、その動きベクトルを、ベクトル選択部705に出力し、ステップS707に進む。このとき、同時に、画素情報演算部701は、選択した割付対象画素を基準に、その動きベクトルで対応付けられる元フレーム上の位置の情報を、評価値演算部702および着目画素演算部703に出力する。なお、ステップS706において、画素情報演算部701は、割付対象画素が複数存在する場合には、左上の画素から選択する。
ステップS707において、画素情報演算部701は、選択された割付対象画素に関して、割付ベクトル評価処理を実行し、ステップS708に進む。この割付ベクトル評価処理の詳細は、図47を参照して後述するが、この割付ベクトル評価処理により、割付対象画素における動きベクトルの評価値DFDおよび輝度差分絶対値が求められ、割付対象画素における動きベクトルの信頼度が判断され、これらの判断の結果、信頼度が高いとされた動きベクトルで、割付ベクトルメモリ55の動きベクトルが書き換えられる。
画素情報演算部701は、ステップS708において、すべての割付対象画素の処理が終了したか否かを判断し、まだ、すべての割付対象画素の処理が終了していないと判断した場合には、ステップS706に戻り、次の割付対象画素を選択し、それ以降の処理を繰り返す。
ステップS708において、すべての割付対象画素の処理が終了したと判断された場合、画素情報演算部701は、ステップS709において、検出ベクトルメモリ53上の元フレームのすべての画素の処理を終了したか否かを判断する。画素情報演算部701は、ステップS709において、検出ベクトルメモリ53上の元フレームのすべての画素の処理を終了していないと判断した場合、ステップS704に戻り、検出ベクトルメモリ53上の元フレームの次の画素を選択し、それ以降の処理を繰り返す。また、画素情報演算部701は、ステップS709において、検出ベクトルメモリ53のすべての画素についての処理を終了したと判断した場合、ベクトル割付処理を終了する。
次に、図46のフローチャートを参照して、画素位置演算処理の詳細を説明する。なお、図46は、図45のステップS705の画素位置演算処理の例を示している。
ステップS721において、画素情報演算部701は、ステップS704の処理により選択された画素で検出された動きベクトルを、検出メモリベクトル53から取得し、ステップS722に進む。なお、選択された画素の動きベクトルが0ベクトルである場合、割付ベクトルメモリ55には、初期値として0ベクトルが予め記憶されているので、以降のステップS722乃至S724、および、図45のステップS706乃至S708の処理はスキップされ、処理は、ステップS709に進む。
画素情報演算部701は、ステップS722において、取得された動きベクトルと内挿フレームの交点を算出する。すなわち、画素情報演算部701は、取得した動きベクトルを、次フレームt+1方向に延ばし、延ばした動きベクトルと、内挿フレームとの交点を算出し、ステップS723に進む。
画素情報演算部701は、ステップS723において、動きベクトルと内挿フレームから算出された交点から、割付対象画素を設定し、ステップS724に進む。このとき、画素情報演算部701は、交点が内挿フレーム上の画素位置に一致する場合には、交点を、割付対象画素に設定する。一方、画素情報演算部701は、交点が内挿フレーム上の画素位置に一致しない場合には、上述したように、内挿フレーム上の交点の近傍4画素を、割付対象画素に設定する。
ステップS724において、画素情報演算部701は、評価値演算部702および着目画素差分演算部703が評価値DFDおよび輝度差分絶対値を求める上で必要である、各割付対象画素を基準に、取得された動きベクトルで対応付けた元フレーム上の位置を算出する。具体的には、画素情報演算部701は、ステップS724において、取得された動きベクトルを、設定された割付対象画素にシフト(平行移動)し、シフトされた動きベクトルと、元フレーム上の交点の位置を求め、画素位置演算処理を終了し、図44のステップS706に戻る。
次に、図47のフローチャートを参照して、割付ベクトル評価処理の詳細を説明する。なお、図47は、図45のステップS707の割付ベクトル評価処理の例を示している。
図45のステップS706において、画素情報演算部701により、選択した割付対象画素を基準に、その動きベクトルで対応付けられる元フレーム上の位置が求められ、求められた元フレーム上の位置の情報が、評価値演算部702および着目画素差分演算部703に入力される。
評価値演算部702は、画素情報演算部701から、元フレーム上の位置の情報が入力されると、ステップS741において、割付対象画素における動きベクトルの評価値DFDを求めるために、フレームtおよびフレームt+1上の位置を中心としたDFD演算範囲(m×n)をそれぞれ求め、ステップS742に進み、求められたDFD演算範囲が画枠内にあるか否かを判断する。評価値演算部702は、ステップS742において、DFD演算範囲が画枠からはみ出していると判断した場合、その動きベクトルは、割付対象画素に割り付ける割付候補ベクトルにはならないと判断し、ステップS743乃至S749の処理をスキップし、割付ベクトル評価処理を終了し、図45のステップS708に戻る。
評価値演算部702は、ステップS742において、求められたDFD演算範囲が画枠内にあると判断した場合、ステップS743に進み、画枠内にあると判断されたDFD演算範囲を用いて、割付対象画素の評価値DFDを演算し、求められた評価値DFDを、評価値判断部712に出力し、ステップS744に進む。なお、このとき、元フレーム上の位置が画素以下であった場合には、上述した4点補間を用いて、元フレーム上の交点の輝度値を求めることにより、割付対象画素の評価値DFDが演算される。
一方、着目画素差分演算部703は、画素情報演算部701から、元フレーム上の位置の情報が入力されると、ステップS744において、割付対象画素における輝度差分絶対値dpを求め、求められた輝度差分絶対値dpを、画素差分判断部711に出力し、ステップS745に進む。なお、このときも、元フレーム上の位置が画素以下であった場合には、着目画素差分演算部703は、上述した4点補間を用いて、元フレーム上の交点の輝度値を求めることにより、割付対象画素における輝度差分絶対値dpを演算する。
画素差分判断部711は、ステップS745において、着目画素差分演算部703からの割付対象画素の輝度差分絶対値dpが、所定のしきい値以下であるか否かを判断し、割付対象画素の輝度差分絶対値dpが、所定のしきい値より大きいと判断した場合、フレームtおよびフレームt+1の交点がそれぞれ異なるオブジェクトに属する可能性が高いと判断し、すなわち、その動きベクトルは、割付対象画素における信頼度が低く、割付対象画素に割り付ける割付候補ベクトルにはならないと判断し、ステップS746乃至S749の処理をスキップし、割付ベクトル評価処理を終了し、図45のステップS708に戻る。
画素差分判断部711は、ステップS745において、割付対象画素の輝度差分絶対値dpが、所定のしきい値以下であると判断した場合、ステップS746に進む。評価値判断部712は、ステップS746において、ベクトル選択部705のDFDテーブルを参照し、評価値演算部702からの割付対象画素の評価値DFDが、DFDテーブルに記憶されている割付対象画素の最小評価値(いまの場合、0ベクトルの評価値DFD0)よりも小さいか否かを判断し、評価値演算部702からの割付対象画素の評価値DFDが、DFDテーブルに記憶されている割付対象画素の最小評価値以上であると判断した場合、その動きベクトルは、割付対象画素において、信頼度が高くないと判断し、ステップS747乃至S749の処理をスキップし、割付ベクトル評価処理を終了し、図45のステップS708に戻る。
一方、評価値判断部712は、ステップS746において、評価値演算部702からの割付対象画素の評価値DFDが、DFDテーブルに記憶されている割付対象画素の最小評価値よりも小さいと判断した場合、その動きベクトルは、割付対象画素において、いままで比較した動きベクトルの中で最も、評価値DFDに基づく信頼度が高いと判断し、信頼度が高いと判断された割付対象画素の評価値DFDを、ベクトル選択部705に出力し、ステップS747に進む。
ベクトル選択部705は、評価値判断部712からの割付対象画素の評価値DFDを入力すると、ステップS747において、割付フラグメモリ56の割付対象画素の割付フラグを1(True)に書き換え、ステップS748に進み、DFDテーブルの割付対象画素が対応する最小評価値を、評価値判断部712により信頼度が高いと判断された評価値DFDに書き換え、ステップS749に進む。
ベクトル選択部705には、ステップS706において、画素情報演算部701から選択した割付対象画素とその動きベクトルが入力されている。したがって、ベクトル選択部705は、ステップS749において、割付ベクトルメモリ55の割付対象画素に割り付けられている動きベクトルを、信頼度が高いと判断された評価値DFDに対応する動きベクトルで書き換え、割付ベクトル評価処理を終了し、図45のステップS708に戻る。
以上のように、内挿フレームの割付対象画素に割り付けられる動きベクトルを選ぶときに、評価値DFDだけでなく、割付対象画素を基準に動きベクトルで対応付けた元フレーム上の位置に基づいて求められる、割付対象画素の輝度差分絶対値を別扱いにし、評価するようにしたので、従来の評価値DFDを用いるだけの場合よりも、割付候補ベクトルの中から、最も確からしい動きベクトルを選んで、割付対象画素に割り付けることができる。これにより、ベクトル割付の精度が向上し、後段の画像補間処理において生成される画像の不連続性などを抑制することができ、画像の品質を向上させることができる。
さらに、評価値DFDや輝度差分絶対値を求める際などに、画素以下位置の画素値が必要な場合に、その画素以下位置の近傍4画素との距離を基にした線形補間で値を求めるようにしたので、画素以下位置精度の処理が可能になり、さらに、従来の画素以下成分を丸めてしまう方法よりも、輝度差分絶対値dpや評価値DFDを精度よく求めることができ、これにより、割付候補ベクトルの中から、着目画素により確からしい動きベクトルを割り付けることができる。すなわち、ベクトル割付処理の精度が向上する。
また、0ベクトルによる評価値DFDを初期値として、DFDテーブルに予め保持しておき、動きベクトルを順次処理している間に、ある動きベクトルによる評価値DFDがその時点で最小評価値となった場合に、DFDテーブルの最小評価値と、割付ベクトルメモリ55に割り付けられている動きベクトルを、随時更新するようにしたので、時間とリソースを効率的に使用することができる。
次に、割付補償部57の構成の詳細について説明する。
図48は、割付補償部57の構成を示すブロック図である。図48に構成を示す割付補償部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)に書き換える。
図49は、ベクトル補償部802の構成を示すブロック図である。図49に構成を示すベクトル補償部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に出力する。
図50は、割付補償処理の原理を説明する図である。図50の例においては、内挿フレーム上の各画素が示されている。画素から出力される矢印は、各画素に割り付けられている動きベクトルを表しており、矢印がない画素は、動きベクトルが割り付けられていない画素を表している。
ここで、前段のベクトル割付部54により動きベクトルの割り付けられなかった中央の着目画素Pに対して、着目画素Pの近傍の周辺画素に割り付けられている動きベクトルの中から、評価値DFDに基づく、信頼度が高いものを選択して割り付ける。図50の例の場合、着目画素Pには、着目画素Pの上の画素の動きベクトル(太線矢印)が選択され、割り付けられている。これは、次に説明する動き相関に基づいて実行される処理である。
図51は、動き相関の原理について説明する図である。図51の例においては、あるフレーム上を動きv1で動くオブジェクトO1と、動きv2で動くオブジェクトO2が示されている。オブジェクトO1に属している着目画素P1とその近傍K1は、オブジェクトO1とほぼ同一動きv1を有している。また、オブジェクトO2に属している着目画素P2とその近傍K2は、オブジェクトO2とほぼ同じ動きv2を有している。
このように、動き相関とは、ある同じ時間における空間内(同一フレーム内)において、あるオブジェクトに属する画素の動きは、ほぼ同一動きをしていることが多いということを表すものである。したがって、動きベクトルを割り付けることができなかった画素に対しては、ある同じ時間における空間内(同一フレーム内)において、このような動き相関があることを利用して、周辺画素の動きベクトルから、その画素の対応する動きベクトルを選択することができる。なお、説明は省略するが、時間方向の相関も同様である。
次に、図52乃至図58を参照して、動き相関に基づいて実行される動きベクトルの補償処理について説明する。すなわち、周辺画素の動きベクトルから、動きベクトルを選択し、着目画素の動きベクトルとして補う処理である。図52の例においては、白丸は、内挿フレーム上の画素を表しており、動きベクトルを求めようとしている着目画素Pの周辺に、周辺8画素が示されている。この着目画素Pの動きベクトルは、この周辺8画素の動きベクトルを参照して求められる。
図53の例においては、着目画素Pの周辺8画素の中で、左上画素、右上画素、および、右下画素(黒丸)に、前段の処理(例えば、上述したベクトル割付処理)などにより求められた動きベクトル(矢印)が示されている。すなわち、この場合の着目画素Pの補償候補ベクトルは、左上画素、右上画素、および、右下画素の動きベクトルとされる。なお、フレーム上において、動きベクトルは、フレーム上の左上の画素からラスタスキャン順に求められていくため、周辺8画素のうち、まだ動きベクトルの求められていない画素も存在する可能性もあるが、まだ動きベクトルは求められていないため、補償候補ベクトルにはできない。
ここで、図54の例に示されるように、周辺8画素の中には、前段の処理において求められた動きベクトルを有する画素(黒丸)の他に、本処理により求められた動きベクトルを有する画素(ハッチングされた丸)も存在する。すなわち、本処理においては、本処理自体の前段の結果も利用される。したがって、図54の例の場合の着目画素Pの補償候補ベクトルは、動きベクトルがすでに存在する画素(黒丸)の動きベクトルと、前段の本処理により求められた動きベクトルを有する画素(ハッチングされた丸)の動きベクトルにより構成されている。
また、図55の例に示されるように、動き量を0とした0ベクトル(静止ベクトル)S0も補償候補ベクトルとして利用することができる。なお、図54の例においては、本処理により求められた動きベクトルを有する画素と、動きベクトルがすでに存在する画素を別々に表したが、どちらも動きベクトルを有するという点で同じであるので、図55乃至図58においては、本処理により求められた動きベクトルを有する画素も、動きベクトルがすでに存在する画素(黒丸)に含まれることとする。したがって、図55の例の場合、着目画素Pの補償候補ベクトルは、動きベクトルがすでに存在する画素(黒丸)の動きベクトルおよび0ベクトルS0により構成されている。
以上のようにして構成される補償候補ベクトルの信頼度(確からしさ)を比較するために、動きベクトルの評価方法である評価値DFDは、以降の図56乃至図58に示されるようにして求められる。図56は、補償候補ベクトルとして、0ベクトルS0が用いられる例を示している。図57は、補償候補ベクトルとして、周辺8画素の左上画素の動きベクトルVK1が用いられる例を示している。図58は、補償候補ベクトルとして、周辺8画素の上中央画素の動きベクトルVK2が用いられる例を示している。
図56の例においては、図中左側に示される着目画素Pの補償候補ベクトルの中から、0ベクトルS0が選択され、選択された0ベクトルS0の評価値DFDを求める例が示されている。すなわち、0ベクトルS0に対する評価値DFDは、着目画素P(60P信号の内挿フレーム)を挟む、24P信号のフレームtとフレームt+1上において、内挿フレーム上の着目画素Pを基準にして、選択された0ベクトルS0が対応付けられる交点を求め、この交点を中心として所定の範囲(m×n)のDFD演算範囲D1−1およびD1−2を算出し、算出されたDFD演算範囲D1−1およびD1−2を用いて、上述した式(1)を演算することにより求められる。
図57の例においては、図中左側に示される着目画素Pの補償候補ベクトルの中から、周辺8画素の左上画素の動きベクトルVK1が選択され、選択された動きベクトルVK1の評価値DFDを求める例が示されている。すなわち、周辺8画素の左上画素の動きベクトルVK1に対する評価値DFDは、着目画素P(内挿フレーム)を挟むフレームtとフレームt+1上において、内挿フレーム上の着目画素Pを基準にして、選択された動きベクトルVK1が対応付けられる交点を求め、この交点を中心として所定の範囲(m×n)のDFD演算範囲D2−1およびD2−2を算出し、算出されたDFD演算範囲D2−1およびD2−2を用いて、上述した式(1)を演算することにより求められる。
図58の例においては、図中左側に示される着目画素Pの補償候補ベクトルの中から、補償候補ベクトルとして、周辺8画素の上中央画素の動きベクトルVK2が選択され、選択された動きベクトルVK2の評価値DFDを求める例が示されている。すなわち、周辺8画素の上中央画素の動きベクトルVK2に対する評価値DFDは、着目画素P(内挿フレーム)を挟むフレームtとフレームt+1上において、内挿フレーム上の着目画素Pを基準にして、選択された動きベクトルVK2が対応付けられる交点を求め、この交点を中心として所定の範囲(m×n)のDFD演算範囲D3−1およびD3−2を算出し、算出されたDFD演算範囲D3−1およびD3−2を用いて、上述した式(1)を演算することにより求められる。
なお、図中左側に示される他の補償候補ベクトルについても、基本的に同様の処理であるため、その説明は省略するが、以上のようにして、着目画素Pの周辺画素の補償候補ベクトルすべての評価値DFDが求められ、求められたそれらの評価値DFDが比較され、その中で、最も評価値DFDが最小となる補償候補ベクトルが、図59に示されるように、着目画素Pに割り付けられる最も信頼度がある、確からしい動きベクトルとして選択される。
図59の例の場合、着目画素Pの周辺画素の補償候補ベクトルの中から、周辺8画素の左上画素の動きベクトルVK1の評価値DFDが最も小さいとして判断され、動きベクトルVK1が、着目画素Pの動きベクトルとして選択され、割り付けられている。
以上のように、ベクトル割付部54において割り付けることができなかった画素の動きベクトルを、動き相関を利用して、周辺画素の動きベクトルから補償するようにしたので、動きベクトルが割り付けられず、例えば、0ベクトルが割り付けられていたような場合よりも、動きの乱れを抑制することができる。また、このようにして補償された画素の動きベクトルも、他の画素の補償候補ベクトルとして再度利用することができる。すなわち、空間方向の近傍の動きベクトルだけでなく、時間方向の近傍の動きベクトルも、補償候補ベクトルに用いることができるので、オブジェクト内でほぼ同じ動きをする画素には、ほぼ同一の動きベクトルが選択され、誤りの少ない安定した動きベクトルを得ることができる。これにより、ベクトル割付の精度が向上する。
次に、図60のフローチャートを参照して、割付補償処理の詳細を説明する。前段のベクトル割付部54により、割付ベクトルメモリ55上の内挿フレームの画素には動きベクトルが割り付けられている。また、ベクトル割付部54により動きベクトルが割り付けられた画素の割付フラグメモリ56の割付フラグには、1(True)が書き込まれており、動きベクトルが割り付けられなかった画素の割付フラグメモリ56の割付フラグには、0(False)が書き込まれている。
割付ベクトル判定部801は、ステップS801において、割付フラグメモリ56の内挿フレームの画素を、着目画素として選択し、ステップS802に進む。このとき、割付ベクトル判定部801は、フレームの左上の画素からラスタスキャン順に画素を選択する。
割付ベクトル判定部801は、ステップS802において、割付フラグメモリ56内の着目画素の割付フラグが、0(False)であるか否かを判断し、割付フラグメモリ56内の着目画素の割付フラグが、0(False)であると判断した場合、動きベクトルが割り付けられていないと判定し、ステップS803に進み、補償処理部811を制御し、ベクトル補償処理を実行させ、ステップS804に進む。このベクトル補償処理の詳細は、図61を参照して後述するが、このベクトル補償処理により、周辺画素に割り付けられた動きベクトルの中から、評価値DFDの最小の動きベクトルが補償候補ベクトルとしてメモリ821に記憶される。
補償処理部811は、ステップS804において、メモリ821の補償候補ベクトルを、着目画素の動きベクトルとして、割付ベクトルメモリ55に割り付け、ステップS805に進み、割付フラグメモリ56の着目画素の割り付けフラグを、1(True)に書き換え、ステップS806に進む。
一方、ステップS802において、割付ベクトル判定部801は、割付フラグメモリ56内の着目画素の割付フラグが、1(True)であると判断した場合、その着目画素にはすでに動きベクトルが割り付けられていると判定して、ステップS803乃至S805の処理をスキップし、ステップS806に進む。
割付ベクトル判定部801は、ステップS806において、割付フラグメモリ56の内挿フレームのすべての画素の処理を終了したか否かを判断し、すべての画素の処理を終了していないと判断した場合、ステップS801に戻り、割付フラグメモリ56の内挿フレームの次の画素を、着目画素として選択し、それ以降の処理を実行する。ステップS806において、割付フラグメモリ56の内挿フレームのすべての画素の処理を終了したと判断した場合、割付補償処理を終了する。
次に、図61のフローチャートを参照して、ベクトル補償処理の詳細を説明する。なお、図61は、図60のステップS803のベクトル補償処理の例を示している。
補償処理部811は、ステップS821において、評価値演算部812を制御し、0ベクトルを用いて評価値DFD0を算出させ、ステップS822に進む。具体的には、評価値演算部812は、ステップS821において、入力される時刻tの画像のフレームtと、時刻t+1の画像のフレームt+1を用いて、例えば、図56を参照して上述したように、着目画素について、0ベクトルでの評価値DFD0を演算し、演算した評価値DFD0を補償処理部811に出力する。
ステップS822において、補償処理部811は、評価値DFD0を最小評価値としてメモリ821に記憶し、ステップS823に進み、0ベクトルを補償候補ベクトルとして、メモリ821に記憶し、ステップS824に進む。補償処理部811は、ステップS824において、割付ベクトル判定部801により選択された着目画素の周辺8画素のうち、1つの周辺画素を選択し、ステップS825に進む。このとき、補償処理部811は、周辺8画素のうち、左上の画素からラスタスキャン順に周辺画素を選択する。
補償処理部811は、ステップS825において、割付フラグメモリ56を参照し、選択した周辺画素の動きベクトルが存在するか否かを判断する。割付フラグメモリ56の周辺画素の割付フラグが1(True)であれば、補償処理部811は、ステップS825において、選択した周辺画素に割り付けられている動きベクトルが存在すると判断し、ステップS826に進み、割付ベクトルメモリ55から、周辺画素の動きベクトルを取得し、ステップS827に進む。このとき、割付ベクトルメモリ55から評価値演算部812にも周辺画素の動きベクトルが出力される。
評価値演算部812は、割付ベクトルメモリ55から周辺画素の動きベクトルが入力されると、ステップS827において、入力される時刻tの画像のフレームtと、時刻t+1の画像のフレームt+1を用いて、着目画素について、割付ベクトルメモリ55からの動きベクトルの評価値DFDを演算し、演算した評価値DFDを、補償処理部811に出力し、ステップS828に進む。
補償処理部811は、評価値演算部812から評価値DFDが入力されると、ステップS828において、評価値DFDが、メモリ821に記憶されている着目画素の最小評価値よりも小さいか否かを判断し、評価値DFDが、メモリ821に記憶されている着目画素の最小評価値よりも小さいと判断した場合、ステップS829に進み、メモリ821の最小評価値を、最小評価値よりも小さいと判断された評価値DFDに書き換え、ステップS830に進み、メモリ821の補償候補ベクトルを、その最小評価値の動きベクトルに書き換え、ステップS831に進む。
一方、ステップS825において、割付フラグメモリ56の周辺画素の割付フラグが0(False)であると、補償処理部811は、選択した周辺画素に割り付けられている動きベクトルがないと判断し、ステップS826乃至S830の処理をスキップし、ステップS831に進む。また、ステップS828において、補償処理部811は、評価値DFDが、メモリ821に記憶されている着目画素の最小評価値以上であると判断した場合、ステップS829およびS830の処理をスキップし、ステップS831に進む。
補償処理部811は、ステップS831において、着目画素の周辺8画素すべてに対して処理が終了したか否かを判断し、着目画素の周辺8画素すべてに対して処理が終了していないと判断した場合、ステップS824に戻り、次の周辺画素を選択し、それ以降の処理を繰り返す。また、補償処理部811は、ステップS831において、着目画素の周辺8画素すべてに対して処理が終了したと判断した場合、ベクトル補償処理を終了し、図60のステップS804に戻る。
以上のように、ベクトル割付処理において、割り付けることができなかった画素に関しても、動き相関があることを利用して、その画素の周辺の動きベクトルの中から、評価値DFDに基づく、最も信頼度がある、確からしい動きベクトルを得ることができる。これにより、ベクトルが割り付けられず、0ベクトルなどを割り付けておく場合よりも、ベクトル割付の精度が向上し、後段の画像補間処理において生成される画像の不連続性を抑制することができる。
また、上述した割付補償処理により動きベクトルが割り付けられた画素の割付フラグを1(True)に書き換えるようにし、割付補償処理により割り付けられた動きベクトルも、次の画素の補償候補ベクトルとして用いるようにしたので、オブジェクト内でほぼ同じ動きをする画素には、ほぼ同一の動きベクトルが選択されるようになり、誤りの少ない安定した動きベクトルを得ることができる。その結果、後段において生成される画像のブロックノイズや粉状ノイズなどを抑制し、品質を向上させることができる。
また、動きベクトルを求める着目画素について、0ベクトルの評価値DFDを予め算出し、最小評価値としてメモリに保持しておくことにより、すべての補償候補ベクトル評価値DFDを一度に算出し、その中から最小の評価値DFDを選択する場合よりも、時間とリソースを効率的に使用することができる。
なお、上記説明においては、ベクトル割付部54において割り付けられなかった画素に対してベクトル補償処理を行っているが、ベクトル検出部52において検出されなかった(0ベクトルが検出された)画素など、何らかの処理において動きベクトルが求められなかった画素に対してベクトル補償処理を行うようにしてもよい。また、さらに、検出された動きベクトル、または、割り付けられた動きベクトルが確からしくない(信頼度が低い)とされる画素に対してベクトル補償処理を行うようにしてもよい。
本実施の形態においては、動きベクトルを選択する際の評価値として、差分絶対値和である評価値DFDを用いて説明したが、評価値DFDに限定されず、動きベクトルの信頼度を評価するものであれば、他のものを用いるようにしてもよい。
また、本実施の形態においては、各処理を行うブロックを、例えば、8画素×8画素や9画素×9画素などにより構成するようにして説明したが、これらは、一例であり、各処理を行うブロックを構成する画素は、上記画素数に限定されない。
さらに、本実施の形態においては、24P信号から60P信号への信号変換を例に、説明を行ったが、本発明は、例えば、動画像のフレーム周波数変換として、インターレース信号や、他のフレームレート変換にも適用することができる。
本発明によれば、画素値の勾配を算出するようにしたので、勾配法によって動きベクトルを検出することができる。また、本発明によれば、周辺画素が、勾配法の演算に用いるのに有効であるか否かの判定結果を基に、勾配法演算に用いる周辺画素を選択するようにしたので、より正確に動きベクトルを検出することができる。
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム格納媒体からインストールされる。
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム格納媒体は、図1に示されるように、磁気ディスク31(フレキシブルディスクを含む)、光ディスク32(CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク33(MD(Mini-Disc)(商標)を含む)、もしくは半導体メモリ34などよりなるリムーバブル記録媒体(パッケージメディア)、または、プログラムが一時的もしくは永続的に格納されるROM12などにより構成される。
なお、本明細書において、フローチャートに示されるステップは、記載された順序に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
本発明の信号処理装置の構成例を示すブロック図である。 信号処理装置の構成を示すブロック図である。 本発明の処理の原理を説明する図である。 本発明の処理を具体的に説明する図である。 信号処理装置において用いられる動きベクトルの評価値を説明する図である。 信号処理装置のフレーム周波数変換処理を説明するフローチャートである。 画像補間部の構成を示すブロック図である。 画像補間処理を説明するフローチャートである。 ベクトル検出部の構成を示すブロック図である。 ベクトル検出部で用いられる勾配法を説明する図である。 初期ベクトルを用いた反復勾配法を説明する図である。 動きベクトル検出処理を説明するフローチャートである。 シフト初期ベクトル割付部の構成を示すブロック図である。 シフト初期ベクトルの概念を説明する図である。 シフト初期ベクトルを具体的に説明する図である。 シフト初期ベクトルを具体的に説明する図である。 シフト初期ベクトルの決定方法を説明する図である。 シフト初期ベクトルの割り付けの例を説明する図である。 動きベクトルが競合する場合のシフト初期ベクトルの例を説明する図である。 シフト初期ベクトル割付処理を説明するフローチャートである。 初期ベクトル選択部の構成を示すブロック図である。 初期ベクトルの周辺領域を示す図である。 初期ベクトルの候補ブロックを示す図である。 初期ベクトル選択処理を説明するフローチャートである。 反復勾配法演算部の構成を示すブロック図である。 有効画素判定部の構成を示すブロック図である。 勾配法演算部の構成を示すブロック図である。 反復勾配法演算処理を説明するフローチャートである。 輝度が一定であるという条件を満たす画その動きベクトルの成分vxおよび成分vxの組に対応する点からなる直線を説明する図である。 輝度が一定であるという条件を満たす着目画素および周辺画素の動きベクトルの成分vxおよび成分vxの組に対応する点からなる直線を説明する図である。 着目画素と異なる動きをする周辺画素を含む場合における、輝度が一定であるという条件を満たす画その動きベクトルの成分vxおよび成分vxの組に対応する点からなる直線を説明する図である。 動きベクトルの成分vxおよび成分vyの組に対応する点からなる直線を用いた有効画素の選択を説明する図である。 vx方向およびvy方向の切片が存在する場合における有効画素の選択を説明する図である。 vy方向の切片が存在しない場合における有効画素の選択を説明する図である。 vx方向の切片が存在しない場合における有効画素の選択を説明する図である。 vx方向およびvy方向の切片が存在しない場合における有効画素の選択を説明する図である。 有効画素判定処理を説明するフローチャートである。 勾配法演算処理を説明するフローチャートである。 ベクトル割付部の構成を示すブロック図である。 本発明の4点補間処理の概念を説明する図である。 ベクトル割付処理の概要を説明する図である。 動きベクトルと内挿フレームの交点の近傍画素の例を説明する図である。 割付候補の動きベクトルの評価方法を説明する図である。 ベクトル割付における4点補間の例を説明する図である。 ベクトル割付処理を説明するフローチャートである。 画素位置演算処理を説明するフローチャートである。 割付ベクトル評価処理を説明するフローチャートである。 割付補償部の構成を示すブロック図である。 ベクトル補償部の構成を示すブロック図である。 割付補償処理の原理を説明する図である。 動き相関の原理を説明する図である。 着目画素の周囲画素の構成例を説明する図である。 着目画素の動きベクトルの補償候補ベクトルの例を説明する図である。 着目画素の動きベクトルの補償候補ベクトルの例を説明する図である。 着目画素の動きベクトルの補償候補ベクトルの例を説明する図である。 補償候補ベクトルを評価する例を説明する図である。 補償候補ベクトルを評価する例を説明する図である。 補償候補ベクトルを評価する例を説明する図である。 補償候補ベクトルを着目画素の動きベクトルとして選択する例を説明する図である。 割付補償処理を説明するフローチャートである。 ベクトル補償処理を説明するフローチャートである。
符号の説明
1 信号処理装置,11 CPU,12 ROM,13 RAM,31 磁気ディスク,32 光ディスク,33 光磁気ディスク,34 半導体メモリ,51 フレームメモリ,52 ベクトル検出部,53 検出ベクトルメモリ,54 ベクトル割付部,55 割付ベクトルメモリ,56 割付フラグメモリ,57 割付補償部,58 画像補間部,101 初期ベクトル選択部,103 反復勾配法演算部,104 ベクトル評価部,105 シフト初期ベクトル割付部,106 評価値メモリ,107 シフト初期ベクトルメモリ,201 割付対象位置演算部,202 評価値比較部,203 シフト初期ベクトル置換部,204 評価値置換部,251 候補ベクトル位置演算部,252 検出ベクトル取得部,253 シフト初期ベクトル取得部,254 オフセット位置演算部,255 評価値演算部,256 評価値比較部,257 最適候補格納用レジスタ,601 セレクタ,602 有効画素判定部,603 勾配法演算部,604 遅延部,621 画素位置演算部,622 勾配演算部,623 切片演算部,624 切片位置判定部,625 有効画素数カウンタ,626 有効画素フラグメモリ,627 勾配法継続判定部,651 画素値勾配演算部,652 勾配積算部,653 ベクトル演算部,701 画素情報演算部,702 評価値演算部,703 着目画素差分演算部,704 ベクトル評価部,705 ベクトル選択部,711 画素差分判断部,712 評価値判断部,801 割付ベクトル判定部,802 ベクトル割付部,811 補償処理部,812 評価値演算部,821 メモリ

Claims (8)

  1. 動きベクトルを検出する画像処理装置において、
    所定の画素の画素値の第1の方向の勾配、前記画素の画素値の第2の方向の勾配、および前記画素の画素値の時間方向の勾配を演算する勾配演算手段と、
    前記第1の方向の勾配、前記第2の方向の勾配、および前記時間方向の勾配を基に、前記第1の方向の動きを第1の軸とし、前記第2の方向の動きを第2の軸とする座標系における、前記画素の輝度が一定であるという条件を満たす前記画素の前記第1の方向の動きの成分および前記第2の方向の動きの成分の組に対応する点からなる直線の切片を算出する切片演算手段と、
    着目画素に対する前記直線の傾きが0または無限大でない場合、前記着目画素に対する前記直線の前記第1の方向の前記切片を第1の基準位置として、前記第1の基準位置から判定の対象となる前記画素に対する前記直線の前記第1の方向の切片までの距離が、所定の閾値より小さく、かつ、前記着目画素に対する前記直線の前記第2の方向の前記切片を第2の基準位置として、前記第2の基準位置から判定の対象となる前記画素に対する前記直線の前記第2の方向の切片までの距離が、所定の閾値より小さいか否かを基に、前記着目画素の前記動きベクトルを勾配法により検出する演算処理に、前記画素を使用するか否かを判定する判定手段と
    を備えることを特徴とする画像処理装置。
  2. 前記判定手段は、前記着目画素に対する前記直線の傾きが0である場合、前記着目画素に対する前記直線の前記第2の方向の前記切片を前記第2の基準位置として、前記第2の基準位置から判定の対象となる前記画素に対する前記直線の前記第2の方向の切片までの距離が、所定の閾値より小さく、かつ、判定の対象となる前記画素に対する前記直線の前記第1の方向の勾配が0でないか否かを基に、前記演算処理に、前記画素を使用するか否かを判定する
    ことを特徴とする請求項1に記載の画像処理装置。
  3. 前記判定手段は、前記着目画素に対する前記直線の傾きが無限大である場合、前記着目画素に対する前記直線の前記第1の方向の前記切片を前記第1の基準位置として、前記第1の基準位置から判定の対象となる前記画素に対する前記直線の前記第1の方向の切片までの距離が、所定の閾値より小さく、かつ、判定の対象となる前記画素に対する前記直線の前記第2の方向の勾配が0でないか否かを基に、前記演算処理に、前記画素を使用するか否かを判定する
    ことを特徴とする請求項1に記載の画像処理装置。
  4. 前記着目画素近傍の予め定められた領域内の画素のうち、前記判定手段により前記演算処理に使用されると判定された画素を用いて前記演算処理を行ない、前記着目画素の前記動きベクトルを検出する検出手段をさらに備える
    ことを特徴とする請求項1に記載の画像処理装置。
  5. 前記動きベクトルの信頼度の高さを評価する評価手段をさらに備え、
    前記切片演算手段は、前回検出された前記動きベクトルの評価の結果を表す評価値が、0ベクトルである前記動きベクトルの前記評価値よりも大きい場合、前記画素の位置に前回検出された前記動きベクトルを加算した位置からの前記画素の前記第1の方向の動きの成分および前記第2の方向の動きの成分の組に対応する点からなる直線の切片を算出する
    ことを特徴とする請求項4に記載の画像処理装置。
  6. 動きベクトルを検出する画像処理方法において、
    所定の画素の画素値の第1の方向の勾配、前記画素の画素値の第2の方向の勾配、および前記画素の画素値の時間方向の勾配を演算する勾配演算ステップと、
    前記第1の方向の勾配、前記第2の方向の勾配、および前記時間方向の勾配を基に、前記第1の方向の動きを第1の軸とし、前記第2の方向の動きを第2の軸とする座標系における、前記画素の輝度が一定であるという条件を満たす前記画素の前記第1の方向の動きの成分および前記第2の方向の動きの成分の組に対応する点からなる直線の切片を算出する切片演算ステップと、
    着目画素に対する前記直線の傾きが0または無限大でない場合、前記着目画素に対する前記直線の前記第1の方向の前記切片を第1の基準位置として、前記第1の基準位置から判定の対象となる前記画素に対する前記直線の前記第1の方向の切片までの距離が、所定の閾値より小さく、かつ、前記着目画素に対する前記直線の前記第2の方向の前記切片を第2の基準位置として、前記第2の基準位置から判定の対象となる前記画素に対する前記直線の前記第2の方向の切片までの距離が、所定の閾値より小さいか否かを基に、前記着目画素の前記動きベクトルを勾配法により検出する演算処理に、前記画素を使用するか否かを判定する判定ステップと
    を含むことを特徴とする画像処理方法。
  7. 動きベクトルを検出する画像処理用のプログラムにおいて、
    所定の画素の画素値の第1の方向の勾配、前記画素の画素値の第2の方向の勾配、および前記画素の画素値の時間方向の勾配を演算する勾配演算ステップと、
    前記第1の方向の勾配、前記第2の方向の勾配、および前記時間方向の勾配を基に、前記第1の方向の動きを第1の軸とし、前記第2の方向の動きを第2の軸とする座標系における、前記画素の輝度が一定であるという条件を満たす前記画素の前記第1の方向の動きの成分および前記第2の方向の動きの成分の組に対応する点からなる直線の切片を算出する切片演算ステップと、
    着目画素に対する前記直線の傾きが0または無限大でない場合、前記着目画素に対する前記直線の前記第1の方向の前記切片を第1の基準位置として、前記第1の基準位置から判定の対象となる前記画素に対する前記直線の前記第1の方向の切片までの距離が、所定の閾値より小さく、かつ、前記着目画素に対する前記直線の前記第2の方向の前記切片を第2の基準位置として、前記第2の基準位置から判定の対象となる前記画素に対する前記直線の前記第2の方向の切片までの距離が、所定の閾値より小さいか否かを基に、前記着目画素の前記動きベクトルを勾配法により検出する演算処理に、前記画素を使用するか否かを判定する判定ステップと
    を含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
  8. 動きベクトルを検出する画像処理を、コンピュータに行わせるプログラムにおいて、
    所定の画素の画素値の第1の方向の勾配、前記画素の画素値の第2の方向の勾配、および前記画素の画素値の時間方向の勾配を演算する勾配演算ステップと、
    前記第1の方向の勾配、前記第2の方向の勾配、および前記時間方向の勾配を基に、前記第1の方向の動きを第1の軸とし、前記第2の方向の動きを第2の軸とする座標系における、前記画素の輝度が一定であるという条件を満たす前記画素の前記第1の方向の動きの成分および前記第2の方向の動きの成分の組に対応する点からなる直線の切片を算出する切片演算ステップと、
    着目画素に対する前記直線の傾きが0または無限大でない場合、前記着目画素に対する前記直線の前記第1の方向の前記切片を第1の基準位置として、前記第1の基準位置から判定の対象となる前記画素に対する前記直線の前記第1の方向の切片までの距離が、所定の閾値より小さく、かつ、前記着目画素に対する前記直線の前記第2の方向の前記切片を第2の基準位置として、前記第2の基準位置から判定の対象となる前記画素に対する前記直線の前記第2の方向の切片までの距離が、所定の閾値より小さいか否かを基に、前記着目画素の前記動きベクトルを勾配法により検出する演算処理に、前記画素を使用するか否かを判定する判定ステップと
    を含むことを特徴とするプログラム。
JP2004116012A 2004-04-09 2004-04-09 画像処理装置および方法、記録媒体、並びにプログラム Expired - Fee Related JP4512985B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004116012A JP4512985B2 (ja) 2004-04-09 2004-04-09 画像処理装置および方法、記録媒体、並びにプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004116012A JP4512985B2 (ja) 2004-04-09 2004-04-09 画像処理装置および方法、記録媒体、並びにプログラム

Publications (2)

Publication Number Publication Date
JP2005301622A JP2005301622A (ja) 2005-10-27
JP4512985B2 true JP4512985B2 (ja) 2010-07-28

Family

ID=35333086

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004116012A Expired - Fee Related JP4512985B2 (ja) 2004-04-09 2004-04-09 画像処理装置および方法、記録媒体、並びにプログラム

Country Status (1)

Country Link
JP (1) JP4512985B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4181598B2 (ja) 2006-12-22 2008-11-19 シャープ株式会社 画像表示装置及び方法、画像処理装置及び方法

Also Published As

Publication number Publication date
JP2005301622A (ja) 2005-10-27

Similar Documents

Publication Publication Date Title
JP4687994B2 (ja) 画像処理装置および方法、記録媒体、並びにプログラム
JP4692846B2 (ja) 画像処理装置および方法、記録媒体、並びにプログラム
JP4692845B2 (ja) 画像処理装置および方法、記録媒体、並びにプログラム
JP4752407B2 (ja) 画像処理装置および方法、プログラム、並びに記録媒体
JP2007074592A (ja) 画像処理装置および方法、プログラム、並びに記録媒体
JP4512985B2 (ja) 画像処理装置および方法、記録媒体、並びにプログラム
JP4432714B2 (ja) 画像処理装置および方法、記録媒体、並びにプログラム
JP4512983B2 (ja) 画像処理装置および方法、記録媒体、並びにプログラム
JP4655214B2 (ja) 画像処理装置および方法、プログラム並びに記録媒体
JP4512982B2 (ja) 画像処理装置および方法、記録媒体、並びにプログラム
JP4512984B2 (ja) 画像処理装置および方法、記録媒体、並びにプログラム
JP4650682B2 (ja) 画像処理装置および方法、プログラム、並びに記録媒体
JP2007110461A (ja) 画像処理装置および方法、プログラム、並びに記録媒体
JP2009118456A (ja) 画像補間装置および方法
JP4655216B2 (ja) 画像処理装置および方法、並びにプログラム
JP2007074596A (ja) 画像処理装置および方法、記録媒体、並びにプログラム
JP4835075B2 (ja) 画像処理装置および方法、プログラム、並びに記録媒体
JP4655215B2 (ja) 画像処理装置および方法、並びにプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070305

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100128

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100323

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100415

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100428

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130521

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees