(57)【要約】【課題】マルチコーデック対応の動き補償装置の回路規模を抑制する。【解決手段】補間画素を求める際に、制御部１１０は、圧縮規格または目標位置によって、水平方向における補間を行う水平フィルタ１３０に、必要な参照画素を適切な入力口に出力するように制御する。その後、制御部１１０は、水平フィルタ１３０により得られた補間値を、垂直方向における補間を行う垂直フィルタ１５０の適切な入力口に出力するように制御する。これにより、同一の水平フィルタ、垂直フィルタで、２次元の線形補間や圧縮規格固有の処理を実現できる。【選択図】図２
2011249986.tif 000002
【特許請求の範囲】
【請求項１】
複数の圧縮規格に対応する動き補償装置であって、圧縮された動画像のデコード時に動き補償を行い、動きベクトルが示す位置である目標位置における画素の画素値を求める前記動き補償装置において、
制御部と、
前記制御部から２つ以上の値が入力され、該２つ以上の値に対して補間を行って水平補間値を得る水平フィルタであって、入力される前記２つ以上の値の個数と、前記補間のパラメータとが可変な前記水平フィルタを有する水平フィルタリング処理部と、
前記制御部から２つ以上の値が入力され、該２つ以上の値に対して補間を行って垂直補間値を得る垂直フィルタであって、入力される前記２つ以上の値の個数と、前記補間のパラメータとが可変な前記垂直フィルタを有する垂直フィルタリング処理部と、
前記水平フィルタリング処理部から前記水平補間値、または前記垂直フィルタリング処理部から前記垂直補間値が入力され、該水平補間値または垂直補間値に所定値を加算した後に所定ビット数シフトする加算・シフト処理を行って加算・シフト値を得る加算・シフト処理部であって、前記所定値と所定ビット数からなるパラメータが可変な前記加算・シフト処理部と、
２つの値が入力され、該２つの値の平均値を求める平均処理部であって、前記２つの値は、前記制御部と前記加算・シフト処理部のいずれか一方または両方から入力される前記平均処理部とを備え、
前記水平フィルタリング処理部は、前記水平補間値を前記制御部と前記加算・シフト処理部に出力可能であり、
前記垂直フィルタリング処理部は、前記垂直補間値を前記制御部と前記加算・シフト処理部に出力可能であり、
前記加算・シフト処理部は、前記加算・シフト値を前記目標位置における画素の画素値として外部に出力可能であると共に、前記加算・シフト値を前記制御部と前記平均処理部に出力可能であり、
前記平均処理部は、前記平均値を前記目標位置における画素の画素値として外部に出力可能であると共に、前記制御部に出力可能であり、
前記制御部は、
前記目標位置が参照画素の位置となる整数位置以外であるときに、前記動画像の圧縮規格と前記目標位置に応じて、
前記水平フィルタと、前記垂直フィルタと、前記加算・シフト処理部のパラメータの設定と、
前記各処理部による処理結果の出力先の制御と、
前記処理結果の出力先が前記制御部である場合における該処理結果の保持と、
１つ以上の参照画素の画素値と、保持された１つ以上の前記水平補間値と、保持された１つ以上の前記垂直補間値と、保持された１つ以上の前記加算・シフト値と、保持された１つ以上の前記平均値とのうちの１つ以上の値を、前記水平フィルタと、前記垂直フィルタと、前記平均処理部とのうちのいずれかへの出力とを行い、
４つの値に対して２次元の線形補間を行ってキュービック補間値を得る処理に際して、
前記水平フィルタと前記垂直フィルタの片方に前記４つの値を２つずつ出力し、その後、前記片方のフィルタにより得られた２つの水平補間値または２つの垂直補間値を他方のフィルタに出力することを特徴とする動き補償装置。
【請求項２】
前記加算・シフト処理部は、
前記水平フィルタリング処理部から前記水平補間値が入力され、該水平補間値に所定値を加算した後に所定ビット数シフトする加算・シフト処理を行う水平加算・シフト処理部と、
前記垂直フィルタリング処理部から前記垂直補間値が入力され、該垂直補間値に所定値を加算した後に所定ビット数シフトする加算・シフト処理を行う垂直加算・シフト処理部とを備えることを特徴とする請求項１に記載の動き補償装置。
【請求項３】
前記平均処理部は、
２つの値が入力され、該２つの値の平均値を求める水平平均処理部であって、前記２つの値は、前記制御部と前記水平加算・シフト処理部のいずれか一方または両方から入力される前記水平平均処理部と、
２つの値が入力され、該２つの値の平均値を求める垂直平均処理部であって、前記２つの値は、前記制御部と前記垂直加算・シフト処理部のいずれか一方または両方から入力される前記垂直平均処理部とを備えることを特徴とする請求項２に記載の動き補償装置。
【請求項４】
前記垂直フィルタリング処理部は、並行して動作可能な複数の前記垂直フィルタを備え、
前記加算・シフト処理部は、複数の前記垂直フィルタにそれぞれ対応する複数の前記垂直加算・シフト処理部を備えることを特徴とする請求項３に記載の動き補償装置。
【請求項５】
前記水平フィルタリング処理部は、並行して動作可能な複数の前記水平フィルタを備え、
前記加算・シフト処理部は、複数の前記水平フィルタにそれぞれ対応する複数の前記水平加算・シフト処理部を備えることを特徴とする請求項４に記載の動き補償装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、圧縮された動画像の復号時の動き補償技術に関する。
【背景技術】
【０００２】
動画像の圧縮技術として、ＩＴＵ−ＴのＨ．２６４、ＳＭＰＴＥのＶＣ−１、ＩＳＯのＭＥＰＧ２やＭＥＰＧ４などが知られている。これらの動画圧縮技術は様々な分野で標準規格として使われており、例えばＤＶＤの場合にはＭＰＥＧ２が、Ｂｌｕ−ｒａｙ  Ｄｉｓｃの場合にはＨ．２６４が使われている。
【０００３】
このように、動画像の圧縮に関して複数の規格（コーデック）が存在し、圧縮された動画像を復号する際に、該動画像の圧縮規格に応じた復号を行う必要がある。近年、１つのハードウェア（Ｈ／Ｗ）により、異なる圧縮規格の動画像の復号に対応することが望まれている。
【０００４】
一般的に、圧縮された動画像の復号は、エントロピー復号、逆量子化、逆変換、動き補償、ループフィルタなどからなる。これらの処理のうちに、動き補償を担うＨ／Ｗ部分の回路規模が大きくなりやすい傾向がある。
【０００５】
圧縮時の動き補償は、効率良く圧縮するために、連続するフレーム間で画素がどのように動いたかを検出して動きベクトルを得る処理である。復号時の動き補償は、１つまたは複数の参照画素の画素値から、動きベクトルが示す位置における画素の画素値（輝度、色差など）を求める処理である。動き補償は、動画像の圧縮規格によって仕様が異なる。なお、参照画素は、参照フレームに実在する画素を意味する。
【０００６】
ここで、様々な圧縮規格について、復号時の動き補償を説明する。分かりやすいように、本明細書及び図面に用いられる符号と用語をいくつか定義する。
【０００７】
特別な説明がある場合を除き、各図において、黒い矩形は参照画素を示し、大文字の英字は参照画素を区別するための符号である。参照画素は、図示に関わらず縦横方向に等間隔に配列されている。参照画素の位置を「整数位置」という。また、動きベクトルが示す位置を「目標位置」という。なお、誤解が生じない前提下で、「画素」を「画素値」として用いる場合もある。
【０００８】
目標位置が整数位置である場合に、該整数位置の参照画素は目標位置の画素として用いられる。一方、目標位置が整数位置ではない場合に、複数の参照画素を用いて補間することにより目標位置の画素を求める必要がある。補間により求められる画素を補間画素という。補間の精度は規格によって異なる。参照画素の間隔を１／４単位に分けた位置まで補間する場合、補間の精度は「１／４精度」と呼ばれる。この場合、水平方向または垂直方向に隣接する２つの参照画素間で３つの補間画素を求めることができる。また、参照画素の間隔を１／２単位に分けた位置まで補間する場合、補間の精度は「１／２精度」と呼ばれる。この場合、水平方向または垂直方向に隣接する２つの参照画素間で１つのみ補間画素を求めることができる。
【０００９】
図１５は、参照画素と補間画素の位置関係を示す。図１５に示すように、黒い矩形と大文字とにより表わされる画素Ａ〜Ｌは参照画素であり、それらの位置は整数位置である。白い矩形と小文字により表わされる画素ａ〜ｖは、補間画素である。
【００１０】
画素ａは、水平方向に隣接する２つの参照画素（画素Ｃ、Ｄ）の間の３つの補間画素（画素ａ、ｂ、ｃ）の中の、該２つの参照画素のうちの左側の参照画素（画素Ｃ）に最も近い補間画素である。画素ｔも同様である。画素ａと画素ｔの位置は、「水平方向が１／４位置であり、垂直方向が０位置である」と表現され、以下「１／４，０」と表記する。
【００１１】
画素ｃは、水平方向に隣接する２つの参照画素（画素Ｃ、Ｄ）の間の３つの補間画素（画素ａ、ｂ、ｃ）の中の、該２つの参照画素のうちの右側の参照画素（画素Ｄ）に最も近い補間画素である。画素ｖも同様である。画素ｃと画素ｖの位置は、「水平方向が３／４位置であり、垂直方向が０位置である」と表現され、以下「３／４，０」と表記する。
【００１２】
画素ｂは、横方向に隣接する２つの参照画素（画素Ｃ、Ｄ）の間の３つの補間画素（画素ａ、ｂ、ｃ）のうちの中央の補間画素である。画素ｕも同様である。画素ｂと画素ｕの位置は、「水平方向が１／２位置であり、垂直方向が０位置である」と表現され、以下「１／２，０」と表記する。
【００１３】
同様に、画素ｄと画素ｈの位置は、「０，１／４」であり、画素ｎと画素ｓの位置は、「０，３／４」である。また、画素ｉと画素ｍの位置は、「０，１／２」である。
【００１４】
それ以外の各補間画素の位置も、参照画素との位置関係に応じて表現される。例えば、画素ｅの位置は「１／４，１／４」であり、画素ｆの位置は、「１／２，１／４」である。
【００１５】
なお、以下において、「１／２，０」、「０，１／２」、「１／２，１／２」の位置の補間画素を「１／２精度」の補間画素といい、他の位置の補間画素を「１／４精度」の補間画素という。
【００１６】
すなわち、補間精度が１／２精度である場合には、全ての補間画素は１／２精度の補間画素である。補間精度が１／４精度である場合には、補間画素は、１／２精度の補間画素と１／４精度の補間画素のいずれである。
【００１７】
図１６を参照して、Ｈ．２６４の場合の輝度の動き補償を説明する。
まず、１／２精度の補間画素を求める処理を説明する。
Ｈ．２６４では、１／２精度の補間画素を求める際に、６タップのリニアフィルタが用いられる。「１／２，０」位置の補間画素ｂを求める処理は、式（１）と式（２）に示される。
【数１】
2011249986.tif 000003
【００１８】
式（２）における「＞＞５」は「右側に５ビットシフトする」となるシフト処理を表す。「Ｃｌｉｐ（）」は、（）内の値をｕｎｓｉｇｎｅｄ  ８ｂｉｔ（０〜２５５）に丸める処理であり、具体的には、（）内の値が負になった場合に０とし、上限値（２５５）を超えた場合に上限値とする処理である。以下の説明において、ある値（例えばＴ）に対して所定値（ここでは１６）を加算してシフトし、シフトした後の値に対して、必要に応じて０または上限値にする処理をまとめてＴに対する「加算・シフト処理」という。加算する所定値と、シフトするビット数は、加算・シフト処理のパラメータという。
【００１９】
すなわち、「１／２，０」位置の画素ｂは、水平方向に並ぶ６つの参照画素（Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊ）に対して補間を行って得た値（ｂ'）を加算・シフト処理することによって得られる。
【００２０】
同様に、「１／２，０」位置の画素ｓも、水平方向に並ぶ６つの参照画素（Ｋ、Ｌ、Ｍ、Ｎ、Ｐ、Ｑ）に対して補間を行って得た値（ｓ'）を加算・シフト処理することによって得られる。
【００２１】
以下、説明及び図面において、「ａａ」、「ｂｂ」のような、２つの同一の小文字の英字は、式（１）におけるｂ'に対応し、加算・シフト処理が施される前の補間画素の値を示す。
図１６におけるａａ、ｂｂ、ｇｇ、ｈｈは、求める際に用いられる６つの参照画素が異なる点を除き、式（１）に示すｂ'を求める処理と同様の手法で算出される。
【００２２】
「０，１／２」位置の画素ｈを求める処理は、式（３）と式（４）に示される。
【数２】
2011249986.tif 000004
【００２３】
すなわち、「１／２，０」位置の画素ｈは、垂直方向に並ぶ６つの参照画素（Ａ、Ｃ、Ｇ、Ｍ、Ｒ、Ｔ）に対して補間を行って得た値（ｈ'）を加算・シフト処理することによって得られる。この加算・シフト処理のパラメータは、「０，１／２」位置の画素を求める際の加算・シフト処理のパラメータと同様の「１６」と「５ビット」である。
【００２４】
同様に、「１／２，０」位置の画素ｍも、垂直方向に並ぶ６つの参照画素（Ｂ、Ｄ、Ｈ、Ｎ、Ｓ、Ｕ）に対して補間を行って得た値（ｍ'）を加算・シフト処理することによって得られる。
【００２５】
ｃｃ、ｄｄ、ｅｅ、ｆｆは、式（３）に示すｈ'を求める処理と同様の手法で算出される。
【００２６】
「１／２，１／２」位置の画素ｊを求める処理は、式（５）と式（７）、または、式（６）と式（７）により示される２通りのいずれか一方である。いずれを使用するかはエンコード時に指定される。
【数３】
2011249986.tif 000005
すなわち、画素ｊは、水平方向に並ぶ６つの補間画素の加算・シフト処理前の画素値（ｃｃ、ｄｄ、ｈ'、ｍ'、ｅｅ、ｆｆ）に対して補間を行って得た値（ｊ'）を加算・シフト処理することにより得られる。加算・シフト処理のパラメータは、「５１２」と「１０ビット」である。
【００２７】
他の各１／４位置の画素、３／４位置の画素を求める処理は、２つの画素（参照画素または補間画素）の平均をとる処理であり、式（８）〜（１９）にそれぞれ示される。
【数４】
2011249986.tif 000006
【００２８】
ＶＣ−１の場合、復号時の輝度の動き補償は、ＢｉｃｕｂｉｃとＢｉｌｉｎｅａｒの２種類がある。いずれを用いるかは、エンコード時に指定される。
【００２９】
図１７と図１８を参照して、Ｂｉｃｕｂｉｃの場合を説明する。
図１７においても、１つの小文字の英字は補間画素を表し、２つの小文字の英字は、加算・シフト処理前の補間画素を表す。ＶＣ−１のＢｉｃｕｂｉｃの場合、補間画素は、４つの画素（参照画素または別の補間画素）から求められる。例えば、画素ａは、同じ行に並ぶ４つの参照画素（画素Ｅ、Ｆ、Ｇ、Ｈ）から求められ、画素ｄは、同じ列に並ぶ４つの参照画素（Ｂ、Ｆ、Ｊ、Ｎ）から求められる。また、画素ｒは、同じ行に並ぶ４つの補間画素（画素ｎｎ、ｎ、ｓ、ｓｓ）から求められる。
【００３０】
図１８を参照して、より具体的に説明する。図１８において、画素Ｑ１、Ｑ２、Ｑ３、Ｑ４は、参照画素または補間画素であり、それらの並ぶ方向は、縦または横のいずれか一方である。画素ｗは、画素Ｑ１〜Ｑ４から求められる補間画素である。
【００３１】
画素ｗが１／４位置の画素である場合、それを求める処理は、下記の式（２０）に示される。
【数５】
2011249986.tif 000007
【００３２】
画素ｗが１／２位置の画素である場合、それを求める処理は、下記の式（２１）に示される。
【数６】
2011249986.tif 000008
【００３３】
画素ｗが３／４位置の画素である場合、それを求める処理は、下記の式（２２）に示される。
【数７】
2011249986.tif 000009
【００３４】
式（２０）、（２１）、（２２）において、「ｓｈｉｆｔ」はシフト量を示す。また、「ｒｎｄ」は丸め値を示す。丸め値とシフト量は、画素ｗの位置によって異なる。なお、式（２０）〜（２２）に示していないが、これらの式によって求められた値は、必要に応じてｕｎｓｉｇｎｅｄ  ８ｂｉｔに丸められる。
【００３５】
すなわち、ＶＣ−１のＢｉｃｕｂｉｃの場合、補間画素は、４つの画素（参照画素または補間画素）に対して補間を行って得た値を加算・シフト処理することにより求められる。
【００３６】
ＶＣ−１のＢｉｌｉｎｅａｒの場合、補間画素は、２次元の線形補間により求められる。図１９を参照して、２次元の線形補間を説明する。
【００３７】
２次元の線形補間により補間画素ｅを求める際に、該画素ｅを囲む上、下、左、右の４つの参照画素（Ａ、Ｂ、Ｃ、Ｄ）が用いられる。図１９において、「ｘＦｒｃ」と「８−ｘＦｒｃ」は水平距離を示し、「ｙＦｒｃ」と「８−ｙＦｒｃ」は垂直距離を示す。
【００３８】
２次元の線形補間により補間画素ｅを求める処理は、下記の式（２３）に示される。
【数８】
2011249986.tif 000010
【００３９】
すなわち、ＶＣ−１のＢｉｌｉｎｅａｒの場合、補間画素は、該補間画素を囲む上、下、左、右の４つの参照画素に対して２次元の線形補間を求めて得た値を加算・シフト処理することにより得られる。加算・シフト処理のパラメータは「ｒｎｄ」と「ｓｈｉｆｔ」であり、求められる補間画素の位置によって異なる。なお。式（２３）が示す２次元の線形補間は、通常、キュービックフィルタにより行われる。
【００４０】
ＭＰＥＧ４は、１／２精度の動き補償モード（ｈａｌｆ−ｐｅｌ  ｍｏｔｉｏｎ  ｃｏｍｐｅｎｓａｔｉｏｎ：ｈｍｃ）と、１／４精度の動き補償モード（ｑｕａｒｔｅｒ−ｐｅｌ  ｍｏｔｉｏｎ  ｃｏｍｐｅｎｓａｔｉｏｎ：ｑｍｃ）がある。ＭＰＥＧ２は、動き補償の精度が１／２である。
【００４１】
図２０を参照して、ＭＰＥＧ４のｑｍｃの場合に補間画素を求める処理を説明する。これらの処理は、式（２４）〜（３９）に示される。これらの式におけるＣ［］は、係数である。また、「ｒｃ」は、ｒｏｕｎｄｉｎｇ＿ｃｏｎｔｒｏｌのことであり、丸め処理の制御を行うためのパラメータである。「／２５６」は８ビットシフトすることを意味する。
【数９】
2011249986.tif 000011
【００４２】
式（２５）と（２６）が示すように、ＭＰＥＧ４のｑｍｃの場合、（１／２，０）位置の補間画素ｂｉ（例えば図２０におけるｂ−１とｂ１）と（０，１／２）位置の補間画素（図２０におけるｃ）は、８つの参照画素に対して補間（８タップのフィルタ）を行って得た値を加算・シフト処理することにより得られ、加算・シフト処理のパラメータは「１２８−ｒｃ」と「８ビット」である。
【００４３】
式（２７）が示すように、（１／２，１／２）位置の補間画素（図２０におけるｄ）は、８つの（１／２，０）位置の補間画素に対して補間を行って得た値を加算・シフト処理することにより得られる。
【００４４】
式（３０）が示すように、（１／４，１／２）位置の補間画素（図２０におけるｋ）は、８つの（１／４，１／２）位置の補間画素に対して補間を行って得た値を加算・シフト処理することにより得られ、加算・シフト処理のパラメータは「１２８−ｒｃ」と「８ビット」である。また、式（３１）が示すように、（３／４，１／２）位置の補間画素（図２０におけるｌ）は、８つの（３／４，１／２）位置の補間画素に対して補間を行って得た値を加算・シフト処理することにより得られ、加算・シフト処理のパラメータは「１２８−ｒｃ」と「８ビット」である。
【００４５】
式（２８）、（２９）、（３２）、（３６）が示すように、（１／４，０）位置の補間画素（ｅｉ）、（３／４，０）位置の補間画素（ｆｉ）、（０，１／２）位置の補間画素（ｇ）、（（０，３／４）位置の補間画素（ｍ）は、１つの参照画素と１つの補間画素を平均することにより求められる。
【００４６】
他の補間画素は、式（３３）〜（３５）、式（３７）〜（３９）が示すように、２つの補間画素を平均することにより求められる。
【００４７】
図２１を参照して、ＭＰＥＧ２とＭＰＥＧ４の１／２精度の動き補償を説明する。この場合、補間画素は、（１／２，０）位置の補間画素（図２１におけるｂ、ｅ）と、（０，１／２）位置の補間画素（図２１におけるｃ）と、（１／２，１／２）位置の補間画素（図２１のおけるｄ）のいずれである。これらの異なる位置の補間画素を求める処理は、下記の式（４０）〜（４２）に示される。なお、ＭＰＥＧ２の場合、ｒｏｕｎｄｉｎｇ＿ｃｏｎｔｒｏｌというパラメータが無いため、これらの式における「ｒｃ」は、０である。
【数１０】
2011249986.tif 000012
【００４８】
式（４０）と（４１）が示すように、（１／２，０）位置と（０，１／２）位置の補間画素は、２つの参照画素を平均することにより求められる。また、（１／２，１／２）位置の補間画素は、４つの参照画素に対して２次元の線形補間をして得た値を加算・シフト処理することにより求められる。４つの参照画素に対する２次元の線形補間は、通常、キュービックフィルタにより行われる。
【００４９】
以上、種々の圧縮規格によって定められた輝度の動き補償について説明した。色差については、これらのいずれの規格も、補間画素は、図１９に示す２次元の線形補間（キュービックフィルタ）によって求められる。
【００５０】
このように、動画像の圧縮規格によって復号時の動き補償の仕様が異なる。複数の圧縮規格に対応するために、規格毎に動き補償を担うＨ／Ｗを設けるようにすると、回路規模が大きくなってしまうという問題がある。
【００５１】
特許文献１には、複数の圧縮規格に対応可能な動き補償技術が開示されている。図２２を参照して説明する。
【００５２】
図２２は、特許文献１の図４であり、マルチコーデック対応の動き補償装置を示す。この装置における動き補償エンジン４０は、ＤＭＡ  Ｉ／Ｆ３０、垂直フィルタ４１、第１水平フィルタ４２、第２水平フィルタ４３、キュービック整列部４４、キュービックフィルタ４５を有する。垂直フィルタ４１、第１水平フィルタ４２、第２水平フィルタ４３は、共に一次元の補間を行うフィルタであり、キュービックフィルタ４５は、２次元の線形補間を行う。キュービック整列部４４は、キュービックフィルタ４５に入力するデータ（画素値）を選択する。動き補償の際に、圧縮規格（コーデック）に応じて、１つ以上のフィルタが選択される。
【００５３】
例えば、Ｈ．２６４の場合、垂直フィルタ４１、第１水平フィルタ４２、第２水平フィルタ４３の順にフィルタが選択され、１／２精度の補間画素までが算出される。その後、キュービックフィルタ４５により１／４精度の補間画素が算出される。
【００５４】
ＶＣ−１のＢｉｌｉｎｅａｒ、ＭＰＥＧ４の１／２精度モードとＭＰＥＧ２、各コーデックの色差の動き補償の場合、キュービック整列部４４のみが用いられ、垂直フィルタ４１、第１水平フィルタ４２、第２水平フィルタ４３が用いられない。
【００５５】
この技術は、複数のコーデック間で共有可能なフィルタを共有させ、コーデックに応じてフィルタを選択的に使い分けることにより、部品数を減らし、回路規模を減らすことができるとされている。
【先行技術文献】
【特許文献】
【００５６】
【特許文献１】特開２００８−１２５０７８号公報
【発明の概要】
【発明が解決しようとする課題】
【００５７】
図２２に示す装置における動き補償エンジン４０は、水平方向における一次元の補間、垂直方向における一次元の補間、２次元の線形補間のために、水平フィルタ、垂直フィルタ、キュービックフィルタをそれぞれ備える。
【００５８】
また、Ｈ．２６４の場合における１／４精度の画素を算出するために、キュービックフィルタ４５が用いられる。前述したように、Ｈ．２６４の場合、１／４精度の画素の算出処理は、単純な平均処理（式（８）〜（１９）である。この処理にキュービックフィルタを用いるのは過剰仕様と考えられる。
【００５９】
本発明は、上記事情に鑑みてなされたものであり、マルチコーデックに対応可能な動き補償装置の回路規模をより削減できる技術を提供する。
【課題を解決するための手段】
【００６０】
本発明の一つの態様は、圧縮された動画像のデコード時に動き補償を行い、動きベクトルが示す位置である目標位置における画素の画素値を求める動き補償装置であり、複数の圧縮規格に対応する。
【００６１】
該動き補償装置は、制御部と、水平フィルタリング処理部と、垂直フィルタリング処理部と、加算・シフト処理部と、平均処理部とを備える、
【００６２】
水平フィルタリング処理部は、水平フィルタを有する。該水平フィルタは、制御部から２つ以上の値が入力され、該２つ以上の値に対して一次元の補間を行って水平補間値を得るものである。また、水平フィルタは、入力される上記２つ以上の値の個数と、補間パラメータとが可変である。
【００６３】
垂直フィルタリング処理部は、垂直フィルタを有する。該垂直フィルタは、制御部から２つ以上の値が入力され、該２つ以上の値に対して一次元の補間を行って垂直補間値を得るものである。また、垂直フィルタは、入力される上記２つ以上の値の個数と、補間パラメータとが可変である。
【００６４】
加算・シフト処理部は、水平フィルタリング処理部からの水平補間値、または垂直フィルタリング処理部からの垂直補間値が入力され、該水平補間値または垂直補間値に所定値を加算した後に所定ビット数シフトする加算・シフト処理を行って加算・シフト値を得る。上記所定値と所定ビット数は、加算・シフト処理のパラメータである。
【００６５】
平均処理は、２つの値が入力され、該２つの値の平均値を求めるものである。この２つの値は、制御部と加算・シフト処理部のいずれか一方または両方から入力される。
【００６６】
水平フィルタリング処理部は、処理結果である水平補間値を制御部と加算・シフト処理部に出力可能である。
【００６７】
垂直フィルタリング処理部は、処理結果である垂直補間値を制御部と加算・シフト処理部に出力可能である。
【００６８】
加算・シフト処理部は、処理結果である加算・シフト値を目標位置における画素の画素値として外部に出力可能であると共に、加算・シフト値を制御部と平均処理部に出力可能である。
【００６９】
平均処理部は、処理結果である平均値を目標位置における画素の画素値として外部に出力可能であると共に、制御部に出力可能である。
【００７０】
制御部は、目標位置が参照画素の位置となる整数位置以外であるときに、動画像の圧縮規格と目標位置に応じて、下記の各処理を行う。
（１）水平フィルタと、垂直フィルタと、加算・シフト処理部のパラメータの設定。
（２）各処理部による処理結果の出力先の制御。
（３）処理結果の出力先が制御部である場合における該処理結果の保持。
（４）１つ以上の参照画素の画素値と、保持された１つ以上の水平補間値と、保持された１つ以上の垂直補間値と、保持された１つ以上の加算・シフト値と、保持された１つ以上の平均値のうちの１つ以上の値を、水平フィルタと、垂直フィルタと、平均処理部とのうちのいずれかへの出力。
【００７１】
また、制御部は、圧縮規格と目標位置によって、目標位置の画素値を求めるために、４つの値に対して２次元の線形補間を行ってキュービック補間値を得る処理が必要な場合に、水平フィルタと垂直フィルタの片方に上記４つの値を２つずつ出力し、その後、該片方のフィルタにより得られた２つの水平補間値または２つの垂直補間値を他方のフィルタに出力することによって上記キュービック補間値を得る。
【００７２】
なお、上記態様の装置を方法やシステムに置き換えて表現したもの、本発明の態様としては有効である。
【発明の効果】
【００７３】
本発明にかかる技術によれば、複数の圧縮規格に対応する動き補償装置の回路規模を抑制することができる。
【図面の簡単な説明】
【００７４】
【図１】本発明の第１の実施の形態にかかる動画像復号装置を示す図である。
【図２】図１に示す動画像復号装置における動き補償エンジンを示す図である。
【図３】図２に示す動き補償エンジンにおける水平フィルタを示す図である。
【図４】規格毎に、加算・シフト処理部と平均処理部が出力する補間画素の種類を示す図である。
【図５】本発明の技術による２次元の線形補間の手法を説明するための図である（その１）。
【図６】本発明の技術による２次元の線形補間の手法を説明するための図である（その２）。
【図７】本発明の第２の実施の形態にかかる動き補償エンジンを示す図である。
【図８】本発明の第３の実施の形態にかかる動き補償エンジンを示す図である。
【図９】図８に示す動き補償エンジンによる補間画素の算出例を説明するための図である（その１）。
【図１０】図８に示す動き補償エンジンによる補間画素の算出例を説明するための図である（その２）。
【図１１】図８に示す動き補償エンジンによる補間画素の算出例を説明するための図である（その３）。
【図１２】図８に示す動き補償エンジンによる補間画素の算出例を説明するための図である（その４）。
【図１３】図８に示す動き補償エンジンによる補間画素の算出例を説明するための図である（その５）。
【図１４】本発明の第４の実施の形態にかかる動き補償エンジンを示す図である。
【図１５】参照画素と補間画素の位置関係を説明するための図である。
【図１６】Ｈ．２６４の場合における補間画素（輝度）の求め方を説明するための図である。
【図１７】ＶＣ−１のＢｉｃｕｂｉｃの場合における補間画素（輝度）の求め方を説明するための図である（その１）。
【図１８】ＶＣ−１のＢｉｃｕｂｉｃの場合における補間画素（輝度）の求め方を説明するための図である（その２）。
【図１９】２次元の線形補間を説明するための図である。
【図２０】ＭＰＥＧ４のｑｍｃモードの場合における補間画素（輝度）の求め方を説明するための図である。
【図２１】ＭＰＥＧ４のｈｍｃモードとＭＰＥＧ２の場合における補間画素（輝度）の求め方を説明するための図である。
【図２２】特許文献１に開示された動き補償装置を示す図である。
【発明を実施するための形態】
【００７５】
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００７６】
＜第１の実施の形態＞
図１は、本発明の第１の実施の形態にかかる動画像復号装置８０を示す。図１において、本発明の動き補償技術を説明する上で必要な構成要素のみを示し、逆量子化を担う機能ブロックなど、通常の動画像装置に備えられ、本発明の動き補償技術を説明する際に特に必要の無い他のものを省略する。
【００７７】
動画像復号装置８０は、メモリ８４、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ１１４、エントロピー復号部８８、ＤＭＡ  ＩＦ９０（ＩＦ：Ｉｎｔｅｒｆａｃｅ）、動き補償エンジン１００を備え、これらはシステムバス８２に接続されている。
【００７８】
メモリ８４は、既に復号された参照ピクチャを記憶している。メモリ８４に記憶された参照ピクチャにおける各画素は、参照画素となる。また、メモリ８４は、エントロピー復号部８８により得られた、現在の復号対象となるピクチャの各動きベクトルも記憶する。
【００７９】
エントロピー復号部８８は、エントロピー復号を行うものであり、動画像の圧縮規格を示すコーデック信号と、現在の復号対象となるピクチャ（以下注目ピクチャという）の各動きベクトルを得る。エントロピー復号部８８は、システムバス８２を介して、コーデック信号を動き補償エンジン１００に出力し、動きベクトルをメモリ８４に出力する。
【００８０】
動き補償エンジン１００は、動き補償を行うものであり、注目ピクチャにおける、各動きベクトルが示す位置（目標位置）における画素を求める。動き補償エンジン１００は、メモリ８４から動きベクトルを逐次読み出して、コーデック信号が示す圧縮規格と、動きベクトルが示す目標位置に応じて、メモリ８４から必要な参照画素を読み出す。動き補償エンジン１００は、ＤＭＡ  ＩＦ９０を介して、メモリ８４から動きベクトルと参照画素の読出しを行う。なお、本実施の形態における動き補償エンジン１００は、Ｈ．２６４、ＶＣ−１、ＭＰＥＧ４、ＭＰＥＧ２に対応する。
【００８１】
ＤＭＡ  ＩＦ９０は、システムバス８２を介して、動き補償エンジン１００が読み出す動きベクトルと参照画素についてＤＭＡコントローラ８６にＤＭＡリクエストを出す。ＤＭＡコントローラ８６は、ＤＭＡ  ＩＦ９０からのＤＭＡリクエストに応じて動きベクトルと参照画素の出力をメモリ８４に行わせ、システムバス８２、ＤＭＡ  ＩＦ９０を介して動き補償エンジン１００に供する。
【００８２】
図２は、動き補償エンジン１００を示す。動き補償エンジン１００は、制御部１１０、水平フィルタリング処理部１２０、垂直フィルタリング処理部１４０、加算・シフト処理部１６０、平均処理部１７０を備える。
【００８３】
水平フィルタリング処理部１２０は、水平フィルタ１３０を備える。水平フィルタ１３０は、制御部１１０から水平方向に並ぶ２つ以上の画素の画素値が入力され、該２つ以上の画素値に対して補間を行って１つの補間値を得る。以下、この補間値を水平補間値という。なお、制御部１１０から水平フィルタ１３０に入力される２つ以上の画素値は、参照画素の画素値である場合と、参照画素の画素値ではない場合がある。これについては後述する。
【００８４】
水平フィルタ１３０は、入力される画素値の数と、補間パラメータが可変である。入力される画素値の数とパラメータは、制御部１１０により制御される。
【００８５】
また、水平フィルタリング処理部１２０は、水平フィルタ１３０により得られた水平補間値を制御部１１０と加算・シフト処理部１６０に出力可能である。水平補間値の出力先は、制御部１１０により制御される。
【００８６】
図３は、水平フィルタ１３０の構成例を示す。図３の水平フィルタ１３０は、８つのレジスタｆＲ０〜ｆＲ７、７つの加算器（ｓｕｍ０〜ｓｕｍ６）、４つの乗算器ｍｕｌ０〜ｍｕｌ３を有する。
【００８７】
レジスタｆＲ０〜ｆＲ７には、制御部１１０によりそれぞれの値が設定される。加算器ｓｕｍ０、加算器ｓｕｍ１、加算器ｓｕｍ２、加算器ｓｕｍ３は、レジスタｆＲ３とレジスタｆＲ４の加算、レジスタｆＲ２とレジスタｆＲ５の加算、レジスタｆＲ１とレジスタｆＲ６の加算、レジスタｆＲ０とレジスタｆＲ７の加算をそれぞれ行う。
【００８８】
乗算器ｍｕｌ０は、乗算器ｍｕｌ１、乗算器ｍｕｌ２、乗算器ｍｕｌ３は、加算器ｓｕｍ０の出力と係数ａ０の乗算、加算器ｓｕｍ１の出力と係数ａ１の乗算、加算器ｓｕｍ２の出力と係数ａ２の乗算、加算器ｓｕｍ３の出力と係数ａ３の乗算をそれぞれ行う。
【００８９】
加算器ｓｕｍ４は乗算器ｍｕｌ０と乗算器ｍｕｌ１の出力を加算し、加算器ｓｕｍ５は乗算器ｍｕｌ２と乗算器ｍｕｌ３の出力を加算する。
【００９０】
加算器ｓｕｍ６は、加算器ｓｕｍ４と加算器ｓｕｍ５の出力を加算する。加算器ｓｕｍ６の出力は、水平フィルタ１３０の出力（水平補間値）となる。
【００９１】
レジスタｆＲ０〜ｆＲ７の値と、係数ａ０〜ａ３は、制御部１１０により設定される。レジスタｆＲ０〜ｆＲ７の全てに値が設定された場合に、水平フィルタ１３０は、８タップのフィルタとなる。制御部１１０は、一部のレジスタに値を設定しないことにより水平フィルタのタップ数を調整可能である。なお、レジスタに値を設定しないことは、該レジスタの値を「０」に設定することと等価である。
【００９２】
例えば、制御部１１０がレジスタｆＲ０〜ｆＲ７の全てに対して値を設定する場合、水平フィルタ１３０は、８タップのフィルタになる。また、制御部１１０がレジスタｆＲ１〜ｆＲ６に対してのみ値を設定する場合、水平フィルタ１３０は６タップのフィルタになる。さらに、制御部１１０がレジスタｆＲ２とレジスタｆＲ５に対してのみ値を設定する場合、水平フィルタ１３０は４タップのフィルタになる。さらに、制御部１１０がレジスタｆＲ３とレジスタｆＲ４に対してのみ値を設定する場合、水平フィルタ１３０は２タップのフィルタになる。
【００９３】
図２に戻って説明する。
水平フィルタリング処理部１２０は、水平フィルタ１３０により得られた水平補間値を制御部１１０と加算・シフト処理部１６０に出力可能である。制御部１１０と加算・シフト処理部１６０のいずれに出力するかは、制御部１１０により制御される。
【００９４】
垂直フィルタリング処理部１４０は、垂直フィルタ１５０を備える。垂直フィルタ１５０は、制御部１１０から垂直方向に並び２つ以上の画素の画素値が入力され、該２つ以上の画素値に対して補間を行って１つの補間値を得る。以下、この補間値を垂直補間値という。なお、制御部１１０から垂直フィルタ１５０に入力される２つ以上の画素値は、参照画素の画素値である場合と、参照画素の画素値ではない場合がある。これについては後述する。
【００９５】
垂直フィルタ１５０は、入力される画素値の数と、補間パラメータが可変である。入力される画素値の数とパラメータは、制御部１１０により制御される。
【００９６】
また、垂直フィルタリング処理部１４０は、垂直フィルタリング処理部１４０により得られた垂直補間値を制御部１１０と加算・シフト処理部１６０に出力可能である。垂直補間値の出力先は、制御部１１０により制御される。
【００９７】
なお、垂直フィルタ１５０の具体的な構成は、図３に示す水平フィルタ１３０と同様とすることができ、ここで説明を省略する。
【００９８】
加算・シフト処理部１６０は、水平フィルタリング処理部１２０から水平補間値が入力されたとき、または垂直フィルタリング処理部１４０から垂直補間値が入力されたときに、入力された水平補間値または垂直補間値に対して加算・シフト処理を行う。加算・シフト処理は、入力された値に対して所定値を加算して所定ビット数をシフトした後に、必要に応じて丸めるものである。本実施の形態において、画素値が８ビットであり、加算・シフト処理部１６０により行われる加算・シフト処理は、入力された値に対して所定値を加算して所定ビット数シフトした後に、必要に応じて出力値を「０」または「２５６」にする処理である。なお、加算・シフト処理のパラメータ（加算する所定値とシフトする所定ビット数）は、制御部１１０により制御される。加算・シフト処理部１６０の処理結果は、以下加算・シフト値という。
【００９９】
加算・シフト処理部１６０は、加算・シフト値を目標位置における画素の画素値として外部（例えば、図示しない、動き補償エンジン１００の次段の処理ブロックなど）に出力可能であると共に、加算・シフト値を制御部１１０と平均処理部１７０に出力可能である。加算・シフト値の出力先は、制御部１１０により制御される。
【０１００】
平均処理部１７０は、２つの値が入力され、該２つの値の平均値を算出する。該２つの値は、制御部１１０と加算・シフト処理部１６０のいずれか一方または両方から入力される。平均処理部１７０に入力される２つの値の詳細については、後述する。
【０１０１】
平均処理部１７０は、処理結果である平均値を外部と制御部１１０に出力可能である。平均値の出力先は、制御部１１０により制御される。
【０１０２】
制御部１１０は、動きベクトルにより示される目標位置が整数位置である場合に、該整数位置の参照画素をメモリ８４から読み出して外部に出力する。これは、輝度と色差のいずれについても同様である。
【０１０３】
動きベクトルにより示される目標位置が整数位置ではない場合に、制御部１１０は、輝度について、コーデック信号が示す圧縮規格と、目標位置とに応じて下記の処理を行う。
（１）水平フィルタ１３０、垂直フィルタ１５０、加算・シフト処理部１６０のパラメータの設定。
（２）各処理部による処理結果の出力先の制御。
（３）処理結果の出力先が制御部１１０である場合における該処理結果の保持。
（４）１つ以上の参照画素の画素値と、保持された１つ以上の水平補間値と、保持された１つ以上の垂直補間値と、保持された１つ以上の加算・シフト値と、保持された１つ以上の平均値のうちの１つ以上の値を各処理部のうちのいずれかへの出力。
【０１０４】
また、制御部１１０は、圧縮規格と目標位置によって、目標位置の画素値を求めるために、４つの値に対して２次元の線形補間を行ってキュービック補間値を得る処理が必要な場合に、水平フィルタ１３０と垂直フィルタ１５０の片方に上記４つの値を２つずつ出力し、その後、該片方のフィルタにより得られた２つの水平補間値または２つの垂直補間値を他方のフィルタに出力することによって上記キュービック補間値を得る。
【０１０５】
補間画素は、加算・シフト処理部１６０または平均処理部１７０により外部に出力される。図４は、本実施の形態において、加算・シフト処理部１６０により外部に出力される補間画素と、平均処理部１７０により外部に出力される補間画素を示す。
【０１０６】
図４に示すように、輝度の場合、Ｈ．２６４の全ての１／２精度の補間画素が加算・シフト処理部１６０から外部に出力され、全ての１／４制度の補間画素が平均処理部１７０から外部に出力される。
【０１０７】
ＶＣ−１のＢｉｃｕｂｉｃとＶＣ−１のＢｉｌｉｎｅａｒの場合、全ての補間画素が加算・シフト処理部１６０から外部に出力される。
【０１０８】
ＭＰＥＧ４のｑｍｃモードの場合、全ての１／２精度の補間画素と一部の１／４精度の補間画素が加算・シフト処理部１６０から外部に出力され、他の１／４精度の補間画素が平均処理部１７０から外部に出力される。
【０１０９】
ＭＰＥＧ４のｈｍｃモードとＭＰＥＧ２の場合、（１／２，１／２）位置の補間画素が加算・シフト処理部１６０から出力され、他の位置の補間画素が平均処理部１７０から外部に出力される。
【０１１０】
なお、色差については、全ての規格において、全ての補間画素が加算・シフト処理部１６０から外部に出力される。
【０１１１】
圧縮規格毎に補間画素を求める際の制御部１１０の動作を詳細に説明する。
まず、輝度について説明する。
【０１１２】
＜Ｈ．２６４の場合＞
１．１／２精度の補間画素のうちの、（１／２，０）位置の補間画素（輝度）
図１６における補間画素ｂを例にする。
この場合、制御部１１０は、メモリ８４から参照画素Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊを読み出すと共に、前述した式（１）が示す処理が行われるように水平フィルタ１３０の設定をし、式（２）が示す処理が行われるように加算・シフト処理部１６０を設定する。また、水平フィルタ１３０の出力先が加算・シフト処理部１６０になり、加算・シフト処理部１６０の出力先が外部になるように制御をする。これにて、補間画素ｂが求められ、加算・シフト処理部１６０から外部に出力される。
【０１１３】
２．１／２精度の補間画素のうちの、（０，１／２）位置の補間画素（輝度）
図１６における補間画素ｈを例にする。
この場合、制御部１１０は、メモリ８４から参照画素Ａ、Ｃ、Ｇ、Ｍ、Ｒ、Ｔを読み出すと共に、前述の式（３）が示す処理が行われるように垂直フィルタ１５０の設定をし、式（４）が示す処理が行われるように加算・シフト処理部１６０を設定する。また、垂直フィルタ１５０の出力先が加算・シフト処理部１６０になり、加算・シフト処理部１６０の出力先が外部になるように制御をする。これにて、補間画素ｈが求められ、加算・シフト処理部１６０から外部に出力される。
【０１１４】
３．１／２精度の補間画素のうちの、（１／２，１／２）位置の補間画素（輝度）
図１６における補間画素ｊを例にする。
この場合、２通りの求め方がある。
（１）式（５）と式（７）により求める場合
制御部１１０は、上述した（０，１／２）位置の補間画素を求める際と同様に、画素ｃｃを求めるための６個の参照画素をメモリ８４から読み出すと共に、式（３）に対応する処理が行われるように垂直フィルタ１５０を設定する。この場合、制御部１１０は、垂直フィルタ１５０の出力先が制御部１１０になるように制御する。すなわち、画素ｃｃの位置について、加算・シフト処理の前の補間画素の画素値（垂直補間値）が制御部１１０に出力される。
【０１１５】
制御部１１０は、垂直フィルタ１５０からの垂直補間値ｃｃを保持しておき、同様の手順で、垂直補間値ｄｄ、ｈ'、ｍ'、ｅｅ、ｆｆを垂直フィルタ１５０に求めさせ、保持する。
【０１１６】
そして、制御部１１０は、保持した６個の垂直補間値ｃｃ、ｄｄ、ｈ'、ｍ'、ｅｅ、ｆｆを水平フィルタ１３０に出力し、式（５）が示す処理が行われるように水平フィルタ１３０を設定する。このとき、制御部１１０は、水平フィルタ１３０の出力先が加算・シフト処理部１６０になるように制御すると共に、式（７）が示す処理が行われるように加算・シフト処理部１６０を設定し、加算・シフト処理部１６０の出力先が外部になるように制御する。これにて、補間画素ｊが求められ、加算・シフト処理部１６０から外部に出力される。
【０１１７】
（２）式（６）と式（７）により補間画素ｊを求める場合
制御部１１０は、水平フィルタ１３０に水平補間値ａａ、ｂｂ、ｂ'、ｓ'、ｇｇ、ｈｈを求めさせ、保持する。そして、該６個の水平補間値を垂直フィルタ１５０に出力し、式（６）が示す処理が行われるように垂直フィルタ１５０を設定する。このとき、制御部１１０は、垂直フィルタ１５０の出力先が加算・シフト処理部１６０になるように制御すると共に、式（７）が示す処理が行われるように加算・シフト処理部１６０を設定し、加算・シフト処理部１６０の出力先が外部になるように制御する。これにて、補間画素ｊが求められ、加算・シフト処理部１６０から外部に出力される。
【０１１８】
４．１／４精度の補間画素（輝度）
Ｈ．２６４の場合の１／４精度の補間画素は、１つの参照画素と１つの１／２精度の補間画素の平均（式（８）〜（１１））、または２つの１／２精度の補間画素の平均（式（９）〜（１９））により求められる。
【０１１９】
（１）１つの参照画素と１つの１／２精度の補間画素の平均により求められる場合
制御部１１０は、上述した通りに、１／２精度の補間画素を水平フィルタ１３０及び／または垂直フィルタ１５０と、加算・シフト処理部１６０に求めさせ、加算・シフト処理部１６０の出力先が平均処理部１７０になるように制御する。制御部１１０は、上記の１つの参照画素をメモリ８４から読み出して、加算・シフト処理部１６０から１／２精度の補間画素が平均処理部１７０への出力に伴い、該参照画素を平均処理部１７０に出力する。また、平均処理部１７０の出力先が外部になるように制御する。
これにて、図１６における補間画素ａ、ｃ、ｄ、ｎが求められ、平均処理部１７０から外部に出力される。
【０１２０】
（２）２つの１／２精度の補間画素の平均により求められる場合
制御部１１０は、まず、片方の１／２精度の補間画素を求めさせる。この場合、制御部１１０は、加算・シフト処理部１６０の出力先が制御部１１０になるように制御すると共に、加算・シフト処理部１６０からの片方の１／２精度の補間画素を保持する。
【０１２１】
そして、制御部１１０は、他方の１／２精度の補間画素を求めさせる。この場合、制御部１１０は、加算・シフト処理部１６０の出力先が平均処理部１７０になるように制御すると共に、加算・シフト処理部１６０から他方の１／２精度の補間画素が平均処理部１７０への出力に伴い、保持した片方の１／２精度の補間画素を平均処理部１７０に出力する。また、平均処理部１７０の出力先が外部になるように制御する。
これにて、図１６における補間画素ｆ、ｉ、ｋ、ｑ、ｅ、ｇ、ｐ、ｒが求められ、平均処理部１７０から外部に出力される。
【０１２２】
すなわち、Ｈ．２６４の場合、輝度について、全ての１／２精度の補間画素は加算・シフト処理部１６０から外部に出力され、全ての１／４精度の補間画素は平均処理部１７０から外部に出力される。
【０１２３】
＜ＶＣ−１のＢｉｃｕｂｉｃの場合＞
図１７と図１８を参照して、補間画素ｗを例にして説明する。
【０１２４】
１．４つの参照画素から求められる補間画素（輝度）の場合
この場合、図１８における画素Ｑ１、Ｑ２、Ｑ３、Ｑ４は、参照画素であり、図１７における補間画素ａ、ｄは、１／４位置の補間画素ｗに該当し、補間画素ｂ、ｈ、ｍは１／２位置の補間画素ｗに該当し、補間画素ｃ、ｎは、３／４位置の補間画素ｗに該当する。
【０１２５】
この場合、制御部１１０は、当該補間画素ｗを求めるために必要な４つの参照画素Ｑ１〜Ｑ４をメモリ８４から読出し、水平フィルタ１３０または垂直フィルタ１５０に出力すると共に、水平フィルタ１３０または垂直フィルタ１５０の出力先が加算・シフト処理部１６０になり、加算・シフト処理部１６０の出力先が外部になるように制御し、補間画素ｗの位置に応じたパラメータを水平フィルタ１３０または垂直フィルタ１５０、加算・シフト処理部１６０に設定する。
【０１２６】
具体的には、上記４つの参照画素Ｑ１〜Ｑ４が水平に並び、補間画素ｗが１／４位置の画素である場合には、制御部１１０は、該４つの参照画素Ｑ１〜Ｑ４を水平フィルタ１３０に出力し、式（２０）が示す処理が行われるように水平フィルタ１３０と加算・シフト処理部１６０のパラメータを設定する。
【０１２７】
また、上記４つの参照画素Ｑ１〜Ｑ４が水平に並び、補間画素ｗが１／２位置の画素である場合には、制御部１１０は、該４つの参照画素Ｑ１〜Ｑ４を水平フィルタ１３０に出力し、式（２１）が示す処理が行われるように水平フィルタ１３０と加算・シフト処理部１６０のパラメータを設定する。
【０１２８】
また、上記４つの参照画素Ｑ１〜Ｑ４が水平に並び、補間画素ｗが３／４位置の画素である場合には、制御部１１０は、該４つの参照画素Ｑ１〜Ｑ４を水平フィルタ１３０に出力し、式（２２）が示す処理が行われるように水平フィルタ１３０と加算・シフト処理部１６０のパラメータを設定する。
【０１２９】
一方、上記４つの参照画素Ｑ１〜Ｑ４が垂直に並ぶ場合には、制御部１１０は、参照画素Ｑ１〜Ｑ４を垂直フィルタ１５０に出力し、補間画素ｗの位置（１／４位置か、１／２位置か、３／４位置か）に応じて式（２０）〜式（２２）のいずれかの処理が行われるように垂直フィルタ１５０と加算・シフト処理部１６０のパラメータを設定する。
【０１３０】
２．４つの補間画素から求められる補間画素（輝度）の場合
この場合、図１８における画素Ｑ１、Ｑ２、Ｑ３、Ｑ４は、補間画素である。例えば、図１７における補間画素ｐは、この場合の１／４位置の補間画素に該当し、ｑはこの場合の１／２位置の補間画素に該当し、補間画素ｒはこの場合の３／４位置の補間画素に該当する。
【０１３１】
制御部１１０は、まず、補間画素ｗを求めるための４つの補間画素Ｑ１〜Ｑ４を求めさせる。例えば、補間画素ｒを求める場合、まず、垂直フィルタ１５０と加算・シフト処理部１６０に補間画素ｎｎ、ｎ、ｓ、ｓｓを順次求めさせると共に、加算・シフト処理部１６０の出力先が制御部１１０になるように制御する。４つの補間画素ｎｎ、ｎ、ｓ、ｓｓは、共に４つの参照画素から求められる補間画素であるため、上記で説明した手法で求められる。
【０１３２】
制御部１１０は、加算・シフト処理部１６０からの補間画素ｎｎ、ｎ、ｓを保持し、補間画素ｓｓが加算・シフト処理部１６０から出力されると、該４つの補間画素ｎｎ、ｎ、ｓ、ｓｓを水平フィルタ１３０に出力すると共に、式（２２）が示す処理が行われるように水平フィルタ１３０と加算・シフト処理部１６０を設定する。また、加算・シフト処理部１６０の出力先が外部になるように制御する。
【０１３３】
このように、ＶＣ−１のＢｉｃｕｂｉｃの場合、輝度について、全ての補間画素が加算・シフト処理部１６０から出力される。
【０１３４】
＜ＶＣ−１のＢｉｌｉｎｅａｒの場合＞
前述したように、この場合、全ての補間画素は、式（２３）が示す処理により求められる。式（２３）における加算・シフト処理の前の部分は、通常キュービックフィルタにより行われる。
【０１３５】
図５を参照して、本実施の形態において、式（２３）を示す処理を実現する手法を説明する。
補間画素ｅを求めるために、制御部１１０は、まず、メモリ８４から参照画素ＡとＢを読み出して水平フィルタ１３０に出力し、下記の式（４３）が示す処理が行われ、水平フィルタ１３０の出力先が制御部１１０になるように水平フィルタ１３０を設定する。これにより、水平フィルタ１３０から、画素Ｆの位置の水平補間値が得られる。制御部１１０は、水平フィルタ１３０からの画素Ｆの水平補間値を保持する。
【数１１】
2011249986.tif 000013
【０１３６】
そして、制御部１１０は、メモリ８４から参照画素ＣとＤを読み出して水平フィルタ１３０に出力し、式（４４）が示す処理が行われ、水平フィルタ１３０の出力先が制御部１１０になるように水平フィルタ１３０を設定する。
【０１３７】
制御部１１０は、水平フィルタ１３０から画素Ｇの水平補間値を得ると、保持している画素Ｆの水平補間値と、画素Ｇの水平補間値を垂直フィルタ１５０に出力し、式（４５）が示す処理が行われるように垂直フィルタ１５０と加算・シフト処理部１６０のパラメータを設定すると共に、垂直フィルタ１５０の出力先が加算・シフト処理部１６０になり、加算・シフト処理部１６０の出力先が外部になるように制御する。
【０１３８】
式（４３）〜（４５）が示す処理は、式（２３）が示す処理と等価であるため、このようにして、ＶＣ−１のＢｉｌｉｎｅａｒの場合、輝度について、全ての補間画素は、加算・シフト処理部１６０から外部に出力される。
【０１３９】
勿論、式（４３）〜（４５）の代わりに、式（２３）が示す処理と等価であるため、下記の式（４６）〜（４８）が示すように処理してもよい。図６を参照して説明する。
【数１２】
2011249986.tif 000014
【０１４０】
補間画素ｅを求めるために、制御部１１０は、まず、メモリ８４から参照画素ＡとＣを読み出して垂直フィルタ１５０に出力し、式（４６）が示す処理が行われ、垂直フィルタ１５０の出力先が制御部１１０になるように垂直フィルタ１５０を設定する。これにより、垂直フィルタ１５０から、画素Ｆの位置の垂直補間値が得られる。制御部１１０は、垂直フィルタ１５０からの画素Ｆの垂直補間値を保持する。
【０１４１】
そして、制御部１１０は、メモリ８４から参照画素ＢとＤを読み出して垂直フィルタ１５０に出力し、式（４７）が示す処理が行われ、垂直フィルタ１５０の出力先が制御部１１０になるように垂直フィルタ１５０を設定する。
【０１４２】
制御部１１０は、垂直フィルタ１５０から画素Ｇの垂直補間値を得ると、保持している画素Ｆの垂直補間値と、画素Ｇの垂直補間値を水平フィルタ１３０に出力し、式（４８）が示す処理が行われるように水平フィルタ１３０と加算・シフト処理部１６０のパラメータを設定すると共に、水平フィルタ１３０の出力先が加算・シフト処理部１６０になり、加算・シフト処理部１６０の出力先が外部になるように制御する。
【０１４３】
この場合も、全ての補間画素は、加算・シフト処理部１６０から外部に出力される。
【０１４４】
＜ＭＰＥＧ４のｑｍｃモードの場合＞
この場合、１／４精度まで補間画素を求める必要がある。
１．１／２精度の補間画素（輝度）の場合
（１）（１／２，０）位置の補間画素
図２０における補間画素ｂ−１とｂ１は、この場合の補間画素に該当する。８つの参照画素に対して式（２５）が示す処理が行われるように、制御部１１０は、水平フィルタ１３０と加算・シフト処理部１６０の設定及び制御を行う。補間画素ｂ−１とｂ１を求める処理は、水平フィルタ１３０のタップ数、及び各パラメータが異なる以外、Ｈ．２６４の場合の（１／２，０）位置の補間画素を求める処理と同様であるので、ここで詳細な説明を省略する。
【０１４５】
（２）１／２精度の補間画素のうちの、（０，１／２）位置の補間画素
図２０における補間画素ｃは、この場合の補間画素に該当する。８つの参照画素に対して式（２６）が示す処理が行われるように、制御部１１０は、垂直フィルタ１５０と加算・シフト処理部１６０の設定及び制御を行う。補間画素ｃを求める処理は、垂直フィルタ１５０のタップ数、及び各パラメータが異なる以外、Ｈ．２６４の場合の（０，１／２）位置の補間画素を求める処理と同様であるので、ここで詳細な説明を省略する。
【０１４６】
（３）１／２精度の補間画素のうちの、（１／２，１／２）位置の補間画素
図２０における補間画素ｄは、この場合の補間画素に該当する。この場合、まず、制御部１１０は、補間画素ｄを求めるための８つの（１／２，０）位置の補間画素を水平フィルタ１３０と加算・シフト処理部１６０に求めさせると共に、加算・シフト処理部１６０から出力されたこの８つの補間画素を保持する。そして、保持された８つの補間画素を垂直フィルタ１５０に出力し、式（２７）が示す処理が行われるように垂直フィルタ１５０と加算・シフト処理部１６０を設定する。また、加算・シフト処理部１６０の出力先が外部になるように加算・シフト処理部１６０を制御する。
すなわち、ＭＰＥＧ４のｑｍｃモードの場合、全ての１／２精度の補間画素は、加算・シフト処理部１６０から外部に出力される。
【０１４７】
２．１／４精度の補間画素（輝度）の場合
（１）（１／４，０）位置と（３／４，０）位置の補間画素
図２０における補間画素ｅとｆは、この場合の補間画素に該当する。式（２８）と（２９）が示すように、補間画素ｅとｆは、１つの参照画素と１つの（１／２，０）位置の補間画素の平均により求められる。そのため、制御部１１０は、まず、上述したように、水平フィルタ１３０と加算・シフト処理部１６０に該（１／２，０）位置の補間画素を求めさせ、加算・シフト処理部１６０の出力先が平均処理部１７０になるように制御する。加算・シフト処理部１６０から該（１／２，０）位置の補間画素が平均処理部１７０への出力に伴い、上記１つの参照画素を平均処理部１７０に出力する。また、平均処理部１７０の出力先が外部になるように制御する。これにて、平均処理部１７０から外部に（１／４，０）位置または（３／４，０）位置の補間画素が出力される。
【０１４８】
（２）（１／４，１／２）位置と（３／４，１／２）位置の補間画素
図２０における補間画素ｋとｌは、この場合の補間画素に該当する。
【０１４９】
式（３０）が示すように、（１／４，１／２）位置の補間画素ｋは、８つの（１／４，０）位置の補間画素に対して８タップの垂直方向の補間を行って得た値（ここでは垂直補間値）を加算・シフト処理することにより得られる。制御部１１０は、まず、この８つの（１／４，０）位置の補間画素が求められるように設定や制御を行う。この場合、制御部１１０は、平均処理部１７０の出力先が制御部１１０になるように制御をし、平均処理部１７０からの出力を保持する。
【０１５０】
そして、制御部１１０は、平均処理部１７０からの８つの（１／４，０）位置の補間画素を垂直フィルタ１５０に出力し、式（３０）が示す処理が行われるように垂直フィルタ１５０と加算・シフト処理部１６０を設定する。また、加算・シフト処理部１６０の出力先が外部になるように制御する。
【０１５１】
式（３１）が示すように、（３／４，１／２）位置の補間画素ｌは、８つの（３／４，０）位置の補間画素に対して８タップの垂直方向の補間を行って得た垂直補間値を加算・シフト処理することにより得られる。補間画素ｌを求める処理は、８つの（１／４，０）位置の補間画素の代わりに８つの（３／４，０）位置の補間画素が使用される点を除き、（１／４，１／２）位置の補間画素ｋを求める処理と同様であるので、ここで詳細な説明を省略する。
【０１５２】
このように、ＭＰＥＧ４のｑｍｃモードの場合、１／４精度の補間画素のうちの、（１／４，１／２）位置と（３／４，１／２）位置の補間画素は、加算・シフト処理部１６０から外部に出力される。
【０１５３】
（３）他の１／４精度の補間画素
図２０におけるｇ、ｈ、ｉ、ｊ、ｍ、ｎ、ｏ、ｐは、この場合の補間画素に該当する。式（３２）〜（３９）が示すように、上述した各補間画素は、１つの参照画素と１つの１／２精度の補間画素の平均値（式（３２）、（３６））、または２つの１／２精度の補間画素の平均値（式（３４）、（３５）、（３８））、または２つの１／４精度の補間画素の平均値（式（３３）、（３７）、（３９））である。この場合の各補間画素は、平均処理部１７０から外部に出力される。
【０１５４】
＜ＭＰＥＧ４のｈｍｃモードとＭＰＥＧ２の場合＞
１．（１／２，０）と（０，１／２）位置の補間画素
図２１における補間画素ｂ、ｃ、ｅは、この場合の補間画素に該当する。式（４０）と（４１）が示すように、これらの補間画素は、２つの参照画素の平均値により求められる。そのため、制御部１１０は、メモリ８４から該補間画素を求めるために必要な２つの参照画素を読み出して平均処理部１７０に出力し、平均処理部１７０の出力先が外部になるように制御する。すなわち、この場合、（１／２，０）と（０，１／２）位置の補間画素は、平均処理部１７０から外部に出力される。
【０１５５】
２．（１／２，１／２）位置の補間画素
図２１における画素ｄは、この場合の補間画素に該当する。式（４２）が示すように、この補間画素は、上下左右の４つの参照画素の平均値であり、通常キュービックフィルタにより求められる。
【０１５６】
本実施の形態において、ＶＣ−１のＢｉｌｉｎｅａｒの場合と同様の手法で、補間画素ｄが求められる。図５と図６、及び式（４３）〜（４５）における「ｘＦｒｃ」、「ｙＦｒｃ」が「０．５」に固定され、パラメータ「ｒｎｄ」が異なる点を除き、補間画素ｄを求める処理は、ＶＣ−１のＢｉｌｉｎｅａｒの場合に補間画素ｅを求める処理と同様であるので、ここで詳細な説明を省略する。なお、ＭＰＥＧ２の場合は、「ｒｎｄ」というパラメータが無いので、加算・シフト処理部１６０に対して「ｒｎｄ」が「０」に設定される。
【０１５７】
すなわち、ＭＰＥＧ４のｈｍｃモードとＭＰＥＧ２の場合、（１／２，１／２）位置の補間画素は加算・シフト処理部１６０から出力される。
【０１５８】
＜色差の補間画素の場合＞
色差の補間画素は、ＶＣ−１のＢｉｌｉｎｅａｒの場合と同様の手法で求められる。
【０１５９】
本実施の形態の動画像復号装置８０における動き補償エンジン１００は、制御部１１０と、水平フィルタ１３０を備えた水平フィルタリング処理部１２０と、垂直フィルタ１５０を備えた垂直フィルタリング処理部１４０と、加算・シフト処理部１６０と、平均処理部１７０とを有する。水平フィルタリング処理部１２０と垂直フィルタリング処理部１４０の出力先は、制御部１１０と加算・シフト処理部１６０間で切り換え可能である。加算・シフト処理部１６０の出力先は、制御部１１０と、平均処理部１７０と、外部との間で切り換え可能である。平均処理部１７０の出力先は、外部と制御部１１０間で切り換え可能である。制御部１１０は、動画像の圧縮規格と目標位置に応じて、各処理部のパラメータの設定、各処理部の出力先の制御、いずれかの処理部から制御部１１０に出力された該処理部の処理結果の保持、参照画素及び／または保持中の値をいずれかの処理への出力などを行うことにより、目標位置の補間画素を求める。
【０１６０】
目標位置の補間画素を求めるために、上下左右に隣接する４つの画素に対して２次元の補間が必要な場合に、制御部１１０は、該４つの画素を、水平に並ぶ２つの画素ずつ水平フィルタ１３０に出力し、その後、水平フィルタ１３０により得られた２つの水平補間値を垂直フィルタ１５０に出力する。または、４つの画素を、垂直に並ぶ２つの画素ずつ垂直フィルタ１５０に出力し、その後、垂直フィルタ１５０により得られた２つの垂直補間値を水平フィルタ１３０に出力する。
【０１６１】
このように、本実施の形態における動き補償エンジン１００は、複数の圧縮規格に対応できると共に、２つのフィルタによりキュービックフィルタの機能を実現できている。そのため、動き補償装置の回路規模が小さくできる。
【０１６２】
また、図２２に示す動き補償装置は、補間処理が垂直フィルタ、水平フィルタの順に固定されている。しかし、ＭＰＥＧ４のＡＳＰ（Ａｄｖａｎｃｅｄ  Ｓｉｍｐｌｅ  Ｐｒｏｆｉｌｅ）では、１／４精度の動き補償の際に、補間処理が水平フィルタ、垂直フィルタの順で定められている。従って、図２２に示す動き補償装置は、ＭＰＥＧ４の１／４精度の動き補償には対応できない。
【０１６３】
対して、本実施の形態における動き補償エンジン１００によれば、制御部１１０により、水平フィルタと垂直フィルタの処理順番が任意に調整可能であり、ＭＰＥＧ４の１／４精度の動き補償にも対応できる。
【０１６４】
＜第２の実施の形態＞
図７は、本発明の第２の実施の形態にかかる動き補償エンジン２００を示す。動き補償エンジン２００は、図２に示す動き補償エンジン１００の代わりに図１に示す動画像復号装置８０に設けることができる。
【０１６５】
動き補償エンジン２００は、制御部２１０、水平フィルタリング処理部１２０、垂直フィルタリング処理部１４０、加算・シフト処理部２６０、平均処理部２７０を備える。
【０１６６】
水平フィルタリング処理部１２０と垂直フィルタリング処理部１４０は、動き補償エンジン１００における水平フィルタリング処理部１２０と垂直フィルタリング処理部１４０と同様であり、ここで詳細な説明を省略する。
【０１６７】
加算・シフト処理部２６０は、動き補償エンジン１００における加算・シフト処理部１６０と同様の機能を実現するものであるが、水平加算・シフト処理部２６２と垂直加算・シフト処理部２６４に分けられている。平均処理部２７０は、動き補償エンジン１００における平均処理部１７０と同様の機能を実現するものであるが、水平平均処理部２７２と垂直平均処理部２７４に分けられている。
【０１６８】
水平加算・シフト処理部２６２は、水平フィルタリング処理部１２０からの水平補間値が入力され、該水平補間値に対して加算・シフト処理を行う。加算・シフト処理のパラメータが可変であり、処理結果の加算・シフト値の出力先は、制御部２１０と水平平均処理部２７２間で切り換え可能である。水平加算・シフト処理部２６２は、パラメータが制御部２１０により設定され、出力先が制御部２１０により制御される。
【０１６９】
水平加算・シフト処理部２６２は、水平フィルタリング処理部１２０からの水平補間値が入力され、該水平補間値に対して加算・シフト処理を行う。加算・シフト処理のパラメータが可変であり、処理結果の加算・シフト値の出力先は、外部、制御部２１０、水平平均処理部２７２間で切り換え可能である。水平加算・シフト処理部２６２は、パラメータが制御部２１０により設定され、出力先が制御部２１０により制御される。
【０１７０】
垂直加算・シフト処理部２６４は、垂直フィルタリング処理部１４０からの垂直補間値が入力され、該垂直補間値に対して加算・シフト処理を行う。加算・シフト処理のパラメータが可変であり、処理結果の加算・シフト値の出力先は、外部と、制御部２１０、垂直平均処理部２７４間で切り換え可能である。垂直加算・シフト処理部２６４も、パラメータが制御部２１０により設定され、出力先が制御部２１０により制御される。
【０１７１】
水平平均処理部２７２は、２つの値が入力され、該２つの値の平均値を求めるものである。この２つの値は、制御部２１０と水平加算・シフト処理部２６２のいずれか一方または両方から入力される。水平平均処理部２７２は、出力先が外部と制御部２１０間で切り換え可能である。水平平均処理部２７２の出力先は、制御部２１０により制御される。
【０１７２】
垂直平均処理部２７４は、２つの値が入力され、該２つの値の平均値を求めるものである。この２つの値は、制御部２１０と垂直加算・シフト処理部２６４のいずれか一方または両方から入力される。垂直平均処理部２７４も、出力先が外部と制御部２１０間で切り換え可能である。垂直平均処理部２７４の出力先は、制御部２１０により制御される。
【０１７３】
制御部２１０は、補間画素を求める際に、制御部１１０が加算・シフト処理部１６０に対して行う設定と制御を、適宜、水平加算・シフト処理部２６２と垂直加算・シフト処理部２６４に対して行い、制御部１１０が平均処理部１７０に対して行う設定と制御を、適宜、水平平均処理部２７２と垂直平均処理部２７４に対して行う。これらの点を除き、動き補償エンジン１００における制御部１１０と同様の動作をするので、ここで詳細な説明を省略する。
【０１７４】
本実施の形態にかかる動き補償エンジン２００は、図２に示す動き補償エンジン１００と同様の効果を得ることができる。また、加算・シフト処理部２６０を水平加算・シフト処理部２６２と垂直加算・シフト処理部２６４に分け、平均処理部２７０を水平平均処理部２７２と垂直平均処理部２７４に分けることによって、制御部２１０による制御が単純にできる。
【０１７５】
勿論、動き補償エンジン２００に対して、加算・シフト処理部２６０の代わりに、動き補償エンジン１００における加算・シフト処理部１６０を設け、または平均処理部２７０の代わりに、動き補償エンジン１００における平均処理部１７０を設けるようにしてもよい。
【０１７６】
＜第３の実施の形態＞
図８は、本発明の第３の実施の形態にかかる動き補償エンジン３００を示す。動き補償エンジン３００は、図２に示す動き補償エンジン１００の代わりに図１に示す動画像復号装置８０に設けることができる。動き補償エンジン３００では、垂直フィルタリング処理部は、並行して動作可能な複数の垂直フィルタを備える。
【０１７７】
図８に示すように、動き補償エンジン３００は、制御部３１０、水平フィルタリング処理部３２０、垂直フィルタリング処理部３４０、水平加算・シフト処理部３６０、４つの垂直加算・シフト処理部３７２〜３７８、水平平均処理部３８０、垂直平均処理部３９０を備える。水平フィルタリング処理部３２０は、水平フィルタ３３０を有し、垂直フィルタリング処理部３４０は、４つの垂直フィルタ３４２〜３４８を有し、該４つの垂直フィルタ３４２〜３４８は、４つの垂直加算・シフト処理部３７２〜３７８にそれぞれ対応する。
【０１７８】
水平フィルタ３３０、水平加算・シフト処理部３６０、水平平均処理部３８０は、図７に示す動き補償エンジン２００の水平フィルタ１３０、水平加算・シフト処理部２６２、水平平均処理部２７２と同様の動作をする。垂直加算・シフト処理部３７２〜３７８は、動き補償エンジン２００の垂直フィルタ１５０と同様の動作をする。垂直平均処理部３９０は、垂直加算・シフト処理部３７８と、垂直加算・シフト処理部３７６と、制御部３１０に接続され、これらの機能ブロックのうちのいずれか２つから値の入力がされる。
【０１７９】
制御部３１０は、水平レジスタ群３１２と垂直レジスタ群３１４備える。水平レジスタ群３１２は、水平フィルタ３３０の８つのレジスタにそれぞれ対応し、該８つのレジスタに設定する値をそれぞれ格納する８つのレジスタを有する。垂直レジスタ群３１４は、垂直フィルタリング処理部３４０に含まれる４つの垂直フィルタのレジスタ（計３２個）にそれぞれ対応し、該３２個のレジスタに設定する値をそれぞれ格納する３２個のレジスタを有する。
【０１８０】
制御部３１０は、目標位置が整数位置である場合に、該目標位置の参照画素をメモリ８４から読み出して外部に出力する。目標位置が整数位置ではない場合に、補間画素を求めるための種々の設定や制御を行う。例として、いくつかの圧縮規格と目標位置の場合について説明する。説明において参照する図面において、実線枠により示動作する機能ブロックを意味し、点線枠により動作しない機能ブロックを示す。なお、分かりやすくように、動作しない機能ブロックへの入力線と、該機能ブロックからの出力線とを図示しないようにする。
【０１８１】
図９は、Ｈ．２６４の場合に、輝度について、動き補償エンジン３００による（１／４，１／２）位置の補間画素を求める処理を説明するための図である。図１６における補間画素ｉがこの場合の補間画素に該当するため、補間画素ｉを例にする。
【０１８２】
制御部３１０は、ＤＭＡコントローラ８６を介してメモリ８４から参照画素Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊを読み出し、水平レジスタ群３１２の８つのレジスタのうちの６つを介して、水平フィルタ３３０の８つのレジスタのうちの６つにそれぞれ設定する。また、式（１）が示す処理が行われるように水平フィルタ３３０のパラメータを設定すると共に、水平フィルタ３３０の出力先が制御部３１０になるように制御する。
【０１８３】
制御部３１０は、水平フィルタ３３０により得られた水平補間値ｂ'を、垂直レジスタ群３１４における、垂直フィルタ３４６に対応する８つのレジスタのうちの１つに一時的に保持する。制御部３１０は、ｂ'を求めるときと同様の処理で、ａａ、ｂｂ、ｓ'、ｇｇ、ｈｈを水平フィルタリング処理部３２０に求めさせて、保持する。
【０１８４】
制御部３１０は、ａａ、ｂｂ、ｂ'、ｓ'、ｇｇ、ｈｈが求められると、制御部３１０は、該６つの水平補間値を垂直フィルタ３４６の８つのレジスタのうちの６つにそれぞれ設定する。また、式（６）が示す処理が行われるように垂直フィルタ３４６のパラメータを設定し、垂直フィルタ３４６の出力先が垂直加算・シフト処理部３７６になるように制御する。
【０１８５】
並行して、制御部３１０は、メモリ８４から６つの参照画素Ａ、Ｃ、Ｇ、Ｍ、Ｒ、Ｔを読み出して垂直フィルタ３４８の８つのレジスタ内の６つにそれぞれ設定する。また、式（３）が示す処理が行われるように垂直フィルタ３４８のパラメータを設定すると共に、垂直フィルタ３４８の出力先が垂直加算・シフト処理部３７８になるように制御する。
【０１８６】
また、制御部３１０は、垂直加算・シフト処理部３７６に対して式（７）に示す加算・シフト処理のパラメータを設定し、垂直加算・シフト処理部３７８に対して式（４）が示す加算・シフト処理のパラメータを設定し、垂直加算・シフト処理部３７６と垂直加算・シフト処理部３７８の出力先が垂直平均処理部３９０になり、垂直平均処理部３９０の出力先が外部になるように制御する。
【０１８７】
垂直加算・シフト処理部３７６は、垂直フィルタ３４６が出力した垂直補間値（ｊ'）を式（７）に示す加算・シフト処理し、補間画素ｊを得て垂直平均処理部３９０に出力する。垂直加算・シフト処理部３７８は、垂直フィルタ３４８が出力した垂直補間値（ｈ'）を式（４）に示す加算・シフト処理し、補間画素ｈを得て垂直平均処理部３９０に出力する。
【０１８８】
垂直平均処理部３９０は、式（１３）が示すように、補間画素ｊと補間画素ｈを平均して補間画素ｉとなる平均値を得て外部に出力する。
【０１８９】
図１０は、ＶＣ−１のＢｉｃｕｂｉｃの場合に、輝度について、（３／４，３／４）位置の補間画素を求める処理を説明するための図である。図１７における補間画素ｒがこの場合の補間画素に該当するため、補間画素ｒを例にする。
【０１９０】
制御部３１０は、メモリ８４から参照画素「Ａ、Ｅ、Ｉ、Ｍ」、「Ｂ、Ｆ、Ｊ、Ｎ」、「Ｃ、Ｇ、Ｋ、Ｏ」、「Ｄ、Ｈ、Ｌ、Ｐ」を読み出して、垂直フィルタ３４２〜３４８のレジスタにそれぞれ設定する。また、式（２２）が示す処理が行われるように、垂直フィルタ３４２〜３４８と、垂直加算・シフト処理部３７２〜３７８のパラメータを設定すると共に、各垂直フィルタの出力先が該垂直フィルタに対応する垂直加算・シフト処理部になり、各加算・シフト処理部の出力先が制御部３１０になるように制御する。
【０１９１】
制御部３１０は、水平レジスタ群３１２を介して、垂直加算・シフト処理部３７２から出力した補間画素ｎｎ、ｎ、ｓ、ｓｓを水平フィルタ３３０の８つのレジスタのうちの４つにそれぞれ設定する。また、式（２２）が示す処理が行われるように、水平フィルタ３３０と水平加算・シフト処理部３６０のパラメータを設定し、水平フィルタ３３０の出力先が水平加算・シフト処理部３６０になり、水平加算・シフト処理部３６０の出力先が外部になるように制御する。
これにて、補間画素ｒは、水平加算・シフト処理部３６０から外部に出力される。
【０１９２】
図１１は、ＭＰＥＧ４のｑｍｃモードで、輝度について、（１／４，３／４）位置の補間画素を求める処理を説明するための図である。図２０における補間画素ｎがこの場合の補間画素に該当するため、補間画素ｎを例にする。
【０１９３】
制御部３１０は、メモリ８４から８つの参照画素Ａ−４，−１、Ａ−３，−１、Ａ−２，−１、Ａ−１，−１、Ａ１，−１、Ａ２，−１、Ａ３，−１、Ａ４，−１を読み出して、水平フィルタ３３０の８つのレジスタにそれぞれ設定する。また、式（２５）が示す処理が行われるように、水平フィルタ３３０と水平加算・シフト処理部３６０のパラメータを設定し、水平フィルタ３３０の出力先が水平加算・シフト処理部３６０になり、水平加算・シフト処理部３６０の出力先が水平平均処理部３８０になり、水平平均処理部３８０の出力先が制御部３１０になるように制御する。これにより、水平加算・シフト処理部３６０から補間画素ｂ−１となる加算・シフト値が得られ、水平平均処理部３８０に出力される。
【０１９４】
並行して、制御部３１０は、参照画素Ａ１，−１を水平平均処理部３８０に出力する。これにより、水平平均処理部３８０から、ｂ−１とＡ１，−１の平均値が得られ、制御部３１０に出力される。この平均値は、式（２８）が示すように、補間画素ｅ−１である。
【０１９５】
制御部３１０は、ｅ−１を求めるときと同様の処理で、ｅ−４、ｅ−３、ｅ−２、ｅ１、ｅ２、ｅ３、ｅ４を水平フィルタ３３０、水平加算・シフト処理部３６０、水平平均処理部３８０に求めさせて、垂直レジスタ群３１４に一時的に保持する。
【０１９６】
ｅ−４、ｅ−３、ｅ−２、ｅ−１、ｅ１、ｅ２、ｅ３、ｅ４が求められると、制御部３１０は、この８つの補間画素を垂直フィルタ３４８に設定する。また、式（３０）が示す処理が行われるように、垂直フィルタ３４８と垂直加算・シフト処理部３７８のパラメータを設定し、垂直フィルタ３４８の出力先が垂直加算・シフト処理部３７８になり、垂直加算・シフト処理部３７８の出力先が垂直平均処理部３９０になり、垂直平均処理部３９０の出力先が外部になるように制御する。
【０１９７】
垂直加算・シフト処理部３７８から補間画素ｋとなる加算・シフト値が垂直平均処理部３９０に出力される。並行して、制御部３１０は、補間画素ｅ１を垂直平均処理部３９０に出力する。これにより、垂直平均処理部３９０から、ｋとｅ１の平均値が得られ、外部に出力される。この平均値が、式（３７）が示すように、補間画素ｎである。
【０１９８】
図１２は、ＶＣ−１のＢｉｌｉｎｅａｒの場合、輝度について、補間画素を求める処理を説明するための図である。この場合、各補間画素は、図１９と式（２３）が示すように、該補間画素を囲む上下左右の４つの参照画素に対して２次元の線形補間を行うことにより得られる。
【０１９９】
本実施の形態において、図１９と式（２３）が示す処理は、図５と式（４３）〜（４５）に示すように行われる。具体的には、図１２に示すように、制御部３１０は、補間画素ｅを求めるために、まず、メモリ８４から参照画素ＡとＢを読み出して水平フィルタ３３０の８つのレジスタのうちの２つに設定する。また、式（４３）が示す処理が行われるように、水平フィルタ３３０に対して、パラメータ「ｘＦｒｃ」と「８−ｘＦｒｃ」を設定し、水平フィルタ３３０の出力先が制御部３１０になるように制御する。
【０２００】
水平フィルタ３３０の出力は、画素Ｆである。制御部３１０は、画素Ｆを垂直レジスタ群３１４の１つのレジスタに保持すると共に、参照画素Ｃ、Ｄを水平フィルタ３３０に設定し、画素Ｇを求めさせる。
【０２０１】
水平フィルタ３３０により画素Ｇが求められると、制御部３１０は、画素ＦとＧを垂直フィルタ３４８の８つのレジスタのうちの２つに設定する。また、式（４５）が示す処理が行われるように、垂直フィルタ３４８のパラメータ「ｙＦｒｃ」と「８−ｙＦｒｃ」、垂直加算・シフト処理部３７８のパラメータ「ｒｎｄ」を設定し、垂直フィルタ３４８の出力先が垂直加算・シフト処理部３７８になり、垂直加算・シフト処理部３７８の出力先が外部になるように制御する。
【０２０２】
これにより、垂直加算・シフト処理部３７８から、補間画素ｅとなる加算・シフト値が外部に出力される。
【０２０３】
図１３は、ＭＰＥＧ４のｈｍｃモードまたはＭＰＥＧ２の場合、輝度について、（１／２，０）位置の補間画素を求める処理を説明するための図である。図２１における補間画素ｂがこの場合の補間画素に該当するため、補間画素ｂを例にする。
【０２０４】
図１３に示すように、制御部３１０は、メモリ８４から参照画素Ａ、Ｂを読み出して水平平均処理部３８０に出力し、水平平均処理部３８０の出力先が外部になるように制御する。これにより、参照画素ＡとＢの平均値が水平平均処理部３８０から外部に出力される。この平均値は、補間画素ｂとなる。
【０２０５】
ＭＰＥＧ４のｈｍｃモードまたはＭＰＥＧ２の場合、輝度について、（１／２，１／２）位置の補間画素（図２１における補間画素ｄ）を求める際に、式（４２）が示す２次元の線形補間が必要である。これについて、図１２に示すＶＣ−１Ｂｉｌｉｎｅａｒ時の２次元の線形補間と同様な手法で行われる。
【０２０６】
色差については、Ｈ．２６４、ＶＣ−１、ＭＰＥＧ４、ＭＰＥＧ２のいずれの規格においても、２次元の線形補間により補間画素が求められる。この場合も、図１２に示すＶＣ−１Ｂｉｌｉｎｅａｒ時の２次元の線形補間と同様な手法で補間画素を求めればよい。
【０２０７】
本第３の実施の形態にかかる動き補償エンジン３００は、前述した動き補償エンジン１００と動き補償エンジン２００と同様の効果を得ることができると共に、並行して動作可能な複数の垂直フィルタを設けることにより、処理の高速化を図ることができる。
【０２０８】
＜第４の実施の形態＞
動き補償エンジンに垂直フィルタを複数設けると共に、水平フィルタも複数設けてもよい。図１４は、並行して動作可能な４つの水平フィルタと、並行して動作可能な８つの垂直フィルタを備えた動き補償エンジン４００を示す。
【０２０９】
動き補償エンジン４００は、制御部４１０、水平フィルタリング処理部４２０、垂直フィルタリング処理部４４０、加算・シフト処理部４６０、水平平均処理部４７２、垂直平均処理部４７４を備える。
【０２１０】
水平フィルタリング処理部４２０は、４つの水平フィルタを有し、該４つの水平フィルタは、前述した各実施の形態における動き補償エンジンの水平フィルタと同様の構成を有する。
【０２１１】
垂直フィルタリング処理部４４０は、８つの垂直フィルタを有し、該８つの垂直フィルタは、前述した各実施の形態における動き補償エンジンの垂直フィルタと同様の構成を有する。
【０２１２】
加算・シフト処理部４６０は、水平フィルタリング処理部４２０の各水平フィルタにそれぞれ対応する４つの水平加算・シフト処理部と、垂直フィルタリング処理部４４０の各垂直フィルタとそれぞれ対応する８つの垂直加算・シフト処理部を有する。
【０２１３】
水平平均処理部４７２と垂直平均処理部４７４は、平均処理部４７２を構成する。
【０２１４】
水平フィルタリング処理部４２０における各水平フィルタの出力先は、相対応する水平加算・シフト処理部と、制御部４１０間で切り換え可能である。垂直フィルタリング処理部４４０における各垂直フィルタの出力先は、相対応する垂直加算・シフト処理部と、制御部４１０間で切り換え可能である。
【０２１５】
加算・シフト処理部４６０の各水平加算・シフト処理部の出力先は、水平平均処理部４７２、制御部４１０、外部間で切り換え可能である。加算・シフト処理部４６０の各垂直加算・シフト処理部の出力先は、垂直平均処理部４７４、制御部４１０、外部間で切り換え可能である。
【０２１６】
水平平均処理部４７２と垂直平均処理部４７４の出力先は、制御部４１０と外部間で切り換え可能である。
【０２１７】
制御部４１０は、目標位置が整数位置であるときに、該整数位置の参照画素を読み出して外部に出力する。一方、目標位置が整数位置ではないときに、コーデック信号が示す圧縮規格と目標位置とに応じて、各処理部のパラメータの設定、各処理部の出力先の制御、該処理部の処理結果の出力先が制御部４１０であるときにおいて該処理結果の保持、各処理部に出力する値などの設定および制御を行うことによって、目標位置の補間画素を求める。
【０２１８】
本実施の形態の動き補償エンジン４００は、前述した各動き補償エンジンの効果を得ることができると共に、並行して動作可能な水平フィルタと垂直フィルタの数が多いので、より高速な処理ができる。
【０２１９】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述した実施の形態に対してさまざまな変更、増減を行ってもよい。これらの変更、増減が行われた変形例も本発明の範囲にあることは当業者に理解されるところである。
【０２２０】
例えば、上述した各実施の形態において、各処理部のパラメータは、制御部により設定される。これらの処理部の内部に、圧縮規格と目標位置に応じてパラメータを切り換える機能ブロックを設けるようにしてもよい。この場合、これらの機能ブロックは、上述した各実施の形態における制御部の一部になる。
【０２２１】
また、上述した各実施の形態において、各処理部の出力先は、制御部により制御される。これらの処理部の内部に、圧縮規格と目標位置に応じて出力先を切り換えるセレクタを設けるようにしてもよい。この場合、これらのセレクタは、上述した各実施の形態における制御部の一部になる。
【符号の説明】
【０２２２】
３０  ＤＭＡ  Ｉ／Ｆ
４０  動き補償エンジン
４１  垂直フィルタ
４２  第１水平フィルタ
４３  第２水平フィルタ
４４  キュービック整列部
４５  キュービックフィルタ
８０  動画像復号装置
８２  システムバス
８４  メモリ
８６  ＤＭＡコントローラ
８８  エントロピー復号部
９０  ＤＭＡ  ＩＦ
１００  動き補償エンジン
１１０  制御部
１２０  水平フィルタリング処理部
１３０  水平フィルタ
１４０  垂直フィルタリング処理部
１５０  垂直フィルタ
１６０  加算・シフト処理部
１７０  平均処理部
２００  動き補償エンジン
２１０  制御部  ２６０  加算・シフト処理部
２６２  水平加算・シフト処理部
２６４  垂直加算・シフト処理部
２７０  平均処理部
２７２  水平平均処理部
２７４  垂直平均処理部
３００  動き補償エンジン
３１０  制御部
３１２  水平レジスタ群
３１４  垂直レジスタ群
３２０  水平フィルタリング処理部
３３０  水平フィルタ
３４０  垂直フィルタリング処理部
３４２〜３４８  垂直フィルタ
３６０  水平加算・シフト処理部
３７２〜３７８  垂直加算・シフト処理部
３８０  水平平均処理部
３９０  垂直平均処理部
４００  動き補償エンジン
４１０  制御部  ４２０
水平フィルタリング処理部
４４０  垂直フィルタリング処理部
４６０  加算・シフト処理部
４７２  水平平均処理部
４７４  垂直平均処理部
【図１】
2011249986.tif 000015
【図２】
2011249986.tif 000016
【図３】
2011249986.tif 000017
【図４】
2011249986.tif 000018
【図５】
2011249986.tif 000019
【図６】
2011249986.tif 000020
【図７】
2011249986.tif 000021
【図８】
2011249986.tif 000022
【図９】
2011249986.tif 000023
【図１０】
2011249986.tif 000024
【図１１】
2011249986.tif 000025
【図１２】
2011249986.tif 000026
【図１３】
2011249986.tif 000027
【図１４】
2011249986.tif 000028
【図１５】
2011249986.tif 000029
【図１６】
2011249986.tif 000030
【図１７】
2011249986.tif 000031
【図１８】
2011249986.tif 000032
【図１９】
2011249986.tif 000033
【図２０】
2011249986.tif 000034
【図２１】
2011249986.tif 000035
【図２２】
2011249986.tif 000036