以下、本発明の動きベクトル生成装置及び方法の一実施形態について、添付図面を参照して説明する。図1に示す一実施形態は、動きベクトル生成装置を含むフレーム周波数変換装置を示している。図1において、入力された映像信号Sinの各画素データは、フレームメモリ1と、動きベクトル検出部2と、補間フレーム生成部4と、フレーム周波数変換部5とに順次入力される。映像信号Sinは、例えば60Hzのフレーム周波数を有する。
フレームメモリ1は、入力された画素データを1フレーム期間遅延させて出力する。映像信号Sinの現在のフレームを現在フレームf0、フレームメモリ1より出力された1フレーム過去のフレームを過去フレームf1とする。補間フレーム生成部4が生成する補間フレームを補間フレームf0.5とする。フレームメモリ1より出力された過去フレームf1の各画素データは、動きベクトル検出部2と補間フレーム生成部4とに順次入力される。
動きベクトル検出部2は、例えばマッチング法を用い、現在フレームf0と過去フレームf1の画素データを用いて、現在フレームf0と過去フレームf1との間に内挿する補間フレームの各補間画素データを生成するための動きベクトルV1を検出する。動きベクトルV1を画素単位で検出してもよいし、複数の画素よりなるブロック単位で検出してもよい。ブロックとは1または複数画素であるとする。特に図示しないが、動きベクトル検出部2は複数のラインメモリと画素遅延器、画素データの差分を求める減算器等を含んで構成される。
図2を用いて、動きベクトル検出部2による動きベクトルV1の検出動作についてさらに説明する。図2は、過去フレームf1内に位置している物体OBが、一点鎖線の矢印線で示すように、現在フレームf0内の図示の位置に移動した状態を示している。理想的には、補間フレームf0.5内に、破線で示すような補間画像による物体OBiが生成される。本実施形態では、動きベクトル検出部2は、過去フレームf1を探索基準として動きベクトルV1を検出する。現在フレームf0を探索基準として動きベクトルV1を検出してもよいし、過去フレームf1及び現在フレームf0の双方を探索基準として動きベクトルV1を検出してもよい。
図2に示すように、過去フレームf1の物体OBの位置を検出位置として検出された動きベクトルV1は、破線の矢印線で示すように、補間フレームf0.5における物体OBの検出位置に対応する位置へと適用されることになる。従って、物体OBの検出位置にて検出された動きベクトルV1が補間フレームf0.5に対して適用される位置と、補間フレームf0.5における補間画像による物体OBiの位置とがずれることになる。
図1に戻り、動きベクトル検出部2によって検出された動きベクトルV1は、動きベクトル補正部3へと入力される。動きベクトル補正部3は、後述のようにして動きベクトルV1を補正して動きベクトルV2を出力する。動きベクトル検出部2及び動きベクトル補正部3は、本実施形態の動きベクトル生成装置10を構成している。
補間フレーム生成部4は、現在フレームf0の画素データと、過去フレームf1の画素データと、動きベクトルV2とを用いてそれぞれの補間画素データを生成することによって、補間フレームf0.5を生成する。フレーム周波数変換部5は、補間フレームf0.5と現在フレームf0とをこの順で120Hzのフレーム周波数で交互に出力する。これによって、フレーム周波数変換部5からは120Hzのフレーム周波数を有する映像信号Soutが出力される。
動きベクトル生成装置10において、動きベクトルV1が具体的にどのように生成され、動きベクトルV1が具体的にどのようにして動きベクトルV2に補正されるかについて、物体OBが図3のように動く場合を例にして説明する。
前述のように、動きベクトル検出部2は、映像信号における現在フレームf0と過去フレームf1とのうちの一方のフレームを動きベクトルを検出する探索基準のフレームとする。動きベクトル検出部2は、現在フレームf0及び過去フレームf1のそれぞれを1または複数画素よりなるブロックに分割して、探索基準のフレーム(ここでは過去フレームf1)におけるそれぞれのブロックを、動きベクトルを検出する際の基準ブロックとする。動きベクトル検出部2は、現在フレームf0と過去フレームf1とのうちの他方のフレーム(ここでは現在フレームf0)における複数のブロックよりなる所定の領域を探索範囲とする。
動きベクトル検出部2は、基準ブロックと探索範囲内のそれぞれのブロックとの相関に基づいて、基準ブロックそれぞれで動きベクトルを検出する。
図3では、水平方向7ブロック、垂直方向7ブロックの合計49ブロックの範囲を動きベクトルV1の探索範囲としている。探索範囲とは、探索基準のフレーム内の基準ブロックから見たときの、他方のフレーム内の基準ブロックとの相関を検出する複数のブロックよりなる所定の領域のことである。一般的に、基準ブロックは、探索範囲の中央に位置するブロックである。
本実施形態では、図3に示すように、過去フレームf1と補間フレームf0.5と現在フレームf0とで、互いに対向する探索範囲と同じ領域を考えることとする。現在フレームf0における任意の49ブロックの範囲を探索範囲とすると、探索範囲に対向する探索基準のフレームである過去フレームf1における探索範囲と同じ範囲の領域を探索範囲領域(第1の探索範囲領域)と称することとする。
図3において、過去フレームf1、補間フレームf0.5、現在フレームf0それぞれのブロックの位置を、水平方向のブロックの位置を示すm1〜m7と垂直方向の位置を示すn1〜n7とで表すこととする。なお、動きベクトルV1の探索範囲は、適宜に設定すればよい。
図3は、過去フレームf1のブロック(m2,n2),(m2,n3),(m2,n4),(m3,n2),(m3,n3),(m3,n4),(m4,n2),(m4,n3),(m4,n4)にまたがっている物体OBが、一点鎖線の矢印線で示すように、現在フレームf0のブロック(m4,n4),(m4,n5),(m4,n6),(m5,n4),(m5,n5),(m5,n6),(m6,n4),(m6,n5),(m6,n6)へと移動した状態を示している。
動きベクトル検出部2は、過去フレームf1のそれぞれのブロックを基準ブロックとして、それぞれのブロックで動きベクトルV1を検出する。具体的には、動きベクトル検出部2は、まず、基準ブロックと、基準ブロックと同じ水平方向及び垂直方向の位置である現在フレームf0内のブロックを中心とした探索範囲内それぞれのブロックとの差分をとる。
図3において、物体OBの背景は完全な平坦な画像ではなく、過去フレームf1と現在フレームf0との位置が異なるブロック、即ち、対向しないブロックどうしの背景の差分値が5であるとする。物体OBと背景とは絵柄や色が異なり、物体OBと背景との差分値が10であるとする。物体OBにおける異なる部分のブロックの差分値が5であるとする。
図3に示すように静止画の背景内に移動する物体OBが存在する場合、動きベクトル検出部2においては、過去フレームf1におけるブロックが現在フレームf0へと、水平方向の右方向に2ブロック、垂直方向の下方向に2ブロック移動する方向の差分値と、過去フレームf1と現在フレームf0との対向するブロックの差分値が、他の方向の差分値と比較して小さく検出されることになる。
図4において、(a)は、図3における過去フレームf1の探索範囲領域内それぞれの基準ブロックと、基準ブロックから右方向に2ブロック、下方向に2ブロックずれた現在フレームf0のブロックとの差分値を示している。図4において、(b)は、図3における過去フレームf1の探索範囲領域内それぞれの基準ブロックと、基準ブロックと対向する現在フレームf0のブロックとの差分値を示している。図4の(a)の外側のそれぞれのブロックの差分値は全て5であり、図4の(b)の外側のそれぞれのブロックの差分値は全て0である。
動きベクトル検出部2は、過去フレームf1内の基準ブロックと、現在フレームf0における探索範囲内それぞれのブロックとの差分をとって、それぞれの方向の差分値を求める。上記のように、図4の(a),(b)以外の方向の差分値は大きな値となり、図3の場合には図4の(a),(b)以外の方向を動きベクトルV1として検出することはないため、図4の(a),(b)以外の方向の差分値の図示を省略する。
図2で説明したように、動きベクトル検出部2が過去フレームf1を探索基準として検出した動きベクトルV1を補間フレームf0.5に適用すると、過去フレームf1において動きベクトルV1を検出した位置と補間フレームf0.5における補間画像との位置がずれる。そこで、動きベクトル検出部2は、動きベクトルV1を検出した位置と補間画像との位置のずれを緩和するために、図4の(a),(b)に示すそれぞれの基準ブロックの差分値に対して、周辺ブロックの差分値を積算する。一例として、動きベクトル検出部2は、基準ブロックと、基準ブロックを取り囲む8ブロックとの合計9ブロックを積算することとする。
図5において、(a)は図4の(a)に示す差分値を、基準目ブロックを含む9ブロックで積算した差分値を示している。図5において、(b)は図4の(b)に示す差分値を、基準ブロックを含む9ブロックで積算した差分値を示している。図5の(a)と(b)とを比較して、小さい方が画像の相関が高く、動きベクトルV1の方向となる。但し、ここでは積算した差分値が40以上は信頼度が低いため、図5の(a),(b)いずれも不適とする。図5の(a),(b)において、積算した差分値が40未満で、(a)と(b)とを比較して小さい方に梨地模様を付している。
動きベクトル検出部2は、以上のようにして、それぞれの方向の差分値を求め、基準ブロックの差分値と周辺ブロックの差分値とを積算し、より小さい積算した差分値を示す方向を動きベクトルV1とする。図6は、以上のようにして図3における過去フレームf1の探索範囲領域内それぞれのブロックにおいて検出した動きベクトルV1を示している。図6では、過去フレームf1内の物体OBを実線で、物体OBの移動後の位置を理解しやすいよう、現在フレームf0内の物体OBを一点鎖線にて示している。
水平方向の右方向に2ブロック、垂直方向の下方向に2ブロック移動する方向は、過去フレームf1から補間フレームf0.5への移動方向を考えると、右方向に1ブロック、下方向に1ブロックの移動であり、右方向を水平方向の+方向、上方向を垂直方向の+方向とすれば、水平方向+1、垂直方向−1の動きベクトルである。この動きベクトルをV(+1,-1)と称することとする。図6に示すベクトルV(+1,-1)は、水平方向+1、垂直方向−1の動きベクトルV1を概念的に示している。
過去フレームf1の基準ブロックから現在フレームf0の対向するブロックへの移動は水平方向0、垂直方向0の動きベクトルである。この動きベクトルは静止ベクトルであり、“−”と示している。
動きベクトル検出部2は、図5の(a)に基づいて、図6に示すように、過去フレームf1のブロック(m2,n2),(m2,n3),(m2,n4),(m3,n2),(m3,n3),(m3,n4),(m3,n5),(m4,n2),(m4,n3),(m4,n4),(m4,n5),(m5,n3),(m5,n4)において、動きベクトルV1としてベクトルV(+1,-1)を検出する。差分値を積算したことにより、ベクトルV(+1,-1)が物体OBより外側のブロックにおいても検出されている。
動きベクトル検出部2は、図5の(b)に基づいて、図6に示すように、ベクトルV(+1,-1)を検出したブロック以外の多くのブロックで、静止ベクトルを検出する。動きベクトル検出部2は、過去フレームf1のブロック(m4,n6),(m5,n5),(m5,n6),(m6,n4),(m6,n5),(m6,n6)において、ベクトルV(+1,-1)及び静止ベクトル以外の何らかの相関微小ベクトルを検出する。相関微小ベクトルを“*”にて示している。相関微小ベクトルは、図5の(a),(b)において梨地模様を付していないブロックにおいて検出される。
相関微小ベクトルは全て同じベクトルとは限らないが、簡略化のため全て同じベクトルであるとする。図6よりも外側のブロックでは全て静止ベクトルが検出されているとする。
図6において、過去フレームf1のブロック(m4,n4)は、図3に示す補間フレームf0.5の中央に位置しているブロック(m4,n4)と対向しており、ハッチングを付している。図6からも、動きベクトル検出部2が過去フレームf1を探索基準として検出した動きベクトルV1を補間フレームf0.5に適用すると、補間フレームf0.5における補間画像による物体OBiの位置とがずれることが分かる。
そこで、動きベクトル補正部3は、過去フレームf1を探索基準として検出した動きベクトルV1と補間画像との位置のずれを解消するための、次のようにして動きベクトルV1を補正して、動きベクトルV2として出力する。
図7に示すように、動きベクトル補正部3は、補間ブロック通過動きベクトル検出部31と、動きベクトル分布検出部32と、相関計算部33とを有する。動きベクトルV1は、補間ブロック通過動きベクトル検出部31及び動きベクトル分布検出部32に入力される。
図8〜図11を用いて、補間ブロック通過動きベクトル検出部31の動作について説明する。図8〜図10では、理解を容易にするために、1つのブロックに収まる物体OBが移動する場合を示している。図8の(a)では、過去フレームf1のブロック(m1,n1)内に位置している物体OBが、一点鎖線の矢印線で示すように、現在フレームf0のブロック(m7,n7)へと移動した状態を示している。
補間フレームf0.5内のハッチングを付したブロック(m4,n4)は補間フレーム生成部4によって生成しようとする補間ブロックBkiである。現在フレームf0の探索範囲及び過去フレームf1の探索範囲領域の中央に位置するブロックと同じ位置の補間ブロックBkiを注目ブロックとする。勿論、補間フレームf0.5の補間ブロックBkiは順次その位置を異ならせていくので、注目ブロックは順次異なった位置となる。図8の(a)は、補間フレームf0.5のブロック(m4,n4)が注目ブロックとなっている状態を示している。
物体OBが、過去フレームf1のブロック(m1,n1)から現在フレームf0のブロック(m7,n7)へと移動した場合には、補間フレームf0.5のブロック(m4,n4)内に破線で示すような補間画像による物体OBiを生成すればよい。
過去フレームf1のブロック(m1,n1)が動きベクトルV1の検出位置であるとき、ブロック(m1,n1)で検出される動きベクトルV1が補間フレームf0.5内の補間ブロックBki(注目ブロック)を通過する方向の動きベクトルであれば、物体OBiを正しく生成することができることになる。過去フレームf1のブロック(m1,n1)が補間フレームf0.5のブロック(m4,n4)へと移動する場合の動きベクトルV1は、水平方向+3、垂直方向−3の動きベクトルである。この動きベクトルV1をV(+3,-3)と称することとする。
補間フレームf0.5のブロック(m4,n4)を現在フレームf0及び過去フレームf1のブロックを用いて補間して補間ブロックBkiを生成する際に、図8の(b)に示すように、過去フレームf1のブロック(m1,n1)において動きベクトルV1としてベクトルV(+3,-3)が検出されれば、物体OBiは動きベクトルV1を用いて正しく生成される。なお、図8の(b)に示すベクトルV(+3,-3)は、水平方向+3、垂直方向−3の動きベクトルV1を概念的に示している。図8の(b)におけるハッチングを付したブロック(m4,n4)は、過去フレームf1における補間フレームf0.5の補間ブロックBkiと対向する位置のブロックである。
図9の(a)は、過去フレームf1のブロック(m2,n2)内に位置している物体OBが、一点鎖線の矢印線で示すように、現在フレームf0のブロック(m6,n6)へと移動した状態を示している。同様に、過去フレームf1のブロック(m2,n2)が動きベクトルV1の検出位置であるとき、ブロック(m2,n2)で検出される動きベクトルV1が補間フレームf0.5内の補間ブロックBki(注目ブロック)を通過する方向の動きベクトルであれば、物体OBiを正しく生成することができることになる。
過去フレームf1のブロック(m2,n2)が補間フレームf0.5のブロック(m4,n4)へと移動する場合の動きベクトルV1は、水平方向+2、垂直方向−2の動きベクトルであり、ベクトルV(+2,-2)と称することとする。
補間フレームf0.5のブロック(m4,n4)を現在フレームf0及び過去フレームf1のブロックを用いて補間して補間ブロックBkiを生成する際に、図9の(b)に示すように、過去フレームf1のブロック(m2,n2)において動きベクトルV1としてベクトルV(+2,-2)が検出されれば、物体OBiは動きベクトルV1を用いて正しく生成される。なお、図9の(b)に示すベクトルV(+2,-2)は、水平方向+2、垂直方向−2の動きベクトルV1を概念的に示している。
図10の(a)は、過去フレームf1のブロック(m3,n3)内に位置している物体OBが、一点鎖線の矢印線で示すように、現在フレームf0のブロック(m5,n5)へと移動した状態を示している。同様に、過去フレームf1のブロック(m3,n3)が動きベクトルV1の検出位置であるとき、ブロック(m3,n3)で検出される動きベクトルV1が補間フレームf0.5内の補間ブロックBki(注目ブロック)を通過する方向の動きベクトルであれば、物体OBiを正しく生成することができることになる。
過去フレームf1のブロック(m3,n3)が補間フレームf0.5のブロック(m5,n5)へと移動する場合の動きベクトルV1は、水平方向+1、垂直方向−1のベクトルV(+1,-1)である。
補間フレームf0.5のブロック(m3,n3)を現在フレームf0及び過去フレームf1のブロックを用いて補間して補間ブロックBkiを生成する際に、図10の(b)に示すように、過去フレームf1のブロック(m3,n3)において動きベクトルV1としてベクトルV(+1,-1)が検出されれば、物体OBiは動きベクトルV1を用いて正しく生成される。
図8〜図10で説明した考え方によって、過去フレームf1のそれぞれのブロックにおいて、補間フレームf0.5の注目ブロックを通過する動きベクトルV1は、概念的に図11に示すような49種類のベクトルV(+3,-3)〜V(-3,+3)となる。図11は、動きベクトルV1が検出される過去フレームf1と補間ブロックBkiを有する補間フレームf0.5とを便宜上重ね合わせた状態を示している。上記のように、注目ブロックは順次位置が変化していく。図11の49ブロックの中央に位置する補間ブロックBkiは任意の位置の注目ブロックである。
図11に示す49ブロックの中央に位置する過去フレームf1のブロックにおいて、補間フレームf0.5の補間ブロックBkiを通過する方向の“−”で示す静止ベクトルはベクトルV(0,0)である。
図7の補間ブロック通過動きベクトル検出部31は、動きベクトル検出部2によって図6に示すように検出された動きベクトルV1のうち、補間フレームf0.5の補間ブロックBkiを通過する方向の動きベクトルV1が存在するか否かを検出する。補間ブロック通過動きベクトル検出部31は、図11の概念図に示すように、過去フレームf1の探索範囲領域内それぞれの基準ブロックにおいて補間ブロックBkiを通過する方向の動きベクトルV1が49種類のベクトルV(+3,-3)〜V(-3,+3)のいずれであるかを示す情報を有している。
補間ブロック通過動きベクトル検出部31は、過去フレームf1のそれぞれの基準ブロックを中心とした探索範囲領域(第2の探索範囲領域)内に、補間ブロックBkiを通過する方向の動きベクトルV1が存在する場合には、所定の重み付けポイントを設定した重み付けデータD31を出力する。補間ブロックBkiを通過する方向の動きベクトルV1が存在する場合の重み付けポイントを例えば“20”とする。
図7の動きベクトル分布検出部32は、過去フレームf1のそれぞれの基準ブロックを中心とした探索範囲領域(第2の探索範囲領域)内の動きベクトルV1の分布を検出する。具体的には、動きベクトル分布検出部32は、探索範囲領域内のそれぞれの種類の動きベクトルV1の個数を集計して、それぞれの種類の動きベクトルV1に対して個数に応じた重み付けポイントを設定した重み付けデータD32を出力する。例えば、1ブロックを1ポイントとし、同じ種類の動きベクトルV1のブロックの個数に応じた重み付けポイントとする。
図12〜図15を用いて、補間ブロック通過動きベクトル検出部31における補間ブロックBkiを通過する方向の動きベクトルV1が存在するか否の検出、動きベクトル分布検出部32における動きベクトルV1の分布の検出それぞれの具体的な動作について説明する。
まず、図12は、過去フレームf1のブロック(m1,n1)が基準ブロックの場合を示している。ブロック(m1,n1)が基準ブロックの場合、ブロック(m1,n1)が中央に位置する探索範囲領域は図12に示す範囲となる。探索範囲領域が図12の場合、探索範囲領域の中央に位置するブロック(m1,n1)と同じ位置のブロックが補間フレームf0.5の注目ブロックとなる。図11と図12とを比較すれば分かるように、基準ブロックであるブロック(m1,n1)で検出された静止ベクトルV(0,0)は、注目ブロックを通過する方向の動きベクトルV1である。従って、補間ブロック通過動きベクトル検出部31は、静止ベクトルV(0,0)に対する重み付けデータD31の重み付けポイントを“20”とする。
動きベクトル分布検出部32は、探索範囲内のそれぞれの種類の動きベクトルV1の個数を集計して、重み付けデータD32としてブロックの個数に応じた重み付けポイントとする。図12の場合には、動きベクトルV1はベクトルV(+1,-1)と静止ベクトルV(0,0)のみであり、動きベクトル分布検出部32は、ベクトルV(+1,-1)に対する重み付けポイントを“9”、静止ベクトルV(0,0)に対する重み付けポイントを“40”とする。
図7の相関計算部33には、重み付けデータD31,D32が入力される。相関計算部33は、重み付けデータD31,D32それぞれが示す動きベクトルV1に対する重み付けポイントを、同じ種類の動きベクトルV1に対する重み付けポイントであれば合計して、それぞれの動きベクトルV1に対する重み付けポイントとする。図12の場合では、重み付けデータD31が示す静止ベクトルV(0,0)に対する重み付けポイントが“20”、重み付けデータD32が示す静止ベクトルV(0,0)に対する重み付けポイントが“40”であるので、静止ベクトルV(0,0)に対する重み付けポイントを“60”とする。ベクトルV(+1,-1)に対する重み付けポイントは“9”である。
図13は、過去フレームf1のブロック(m2,n2)が基準ブロックの場合を示している。ブロック(m2,n2)が基準ブロックの場合、ブロック(m2,n2)が中央に位置する探索範囲領域は図13に示す範囲となる。探索範囲領域が図13の場合、探索範囲領域の中央に位置するブロック(m2,n2)と同じ位置が補間フレームf0.5の注目ブロックとなる。図11と図13とを比較すれば分かるように、注目ブロックを通過する方向の動きベクトルV1は存在しない。従って、補間ブロック通過動きベクトル検出部31が出力する重み付けデータD31の重み付けポイントは“0”である。
図13の場合には、動きベクトルV1は、ベクトルV(+1,-1)と静止ベクトルV(0,0)と相関微小ベクトルである。動きベクトル分布検出部32は、重み付けデータD32として、ベクトルV(+1,-1)に対する重み付けポイントを“13”、静止ベクトルV(0,0)に対する重み付けポイントを“35”、相関微小ベクトルに対する重み付けポイントを“1”とする。従って、相関計算部33は、重み付けデータD32が示す重み付けポイントをそのまま用いる。
次に、図14は、過去フレームf1のブロック(m3,n3)が基準ブロックの場合を示している。ブロック(m3,n3)が基準ブロックの場合、ブロック(m3,n3)が中央に位置する探索範囲領域は図14に示す範囲となる。探索範囲領域が図14の場合、探索範囲領域の中央に位置するブロック(m3,n3)と同じ位置のブロックが補間フレームf0.5の注目ブロックとなる。図11と図14とを比較すれば分かるように、ブロック(m2,n2)で検出されたベクトルV(+1,-1)は、注目ブロックを通過する方向の動きベクトルV1である。従って、補間ブロック通過動きベクトル検出部31は、ベクトルV(+1,-1)に対する重み付けデータD31の重み付けポイントを“20”とする。
図14の場合も、動きベクトルV1は、ベクトルV(+1,-1)と静止ベクトルV(0,0)と相関微小ベクトルである。動きベクトル分布検出部32は、重み付けデータD32として、ベクトルV(+1,-1)に対する重み付けポイントを“13”、静止ベクトルV(0,0)に対する重み付けポイントを“30”、相関微小ベクトルに対する重み付けポイントを“6”とする。
図14の場合には、重み付けデータD31が示すベクトルV(+1,-1)に対する重み付けポイントが“20”、重み付けデータD32が示すベクトルV(+1,-1)に対する重み付けポイントが“13”であるので、相関計算部33は、ベクトルV(+1,-1)に対する重み付けポイントを“33”とする。静止ベクトルV(0,0)に対する重み付けポイントは“30”、相関微小ベクトルに対する重み付けポイントを“6”のままである。
さらに、図15は、過去フレームf1のブロック(m5,n5)が基準ブロックの場合を示している。ブロック(m5,n5)が基準ブロックの場合、ブロック(m5,n5)が中央に位置する探索範囲領域は図15に示す範囲となる。探索範囲領域が図15の場合、探索範囲領域の中央に位置するブロック(m5,n5)と同じ位置が補間フレームf0.5の注目ブロックとなる。図11と図15とを比較すれば分かるように、ブロック(m4,n4)で検出されたベクトルV(+1,-1)は、注目ブロックを通過する方向の動きベクトルV1である。従って、補間ブロック通過動きベクトル検出部31は、ベクトルV(+1,-1)に対する重み付けデータD31の重み付けポイントを“20”とする。
図15の場合も、動きベクトルV1は、ベクトルV(+1,-1)と静止ベクトルV(0,0)と相関微小ベクトルである。動きベクトル分布検出部32は、重み付けデータD32として、ベクトルV(+1,-1)に対する重み付けポイントを“13”、静止ベクトルV(0,0)に対する重み付けポイントを“30”、相関微小ベクトルに対する重み付けポイントを“6”とする。
図15の場合には、重み付けデータD31が示すベクトルV(+1,-1)に対する重み付けポイントが“20”、重み付けデータD32が示すベクトルV(+1,-1)に対する重み付けポイントが“13”であるので、相関計算部33は、ベクトルV(+1,-1)に対する重み付けポイントを“33”とする。静止ベクトルV(0,0)に対する重み付けポイントは“30”、相関微小ベクトルに対する重み付けポイントを“6”のままである。
以上のようにして、補間ブロック通過動きベクトル検出部31は、それぞれの基準ブロックが中央に位置する探索範囲領域内に、補間フレームf0.5の注目ブロックを通過する方向の動きベクトルV1が存在するか否かを検出して、存在する場合にはその動きベクトルV1に対して重み付けデータD31として重み付けポイント“20”を与える。動きベクトル分布検出部32は、それぞれの基準ブロックが中央に位置する探索範囲領域内において、全ての種類の動きベクトルV1の個数を集計し、重み付けデータD32として個数に応じた重み付けポイントを与える。相関計算部33は、重み付けデータD31,D32を合わせて、それぞれの動きベクトルV1の重み付けポイントを生成する。
図16の(a)は、図6のそれぞれのブロックにおいて得られるベクトルV(+1,-1)に対する重み付けポイントを示しており、図16の(b)は、図6のそれぞれのブロックにおいて得られる静止ベクトルV(0,0)に対する重み付けポイントを示している。相関微小ベクトルに対する重み付けポイントは非常に少ないため、省略する。
また、相関計算部33は、重み付けデータD31,D32として検出された動きベクトルV1の方向のみ、補間フレームf0.5のそれぞれの補間ブロックBki(注目ブロック)を中心とした差分値を求める。図12〜図15で説明したように、補間ブロック通過動きベクトル検出部31及び動きベクトル分布検出部32で検出の対象とする動きベクトルV1は、補間フレームf0.5の1つの注目ブロックに対して、注目ブロックと同じ位置の過去フレームf1のブロックを中心とする探索範囲領域で検出される動きベクトルV1である。
相関計算部33は、それぞれの補間ブロックBkiを中心として、それぞれの補間ブロックBkiに対する過去フレームf1の探索範囲領域で検出された動きベクトルV1の方向の、過去フレームf1のブロックと現在フレームf0のブロックとの差分値を求める。
図12の場合には、過去フレームf1のブロック(m1,n1)と同じ位置のブロックが補間フレームf0.5の注目ブロックである補間ブロックBkiとなっている。このとき、過去フレームf1の探索範囲領域で検出された動きベクトルV1は、ベクトルV(+1,-1)と静止ベクトルV(0,0)のみである。そこで、相関計算部33は、ブロック(m1,n1)と同じ位置の補間ブロックBkiを中心として、ベクトルV(+1,-1)が示す方向の過去フレームf1のブロックと現在フレームf0のブロックとの差分値と、静止ベクトルV(0,0)が示す方向の過去フレームf1のブロックと現在フレームf0のブロックとの差分値を求める。
図13の場合には、過去フレームf1のブロック(m2,n2)と同じ位置のブロックが補間フレームf0.5の補間ブロックBkiであり、過去フレームf1の探索範囲領域で検出された動きベクトルV1は、ベクトルV(+1,-1)と静止ベクトルV(0,0)のみである。そこで、相関計算部33は、ブロック(m2,n2)と同じ位置の補間ブロックBkiを中心として、ベクトルV(+1,-1)が示す方向の過去フレームf1のブロックと現在フレームf0のブロックとの差分値と、静止ベクトルV(0,0)が示す方向の過去フレームf1のブロックと現在フレームf0のブロックとの差分値を求める。
図14の場合には、過去フレームf1のブロック(m3,n3)と同じ位置のブロックが補間フレームf0.5の補間ブロックBkiであり、過去フレームf1の探索範囲領域で検出された動きベクトルV1は、ベクトルV(+1,-1)と静止ベクトルV(0,0)と相関微小ベクトルである。そこで、相関計算部33は、ブロック(m3,n3)と同じ位置の補間ブロックBkiを中心として、ベクトルV(+1,-1)が示す方向の過去フレームf1のブロックと現在フレームf0のブロックとの差分値と、静止ベクトルV(0,0)が示す方向の過去フレームf1のブロックと現在フレームf0のブロックとの差分値と、相関微小ベクトルが示す方向の過去フレームf1のブロックと現在フレームf0のブロックとの差分値とを求める。
図15の場合には、過去フレームf1のブロック(m5,n5)と同じ位置のブロックが補間フレームf0.5の補間ブロックBkiであり、過去フレームf1の探索範囲領域で検出された動きベクトルV1は、ベクトルV(+1,-1)と静止ベクトルV(0,0)と相関微小ベクトルである。そこで、相関計算部33は、ブロック(m5,n5)と同じ位置の補間ブロックBkiを中心として、ベクトルV(+1,-1)が示す方向の過去フレームf1のブロックと現在フレームf0のブロックとの差分値と、静止ベクトルV(0,0)が示す方向の過去フレームf1のブロックと現在フレームf0のブロックとの差分値と、相関微小ベクトルが示す方向の過去フレームf1のブロックと現在フレームf0のブロックとの差分値とを求める。
図17において、(a)は、以上のようにして、それぞれの補間ブロックBkiを中心として、ベクトルV(+1,-1)が示す方向の過去フレームf1のブロックと現在フレームf0のブロックとの差分値を示している。図17において、(b)は、それぞれの補間ブロックBkiを中心として、静止ベクトルV(0,0)が示す方向の過去フレームf1のブロックと現在フレームf0のブロックとの差分値を示している。相関微小ベクトルが示す方向の過去フレームf1のブロックと現在フレームf0のブロックとの差分値は省略する。
相関計算部33は、図16に示す重み付けポイントに基づいて図17に示す差分値に対して重み付けして、ベクトルV(+1,-1)が示す方向と静止ベクトルV(0,0)が示す方向の最終的な相関値を計算する。相関計算部33は、一例として、図17に示すそれぞれの方向の差分値を、図16に示すそれぞれの方向の重み付けポイントのうち、重み付けポイントが多い方の方向の差分値はそのままとし、重み付けポイントが少ない方の方向の差分値は差分値を+10とする。
図17では、ベクトルV(+1,-1)が示す方向と静止ベクトルV(0,0)が示す方向の差分値のみを示しているため、重み付けポイントの大小比較となる。図6において3種類以上の方向の動きベクトルV1が検出された場合には、重み付けポイントが多い方の方向の差分値をそのまま、重み付けポイントが2番目に多い方の方向の差分値を+10、重み付けポイントが3番目に多い方の方向の差分値を+20のようにすればよい。図6の場合には、図示を省略した相関微小ベクトルに対する重み付けポイントが3番目となる。相関微小ベクトルが複数の異なるベクトルの場合には、それぞれの相関微小ベクトルに対する重み付けポイントが3番目,4番目,5番目…となる。
図18は、相関計算部33が重み付けポイントに基づいて差分値に対して重み付けすることによって計算した最終的な相関値を示している。図18の(a)はベクトルV(+1,-1)が示す方向の相関値、図18の(b)は静止ベクトルV(0,0)が示す方向の相関値である。相関計算部33は、最も相関値が小さい方向を動きベクトルV2として出力する。
図19は、相関計算部33が出力する動きベクトルV2を示している。図18の(a)と(b)とを比較すれば分かるように、ブロック(m3,n3),(m3,n4),(m3,n5),(m4,n3),(m4,n4),(m4,n5),(m5,n3),(m5,n4),(m5,n5)のみベクトルV(+1,-1)が示す方向の相関値が小さく、他のブロックでは、静止ベクトルV(0,0)が示す方向の相関値の方が小さい。よって、相関計算部33が出力する動きベクトルV2は図19のようになる。このようにして、動きベクトル検出部2によって検出された図6に示す動きベクトルV1は、動きベクトル補正部3によって図19に示す動きベクトルV2へと補正される。
図18では図示を省略したが、図6に示す動きベクトルV1に含まれていた相関微小ベクトルが示す方向の相関値は、ベクトルV(+1,-1)が示す方向の相関値や静止ベクトルV(0,0)が示す方向の相関値よりも大きな値となる。従って、相関微小ベクトルは全てベクトルV(+1,-1)または静止ベクトルV(0,0)へと置換される。
以上のように、動きベクトル補正部3の補間ブロック通過動きベクトル検出部31は、他方のフレーム(現在フレームf0)における所定の探索範囲に対向する探索基準のフレーム(過去フレームf1)における所定の探索範囲と同じ範囲の領域を第1の探索範囲領域とする。補間ブロック通過動きベクトル検出部31は、第1の探索範囲領域内それぞれの基準ブロックを探索範囲と同じ範囲の領域の中央に位置するブロックとし、基準ブロックが中央に位置する探索範囲と同じ範囲の領域それぞれを第2の探索範囲領域とする。
そして、補間ブロック通過動きベクトル検出部31は、基準ブロックの位置に対応したそれぞれの第2の探索範囲領域内に、補間フレームf0.5の注目ブロックを通過する方向の動きベクトルV1があるか否かを検出する。補間フレームf0.5の注目ブロックは、それぞれの第2の探索範囲領域の中央に位置する基準ブロックと同じ位置のブロックである。
補間ブロック通過動きベクトル検出部31は、注目ブロックを通過する方向の動きベクトルV1に対して第1の重み付けポイントを設定した第1の重み付けデータを生成する。
動きベクトル分布検出部32は、それぞれの第2の探索範囲領域内に存在する動きベクトルV1の種類とそれぞれの種類の動きベクトルV1の個数を検出する。動きベクトル分布検出部32は、それぞれの種類の動きベクトルV1に対して、個数が多いほど大きい第2の重み付けポイントを設定した第2の重み付けデータを生成する。個数が多いほど重み付けポイントを大きくするのは、個数が多い動きベクトルV1ほど信頼度が高いと判断できるからである。
相関計算部33は、補間フレームf0.5のそれぞれの注目ブロックを中心として、第2の探索範囲領域内に存在する動きベクトルV1の種類それぞれの方向で、探索基準のフレーム(過去フレームf1)のブロックと他方のフレーム(現在フレームf0)のブロックとの差分値を求める。相関計算部33は、補間ブロック通過動きベクトル検出部31による検出結果(第1の重み付けデータ)と動きベクトル分布検出部32による検出結果(第2の重み付けデータ)とに基づいて差分値に対して重み付けして重み付けした差分値を相関値とする。そして、相関計算部33は、重み付けした差分値による相関値に基づいて、動きベクトルV1を補正して、動きベクトルV2として出力する。
相関計算部33は、第1の重み付けデータと第2の重み付けデータとで同じ動きベクトルであれば第1の重み付けポイントと第2の重み付けポイントとを加算した上で、それぞれの種類の動きベクトルの方向の差分値を、重み付けポイントが大きい動きベクトルの方向ほど差分値が小さくなるように補正すればよい。
動きベクトル検出部2は、動きベクトルV1を検出するに際し、第1の探索範囲領域内それぞれの基準ブロックと、複数の動きベクトルそれぞれの方向の他方のフレームのブロックとの差分値を求める。動きベクトル検出部2は、複数の動きベクトルそれぞれの方向の差分値において、基準ブロックで求めた差分値に対して基準ブロックの周囲のブロックで求めた差分値を積算することが好ましい。そして、動きベクトル検出部2は、積算した差分値に基づいて、最も小さい差分値を示す方向をそれぞれの基準ブロックにおける動きベクトルとして検出することが好ましい。
このようにすれば、動きベクトルV1を検出した位置と補間画像との位置のずれを緩和した上で、動きベクトル補正部3によって動きベクトルV1を補正して、動きベクトルV2とすることができる。
本発明は以上説明した本実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々変更可能である。図1では、動きベクトル生成装置10をフレーム周波数変換装置に備える構成を示したが、本実施形態の動きベクトル生成装置10は、フレーム周波数変換装置に限らず、動きベクトルを用いて映像信号処理する任意の装置に用いることが可能である。