(57)【要約】【課題】処理速度を低下させることなくハードウェア量を削減すること。【解決手段】フィルタ演算器１は、フィルタ＃１、＃２について、入力データｆ０〜ｆ２とフィルタ＃１、＃２を構成する複数のフィルタ係数のそれぞれとをブースアルゴリズムを用いて積和演算する。このフィルタ演算器１は、入力データと当該入力データに対応付けられたフィルタ係数とからなる１以上の組データが入力され、１以上の部分積を生成する複数の部分積生成ユニット３、４と、部分積の総和を生成する加算部１０と、組データを、部分積生成ユニット３、４のいずれか１以上に入力するセレクタ７、８とを有する。例えば、セレクタ７、８は、部分積生成ユニット３により、一の組データから生成すべき部分積の一部が生成不能な場合、部分積生成ユニット３共に、他の部分積生成ユニット４の部分積生成部に当該組データを入力して部分積を生成させる。【選択図】図１
2007324980.tif 000002
【特許請求の範囲】
【請求項１】
複数のフィルタについて、複数の入力データとフィルタを構成する複数のフィルタ係数のそれぞれとをブースアルゴリズムを用いて積和演算するフィルタ処理装置であって、
前記入力データと当該入力データに対応付けられたフィルタ係数とからなる１以上の組データが入力され、１以上の部分積を生成する複数の部分積生成ユニットと、
前記複数の部分積生成ユニットにより生成される部分積の総和を生成する加算部と、
前記組データに応じ、前記複数の部分積生成ユニットを１以上選択して当該組データを入力する部分積生成部選択部とを有するフィルタ処理装置。
【請求項２】
前記部分積生成部選択部は、一の前記組データから生成すべき部分積の一部が一の部分積生成ユニットでは生成不能な場合、当該一の部分積生成ユニット、及び他の部分積生成ユニットに当該組データを入力して部分積を生成させる
ことを特徴とする請求項１記載のフィルタ処理装置。
【請求項３】
前記部分積生成ユニットの数は、前記複数のフィルタを構成するフィルタ係数の最大個数より少ない
ことを特徴とする請求項１又は２記載のフィルタ処理装置。
【請求項４】
前記複数の部分積生成ユニットは、少なくとも一は他とは演算能力が異なる
ことを特徴とする請求項１乃至３のいずれか１項記載のフィルタ処理装置。
【請求項５】
前記複数の部分積生成ユニットは、生成可能な部分積のうち最も大きいものの桁数が異なるものを含む
ことを特徴とする請求項４項記載のフィルタ処理装置。
【請求項６】
前記複数の部分積生成ユニットは、生成可能な部分積の数が異なるものを含む
ことを特徴とする請求項４又は５項記載のフィルタ処理装置。
【請求項７】
前記部分積生成ユニットは、２２ｉ（ｉ≧０）のｉに対応する複数の部分積生成部からなる
ことを特徴とする請求項１乃至６のいずれか１項記載のフィルタ処理装置。
【請求項８】
前記部分積生成部選択部は、一の前記組データから生成すべき部分積の一部が一の部分積生成ユニットでは生成不能な場合、当該一の部分積生成ユニット、及び他の部分積生成ユニットに含まれる代用部分積生成部を選択し、当該組データを入力して部分積を生成させるものであって、
前記代用部分積生成部は、前記他の部分積生成部に入力されるフィルタ係数の所定ビットからブースのアルゴリズムに従ってデコードした符号データが零になるものである
ことを特徴とする請求項７記載のフィルタ処理装置。
【請求項９】
前記部分積生成部選択部は、一の前記組データから生成すべき部分積の一部が一の部分積生成ユニットでは生成不能な場合、当該一の部分積生成ユニット、及び他の部分積生成ユニットに含まれる未使用の部分積生成部を選択し、当該組データを入力して部分積を生成させる
ことを特徴とする請求項７記載のフィルタ処理装置。
【請求項１０】
２２ｉ（ｉ≧０）のｉに対応する複数の部分積生成部の少なくとも一部の部分積生成部は、前記フィルタ係数の所定ビットからブースのアルゴリズムに従ってデコードした符号データを求めるブースデコーダと、前記ブースデコーダと前記入力データとの積を求める乗算部と、前記乗算部の選択結果を前記ｉに応じて所定ビットシフトするビットシフト部とを有する
ことを特徴とする請求項７乃至９のいずれか１項記載のフィルタ処理装置。
【請求項１１】
前記部分積生成部は、対応付けられるフィルタ係数の所定ビットについて、ブースのアルゴリズムに従ってデコードした符号データがいずれも１である場合、前記入力データをビットシフトするビットシフト部のみから構成される
ことを特徴とする請求項７乃至１０のいずれか１項記載のフィルタ処理装置。
【請求項１２】
前記部分積生成部は、対応付けられるフィルタ係数の所定ビットについて、ブースのアルゴリズムに従ってデコードした符号データがいずれも０である場合、前記フィルタ係数の所定ビットからブースのアルゴリズムに従ってデコードした符号データを求めるブースデコーダのみから構成される
ことを特徴とする請求項７乃至１０のいずれか１項記載のフィルタ処理装置。
【請求項１３】
前記一部の部分積生成部は、対応付けられるフィルタ係数の所定ビットについて、ブースのアルゴリズムに従ってデコードした符号データの１以上が−２、−１、２のいずれかである
ことを特徴とする請求項７乃至１０のいずれか１項記載のフィルタ処理装置。
【請求項１４】
フィルタのうち１つは、６タップフィルタであって、
Ｈ．２６４に準拠した動き補償処理及び／又は画面内予測処理におけるフィルタ演算を実行する
ことを特徴とする請求項１乃至１３のいずれか１項記載のフィルタ処理装置。
【請求項１５】
フィルタのうち１つは、６タップフィルタであって、
Ｈ．２６４、又はＨ．２６４及びＶＣ−１に準拠した動き補償処理におけるフィルタ演算を実行するフィルタ演算器である
ことを特徴とする請求項１乃至１３のいずれか１項記載のフィルタ処理装置。
【請求項１６】
複数種類の乗数群と被乗数群との乗算を実行する、ブースアルゴリズムを適用した乗算器であって、
前記被乗数と当該被乗数に対応付けられた乗数とからなる組データが入力され、１以上の部分積を生成する複数の部分積生成ユニットと、
前記複数の部分積生成ユニットにより生成される部分積の総和を生成する加算部と、
前記組データに応じ、前記複数の部分積生成ユニットを１以上選択して当該組データを入力する部分積生成部選択部とを有する乗算器。
【請求項１７】
予測画像を生成する動き補償処理装置であって、
垂直方向の入力データに対してフィルタ演算を行なう第１フィルタ演算部と、
水平方向の入力データに応じてフィルタ演算を行なう第２フィルタ演算部と、
前記第１及び第２フィルタ演算部の演算結果又は第１及び第２のフィルタ演算に入力する入力データに対して重み付けを行なう重み付け演算部とを有し、
前記第１及び第２フィルタ演算部は、複数のフィルタについて、複数の前記入力データとフィルタを構成する複数のフィルタ係数のそれぞれとをブースアルゴリズムを用いて積和演算するフィルタ演算部であって、
前記入力データと当該入力データに対応付けられたフィルタ係数とからなる１以上の組データが入力され、１以上の部分積を生成する複数の部分積生成ユニットと、
前記複数の部分積生成ユニットにより生成される部分積の総和を生成する加算部と、
前記前記組データに応じ、前記複数の部分積生成ユニットを１以上選択して当該組データを入力する部分積生成部選択部とを有する動き補償処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画の圧縮符号化復号に使用される動き補償処理におけるフィルタ演算を実行するために好適なフィルタ処理装置及び乗算器、並びにこれらを具備する動き補償処理装置に関する。
【背景技術】
【０００２】
次世代ＤＶＤ（Digital Versatile Disk）やＤＴＶ（デジタルテレビ）に採用が決定しているＨ．２６４／ＡＶＣやＶＣ−１といった新しいコーデックがある。これらの復号装置においては、動き補償部での動き補償予測フィルタのフィルタ演算をブースのアルゴリズムを適用した乗算器で構成される場合がある。
【０００３】
乗算器の演算時間は、部分積加算をするために必要とする時間と桁上げ信号吸収をするために必要な時間の総和であり、演算速度を高速にする上でこれらの処理時間の短縮が問題となる。その対策として加算回路を減らすために部分積の数そのものを削減する必要がある。そのためには乗数の連続する複数ビットを一まとめのグループにして、このグループに対応した部分積を生成すれば部分積を削減することができる。そこで部分積数削減のために用いられるのが２次のブースである。２次のブースとは、乗数を２ビットごとに区切り、各組と下位組の最上位ビットの計３ビットをひとまとめにするというアルゴリズムを適用した部分積削減の手法である。
【０００４】
しかしながら、上記のようなコーデックのフィルタ演算を行なう際、これをブースのアルゴリズムを適用した乗算器で構成すると、多数の乗算器が必要となり回路規模が増大する。また、同様にＨ．２６４の画面内予測における予測画像の生成に使用されるフィルタ演算をブースのアルゴリズムを適用した乗算器で適用すると回路規模は増大する。
【０００５】
これは、Ｈ．２６４やＶＣ−１といった規格では、従来のＭＰＥＧ（Moving Picture Experts Group）２などに比べて極めて複雑な演算を要求されるからである。下記表１に、ＭＰＥＧ２、Ｈ．２６４、ＶＣ−１の機能比較を示す。
【０００６】
【表１】
2007324980.tif 000003
【０００７】
ところで、従来、動き補償のフィルタ演算回路の規模を縮小させる技術が特許文献１に開示されている。図１２は、特許文献１に記載の画像処理装置における累積加算フィルタ（ディジタルフィルタ）を示すブロック図である。図１２に示すように、従来のディジタルフィルタは、入力画像信号の画素ライン数を計測し、そのカウンタモジューロが拡大縮小率に応じて選択的に切り替えられるカウンタ５０３と、カウンタ５０３の係数値に応じたフィルタ係数を出力する係数データメモリ５０２と、入力画像信号に対しフィルタ係数を乗算する乗算器５０１と、乗算器５０１の出力又は累積加算値を保持する累積加算メモリ５０６と、乗算器５０１の出力に累積加算メモリ５０６内の保持内容を加算する加算器５０４と、カウンタ５０３の係数値に従って乗算器５０１又は加算器５０４の出力を選択的に累積加算メモリ５０６に伝達するセレクタ５０５とを有する。乗算器５０１、加算器５０４を１つとし、累積演算によりフィルタ出力を得ることで所要ハードウェア量を削減している。
【特許文献１】特開２００１−１６０１４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記特許文献１のように、累積演算することでハードウェア量を削減しようとしても、ステップ数が増大し、処理速度が遅くなり現実的ではない。特に、Ｈ．２６４やＶＣ−１といったフィルタのタップ数が多い場合には、演算が複雑になるため、更に処理速度が遅くなるという問題点がある。
【課題を解決するための手段】
【０００９】
本発明にかかるフィルタ処理装置は、複数のフィルタについて、複数の入力データとフィルタを構成する複数のフィルタ係数のそれぞれとをブースアルゴリズムを用いて積和演算するフィルタ処理装置であって、前記入力データと当該入力データに対応付けられたフィルタ係数とからなる１以上の組データが入力され、１以上の部分積を生成する複数の部分積生成ユニットと、前記複数の部分積生成ユニットにより生成される部分積の総和を生成する加算部と、前記組データに応じ、前記複数の部分積生成ユニットを１以上選択して当該組データを入力する部分積生成部選択部とを有するものである。
【００１０】
本発明においては、一の組データから生成すべき部分積の一部が一の部分積生成ユニットでは生成不能な場合、２以上の部分積生成ユニットを使用して部分積を生成することで、個々の部分積生成ユニットの演算能力又は回路規模を低く抑えることができる。
【発明の効果】
【００１１】
本発明によれば、処理速度を低下させることなくハードウェア量を削減することができるブースアルゴリズムを利用したフィルタ処理装置、乗算器、及びこれを利用した動き補償処理装置を提供することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、異なる種類のフィルタ演算を実効させるフィルタ処理器（乗算器）に適用したものである。本実施の形態は、ブースアルゴリズムを利用したフィルタ演算器において、部分積生成ユニットの機能と、乗数となるフィルタ係数とに着目し、冗長な回路を省略することでハードウェア量を削減する。なお、本実施の形態においては、フィルタ演算器として説明するが、複数種類の予め定められた乗数群と任意の被乗数群とを乗算させる乗算器とすることも可能である。
【００１３】
（１）ブースのアルゴリズムを適用した乗算器
本実施の形態にかかるフィルタ演算器は、ブースのアルゴリズムを使用して乗算を行うフィルタ演算器である。ここでは先ず、本発明の理解を容易とするため、２次のブースアルゴリズムを利用した乗算器について説明しておく。
【００１４】
乗数Ｙを符号付き８ビット整数
Ｙ＝−ｙ[７]・２７＋ｙ[６]・２６＋ｙ[５]・２５＋ｙ[４]・２４＋ｙ[３]・２３＋ｙ[２]・２２＋ｙ[１]・２１＋ｙ[０]・２０
とすると、任意整数である被乗数Ｘとの積Ｐ＝Ｘ×Ｙは以下のようになる。
【００１５】
【数１】
2007324980.tif 000004
【００１６】
この（−２・ｙ[２ｉ＋１]＋ｙ[２ｉ]＋ｙ[２ｉ-１]）を算出するものをブースデコーダ、Ｘ×（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])×２２ｉを部分積という。ここで、本明細書においては、ブースデコーダにより求められるデコード値（−２・ｙ[２ｉ＋１]＋ｙ[２ｉ]＋ｙ[２ｉ-１]）を符号データということとする。また、Ｘ×（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])×２２ｉ（部分積）を生成する回路を部分積生成ユニット、Ｘ×（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])×２２ｉのうち、各ｉに対応した部分積を生成する回路を部分積生成部、符号データ（−２・ｙ[２ｉ＋１]＋ｙ[２ｉ]＋ｙ[２ｉ-１]）を求める回路をブースデコーダ、符号データ×被乗数からなる演算を行ない部分積を求める回路を乗算部、部分積のうち、×２２ｉの演算を実行する部分をビットシフト部ということとする。
【００１７】
ここで、下記表２に示すように、符号データ（−２・ｙ[２ｉ＋１]＋ｙ[２ｉ]＋ｙ[２ｉ-１]）の値の組み合わせは８通りしかなく、０、±１、±２の値のみしかとらない。よって、乗算器は、０、±Ｘ、±２Ｘに２２ｉを乗算した値（部分積）を算出して加算する値の組み合わせの対応（真理値表）として書ける。ここで、符号データの値は８通りしかないため、ブースデコーダは、単なる組み合わせ論理回路により得ることができる。
【００１８】
【表２】
2007324980.tif 000005
【００１９】
０、±Ｘ、±２Ｘのうち、２Ｘの生成は１ビットのシフトで行なうことができる。一方、負数の生成は被乗数Ｘが２の補数表現であるのでＸの各ビットを反転させ最下位ビットに１を加えればよい。これを実現するために、例えば、符号データ（−２・ｙ[２ｉ＋１]＋ｙ[２ｉ]＋ｙ[２ｉ-１]）を生成する回路（ブースデコーダ）は、乗数Ｙの入力に対して部分積の絶対値（０、Ｘ、２Ｘ）を選択するための２つの信号と反転を選択するための１つの信号とからなる３つの信号を生成する。また、乗算部は、この３つの信号を受けて、絶対値が０の場合は０を、Ｘの場合は被乗数Ｘ を、２Ｘの場合は被乗数Ｘを１ビットシフトしたものを選択し、さらに、反転が必要な場合はその値を反転させて部分積を生成することができる。さらに、×２２ｉを実行するビットシフト部は、単純にビット線を２ｉだけシフトさせればよい。
【００２０】
図１は、このような２次のブースのアルゴリズムに従って乗算を実行する乗算器を示すブロック図である。乗算器４００は、被乗数Ｘを出力するレジスタＦ０と、乗数Ｙを出力するレジスタＦ７を有する。更に、乗数Ｙ及び被乗数Ｘが入力され部分積を生成する部分積生成ユニット４０１と、部分積生成ユニット４０１にて生成された部分積を加算する加算器４５０とを有する。部分積生成ユニット４０１は、４つの部分積生成部４１０、４２０、４３０、４４０を有する
【００２１】
各部分積生成部は、上述したように、乗数Ｙのうち所定ビットが入力され、ブースのアルゴリズムに従って符号データ（０、±１、±２）を生成するブースデコーダと、得られた符号データと被乗数Ｘとの乗算結果を出力する乗算部と、乗算部の演算結果のビットシフトを行なうビットシフト部とから構成されるものとする。
【００２２】
各部分積生成部は、Ｘ×（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])×２２ｉの"ｉ"に対応したものとなっており、例えば乗数Ｙが８ビット（ｙ０〜ｙ７とする）であれば、ｉ＝０〜３であり、それぞれＸ×（−２・ｙ１＋ｙ０＋０)×２０、Ｘ×（−２・ｙ３＋ｙ２＋ｙ１）×２２、Ｘ×（−２・ｙ５＋ｙ４＋ｙ３）×２４、Ｘ×（−２・ｙ７＋ｙ６＋ｙ５)×２６を求める。図１においては、これらの部分積を求める部分積生成部を、それぞれ４１０、４２０、４３０、４４０としている。なお、本実施の形態においては、ブースデコーダでデコードする乗数Ｘが８ビットを例にとって説明するが、これ未満、又は以上であってもよいことは勿論である。その場合は、部分積生成部の個数を適宜調整すればよい。
【００２３】
次に、実際の演算を例にとって、この乗算器４００の動作について説明する。８ビットの乗数Ｙは、図２（ａ）のように表すことができる。乗数を２ビットごとに区切り、各組と下位組の最上位ビットの計３ビット（ただしｙ−１＝０）のデータから符号データが得られる。これらに被乗数を乗算し、対応するビットシフト（×２ｉ）を演算することで部分積を生成することができる。このため、図２（ｂ）に示すように、レジスタＦ７は８ビットを出力するシフトレジスタからなり、乗数Ｙ｛ｙ０〜ｙ７｝を出力する。このとき部分積生成部４１０には、乗数Ｙのうち下位２ビット{ｙ０、ｙ１}、部分積生成部４２０、４３０、４４０にはそれぞれ、{ｙ１、ｙ２、ｙ３}、{ｙ３、ｙ４、ｙ５}、{ｙ５、ｙ６、ｙ７}を入力する。部分積生成部４１０は、入力されたこれらの所定ビットから符号データを生成するブースデコーダ４１１と、得られた符号データと被乗数Ｘとの乗算を行なう乗算部４１２と、乗算結果を所定ビットシフトするビットシフト部４１３とを有する。他の部分積生成部４２０、４３０、４４０も同様に構成される。ここでは、被乗数Ｘ＝３５８（１６６Ｈ）、乗数Ｙ＝１２３（７ＢＨ）の乗算について説明する。下記表２は、演算工程における各出力値を示す。
【００２４】
【表３】
2007324980.tif 000006
【００２５】
×Ｙ＝３５８×１２３＝４４０３４（ＡＣ０２Ｈ）
Ｙ＝１２３（７ＢＨ）
＝(−２・０＋１＋１)・２６
＋（−２・１＋１＋１）・２４
＋（−２・１＋０＋１）・２２
＋（−２・１＋１＋０）・２０
＝２・２６＋０・２４＋（−１）・２２＋（−１）・２０
よって、下記となる。
Ｘ×Ｙ＝{（２×３５６）×２６}    ・・・部分積生成部４１０にて演算
＋{（０×３５６）×２４}    ・・・部分積生成部４２０にて演算
＋{（−１×３５６）×２２}    ・・・部分積生成部４３０にて演算
＋{（−１×３５６）×２０}    ・・・部分積生成部４４０にて演算
【００２６】
先ず、被乗数入力部Ｆ０からは"３５８"が各部分積生成部４１０、４２０、４３０、４４０に入力される。乗数入力部Ｆ７からは、各部分積生成部４１０、４２０、４３０、４４０に、それぞれ{ｙ０、ｙ１}＝{１、１}、{ｙ１、ｙ２、ｙ３}＝{１、０、１}、{ｙ３、ｙ４、ｙ５}＝{１、１、１}、{ｙ５、ｙ６、ｙ７}＝{１、１、０}が入力される。ブースデコーダ４１１、４２１、４３１、４４１は入力された所定ビットから、それぞれ（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])＝（−２・ｙ１＋ｙ０＋０)、（−２・ｙ３＋ｙ２＋ｙ１）、（−２・ｙ５＋ｙ４＋ｙ３）、（−２・ｙ７＋ｙ６＋ｙ５)の演算に対応する符号データを出力する。上記の式より本例では、各ブースデコーダ４１１、４２１、４３１、４４１は、それぞれ、"−１"、"−１"、"０"、"２"を出力する。
【００２７】
各乗算部４１２、４２２、４３２、４４２は、上記符号データ×被乗数Ｘを演算して、それぞれビットシフト部４１３、４２３、４３３、４４３へ入力する。ビットシフト部４１３はそのまま加算器４５０へ出力する。なお、本例においては説明の明確のためビットシフト部４１３を設けているが設ける必要はない。ビットシフト部４２３、４３３、４４３は、受け取った結果をそれぞれ２ビット、４ビット、６ビットシフトさせた後、加算器４５０へ入力する。
【００２８】
本例の加算器４５０は、全加算器（フルアダー）４５１、４５２と、半加算器（ハーフアダー）４５３と、結果を受け取るレジスタ４５４とを有する。各ビットシフト部４１３、４２３、４３３、４４３から入力された値は、加算器４５０にて加算され、乗算結果Ｐとして出力される。
【００２９】
このように、２次のブースのアルゴリズムを使用すると、乗数を、０、±１、±２の符号データ×２２ｉとし、被乗数と演算を行なわせるので、部分積の個数が略半分となる。よって加算器にて加算する部分積の個数を略半減させることができるので、乗算器を小型化することができる。
【００３０】
ここで、部分積生成ユニットの機能について説明する。フィルタ演算器を構成する部分積生成ユニットは、複数の部分積生成部を備えるが、その演算能力に応じて当該部分積生成部の構成を異なるもとすることができる。すなわち、図１、２に示す部分積生成ユニットは、４つの部分積生成部を設け、Ｘ×（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])×２２ｉのｉ＝３まで、×６４までの演算能力を有する。一方、乗数Ｘを６ビットで表すことができれば部分積生成部は３つ、すなわち×１６までの演算能力を有すればよく、乗数Ｘを４ビットで表すことができればこれらの組は２つ、すなわち×４の演算能力を有すればよい。
【００３１】
このように部分積生成ユニットは、乗数Ｘに応じて部分積生成部が演算可能な最大の桁数が異なる。よって、生成可能な部分積の数が異なる。また、入力されるフィルタ係数によっては、例えば×１、×４、×１６、×６４のうち、×１６の部分積生成部４３０のみを除いたような構成とすることも可能である。すなわち、部分積生成部を３つのみでも×６４までの演算を可能な構成とすることもできる。更にまた、×１に対応する部分積生成部のビットシフト部は省略することが可能である。また、後述するように、符号データによっても部分積生成部の構成を異ならせることも可能である。つまり、生成される符号データが常に"０、１"であるような部分積生成部には、符号データ"０、１"にのみ対応できればよい。よって少なくとも符号データと入力データを乗算する乗算部は不要である。更に、生成される符号データが常に"０"であるような部分積生成部は、符号データ"０"にのみ対応できればよい。この場合は、出力が常に"０"となるため、乗算部及びビットシフト部は不要である。このように、フィルタ演算器に入力されるフィルタ係数が予め定められており、生成される符号データが予め定まる場合には、その符号データに応じた部分積生成部の構成とすることができる。
【００３２】
このように、部分積生成ユニットは、それを構成する部分積生成部の個数、演算可能な最大桁数、生成可能な部分積の数、対応可能な符号データの種類などが異なり、演算能力を異ならせることができる。よって、後述するように、入力されるフィルタ係数や、当該フィルタ係数から得られる符号データ等に応じて最小限の演算能力の部分積生成ユニットとすれば、回路規模の削減につながる。
【００３３】
（２）ハードウェア低減の原理
上述したように、本実施の形態にかかるフィルタ演算器は、部分積生成ユニットを構成する部分積生成部の演算能力とフィルタ係数（乗数）とに着目してハードウェア量を削減する。本実施の形態にかかるフィルタ演算器は、例えば、後述するＨ．２６４やＶＣ−１の動き補償処理や、Ｈ．２６４の画面内予測処理等に使用されるフィルタ演算を実行させる演算器に適用することで得にそのハードウェア削減効果が大きくなる。これらはタップ数の多いフィルタの演算であって、極めて複雑であり、非常に大きな演算回路を必要とするからである。なお、上記フィルタ演算に限らず、複数のフィルタ演算を実行させるフィルタ演算器に適用することができる。またフィルタ演算に限らず、予め定められた乗数と任意の被乗数とを乗算する乗算器に適用することも可能である。
【００３４】
先ず、簡単なフィルタ演算の例をとって、上記ブースのアルゴリズムを適用したフィルタ演算器のハードウェア削減の原理について説明する。図３は、フィルタ係数及びその符号データを示す図である。図３に示すように、フィルタ演算＃１は、
Ｇ１＝２０×ｆ０−８×ｆ１＋１×ｆ２
を実行するものとする。ここで、ｆ０、ｆ１、ｆ２は入力される入力データ（被乗数）、これに対応するフィルタ係数（乗数）が２０、−８、１である。また、フィルタ演算＃２は、
Ｇ２＝９×ｆ０−１×ｆ１＋１６×ｆ２
を実行するものとする。つまり、フィルタ演算＃２における各フィルタ係数は９、−１、１６である。
【００３５】
図４は、このフィルタ演算を行なうため、上述の乗算器を組み合せた通常のフィルタ演算器を示す図である。フィルタ演算器５００は、係数データメモリ５０２と、被乗数ｆ０、ｆ１、ｆ２である入力データを入力するレジスタＦ０、Ｆ１、Ｆ２と、入力データと当該入力データに対応付けられたフィルタ係数とからなる組データがそれぞれ入力される３つの部分積生成ユニット５１０、５２０、５３０と、加算器５４０とを有する。
【００３６】
部分積生成ユニット５１０は、上記組データとして、フィルタ演算＃１では入力データｆ０及びフィルタ係数"２０"が入力され、フィルタ演算＃２では入力データｆ０及びフィルタ係数"９"が入力される。そして、Ｘ×（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])×２２ｉ（Ｘは乗数）のｉ＝０、１、２、すなわち×１、×４、×１６に対応する部分積を求めるそれぞれ５１３、５１２、５１１を有する。
【００３７】
部分積生成ユニット５２０、５３０も同様に、フィルタ演算＃１で、入力データｆ１及びフィルタ係数"−８"、入力データｆ２及びフィルタ係数"１"が入力され、フィルタ演算＃２で、入力データｆ１及びフィルタ係数"−１"、入力データｆ２及びフィルタ係数"１６"が入力される。また、それぞれ部分積生成部５２３、５２２、５２１とそれぞれ部分積生成部５２３、５２２、５２１を有する。加算器５４０は、８つの全加算器５４１、レジスタ５４２、５４３及び半加算器５４４を有する。
【００３８】
係数データメモリ５０２は、図２のレジスタＦ７に相当するものであり、３つのレジスタとして構成することも可能である。この係数データメモリ５０２より、フィルタ演算＃１の場合には、部分積生成ユニット５１０、５２０、５３０にそれぞれ２０、−８、１が入力される。またフィルタ演算＃２の場合には、それぞれ９、−１、１６が入力される。
【００３９】
次に、このフィルタ演算器５００の動作について説明する。例えばフィルタ演算＃１において、部分積生成ユニット５１０には、フィルタ係数"２０"該当する２又は３ビットが各部分積生成部５１３、５１２、５１１に入力される。レジスタＦ０からは乗算すべき入力データ（被乗数）が入力される。なお、本実施の形態においては、乗数は、レジスタＦ０、Ｆ１、Ｆ２にシリアルに入力されるものとして説明するが、各レジスタＦ０〜Ｆ２にパラレルに入力するようにしてもよい。
【００４０】
部分積生成部５１１、５１２、５１３は、図３に示すように、入力された所定ビットをブースのアルゴリズムにしたがってデコードした符号データを生成する。そして、符号データとレジスタＦ０からの入力データとを乗算し、部分積生成部５１１は演算結果を４ビットシフトして加算器５４０に出力する。部分積生成部５１２は演算結果を２ビットシフトして加算器５４０に出力する。部分積生成部５１３は演算結果をそのまま加算器５４０に出力する。他の部分積生成ユニット５２０、５３０も同様に演算する。
【００４１】
ところで、フィルタ演算＃１、＃２における各符号データは、図５のようになっている。ここで、部分積生成部５１１〜５１３、５２１〜５２３、５３１〜５３３は、それぞれブースデコーダ（Booth Decoder：ＢＴＤ）Ｂ００〜Ｂ０２、Ｂ１０〜Ｂ１２、Ｂ２０〜Ｂ２２を有するものとする。
【００４２】
各ブースデコーダで演算される符号データ（−２・ｙ[２ｉ＋１]＋ｙ[２ｉ]＋ｙ[２ｉ-１]）は、図５に示すようになるが、ここで、部分積生成部５３２のブースデコーダＢ２１は、いずれのフィルタ演算においても符号データが"０"であり、部分積を生成する必要がない。また、フィルタ演算＃１において、部分積生成部５３３のブースデコーダＢ２２の符号データが"１"であるとき、部分積生成部５１３のブースデコーダＢ０２の符号データは"０"であって部分積を生成する必要がない。逆に、フィルタ演算＃２において、部分積生成部５３３のブースデコーダＢ２２の符号データが"０"であり、部分積を生成する必要がないのに対し、部分積生成部５１３のブースデコーダＢ０２の符号データは"１"となり部分積を生成する必要がある。同様に、フィルタ演算＃２において、部分積生成部５３１のブースデコーダＢ２０の符号データが"１"であって、部分積生成部５１１のブースデコーダＢ００の符号データは"０"となり部分積を生成する必要がない。
【００４３】
ここで、部分積生成部５１３、５３３は、同様の機能を有する。そして、フィルタ演算＃１において部分積生成部５１３は使用する必要がなく、フィルタ演算＃２では部分積生成部５３３は使用する必要がない。また、部分積生成部５２１、５３１は、同様の機能を有し、フィルタ演算＃１において部分積生成部５２１は使用する必要がなく、フィルタ演算＃２では部分積生成部５３１は使用する必要がない。そこで、本実施の形態においては、これら二つの部分積生成部５１１、５３１、及び５２１、５３１を共有することで、部分積生成部の個数を減らし、後段の加算器への入力数を減らすことで加算器の回路規模を削減する。
【００４４】
図６は、本発明の実施の形態にかかるフィルタ演算器を示す図である。図６に示すように、フィルタ演算器１は、係数データメモリ２と、入力データｆ０、ｆ１、ｆ２を入力するレジスタＦ０〜Ｆ２と、部分積生成ユニット３、４と、加算器１０とを有する。更に、セレクタ５〜８を有する。
【００４５】
部分積生成ユニット３、４は、入力データｆ０〜ｆ２と当該入力データｆ０〜ｆ２に対応付けられたフィルタ係数とからなる１以上の組データが入力され、１以上の部分積を生成する。部分積生成ユニット３及び４は、それぞれ、Ｘ×（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])×２２ｉ（Ｘは乗数、フィルタ係数）のｉ＝０、１、２、すなわち×１、×４、×１６に対応する部分積を求めるそれぞれ部分積生成部３３、３２、３１、及び部分積生成部４３、４２、４１を有する。
【００４６】
部分積生成部３１は、ブースデコーダＢ００、乗算部Ｍ００、４ビットシフト部Ｓ００を有する。部分積生成部３２は、ブースデコーダＢ０１、乗算部Ｍ０１、及び２ビットシフト部Ｓ０１を有する。部分積生成部３３は、ブースデコーダＢ０２及び乗算部Ｍ０２を有する。部分積生成ユニット４の構成も同様に、部分積生成部４１、４２、４３が、ブースデコーダＢ１０、Ｂ１１、Ｂ１２、乗算部Ｍ１０、Ｍ１１、Ｍ１２、及びビットシフト部Ｓ１０、Ｓ１１を有している。なお、部分積生成部４３は、ビットシフト部は必要ない。
【００４７】
また、セレクタ７、８は、入力データｆ０〜ｆ２を入力すべき部分積生成部を選択する部分積生成部選択部として機能する。また、セレクタ５、６は、フィルタ係数を入力すべき部分積生成部を選択する部分積生成部選択部として機能する。すなわち、これらのセレクタ５〜８は、上記組データを、部分積生成ユニット３、４のいずれか１以上に入力するものであって、例えば部分積生成ユニット３により、一の組データから生成すべき部分積の一部が生成不能な場合、部分積生成ユニット３共に部分積生成ユニット４の部分積生成部に当該組データを入力して部分積を生成させる。つまり、一の組データの演算を一の部分積生成ユニットではなく、複数の部分積生成ユニットで行なわせる。このことにより、本フィルタ演算器１は、上述のフィルタ演算器５００と同様の演算を可能としつつ、部分積生成ユニットを１つ減らして２つとすることができる。
【００４８】
このように、本実施の形態にかかるフィルタ演算器１は、図５に示すレジスタＦ２（入力データｆ０）に対応する部分積生成ユニットを有していない。図５に示す入力データｆ２の演算のうち、ブースデコーダＢ２２を使用して行なうべきフィルタ演算＃１は、代用部分積生成部としての部分積生成部３３にて行なわせる。すなわち、部分積生成部３３の入力データｆ０に対応するフィルタ係数の所定ビットから生成される符号データは"０"であるため、部分積を生成する必要がないため、これを代用するのである。このため、部分積生成部３３の入力には、レジスタＦ０からのデータｆ０とレジスタＦ２からのデータｆ２を選択出力するセレクタ７が設けられている。また、このときの部分積生成部３３のブースデコーダＢ０２へのフィルタ係数の入力を切り替えるためのセレクタ５が設けられている。フィルタ演算＃１における入力データｆ２の他の演算は、いずれも符号データが"０"になるため、部分積を計算する必要はない。よって、セレクタ５、７を設けることで、レジスタＦ０〜Ｆ２に入力される入力データｆ０〜ｆ２と、フィルタ係数２０、−８、１との乗算が実行可能となる。
【００４９】
また、同様に、図５に示す入力データｆ２の演算のうち、ブースデコーダＢ２０を使用して行なうべきフィルタ演算＃２は、代用部分積生成部としての部分積生成部４１にて行なわせる。すなわち、部分積生成部４１の入力データｆ１に対応するフィルタ係数の所定ビットから生成される符号データは"０"であるため、部分積を生成する必要がないため、これを代用するのである。このため、部分積生成部４１の入力には、レジスタＦ１からのデータｆ１とレジスタＦ２からのデータｆ２を選択出力するセレクタ８が設けられている。また、このときの部分積生成部４１のブースデコーダＢ１０へのフィルタ係数の入力を切り替えるためのセレクタ６が設けられている。フィルタ演算＃２におけるＦ２の他の演算は、いずれも符号データが"０"になるため、部分積を計算する必要はない。よって、セレクタ６、８を設けることで、レジスタＦ０〜Ｆ２に入力される被乗数と、フィルタ係数９、−１、１６との乗算が実行可能となる。
【００５０】
本実施の形態においては、部分積生成ユニット３、４においてフィルタ演算に使用されない非活性な部分積生成部を利用し、部分積を生成する。この際、必要に応じて部分積生成ユニット３、４には、セレクタ５〜８により、２種以上の入力データと当該入力データに対応付けられたフィルタ係数とからなる組データが入力され、各部分積生成ユニット３、４はこの組データに応じた部分積を生成する。このように、フィルタ演算時に非活性な部分積生成部を利用して他のフィルタ係数演算を行なわせることで、本例においては部分積生成ユニットを図４に比して１つ分減らすことができる。
【００５１】
特に、フィルタ演算を実行する際、複数の部分積生成ユニットにおける同一機能の部分積生成部にて生成される部分積が常に１以上、０となる場合、同一機能の部分積生成部を一つにまとめ、複数の部分積生成ユニット間で部分積生成部を共有することができ、部分積生成部の個数、加算器への入力数を減らすことができ、よって加算器の回路規模を削減することができる。
【００５２】
すなわち、本実施の形態においては、３つの組データの演算を、２つの部分積生成ユニットで実行する。通常、一の組データの演算は、一の部分積生成ユニットで実行されるが、本実施の形態においては、部分積生成部選択部としてのセレクタ５〜８を設けることで、一の組データの演算を２以上の部分積生成ユニットで演算可能な構成とすると共に、２つの組データを一の部分積生成ユニット内で演算可能な構成とする。このことにより、同じ部分積生成ユニット内において、ある組データの演算中に非活性（未使用）又は符号データが"０"になる部分積生成部を含む場合、他の組データの演算の代用部分積生成部として使用することができる。こうして、部分積生成ユニット間で部分積生成部を共有させることができ、全体として部分積生成部を有効利用することで、部分積生成部の個数を減少させることができる。
【００５３】
（３）具体例
次に、本発明を適用した具体例について説明する。ここでは、Ｈ.２６４及びＶＣ−１の両規格における動き補償処理におけるフィルタ演算を実行するフィルタ演算器に適用した場合について説明する。なお、本発明は、Ｈ．２６４及びＶＣ−１の両規格におけるフィルタ演算が可能な動き補償回路について説明するが、Ｈ．２６４のみのフィルタ演算を行なう動き補償回路、ＶＣ−１のみのフィルタ演算を行なう動き補償回路にも適用可能であることは勿論である。
【００５４】
（３−１）画像復号装置
ここでは先ず、Ｈ.２６４、ＶＣ−１の画像復号装置について説明する。図７及び図８は、それぞれＨ.２６４及びＶＣ−１に準拠して符号化された圧縮画像を復号する復号装置を示すブロック図である。Ｈ．２６４は、ＭＰＥＧ４  ＡＶＣ（Advanced Video Coding）とも呼ばれ、データ圧縮率は、ＭＰＥＧ−２の２倍以上、ＭＰＥＧ−４の１．５倍以上とすることができる圧縮符号化方式である。また、ＶＣ−１（Windows Media Video（ＷＭＶ）９）（登録商標）はマイクロソフト社が開発した動画圧縮技術であり、Ｈ．２６４と同程度のデータ圧縮率を有する。これらのアドバンスドコーデック（高圧縮コーデック）は、ＨＤ  ＤＶＤ（High Definition DVD）、又はブルーレイディスク等の次世代ＤＶＤ規格に適用される。
【００５５】
図７に示すように、Ｈ.２６４の画像復号装置１７０は、可変長復号部１７２、逆量子化部１７３、逆アダマール変換部１７４、加算器１７５、デブロッキングフィルタ１７６、動き補償部１８２、重み付け予測部１８１、画面内予測部１８０及び復号画像１７８を表示するモニタ１７９を有する。
【００５６】
可変長復号部１７２は、圧縮データ１７１が入力され可変長符号化された圧縮データを、変換テーブルに基づき可変長復号する。そして、可変長復号された復号データは、逆量子化部１７３にて逆量子化され、逆アダマール変換部１７４にて逆アダマール変換され加算器１７５へ送られる。加算器１７５の出力は、デブロッキングフィルタ１７６によりブロック歪を除去され、復号画像１７８とされ、モニタ１７９を介して表示される。
【００５７】
ここで、加算器１７５の出力が画面内予測部１８０にも入力され、予測画像１８３が生成される。また、復号画像が動き補償部１８２にて動き補償処理が行なわれ、重み付け予測部１８１にて重み付けされて予測画像１８３が生成される。加算器１７５は、Ｉフレーム処理の際には画面内予測部１８０からの予測画像１８３に予測誤差を加算し出力する。一方、Ｐ、Ｂフレーム処理の際には、切替部１７７にて切り替え、重み付け予測部１８１から送られる予測画像１８３に予測誤差を加算して出力する。
【００５８】
また、図８に示すように、ＶＣ−１の画像復号装置１９０も、画像復号装置１７０とほぼ同様に構成され、可変長復号部１９２、逆量子化部１９３、逆ＤＣＴ変換部１９４、加算器１９５、ループフィルタ１９６、重み付け予測部１９９、動き補償部２００、及び復号画像１９７を表示するモニタ１９８を有する。ＶＣ−１の画像復号装置１９０は、画面内予測を行なわない点、重み付け予測を行なってから動き補償処理を行う点、デブロッキングフィルタ１７６の代わりにループフィルタ１９６が使用される点が異なる。
【００５９】
（３−２）動き補償部
図９は、Ｈ.２６４及びＶＣ−１の規格に準拠したフィルタ演算を含む動き補償処理を実行する動き補償（ＭＣ）部を示すブロック図である。この動き補償部１５０は、Ｈ．２６４及びＶＣ−１のいずれの動き補償部でも使用可能な構成とされている。すなわち、両規格にて共有できる。この動き補償部１５０は、フィルタ演算部１ｃ、１ｄと、セレクタ１５１、１５４、１５７、１６０、１６１と、乗算器１５２、１５９、加算器１５３、１５５、１５８と、ラインメモリ１５６とを有する。
【００６０】
Ｈ．２６４では、フィルタ演算部１ｃ、１ｄにてフィルタ演算施した後、上述した重み付け係数を使用してオフセット付き重み補間信号を求め、予測画像１８３を得る。ここで、入力ＩＮから入力された参照ピクチャＲ０の画素値が、フィルタ演算部１ｃにて垂直方向フィルタによるフィルタ演算が実行され、フィルタ演算部１ｄにて水平方向フィルタによるフィルタ演算が施される。そして、生成されたフィルタ演算済みのデータがラインメモリ１５６に格納される。次に、参照ピクチャＲ１の画素値が入力ＩＮから入力されると、同様に、フィルタ演算部１ｃ、１ｄにてフィルタ演算が施され、フィルタ演算済みのデータに乗算器１５２にて重み係数を乗算し、加算器１５３にてオフセット値を加算する。一方、ラインメモリに格納されているデータがセレクタ１６０を介して乗算器１５９にて重み付き係数と乗算され、これらが加算器１５５にて加算され、オフセット付き重み補間信号Ｗ０Ｘ０＋Ｗ１Ｘ１＋Ｄを生成する。生成されたデータは、ラインメモリ１５６を経て出力ＯＵＴから出力される。
【００６１】
ＶＣ−１の場合は、入力ＩＮからのデータがセレクタ１６０、セレクタ１５７を介し、更にセレクタ１５１から乗算器１５２、加算器１５３をとおり、そしてセレクタ１６１を介してフィルタ演算器１ｃ、１ｄに入力される。フィルタ演算部１ｄの結果は、セレクタ１５１、セレクタ１５４を介してそのままラインメモリ１５６へ格納され、出力ＯＵＴから出力される。乗算器１５９、加算器１５８、乗算器１５２、加算器１５３では、以下の重み付けが実行される。
Ｈ＝（ｉＳｃａｌｅ×Ｆ＋ｉＳｈｉｆｔ＋３２）＞＞６
ここで、Ｆは入力値、ｉＳｃａｌｅ、ｉＳｈｉｆｔは重み係数を示す。
【００６２】
このように構成された動き補償部１５０は、セレクタ１６１、１５１、１５４、１６０にてフィルタ演算部１ｃ、１ｄへの入力、出力を適宜選択するため、重み付けをフィルタ演算後に実行するＨ．２６４であっても、重み付けをフィルタ演算前に実行するＶＣ−１であっても、いずれの演算にも適用可能である。
【００６３】
（３−３）フィルタ演算器
次に、Ｈ．２６４及びＶＣ−１の両規格のフィルタ演算が可能なフィルタ演算部１ｃ、１ｅについて更に詳細に説明する。図１０は、フィルタ演算部１ｃ、１ｅの詳細を示す図であって、本実施の形態にかかるフィルタ演算器を示すブロック図である。また、下記表４は、Ｈ．２６４及びＶＣ−１における輝度信号Ｇｙ、色差信号Ｇｃに対するフィルタ係数を示す。更に、図１１は、上述のＨ．２６４及びＶＣ−１のフィルタ演算をフィルタ演算器１００で実行させる際の各部分積生成部で生成される符号データを示す図である。
【００６４】
【表４】
2007324980.tif 000007
【００６５】
この表４に示すように、Ｈ．２６４は、輝度信号Ｇｙが６タップフィルタ、色差信号Ｇｃは２タップフィルタのフィルタ演算となる。また、ＶＣ−１の輝度信号Ｇｙが４タップフィルタ、色差信号Ｇｃは２タップフィルタのフィルタ演算となる。フィルタ演算器１は、これら全てのフィルタ演算を可能としつつ、上述の方法により、ハードウェア資源を削減したものである。
【００６６】
図１０に示すように、フィルタ演算器１は、入力される画素値（入力データｆ０〜ｆ５）を格納するレジスタＦ０〜Ｆ５と、部分積生成部選択部１０２と、係数データメモリ１０３と、部分積生成ユニット１１０、１２０、１３０、１４０、１４０、１６０と、加算器１０４とを有する。部分積生成部選択部１０２は、入力データｆ０〜ｆ５及びこれに乗算すべきフィルタ係数の演算が可能な１以上の部分積生成ユニットを選択して入力データｆ０〜ｆ５を入力する。係数データメモリ１０３は、上記入力データｆ０〜ｆ５に対応するフィルタ係数を各部分積生成ユニットに入力する。この場合、上述と同様、必要に応じて、２以上の、入力データ及びそれに対応したフィルタ係数からなる組データが１つの部分積生成ユニットに入力される。
【００６７】
部分積生成ユニット１１０は、フィルタ係数から符号データを生成し、Ｆ０〜Ｆ５のいずれかを介して入力される入力データとの乗算結果を求めるブースデコーダ及び乗算部の機能を有する回路部（ＢＴＤ・乗算部）１１４を有する。部分積生成ユニット１２０は、×４、×１に対応するＢＴＤ・乗算部１２３、１２４を有する。なお、本図においては、×４、１６、６４のビットシフト部は図示を省略している。
【００６８】
部分積生成ユニット１３０は、×４、×１にそれぞれ対応するＢＴＤ・乗算部１３２、１３３を有する。部分積生成ユニット１４０は、×６４、×１６、×４にそれぞれ対応するＢＴＤ・乗算部１４１、１４２、１４３を有する。部分積生成ユニット１５０は、×４、×１にそれぞれ対応するＢＴＤ・乗算部１５３、１５４を有する。部分積生成ユニット６０は、×１に対応するＢＴＤ・乗算部１６４を有する。
【００６９】
これらの部分積生成ユニットにおいて、各フィルタ演算にて入力されるフィルタ係数は図１１のようになる。ここで、例えば、Ｈ.２６４の色差信号Ｇｃの演算においては、部分積生成ユニット１２０、１４０、１５０、１６０は使用しない。
【００７０】
ところで、ＶＣ−１の輝度信号Ｇｙの演算の場合、フィルタ係数は−４、５３、１８、−３であり、いずれの部分積生成ユニットを使用してもフィルタ係数"５３"の部分積を生成することができない。そこで、部分積生成部選択部１０２は、このフィルタ係数"５３"の演算の場合には、部分積生成ユニット１４０及び１１０を使用させる。フィルタ係数"５３"の演算には、×６４、×１６、×４、×１に対応する部分積生成部が必要であるが、部分積生成ユニット１４０には、×１に対応する部分積生成部が存在しない。そこで、部分積生成部選択部１０２は、部分積生成ユニット１１０の×１を演算可能なＢＴＤ・乗算部１１４を、部分積生成ユニット１４０と共に使用してフィルタ係数"５３"の演算をさせる（図１１のＡ１参照）。
【００７１】
また、フィルタ係数"１８"の演算には、×１と×１６に対応する部分積生成部が必要であるが、いずれの部分積生成ユニットも両演算機能を備えたものが存在しない。そこで、部分積生成部選択部１０２は、×１に対応する部分積生成部として部分積生成ユニット１６０のＢＴＤ・乗算部１６４を使用し、×１６に対応する部分積生成部として部分積生成ユニット１３０のＢＴＤ・乗算部１３２（図１１のＡ２参照）を使用させる。
【００７２】
このようにフィルタ係数を、入力データとフィルタ係数の乗算をするに適切な１又は２以上の部分積生成ユニットを選択して入力させ、また、当該フィルタ係数に対応する入力データを部分積生成部選択部１０２により部分積生成ユニットに入力させることで、部分積生成ユニットの演算機能を超えた演算を行なわせることができると共に、部分積生成部の個数を最小限に抑えることができる。
【００７３】
なお、本実施の形態においては、使用されない部分積生成部を利用することで、演算を可能とする場合について説明したが、上述したように、生成される符号データが"０"となる部分積生成部を利用して演算させることも可能である。また、本実施の形態においては、入力データを適宜選択して部分積生成ユニットに入力する部分積生成部選択部１０２を設けた場合について説明したが、フィルタ係数についても、同様に部分積生成部選択部を設け、選択した部分積生成ユニットに入力すればよい。
【００７４】
いずれにせよ、フィルタ演算において、一の部分積生成ユニットにより、一の組データから生成すべき部分積の一部が生成不能な場合、２以上の部分積生成ユニットを使用して一の組データを演算させる。この場合、生成される部分積が"０"となる部分積生成部、又は当該フィルタ演算には使用されない非活性（未使用）部分積生成部を含む部分積生成ユニットを選択し、当該生成不能な部分積を生成させる。このことにより、部分積が"０"となる部分積生成部又は非活性な部分積生成部を有効利用することができ、部分積生成部の個数を最小限に抑えることができる。
【００７５】
例えば図１１の例では、部分積生成ユニット１４０は、フィルタ係数"５３"を演算するためには、×１、×４、×１６、×６４の４つの部分積生成部を具備する必要があるが、この×１に対応する部分積生成部を省略した構成とし、"５３"の演算を行なう場合には、部分積生成ユニット１４０及びこのとき未使用の部分積生成ユニット１１０の２つの部分積生成ユニットにより演算を行なわせる。すなわち、部分積生成ユニット１１０は、部分積生成ユニット１４０の不足する部分積生成部の代用となる。図１１の例では、フィルタ演算"５３"とこれに対応する入力データからなる組データから生成すべき部分積の一部は、いずれの部分積生成ユニットでも生成不能であるが、２以上の部分積生成ユニットを使用すれば演算が可能となる。このように、フィルタ演算器１００は、組データに応じて、当該組データを演算させるための１又は２以上の部分積生成ユニットを選択する部分積生成部選択部１０２を備えることで、全ての組みデータについて、それらを演算可能な対応する部分積生成ユニットを備えていなくても、部分積生成ユニット又は部分積生成ユニットを構成する部分積生成部の組み合せにより演算させることができ、結果部分積生成部の個数を減少させることができる。
【００７６】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、本実施の形態は、画像復号装置として説明したが、画像符号化の際の動き補償部としても使用可能である。また、上記に例示したフィルタ演算のみならず、予め定められた乗数が入力される乗算器に本発明を適用することで、冗長な回路を削減しハードウェア低減することができる。
【００７７】
また、本実施の形態においては、２次のブースのアルゴリズムを適用した乗算器（フィルタ演算器）について説明したが、これに限るものではない。すなわち、３次以上の高次のブースのアルゴリズムであっても同様に適用することができる。
【図面の簡単な説明】
【００７８】
【図１】２次のブースのアルゴリズムに従って乗算を実行する乗算器を示すブロック図である。
【図２】（ａ）は、ブースのアルゴリズムにより符号データ生成に使用されるビットを説明する図、（ｂ）は、図１に示す乗算器の部分積生成ユニットの詳細を示す図である。
【図３】フィルタ係数及びその符号データを示す図である。
【図４】上記フィルタ演算を行なうため、図２に示す乗算器を組み合せた通常のフィルタ演算器を示す図である。
【図５】フィルタ演算＃１、＃２における各符号データを示す図である。
【図６】本実施の形態にかかるフィルタ演算器を示す図である。
【図７】Ｈ.２６４に準拠して符号化された圧縮画像を復号する復号装置を示すブロック図である。
【図８】ＶＣ−１に準拠して符号化された圧縮画像を復号する復号装置を示すブロック図である。
【図９】本発明の実施の形態にかかる動き補償処理を実行する動き補償部を示すブロック図である。
【図１０】本発明の実施の形態にかかるフィルタ演算器の具体例を示すブロック図である。
【図１１】同フィルタ演算装置に入力されるフィルタ係数及び符号データの値を示す図である。
【図１２】特許文献１に記載の画像処理装置における累積加算フィルタ（ディジタルフィルタ）を示すブロック図である。
【符号の説明】
【００７９】
１、１ｃ、１ｄ、１００  フィルタ演算器
２、１０３、５０２  係数データメモリ
３、４、１１０、１２０、１３０、１４０、１５０、１６０、４０１、５１０、５２０、５３０  部分積生成ユニット
５〜８、１５４、１５７、１６０、１６１、５０５  セレクタ
１０、１０４、１５３、１５５、１５８、１７５、４５０、５４０  加算器
３１〜３３、４１〜４３、４１０、４２０、４３０、５１１〜５１３、５２１〜５２３、５３１〜５３３  部分積生成部
１０２  部分積生成部選択部
１１４、１２３、１２４、１３２、１３３、１４１、１４２、１４３、１５３、１５４、１６４  ＢＴＤ・乗算部
１５０  動き補償部
１５１  セレクタ
１５２、１５９  乗算器
１５６  ラインメモリ
１６０  部分積生成ユニット
１７０  画像復号装置
１７１  圧縮データ
１７２  可変長復号部
１７３  逆量子化部
１７４  逆アダマール変換部
１７６  デブロッキングフィルタ
１７７  切替部
１７８  復号画像
１７９  モニタ
１８０  画面内予測部
１８１  重み付け予測部
１８２  補償部
１８３  予測画像
１９０  画像復号装置
１９２  可変長復号部
１９３  逆量子化部
１９４  変換部
１９５  加算器
１９６  ループフィルタ
１９７  復号画像
１９８  モニタ
１９９  予測部
２００  補償部
４００、５０１  乗算器
４１１、４２１、４３１、４４１  ブースデコーダ
４１２、４２２、４３２、４４２  乗算部
４１３、４２３、４３３、４４３  ビットシフト部
４５４、５４２  レジスタ
５００  フィルタ演算器
５０３  カウンタ
５０６  累積加算メモリ
５４１  全加算器
５４４  半加算器
【図１】
2007324980.tif 000008
【図２】
2007324980.tif 000009
【図３】
2007324980.tif 000010
【図４】
2007324980.tif 000011
【図５】
2007324980.tif 000012
【図６】
2007324980.tif 000013
【図７】
2007324980.tif 000014
【図８】
2007324980.tif 000015
【図９】
2007324980.tif 000016
【図１０】
2007324980.tif 000017
【図１１】
2007324980.tif 000018
【図１２】
2007324980.tif 000019