以下、本発明の動き補償フレーム生成装置及び方法の各実施形態について、添付図面を参照して説明する。
<第1実施形態>
図1は、第1実施形態の動き補償フレーム生成装置101を示している。動き補償フレーム生成装置101は、フレームメモリ11,動きベクトル検出部12a,全体スクロール判定部13a,信頼度生成部14,信頼度調整部15,補間画素生成部16を備える。補間画素生成部16は、静止補間部161,動補間部162,適応混合部163を備える。
図1において、映像信号は、フレームメモリ11,動きベクトル検出部12a,補間画素生成部16に入力される。フレームメモリ11,動きベクトル検出部12a,補間画素生成部16に入力される実フレームを現在フレームF0とする。フレームメモリ11は、現在フレームF0の映像信号を1フレーム期間遅延させて出力する。フレームメモリ11より出力される、現在フレームF0に対して1フレーム過去の実フレームを過去フレームF1とする。過去フレームF1の映像信号は、動きベクトル検出部12a及び補間画素生成部16に入力される。
動きベクトル検出部12aは、現在フレームF0と過去フレームF1の映像信号を用いて、過去フレームF1上の検出単位毎の動きベクトルを検出する。ここで、図2を用いて動きベクトル検出部12aによる動きベクトルの検出動作について説明する。図2において、過去フレームF1内の所定の座標(x,y)に位置する注目画素Piに対する動きベクトルを検出するとする。動きベクトル検出部12aは、現在フレームF0上の所定の座標(x,y)のx,yそれぞれに対して例えば±40画素の範囲を探索範囲とする。動きベクトル検出部12aは、注目画素Piから探索範囲内の後述する選択した画素に向かう複数の動きベクトル候補MVcの中から、最も相関の高い現在フレームF0内の画素Pjに向かう動きベクトルMVsを検出する。
第1実施形態においては、相関を判断する指標の一例として、2フレーム間の輝度の差分絶対値和(SAD:Sum of Absolute Differences)を用いる。図2に示すように、動きベクトル検出部12aは、SAD値を、一例として、注目画素Piの周辺の水平7画素及び垂直7画素のブロックBiと画素Pjの周辺の水平7画素及び垂直7画素のブロックBj内の各画素を用いて、式(1)により計算する。式(1)において、(mvx_c,mvy_c)は図2の動きベクトル候補MVcに相当する動きベクトル候補、SAD(mvx_c,mvy_c)は動きベクトル候補(mvx_c,mvy_c)に対するSAD値、L0(x,y),L1(x,y)はそれぞれ現在フレームF0、過去フレームF1内の座標(x,y)での画素の輝度値である。
式(1)で計算したSAD値が最小となる画素が最も相関が高い。動きベクトル検出部12aは、複数の動きベクトル候補MVcの中からSAD値が最小となる画素Pjに向かう動きベクトルMVsを抽出して、抽出した動きベクトルMVsを動きベクトルMVとして出力する。
第1実施形態においては、動きベクトル検出部12aの回路規模及び動きベクトル検出部12aで行う計算量を削減するために、注目画素Piから探索範囲内の全ての画素に向かう動きベクトル候補MVcを求めるのではなく、図3に示すように、水平方向及び垂直方向で選択した画素に向かう動きベクトル候補MVcを求めるようにしている。図3に示す例では、破線で示す探索範囲Ars内の垂直方向における奇数番目のラインを間引くと共に、水平方向における奇数番目の画素を間引いている。図3では、画素を円形で示しており、探索範囲Ars内の破線で示す円は間引かれた画素である。
動きベクトル検出部12aは、注目画素Piから、水平方向及び垂直方向それぞれに2画素おきである実線で示す画素Pj22,Pj42,Pj62,…,Pj24,Pj44,Pj64,…に向かう複数の動きベクトル候補MVcの中から最も相関の高い画素Pjに向かう動きベクトルMVsを検出する。即ち、動きベクトル検出部12aは、探索範囲Ars内の奇数番目のラインと奇数番目の画素を間引いていることから、水平方向及び垂直方向で奇数動きベクトル候補を間引いて、偶数動きベクトル候補から動きベクトルMVsを検出することになる。奇数動きベクトル候補の代わりに偶数動きベクトル候補を間引いてもよい。
図1に戻り、動きベクトル検出部12aは、検出した動きベクトルMVに対応するSAD値をブロックマッチング誤差値BMEとして信頼度生成部14に供給する。動きベクトル検出部12aは、ブロックマッチング誤差値BMEを最大値が255となるように正規化して出力する。
動きベクトル検出部12aにおける動きベクトルMVの検出単位、動きベクトルMVの探索範囲、相関の指標は上記の例に限定されるものではない。相関の指標としてSAD値を用いる場合、ブロックBi,Bjのサイズ及び形状は上記の例に限定されるものではない。動きベクトルMVの検出単位が画素単位ではなく、ブロック単位の場合は、注目単位としては注目画素Piではなく、注目ブロックとなる。また、動きベクトル検出部12aは図2に示すように隣接する2フレーム内の画素ではなく、隣接していない2フレーム内の画素を用いて動きベクトルMVを検出してもよい。さらに、動きベクトルMVの検出精度を高めるために2フレームより多いフレーム内の画素を用いて動きベクトルMVを検出してもよい。動きベクトル検出部12aにおける動きベクトルMVの検出方法は任意である。
動きベクトル検出部12aが検出した動きベクトルMVは、全体スクロール判定部13a及び補間画素生成部16内の動補間部162に入力される。全体スクロール判定部13aは、フレーム内で画像が全体的にほぼ一方向にスクロールするいわゆる全体スクロールしているか否かを判定して、全体スクロールの程度を示す全体スクロール度DSを生成する。
図4を用いて全体スクロール判定部13aにおける全体スクロール度DSの生成動作について説明する。全体スクロール判定部13aは、ステップS1にて、動きベクトルMVの1フレーム内におけるヒストグラムを検出する。全体スクロール判定部13aは、方向の異なる全ての動きベクトルMVに対応したカウンタを有する。全体スクロール判定部13aはフレームの開始時にカウンタをリセットし、1フレームが終了するまでそれぞれの動きベクトルMVが入力される度にカウンタをインクリメントさせて、動きベクトルMVに対応するヒストグラム値Hist(mvx_c,mvy_c)を算出する。
全体スクロール判定部13aは、ステップS2にて、式(2)に基づいて、ヒストグラム値Hist(mvx_c,mvy_c)を0〜255の範囲に値が収まるように正規化して、正規化ヒストグラム値Hist_nrm(mvx_c,mvy_c)として出力する。式(2)中のTotal_numは、全体スクロール判定部13aに入力される動きベクトルMVの1フレーム期間中の総入力回数である。正規化後の値の範囲は0〜255に限定されるものではない。ステップS2の正規化処理は設ける方が好ましいが、省略可能である。
Hist_nrm(mvx_c,mvy_c)=Hist(mvx_c,mvy_c)×255/Total_num …(2)
なお、動きベクトルMVを1フレームの全画素に対して検出すればTotal_numは1フレームの画素数となる。画面の上下または左右端部では動きベクトルMVの検出精度はさほどよくない。そこで、1フレーム内の上下左右の端部を除く、中央部の所定の範囲で動きベクトルMVのヒストグラム値Hist(mvx_c,mvy_c)を算出してもよい。この場合は、Total_numは中央部で検出した動きベクトルMVの1フレーム期間中の総入力回数となる。
全体スクロール判定部13aは、ステップS3にて、正規化ヒストグラム値Hist_nrm(mvx_c,mvy_c)における最大値を検出する。具体的には、全体スクロール判定部13aは、正規化ヒストグラム値Hist_nrm(mvx_c,mvy_c)の中で最大値(最大頻度)を示すヒストグラム値Hist_nrm(mvx_c_hmax,mvy_c_hmax)を検出する。動きベクトルMVの中で、最大のヒストグラム値が検出された動きベクトルを最大値動きベクトル(mvx_c_hmax,mvy_c_hmax)とする。最大値動きベクトル(mvx_c_hmax,mvy_c_hmax)は、画像の全体スクロールの方向を示す全体スクロール動きベクトルである。
次に、全体スクロール判定部13aは、ステップS4にて、式(3)に基づいて、正規化ヒストグラム値Hist_nrm(mvx_c,mvy_c)において最大のヒストグラム値Hist_nrm(mvx_c_hmax,mvy_c_hmax)と、最大値動きベクトル(mvx_c_hmax,mvy_c_hmax)の周辺の動きベクトルに対応するヒストグラム値とを積算した周辺積算値Sum_Histを算出する。
図5を用いて、ステップS4における周辺積算値Sum_Histの算出動作を概念的に説明する。図5において、探索範囲Ars内でハッチングを付した画素Pj64が注目画素Piと最も相関の高い画素Pjであるとする。前述のように、動きベクトル検出部12aでは奇数動きベクトル候補を間引いていることから、例えば注目画素Piから図5の画素Pj54に向かう動きベクトルは、水平方向では、画素Pj44に向かう動きベクトルまたは画素Pj64に向かう動きベクトルとなる。本来の画素Pj54に向かう動きベクトルは、画素Pj44に向かう動きベクトルと画素Pj64に向かう動きベクトルとのいずれかに振り分けられることになる。
従って、画像が奇数動きベクトルのスクロール画像であった場合には、本来検出すべき最大値動きベクトルの値は、奇数動きベクトル近傍の偶数動きベクトルに分散することになる。そこで、式(3)によって、分散した正規化ヒストグラムHist_nrm(mvx_c,mvy_c)をまとめるために、周辺積算値Sum_Histを算出する。式(3)においては、図5に一点鎖線で囲んだ、画素Pj64と、画素Pj64周辺の画素Pj42,Pj62,Pj82,Pj44,Pj62,Pj84,Pj46,Pj66,Pj86の範囲で正規化ヒストグラムHist_nrm(mvx_c,mvy_c)の値を積算している。
式(3)において、動きベクトル候補MVcのx成分及びy成分をそれぞれ2ずつずらすのは、奇数動きベクトル候補を間引いているからである。周辺積算値Sum_Histを算出する積算範囲は図5に示す例に限定されるものではない。
図4に戻り、全体スクロール判定部13aは、ステップS5にて、周辺積算値Sum_Histと所定の閾値とを比較して全体スクロール度DSを生成して出力する。図6は、周辺積算値Sum_Histに対する全体スクロール度DSの特性の例を示している。図6に示すように、周辺積算値Sum_Histが閾値TH3以上のとき全体スクロール度DSを“3”、周辺積算値Sum_Histが閾値TH2以上閾値TH3未満のとき全体スクロール度DSを“2”、周辺積算値Sum_Histが閾値TH1以上閾値TH2未満のとき全体スクロール度DSを“1”、周辺積算値Sum_Histが閾値TH1未満のとき全体スクロール度DSを“0”としている。
全体スクロール度DSの値が大きい方が、フレーム内で画像が全体的にほぼ一方向にスクロールする全体スクロールの程度が大きいということである。図6の例では、全体スクロール度DSを“0”〜“3”の4段階としたが、これに限定されるものではない。全体スクロール度DSを“0”と“1”の2段階、即ち、全体スクロールしているか否かを判定してもよい。全体スクロールの程度とは、全体スクロール度DSを“0”と“1”の2段階とした場合を含む。全体スクロール判定部13aは、以上のように生成した全体スクロール度DSを信頼度調整部15に供給する。
信頼度生成部14は、入力されたブロックマッチング誤差値BMEに基づいて、動きベクトル検出部12aが検出した動きベクトルMVの信頼度を示す指標である信頼度データDR1を生成する。信頼度生成部14は、図7に示すように、ブロックマッチング誤差値BMEが小さいほど大きくなり、ブロックマッチング誤差値BMEが大きいほど小さくなる信頼度データDR1を生成する。信頼度データDR1は信頼度調整部15に入力される。
信頼度調整部15は、入力された信頼度データDR1を、全体スクロール度DSの値に応じてゲインを調整して、調整信頼度データDR2として出力する。信頼度調整部15は、図8に示すように、全体スクロール度DSの値が大きいほど調整信頼度データDR2の下限値を大きくするようゲインを調整する。信頼度調整部15は、図8に示す特性より分かるように、全体スクロール度DSの値が大きいほど、調整信頼度データDR2の値を大きくして信頼度を上昇させる。調整信頼度データDR2は、補間画素生成部16の適応混合部163に入力される。
次に、補間画素生成部16の動作について説明する。静止補間部161は、入力された現在フレームF0内の画素と過去フレームF1内の画素とを用いて、常に静止補間処理によって現在フレームF0と過去フレームF1との間の補償フレームF10内の補間画素を生成する。具体的には、図9に示すように、現在フレームF0と過去フレームF1との間の補償フレームF10内の補間画素Psを、補間画素Psとそれぞれ同じ位置にある過去フレームF1内の画素Prと現在フレームF0内の画素Ptとを平均することによって生成する。
動補間部162は、入力された現在フレームF0内の画素と過去フレームF1内の画素と動きベクトルMVとを用いて、動きベクトルMVに基づいた動補間処理によって現在フレームF0と過去フレームF1との間の補償フレームF10内の補間画素を生成する。具体的には、図10に示すように、補償フレームF10内の補間画素Pmを生成する際に、補間画素Pmと同じ位置にある過去フレームF1内の画素において検出された動きベクトルMVを1/2にした動きベクトル1/2×MVと、−1/2にした動きベクトル−1/2×MVとを用いる。動補間部162は、動きベクトル−1/2×MVで示す過去フレームF1内の画素Piと動きベクトル1/2×MVで示す現在フレームF0内の画素Pjとを平均して補間画素Pmを生成する。
特に図示しないが、動補間部162は、補間画素Pmを中心とした所定の水平方向及び垂直方向の複数の画素の範囲で画素Piと画素Pjとを選択することができるよう、入力された現在フレームF0内の画素と過去フレームF1内の画素をそれぞれ水平方向及び垂直方向に遅延させる遅延回路を備える。
第1実施形態においては、静止補間部161及び動補間部162の補間処理を図9及び図10に示すように隣接する2フレーム内の画素を用いて行っているが、隣接していない2フレーム内の画素を用いて補間処理を行ってもよい。
適応混合部163には、静止補間部161より出力された補間画素Psと動補間部162より出力された補間画素Pmとが入力される。適応混合部163は、調整信頼度データDR2の値に応じて補間画素Psと補間画素Pmとを適応的に混合する。適応混合部163は、式(4)に基づいて補間画素Psと補間画素Pmとを混合して補間画素Pxを生成する。
Px=Ps×(256-DR2)/256+Pm×DR2/256 …(4)
式(4)より分かるように、補間画素Pxは、調整信頼度データDR2の値が大きいほど、動補間処理によって生成した補間画素Pmの割合が大きくなる。前述のように、信頼度調整部15は、全体スクロール判定部13aが生成する全体スクロール度DSの値が大きいほど信頼度データDR1の値を大きくして調整信頼度データDR2とする。即ち、補間画素生成部16は、全体スクロール度DSの値が大きいほど静止補間処理によって生成した補間画素Psの割合を少なくして補間画素Pmの割合を大きくする。
入力される映像信号として、実フレームを構成する各画素が順次入力され、補間画素生成部16によって補償フレームF10を構成する補間画素Pxが順次生成されることになる。これによって、動き補償フレーム生成装置101からは、過去フレームF1と現在フレームF0との間に内挿するそれぞれの補償フレームF10が生成されることになる。
第1実施形態においては、図3で説明したように、動きベクトル候補MVcを間引くことによって奇数動きベクトル候補または偶数動きベクトル候補を間引いたが、動きベクトル候補の間引き方は図3の手法に限定されない。例えば、1フレームの画素数を水平及び垂直方向双方で1/2に間引き、1フレームの大きさを1/4とする。1/4の大きさのフレーム間で動きベクトルを検出する。この動きベクトルを、水平及び垂直方向それぞれ2倍して、動き補償フレーム生成装置101で実際に用いる動きベクトルMVとする。この場合、奇数動きベクトル候補が間引かれることになる。
第1実施形態の動き補償フレーム生成装置101によれば、全体スクロール度DSを用いて動きベクトルMVの信頼度を調整するようにしているので、動画ぼやけを従来と比較してさらに改善することができ、動き補償品質を大幅に高めることができる。第1実施形態の動き補償フレーム生成装置101においては、動きベクトル検出部12aにおいて動きベクトル候補MVcを間引いているので、動きベクトル検出部12aの回路規模及び計算量を削減することが可能となる。これに併せて、全体スクロール判定部13aでの全体スクロール度DSの生成の際に、最大値動きベクトル(全体スクロール動きベクトル)の周辺の値を積算した周辺積算値Sum_Histを用いているので、動きベクトル候補を間引いたことによる悪影響を回避しつつ全体スクロール度DSを的確に生成することができる。
<第2実施形態>
図11に示す第2実施形態の動き補償フレーム生成装置102において、第1実施形態の動き補償フレーム生成装置101と同一部分には同一符号を付し、その説明を適宜省略することとする。第2実施形態の動き補償フレーム生成装置102における動きベクトル検出部12は、図1の動きベクトル検出部12aと同じでもよいし、動きベクトル候補MVcを間引かず動きベクトルMVを検出する構成であってもよい。第2実施形態の動き補償フレーム生成装置102は、全体スクロール判定部13aの代わりに、全体スクロール度DSを生成する構成が異なる全体スクロール判定部13bを備える。
図12を用いて全体スクロール判定部13bの具体的構成について説明する。動きベクトル検出部12より出力された動きベクトルMVは、水平動きベクトル境界判定部131及び垂直動きベクトル境界判定部132に入力される。水平動きベクトル境界判定部131は、動きベクトルMVに基づいて、水平方向の動きベクトルの境界を判定する。垂直動きベクトル境界判定部132は、動きベクトルMVに基づいて、垂直方向の動きベクトルの境界を判定する。
図13を用いて、水平動きベクトル境界判定部131で行われる水平方向の動きベクトルMVの境界を判定する方法について説明する。図13において、注目画素Piで検出された動きベクトルMVをMV_REF、注目画素Piの左側に隣接する画素Paで検出された動きベクトルMVをMV_LEFT、注目画素Piの上側に隣接する画素Pbで検出された動きベクトルMVをMV_ABOVEとする。まず、水平動きベクトル境界判定部131は、式(5)を用いて、注目画素Piと左側の画素Paとの間における水平方向の動きベクトルの境界の有無を判定する。式(5)において、MV_REF_H,MV_LEFT_HはMV_REF,MV_LEFTの水平成分、TH_Hは所定の閾値である。
|MV_REF_H-MV_LEFT_H| > TH_H …(5)
水平動きベクトル境界判定部131は、式(5)を満たす場合には、注目画素Piと左側の画素Paとの境界判別値MV_H_LEFTを“1”とし、式(5)を満たさない場合には、境界判別値MV_H_LEFTを“0”とする。境界判別値MV_H_LEFTが“1”であれば、注目画素Piと左側の画素Paとの間には、動きベクトルMVの水平成分に境界が存在することを示す。即ち、注目画素Piにおける動きベクトルMVの水平成分は、左側の画素Paにおける動きベクトルMVの水平成分に対して変化していることを示す。なお、閾値TH_Hの値は、動きベクトルMVの探索範囲の大きさ等に応じて適宜設定する。
次に、水平動きベクトル境界判定部131は、式(6)を用いて、注目画素Piと、注目画素Piの直上に位置する上側の画素Pbとの間における水平方向の動きベクトルの境界の有無を判定する。式(6)において、MV_ABOVE_HはMV_ABOVEの水平成分である。
|MV_REF_H-MV_ABOVE_H| > TH_H …(6)
水平動きベクトル境界判定部131は、式(6)を満たす場合には、注目画素Piと上側の画素Pbとの境界判別値MV_H_ABOVEを“1”とし、式(6)を満たさない場合には、境界判別値MV_H_ABOVEを“0”とする。境界判別値MV_H_ABOVEが“1”であれば、注目画素Piと上側の画素Pbとの間には、動きベクトルMVの水平成分に境界が存在することを示す。即ち、注目画素Piにおける動きベクトルMVの水平成分は、上側の画素Pbおける動きベクトルMVの水平成分に対して変化していることを示す。
ここでは、水平動きベクトル境界判定部131は、式(5)を用いて、注目画素Piと左側の画素Paとの間における水平方向の動きベクトルの境界の有無を判定し、次に、式(6)を用いて、注目画素Piと上側の画素Pbとの間における水平方向の動きベクトルの境界の有無を判定すると説明したが、順番は逆でもよく、両者を同時に判定してもよい。第2実施形態では式(5)と式(6)とで同じ値の閾値TH_Hを用いているが、式(5)と式(6)とで異なる閾値を用いてもよい。
水平動きベクトル境界判定部131は、境界判別値MV_H_LEFTと境界判別値MV_H_ABOVEとのOR演算を行って、水平動きベクトル境界判定信号MV_H_EDGEとして出力する。
図13を用いて、垂直動きベクトル境界判定部132で行われる垂直方向の動きベクトルMVの境界を判定する方法について説明する。図13において、注目画素Piで検出された動きベクトルMVの垂直成分をMV_REF_V、注目画素Piの左側に隣接する画素Paで検出された動きベクトルMVの垂直成分をMV_LEFT_V、注目画素Piの上側に隣接する画素Pbで検出された動きベクトルMVの垂直成分をMV_ABOVE_Vとする。垂直動きベクトル境界判定部132は、式(7)を用いて、注目画素Piと左側の画素Paとの間における垂直方向の動きベクトルの境界の有無を判定する。また、垂直動きベクトル境界判定部132は、式(8)を用いて、注目画素Piと上側の画素Pbとの間における垂直方向の動きベクトルの境界の有無を判定する。TH_Vは所定の閾値である。
第2実施形態では式(7)と式(8)とで同じ値の閾値TH_Vを用いているが、式(7)と式(8)とで異なる閾値を用いてもよい。
|MV_REF_V-MV_LEFT_V| > TH_V …(7)
|MV_REF_V-MV_ABOVE_V| > TH_V …(8)
垂直動きベクトル境界判定部132は、式(7)を満たす場合には、注目画素Piと左側の画素Paとの境界判別値MV_V_LEFTを“1”とし、式(7)を満たさない場合には、境界判別値MV_V_LEFTを“0”とする。境界判別値MV_V_LEFTが“1”であれば、注目画素Piと左側の画素Paとの間には、動きベクトルMVの垂直成分に境界が存在することを示す。即ち、注目画素Piにおける動きベクトルMVの垂直成分は、左側の画素Paにおける動きベクトルMVの垂直成分に対して変化していることを示す。なお、閾値TH_Vの値は、動きベクトルMVの探索範囲の大きさ等に応じて適宜設定する。
垂直動きベクトル境界判定部132は、式(8)を満たす場合には、注目画素Piと上側の画素Pbとの境界判別値MV_V_ABOVEを“1”とし、式(8)を満たさない場合には、境界判別値MV_V_ABOVEを“0”とする。境界判別値MV_V_ABOVEが“1”であれば、注目画素Piと上側の画素Pbとの間には、動きベクトルMVの垂直成分に境界が存在することを示す。即ち、注目画素Piにおける動きベクトルMVの垂直成分は、上側の画素Pbおける動きベクトルMVの垂直成分に対して変化していることを示す。
垂直動きベクトル境界判定部132は、境界判別値MV_V_LEFTと境界判別値MV_V_ABOVEとのOR演算を行って、垂直動きベクトル境界判定信号MV_V_EDGEとして出力する。
図13に示す例では、注目画素Piにおける動きベクトルMVと、左側の画素Paと上側の画素Pbにおける動きベクトルMVとを比較したが、これに限定されることはない。図14(A)に示すように、左側の画素Paの代わりに右側に隣接する画素Pcを用いてもよく、図14(B)に示すように、上側の画素Pb代わりに注目画素Piの直下に位置する下側の画素Pdを用いてもよい。図14(C)に示すように、右側の画素Pcと下側の画素Pdを用いてもよく、図14(D)に示すように、上下左右の画素Pa,Pb,Pc,Pdを用いてもよい。さらに、図14(E)に示すように、左側の画素Paのみを用いたり、図14(F)に示すように、上側の画素Pbのみを用いたりして、簡略化することもできる。但し、全体スクロールの判定精度を向上させるためには、左または右と上または下との双方を用いることが好ましい。
また、必ずしも、注目画素Piにおける動きベクトルMVと、注目画素Piと隣接する画素の動きベクトルMVとを比較しなくてもよい。図14(G)に示すように、注目画素Piにおける動きベクトルMVと、左側の画素Paのさらに左側の画素Peにおける動きベクトルMVとを比較し、注目画素Piにおける動きベクトルMVと、上側の画素Pbのさらに上側の画素Pfにおける動きベクトルMVとを比較してもよい。即ち、注目画素Piと注目画素Piに対して左方に位置する画素との動きベクトルMVどうし、注目画素Piと注目画素Piに対して右方に位置する画素との動きベクトルMVどうし、注目画素Piと注目画素Piに対して上方に位置する画素との動きベクトルMVどうし、注目画素Piと注目画素Piに対して下方に位置する画素との動きベクトルMVどうしの少なくとも1つを比較すればよい。さらに言えば、注目画素Piと異なる画素(互いに異なる検出単位)の動きベクトルMVを比較すればよい。
図12において、境界判定信号混合部133には、水平動きベクトル境界判定信号MV_H_EDGEと垂直動きベクトル境界判定信号MV_V_EDGEとが入力される。境界判定信号混合部133は、水平動きベクトル境界判定信号MV_H_EDGEと垂直動きベクトル境界判定信号MV_V_EDGEとをOR演算することによって両信号を混合し、動きベクトル境界判定信号MV_EDGEとして出力する。以上のようにして、破線で囲んだ境界判定信号生成部3123は、動きベクトル境界判定信号MV_EDGEを生成する。動きベクトル境界判定信号MV_EDGEは、境界判定信号集計部134に入力される。
境界判定信号集計部134は、動きベクトル境界判定信号MV_EDGEを集計する。第2実施形態においては、動きベクトルMVは1画素単位で検出されるので、動きベクトル境界判定信号MV_EDGEは、図15に示すように、1画素単位で順次出力されることになる。図15において、それぞれの矩形は画素を示し、矩形内の“1”または“0”は動きベクトル境界判定信号MV_EDGEが示す値である。境界判定信号集計部134は、図16のステップS21にて、1フレーム内の動きベクトル境界判定信号MV_EDGEをカウントする。即ち、注目画素Piに対して得られた動きベクトル境界判定信号MV_EDGEが“1”のときカウンタをインクリメントして、1フレーム内の動きベクトル境界判定信号MV_EDGEを集計して総数EDGE_SUMを求める。
次に、境界判定信号集計部134は、ステップS22にて、総数EDGE_SUMを式(9)を用いて正規化して正規化集計値EDGE_SUM_NRMを出力する。式(9)において、TOTAL_NUMは総数EDGE_SUMの取り得る最大値を意味し、第2実施形態では動きベクトル境界判定信号MV_EDGEが2値で表されているため、動きベクトル境界判定信号MV_EDGEの検出単位の1フレーム内における総数である。即ち、動きベクトル境界判定信号MV_EDGEは1画素単位で出力されるので、TOTAL_NUMの値は1フレーム内の総画素数となる。
EDGE_SUM_NRM=EDGE_SUM×255/TOTAL_NUM …(9)
1フレーム内の全ての画素に対して得られる動きベクトル境界判定信号MV_EDGEを集計してもよいが、1フレーム内の部分的な画素に対して得られる動きベクトル境界判定信号MV_EDGEを集計してもよい。前述のように、画面の上下または左右端部では動きベクトルMVの検出精度はさほどよくない。そこで、1フレーム内の上下左右の端部を除く、中央部の所定の範囲で動きベクトル境界判定信号MV_EDGEを集計して総数EDGE_SUMを求めてもよい。総数EDGE_SUMを式(9)を用いて正規化して正規化集計値EDGE_SUM_NRMとすれば、正規化集計値EDGE_SUM_NRMは、動きベクトル境界判定信号MV_EDGEの集計範囲に関係なく、0〜255の値となる。
図16のステップS22による正規化は必須ではないが、動きベクトル境界判定信号MV_EDGEの集計範囲を変更した場合でも正規化集計値EDGE_SUM_NRMは0〜255の値となるので、後段の判定部135における判定処理に影響を与えることがない。そこで、ステップS22を設けて総数EDGE_SUMを正規化することが好ましい。
正規化集計値EDGE_SUM_NRMは、判定部135に入力される。判定部135は、正規化集計値EDGE_SUM_NRMと所定の閾値TH11,TH12,TH13とを比較することによって、フレーム内の画像が全体スクロールしているか否か及び全体スクロールの程度を判定して、全体スクロール度DSを出力する。図17を用いて、判定部135が出力する全体スクロール度DSの特性について説明する。図17に示すように、閾値TH11,TH12,TH13と3つの閾値を設け、全体スクロール度DSを、正規化集計値EDGE_SUM_NRMが閾値TH11以下のとき“3”、閾値TH11を超えて閾値TH12以下のとき“2”、閾値TH12を超えて閾値TH13以下のとき“1”、閾値TH13を越えれば“0”とする。
第2実施形態においては、まず、動きベクトル検出部12が、それぞれのフレーム内の所定の検出単位毎に画像の動きベクトルMVを検出する。境界判定信号生成部3123が、1フレーム内の異なる検出単位で検出された動きベクトルMVを比較することによって、異なる検出単位間に動きベクトルの境界が存在するか否かを判定して動きベクトル境界判定信号MV_EDGEを生成する。境界判定信号集計部134が、動きベクトル境界判定信号MV_EDGEを集計して、1フレーム内で動きベクトルの境界が存在する程度を示す集計値(EDGE_SUMまたはEDGE_SUM_NRM)を生成する。
そして、判定部135は、集計値と所定の閾値(TH11,TH12,TH13)とを比較することによって、画像が全体的にスクロールしている程度を示す全体スクロール度DSを生成する。全体スクロール判定部13bは、動きベクトルMVの比較、集計、閾値との比較という比較的簡単な処理を行うだけでよいので、小さな回路規模で実現することができる。しかも、全体スクロールの程度を的確に判定することが可能である。
上記の例では、水平動きベクトル境界判定部131及び垂直動きベクトル境界判定部132は、境界判別値を“1”と“0”の2値で判定するようにしたが、3値以上で判定するようにしてもよい。水平動きベクトル境界判定部131が境界判別値を3値以上で判定する例を、図18を用いて説明する。図18は水平動きベクトル境界判定部131が境界判別値MV_H_LEFTを生成する際の一例を示す特性図である。閾値TH_H1,TH_H2,TH_H3と3つの閾値を設け、境界判別値MV_H_LEFTを、|MV_REF_H-MV_LEFT_H|が閾値TH_H3より大きいとき“3”、閾値TH_H3以下かつ閾値TH_H2より大きいとき“2”、閾値TH_H2以下かつ閾値TH_H1より大きいとき“1”、閾値TH_H1以下のとき“0”とした4値で表している。境界判別値MV_H_LEFTは、値が大きいほど境界度合いが大きいことを示す。
図18は境界判別値MV_H_LEFTを生成する特性を示しているが、水平動きベクトル境界判定部131または垂直動きベクトル境界判定部132は図18と同様の特性で境界判別値MV_H_ABOVE,MV_V_LEFT,MV_V_ABOVEを生成する。
水平動きベクトル境界判定部131は、求めた境界判別値MV_H_LEFTと境界判別値MV_H_ABOVEとを比較し、値の大きいもの、即ち、境界度合いの大きい値を選択して水平動きベクトル境界判定信号MV_H_EDGEとして出力する。境界判別値を3値以上で判定する場合には、OR演算は用いない。垂直動きベクトル境界判定部132も同様の方法で境界判定信号MV_V_EDGEを出力する。
境界判定信号混合部133では、水平動きベクトル境界判定信号MV_H_EDGEと垂直動きベクトル境界判定信号MV_V_EDGEとをOR演算することで動き境界判定信号MV_EDGEを生成するのではなく、水平動きベクトル境界判定信号MV_H_EDGEと垂直動きベクトル境界判定信号MV_V_EDGEの内、値の大きい方、即ち、より境界度合いの大きい方を選択することで動き境界判定信号MV_EDGEとして出力する。境界判定信号集計部134は、1フレーム内の動きベクトル境界判定信号MV_EDGEを集計して総数EDGE_SUMを求める際に、動きベクトル境界判定信号MV_EDGEに応じてカウンタをインクリメントする。例えば動きベクトル境界判定信号MV_EDGEが2であればカウンタを2インクリメントし、3であればカウンタを3インクリメントする。
図11において、信頼度調整部15は、図1と同様、全体スクロール度DSに応じて信頼度データDR1のゲインを調整して調整信頼度データDR2として出力する。補間画素生成部16は、調整信頼度データDR2の値に応じて補間画素Psと補間画素Pmとを適応的に混合して補間画素Pxを生成する。
第2実施形態の動き補償フレーム生成装置102によれば、全体スクロール度DSを用いて動きベクトルMVの信頼度を調整するようにしているので、動画ぼやけを従来と比較してさらに改善することができ、動き補償品質を大幅に高めることができる。第2実施形態の動き補償フレーム生成装置102においては、図12に示す構成の全体スクロール判定部13bを用いているので、小さな回路規模で全体スクロールの程度を的確に判定することが可能となる。全体スクロールの程度を的確に判定することができるので、動画ぼやけ改善の効果を高めることができる。
<第3実施形態>
図19に示す第3実施形態の動き補償フレーム生成装置103において、第1実施形態の動き補償フレーム生成装置101または第2実施形態の動き補償フレーム生成装置102と同一部分には同一符号を付し、その説明を適宜省略することとする。第3実施形態の動き補償フレーム生成装置103における動きベクトル検出部12は、図1の動きベクトル検出部12aと同じでもよいし、動きベクトル候補MVcを間引かず動きベクトルMVを検出する構成であってもよい。
動きベクトル検出部12が動きベクトル候補MVcを間引かず動きベクトルMVを検出する構成の場合、全体スクロール判定部13aは、図4のステップS4の処理を実行する必要はない。全体スクロール判定部13aは、全体スクロール動きベクトルである最大値動きベクトル(mvx_c_hmax,mvy_c_hmax)に対応するヒストグラム値と所定の閾値とを比較して全体スクロール度DSを生成すればよい。
第1及び第2実施形態においては、図8の特性図より分かるように、全体スクロールする画像に対して局所的に誤った動きベクトルMVを検出した場合であっても、信頼度データDR1よりも値が大きくなるように調整された調整信頼度データDR2が用いられることになる。その結果、誤った動きベクトルMVを検出した部分で画質改善効果が低下することになる。第3実施形態は、局所的に誤った動きベクトルMVを検出した場合の画質改善効果の低下を防ぐように構成したものである。
図19において、全体スクロール判定部13aは、図4のステップS3で求めた最大値動きベクトル(mvx_c_hmax,mvy_c_hmax)を全体スクロール動きベクトルSMVとして出力する。ベクトル判定部の第1の例であるベクトル一致判定部17は、動きベクトルMVと全体スクロール動きベクトルSMVとが一致しているか否かを判定し、一致判定信号CMPを出力する。動きベクトルMVの水平成分をMVX、垂直成分をMVY、全体スクロール動きベクトルSMVの水平成分をSMVX、垂直成分をSMVY、X_TH,Y_THを所定の閾値とする。全体スクロール判定部13aは、式(10)〜式(13)を全て満たす場合に一致判定信号CMPを“1”、いずれか1つでも満たさない場合は一致判定信号CMPを“0”とする。
(SMVX-X_TH)≦MVX …(10)
MVX≦(SMVX+X_TH) …(11)
(SMVY-Y_TH)≦MVY …(12)
MVY≦(SMVY+Y_TH) …(13)
信頼度選択部18には、信頼度生成部14より出力された信頼度データDR1と、信頼度調整部15より出力された調整信頼度データDR2と、ベクトル一致判定部17より出力された一致判定信号CMPとが入力される。信頼度選択部18は、一致判定信号CMPが“1”であれば動きベクトルMVと全体スクロール動きベクトルSMVとが一致しているので、選択信頼度データDR_SELとして、調整信頼度データDR2を選択して出力する。また、信頼度選択部18は、一致判定信号CMPが“0”であれば動きベクトルMVと全体スクロール動きベクトルSMVとが一致していないので、選択信頼度データDR_SELとして、調整信頼度データDR2よりも小さい値である信頼度データDR1を選択して出力する。
適応混合部163は、信頼度選択部18より出力された選択信頼度データDR_SELの値に応じて補間画素Psと補間画素Pmとを適応的に混合する。これによって、全体スクロールする画像に対して局所的に誤った動きベクトルMVを検出した画素または領域では、調整信頼度データDR2ではなく信頼度データDR1に応じて補間画素Psと補間画素Pmとが適応的に混合されるので、画質改善効果の低下を効果的に防ぐことができる。
<第4実施形態>
図20に示す第4実施形態の動き補償フレーム生成装置104において、第1実施形態の動き補償フレーム生成装置101、第2実施形態の動き補償フレーム生成装置102、第3実施形態の動き補償フレーム生成装置103と同一部分には同一符号を付し、その説明を適宜省略することとする。第4実施形態も、第3実施形態と同様、局所的に誤った動きベクトルMVを検出した場合の画質改善効果の低下を防ぐように構成したものである。
図20において、全体スクロール判定部13aは、図4のステップS3で求めた最大値動きベクトル(mvx_c_hmax,mvy_c_hmax)を全体スクロール動きベクトルSMVとして出力する。ベクトル判定部の第2の例であるベクトル一致度判定部19は、動きベクトルMVと全体スクロール動きベクトルSMVとがどの程度一致しているかを判定し、一致度判定信号DCMPを出力する。
図21を用いて、ベクトル一致度判定部19における動きベクトルMVと全体スクロール動きベクトルSMVとの一致度の判定方法について説明する。図21において、X_TH1〜X_TH4及びY_TH1〜Y_TH4は所定の閾値であり、X_TH1≦X_TH2≦X_TH3≦X_TH4、Y_TH1≦Y_TH2≦Y_TH3≦Y_TH4となっている。図21において、全体スクロール判定部13aより出力される水平成分SMVX及び垂直成分SMVYよりなる全体スクロール動きベクトルSMVを図21の中心に円にて示している。領域R4は、全体スクロール動きベクトルSMVの水平成分SMVXから±X_TH1、垂直成分SMVYから±Y_TH1の範囲の部分である。
領域R3は、全体スクロール動きベクトルSMVの水平成分SMVXから±X_TH2、垂直成分SMVYから±Y_TH2の範囲で、領域R4を除いた部分である。領域R2は、全体スクロール動きベクトルSMVの水平成分SMVXから±X_TH3、垂直成分SMVYから±Y_TH3の範囲で、領域R3及び領域R4を除いた部分である。領域R1は、全体スクロール動きベクトルSMVの水平成分SMVXから±X_TH4、垂直成分SMVYから±Y_TH4の範囲で、領域R2〜領域R4を除いた部分である。領域R0は、全体スクロール動きベクトルSMVの水平成分SMVXから±X_TH4を超え、垂直成分SMVYから±Y_TH4を超える領域R1よりも外側の部分である。
式で表せば、式(14)〜式(17)を全て満たすのが領域R4である。ベクトル一致度判定部19は、式(14)〜式(17)を全て満たす場合、動きベクトルMVと全体スクロール動きベクトルSMVとの一致度が最も高いと判定し、一致度判定信号DCMPを“4”とする。
(SMVX-X_TH1)≦MVX …(14)
MVX≦(SMVX+X_TH1) …(15)
(SMVY-Y_TH1)≦MVY …(16)
MVY≦(SMVY+Y_TH1) …(17)
式(14)〜式(17)のいずれかを満たさず、式(18)〜式(21)を全て満たすのが領域R3である。ベクトル一致度判定部19は、式(14)〜式(17)のいずれかを満たさず、式(18)〜式(21)を全て満たす場合、動きベクトルMVと全体スクロール動きベクトルSMVとの一致度は領域R4の次に高いと判定し、一致度判定信号DCMPを“3”とする。
(SMVX-X_TH2)≦MVX …(18)
MVX≦(SMVX+X_TH2) …(19)
(SMVY-Y_TH2)≦MVY …(20)
MVY≦(SMVY+Y_TH2) …(21)
式(18)〜式(21)のいずれかを満たさず、式(22)〜式(25)を全て満たすのが領域R2である。ベクトル一致度判定部19は、式(18)〜式(21)のいずれかを満たさず、式(22)〜式(25)を全て満たす場合、動きベクトルMVと全体スクロール動きベクトルSMVとの一致度は領域R3の次に高いと判定し、一致度判定信号DCMPを“2”とする。
(SMVX-X_TH3)≦MVX …(22)
MVX≦(SMVX+X_TH3) …(23)
(SMVY-Y_TH3)≦MVY …(24)
MVY≦(SMVY+Y_TH3) …(25)
式(22)〜式(25)のいずれかを満たさず、式(26)〜式(29)を全て満たすのが領域R1である。ベクトル一致度判定部19は、式(22)〜式(25)のいずれかを満たさず、式(26)〜式(29)を全て満たす場合、動きベクトルMVと全体スクロール動きベクトルSMVとの一致度は領域R2の次に高いと判定し、一致度判定信号DCMPを“1”とする。
(SMVX-X_TH4)≦MVX …(26)
MVX≦(SMVX+X_TH4) …(27)
(SMVY-Y_TH4)≦MVY …(28)
MVY≦(SMVY+Y_TH4) …(29)
式(26)〜式(29)のいずれかを満たさないのが領域R0である。ベクトル一致度判定部19は、式(26)〜式(29)のいずれかを満たさない場合、動きベクトルMVと全体スクロール動きベクトルSMVとの一致度は低いと判定し、一致度判定信号DCMPを“0”とする。
図21に示す例では、一致度判定信号DCMPを5段階としたが、これに限定されるものではない。閾値の数を増やして一致度判定信号DCMPの段階数を増やしてもよい。
信頼度混合部20には、信頼度生成部14より出力された信頼度データDR1と、信頼度調整部15より出力された調整信頼度データDR2と、ベクトル一致度判定部19より出力された一致度判定信号DCMPとが入力される。信頼度混合部20は、式(30)に基づいて、信頼度データDR1と調整信頼度データDR2とを混合して、混合信頼度データDR_MIXとして出力する。
DR_MIX=DR2×DCMP/4+DR1×(1-DCMP/4) …(30)
式(30)より分かるように、一致度判定信号DCMPが“4”であれば、混合信頼度データDR_MIXは調整信頼度データDR2となる。一致度判定信号DCMPが“3”であれば、混合信頼度データDR_MIXは、調整信頼度データDR2の比率を多くした状態で信頼度データDR1と調整信頼度データDR2とを混合した値となる。一致度判定信号DCMPが“2”であれば、混合信頼度データDR_MIXは、信頼度データDR1と調整信頼度データDR2とを均等に混合した値となる。一致度判定信号DCMPが“1”であれば、混合信頼度データDR_MIXは、信頼度データDR1の比率を多くした状態で信頼度データDR1と調整信頼度データDR2とを混合した値となる。一致度判定信号DCMPが“0”であれば、混合信頼度データDR_MIXは信頼度データDR1となる。
適応混合部163は、信頼度混合部20より出力された混合信頼度データDR_MIXの値に応じて補間画素Psと補間画素Pmとを適応的に混合する。これによって、全体スクロールする画像に対して局所的に誤った動きベクトルMVを検出した画素または領域では、調整信頼度データDR2ではなく信頼度データDR1に応じて補間画素Psと補間画素Pmとが適応的に混合されたり、局所的に誤った動きベクトルMVと全体スクロールベクトルSMVとの差分の程度によって信頼度データDR1と調整信頼度データDR2とを混合した混合信頼度データDR_MIXに応じて補間画素Psと補間画素Pmとが適応的に混合されたりする。よって、画質改善効果の低下を効果的に防ぐことができる。
ところで、第3実施形態の動き補償フレーム生成装置103では、ベクトル判定部の第1の例であるベクトル一致判定部17において、動きベクトルMVと全体スクロール動きベクトルSMVとの一致の程度を2段階で判定している。第4実施形態の動き補償フレーム生成装置104では、ベクトル判定部の第2の例であるベクトル一致度判定部19において、動きベクトルMVと全体スクロール動きベクトルSMVとの一致の程度を5段階で判定している。即ち、動き補償フレーム生成装置104は、動きベクトルMVと全体スクロール動きベクトルSMVとの一致の程度の判定を動き補償フレーム生成装置103における判定よりも増やしたということである。
また、動き補償フレーム生成装置103では、信頼度選択部18において、信頼度データDR1と調整信頼度データDR2とを選択的に出力する選択信頼度データDR_SELを生成している。動き補償フレーム生成装置104では、信頼度混合部20において、信頼度データDR1のみとする場合と、調整信頼度データDR2のみとする場合と、信頼度データDR1と調整信頼度データDR2との双方を用いる場合とを選択する混合信頼度データDR_MIXを生成している。即ち、動き補償フレーム生成装置104は、動き補償フレーム生成装置103のように信頼度データDR1と調整信頼度データDR2との一方のみを選択的に用いる状態に、信頼度データDR1と調整信頼度データDR2との双方を用いる状態を加えたということである。
本発明は以上説明した第1〜第4実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々変更可能である。本発明をハードウェアによって構成してもよいし、ソフトウェア(コンピュータプログラム)によって構成してもよい。ハードウェアとソフトウェアとを混在させてもよく、ハードウェアとソフトウェアとの使い分けは任意である。
第1〜第4実施形態では、フレームレートを2倍にする動き補償フレーム生成装置を例として説明しているがこれに限るものではない。本発明は、フレームレートを3倍,4倍等の2倍以外のフレームレートにアップコンバートする動き補償フレーム生成装置にも用いることができる。また、本発明はフィルムジャダ除去装置等にも用いることができる。