以下、図面を参照しながら、本発明の動画像変換装置、および動画像変換方法、並びにコンピュータ・プログラムの構成について説明する。なお、説明は、以下の項目に従って行なう。
(1)超解像効果を利用した動画像変換装置の基本構成
(2)高品質な復元画像を生成する動画像変換装置および動画像変換方法
[(1)超解像効果を利用した動画像変換装置の基本構成]
まず、本発明のベースとなる超解像効果を利用した動画像圧縮を実行する動画像変換装置の基本構成について説明する。なお、この基本構成は、本出願人が先に出願した特願2003−412501号に詳細を記載しているものであり、画像を小領域(ブロック)に分割し、各領域の移動速度に応じて画素数の間引きや、フレームレートの間引きを適応的に行うことでデータ量の圧縮を実現した構成である。
図1に特願2003−412501号に記載した動画像変換装置10の構成例を示す。この動画像変換装置10は、超解像効果を利用した動画像変換処理を行うことにより、データ量の削減による画質劣化を観測者が知覚しないようにデータ量の削減を行うことができる構成としたものである。
なお、超解像効果とは、観測者が、空間方向に離散的にサンプリングされた移動被写体を追従視する際に、表示画素数以上の解像度を知覚するという視覚的効果である。これは、人間は、ある時間内に呈示された複数の画像が加算されたものを知覚するという視覚特性を持つためである。この特性は、ブロックの法則として知られる視覚の時間的積分機能に起因しており、例えば、"視覚情報ハンドブック,日本視覚学会編,pp.219−220"などに記載されている。ブロックの法則が成り立つ積分時間は、背景光の強度などの呈示条件によって変化するが、およそ25ms乃至100msであるという報告がある。
図1に示す動画像変換装置10は、時間的積分機能によって引き起こされる超解像効果を利用した動画像変換処理を行うことにより、画質劣化を観測者が知覚しないようにデータを削減する圧縮を行う構成としたものである。図1の動画像変換装置10の構成について説明する。
ブロック分割部11は、入力された動画像の各フレームを、所定画素の区分領域としてのブロックに分割し移動量検出部12に供給する。移動量検出部12は、ブロック分割部11から供給された各ブロックについての移動量を検出し、ブロックとその移動量を、ブロック処理部13に送信する。ブロック処理部13は、移動量検出部12から供給されたブロックに対して、その移動量に応じた動画像変換処理、すなわち圧縮処理を施し、データ量を削減する。ブロック処理部13は、その処理の結果得られた、データ量が削減されたブロックについてのデータを、出力部14に供給する。出力部14は、ブロック処理部13から供給された、データ量が削減されたブロックについてのデータを、ストリームデータとしてまとめて出力する。
次に、図2を参照して、各部の詳細について説明する。ブロック分割部11の画像蓄積部21には、動画像変換装置10に供給された動画像のフレームが入力される。画像蓄積部21は、入力されたフレームを蓄積する。画像蓄積部21は、蓄積したフレームの数がN枚(Nは正の整数)になる度に、そのN枚のフレームを、ブロック分割部22に供給するとともに、N枚のフレームの中のM番目に記憶したフレーム(以下、M番目のフレームと称する)を、移動量検出部12(移動量検出部31)に供給する。例えば、N=4とする。
ブロック分割部22は、画像蓄積部21から供給されたN枚のフレーム(連続するN枚のフレーム)のそれぞれを、ある大きさ(例えば8×8、16×16)のブロックに分割し、移動量検出部12(ブロック分配部32)に出力する。ブロック分割部22はまた、N枚のフレームの中の、画像蓄積部21でP番目に記憶されたフレーム(以下、P番目のフレームと称する)の各ブロックを移動量検出部12(移動量検出部31)に供給する。P番目のフレームは、M番目のフレームと異なるフレームである。
次に、移動量検出部12について説明する。移動量検出部12の移動量検出部31は、ブロック分割部11のブロック分割部22から供給されたP番目のフレームの各ブロックの動きベクトルを、画像蓄積部21から供給されたM番目のフレームを参照して例えばフレーム間のブロックマッチング処理を実行して検出し、検出した動きベクトルをブロック分配部32に供給する。動きベクトルは、フレーム間の水平方向(X軸方向)および垂直方向(Y軸方向)の移動量を表している。なお、移動量検出部31は、移動量検出の精度を向上させるために画像を拡大し、拡大画像を適用した移動量検出を行なう構成としてもよい。
移動量検出部12のブロック分配部32には、ブロック分割部22から、N個単位でブロック(N枚のフレームのそれぞれの同一位置にある合計N個のブロック)が供給され、移動量検出部31から、そのN個のブロックの中のP番目のフレームのブロックの移動量が供給される。ブロック分配部32は、供給されたN個のブロックと移動量を、ブロック処理部13の、その移動量に対応する処理を行うブロック処理部51乃至53の中のいずかに供給する。
具体的にはブロック分配部32は、移動量検出部31から供給された、1フレーム間の水平方向(X軸方向)または垂直方向(Y軸方向)の移動量が2ピクセル(画素)以上である場合、ブロック分割部22から供給されたN個のブロックと移動量検出部31から供給された移動量を、ブロック処理部51に出力する。また、1フレーム間の水平方向と垂直方向の移動量がともに2ピクセル未満で、かつ1ピクセル以上の場合、ブロック分配部32は、N個のブロックと移動量を、ブロック処理部53に出力する。移動量がそのほかの場合には、ブロック分配部32は、N個のブロックと移動量をブロック処理部52に供給する。
すなわちブロック分配部32は、移動量検出部21から供給された移動量に基づき、最適なフレームレートおよび空間解像度を決定し、そのフレームレートおよび空間解像度にしたがって画像データを変換する処理を行うブロック処理部51〜53に、ブロック画像を分配する。
次に、ブロック処理部13の詳細を説明する。ブロック処理部13は、上述したように3個のブロック処理部51乃至53で構成されている。ブロック処理部51は、移動量検出部12のブロック分配部32から供給された、連続するN(例えばN=4)枚のフレームのそれぞれの同一位置にある合計N個のブロック(水平方向または垂直方向の移動量が2ピクセル以上である場合のN個のブロック)に対して、画素数を、同様にブロック分配部32から供給された移動量に応じて間引く処理(空間方向間引き処理)を行う。
具体的には、1フレーム間の水平方向の移動量が2ピクセル(画素)以上である場合、ブロック処理部51は、処理対象のブロックが図3(a)に示すように4×4ピクセルで構成されているとき、水平方向の4画素のうち1つの画素値のみを選択して代表値とする。図3(b)の例では、P00乃至P30の4画素のうちP10のみを代表値(標本点)として有効にする。その他の画素値は無効とする。同様に、P01乃至P31の4画素に対してはP11を代表値(標本点)とし、P02乃至P32の4画素に対してはP12を代表値(標本点)とし、P03乃至P33の4画素に対してはP13を代表値(標本点)とする。
1フレーム間の垂直方向の移動量が2ピクセル以上である場合、ブロック処理部51は、ブロックが図3(a)に示すように4×4ピクセルで構成されているとき、垂直方向の4画素のうち1つの画素値を標本点として有効とする。図3(c)の例では、P00乃至P03の4画素のうちP01のみを標本点として有効にする。その他の画素値は無効とする。同様に、P10乃至P13の4画素に対してはP11を標本点とし、P20乃至P23の4画素に対してはP21を標本点とし、P30乃至P33の4画素に対してはP31を標本点とする。
ブロック処理部51は、このような空間方向間引き処理を、供給された連続するN(例えばN=4)枚のフレームのそれぞれの同一位置にある合計N=4個のブロックに対してそれぞれ施すので、各ブロックのデータ量が1/4に削減され、4個のブロック全体のデータ量が1/4に削減される。ブロック処理部51は、データ量が1/4に削減された4個のブロックについてのデータを、出力部14に供給する。
次に、図2に示すブロック処理部52の実行する処理について説明する。図2に示すブロック処理部52は、移動量検出部12のブロック分配部32から供給された連続するN枚のフレームのそれぞれの同一位置ある合計Nブロック(水平方向と垂直方向の移動量がともに1ピクセル未満である場合のN個のブロック)に対して、フレーム数を間引く処理(時間方向間引き処理)を行う。
具体的にはブロック処理部52は、図4に示すように、連続する4枚のフレームF1乃至F4のそれぞれの同一位置ある4個のブロックBiを、その中の1つのブロック(この例の場合、フレームF1のブロックBi)にするフレーム数の間引き(4フレーム間のフレーム数の間引き)を行う。ブロック処理部52は、このような時間方向間引き処理により、データ量が1/4に削減された4個のブロックについてのデータ(1個のブロック)を、出力部14に供給する。選択された1つのブロックの画素データが4フレームに対応する標本点データとなる。
ブロック処理部53は、移動量検出部12のブロック分配部32から供給された、連続するN枚のフレームのそれぞれの同一位置にある合計N個のブロック(水平方向と垂直方向の移動量が1ピクセル以上で、2ピクセル未満である場合のN個のブロック)に対して、画素数の間引き処理(空間方向間引き処理)とフレーム数の間引き処理(時間方向間引き処理)をそれぞれ行う。
ブロック処理部53は、ブロック処理部51における間引き処理とは異なり、図5に示すように、1フレーム間の水平方向の移動量が1ピクセル以上で、2ピクセル未満である場合、ブロック処理部53は、処理対象のブロックが図5(a)に示すように4×4ピクセルで構成されているとき、水平方向の4画素のうち2つの画素値のみを選択して代表値とする。図5(b)の例では、P00乃至P30の4画素のうちP00とP20のみを代表値(標本点)として有効にする。その他の画素値は無効とする。同様に、P01乃至P31の4画素に対してはP01とP21のみを代表値(標本点)とし、P02乃至P32の4画素に対してはP02とP22のみ代表値(標本点)とし、P03乃至P33の4画素に対してはP03とP23のみ代表値(標本点)とする。
1フレーム間の垂直方向の移動量が1ピクセル以上で、2ピクセル未満である場合、ブロック処理部53は、処理対象ブロックが図5(a)に示すように4×4ピクセルで構成されているとき、垂直方向の4画素のうち2つの画素値を有効とする。図5(c)の例では、P00乃至P03の4画素のうちP00およびP02を代表値(標本点)として有効にする。その他の画素値は無効とする。同様に、P10乃至P13の4画素に対してはP10およびP12を代表値(標本点)とし、P20乃至P23の4画素に対してはP20およびP22を代表値(標本点)とし、P30乃至P33の4画素に対してはP30およびP32を代表値(標本点)とする。
さらにブロック処理部53は、フレーム数の間引き処理を行う。具体的にはブロック処理部53は、連続する4枚のフレームF1乃至F4のそれぞれの同一位置ある4個のブロックに対して、その中の2つのブロックを有効にするフレーム数の間引き処理を実行する。フレーム数の間引き処理においては、ブロック処理部53は、ブロック処理部52における間引き処理と異なり、図6に示すように、連続する4枚のフレームF1乃至F4のぞれぞれの同一位置にある合計4個のブロックBiを、その中のいずれか2つ(図の例では、フレームF1、F3の2個のブロック)にするフレーム数の間引きを行う(2フレーム間のフレーム数の間引き)を行う。選択された2つのブロックの画素データが4フレームに対応する標本点データとなる。この場合、図5を参照して説明した空間方向の間引きにおいて、すでに1ブロックに8つの標本点選択が実行済みであり、2ブロックから総計16の標本点が選択され、これらが4フレームに対応する標本点データとして設定されることになる。
ブロック処理部53は、図5を参照して説明したデータ量を1/2とする空間方向間引き処理と、図6を参照して説明したデータ量を1/2とする時間方向間引き処理を、供給された4個のブロックに対して施すので、結果として4個のブロックのデータ量が(1/2)×(1/2)=1/4に削減される。ブロック処理部53は、データ量が1/4に削減された4個のブロックについてのデータを、出力部14に供給する。
出力部14は、ブロック処理部13のブロック処理部51乃至53のそれぞれから供給された、データ量が削減されたN個のブロックについてのデータからストリームデータを生成する。
図7を参照して、動画像変換装置10における具体的な処理例について説明する。図7は、動画像変換装置10において処理された連続する5枚のフレームF1乃至F5を示し、各フレームから選択された有効データの配置を表している。動画像変換装置10において選択された有効データが図7に示す空白以外の画素部分であり、空白部は、動画像変換装置10において選択されなかった無効画素部を示している。
各フレームF1〜F5は時系列に沿った同一位置のフレームであり、それぞれ4×4ピクセルのブロック101〜116を持つ。
ブロック101〜116中、ブロック101および102は、ブロック処理部51により水平方向に空間方向間引き処理が施されるブロックである。ブロック111および112は、ブロック処理部51により垂直方向に空間方向間引き処理が施されるブロックである。ブロック103および104は、ブロック処理部53により水平方向に空間方向間引き処理、および時間方向間引き処理が施されるブロックである。ブロック113および114は、ブロック処理部53により垂直方向に空間方向間引き処理、および時間方向間引き処理が施されるブロックである。ブロック105,106,115,116は、ブロック処理部52により時間方向間引き処理が施されるブロックである。
最初のフレームF1では、ブロック101および102は、ブロック処理部51によって水平方向に1/4に間引き処理されて、有効データはそれぞれ4画素となる。ブロック111および112は、ブロック処理部51によって垂直方向に1/4に間引き処理されて、有効データはそれぞれ4画素となる。ブロック103および104は、ブロック処理部53によって水平方向に1/2に間引き処理されて、有効データはそれぞれ8画素となる。ブロック113および114は、ブロック処理部53によって垂直方向に1/2に間引き処理されて、有効データはそれぞれ8画素となる。ブロック105,106,115,116は、ブロック処理部52によって時間方向間引き処理されるが、最初のフレームでは全画素が有効データとなる。
第2フレームF2では、ブロック101および102、並びにブロック111および112は、フレームF1と同様の処理により、それぞれ4画素が有効データとなる。ブロック103および104、並びにブロック113および114は、ブロック処理部53によって時間方向間引き処理されて、全画素が無効となる。ブロック105,106,115,116は、ブロック処理部52によって時間方向間引き処理されて、全画素が無効となる。
第3フレームF3では、ブロック101および102、並びにブロック111および112は、フレームF1と同様の処理により、それぞれ4画素が有効データとなる。ブロック103および104、並びにブロック113および114は、有効なフレームとなり、フレームF1と同様の処理により、それぞれ8画素が有効データとなる。ブロック105,106,115,116は、ブロック処理部52によって時間方向間引き処理されて、全画素が無効となる。
第4フレームF4では、ブロック101および102、並びにブロック111および112は、フレームF1と同様の処理により、それぞれ4画素が有効データとなる。ブロック103および104、並びにブロック113および114は、ブロック処理部53によって時間方向間引き処理されて、全画素が無効となる。ブロック105,106,115,116は、ブロック処理部52によって時間方向間引き処理されて、全画素が無効となる。
ここではN=4としているため、第5フレームF5は、第1フレームF1と同様のデータ配置となる。このようにして、各ブロックのデータは移動速度情報に応じて最適な間引き処理が施され、最終的には1/4のデータ量削減が実現される。
このように、図1に示す動画像変換装置10は、入力された動画像を、そのデータ量が削減された動画像(圧縮データ)に変換する処理を行なうものであるが、その際、所定の視覚特性に基づいて実現される超解像効果を利用した動画像変換処理を行うことにより、データ量の削減による画質劣化を観測者に知覚させないようにした装置である。
具体的には、ブロック分配部32が、移動量検出部21から供給された移動量に基づき、最適なフレームレートおよび空間解像度を決定し、最適なフレームレートおよび空間解像度にしたがった画像データ変換を実行するブロック処理部51〜53に供給して、各ブロック処理部51〜53において異なる態様のデータ変換処理を実行する構成としたものであり、本構成により、画質劣化を観測者に知覚させることのない動画像変換処理を実現している。なお、超解像効果とは、前述したように観測者が、空間方向に離散的にサンプリングされた移動被写体を追従視する際に、表示画素数以上の解像度を知覚するという視覚的効果である。これは、人間の視覚における時間的積分機能に起因しており、図1に示す動画像変換装置10は、時間的積分機能によって引き起こされる超解像効果を利用した動画像変換処理を行う構成を有する。
なお、人間の視覚特性および超解像効果に関する原理や説明等は、特願2003−412501において詳しく解説がなされている。特願2003−412501に説明されている超解像効果の発生条件の概略について、以下に説明する。
間引き量m(ピクセル)の画素数間引きを行った場合に超解像効果が発生するには、間引きによる1次乃至m−1次の折り返し成分が全て打ち消される必要がある。k(=1、2、・・・、m−1)次の折り返し成分が打ち消される条件は、下記式(式1)、(式2)を満足することである。
上記式において、φ
tは画素数の間引きにおけるサンプリング位置のずれ量であり、時間t(=0、1T、2T、・・・)、信号の移動速度v、時間間隔(フレームレートの逆数)T、を用いて、下記式(式3)によって定義される値である。
間引き量m、小領域の移動量vという条件下で上記式(式1)および(式2)が満たされれば超解像効果が発生し、画質の劣化は観測者に知覚されにくい。
これは、入力動画像のフレームレートと同じフレームレートにおいて表示を行う場合、空間方向に間引きされたブロックは、人間の視覚の時間積分機能により前後のフレーム画像との足し合わせが行われ、結果として元画像と同等の画像を知覚するためである。
しかしながら、入力動画像のフレームレートよりも低いフレームレートで表示する(スローモーション表示)、または、同じフレームを一定時間表示しつづける(一時停止)場合には、前後フレーム画像との足し合わせが成立しなくなり、データ量削減によるジャギー(空間周波数の折り返し)が見えてしまうという問題があった。
これを解決するために、空間間引き処理された圧縮画像を線形または非線形なフィルタによって補間処理する方法が考えられる。しかしながら、この方法では元の動画像に含まれる高周波成分を復元することが出来ず、ボケた画像(空間周波数の劣化)になってしまうという問題がある。以下、この問題を解決し入力動画像のフレームレートよりも低いフレームレートで表示する(スローモーション表示)場合にも、元の動画像と同等の動画像表示を可能にする構成について説明する。
[(2)高品質な復元画像を生成する動画像変換装置および動画像変換方法]
上述したように、空間間引き処理された圧縮画像の復元においては画質劣化が目立ってしまう場合がある。特に、入力動画像のフレームレートよりも低いフレームレートで表示するスローモーション表示において、データ量削減によるジャギー(空間周波数の折り返し)が見えてしまうという問題が存在する。以下では、この問題を解決する構成について説明する。
まず、空間方向間引き処理により情報が欠落した動画像から原画像を復元する原理について説明する。図8は、右方向に移動する被写体(車)を撮影した原画像I1乃至I4に対して、水平方向に1/4の空間間引き処理を行った結果画像S1乃至S4を示している。フレームF1において、原画像I1は、右方向に移動する被写体を撮影した画像である。
被写体(車)の移動速度が、図2に示す動画像変換装置のブロック分配部32において、ブロック処理部51(空間方向間引き処理)に分配される条件、すなわちフレームあたりの移動量があらかじめ定めた条件に合致している場合、ブロック処理部51において空間方向間引き処理が実行される。この結果、原画像I1は、図8の矢印で示すサンプリング点において水平方向に1/4に間引きされる。ここで、間引き処理におけるサンプリング点(図3の代表画素(標本点)に相当する)の位置は、フレームに対して固定である。間引き処理された画像S1は、原画像I1に対して1/4のデータ量になっている。
フレームF2において、原画像I2は、原画像I1に対して被写体が移動速度v(ピクセル/フレーム)だけ右に移動している。この状態で、フレームF1と同様に間引き処理を行い、間引き画像S2を得る。このとき、サンプリング点(標本点)の位置はフレームF1と同じであるため、間引き画像S2は、間引き画像S1と異なる画像となる。
同様に、フレームF3、フレームF4において、原画像I3,I4に対して間引き処理を行い、間引き画像S3,S4を得る。この例では、v=1(ピクセル/フレーム)であり、通常表示時に1/4間引き処理において超解像効果が得られるものとする。
間引き画像S1乃至S4は、同じ位置のサンプリング点(標本点)で間引き処理された画像であるが、被写体の移動速度vが間引き量(本実施例では4)の整数倍になっていなければ、それぞれ異なる位置でサンプリングされた画像となっている。したがって、各間引き画像S1乃至S4は、原画像に対して情報が欠落しており、それぞれが異なる情報を持つ。これらの複数の画像を、移動速度情報に基づき位置を合わせながら足し合わせることにより原画像の復元が可能である。
図9は、各フレームに対応する間引き画像S1乃至S4を、移動速度vに従って移動させた画像を示している。この例ではv=1(右方向)であるため、間引き画像S1に対して、間引き画像S2は被写体が右に1画素、間引き画像S3は被写体が右に2画素、間引き画像S4は被写体が右に3画素、それぞれずれている。これを位置合わせするために、間引き画像S2を左に1画素、間引き画像S3を左に2画素、間引き画像S4を左に3画素、それぞれ移動する(図9)。この結果、各間引き画像S1乃至S4の被写体位置は一致し、サンプリング位置が異なるようになる。これらの画像を足し合わせると、復元画像R1が得られる。
この例では、移動速度v=1であり、水平方向に1/4の空間間引き処理を行っているので、4フレームの画像の足し合わせによって原画像を完全に復元することが可能である。このとき、原画像が完全に復元されるためには、以下の条件が成立する必要がある。
(条件1)被写体の形状、色が、積分されるフレームにわたって変化しない。
(条件2)被写体の移動速度がわかっている。
さらに、上記条件1,2に加え、条件3として、移動速度vと間引き量、および積分フレーム数の関係によって、間引き処理によって生じる空間周波数の折り返しが積分処理によって完全に相殺される条件を満足することが必要である。すなわち、前述の超解像効果の発生要件を満足することが必要である。間引き量m(ピクセル)の画素数間引きを行った場合に超解像効果が発生するには、間引きによる1次乃至m−1次の折り返し成分が全て打ち消される必要があるということである。k(=1、2、・・・、m−1)次の折り返し成分が打ち消される条件は、上述した式(式1)、(式2)を満足することが必要となる。
実際には、入力動画像において上述の各条件を満たすことは非常に難しい。特に、折り返し成分が完全に相殺される条件を導くためには連立方程式を解かなければならない。仮に、折り返し成分が相殺される条件が求まったとしても、実装上、積分可能なフレーム数は制限される。
本発明による画像変換装置では、上記条件を満足するか否かに関わらず高品質なデータ復元を可能とするものであり、現実的な回路規模を適用した画像復元を行い、復元出来ない部分については補間処理を行うことにより破綻の無い画像生成を実現する。
以下、本発明における動画像変換装置、すなわち、画素の間引き処理がなされた圧縮画像データの復元を行う装置であり、例えば入力動画像のフレームレートよりも低いフレームレートで表示するスローモーション表示においても、データ量削減によるジャギー(空間周波数の折り返し)の発生を低減し、高品質な動画像の復元を可能とする装置について説明する。図10は、本実施例における動画像変換装置120の構成を示している。
動画像変換装置120の入力部121は、例えば図1の動画像変換装置10によって生成される圧縮データを含むデータストリームを入力する。入力部121は、入力したデータストリームに含まれる圧縮データとしてのブロック対応の変換画像データを加算処理部122−1乃至122−nに出力する。この圧縮データは、空間方向あるいは時間方向間引きにより選択された標本点データを含む圧縮データである。また、データストリームに含まれるブロックの属性データ(間引き処理方法、間引き方向など)と動きベクトルデータをアドレス変換部126に出力する。なお、動画像変換装置10によって生成されるデータストリームに動きベクトルデータが存在しない場合には、入力部121またはアドレス変換部126において、データストリームに含まれる画像データを用いて動きベクトル検出を行い、検出した動きベクトルを用いた処理を実行する。アドレス変換部126において動きベクトル検出を行う場合、アドレス変換部126には圧縮画像データが入力され、圧縮画像データに基づく動きベクトル検出が実行される。
加算処理部122−1乃至122−nは、入力部121から与えられる複数のブロック対応の圧縮データを含む現在フレームの画像データを受け取り、さらに、先行する処理においてフレームバッファ1〜n(123−1乃至123−n)に格納済みのデータを読み取り、現在フレームの画像データの画素値とバッファ読み取り値との加算平均処理を行う。フレームバッファ1〜n(123−1乃至123−n)に格納済みのデータとは、先行フレームにおける標本点の画素値、または複数フレームにおける標本点の画素値の加算平均値である。これらの処理の詳細については後述する。
フレームバッファ1〜n(123−1乃至123−n)は、過去フレームにおける画像データを、位置合わせをして一時記憶するメモリであり、原画像(間引き処理前の画像)の縦横それぞれ2倍の大きさの画素数を有する。フレームバッファ数nは、画像復元に使われるフレームの数に対応する。nが小さいと復元できない領域が多くなり、nが大きくなると復元出来ない領域が減るが、被写体の移動速度の変化や形態の変化による誤差が大きくなるという問題がある。例えばn=8とする。
アドレス変換部126は、入力部121から与えられるブロックの属性データ(間引き処理方法、間引き方向など)と動きベクトルデータを受け取り、ブロック毎にフレームバッファ123−1乃至123−nに対するアドレスを求める。
選択部127は、フレームバッファFB1〜n(123−1〜n)の出力のうち、いずれかの1つのバッファ出力を選択し、補間部124へ出力する。このとき選択するフレームバッファは、復元処理フレームに対応して選択されるフレームバッファである。
第1フレーム(F1)の復元処理時には、選択部127はフレームバッファFB1(123−1)を出力として選択する。このとき、フレームバッファFB2(123−2)乃至FBn(123−n)は、+1フレーム(第2フレーム)乃至+(n−1)フレームに対応する。
続く第2フレーム(F2)の復元処理時には、選択部127はフレームバッファFB2(123−2)を出力するように切り替えられる。このとき、フレームバッファFB3(123−3)乃至FBn(123−n)が順次シフトして+1フレーム乃至(第3フレーム)+(n−2)フレームに対応するようになる。フレームバッファFB1(123−1)は+(n−1)フレームに対応するように設定される。
同様にして、選択部127は、第3フレーム(F3)の復元処理時には、フレームバッファFB3を出力するように切り替え、第4フレーム(F4)ではフレームバッファFB4、第5フレーム(F5)ではフレームバッファFB5を、それぞれ出力するように切り替える。
このように、選択部127は、補間部124に対して、フレームバッファFB1〜n(123−1〜n)を循環的に切り替えて出力する。
補間部124に出力され復元されるフレームと、その時のフレームバッファFB1〜n(123−1〜n)に格納されるフレームデータの対応を表1に示す。
上記の表1において、例えば処理フレームが第1フレーム(F1)である場合、現フレーム、すなわち、補間部124に出力されるデータは、フレームバッファFB1(123−1)のデータであり、このとき、フレームバッファFB2(123−2)〜フレームバッファFBn(123−n)には第2〜第n−1フレームの各データが格納されていることを示している。処理フレームが第2フレーム(F2)である場合、現フレーム、すなわち、補間部124に出力されるデータは、フレームバッファFB2(123−2)のデータであり、このとき、フレームバッファFB3(123−3)〜フレームバッファFB1(123−1)には第3フレーム以降の各データが格納されていることを示している。
このように、選択部127は、補間部124に対して、フレームバッファFB1〜n(123−1〜n)を循環的に切り替えて出力し、補間部124では各フレームの補間処理を実行し、フレームデータの復元を実行する。
なお、本例では、選択部127を設け、選択部において、フレームバッファFB1〜n(123−1〜n)を循環的に切り替えて補間部124に出力する構成としたが、フレームバッファFB1〜n(123−1〜n)の格納データを循環的にシフトする構成とし、特定のフレームバッファのみを出力バッファとして位置づける構成としてもよい。
補間部124は、選択部127で選択されたフレームバッファに書き込まれているデータに基づいて複数の異なるフレームの標本点データに基づく復元ブロックを生成する。さらに、標本点データのみでは復元できなかった画素部分(画素抜け)を周囲の画素から補間する。補間方法については後述する。補間部124は、さらにフレームバッファに格納された原画像に対して縦横それぞれ2倍の画像データを縮小処理により原画像と同じ画素数に変換して出力する。
出力部125は、補間部124から出力される画像データを表示装置で受け取れる画像信号形式に変換して出力する。なお、さらに、図示しない制御部が存在し、制御部は、例えば処理シーケンスを記録したコンピュータ・プログラムに従って各部の制御を行う。
本実施例における動画像変換装置120の動作について、図11のフローチャートと、具体処理例を示す図12以下の各図を用いて詳細に説明する。
ステップS1において、動画像変換装置120は、フレームバッファ1〜n(123−1乃至123−n)をリセット、すなわち初期化する。これと同時に、選択部127を初期化して、出力フレームとしてのフレームバッファをFB1(123−1)に設定する。
ステップS2において、制御部は、フレーム画像の処理対象ブロックを表すブロック番号をゼロに初期化する。なお、ブロック番号は、1つのフレームを構成するブロックに対して設定された0,1,2・・のシーケンス番号である。
ステップS3において、入力部121は、処理フレームの1つのブロック対応の変換画像データを加算処理部122−1乃至122−nに出力する。また、ブロックの属性データ(間引き処理方法、間引き方向など)と動きベクトルデータをアドレス変換部126に出力する。
ステップS4において、アドレス変換部126は、ブロック対応の属性データと動きベクトルデータを受け取り、当ブロックに対して実行された間引き処理態様情報を含む属性データと、ブロックのフレームあたりの移動量および移動方向情報を持つ動きベクトルデータとに基づいて、フレームバッファ1〜n(123−1乃至123−n)に対するアドレスを求める。
アドレス変換部126が求めるアドレスは、処理対象ブロックの有効画素の画素値の各フレームバッファ1〜n(123−1乃至123−n)における書き込み先を示すアドレスであり、処理対象ブロックの有効画素の画素位置の、現在フレームにおける位置、および(n−1)枚の未来フレームにおける処理対象ブロックの有効画素の画素位置に対応する。
ブロックは、フレームが1つ進行する毎に、動きベクトルvに対応する移動を行なうと仮定し、アドレス変換部126は、各バッファに対する処理対象ブロックの有効画素の画素位置の書き込みアドレスを、動きベクトルvに相当する画素だけ順次移動させた位置として算出する。
例えば、動きベクトルvは1フレームあたりの動き画素数を示す。すなわち(ピクセル/フレーム)の単位を有する。アドレス変換部126は、処理対象フレームに対応して設定されている現フレーム(初期的にはフレームバッファ1(123−1))に対する処理対象ブロックの有効画素の画素値の書き込み先アドレスとして、現在位置に相当するフレームバッファ1(123−1)の位置を算出する。
さらに、1フレーム進行したフレームデータを書き込むフレームバッファ(初期的にはフレームバッファ2(123−2))の書き込みアドレスとして、現フレーム(初期的にはフレームバッファ1(123−1))に対する書き込みアドレスに動きベクトルvを加算したアドレスを算出する。さらに、2フレーム進行したフレームデータを書き込むフレームバッファ(初期的にはフレームバッファ3(123−3))の書き込みアドレスを、フレームバッファ2(123−2)に対するアドレスに、さらに動きベクトルvを加算して算出する。以下、同様のアドレス算出を行い、すべてのフレームバッファ1〜n(123−1乃至123−n)に対するアドレスを求める。具体的な処理例については後述する。
ステップS5において、加算処理部122−1乃至122−nは、アドレス変換部126によって算出された各フレームバッファ1〜n(123−1乃至123−n)対応のアドレスに基づいて、各バッファをアクセスし、フレームバッファ123−1乃至123−nのアドレス指定位置に書き込まれた値を読み取る。ステップS6において、フレームバッファ123−1乃至123−nから読み取った画素値と、入力部121から与えられる有効画素値との間で画素値の加算平均処理を行う。フレームバッファ123−1乃至123−nのアドレス指定位置に書き込まれた値は、すでに処理済のフレームの処理時に書き込まれた過去フレームの対応ブロックに設定された有効画素値データまたはその加算平均値である。なお、アドレス変換部126から与えられるアドレスに書き込まれたデータがバッファに存在しない場合は、ステップS5,S6の処理は省略してもよい。
ステップS7において、制御部の制御の下に、加算処理部122−1乃至122−nで加算平均処理された画素値を、フレームバッファ123−1乃至123−nのアドレス変換部126から与えられるアドレスによってアクセスされる位置に書き込む処理を実行する。なお、アドレス変換部126から与えられるアドレスに書き込み済みのデータが存在しない場合は、入力部121から与えられる有効画素値データのみの書き込みが実行され、アドレス変換部126から与えられるアドレスに書き込み済みのデータが存在する場合は、その値と、入力部121から与えられる有効画素値との間で算出した加算平均値の書き込みが実行される。
ステップS8において、処理対象のブロックが現在フレーム画像の最終ブロックであるかどうかが判断され、最終ブロックで無い場合にはステップS9に進む。
ステップS9では、ブロック番号を1インクリメントして、ステップS3のデータ入力に進む。
ステップS3からステップS8までの処理が繰り返し実行され、ステップS8において当該ブロックが最終ブロックであると判断された場合にはステップS10に進む。
ステップS10において、選択部127を介して補間部124に復元対象フレームの復元に適用されるフレームバッファの格納データが出力され、補間部124においては、フレームバッファの格納データに含まれるブロック構成データ中の欠落画素値を、周囲の画素値に基づいて補間する処理を実行する。さらに、補間部124は、フレームバッファは原画像に対して縦横2倍の画素を持つため、縮小処理により原画像と同じ画素数の画像を生成する。
ステップS11では、出力部125が、補間部124の処理によって補間、縮小されたフレーム画像データを所定の出力画像信号形式に変換して出力する。
ステップS12において、現在のフレームが最終フレームであるかどうかが判断される。最終フレームで無い場合には、ステップS13に進む。ステップS13では、選択部127を制御して出力するフレームバッファを切り替え、ステップS14では、前フレーム時点で選択部127において選択されていたフレームバッファをゼロに初期化する。
例えば、表1を参照して説明すると、処理フレームがフレームF1からフレームF2に切り替わる際、ステップS13では、選択部127において、補間部124に出力するフレームバッファ(現フレーム)をフレームバッファFB2(123−2)に切り替える処理を行い、ステップS14では、前フレーム時点で選択部127において選択されていたフレームバッファ、すなわち、フレームバッファFB1(123−1)をリセットして初期化する。フレームバッファFB1(123−1)にはフレームF2の処理開始時には書き込みデータが存在しない状態にリセットされる。
ステップS12に戻って、現在のフレームが最終フレームであった場合には、処理を終了する。
ここで、アドレス変換部126の動作と、フレームバッファ書き込み処理について、図12乃至図27を用いて詳細に説明する。なお、以下に説明する例では、理解を容易にするため水平方向のみの動きベクトルに対応する処理例として説明するが、実際の動画像の処理においては、垂直方向の動きベクトルに対しても以下に説明する処理と同様の処理が可能である。また、水平方向と垂直方向の両方の動きベクトルを適用して2次元処理を実行することで、2次元方向のあらゆる動きベクトルに対応した処理が可能である。
まず、図12乃至図16を参照して、動きベクトルv0が右方向に2.5(pixel/frame)であるブロックデータを、図10に示す画像変換装置120において復元する処理例を説明する。図12乃至図16は、復元処理時にフレームバッファFB1(123−1)〜フレームバッファFBn(123−n)に格納されるデータの遷移を説明している図である。
図12乃至図16は、復元対象のブロックが水平方向に空間方向間引き処理を施されたブロック(図7のブロック101,102に相当)であるときの処理例である。ここで、各フレームバッファは表1に示したように対応付けられているとする。
図12乃至図16において、各図(a)に示すデータが入力部121から与えられる各フレームの2つの隣り合うブロック、第1ブロック=(x0,y0)〜(x3,y3)、第2ブロック=(x4,y0)〜(x7,y7)の標本点データからなる圧縮画像データであり、
図12=第1フレーム、
図13=第2フレーム、
図14=第3フレーム、
図15=第4フレーム、
図16=第5フレーム、
を示している。
それぞれは、空間方向間引き処理を施されており、図7のブロック101,102と同様、4×4画素のブロックのうち、水平方向に画素数が1/4にされた圧縮データとして設定されている。各フレームにおいて、第1ブロックでは、有効画素(標本点)が(x1,y0)、(x1,y1)、(x1,y2)、(x1,y3)、第2ブロックでは、有効画素が(x5,y0)、(x5,y1)、(x5,y2)、(x5,y3)とされている。
図12は、ステップS1においてフレームバッファが初期化された後の最初のフレーム(第1フレームと呼ぶ)における処理を示している。図12(a)は、入力部121から与えられる第1フレームの2つの隣り合うブロックの標本点データからなる圧縮画像データを表しており、これらのブロックが空間方向間引き処理を施されている場合には、図7のブロック101,102と同様、4×4画素のブロックのうち、水平方向に画素数が1/4になっており、1ブロック16画素中、それぞれ4画素のみが有効となっている。
図12(b)は、現在フレーム(第1フレーム)に対するフレームバッファのデータを示している。本発明による動画像変換装置では、動きベクトルデータを基にして、フレーム毎に位置合わせを行い、フレームバッファに有効画素値を書き込んでいく。ここで、フレームバッファは、前述のように原画像に対して縦横2倍の画素数を持っている。現在フレームにおいては、ブロック位置は入力画像の位置と同じであるため、入力画像データの有効画素アドレスを縦横共に2倍にしたアドレスに画素値を書き込む。
すなわち、図12(a)に示す入力画像データの有効画素アドレスは、(x1,y0)、(x1,y1)、(x1,y2)、(x1,y3)、および(x5,y0)、(x5,y1)、(x5,y2)、(x5,y3)であるので、これらのアドレスを2倍して、(2×x1,2×y0)、(2×x1,2×y1)、(2×x1,2×y2)、(2×x1,2×y3)、および(2×x5,2×y0)、(2×x5,2×y1)、(2×x5,2×y2)、(2×x5,2×y3)に図12(a)に示す入力画像データの有効画素の対応画素値を書き込む。
図12(c)は、図12(b)のフレームバッファの書き込みデータに対して動きベクトルv0分の移動を行って算出される[+1フレーム(第2フレーム)]に対応するデータであり、フレームバッファFB2(123−2)に書き込まれるデータを示している。
図12の例では、動きベクトルv0は右方向に2.5(pixel/frame)である。したがって、第1フレームのデータに対して動きベクトル分の移動を行い、この位置に図12(a)に示す入力画像データの有効画素の対応画素値を書き込む。
+1フレームにおける当該ブロックの位置は、現在フレームにおけるブロック位置から動きベクトルv0の大きさ=2.5ピクセル右方向に移動した位置であるが、各フレームバッファは、縦横2倍の大きさに設定されているので、2.5×2=5画素分、右に移動した位置に図12(a)に示す入力画像データの有効画素の対応画素値を書き込む。アドレス変換部126は、書き込み位置のアドレスを動きベクトルv0の大きさおよび方向に基づいて決定し、決定位置に図12(a)に示す入力画像データの有効画素の対応画素値を書き込む。
図12(c)のフレームバッファFB2(123−2)のデータ書き込みアドレスは、フレームバッファFB1(123−1)の書き込みアドレスのx成分に(+5)したアドレスとして設定される。
図12(d)は、+2フレーム(第3フレーム)に対するフレームバッファFB3(123−3)のデータを示している。2フレーム後における当該ブロックの位置は、現在フレームにおけるブロック位置から、動きベクトルv0×2、すなわち右方向に2v0だけ移動した位置である。フレームバッファFB3(123−3)におけるデータ書き込みアドレスは、アドレス変換部126において、現在フレームにおけるフレームバッファのアドレスから右方向に2v0だけ移動、すなわち、+1フレームにおけるフレームバッファFB2(123−2)の書き込みアドレスからさらに右方向に5画素移動した位置として算出され、このアドレスに従って、フレームバッファFB3(123−3)に対して図12(a)に示す入力画像データの有効画素の対応画素値を書き込む。
図12(e)は、+(n−1)フレーム(第nフレーム)に対するフレームバッファFBn(123−n)のデータを示している。n−1フレーム後における当該ブロックの位置は、現在フレームにおけるブロック位置から、動きベクトルv0×(n−1)、すなわち右方向に(n−1)v0だけ移動した位置である。フレームバッファFBn(123−n)におけるデータ書き込みアドレスは、アドレス変換部126において、現在フレームにおけるフレームバッファのアドレスから右方向に(n−1)×5画素移動した位置として算出され、このアドレスに従って、フレームバッファFBn(123−n)に対して図12(a)に示す入力画像データの有効画素の対応画素値を書き込む。
図13は、第2フレームにおける処理を示している。図13(a)は、入力部121から与えられる第2フレームの2つの隣り合うブロックの画像データを表しており、図12(a)と同様に水平方向の空間間引きデータであり、各ブロックのそれぞれ4画素が有効となっている。
図13(b)は、現在フレーム(第2フレーム)処理時のフレームバッファのデータを示している。第2フレーム入力時において、先に表1を参照して説明したように、現フレーム〜+(n−1)フレームの格納バッファは順次シフトされている。従って、図13(b)は、現在フレーム(第2フレーム)処理時の現フレームバッファFB2(123−2)のデータ内容である。フレームバッファFB2〜FBnには、先の図12の処理においてフレームバッファFB2〜FBnに書き込まれた第1フレーム対応のデータが書き込み済みである。
図13(b)に示すフレームバッファFB2(123−2)には、図12(c)のフレームバッファFB2に書き込まれたデータが書き込み済みである。すなわち、第1フレームの処理時に動きベクトル情報に基づいてフレームバッファFB2に書き込まれた第1フレーム対応のデータが書き込まれており、ここに追記する処理として、現在フレーム(第2フレーム)のデータ書き込みが実行される。
なお、図11のフローにおけるステップS4において、アドレス変換部126によって現在フレームの当該ブロックに対する書き込みアドレスが求められ、ステップS5において、フレームバッファの該アドレスにおけるデータが読み出されるが、この時点では第1フレームの有効画素の記憶位置は、当該書き込みアドレスと異なる位置に書き込まれており、書き込みアドレスの位置に有効なデータは存在しない。従って、この場合には加算平均処理は実行されず、アドレス変換部126によって求められたアドレスに現在フレーム(第2フレーム)の処理ブロックの有効画素値が書き込まれる。
すなわち、図13(b)に示す例では、アドレス変換部126によって現在フレーム(第2フレーム)のブロックに対する書き込みアドレスは、(2x1,2y0)、(2x1,2y1)、(2x1,2y2)・・・であるが、第1フレームの有効画素の記憶位置は、これらの位置とは異なる位置であるので、ステップS5において、フレームバッファの(2x1,2y0)、(2x1,2y1)、(2x1,2y2)・・・からの読み出し処理において有効なデータの読み出しがなされることがなく、アドレス変換部126によって求められたアドレス(2x1,2y0)、(2x1,2y1)、(2x1,2y2)・・・に当該ブロックの有効画素値が書き込まれるのみの処理として実行される。
図13(c)は、+1フレーム(第3フレーム)に対するフレームバッファFB3(123−3)のデータを示している。フレームバッファFB3(123−3)には、第1フレーム処理後のデータ(図12(d)に相当)が書き込まれている。そして、第1フレームの時と同様に、現在フレームのブロック位置から動きベクトルv0だけ右方向に移動したアドレスに有効画素値を書き込む。
図13(d)は、+2フレーム(第4フレーム)に対するフレームバッファのデータを示している。ここでも同様に第1フレーム処理後のデータが書き込まれている。そして、第1フレームの時と同様に、現在フレームのブロック位置から動きベクトル2v0だけ右方向に移動したアドレスに有効画素値を書き込む。
図13(e)は、+(n−1)フレーム(第n+1フレーム)に対するフレームバッファのデータを示している。動画像変換装置は、n枚分のフレームバッファを有しており、第1フレーム処理後にフレームバッファはシフトされ、前フレーム時点での選択フレームに対するフレームバッファは、ステップS14にて初期化される。つまり、n番目のフレームバッファに対しては前フレームにおけるデータが存在せず、常に現在フレームにおける有効画素のみが書き込まれる。この例では、n番目のフレームバッファは、フレームバッファFB1(123−1)である。
図14は、第3フレームにおける処理を示している。第3フレームの処理は、第2フレームと同様に処理が行われるが、第3フレームの画像データ入力時点では、リセットされたフレームバッファFB2(123−2)以外のフレームバッファに第1フレームと第2フレームの有効画素データが書き込まれている点が異なる。
例えば、図14(b)のフレームバッファFB3(123−3)には、図13(c)に対応する第1、第2フレーム対応データが書き込み済みであり、図14(c)のフレームバッファFB4(123−4)には、図13(d)に対応する第1、第2フレーム対応データが書き込み済みである。
これらの第1、第2フレーム対応データが書き込み済みの各フレームバッファに処理対象の第3フレームのブロックの有効画素値の書き込みが実行される。図12を参照して説明したと同様の各バッファに対するアドレス算出が実行され、書き込み処理が行なわれる。なお、書き込み先(アドレス指定先)に既に書き込みデータが存在する場合は、各バッファ対応の加算処理部122−1〜nにおいて、入力部121から与えられる有効画素値との間で画素値の加算平均処理を行い加算平均値を書き込む。
図15は、第4フレームに対する処理を示している。第4フレームの画像データ入力時点では、リセットされたフレームバッファFB3(123−3)以外のフレームバッファに第1フレームと第2フレームと第3フレームの有効画素データが書き込まれている。
例えば、図15(b)のフレームバッファFB4(123−4)には、図14(c)に対応する第1、第2、第3フレーム対応データが書き込み済みであり、図15(c)のフレームバッファFB5(123−5)には、図14(d)に対応する第1、第2、第3フレーム対応データが書き込み済みである。
各フレームバッファFB1〜n(123−1〜n)に対するアドレスの算出処理、必要に応じた画素値加算平均処理の後、各フレームバッファFB1〜n(123−1〜n)に対して、第4フレームのブロックに設定された有効画素の画素値、あるいは加算平均値の書き込み処理が実行される。
図16は、第5フレームにおける処理を示している。第5フレームの画像データ入力時点では、リセットされたフレームバッファFB4(123−4)以外のフレームバッファに第1〜第4フレームの有効画素データが書き込まれている。
例えば、図16(b)のフレームバッファFB5(123−5)には、図15(c)に対応する第1、第2、第3、第4フレーム対応データが書き込み済みであり、図16(c)のフレームバッファFB6(123−6)には、図15(d)に対応する第1、第2、第3、第4フレーム対応データが書き込み済みである。
各フレームバッファFB1〜n(123−1〜n)に対するアドレスの算出処理、必要に応じた画素値加算平均処理の後、各フレームバッファFB1〜n(123−1〜n)に対して、第5フレームのブロックに設定された有効画素の画素値、あるいは加算平均値の書き込み処理が実行される。
図16(b)に示すように、第5フレームの処理後では、現在フレームに対するフレームバッファFB5(123−5)には、第1フレームから第5フレームまでの有効画素データが書き込まれ、圧縮によって欠落した画素データが復元されていることがわかる。
続いて、図17乃至図21を参照して、動きベクトルv1が右方向に1.5(pixel/frame)であるブロックデータを、図10に示す画像変換装置120において復元する処理について説明する。図17乃至図21は、フレームバッファFB1(123−1)〜フレームバッファFBn(123−n)の格納データの遷移を示している。
図17乃至図21は、復元対象のブロックが水平方向に空間方向間引き、および時間方向間引き処理を施されたブロック(図7のブロック103,104に相当)であるときの処理を示している。ここで、各フレームバッファは表1に示したように対応付けられているとする。
図17乃至図21において、各図(a)に示すデータが入力部121から与えられる各フレームの2つの隣り合うブロック、第1ブロック=(x8,y0)〜(x11,y3)、第2ブロック=(x12,y0)〜(x15,y3)の標本点データからなる圧縮画像データであり、
図17=第1フレーム、
図18=第2フレーム、
図19=第3フレーム、
図20=第4フレーム、
図21=第5フレーム、
を示している。
それぞれは、空間方向間引き処理および時間方向間引き処理を施されている。時間方向間引きの結果、第2フレーム(図18(a))と第4フレーム(図20(a))には有効画素(標本点)が存在しない。また、空間間引きの結果、第1フレーム(図17(a))と第3フレーム(図19(a))と第5フレーム(図21(a))は、図7のブロック103,104と同様、4×4画素のブロックのうち、水平方向に画素数が1/2にされた圧縮データとして設定され、各フレームにおいて、第1ブロックでは、有効画素(標本点)が(x8,y0)、(x8,y1)、(x8,y2)、(x8,y3)、(x10,y0)、(x10,y1)、(x10,y2)、(x10,y3)、第2ブロックでは、有効画素が(x12,y0)、(x12,y1)、(x12,y2)、(x12,y3)、(x14,y0)、(x14,y1)、(x14,y2)、(x14,y3)とされている。
図17は、ステップS1においてフレームバッファが初期化された後の最初のフレーム(第1フレームと呼ぶ)における処理を示している。図17(a)は、入力部121から与えられる2つの隣り合うブロックの標本点データからなる圧縮画像データを表しており、これらのブロックが空間方向間引き、および時間方向間引き処理を施されている場合には、図7に示したように、第1および第3フレーム、第5フレームでは、4×4画素のブロックのうち、水平方向に画素数が1/2になっており、各ブロックそれぞれ8画素のみが有効となっている。
図17(b)は、現在フレーム(第1フレーム)処理時のフレームバッファFB1(FB123−1)のデータを示している。本発明による動画像変換装置では、動きベクトルデータを基にして、フレーム毎に位置合わせを行い、フレームバッファに有効画素値を書き込んでいく。ここで、フレームバッファは、前述のように原画像に対して縦横2倍の画素数を持っている。現在フレームにおいては、ブロック位置は入力画像の位置と同じであるため、入力画像データの有効画素アドレスを縦横共に2倍にしたアドレスに画素値を書き込む。
すなわち、図17(a)に示す入力画像データの有効画素アドレスは、(x8,y0)、(x8,y1)、(x8,y2)、(x8,y3)、(x10,y0)、(x10,y1)、(x10,y2)、(x10,y3)、および(x12,y0)、(x12,y1)、(x12,y2)、(x12,y3)、(x14,y0)、(x14,y1)、(x14,y2)、(x14,y3)であるので、これらのアドレスを2倍して、(2×x8,2×y0)、(2×x8,2×y1)、(2×x8,2×y2)、(2×x8,2×y3)、(2×x10,2×y0)、(2×x10,2×y1)、(2×x10,2×y2)、(2×x10,2×y3)、および(2×x12,2×y0)、(2×x12,2×y1)、(2×x12,2×y2)、(2×x12,2×y3)、(2×x14,2×y0)、(2×x14,2×y1)、(2×x14,2×y2)、(2×x14,2×y3)に図17(a)に示す入力画像データの有効画素の対応画素値を書き込む。
図17(c)は、図17(b)のフレームバッファFB1(123−1)の書き込みデータに対して動きベクトルv1分の移動を行って算出される[+1フレーム(第2フレーム)]に対応するデータであり、フレームバッファFB2(123−2)に書き込まれるデータを示している。図17の例では、動きベクトルv1は右方向に1.5(pixel/frame)である。したがって、+1フレームにおける当該ブロックの位置は、現在フレームにおけるブロック位置から右方向に1.5画素だけ移動した位置であり、フレームバッファにおけるアドレスは2倍の3画素分移動した位置である。
図17(d)は、+2フレーム(第3フレーム)に対するフレームバッファのデータを示している。2フレーム後における当該ブロックの位置は、現在フレームにおけるブロック位置から、動きベクトルv1×2、すなわち右方向に2v1だけ移動した位置である。フレームバッファFB3(123−3)におけるデータ書き込みアドレスは、アドレス変換部126において、現在フレームにおけるフレームバッファのアドレスから右方向に2v1だけ移動、すなわち、+1フレームにおけるフレームバッファFB2(123−2)の書き込みアドレスからさらに右方向に3画素移動した位置として算出され、このアドレスに従って、フレームバッファFB3(123−3)に対して図17(a)に示す入力画像データの有効画素の対応画素値を書き込む。
図17(e)は、+(n−1)フレーム(第nフレーム)に対するフレームバッファFBn(123−n)のデータを示している。n−1フレーム後における当該ブロックの位置は、現在フレームにおけるブロック位置から、動きベクトルv1×(n−1)、すなわち右方向に(n−1)v1だけ移動した位置である。フレームバッファFBn(123−n)におけるデータ書き込みアドレスは、アドレス変換部126において、現在フレームにおけるフレームバッファのアドレスから右方向に(n−1)×3画素移動した位置として算出され、このアドレスに従って、フレームバッファFBn(123−n)に対して図17(a)に示す入力画像データの有効画素の対応画素値を書き込む。
図18は、第2フレームにおける処理を示している。図17乃至図21の例は、当該ブロックが空間方向間引き、および時間方向間引き処理を施されている場合であるので、図7におけるブロック103,104に相当し、第2フレームでは時間方向間引き処理によって有効画素が存在しない(図18(a))。
図18(b)は、現在フレーム(第2フレーム)に対するフレームバッファのデータを示している。第2フレーム入力時において、先に表1を参照して説明したように、現フレーム〜+(n−1)フレームの格納バッファは順次シフトされている。従って、図18(b)は、現在フレーム(第2フレーム)処理時の現フレームバッファFB2(123−2)のデータ内容である。フレームバッファFB2〜FBnには、先の図17の処理においてフレームバッファFB2〜FBnに書き込まれた第1フレーム対応のデータが書き込み済みである。ここで、第2フレームには有効画素が存在しないため、フレームバッファには新たにデータは書き込まれない。
図18(c)は、+1フレーム(第3フレーム)に対するフレームバッファFB3(123−3)のデータを示している。フレームバッファFB3(123−3)には、第1フレーム処理後のデータ(図17(d)に相当)が書き込まれている。第2フレームには有効画素が存在しないため、新たなデータは書き込まれない。
図18(d)は、+2フレーム(第4フレーム)に対するフレームバッファFB4(123−4)のデータを示している。フレームバッファFB4(123−4)には、第1フレーム処理後のデータが書き込まれている。第2フレームには有効画素が存在しないため、新たなデータは書き込まれない。
図18(e)は、+(n−1)フレーム(第n+1フレーム)に対するフレームバッファFB2(123−2)のデータを示している。上述のように、ステップS14において初期化が行われるため、フレームバッファには何もデータが書き込まれていない。さらに、第2フレームには有効画素が存在しないため、新たなデータは書き込まれない。
図19は、第3フレームにおける処理を示している。第3フレームでは、第1フレームと同様の入力データが与えられ、4×4画素のブロックのうち、水平方向に画素数が1/2になっており、それぞれ8画素のみが有効となっている(図19(a))。
第3フレームの処理は、第2フレーム処理後のデータが書き込まれたフレームバッファに、第3フレームにおける有効画素値が書き込まれる。このとき、上述のとおり、第2フレームには有効画素が存在しないため、フレームバッファには第1フレームにおける有効画素値と、第3フレームにおける有効画素値が書き込まれることになる。
例えば、図19(b)のフレームバッファFB3(123−3)には、図18(c)に対応する第1フレーム対応データが書き込み済みであり、図19(c)のフレームバッファFB4(123−4)には、図18(d)に対応する第1、第2フレーム対応データが書き込み済みである。
この第1フレーム対応データが書き込み済みの各フレームバッファに処理対象の第3フレームのブロックの有効画素値の書き込みが実行される。図12を参照して説明したと同様の各バッファに対するアドレス算出が実行され、書き込み処理が行なわれる。なお、書き込み先(アドレス指定先)に既に書き込みデータが存在する場合は、各バッファ対応の加算処理部122−1〜nにおいて、入力部121から与えられる有効画素値との間で画素値の加算平均処理を行い加算平均値を書き込む。
図20は、第4フレームにおける処理を示している。第4フレームでは、第2フレームと同様に時間方向間引き処理によって有効画素が存在しない。したがって、図18と同様の処理が行われる。すなわち、第4フレームには有効画素が存在しないため、新たなデータは書き込まれない。
図21は、第5フレームにおける処理を示している。第5フレームの画像データ入力時点では、フレームバッファに第1、第3フレームの有効画素データが書き込まれている。
例えば、図21(b)のフレームバッファFB5(123−5)には、図20(c)に対応する第1、第3フレーム対応データが書き込み済みであり、図21(c)のフレームバッファFB6(123−6)には、図20(d)に対応する第1、第3フレーム対応データが書き込み済みである。
各フレームバッファFB1〜n(123−1〜n)に対するアドレスの算出処理、必要に応じた画素値加算平均処理の後、各フレームバッファFB1〜n(123−1〜n)に対して、第5フレームのブロックに設定された有効画素の画素値、あるいは加算平均値の書き込み処理が実行される。
図21(b)は、現在フレーム(第5フレーム)に対するフレームバッファのデータを示している。上述のように、フレームバッファは、第4フレーム処理後のデータが書き込まれているため、すでに第1フレーム、および第3フレームの有効画素値が存在する。アドレス変換部126は、フレームバッファに対する現在フレームの有効画素のアドレスを求め、制御部は、フレームバッファからデータを読み込む。この時点で、x=2x14のアドレスには第1フレームの有効画素値(4画素)が存在する(図20(c))。
従って、制御部は、x=2x14のアドレスからデータを読み出し、加算処理部122にデータを送る。加算処理部122は、制御部から受け取るx=2x14のアドレスから読み出されたデータ、すなわち、第1フレームの有効画素値と、入力部から受け取る第5フレームの有効画素値を加算平均し、再び制御部へ送る。制御部は、加算処理部122から受け取るデータをフレームバッファのx=2x14のアドレスに書き込む。このようにして、加算平均処理が成されることにより、過去フレームのデータの重みは小さくなることになる。
具体的には、フレームバッファ5(123−5)のx=2x14のアドレスから読み出されるデータ、すなわち、第1フレームの有効画素値が、
アドレス(2x14,2y0)の書き込み値=α1、
アドレス(2x14,2y1)の書き込み値=α2、
アドレス(2x14,2y2)の書き込み値=α3、
アドレス(2x14,2y3)の書き込み値=α4、
であり、入力部から受け取る対応する位置の第5フレームの有効画素値(図21(a))が、それぞれ
(x14,y0)の値=β1、
(x14,y1)の値=β2、
(x14,y2)の値=β3、
(x14,y3)の値=β4、
であった場合、フレームバッファ5(123−5)のx=2x14のアドレス位置に書き込むデータは、
アドレス(2x14,2y0)の書き込み値=(α1+β1)/2、
アドレス(2x14,2y1)の書き込み値=(α2+β2)/2、
アドレス(2x14,2y2)の書き込み値=(α3+β3)/2、
アドレス(2x14,2y3)の書き込み値=(α4+β4)/2、
として、加算処理部122−5において、加算平均値が算出され、フレームバッファFB5(123−5)のx=2x14のアドレス位置に上記の値:(α1+β1)/2〜(α4+β4)/2の書き込み処理が実行される。
なお、本実施例では、フレームバッファに書き込まれているデータと、入力されるデータを単純加算平均処理しているが、たとえば、重み付け加算平均処理を行っても構わないし、単に入力データで上書き処理をしても構わない。
図21(c)は、+1フレーム(第6フレーム)に対するフレームバッファFB6(123−6)のデータを示しており、図21(d)は、+2フレーム(第7フレーム)に対するフレームバッファFB7(123−7)のデータを示している。これらの各バッファに対しても、第1、第3フレーム対応データが書き込み済みであり、上述した図21(b)のフレームバッファFB5(123−5)に対する処理と同様、アドレスに従ったデータ読み込み処理および加算平均算出処理が実行され、データ書き込みが行なわれる。
図21(e)は、+(n−1)フレーム(第n+4フレーム)のフレームバッファのデータを示しており、第5フレームデータのみの書き込みが実行される。
続いて、図22乃至図26を参照して、動きベクトルv2が右方向に0.5(pixel/frame)であるブロックデータを、図10に示す画像変換装置120において復元する処理について説明する。図17乃至図21は、フレームバッファFB1(123−1)〜フレームバッファFBn(123−n)の格納データの遷移を示している。
図22乃至図26は、ブロックが時間方向間引き処理を施されたブロック(図7のブロック105,106に相当)である場合のブロックデータを、図10に示す画像変換装置120において復元する処理について説明する。図22乃至図26は、フレームバッファFB1(123−1)〜フレームバッファFBn(123−n)の格納データの遷移を示している。ここで、各フレームバッファは表1に示したように対応付けられているとする。
図22乃至図26において、各図(a)に示すデータが入力部121から与えられる各フレームの2つの隣り合うブロック、第1ブロック=(x16,y0)〜(x19,y3)、第2ブロック=(x20,y0)〜(x23,y3)の標本点データからなる圧縮画像データであり、
図22=第1フレーム、
図23=第2フレーム、
図24=第3フレーム、
図25=第4フレーム、
図26=第5フレーム、
を示している。
それぞれは、時間方向間引き処理を施されている。時間方向間引きの結果、第2フレーム(図23(a))〜第4フレーム(図25(a))には有効画素(標本点)が存在しない。第1フレーム(図22(a))と、第5フレーム(図26(a))はブロック内画素がすべて有効画素として設定されている。
図22は、ステップS1においてフレームバッファが初期化された後の最初のフレーム(第1フレームと呼ぶ)における処理を示している。図22(a)は、入力部121から与えられる2つの隣り合うブロックの標本点データからなる圧縮画像データを表しており、これらのブロックが時間方向間引き処理を施されている場合には、図7に示したように、第1フレームの4×4画素のブロックの全画素が有効となっている。
図22(b)は、現在フレーム(第1フレーム)処理時のフレームバッファFB1(FB123−1)のデータを示している。フレームバッファは、前述のように原画像に対して縦横2倍の画素数を持っている。現在フレームにおいては、ブロック位置は入力画像の位置と同じであるため、入力画像データの有効画素アドレスを縦横共に2倍にしたアドレスに画素値を書き込む。
図22(c)は、+1フレーム(第2フレーム)に対するフレームバッファFB2(123−2)に書き込まれるデータを示している。図22の例では、動きベクトルv2は右方向に0.5(pixel/frame)である。したがって、次フレームにおける当該ブロックの位置は、現在フレームにおけるブロック位置から右方向に0.5画素だけ移動した位置であり、フレームバッファFB1(123−1)の書き込みデータに対して動きベクトルv2分の(0.5×2)画素移動を行って算出されるアドレスに従って、フレームバッファFB2(123−2)に対して図17(a)に示す入力画像データの有効画素の対応画素値を書き込む。
図22(d)は、+2フレーム(第3フレーム)に対するフレームバッファのデータを示している。2フレーム後における当該ブロックの位置は、現在フレームにおけるブロック位置から、右方向に2v2だけ移動した位置である。フレームバッファにおけるアドレスは、+1フレームにおけるフレームバッファのアドレスからさらに右方向に1画素移動した位置であり、この算出アドレスに従って、フレームバッファFB3(123−3)に対して図22(a)に示す入力画像データの有効画素の対応画素値を書き込む。
図22(e)は、+(n−1)フレーム(第nフレーム)に対するフレームバッファのデータを示している。n−1フレーム後における当該ブロックの位置は、現在フレームにおけるブロック位置から、右方向に(n−1)v2だけ移動した位置である。フレームバッファにおけるアドレスは、現在フレームにおけるフレームバッファのアドレスから右方向に(n−1)×1画素移動した位置であり、この算出アドレスに従って、フレームバッファFBn(123−n)に対して図22(a)に示す入力画像データの有効画素の対応画素値を書き込む。
図23は、第2フレームにおける処理を示している。また、図24は、第3フレームにおける処理、図25は、第4フレームにおける処理を示している。図22乃至図26の例は、当該ブロックが時間方向間引き処理を施されている場合であるので、第2フレーム乃至第4フレームでは時間方向間引き処理によって有効画素が存在しない(図23(a),図24(a),図25(a))。従って、これらのフレームにおいては、上述の図18と同様にフレームバッファの現フレームシフト処理(表1参照)だけが行われ、新たなデータは書き込まれない。
図26は、第5フレームにおける処理を示している。第5フレームでは、第1フレームと同様に入力部121から与えられるブロックの全画素が有効となっている。
図26(b)は、現在フレーム(第5フレーム)に対するフレームバッファFB5(123−5)のデータを示している。ここで、フレームバッファは、第4フレーム処理後のデータが書き込まれている。第2〜第4フレームには、有効画素が存在しないため第1フレームの有効画素データのみが書き込まれている。4フレーム分のシフト処理(1画素/フレーム)が実行されているので、第1フレームのデータは、フレームバッファFB1(123−1)のアドレスx=2x18、2x19、2x20、2x21、2x22、2x23、2x24、2x25、の各列に存在する。
一方、現在フレーム(第5フレーム)のフレームバッファFB5(123−5)に対する書き込みアドレスは、x=2x16、2x17、2x18、2x19、2x20、2x21、2x22、2x23の各列となる。
従って、x=2x18、2x19、2x20、2x21、2x22、2x23の各列に対するデータ書き込みに際しては、加算処理部122−1において、既に書き込み済みの第1フレームのデータの画素値と、現在フレーム(第5フレーム)の画素値との加算平均処理を実行した後、加算平均値の書き込みが実行されることになる。x=2x16、2x17、の各列には、現在フレーム(第5フレーム)の画素値が書き込まれる。
図26(c)は、+1フレーム(第6フレーム)に対するフレームバッファのデータを示しており、図26(d)は、+2フレーム(第7フレーム)に対するフレームバッファのデータを示している。これらは、図26(b)のフレームバッファと同様の処理、すなわち、書き込みアドレスの位置に書き込み済みデータが存在する場合は、その値と現在フレーム(第5フレーム)の画素値との加算平均処理を実行した後、加算平均値の書き込みを実行する。書き込みアドレスの位置に書き込み済みデータが存在しない場合には、現在フレーム(第5フレーム)の画素値書き込みを行う。
図26(e)は、+(n−1)フレーム(第n+4フレーム)のフレームバッファのデータを示しており、ここには、書き込み済みデータがないので、動きベクトルv2に基づいて算出したアドレス位置に現在フレーム(第5フレーム)の画素値書き込みを行う。
次に、補間部124の動作について、図27乃至図29を用いて説明する。図27は、空間方向間引き処理を施されたブロック(図12乃至図16の実施例)において、第5フレームの画像を復元する補間処理を示している。図27(a)は、第5フレームにおける入力画像データ(図16(a)と同じ)であり、図27(b)は、第5フレームの処理後(ステップS9後)における選択部127で選択されたフレームバッファのデータ(図16(b)と同じ)を示している。
図27(b)に示す第5フレームの処理後(ステップS9後)における選択部127で選択されたフレームバッファのデータ(図16(b)と同じ)には、第1〜第5フレームの有効画素値データに基づいて記録されたデータが格納されている。なお、適用バッファ数nに応じてフレームバッファに格納されているデータ量は異なることになるが、ここでは、5フレーム分のデータがバッファに格納されているものとして説明する。
補間部124は、フレームバッファの格納データに基づいて、標本点データの欠落した画素値を周囲画素値に基づいて補間する処理を実行する。図27(c)は、(b)図のフレームバッファを縦横1/2に縮小したものである。前述したように、フレームバッファ1〜n(121−1〜n)は、入力画素データの縦横2倍の画素数の記憶領域を有し、補間部124は、この記憶領域の画素データを本来の入力画素データ対応の大きさに縮小する処理を実行する。図27(b)に示す4画素領域を図27(c)の1画素領域に縮小する。
図27に示す例では、(c)に示す縮小画像の1画素に相当する(b)フレームバッファの4画素において、複数の有効データが存在する部分がないが、4画素中に複数の有効データがある場合には、それらの加算平均値を縮小画像の画素値とする。
図27(c)では、x=x0,x2,x4,x9,x13,x14の各アドレスにおいて画素欠落が生じている。補間部124は、これらの欠落画素を動きベクトルの方向に従って補間処理を行う。具体的には、当該ブロックの動きベクトルは水平方向であるため、たとえばx=x2の列については、x=x1とx=x3の各画素を用いて水平方向のみの補間処理を行う。
具体的には、図27(c)において、x=x1とx=x3の各画素の画素値が、それぞれ、
(x1,y0)の画素値=α1、
(x1,y1)の画素値=α2、
(x1,y2)の画素値=α3、
(x1,y3)の画素値=α4、
(x3,y0)の画素値=β1、
(x3,y1)の画素値=β2、
(x3,y2)の画素値=β3、
(x3,y3)の画素値=β4、
であるとき、x=2x2の画素値は、
(x1,y0)の画素値=(α1+β1)/2、
(x1,y1)の画素値=(α2+β2)/2、
(x1,y2)の画素値=(α3+β3)/2、
(x1,y3)の画素値=(α4+β4)/2、
として、補間部124において、加算平均値が算出され、x=2x2の画素値を設定する。
また、欠落画素が2画素以上連続する場合(例えばx=x13,x14の列)には、動き方向の両端の画素を用いて線形補間する。また、欠落画素の片側にしか画素値が無い場合(例えばx=x0の列)には、動き方向の画素値がある端の画素値ですべての欠落画素を埋める。図27(d)は補間処理後のデータを示しており、すべての画素値が揃った画像が生成される。
図27(d)において、
x=x0の列の画素値は、x=x1の列の画素値によって決定され、
x=x2の列の画素値は、x=x1とx=x3の列の画素値によって決定され、
x=x4の列の画素値は、x=x3とx=x5の列の画素値によって決定され、
x=x13とx=x14の列の画素値は、x=x12とx=x15の列の画素値によって決定される。
なお、本実施例では、入力の隣り合う2つのブロックについてのみ説明しているが、実際には、その周囲には異なるブロックが存在するため、フレームバッファにはそれらのブロックの有効画素値も書き込まれる。
図28は、空間方向間引き、および時間方向間引き処理を施されたブロック(図17乃至図21の実施例)において、第5フレームにおける画像を復元するための補間処理を示している。図28(a)は、第5フレームにおける入力画像データ(図21(a)と同じ)であり、図27(b)は、第5フレームの処理後(ステップS9後)における選択部127で選択されたフレームバッファのデータ(図21(b)と同じ)を示している。
図27の場合と同様に、図28(c)はフレームバッファのデータを縦横1/2に縮小したデータであり、図28(d)は、(c)図における欠落画素を水平方向の補間処理により補間した結果を示している。
図28(c)では、x=x9,x19,x21,x22,x23の各アドレスにおいて画素欠落が生じている。補間部124は、これらの欠落画素を動きベクトルの方向に従って補間処理を行う。具体的には、当該ブロックの動きベクトルは水平方向であるため、たとえばx=x9の列については、x=x8とx=x30の各画素を用いて水平方向のみの補間処理を行う。x=x19の列については、x=x18とx=x20の各画素を用いて水平方向のみの補間処理を行う。x=x21〜x23の列については、x=x20の画素を用いて水平方向のみの補間処理を行う。
図29は、時間方向間引き処理を施されたブロック(図22乃至図26の実施例)において、第5フレームにおける画像を復元するための補間処理を示している。図29(a)は、第5フレームにおける入力画像データ(図26(a)と同じ)であり、図29(b)は、第5フレームの処理後(ステップS9後)における選択部127で選択されたフレームバッファのデータ(図26(b)と同じ)を示している。図27の場合と同様に、図29(c)はフレームバッファのデータを縦横1/2に縮小したデータであり、図29(d)は、(c)図における欠落画素を水平方向の補間処理により補間した結果を示している。
図29(c)では、x=x26〜x31の各アドレスにおいて画素欠落が生じている。補間部124は、これらの欠落画素を動きベクトルの方向に従って補間処理を行う。具体的には、当該ブロックの動きベクトルは水平方向であるため、x=x26〜x31の列については、x=x25の画素を用いて水平方向のみの補間処理を行う。
なお、上述の例では、補間部124は、動き方向に並行な方向にある画素値を適用した補間処理例を示したが、欠落画素の上下左右の4画素、あるいは周囲7画素にある有効画素値を適用した補間処理を行なう構成としてもよい。
図30は、補間部124における補間処理の詳細を説明する図である。図30(a)は、処理ブロックが水平方向の動きベクトルを有している場合の欠落画素の補間処理を示している。この場合には、補間部124は、欠落画素の左右の最近傍画素を用いて線形補間処理を行う例である。x=x1,x2の列の画素値は、x=x0,x3の列の画素値に基づいて線形補間される。
図30(b)は、処理ブロックが垂直方向の動きベクトルを有している場合の欠落画素の補間処理を示している。この場合には、補間部124は、欠落画素の上下の最近傍画素を用いて線形補間処理を行う例である。y=y1,y2の行の画素値は、y=y0,y3の列の画素値に基づいて線形補間される。
図30(c)は、処理ブロックが全く動いていない場合の欠落画素の補間処理を示している。この場合には、補間部124は、欠落画素の上下左右の最近傍画素を用いて、それぞれの方向で、線形補間を実行し、その2つの結果をさらに平均化する。
図30(d)は、処理ブロックが水平方向の動きベクトルを有しており、欠落画素の左側に有効画素が無い場合の補間処理を示している。この場合には、補間部124は、欠落画素の右側の最近傍画素の値をそのまま欠落画素の値とする。x=x0〜x2の列の画素値は、x=x3の列の画素値に設定される。なお、欠落画素の右側に有効画素が無い場合には、左側の最近傍画素値を欠落画素の値とする。また、当該ブロックが垂直方向の動きベクトルを有しており、欠落画素の上側に有効画素が無い場合には、下側の最近傍画素を欠落画素の値とする。同様に下側に有効画素がない場合には、上側の最近傍画素を欠落画素の値とする。
なお、上述の実施例では、動画像変換装置120のフレームバッファFB1〜n(123−1〜n)に過去フレームの有効画素値を書き込んで、現在フレームの画素値算出処理を実行する例として説明したが、現在フレームの未来フレームにおける有効画素値を適用する構成としてもよい。
図10に示した動画像変換装置120におけるフレームバッファ数n中、過去のフレームに対するデータを格納するフレームバッファ数をb、未来のフレームのデータを格納するフレームバッファ数をf、現在の処理フレーム対応のフレームバッファ数1として設定する。すなわち、
n=b+f+1
となる。
このような設定例では、アドレス変換部126は、処理対象ブロックに対応する動きベクトルを加算することにより未来のフレームに対する有効画素のアドレスを求めると同時に、当該ブロックの動きベクトルを減算することにより過去のフレームに対する有効画素のアドレスを求める。以下に示す表2はフレームバッファの切り替え動作を説明した表である。
第1フレームの処理時において、現在フレームにおける画素値は、フレームバッファFB(b+1)に書き込まれる。未来のフレームに対する画素値は、フレームバッファFB(b+2)乃至フレームバッファFB(f+b+1)に書き込まれる。一方、過去のフレームに対する画素値は、フレームバッファFB1乃至フレームバッファFB(b)に書き込まれる。このとき、未来の+1フレームから+fフレームまでの書き込みの動作は、図12乃至図26と同様である。一方、過去の−1フレームから−bフレームまでの書き込みは、図12乃至図26の動作において動きベクトルをx方向、y方向共に反転した場合と同様である。
選択部127は、必ず最も古いフレームに対するフレームバッファを選択するように制御される。表2の例では、−bフレームが選択フレームとなる。選択部127において選択されたフレームバッファのデータが、補間部124にて補間処理され、出力部125から出力されるため、本実施例においては、出力画像は入力画像に対してbフレームだけ遅延することになる。
なお、上述した処理例では、理解を容易にするため水平方向のみの動きベクトルに対応する処理例として説明したが、前述したように、実際の動画像の処理においては、垂直方向の動きベクトルに対しても上述した処理と同様の処理が可能である。また、水平方向と垂直方向の両方の動きベクトルを適用して2次元処理を実行することで、2次元方向のあらゆる動きベクトルに対応した処理が可能である。
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。