(57)【特許請求の範囲】
【請求項１】
被フィルタ画像データを格納する記憶部と、
前記記憶部に格納されている被フィルタ画像データに対して、第１のフィルタ演算を実行する第１フィルタ処理部と、
前記第１フィルタ処理部がフィルタ処理した画像データに対して、第２のフィルタ演算を実行する第２フィルタ処理部とを備え、
前記第１フィルタ処理部と前記第２フィルタ処理部とは、垂直方向フィルタ演算と水平方向フィルタ演算の内の互いに異なるフィルタ演算を実行し、
前記垂直方向フィルタ演算と前記水平方向フィルタ演算とは、互いに異なる並列処理によって実行され、
前記第１フィルタ処理部は、複数の第１フィルタモジュールを有し、
前記第２フィルタ処理部は、少なくとも１つの第２フィルタモジュールを有し、
前記複数の第１フィルタモジュールは、前記被フィルタ画像データに対して前記第１のフィルタ演算をそれぞれ実行し、前記第１フィルタ処理部は、複数の第１フィルタ結果を出力し、
前記少なくとも１つの第２フィルタモジュールは、前記複数の第１フィルタ結果の内の少なくとも一部を入力して、前記第２のフィルタ演算を実行し、前記第２フィルタ処理部は、少なくとも１つの第２フィルタ結果を出力し、
前記複数の第１フィルタモジュールのそれぞれは、
初段の累積加算部と少なくとも１つの後段の累積加算部が縦続接続された複数の累積加算部と、
前記複数の累積加算部のそれぞれの出力を順次選択して、出力する選択部とを有し、
前記初段の累積加算部には、所定のフィルタ係数が、１処理時間ごとに順次入力され、
前記少なくとも１つの後段の累積加算部には、それぞれの前段の累積加算部から、前記所定のフィルタ係数が、１処理時間ごとに順次転送され、
前記複数の累積加算部のそれぞれには、前記被フィルタ画像データの垂直または水平に並んだ画素の画素値が、前記記憶部から１処理時間ごとに順次入力され、
前記複数の累積加算部は、それぞれ、１処理時間ごとに前記画素値と前記所定のフィルタ係数との積和演算を行って、前記複数の第１フィルタ結果を出力する２次元フィルタ演算装置。
【請求項２】
前記並列処理は、被フィルタ画像データに対して、並列に実行される順次演算処理と並列に実行される並列演算処理とを含む、請求項１記載の２次元フィルタ演算装置。
【請求項３】
前記第１フィルタ処理部は、前記複数の第１フィルタモジュールを用いて、前記第１のフィルタ演算を並列に実行し、
前記第２フィルタ処理部が複数の第２フィルタモジュールを有する場合は、前記第２フィルタ処理部は、前記複数の第２フィルタモジュールを用いて、前記第２のフィルタ演算を並列に実行する、請求項１記載の２次元フィルタ演算装置。
【請求項４】
前記少なくとも１つの第２フィルタモジュールは、
複数の加算部と、
複数の積算部とを有し、
前記複数の第１フィルタ結果の内の少なくとも一部と、所定の複数のフィルタ係数との積和演算を行い、前記少なくとも１つの第２フィルタ結果を出力する、請求項１記載の２次元フィルタ演算装置。
【請求項５】
前記複数の第１フィルタモジュールは、ループ内パイプライン処理方式とループ内並列処理方式の内の一方の処理方式に従って、前記第１のフィルタ演算を実行し、
前記少なくとも１つの第２フィルタモジュールは、前記ループ内パイプライン処理方式と前記ループ内並列処理方式の内、前記複数の第１フィルタモジュールが従っていない方の処理方式に従って、前記第２のフィルタ演算を実行する、請求項１記載の２次元フィルタ演算装置。
【請求項６】
前記記憶部から１ライン分の画素の画素値を取得して一時的に格納し、前記第１フィルタ処理部に出力する、ラインメモリをさらに備える、請求項１記載の２次元フィルタ演算装置。
【請求項７】
被フィルタ画像データを格納する格納ステップと、
格納されている被フィルタ画像データに対して、第１のフィルタ演算を実行する第１フィルタ処理ステップと、
前記第１フィルタ処理ステップでフィルタ処理した画像データに対して、第２のフィルタ演算を実行する第２フィルタ処理ステップとを備え、
前記第１フィルタ処理ステップと前記第２フィルタ処理ステップ部とでは、垂直方向フィルタ演算と水平方向フィルタ演算の内の互いに異なるフィルタ演算を実行し、
前記垂直方向フィルタ演算と前記水平方向フィルタ演算とは、互いに異なる並列処理によって実行され、
前記第１フィルタ処理ステップでは、複数の第１フィルタモジュールが使用され、
前記第２フィルタ処理ステップでは、少なくとも１つの第２フィルタモジュールが使用され、
前記複数の第１フィルタモジュールは、前記被フィルタ画像データに対して前記第１のフィルタ演算をそれぞれ実行し、前記第１フィルタ処理ステップでは、複数の第１フィルタ結果を出力し、
前記少なくとも１つの第２フィルタモジュールは、前記複数の第１フィルタ結果の内の少なくとも一部を入力して、前記第２のフィルタ演算を実行し、前記第２フィルタ処理ステップでは、少なくとも１つの第２フィルタ結果を出力し、
前記複数の第１フィルタモジュールのそれぞれは、
初段の累積加算部と少なくとも１つの後段の累積加算部が縦続接続された複数の累積加算部と、
前記複数の累積加算部のそれぞれの出力を順次選択して、出力する選択部とを使用し、
前記初段の累積加算部には、所定のフィルタ係数が、１処理時間ごとに順次入力され、
前記少なくとも１つの後段の累積加算部には、それぞれの前段の累積加算部から、前記所定のフィルタ係数が、１処理時間ごとに順次転送され、
前記複数の累積加算部のそれぞれには、前記被フィルタ画像データの垂直または水平に並んだ画素の画素値が、前記記憶部から１処理時間ごとに順次入力され、
前記複数の累積加算部は、それぞれ、１処理時間ごとに前記画素値と前記所定のフィルタ係数との積和演算を行って、前記複数の第１フィルタ結果を出力する２次元フィルタ演算方法。
【請求項８】
前記並列処理は、被フィルタ画像データに対して、並列に実行される順次演算処理と並列に実行される並列演算処理とを含む、請求項７記載の２次元フィルタ演算方法。
【請求項９】
前記垂直方向フィルタ演算と前記水平方向フィルタ演算の処理順序を、前記被フィルタ画像データが準拠する動画像符号化規格に従って変更する、請求項７記載の２次元フィルタ演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像圧縮伸張処理、ループ内フィルタ処理、走査線変換処理、あるいは、画像平滑化処理等に使用される２次元フィルタ演算装置に関するものである。
【背景技術】
【０００２】
近年、音声や画像のデータ圧縮技術を基盤とした音声符号化技術や動画像符号化技術は、我々のオーディオ・ビジュアルライフを豊かなものにする上で非常に重要な技術となっている。
【０００３】
今日、動画像符号化技術として、様々な方式が提案されている。動画像符号化技術の標準規格としては、ＩＴＵ‐Ｔ（国際電気通信連合電気通信標準化部門）のＨ．２６１、Ｈ．２６３、ＩＳＯ（国際標準化機構）のＭＰＥＧ‐１、ＭＰＥＧ‐２、ＭＰＥＧ‐４などがある（ＭＰＥＧは、Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐの略語）。また、ＩＴＵ−ＴとＩＳＯが共同で規格化した動画像符号化技術の新しい標準規格として、Ｈ．２６４｜ＭＰＥＧ−４  ＡＶＣ（Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ）がある。
【０００４】
さらに、ＳＭＰＴＥ（Ｓｏｃｉｅｔｙ  ｏｆ  Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  ａｎｄ  Ｔｅｌｅｖｉｓｉｏｎ  Ｅｎｇｉｎｅｅｒｓ：全米映画テレビジョン技術者協会）は、次世代の大容量光ディスク規格「ＨＤ  ＤＶＤ」と「Ｂｌｕｅ−Ｒａｙ  Ｄｉｓｋ」に、動画像符号化技術として「Ｖｉｄｅｏ  Ｃｏｄｅｃ  １（ＶＣ１）」を採用した。
【０００５】
その他、インターネット上のコンテンツには、マイクロソフト社のＷＭＶや、リアルネットワークス社のＲｅａｌＶｉｄｅｏなどの方式が使用されている。このように、現在、異なる動画像符号化技術に基づいて、多くの標準規格が乱立している。
【０００６】
これらの動画像符号化方式の標準規格は、応用分野ごとに異なる適用のされ方をしている。例えば、現在のＤＶＤにはＭＰＥＧ−２が採用されており、次世代のＤＶＤには、前述したように、Ｈ．２６４｜ＭＰＥＧ−４  ＡＶＣやＶＣ１が採用されている。すでにサービスが開始されている日本国内におけるディジタル放送には、Ｈ．２６４｜ＭＰＥＧ−４  ＡＶＣが採用されている。また、携帯電話のテレビ電話には、Ｈ．２６３、あるいは、ＭＰＥＧ−４  Ｓｉｍｐｌｅ  Ｐｒｏｆｉｌｅが採用されている。さらに、インターネット上のコンテンツには、ＷＭＶ方式やＲｅａｌＶｉｄｅｏ方式が多く採用されている。
【０００７】
一方、近年の動画像符号化技術は、動画像の圧縮率向上のために、複雑な圧縮伸張処理を行っている。このため、圧縮伸張処理対象の画像の画素数が多くなると、必要とする計算量が膨大となる。
【０００８】
ディジタルテレビ、ＤＶＤ，または、携帯電話等の映像機器に組み込まれているＣＰＵは、パーソナルコンピュータに搭載されるＣＰＵより動作周波数が低い。これらの映像機器は、動作周波数が低いＣＰＵによるソフトウェア処理では、上述した膨大な計算量を伴う動画像の伸張処理（デコード処理）が間に合わないために、処理アルゴリズムをダイレクトに実行する、伸張処理専用のハードウェアを搭載していることが多い。
【０００９】
搭載後の変更が容易でない専用ハードウェアで、前述した複数の規格のストリームデータを効率よくデコードするためには、それぞれの規格での類似点と相違点を考慮することが重要となる。
【００１０】
動画のストリームデータをデコードする処理は、可変長符号化されたストリームデータを復号する可変長復号、可変長復号後のデータを周波数領域のデータに変換する逆量子化、周波数領域のデータから画素領域のデータへ変換する逆直交変換、参照画像から動きベクトルに応じた補間画像を生成し、その値に逆直交変換の結果を足しこむ動き補償予測という手順で実行される。これらのうち、逆直交変換及び動き補償予測は、２次元フィルタ処理という共通の処理を行っている。さらに、この２次元フィルタ処理は、デコード処理の中で特に多くの計算量を要する部分である。また、Ｈ．２６４｜ＭＰＥＧ−４  ＡＶＣでは、圧縮率を改善するために、参照画像に対して補間を行うフィルタ処理を施す。このフィルタ処理も２次元フィルタ処理である。
【００１１】
このように、２次元フィルタ処理技術は、現在の動画像処理において、広範囲に利用される重要な技術である。
【００１２】
図１６は、特許文献１が開示する従来の２次元フィルタのブロック図である。図１６に示す従来の２次元フィルタは、画像メモリ１、ラインメモリ２ａ〜ラインメモリ２ｅ、垂直フィルタ処理部３、水平フィルタ処理部４、シフトレジスタ５、及び、シフトレジスタ６を備える。このものは、画像メモリ１に格納されている画素に対して、最初に、垂直フィルタ処理部３が垂直方向に５タップのフィルタ演算を実行し、次に、水平フィルタ処理部４が、垂直方向フィルタ演算により更新された画素を用いて、水平方向に同じく５タップのフィルタ演算を実行する。
【００１３】
以下に、図１６に示す従来の２次元フィルタについて、さらに詳しい動作を説明する。最初に、画像メモリ１に格納されている入力画像のある１ラインの画素の画素値が、ラインメモリ２ａに読み出される。次の１ラインの画素の画素値がラインメモリ２ａに読み出されるとき、ラインメモリ２ａに最初に読み出された画素の画素値がラインメモリ２ｂに転送される。この処理を５回繰り返すことで、最初に読み出された１ラインの画素の画素値がラインメモリ２ｅに格納され、ラインメモリ２ａ〜２ｄにも、順次読み出されたラインの画素の画素値が格納されることになる。次に、各ラインメモリからそれぞれの最右の１画素値が、垂直フィルタ処理部３に同時に読み出され、垂直フィルタ処理部３において、垂直方向フィルタ演算が実行される。
【００１４】
垂直フィルタ処理部３によりフィルタ処理された画素値は、レジスタ５に蓄積される。垂直フィルタ処理部３によりフィルタ処理された５つの画素値がレジスタ５にそろった時点で、それらの５つの画素値が水平フィルタ処理部４に入力され、水平フィルタ処理部４において水平方向フィルタ演算が実行される。
【００１５】
上記の処理を繰り返すことにより、画像メモリ１に格納されている画素の画素値に対して２次元のフィルタ演算が実行される。
【００１６】
しかしながら、図１６に示す従来の２次元フィルタでは、垂直方向フィルタ演算を実行するために、水平方向に読み出された画素の画素値を垂直方向に並べ替えるためのバッファ（ラインメモリ２ａ〜２ｅ）を必要としていた。さらに、そのバッファを制御するための制御回路のパスが、フィルタ演算を実行するデータパスとは別に必要であり、回路面積を増大させているという問題があった。これは、従来技術のように、垂直方向フィルタ演算を実行するデータパスと水平方向フィルタ処理を実行するデータパスが同一のデータパス構造になっている場合に必ず生じる問題である。また、図１６に示す従来の２次元フィルタでは、フィルタ処理方向の順序を容易に変更できないという問題があった。
【００１７】
また、特許文献２は、水平方向フィルタと垂直方向フィルタを用いて、画素データ密度を変換し、縮小画面を生成する技術を開示している。特許文献２が開示する技術では、水平方向フィルタ処理と垂直方向フィルタ処理の間に、画素データを並び替えるための、遅延回路（バッファに相当する）を必要としていた。
【００１８】
さらに、特許文献３は、水平方向フィルタと、構成を簡単にした垂直方向フィルタとを有する２次元ディジタルフィルタ技術を開示している。特許文献３が開示する技術においても、垂直方向にフィルタ処理ためには、水平方向にフィルタ処理された画素データを蓄積する遅延回路（バッファに相当する）を必要としていた。
【特許文献１】特開２００２−３０４６２４号公報
【特許文献２】米国特許第５２８９２９２号公報
【特許文献３】米国特許第５４１０３６２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
そこで本発明は、画面上の画素の画素値に対して、２次元フィルタ処理を行う場合、フィルタ処理方向の違いを吸収するためのバッファが不要で、フィルタ処理方向の順序を容易に変更できる、２次元フィルタ演算装置を提供することを目的とする。
【課題を解決するための手段】
【００２０】
第１の発明に係る２次元フィルタ演算装置は、被フィルタ画像データを格納する記憶部と、記憶部に格納されている被フィルタ画像データに対して、第１のフィルタ演算を実行する第１フィルタ処理部と、第１フィルタ処理部がフィルタ処理した画像データに対して、第２のフィルタ演算を実行する第２フィルタ処理部とを備え、第１フィルタ処理部と第２フィルタ処理部とは、垂直方向フィルタ演算と水平方向フィルタ演算の内の互いに異なるフィルタ演算を実行し、垂直方向フィルタ演算と水平方向フィルタ演算とは、互いに異なる並列処理によって実行される。
【００２１】
この構成によれば、被フィルタ画像データの２次元フィルタ演算において、フィルタ処理方向の順序を任意に設定でき、さらに、フィルタ処理方向の違いを吸収するためのバッファを必要としない、２次元フィルタ演算装置を提供できる。この２次元フィルタ演算装置は、バッファが不要な分だけ回路面積を削減できる。
【００２２】
第２の発明に係る２次元フィルタ演算装置では、並列処理は、被フィルタ画像データに対して、並列に実行される順次演算処理と並列に実行される並列演算処理とを含む。
【００２３】
この構成によれば、被フィルタ画像データの２次元フィルタ演算は、フィルタ処理方向によって、順次演算処理と並列演算処理の内のいずれかの演算処理を実行することができる。さらに、この構成によれば、演算処理の違いを吸収するためのバッファが不要であり、その分回路面積を削減した２次元フィルタ演算装置を提供できる。
【００２４】
第３の発明に係る２次元フィルタ演算装置では、第１フィルタ処理部は、複数の第１フィルタモジュールを有し、第２フィルタ処理部は、少なくとも１つの第２フィルタモジュールを有し、複数の第１フィルタモジュールは、被フィルタ画像データに対して第１のフィルタ演算を実行し、第１フィルタ処理部は、複数の第１フィルタ結果を出力し、少なくとも１つの第２フィルタモジュールは、複数の第１フィルタ結果の内の少なくとも一部を入力して、第２のフィルタ演算を実行し、第２フィルタ処理部は、少なくとも１つの第２フィルタ結果を出力する。
【００２５】
この構成によれば、複数の画素の画素値に対して、複数の水平方向フィルタ処理（あるいは垂直方向フィルタ処理）を実行し、フィルタ処理された複数の画素値を得て、得られた複数の画素値に対して、少なくとも１つの垂直方向フィルタ処理（あるいは水平方向フィルタ処理）を引き続き実行し、２次元フィルタ処理された複数の画素値を生成することができる。
【００２６】
第４の発明に係る２次元フィルタ演算装置では、第１フィルタ処理部は、複数の第１フィルタモジュールを用いて、第１のフィルタ演算を並列に実行し、第２フィルタ処理部が複数の第２フィルタモジュールを有する場合は、第２フィルタ処理部は、複数の第２フィルタモジュールを用いて、第２のフィルタ演算を並列に実行する。
【００２７】
この構成によれば、複数の水平方向フィルタ処理（あるいは垂直方向フィルタ処理）と、それに続く複数の垂直方向フィルタ処理（あるいは水平方向フィルタ処理）とを、それぞれ並列に実行することができる。したがって、より効率の良い２次元フィルタ演算装置を実現できる。
【００２８】
第５の発明に係る２次元フィルタ演算装置では、複数の第１フィルタモジュールのそれぞれは、初段の累積加算部と少なくとも１つの後段の累積加算部が縦続接続された複数の累積加算部と、複数の累積加算部のそれぞれの出力を順次選択して、出力する選択部とを有し、初段の累積加算部には、所定のフィルタ係数が、１処理時間ごとに順次入力され、少なくとも１つの後段の累積加算部には、それぞれの前段の累積加算部から、所定のフィルタ係数が、１処理時間ごとに順次転送され、複数の累積加算部それぞれには、被フィルタ画像データの垂直または水平に並んだ画素の画素値が、記憶部から１処理時間ごとに順次入力され、複数の累積加算部は、それぞれ、１処理時間ごとに画素値と所定のフィルタ係数との積和演算を行って、複数の第１フィルタ結果を出力する。
【００２９】
この構成によれば、フィルタ係数をシフト入力し、画素値を並列入力して、ループ内パイプライン処理によって、画素値とフィルタ係数との積和演算を高効率に行う第１フィルタモジュールを実現できる。
【００３０】
第６の発明に係る２次元フィルタ演算装置では、少なくとも１つの第２フィルタモジュールは、複数の加算部と、複数の積算部とを有し、複数の第１フィルタ結果の内の少なくとも一部と、所定の複数のフィルタ係数との積和演算を行い、少なくとも１つの第２フィルタ結果を出力する。
【００３１】
この構成によれば、第１フィルタモジュールが出力した演算結果を入力して、ループ内並列処理によって、演算結果とフィルタ係数との積和演算を高効率に行う第２フィルタモジュールを実現できる。この結果、２次元フィルタ演算を完成させることができる。
【００３２】
第７の発明に係る２次元フィルタ演算装置では、複数の第１フィルタモジュールは、ループ内パイプライン処理方式とループ内並列処理方式の内の一方の処理方式に従って、第１のフィルタ演算を実行し、少なくとも１つの第２フィルタモジュールは、ループ内パイプライン処理方式とループ内並列処理方式の内、複数の第１フィルタモジュールが従っていない方の処理方式に従って、第２のフィルタ演算を実行する。
【００３３】
この構成によれば、ループ内パイプライン処理（または、ループ内並列処理）により、第１のフィルタ処理を行う第１フィルタ処理部と、ループ内並列処理（または、ループ内パイプライン処理）により、第２のフィルタ処理を行う第２フィルタ処理部とを備える、２次元フィルタ演算装置を実現できる。
【００３４】
第８の発明に係る２次元フィルタ演算装置では、記憶部から１ライン分の画素の画素値を取得して一時的に格納し、第１フィルタ処理部に出力する、ラインメモリをさらに備える。
【００３５】
この構成によれば、記憶部からフィルタ演算部への画素値の転送をより効率よく行う２次元フィルタ演算装置を実現できる。
【００３６】
第９の発明に係る２次元フィルタ演算装置は、被フィルタ画像データを格納する記憶部と、垂直方向フィルタ演算を実行する垂直フィルタ処理部と、水平方向フィルタ演算を実行する水平フィルタ処理部と、記憶部の出力と水平フィルタ処理部の出力の内の一つを選択して、垂直フィルタ処理部へ出力する第１選択部と、記憶部の出力と垂直フィルタ処理部の出力の内の一つを選択して、水平フィルタ処理部へ出力する第２選択部と、垂直フィルタ処理部の出力と水平フィルタ処理部の出力の内の一つを選択して、２次元フィルタ演算結果として出力する第３選択部とを備える。垂直方向フィルタ演算と水平方向フィルタ演算とは、互いに異なる並列処理によって実行される。第１動作モードが選択された場合は、第１選択部は、記憶部の出力を選択し、第２選択部は、垂直フィルタ処理部の出力を選択し、第３選択部は、水平フィルタ処理部の出力を選択し、記憶部に格納されている被フィルタ画像データに対して、垂直方向フィルタ演算が実行された後に、水平方向フィルタ演算が実行される。第２動作モードが選択された場合は、第１選択部は、水平フィルタ処理部の出力を選択し、第２選択部は、記憶部の出力を選択し、第３選択部は、垂直フィルタ処理部の出力を選択し、記憶部に格納されている被フィルタ画像データに対して、水平方向フィルタ演算が実行された後に、垂直方向フィルタ演算が実行される。
【００３７】
この構成によれば、垂直方向フィルタ演算と水平方向フィルタ演算の順序を任意に変えることができる２次元フィルタ演算装置を実現できる。
【００３８】
第１０の発明に係る２次元フィルタ演算装置では、互いに異なる並列処理は、被フィルタ画像データに対して、並列に実行される順次演算処理と並列に実行される並列演算処理とを含む。
【００３９】
この構成によれば、被フィルタ画像データの２次元フィルタ演算は、フィルタ処理方向によって、順次演算処理と並列演算処理の内のいずれかの演算処理を実行することができる。さらに、この構成によれば、演算処理の違いを吸収するためのバッファが不要であり、その分回路面積を削減した２次元フィルタ演算装置を提供できる。
【００４０】
第１１の発明に係る２次元フィルタ演算装置では、第１動作モードと第２動作モードの選択は、被フィルタ画像データが準拠する動画像符号化規格に従って実行される。
【００４１】
この構成によれば、被フィルタ画像データが準拠する動画像符号化規格に従って、垂直方向フィルタ演算と水平方向フィルタ演算の実行順序を任意に変えることができる。
【発明の効果】
【００４２】
本発明によれば、画面上の画素の画素値に対して、２次元フィルタ処理を行う場合、フィルタ処理方向の違いを吸収するためのバッファが不要で、フィルタ処理方向の順序を容易に変更できる、２次元フィルタ演算装置を提供することができる。
【発明を実施するための最良の形態】
【００４３】
以下図面を参照しながら、本発明の実施の形態を説明する。
【００４４】
（実施の形態１）
本発明の実施の形態１は、例として、Ｈ．２６４｜ＭＰＥＧ−４  ＡＶＣに準拠した動き補償予測演算における２次元フィルタ処理を扱う。
【００４５】
なお、本発明は、一般的な２次元フィルタ演算に適用できるものであり、本形態に限定されるものではない。
【００４６】
本形態が例示する動き補償予測演算では、（４×４）個の整数画素精度の画素からなる画像領域を、動きベクトル（１／２、１／２）に従って平行移動して、新たな画像領域を求め、そこに含まれる１／２画素精度の画素の画素値を求める。この時、新たな画像領域に含まれる１／２画素精度の画素の画素値は、整数画素精度の画素の画素値に対して、６タップの２次元フィルタ演算を施すことにより算出する。（以下の記述では、整数画素精度の画素を「整数画素」、１／２画素精度の画素を「１／２画素」と略称する。）
図１は、本発明の実施の形態１における整数画素と１／２画素の配置図である。図１において、大きい白丸で示される整数画素は、水平方向に整数画素Ｆ００、Ｆ０１、Ｆ０２・・・Ｆ０８の順に並んでおり、垂直方向に整数画素Ｆ００、Ｆ１０、Ｆ２０・・・Ｆ８０の順に並んでいる。
【００４７】
今、図１の実線の矩形で示される画像領域Ａ（（４×４）個の整数画素）が、動きベクトル（１／２、１／２）に従って破線の矩形で示される画像領域Ｂに平行移動すると仮定する。画像領域Ｂを規定する画素は、小さい黒丸で示される（４×４）個の１／２画素である。これらの黒丸で示される１／２画素は、ちょうど整数画素の対角線上に位置している。したがって、黒丸で示される１／２画素の画素値を水平方向フィルタにより補間するために、小さい白丸で示される１／２画素の画素値が必要である。（水平方向フィルタは、６タップフィルタであり、補間する画素値の画素の左右に位置する６個の隣接画素の画素値を必要とする。）さらに、小さい白丸で示される１／２画素の画素値は、整数画素Ｆ００〜Ｆ８８の画素値を用いて、垂直方向フィルタにより補間される。（図１において、１／２画素については、説明に必要なもののみが示されている。）
図２は、本発明の実施の形態１における１／２画素の配置図である。図２は、符号を見やすくするために、小さい白丸の１／２画素（１／２画素Ｈ２０〜Ｈ５８）とそれらの間にある整数画素の配置を示している。
【００４８】
図３は、本発明の実施の形態１における１／２画素の別の配置図である。図３は、符号を見やすくするために、画像領域Ｂに位置する小さい黒丸の１／２画素Ｈａ、Ｈｂ、Ｈｃ、Ｈｄ、Ｈｅ、Ｈｆ、Ｈｇ、Ｈｈ、Ｈｉ、Ｈｊ、Ｈｋ、Ｈｍ、Ｈｎ、Ｈｐ、Ｈｑ、Ｈｒ（以下、１／２画素Ｈａ〜Ｈｒと略記する）のみを示している。
【００４９】
以下に、図１〜３を参照して、１／２画素Ｈａ〜Ｈｒの画素値を６タップの２次元フィルタにより求める過程を説明する。
【００５０】
本形態の２次元フィルタ演算の方法では、最初に、整数画素Ｆ００〜Ｆ８８に対して垂直方向フィルタ演算を行い、１／２画素Ｈ２０〜Ｈ５８を求める。次に、垂直方向フィルタ演算で求めた１／２画素Ｈ２０〜Ｈ５８に対して、水平方向フィルタ演算を行い、１／２画素Ｈａ〜Ｈｒを求める。
【００５１】
垂直方向フィルタ演算は、図１の整数画素Ｆ００、Ｆ１０、Ｆ２０・・・Ｆ８０を用いて、図２の１／２画素Ｈ２０、Ｈ３０、Ｈ４０、Ｈ５０の画素値の補間を行う。フィルタ演算の式は、
【００５２】
【数１】
0004824703.tif 000002
【００５３】
で表される。数式１において、左辺「Ｙ」は、補間される画素の画素値であり、右辺の変数「Ｘ０〜Ｘ５」は、補間される画素の上下（垂直方向フィルタ演算の場合）、または左右（水平方向フィルタ演算の場合）に隣接するそれぞれ３個の画素の画素値である。
【００５４】
Ｈ２６４｜ＭＰＥＧ−４  ＡＶＣの動き補償予測の場合、数式１の右辺の各係数は、ａ＝１、ｂ＝−５、ｃ＝２０、ｄ＝２０、ｅ＝−５、ｆ＝１である。したがって、数式１は数式２と表される。
【００５５】
【数２】
0004824703.tif 000003
【００５６】
例えば、１／２画素Ｈ２０の画素値「Ｙ」は、数式２を用いて、
変数「Ｘ０」に整数画素Ｆ００の画素値を代入し、
変数「Ｘ１」に整数画素Ｆ１０の画素値を代入し、
変数「Ｘ２」に整数画素Ｆ２０の画素値を代入し、
変数「Ｘ３」に整数画素Ｆ３０の画素値を代入し、
変数「Ｘ４」に整数画素Ｆ４０の画素値を代入し、
変数「Ｘ５」に整数画素Ｆ５０の画素値を代入して、生成される。
【００５７】
同様に、変数「Ｘ０〜Ｘ５」に代入する画素値の整数画素を１つずつ下方にずらして、１／２画素Ｈ３０、Ｈ４０、Ｈ５０の画素値を生成することができる。
【００５８】
上述した垂直方向フィルタ演算を、整数画素列「Ｆ００〜Ｆ８０」、「Ｆ０１〜Ｆ８１」・・・「Ｆ０８〜Ｆ８８」の画素の画素値に対して、実行することにより、図２に示す１／２画素列「Ｈ２０〜Ｈ５０」、「Ｈ２１〜Ｈ５１」・・・「Ｈ２８〜Ｈ５８」の画素の画素値が生成される。
【００５９】
次に、上で生成された１／２画素Ｈ２０〜Ｈ５８の画素値を用いて、水平方向フィルタ演算を行い、図３の１／２画素Ｈａ〜Ｈｒの画素値を生成する。フィルタ演算の式は、数式１と同様であり、係数値も垂直方向フィルタ演算のものと同様である。
【００６０】
例えば、１／２画素Ｈａの画素値「Ｙ」は、数式２を用いて、
変数「Ｘ０」に１／２画素Ｈ２０の画素値を代入し、
変数「Ｘ１」に１／２画素Ｈ２１の画素値を代入し、
変数「Ｘ２」に１／２画素Ｈ２２の画素値を代入し、
変数「Ｘ３」に１／２画素Ｈ２３の画素値を代入し、
変数「Ｘ４」に１／２画素Ｈ２４の画素値を代入し、
変数「Ｘ５」に１／２画素Ｈ２５の画素値を代入して、生成される。
【００６１】
同様に、変数「Ｘ０〜Ｘ５」に代入する画素値の１／２画素を１つずつ右方にずらして、１／２画素Ｈｂ、Ｈｃ、Ｈｄの画素値を生成することができる。
【００６２】
上述した水平方向フィルタ演算を、１／２画素行「Ｈ２０〜Ｈ２８」、「Ｈ３０〜Ｈ３８」、「Ｈ４０〜Ｈ４８」、「Ｈ５０〜Ｈ５８」の画素の画素値に対して、実行することにより、図３に示す１／２画素Ｈａ〜Ｈｒの画素値が生成される。
【００６３】
次に、本発明の２次元フィルタ演算装置について説明する。
【００６４】
図４は、本発明の実施の形態１における２次元フィルタ演算装置のブロック図である。図４に示す本形態の２次元フィルタ演算装置は、画像メモリ３００、ラインメモリ４００、垂直フィルタ処理部１００、バッファ５００、及び、水平フィルタ処理部２００を備える。垂直フィルタ処理部１００は、第１フィルタ処理部に相当し、水平フィルタ処理部２００は、第２フィルタ処理部に相当する。
【００６５】
本形態の２次元フィルタ演算装置は、最初に垂直方向フィルタ演算を行い、次に、水平方向フィルタ演算を行う。勿論、この順序は、逆にしても良い。
【００６６】
図５は、本発明の実施の形態１における２次元フィルタ演算方法のフローチャートである。図５に従って、図４に示す本形態の２次元フィルタ演算装置の動作の概要を以下に説明する。
【００６７】
図５のステップＳ０で２次元フィルタ演算処理が開始されると、ステップＳ１において、画像メモリ３００からラインメモリ４００へ、画像データ（整数画素の画素値）を読み込む。
【００６８】
ステップＳ２において、垂直フィルタ処理部１００は、ラインメモリ４００から整数画素の画素値を読み込み、垂直方向フィルタ演算を行って、１／２画素の画素値を求める。この演算により、図１に示す整数画素列「Ｆ００〜Ｆ８０」、「Ｆ０１〜Ｆ８１」・・・「Ｆ０８〜Ｆ８８」の画素の画素値から、図２に示す１／２画素列「Ｈ２０〜Ｈ５０」、「Ｈ２１〜Ｈ５１」・・・「Ｈ２８〜Ｈ５８」の画素の画素値が生成される。
【００６９】
ステップＳ３において、水平フィルタ処理部２００は、ステップＳ２において生成された１／２画素Ｈ２０〜Ｈ５８の画素値に対して水平方向フィルタ演算を実行して、１／２画素Ｈａ〜Ｈｒの画素値を生成する。
【００７０】
ステップＳ４において、水平フィルタ処理部２００は、生成した１／２画素Ｈａ〜Ｈｒの画素値を、画像領域Ｂを構成する１／２画素の画素データとして、画像メモリ３００に格納し、ステップＳ５に移って、処理を終了する。
【００７１】
上述した図５のステップＳ１〜ステップＳ４までの処理では、ある部分は、互いに重なり合って並列に実行される。以下では、図４に示す２次元フィルタ演算装置の動作をさらに詳しく説明する。
【００７２】
図４において、画像メモリ３００は、整数画素の画素値を画像データとして格納している。
【００７３】
ラインメモリ４００は、画像メモリ３００から、水平方向１ライン分の整数画素の画素値を取り込む。ラインメモリ４００は、この１ライン分の画素値に含まれている、図１に示す整数画素Ｆ００〜Ｆ０８の画素値を、垂直フィルタ処理部１００に順次送る。ラインメモリ４００は、整数画素Ｆ００〜Ｆ０８の画素値を送り終えると、次の水平方向１ライン分の整数画素の画素値を取り込む。ラインメモリ４００が、この操作を繰り返すことにより、垂直フィルタ処理部１００には、図１に示す、整数画素行「Ｆ００〜Ｆ０８」、「Ｆ１０〜Ｆ１８」・・・「Ｆ８０〜Ｆ８８」の画素の画素値が、順次送られることになる。
【００７４】
垂直フィルタ処理部１００は、整数画素列「Ｆ００〜Ｆ８０」、「Ｆ０１〜Ｆ８１」・・・「Ｆ０８〜Ｆ８８」に対して、垂直方向フィルタ演算を並列に実行する。この処理により、図２に示す１／２画素行「Ｈ２０〜Ｈ２８」の画素の画素値が最初に並列に生成され、バッファ５００に出力される。次に、１／２画素行「Ｈ３０〜Ｈ３８」、１／２画素行「Ｈ４０〜Ｈ４８」、最後に、１／２画素行「Ｈ５０〜Ｈ５８」の各画素の画素値が並列に生成され、それぞれ、バッファ５００に出力される。
【００７５】
水平フィルタ処理部２００は、バッファ５００から、１／２画素行「Ｈ２０〜Ｈ２８」の画素の画素値を取り込み、水平方向フィルタ演算により、１／２画素Ｈａ、Ｈｂ、Ｈｃ、Ｈｄの画素値を生成する。次に、水平フィルタ処理部２００は、１／２画素行「Ｈ３０〜Ｈ３８」の画素の画素値を取り込み、１／２画素Ｈｅ、Ｈｆ、Ｈｇ、Ｈｈの画素値を生成し、１／２画素行「Ｈ４０〜Ｈ４８」の画素の画素値を取り込み、１／２画素Ｈｉ、Ｈｊ、Ｈｋ、Ｈｍの画素値を生成し、最後に、１／２画素行「Ｈ５０〜Ｈ５８」の画素の画素値を取り込み、１／２画素Ｈｎ、Ｈｐ、Ｈｑ、Ｈｒの画素値を生成する。水平フィルタ処理部２００は、生成した１／２画素Ｈａ〜Ｈｒの画素値を、順次、画像メモリ３００に出力する。
【００７６】
以上の２次元フィルタ演算により、図１に示す画像領域Ｂの１／２画素Ｈａ〜Ｈｒの画素値が生成される。
【００７７】
次に、本形態の２次元フィルタ演算装置の垂直フィルタ処理部１００と水平フィルタ処理部２００の構成と動作について述べる。
【００７８】
図６は、本発明の実施の形態１における垂直フィルタ処理部１００のブロック図である。図６において、 図４と同様な構成要素については、同一の符号を付すことにより、説明を省略する。
【００７９】
図６に示す本形態の垂直フィルタ処理部１００は、並列に設置された９個の第１フィルタモジュール（＃０）１１０〜（＃８）１９０を備える。
【００８０】
第１フィルタモジュール（＃０）１１０は、図１の整数画素列「Ｆ００〜Ｆ８０」に対して、垂直方向フィルタ演算を行い、第１フィルタモジュール（＃１）１２０は、整数画素列「Ｆ０１〜Ｆ８１」に対して、垂直方向フィルタ演算を行い、以下同様に、第１フィルタモジュール（＃８）１９０は、整数画素列「Ｆ０８〜Ｆ８８」に対して、垂直方向フィルタ演算を行う。
【００８１】
図６に示す９個の第１フィルタモジュール（＃０）１１０〜（＃８）１９０は、いずれも同じ構造を有しており、以下に、第１フィルタモジュール（＃０）１１０を例として、それらの構造を説明する。
【００８２】
第１フィルタモジュール（＃０）１１０は、縦続接続されたプロセッサエレメントＰＥ１０、ＰＥ２０、ＰＥ３０、ＰＥ４０と、これらのプロセッサエレメントの出力を選択するセレクタ５０とを有している。セレクタ５０は、選択部に相当する。ＰＥ１０〜ＰＥ４０のそれぞれは、クロックに合わせて、それぞれの一方の入力端に、ラインメモリ４００から、画素値が入力される。初段のプロセッサエレメントＰＥ１０の他の入力端に係数入力端子９１からフィルタ係数が入力される。ＰＥ１０に入力されたフィルタ係数は、クロックに合わせて、それぞれ後段のプロセッサエレメントに転送される。ＰＥ１０〜ＰＥ４０は、クロックに合わせて、入力された画素値とフィルタ係数との積和演算を行い、それぞれの結果を、セレクタ５０に出力する。セレクタ５０は、ＰＥ１０〜ＰＥ４０の出力を順次選択して、バッファ５００に出力する。以上述べた積和演算の詳細は、タイミング図を参照して、後述する。
【００８３】
図７は、本発明の実施の形態１におけるプロセッサエレメントＰＥ１０のブロック図である。ＰＥ２０〜ＰＥ４０も、図７に示すＰＥ１０のブロック図と同じ構成を有する。ＰＥ１０〜ＰＥ４０は、累積加算部に相当する。
【００８４】
図７において、本形態のＰＥ１０は、乗算器１１、加算器１２、フリップフロップ１３、及び、フリップフロップ１４を有している。係数入力端子１５には、フィルタ係数が入力され（ＰＥ１０では係数入力端子９１から）、そのフィルタ係数は、フリップフロップ１３を経由して次のクロック時に係数出力端子１６から後段のプロセッサエレメントに（ＰＥ１０では、ＰＥ２０に）出力される。画素データ入力端子１７には、ラインメモリ４００から、画素値が入力され、乗算器１１において、係数入力端子１５から入力されたフィルタ係数との積が求められる。乗算器１１の演算結果は、加算器１２において、すでに演算されてフリップフロップ１４に累積されている積和値と加算され、フリップフロップ１４の積和値を更新する。最終的な積和値、すなわち、６個の画素値と６個のフィルタ係数との積和演算を行った値が、１／２画素の画素値としてセレクタ５０に出力される。
【００８５】
図８は、本発明の実施の形態１における２次元フィルタ演算装置のタイミング図である。図８において、横軸は、クロック（ｃｌｋ）のサイクル数を示し、縦軸は、図６に示す垂直フィルタ処理部１００へ入力される画素値とフィルタ係数、垂直フィルタ処理部１００から出力される画素値、及び、後述の図９に示す水平フィルタ処理部２００のへ入力される画素値と水平フィルタ処理部２００から出力される画素値を示している。
【００８６】
以下に、図８を参照して、垂直フィルタ処理部１００の垂直方向フィルタ演算を説明する。  
【００８７】
クロック０において、ラインメモリ４００からＰＥ１０の画素データ入力端子ｉｎ０に画素値「Ｘ０」が入力され、係数入力端子９１からＰＥ１０の係数入力端子ｉｎＡにフィルタ係数「ａ」が入力され、ＰＥ１０において以下の演算が実行される。すなわち、乗算器１１において、乗算「ａ＊Ｘ０」が実行され、加算器１２において、フリップフロップ１４に累積しておいた積和結果に乗算結果「ａ＊Ｘ０」を足し、フリップフロップ１４の積和結果を更新する。この場合は、フリップフロップ１４にはまだ積和結果は累積されていないため、乗算結果「ａ＊Ｘ０」そのものが、フリップフロップ１４に保持される。フィルタ係数「ａ」は、後段のＰＥ２０に転送するために、フリップフロップ１３に保持しておく。
【００８８】
ここで注意すべきことは、図６の垂直フィルタ処理部１００では、上述のクロック０における処理が、第１フィルタモジュール（＃０）１１０〜（＃８）１９０において、同時に実行されていることである。すなわち、図６のラインメモリ４００からは、図示されていない接続により、第１フィルタモジュール（＃１）１２０〜（＃８）１９０のそれぞれのＰＥ１０〜ＰＥ４０にも並列して画素値が送られる。したがって、図８の画素値「Ｘ０〜Ｘ８」は、第１フィルタモジュール（＃０）１１０では、図１の整数画素Ｆ００〜Ｆ８０の画素値を表し、第１フィルタモジュール（＃１）１２０では、同じく整数画素Ｆ０１〜Ｆ８１の画素値を表し、以下同様に、第１フィルタモジュール（＃８）１９０では、整数画素Ｆ０８〜Ｆ８８の画素値を表す。その結果、クロック０において、第１フィルタモジュール（＃０）１１０では、ＰＥ１０に乗算結果「ａ＊整数画素Ｆ００の画素値」が保持され、第１フィルタモジュール（＃１）１２０では、ＰＥ１０に乗算結果「ａ＊整数画素Ｆ０１の画素値」が保持され、以下同様に、第１フィルタモジュール（＃８）１９０では、ＰＥ１０に乗算結果「ａ＊整数画素Ｆ０８の画素値」が保持される。
【００８９】
この時点で、１／２画素行「Ｈ２０〜Ｈ２８」のそれぞれの画素の画素値を並列に算出するための６タップフィルタの最初の１タップ分の乗算「ａ＊Ｘ０」（数式１の右辺第１項）が終了する。
【００９０】
次に、クロック１において、ラインメモリ４００からＰＥ１０の画素データ入力端子ｉｎ０に画素値「Ｘ１」が入力され、係数入力端子９１からＰＥ１０の係数入力端子ｉｎＡにフィルタ係数「ｂ」が入力され、ＰＥ１０において以下の演算が実行される。すなわち、乗算器１１において、乗算「ｂ＊Ｘ１」が実行され、続いて、加算器１２において、フリップフロップ１４に累積しておいた積和結果「ａ＊Ｘ０」に乗算結果「ｂ＊Ｘ１」（数式１の右辺第２項）を足し、フリップフロップ１４の積和結果を「ａ＊Ｘ０＋ｂ＊Ｘ１」に更新する。また、フィルタ係数「ｂ」は、フリップフロップ１３に保持しておく。
【００９１】
同時に、クロック１において、ラインメモリ４００からＰＥ２０の画素データ入力端子ｉｎ１に画素値「Ｘ１」が入力され、ＰＥ１０のフリップフロップ１３からＰＥ２０の係数入力端子ｉｎＢにフィルタ係数「ａ」が入力され、ＰＥ２０において以下の演算が実行される。すなわち、乗算器１１において、乗算「ａ＊Ｘ１」が実行され、続いて、加算器１２において、フリップフロップ１４に累積しておいた積和結果に乗算結果「ａ＊Ｘ１」を足し、フリップフロップ１４の積和結果を更新する。この場合は、フリップフロップ１４にはまだ積和結果は累積されていないため、乗算結果「ａ＊Ｘ１」そのものが、フリップフロップ１４に保持される。フィルタ係数「ａ」は、後段のＰＥ３０に転送するために、フリップフロップ１３に保持しておく。
【００９２】
クロック１においても、図６の垂直フィルタ処理部１００では、上述の処理が、第１フィルタモジュール（＃０）１１０〜（＃８）１９０において、同時に実行される。すなわち、図８の画素値「Ｘ１」は、第１フィルタモジュール（＃０）１１０では、図１の整数画素Ｆ１０の画素値を表し、第１フィルタモジュール（＃１）１２０では、同じく整数画素Ｆ１１の画素値を表し、以下同様に、第１フィルタモジュール（＃８）１９０では、整数画素Ｆ１８の画素値を表す。
【００９３】
次に、クロック２において、ラインメモリ４００からＰＥ１０の画素データ入力端子ｉｎ０に画素値「Ｘ２」が入力され、係数入力端子９１からＰＥ１０の係数入力端子ｉｎＡにフィルタ係数「ｃ」が入力され、ＰＥ１０において以下の演算が実行される。すなわち、乗算器１１において、乗算「ｃ＊Ｘ２」が実行され、続いて、加算器１２において、フリップフロップ１４に累積しておいた積和結果「ａ＊Ｘ０＋ｂ＊Ｘ１」に乗算結果「ｃ＊Ｘ２」（数式１の右辺第３項）を足し、フリップフロップ１４の積和結果を「ａ＊Ｘ０＋ｂ＊Ｘ１＋ｃ＊Ｘ２」に更新する。また、フィルタ係数「ｃ」は、フリップフロップ１３に保持しておく。
【００９４】
同時に、クロック２において、ラインメモリ４００からＰＥ２０の画素データ入力端子ｉｎ１に画素値「Ｘ２」が入力され、ＰＥ１０のフリップフロップ１３からＰＥ２０の係数入力端子ｉｎＢにフィルタ係数「ｂ」が入力され、ＰＥ２０において以下の演算が実行される。すなわち、乗算器１１において、乗算「ｂ＊Ｘ２」が実行され、続いて、加算器１２において、フリップフロップ１４に累積しておいた積和結果「ａ＊Ｘ１」に乗算結果「ｂ＊Ｘ２」を足し、フリップフロップ１４の積和結果を「ａ＊Ｘ１＋ｂ＊Ｘ２」に更新する。フィルタ係数「ｂ」は、後段に転送するために、フリップフロップ１３に保持しておく。
【００９５】
さらに同時に、クロック２において、ラインメモリ４００からＰＥ３０の画素データ入力端子ｉｎ２に画素値「Ｘ２」が入力され、ＰＥ２０からＰＥ３０の係数入力端子ｉｎＣにフィルタ係数「ａ」が入力され、ＰＥ３０において以下の演算が実行される。すなわち、乗算器１１において、乗算「ａ＊Ｘ２」が実行され、続いて、加算器１２において、フリップフロップ１４に累積しておいた積和結果に乗算結果「ａ＊Ｘ２」を足し、フリップフロップ１４の積和結果を更新する。この場合は、フリップフロップ１４にはまだ積和結果は累積されていないため、乗算結果「ａ＊Ｘ２」そのものが、フリップフロップ１４に保持される。フィルタ係数「ａ」は、後段のＰＥ４０に転送するために、フリップフロップ１３に保持しておく。
【００９６】
クロック２においても、図６の垂直フィルタ処理部１００では、上述の処理が、第１フィルタモジュール（＃０）１１０〜（＃８）１９０において、同時に実行される。すなわち、図８の画素値「Ｘ２」は、第１フィルタモジュール（＃０）１１０では、図１の整数画素Ｆ２０の画素値を表し、第１フィルタモジュール（＃１）１２０では、同じく整数画素Ｆ２１の画素値を表し、以下同様に、第１フィルタモジュール（＃８）１９０では、整数画素Ｆ２８の画素値を表す。
【００９７】
次に、クロック３において、ラインメモリ４００からＰＥ１０の画素データ入力端子ｉｎ０に画素値「Ｘ３」が入力され、係数入力端子９１からＰＥ１０の係数入力端子ｉｎＡにフィルタ係数「ｄ」が入力され、ＰＥ１０において以下の演算が実行される。すなわち、乗算器１１において、乗算「ｄ＊Ｘ３」が実行され、続いて、加算器１２において、フリップフロップ１４に累積しておいた積和結果「ａ＊Ｘ０＋ｂ＊Ｘ１＋ｃ＊Ｘ２」に乗算結果「ｄ＊Ｘ３」（数式１の右辺第４項）を足し、フリップフロップ１４の積和結果を「ａ＊Ｘ０＋ｂ＊Ｘ１＋ｃ＊Ｘ２＋ｄ＊Ｘ３」に更新する。また、フィルタ係数「ｄ」は、フリップフロップ１３に保持しておく。
【００９８】
同時に、クロック３において、ラインメモリ４００からＰＥ２０の画素データ入力端子ｉｎ１に画素値「Ｘ３」が入力され、ＰＥ１０からＰＥ２０の係数入力端子ｉｎＢにフィルタ係数「ｃ」が入力され、ＰＥ２０において以下の演算が実行される。すなわち、乗算器１１において、乗算「ｃ＊Ｘ３」が実行され、続いて、加算器１２において、フリップフロップ１４に累積しておいた積和結果「ａ＊Ｘ１＋ｂ＊Ｘ２」に乗算結果「ｃ＊Ｘ３」を足し、フリップフロップ１４の積和結果を「ａ＊Ｘ１＋ｂ＊Ｘ２＋ｃ＊Ｘ３」に更新する。フィルタ係数「ｃ」は、後段に転送するために、フリップフロップ１３に保持しておく。
【００９９】
さらに同時に、クロック３において、ラインメモリ４００からＰＥ３０の画素データ入力端子ｉｎ２に画素値「Ｘ３」が入力され、ＰＥ２０からＰＥ３０の係数入力端子ｉｎＣにフィルタ係数「ｂ」が入力され、ＰＥ３０において以下の演算が実行される。すなわち、乗算器１１において、乗算「ｂ＊Ｘ３」が実行され、続いて、加算器１２において、フリップフロップ１４に累積しておいた積和結果「ａ＊Ｘ２」に乗算結果「ｂ＊Ｘ３」を足し、フリップフロップ１４の積和結果を「ａ＊Ｘ２＋ｂ＊Ｘ３」更新する。フィルタ係数「ｂ」は、後段に転送するために、フリップフロップ１３に保持しておく。
【０１００】
さらに同時に、クロック３において、ラインメモリ４００からＰＥ４０の画素データ入力端子ｉｎ３に画素値「Ｘ３」が入力され、ＰＥ３０からＰＥ４０の係数入力端子ｉｎＤにフィルタ係数「ａ」が入力され、ＰＥ３０において以下の演算が実行される。すなわち、乗算器１１において、乗算「ａ＊Ｘ３」が実行され、続いて、加算器１２において、フリップフロップ１４に累積しておいた積和結果に乗算結果「ａ＊Ｘ３」を足し、フリップフロップ１４の積和結果を更新する。この場合は、フリップフロップ１４にはまだ積和結果は累積されていないため、乗算結果「ａ＊Ｘ２」そのものが、フリップフロップ１４に保持される。
【０１０１】
クロック３においても、図６の垂直フィルタ処理部１００では、上述の処理が、第１フィルタモジュール（＃０）１１０〜（＃８）１９０において、同時に実行される。すなわち、図８の画素値「Ｘ３」は、第１フィルタモジュール（＃０）１１０では、図１の整数画素Ｆ３０の画素値を表し、第１フィルタモジュール（＃１）１２０では、同じく整数画素Ｆ３１の画素値を表し、以下同様に、第１フィルタモジュール（＃８）１９０では、整数画素Ｆ３８の画素値を表す。
【０１０２】
以下同様な処理を繰り返すと、第１フィルタモジュール（＃０）１１０〜（＃８）１９０の各々に対して、
クロック４において、
ＰＥ１０には、積和結果「ａ＊Ｘ０＋ｂ＊Ｘ１＋ｃ＊Ｘ２＋ｄ＊Ｘ３＋ｅ＊Ｘ４」が保持され、
ＰＥ２０には、積和結果「ａ＊Ｘ１＋ｂ＊Ｘ２＋ｃ＊Ｘ３＋ｄ＊Ｘ４」が保持され、
ＰＥ３０には、積和結果「ａ＊Ｘ２＋ｂ＊Ｘ３＋ｃ＊Ｘ４」が保持され、
ＰＥ４０には、積和結果「ａ＊Ｘ３＋ｂ＊Ｘ４」が保持される。
【０１０３】
クロック５において、
ＰＥ１０には、積和結果「ａ＊Ｘ０＋ｂ＊Ｘ１＋ｃ＊Ｘ２＋ｄ＊Ｘ３＋ｅ＊Ｘ４＋ｆ＊Ｘ５」が保持され、
ＰＥ２０には、積和結果「ａ＊Ｘ１＋ｂ＊Ｘ２＋ｃ＊Ｘ３＋ｄ＊Ｘ４＋ｅ＊Ｘ５」が保持され、
ＰＥ３０には、積和結果「ａ＊Ｘ２＋ｂ＊Ｘ３＋ｃ＊Ｘ４＋ｄ＊Ｘ５」が保持され、
ＰＥ４０には、積和結果「ａ＊Ｘ３＋ｂ＊Ｘ４＋ｃ＊Ｘ５」が保持される。
【０１０４】
クロック５において、ＰＥ１０は、数式１の右辺６項の演算を終了する。
【０１０５】
クロック６において、セレクタ５０は、ＰＥ１０の出力を選択し、垂直フィルタ処理部１００のフィルタ出力として画素値「Ｙ０」をバッファ５００に送る。
【０１０６】
クロック６において、図８の画素値「Ｙ０」は、第１フィルタモジュール（＃０）１１０では、図２の１／２画素Ｈ２０の画素値を表し、第１フィルタモジュール（＃１）１２０では、１／２画素Ｈ２１の画素値を表し、以下同様に、第１フィルタモジュール（＃８）１９０では、１／２画素Ｈ２８の画素値を表す。
【０１０７】
このように、クロック６において、第１フィルタモジュール（＃０）１１０〜（＃８）１９０における最初の垂直方向フィルタ演算「ａ＊Ｘ０＋ｂ＊Ｘ１＋ｃ＊Ｘ２＋ｄ＊Ｘ３＋ｅ＊Ｘ４＋ｆ＊Ｘ５」が終了し、１／２画素行「Ｈ２０〜Ｈ２８」の各画素の画素値が垂直フィルタ処理部１００から、バッファ５００に送られる。
【０１０８】
続いて、クロック７において、第１フィルタモジュール（＃０）１１０〜（＃８）１９０における垂直方向フィルタ演算「ａ＊Ｘ１＋ｂ＊Ｘ２＋ｃ＊Ｘ３＋ｄ＊Ｘ４＋ｅ＊Ｘ５＋ｆ＊Ｘ６」が終了し、１／２画素行「Ｈ３０〜Ｈ３８」の各画素の画素値が垂直フィルタ処理部１００から、バッファ５００に送られる。
【０１０９】
さらに、クロック８において、第１フィルタモジュール（＃０）１１０〜（＃８）１９０における垂直方向フィルタ演算「ａ＊Ｘ２＋ｂ＊Ｘ３＋ｃ＊Ｘ４＋ｄ＊Ｘ５＋ｅ＊Ｘ６＋ｆ＊Ｘ７」が終了し、１／２画素行「Ｈ４０〜Ｈ４８」の各画素の画素値が垂直フィルタ処理部１００から、バッファ５００に送られる。
【０１１０】
最後に、クロック９において、第１フィルタモジュール（＃０）１１０〜（＃８）１９０における垂直方向フィルタ演算「ａ＊Ｘ３＋ｂ＊Ｘ４＋ｃ＊Ｘ５＋ｄ＊Ｘ６＋ｅ＊Ｘ７＋ｆ＊Ｘ８」が終了し、１／２画素行「Ｈ５０〜Ｈ５８」の各画素の画素値が垂直フィルタ処理部１００から、バッファ５００に送られる。
【０１１１】
なお、クロック７以降では、以下に述べる水平方向フィルタ演算が垂直方向フィルタ演算と並行して実行される。
【０１１２】
図９は、本発明の実施の形態１における水平フィルタ処理部のブロック図である。図９において、 図４と同様な構成要素については、同一の符号を付すことにより、説明を省略する。
【０１１３】
図９に示す本形態の水平フィルタ処理部２００は、セレクタ２５０、第２フィルタモジュール（＃Ａ）２１０、（＃Ｂ）２２０、（＃Ｃ）２３０、（＃Ｄ）２４０、及び、フリップフロップ２６０〜２８０を備える。第２フィルタモジュール（＃Ａ）２１０〜（＃Ｄ）２４０は、同じ構造を有している。以下に第２フィルタモジュール（＃Ａ）２１０の構造を説明する。
【０１１４】
図９に示すように、第２フィルタモジュール（＃Ａ）２１０は、加算器２１１、２１２、２１３、２１７、２１８、乗算器２１４、２１５、２１６、及び、フリップフロップ２１９を有する。第２フィルタモジュール（＃Ａ）２１０は、数式３で示される、水平方向フィルタ演算を行う。
【０１１５】
【数３】
0004824703.tif 000004
【０１１６】
数式３は、数式２のように、フィルタ演算が左右対称の係数を有する場合、同じ係数の項をまとめて表現したものである。
【０１１７】
図９において、セレクタ２５０は、バッファ５００に出力された垂直方向フィルタ演算結果から画素値を選択し、加算器２１１には画素値「Ｘ０」、「Ｘ５」を送り、加算器２１２には、画素値「Ｘ１」、「Ｘ４」を送り、加算器２１３には、画素値「Ｘ２」、「Ｘ３」を送る。
【０１１８】
フリップフロップ２６０には、フィルタ係数「１」が保持されており、乗算器２１４は、フリップフロップ２６０の出力「１」と加算器２１１の出力「Ｘ０＋Ｘ５」を乗算して、乗算結果「Ｘ０＋Ｘ５」を加算器２１７に送る。
【０１１９】
フリップフロップ２７０には、フィルタ係数「−５」が保持されており、乗算器２１５は、フリップフロップ２７０の出力「−５」と加算器２１２の出力「Ｘ１＋Ｘ４」を乗算して、乗算結果「（−５）＊（Ｘ１＋Ｘ４）」を加算器２１７に送る。
【０１２０】
フリップフロップ２８０には、フィルタ係数「２０」が保持されており、乗算器２１６は、フリップフロップ２８０の出力「２０」と加算器２１３の出力「Ｘ２＋Ｘ３」を乗算して、乗算結果「２０＊（Ｘ２＋Ｘ３）」を加算器２１７に送る。
【０１２１】
加算器２１７は、乗算器２１４の出力「Ｘ０＋Ｘ５」と乗算器２１５の出力「（−５）＊（Ｘ１＋Ｘ４）」の和を取り、和算結果「（Ｘ０＋Ｘ５）−５＊（Ｘ１＋Ｘ４）」を出力する。
【０１２２】
加算器２１８は、加算器２１７の出力「（Ｘ０＋Ｘ５）−５＊（Ｘ１＋Ｘ４）」と乗算器２１６の出力「２０＊（Ｘ２＋Ｘ３）」の和を取り、和算結果「（Ｘ０＋Ｘ５）−５＊（Ｘ１＋Ｘ４）＋２０＊（Ｘ２＋Ｘ３）」を、フリップフロップ２１９に出力する。この和算結果は、数式３の右辺に等しく、したがって、水平方向フィルタ演算結果「Ｙ」である。
【０１２３】
フリップフロップ２１９は、水平方向フィルタ演算結果「Ｙ」を出力する。
【０１２４】
水平フィルタ処理部２００では、第２フィルタモジュール（＃Ｂ）２２０、第２フィルタモジュール（＃Ｃ）２３０、第２フィルタモジュール（＃Ｄ）２４０も、上述した第２フィルタモジュール（＃Ａ）２１０と同様の動作を、同時に並列して実行する。
【０１２５】
次に、水平フィルタ処理部２００の動作を、図８に示す本形態の２次元フィルタ演算装置のタイミング図に従って説明する。
【０１２６】
クロック６において、垂直フィルタ出力として画素値「Ｙ０」、すなわち、１／２画素行「Ｈ２０〜Ｈ２８」の各画素の画素値が垂直フィルタ処理部１００から、バッファ５００に送られている。
【０１２７】
クロック７において、セレクタ２５０は、バッファ５００に格納されている１／２画素行「Ｈ２０〜Ｈ２８」の各画素の画素値を次のように選択して、第２フィルタモジュール（＃Ａ）２１０〜（＃Ｄ）２４０に送る。
【０１２８】
すなわち、セレクタ２５０は、
画素値Ｘ０〜Ｘ５として、１／２画素Ｈ２０〜Ｈ２５の画素値を選択して第２フィルタモジュール（＃Ａ）２１０に送り、
画素値Ｘ０〜Ｘ５として、１／２画素Ｈ２１〜Ｈ２６の画素値を選択して第２フィルタモジュール（＃Ｂ）２２０に送り、
画素値Ｘ０〜Ｘ５として、１／２画素Ｈ２２〜Ｈ２７の画素値を選択して第２フィルタモジュール（＃Ｃ）２３０に送り、
画素値Ｘ０〜Ｘ５として、１／２画素Ｈ２３〜Ｈ２８の画素値を選択して第２フィルタモジュール（＃Ｄ）２４０に送る。
【０１２９】
第２フィルタモジュール（＃Ａ）２１０は、入力された画素値とフィルタ係数との積和演算を行い、画素値Ｚ０を求め、フリップフロップ２１９に送る。
【０１３０】
次のクロック８において、第２フィルタモジュール（＃Ａ）２１０は、画素値「Ｚ０」を１／２画素Ｈａの画素値として出力する。
【０１３１】
同様に、クロック８において、第２フィルタモジュール（＃Ｂ）２２０は、画素値「Ｚ０」を１／２画素Ｈｂの画素値として出力し、第２フィルタモジュール（＃Ｃ）２３０は、画素値「Ｚ０」を１／２画素Ｈｃの画素値として出力し、第２フィルタモジュール（＃Ｄ）２４０は、画素値「Ｚ０」を１／２画素Ｈｄの画素値として出力する。
【０１３２】
このように、クロック８において、水平フィルタ出力「Ｚ０」が求まり、第２フィルタモジュール（＃Ａ）２１０〜（＃Ｄ）２４０から、１／２画素Ｈａ、Ｈｂ、Ｈｃ、Ｈｄの画素値がそれぞれ並列に出力される。
【０１３３】
また、クロック８において、セレクタ２５０は、バッファ５００に格納されている１／２画素行「Ｈ３０〜Ｈ３８」の各画素の画素値を選択して、第２フィルタモジュール（＃Ａ）２１０〜（＃Ｄ）２４０に送る。
【０１３４】
クロック９において、第２フィルタモジュール（＃Ａ）２１０〜（＃Ｄ）２４０おいて、水平フィルタ出力「Ｚ１」が求まり、１／２画素Ｈｅ、Ｈｆ、Ｈｇ、Ｈｈの画素値がそれぞれ並列に出力される。
【０１３５】
また、クロック９において、セレクタ２５０は、バッファ５００に格納されている１／２画素行「Ｈ４０〜Ｈ４８」の各画素の画素値を選択して、第２フィルタモジュール（＃Ａ）２１０〜（＃Ｄ）２４０に送る。
【０１３６】
クロック１０において、第２フィルタモジュール（＃Ａ）２１０〜（＃Ｄ）２４０において、水平フィルタ出力「Ｚ２」が求まり、１／２画素Ｈｉ、Ｈｊ、Ｈｋ、Ｈｍの画素値がそれぞれ並列に出力される。
【０１３７】
また、クロック１０において、セレクタ２５０は、バッファ５００に格納されている１／２画素行「Ｈ５０〜Ｈ５８」の各画素の画素値を選択して、第２フィルタモジュール（＃Ａ）２１０〜（＃Ｄ）２４０に送る。
【０１３８】
クロック１１において、第２フィルタモジュール（＃Ａ）２１０〜（＃Ｄ）２４０において、水平フィルタ出力「Ｚ３」が求まり、１／２画素Ｈｎ、Ｈｐ、Ｈｑ、Ｈｒの画素値がそれぞれ並列に出力される。
【０１３９】
以上説明したように、本形態の２次元フィルタ演算装置では、垂直フィルタ処理部１００と水平フィルタ処理部２００とが、異なる並列処理方式を採用して、図８に示すタイミング図に従った２次元フィルタ演算を実行する。その結果、本形態の２次元フィルタ演算装置は、クロックの１３周期で、整数画素Ｆ００〜Ｆ８８を用いて、１／２画素Ｈａ〜Ｈｒを求めることができる。この処理サイクルは、従来の２次元フィルタ演算装置のそれに比べ、約１０％以上改善されている。図８に示す記号「＊」のところでは、次の画像領域Ｂに属する１／２画素Ｈａ〜Ｈｒの画素値生成のためのフィルタ演算を実行できる。したがって、本形態の２次元フィルタ演算装置は、実効的な処理サイクルをさらに改善できる。
【０１４０】
本形態の２次元フィルタ演算装置では、垂直フィルタ処理部１００は、並列処理方式として、ループ内パイプライン処理（すなわち、順次演算処理）を実行し（図６）、水平フィルタ処理部２００は、並列処理方式として、ループ内並列処理（すなわち、並列演算処理）を実行している（図９）。
【０１４１】
なお、本形態の２次元フィルタ演算装置は、左右対称の６タップフィルタを用いたが、タップフィルタは、本例に限定されるものではない。
【０１４２】
例えば、水平フィルタ処理部２００が、非対称の４タップフィルタを用いる場合は、水平フィルタ処理部２００は、図９のブロック図において、類似の構成のまま、乗算器と加算器とフリップフロップをそれぞれ一つ追加すればよい。さらに、水平フィルタ処理部２００は、非対称なタップフィルタ、または、６タップ以上のタップフィルタに対応するために、ループ内並列処理の並列度を増やすこともできる。また、垂直フィルタ処理部１００も同様に、採用するフィルタの構造に従って、ＰＥ１０〜ＰＥ４０の構造を変えることができる。
【０１４３】
なお、本形態の２次元フィルタ演算装置において、処理対象の画像データが準拠する規格が決まっている場合、垂直フィルタ処理部１００と水平フィルタ処理部２００とが備える乗算器を、シフタと加算器に置き換えてもよい。
【０１４４】
また、垂直方向フィルタ演算の後にクリップ処理が必要な場合は、垂直フィルタ処理部１００の第１フィルタモジュール（＃０）１１０〜（＃８）１９０において、ＰＥ１０〜ＰＥ４０の各出力端子にクリップ演算回路を挿入すればよい。
【０１４５】
さらに、本形態の２次元フィルタ演算装置では、垂直フィルタ処理部１００が、第１フィルタモジュール（＃０）１１０〜第１フィルタモジュール（＃８）１９０を用いて９重の並列処理を行ない、水平フィルタ処理部２００が、第２フィルタモジュール（＃Ａ）２１０〜第２フィルタモジュール（＃Ｄ）２４０を用いて４重の並列処理を行っている。しかし、垂直フィルタ処理部１００と水平フィルタ処理部２００が実行する並列処理の並列度は、使用目的に応じて、適宜変更して良い。たとえば、垂直フィルタ処理部１００は、複数の第１フィルタモジュールを用い、水平フィルタ処理部２００は、１つの第２フィルタモジュールを用いる構造でも良い。この場合でも、フィルタ処理方向の違いを吸収するためのバッファが不要で、使用目的にあった２次元フィルタ演算装置を実現できる。
【０１４６】
以上述べたように、本形態の２次元フィルタ演算装置は、垂直方向フィルタ処理と水平方向フィルタ処理とを、互いに異なる並列処理方式（順次演算処理と並列演算処理）によって実行している。したがって、本形態の２次元フィルタ演算装置は、従来技術で必要とされたフィルタ処理方向の違いを吸収するためのバッファを用いることなく、垂直・水平方向のフィルタ処理を連続的に実行できる（本形態のバッファ５００は、単にタイミング調整のために挿入されたものである）。その結果、本形態の２次元フィルタ演算装置は、２次元フィルタ演算を高速に実行することができ、さらに、その回路面積を縮小できる。
【０１４７】
（実施の形態２）
図１０は、本発明の実施の形態２における２次元フィルタ演算装置のブロック図である。本形態の２次元フィルタ演算装置は、画像メモリ３００、ラインメモリ４００、垂直フィルタ処理部６４０、水平フィルタ処理部６５０、第１セレクタ６１０、第２セレクタ６２０、及び、第３セレクタ６３０を備える。
【０１４８】
本形態の２次元フィルタ演算装置は、２つの動作モードを有する。すなわち、第１動作モードの場合は、垂直方向フィルタ演算を先に実行し、水平方向フィルタ演算を次に実行する。第２動作モードの場合は、水平方向フィルタ演算を先に実行し、垂直方向フィルタ演算を次に実行する。すなわち、本形態の２次元フィルタ演算装置は、動作モードの切替えにより、垂直方向フィルタ演算と水平方向フィルタ演算の順序を任意に変更できる。これは、ＭＰＥＧ−４  ＡＳＰ（Ａｄｖａｎｃｅｄ  Ｓｉｍｐｌｅ  Ｐｒｏｆｉｌｅ）などのように、必ず水平方向から先にフィルタをかけるという制約をもつ規格にも柔軟に対応するためである。
【０１４９】
先ず、第１動作モードについて説明する。第１動作モードでは、本形態の２次元フィルタ演算装置は、先に垂直方向フィルタ演算を実行する。第１セレクタ６１０は、ラインメモリ４００の出力を選択し、第２セレクタ６２０は、垂直フィルタ処理部６４０の出力を選択し、第３セレクタ６３０は、水平フィルタ処理部６５０の出力を選択する。
【０１５０】
垂直フィルタ処理部６４０と水平フィルタ処理部６５０は、それぞれ、本発明の実施の形態１で説明した、図６に示す垂直フィルタ処理部１００と図９に示す水平フィルタ処理部２００とを用いることができる。なお、バッファ５００は、セレクタ２５０の一部として、水平フィルタ処理部６５０に含まれている。
【０１５１】
この構成により、本形態の２次元フィルタ演算装置は、先ず垂直方向フィルタ演算を行い、図１に示した、１／２画素Ｈ２０〜Ｈ５８の画素値を求め、次に、水平方向フィルタ演算を行い、図３に示した１／２画素Ｈａ〜Ｈｒの画素値を求めることができる。本形態の２次元フィルタ演算装置の第１モードでの処理過程は、本発明の実施の形態１の２次元フィルタ演算装置における処理過程と同様であり、クロックの１３周期で、整数画素Ｆ００〜Ｆ８８を用いて、１／２画素Ｈａ〜Ｈｒを求めることができる。
【０１５２】
次に、第２動作モードについて説明する。第２動作モードでは、本形態の２次元フィルタ演算装置は、先に水平方向フィルタ演算を実行する。第１セレクタ６１０は、水平フィルタ処理部６５０の出力を選択し、第２セレクタ６２０は、ラインメモリ４００の出力を選択し、第３セレクタ６３０は、垂直フィルタ処理部６４０の出力を選択する。
【０１５３】
図１１は、本発明の実施の形態２における整数画素と１／２画素の配置図である。図１１は、第２動作モードにおける画素値生成の手順を示す説明図である。図１に示す本発明の実施の形態１と同様に、本形態の２次元フィルタ演算装置は、実線の矩形で示される画像領域Ａから、動きベクトル（１／２、１／２）に従って平行移動した、点線の矩形で示される画像領域Ｂを構成する１／２画素Ｈａ〜Ｈｒ（符号は、図３を参照のこと）の画素値を生成する。
【０１５４】
第２動作モードの場合、図１１に示すように、水平方向フィルタ演算により、整数画素Ｆ００〜Ｆ８８の画素値を用いて、１／２画素Ｈ０２〜Ｈ８５の画素値を生成し、次に、垂直方向フィルタ演算により、１／２画素Ｈ０２〜Ｈ８５の画素値を用いて、１／２画素Ｈａ〜Ｈｒの画素値を生成する。
【０１５５】
図１０の垂直フィルタ処理部６４０と水平フィルタ処理部６５０は、それぞれ、本発明の実施の形態１で説明した、図６に示す垂直フィルタ処理部１００と図９に示す水平フィルタ処理部２００とを用いることができる。なお、バッファ５００は、なくても良く、セレクタ２５０が、ラインメモリ４００から画素値を並列に入力できれば良い。また、図６のラインメモリ４００は、なくてもよく、第１フィルタモジュール（＃０）１１０〜（＃８）１９０が、第１セレクタ６１０を介して、水平フィルタ処理部２００が生成した画素値Ｚ０〜Ｚ３を、並列に入力できれば良い。
【０１５６】
第２動作モードにおいて、水平フィルタ処理部２００は、ラインメモリ４００から、整数画素行「Ｆ００〜Ｆ０８」の画素の画素値を読み出し、１／２画素Ｈ０２〜Ｈ０５の画素の画素値を生成する。続いて、水平フィルタ処理部２００は、ラインメモリ４００から、整数画素行「Ｆ１０〜Ｆ１８」の画素の画素値を読み出し、１／２画素Ｈ１２〜Ｈ１５の画素の画素値を生成する。以下同様に、水平フィルタ処理部２００は、１／２画素の内、図１１の小さい白丸の１／２画素の画素値を、１／２画素Ｈ８２〜Ｈ８５まで、各行ごとに４個の１／２画素の画素値を並列に生成する。
【０１５７】
水平フィルタ処理部２００が並列に生成した、１／２画素行「Ｈ０２〜Ｈ０５」「Ｈ１２〜Ｈ１５」・・・「Ｈ８２〜Ｈ８５」の各行の４個の画素の画素値は、垂直フィルタ処理部１００の第１フィルタモジュール（＃０）１１０〜（＃３）１３０（図示せず）のそれぞれのＰＥ１０〜ＰＥ４０に、並列に入力される。
【０１５８】
垂直フィルタ処理部１００の第１フィルタモジュール（＃０）１１０は、図１１に示す、１／２画素列「Ｈ０２〜Ｈ８２」の画素の画素値を用いて、１／２画素Ｈａ、Ｈｅ、Ｈｉ、Ｈｎの画素値を生成する。第１フィルタモジュール（＃１）１２０は、１／２画素列「Ｈ０３〜Ｈ８３」の画素の画素値を用いて、１／２画素Ｈｂ、Ｈｆ、Ｈｊ、Ｈｐの画素値を生成する。第１フィルタモジュール（＃２）１３０（図示せず）は、１／２画素列「Ｈ０４〜Ｈ８４」の画素の画素値を用いて、１／２画素Ｈｃ、Ｈｇ、Ｈｋ、Ｈｑの画素値を生成する。第１フィルタモジュール（＃３）１４０（図示せず）は、１／２画素列「Ｈ０５〜Ｈ８５」の画素の画素値を用いて、１／２画素Ｈｄ、Ｈｈ、Ｈｍ、Ｈｒの画素値を生成する。なお、第１フィルタモジュール（＃４）（図示せず）〜第１フィルタモジュール（＃８）１９０は、使用しない。
【０１５９】
以上の処理により、画像領域Ｂを規定する１／２画素Ｈａ〜Ｈｒすべての画素値が求まる。
【０１６０】
本形態の２次元フィルタ演算装置の第２動作モードにおける、処理の流れをタイミング図に従って、さらに詳しく説明する。
【０１６１】
図１２は、本発明の実施の形態２における２次元フィルタ演算装置（第２動作モード）のタイミング図である。図６、図９、図１０、及び、図１１を参照して、図１２のタイミング図を説明する。
【０１６２】
第２動作モードでは、ラインメモリ４００から水平フィルタ処理部２００のセレクタ２５０に画像データが入力され、水平フィルタ処理部２００の出力が垂直フィルタ処理部１００に入力される。
【０１６３】
クロック０において、ラインメモリ４００から水平フィルタ処理部２００に画素値「Ｙ０」（整数画素Ｆ００〜Ｆ０８の画素値）が入力される。すなわち、セレクタ２５０を介して、第２フィルタモジュール（＃Ａ）２１０に整数画素Ｆ００〜Ｆ０５の画素値が入力され、第２フィルタモジュール（＃Ｂ）２２０に整数画素Ｆ０１〜Ｆ０６の画素値が入力され、第２フィルタモジュール（＃Ｃ）２３０に整数画素Ｆ０２〜Ｆ０７の画素値が入力され、第２フィルタモジュール（＃Ｄ）２４０に整数画素Ｆ０３〜Ｆ０８の画素値が入力される。各モジュール（＃Ａ〜＃Ｄ）では、入力された画素値と、フリップフロップ２６０、フリップフロップ２７０、フリップフロップ２８０が出力する各フィルタ係数との積和演算（数式３）が実行される。
【０１６４】
クロック１において、水平フィルタ処理部２００は、水平方向フィルタ処理を行った画素値「Ｚ０」を出力する。すなわち、第２フィルタモジュール（＃Ａ）２１０は、整数画素Ｆ００〜Ｆ０５の画素値から生成された１／２画素Ｈ０２の画素値を出力し、第２フィルタモジュール（＃Ｂ）２２０は、整数画素Ｆ０１〜Ｆ０６の画素値から生成された１／２画素Ｈ０３の画素値を出力し、第２フィルタモジュール（＃Ｃ）２３０は、整数画素Ｆ０２〜Ｆ０７の画素値から生成された１／２画素Ｈ０４の画素値を出力し、第２フィルタモジュール（＃Ｄ）２４０は、整数画素Ｆ０３〜Ｆ０８の画素値から生成された１／２画素Ｈ０５の画素値を出力する。
【０１６５】
同時にクロック１において、ラインメモリ４００から水平フィルタ処理部２００に画素値「Ｙ１」（整数画素Ｆ１０〜Ｆ１８の画素値）が入力される。すなわち、セレクタ２５０を介して、第２フィルタモジュール（＃Ａ）２１０に整数画素Ｆ１０〜Ｆ１５の画素値が入力され、第２フィルタモジュール（＃Ｂ）２２０に整数画素Ｆ１１〜Ｆ１６の画素値が入力され、第２フィルタモジュール（＃Ｃ）２３０に整数画素Ｆ１２〜Ｆ１７の画素値が入力され、第２フィルタモジュール（＃Ｄ）２４０に整数画素Ｆ１３〜Ｆ１８の画素値が入力される。各モジュール（＃Ａ〜＃Ｄ）では、入力された画素値と、フリップフロップ２６０、フリップフロップ２７０、フリップフロップ２８０が出力する各フィルタ係数との積和演算（数式３）が実行される。
【０１６６】
クロック２において、水平フィルタ処理部２００は、水平方向フィルタ処理を行った画素値「Ｚ１」を出力する。すなわち、第２フィルタモジュール（＃Ａ）２１０は、１／２画素Ｈ１２の画素値を出力し、第２フィルタモジュール（＃Ｂ）２２０は、１／２画素Ｈ１３の画素値を出力し、第２フィルタモジュール（＃Ｃ）２３０は、１／２画素Ｈ１４の画素値を出力し、第２フィルタモジュール（＃Ｄ）２４０は、１／２画素Ｈ１５の画素値を出力する。
【０１６７】
同時にクロック２において、ラインメモリ４００から水平フィルタ処理部２００に画素値「Ｙ３」（整数画素Ｆ２０〜Ｆ２８の画素値）が入力される。以下同様な処理が、クロック９まで、順次実行される。
【０１６８】
一方、垂直フィルタ処理部１００においては、クロック２において、垂直フィルタ処理部１００のＰＥ１０の画素データ入力端子ｉｎ０に、クロック１において、水平フィルタ処理部２００から出力された画素値「Ｚ０」が、画素値「Ｘ０」として入力され、係数入力端子９１からＰＥ１０の係数入力端子ｉｎＡに入力されたフィルタ係数「ａ」との積和演算が実行される。すなわち、第１フィルタモジュール（＃０）１１０のＰＥ１０の画素データ入力端子ｉｎ０に、１／２画素Ｈ０２の画素値が入力され、第１フィルタモジュール（＃１）１２０のＰＥ１０の画素データ入力端子ｉｎ０に、１／２画素Ｈ０３の画素値が入力され、第１フィルタモジュール（＃２）（図示せず）のＰＥ１０の画素データ入力端子ｉｎ０に、１／２画素Ｈ０４の画素値が入力され、第１フィルタモジュール（＃３）（図示せず）のＰＥ１０の画素データ入力端子ｉｎ０に、１／２画素Ｈ０５の画素値が入力される。なお、第１フィルタモジュール（＃４）（図示せず）〜第１フィルタモジュール（＃８）１９０は、使用しない。
【０１６９】
クロック３において、水平フィルタ処理部２００から出力された画素値「Ｚ１」が、画素値「Ｘ１」としてＰＥ１０に入力され、係数入力端子９１から入力されたフィルタ係数「ｂ」との積和演算が実行される。同時に、水平フィルタ処理部２００から出力された画素値「Ｚ１」が、画素値「Ｘ１」としてＰＥ２０に入力され、ＰＥ１０から入力されたフィルタ係数「ａ」との積和演算が実行される。すなわち、第１フィルタモジュール（＃０）１１０のＰＥ１０の画素データ入力端子ｉｎ０とＰＥ２０の画素データ入力端子ｉｎ１に、１／２画素Ｈ１２の画素値が入力され、第１フィルタモジュール（＃１）１２０のＰＥ１０の画素データ入力端子ｉｎ０とＰＥ２０の画素データ入力端子ｉｎ１に、１／２画素Ｈ１３の画素値が入力され、第１フィルタモジュール（＃２）（図示せず）のＰＥ１０の画素データ入力端子ｉｎ０とＰＥ２０の画素データ入力端子ｉｎ１に、１／２画素Ｈ１４の画素値が入力され、第１フィルタモジュール（＃３）（図示せず）のＰＥ１０の画素データ入力端子ｉｎ０とＰＥ２０の画素データ入力端子ｉｎ１に、１／２画素Ｈ１５の画素値が入力され、それぞれのＰＥにおいて積和演算が実行される。
【０１７０】
以下、第１フィルタモジュール（＃０）１１０〜第１フィルタモジュール（＃３）（図示せず）のＰＥ１０〜ＰＥ４０において、同様な積和演算を実行し、クロック８において、垂直フィルタ処理部１００は、画素値「Ｙ０」を出力する。すなわち、第１フィルタモジュール（＃０）１１０は、１／２画素Ｈａの画素値を出力し、第１フィルタモジュール（＃１）１２０は、１／２画素Ｈｂの画素値を出力し、第１フィルタモジュール（＃２）（図示せず）は、１／２画素Ｈｃの画素値を出力し、第１フィルタモジュール（＃３）（図示せず）は、１／２画素Ｈｄの画素値を出力する。
【０１７１】
クロック９において、垂直フィルタ処理部１００は、画素値「Ｙ１」（１／２画素Ｈｅ〜Ｈｈの画素値）を出力する。
【０１７２】
クロック１０において、垂直フィルタ処理部１００は、画素値「Ｙ２」（１／２画素Ｈｉ〜Ｈｍの画素値）を出力する。
【０１７３】
クロック１１において、垂直フィルタ処理部１００は、画素値「Ｙ３」（１／２画素Ｈｎ〜Ｈｒの画素値）を出力する。
【０１７４】
以上説明したように、本形態の２次元フィルタ演算装置は、先ず水平方向フィルタ処理、次に垂直方向フィルタ処理の順に、図１２に示すタイミング図に従った２次元フィルタ演算を実行する。その結果、本形態の２次元フィルタ演算装置は、第２動作モードにおいても、クロックの１３周期で、整数画素Ｆ００〜Ｆ８８を用いて、１／２画素Ｈａ〜Ｈｒを求めることができる。この処理サイクルは、第１動作モードにおける処理サイクルと等しい。したがって、本形態の２次元フィルタ演算装置は、第１動作モードにおいても、第２動作モードにおいても、従来の２次元フィルタ演算装置に比べ、約１０％以上改善された処理速度で、２次元フィルタ処理を実行できる。
【０１７５】
本形態の２次元フィルタ演算装置は、第１動作モードでは、垂直方向フィルタ演算を先に実行し、水平方向フィルタ演算を次に実行して２次元フィルタ演算を完遂し、第２動作モードでは、水平方向フィルタ演算を先に実行し、垂直方向フィルタ演算を次に実行して２次元フィルタ演算を完遂する。したがって、本形態の２次元フィルタ演算装置によれば、処理する画像データが準拠する規格に従って動作モードを選択することにより、水平方向フィルタ演算と垂直方向フィルタ演算の順序を容易に変更できる。
【０１７６】
（実施の形態３）
図１３は、本発明の実施の形態３における半導体集積回路のブロック図である。
【０１７７】
本形態の半導体集積回路７００は、２次元フィルタ演算部７１０、ＣＰＵ７２０、符号化／復号部７３０、メモリ７４０、及び、機能回路部７５０を備え、２次元フィルタ演算部７１０は、垂直フィルタ処理部７１１と水平フィルタ処理部７１２を有する。
【０１７８】
本形態の２次元フィルタ演算部７１０は、本発明の実施の形態１で説明した、図４に示す２次元フィルタ演算装置に相当する。すなわち、本形態の垂直フィルタ処理部７１１は、図４の垂直フィルタ処理部１００とラインメモリ４００を含んでいる。本形態の水平フィルタ処理部７１２は、図４の水平フィルタ処理部２００とバッファ５００を含んでいる。
【０１７９】
２次元フィルタ演算部７１０は、被フィルタ画像データに対して、２次元のフィルタ処理を行い、新しい画素の画素値を生成する。
【０１８０】
符号化／復号部７３０は、動画像を可変長符号化し、符号化画像データを出力する。また、符号化／復号部７３０は、符号化画像データを可変長復号し、復号画像を出力する。
【０１８１】
符号化／復号部７３０は、動画像の符号化における、動き補償予測による予測画像の生成や、符号化画像データの復号における、動きベクトルに基づく動き補償画像の生成において、２次元フィルタ演算部７１０を用いて２次元フィルタ処理を行い、予測画像や動き補償画像の画素を補間する。
【０１８２】
メモリ７４０は、画像メモリ３００に相当し、画像データを格納する。
【０１８３】
機能回路部７５０は、２次元フィルタ演算部７１０と符号化／復号部７３０の機能以外の機能を有するその他の回路部である。
【０１８４】
本形態の２次元フィルタ演算部７１０における２次元フィルタ処理は、本発明の実施の形態１の２次元フィルタ演算装置による処理と同じであり、メモリ７４０に格納されている被フィルタ画像データに対して、垂直方向フィルタ処理を行い、次に、水平方向フィルタ処理（あるいは、その逆の順序のフィルタ処理）を行い、動き補償予測した画像データを生成する。２次元フィルタ演算部７１０の動作の詳細は、本発明の実施の形態１の２次元フィルタ演算装置と同じであるから、その説明を省略する。
【０１８５】
ＣＰＵ７２０は、符号化／復号部７３０が行う符号化／復号処理と機能回路部７５０が行う処理以外の処理を行う。同時に、ＣＰＵ７２０は、半導体集積回路７００全体の制御を行う。
【０１８６】
本形態の半導体集積回路７００は、２次元フィルタ演算部７１０が、２次元フィルタ演算処理のフィルタ処理方向の違いを吸収するためのバッファを必要としないため、従来よりも小さい回路面積で実現でき、消費電力も低く抑えることができる。
【０１８７】
なお、本形態の半導体集積回路７００では、符号化／復号部７３０が符号化／復号処理を行うとしたが、ＣＰＵ７２０が、符号化／復号処理をソフトウェアによって処理しても良い。その場合には、符号化／復号部７３０を半導体集積回路７００から割愛できる。
【０１８８】
なお、本形態の半導体集積回路７００は、メモリ７４０を内部に備えているが、半導体集積回路７００は、外部に別個に設けられたメモリを利用しても良い。その場合には、メモリ７４０を半導体集積回路７００から割愛できる。
【０１８９】
本形態の半導体集積回路７００は、例えば、携帯電話、ＤＶＤレコーダ、ＨＤＤレコーダ、テレビ受像機など、動画像データを扱う電子機器に好適に応用できる。
【０１９０】
（実施の形態４）
図１４は、本発明の実施の形態４における半導体集積回路のブロック図である。図１４において、図１３と同様な構成要素については、同一の符号を付すことにより、説明を省略する。
【０１９１】
図１４に示す本形態の半導体集積回路８００は、本発明の実施の形態３の図１３に示す半導体集積回路７００と、大略同じ構成であるが、２次元フィルタ演算部８１０が異なる。すなわち、本形態の２次元フィルタ演算部８１０は、再構成フィルタ処理部８１１と構成情報レジスタ８１２を有する。
【０１９２】
再構成フィルタ処理部８１１は、再構成ロジックで構成されていて、構成情報レジスタ８１２に格納されている構成情報に従って、本発明の実施の形態２の図１０に示す２次元フィルタ演算装置に相当する２次元フィルタ回路を動的に再構成できる。
【０１９３】
構成情報レジスタ８１２に格納されている構成情報は、少なくとも２つの構成情報、すなわち、第１構成情報と第２構成情報を有する。
【０１９４】
２次元フィルタ演算部８１０は、２つの動作モード、すなわち、第１動作モードと第２動作モードを有する。
【０１９５】
第１動作モードが選択された場合は、再構成フィルタ処理部８１１は、構成情報レジスタ８１２に格納されている第１構成情報に従って再構成され、メモリ７４０に格納されている被フィルタ画像データに対して、垂直方向フィルタ演算を先に実行し、水平方向フィルタ演算を次に実行するようになる。この結果、再構成フィルタ処理部８１１は、第１動作モードにおいては、本発明の実施の形態２における２次元フィルタ演算装置の第１動作モードにおける機能と同じ機能を発揮できる。
【０１９６】
第２動作モードが選択された場合は、再構成フィルタ処理部８１１は、構成情報レジスタ８１２に格納されている第２構成情報に従って再構成され、メモリ７４０に格納されている被フィルタ画像データに対して、水平方向フィルタ演算を先に実行し、垂直方向フィルタ演算を次に実行するようになる。この結果、再構成フィルタ処理部８１１は、第２動作モードにおいては、本発明の実施の形態２における２次元フィルタ演算装置の第２動作モードにおける機能と同じ機能を発揮できる。
【０１９７】
符号化／復号部７３０は、動画像の符号化における、動き補償予測による予測画像の生成や、符号化画像データの復号における、動きベクトルに基づく動き補償画像の生成において、２次元フィルタ演算部８１０を用いて２次元フィルタ処理を行い、予測画像や動き補償画像の画素を補間する。
【０１９８】
ＣＰＵ７２０は、符号化／復号部７３０が行う符号化／復号処理と機能回路部７５０が行う処理以外の処理を行う。同時に、ＣＰＵ７２０は、半導体集積回路８００全体の制御を行う。
【０１９９】
本形態の半導体集積回路８００は、２次元フィルタ演算部８１０が、２次元フィルタ演算処理のフィルタ処理方向の違いを吸収するためのバッファを必要としないため、従来よりも小さい回路面積で実現できる。また、本形態の半導体集積回路８００は、処理する画像データが準拠する規格に従って動作モードを選択することにより、水平方向フィルタ処理と垂直方向フィルタ処理の順序を動的に簡単に変更できる。
【０２００】
なお、構成情報レジスタ８１２に格納されている構成情報は、第１構成情報と第２構成情報以外の構成情報を有していても良い。その場合には、６タップ以外のタップ数を有するタップフィルタによる２次元フィルタ演算、あるいは、非対称フィルタ係数を有するフィルタによる２次元フィルタ演算などが実現できる。
【０２０１】
なお、本形態の半導体集積回路８００では、符号化／復号部７３０が符号化／復号処理を行うとしたが、ＣＰＵ７２０が、符号化／復号処理をソフトウェアによって処理しても良い。その場合には、符号化／復号部７３０を半導体集積回路８００から割愛できる。
【０２０２】
なお、本形態の半導体集積回路８００は、メモリ７４０を内部に備えていているが、半導体集積回路８００は、外部に別個に設けられたメモリを利用しても良い。その場合には、メモリ７４０を半導体集積回路８００から割愛できる。
【０２０３】
本形態の半導体集積回路８００は、例えば、携帯電話、ＤＶＤレコーダ、ＨＤＤレコーダ、テレビ受像機など、動画像データを扱う電子機器に好適に応用できる。
【０２０４】
（実施の形態５）
図１５は、本発明の実施の形態５における携帯電話システム９００のブロック図である。
【０２０５】
本形態の携帯電話システム９００は、主要な構成要素として、アンテナ９０１、ＲＦ回路９０２、ベースバンドＬＳＩ９０５、カメラ９０９、アプリケーションＬＳＩ９１０、メモリ９１１、ＬＣＤコントローラ９１３、メインＬＣＤ９１４、及び、サブＬＣＤ９１５を備える。
【０２０６】
本形態の携帯電話システム９００の動作を以下に概説する。
【０２０７】
ＲＦ回路９０２は、外部の相手先携帯電話と通信を行い、画像データをビットストリームとして、送信したり、受信したりする。また、ＲＦ回路９０２は、インターネットから画像データを受信する。
【０２０８】
ベースバンドＬＳＩ９０５は、主として通信処理を行う。
【０２０９】
アプリケーションＬＳＩ９１０は、画像データの処理を行う。アプリケーションＬＳＩ９１０には、本発明の実施の形態３の半導体集積回路７００、または、実施の形態４の半導体集積回路８００を、好適に用いることができる。また、アプリケーションＬＳＩ９１０は、被フィルタ画像データを格納するメモリ９１１を外部に備えているので、アプリケーションＬＳＩ９１０に用いる半導体集積回路７００、または、半導体集積回路８００は、被フィルタ画像データを格納するメモリをそれらの内部に備えていないものでよい。
【０２１０】
メインＬＣＤ９１４は、ＬＣＤコントローラ９１３の制御の下、アプリケーションＬＳＩ９１０が処理した画像データと文字データなどを表示する。サブＬＣＤ９１５は、ＬＣＤコントローラ９１３の制御の下、主として文字データを表示する。
【０２１１】
本形態の携帯電話システム９００では、アンテナ９０１経由でＲＦ回路９０２が外部の相手先携帯電話から受信した画像データ、あるいは、インターネットから受信した画像データは、ベースバンドＬＳＩ９０５で一旦処理された後、アプリケーションＬＳＩ９１０で復号され、復号された復号画像が、メインＬＣＤ９１４に表示される。また、カメラ９０９で撮影された画像は、アプリケーションＬＳＩ９１０で処理され、メインＬＣＤ９１４に表示されるとともに、アプリケーションＬＳＩ９１０で符号化され、符号化画像データが生成される。この符号化画像データは、ベースバンドＬＳＩ９０５で通信処理された後、ＲＦ回路９０２から、アンテナ９０１経由で相手先携帯電話に送信される。
【０２１２】
本形態のアプリケーションＬＳＩ９１０は、本発明の実施の形態３の半導体集積回路７００、または、実施の形態４の半導体集積回路８００を用いているので、受信画像データの復号処理における動き補償の２次元フィルタ処理、あるいは、カメラで撮影した画像の符号化処理における動き予測の２次元フィルタ処理を、効率よく実行できる。また、受信画像データの規格に従って、２次元フィルタ処理のフィルタ処理方向の順序を簡単に切替えることができる。さらに、本形態のアプリケーションＬＳＩ９１０は、従来よりも小さい回路面積で実現できる。この結果、本形態の携帯電話システム９００は、小型で、柔軟な機能を有する装置として、好適に実現できる。
【０２１３】
以上、本発明の実施の形態３の半導体集積回路７００、または、実施の形態４の半導体集積回路８００を用いる電子機器の応用例として、携帯電話システム９００を取り上げたが、半導体集積回路７００または半導体集積回路８００を用いる電子機器には、携帯電話システム９００の他に、例えば、携帯情報端末（ＰＤＡ）、ＤＶＤレコーダ、ＨＤＤレコ−ダ、テレビ受像機、カーナビゲーションシステム、動画像処理機能つきパソコンなどがある。これらの電子機器においても、本発明の２次元フィルタ演算部を搭載した半導体集積回路７００または半導体集積回路８００を利用することにより、画像データ処理を効率的に実行できる。
【産業上の利用可能性】
【０２１４】
本発明に係わる２次元フィルタ演算装置は、例えば、動画像処理装置等、画像圧縮伸張処理、ループ内フィルタ処理、走査線変換処理、あるいは、画像平滑化処理を必要とする分野とその応用分野において利用できる。
【図面の簡単な説明】
【０２１５】
【図１】本発明の実施の形態１における整数画素と１／２画素の配置図である。
【図２】本発明の実施の形態１における１／２画素の配置図である。
【図３】本発明の実施の形態１における１／２画素の別の配置図である。
【図４】本発明の実施の形態１における２次元フィルタ演算装置のブロック図である。
【図５】本発明の実施の形態１における２次元フィルタ演算方法のフローチャートである。
【図６】本発明の実施の形態１における垂直フィルタ処理部のブロック図である。
【図７】本発明の実施の形態１におけるプロセッサエレメントのブロック図である。
【図８】本発明の実施の形態１における２次元フィルタ演算装置のタイミング図である。
【図９】本発明の実施の形態１における水平フィルタ処理部のブロック図である。
【図１０】本発明の実施の形態２における２次元フィルタ演算装置のブロック図である。
【図１１】本発明の実施の形態２における整数画素と１／２画素の配置図である。
【図１２】本発明の実施の形態２における２次元フィルタ演算装置（第２動作モード）のタイミング図である。
【図１３】本発明の実施の形態３における半導体集積回路のブロック図である。
【図１４】本発明の実施の形態４における半導体集積回路のブロック図である。
【図１５】本発明の実施の形態５における電子機器のブロック図である。
【図１６】従来の２次元フィルタのブロック図である。
【符号の説明】
【０２１６】
１、３００  画像メモリ
２ａ、２ｅ、４００  ラインメモリ
３、１００、７１１  垂直フィルタ処理部
４、２００、７１２  水平フィルタ処理部
５、６  レジスタ
１０、２０、３０、４０  プロセッサエレメント
１１、２１４、２１５、２１６  乗算器
１２、２１１、２１２、２１３、２１７、２１８  加算器
１３、１４、２１９、２６０、２７０、２８０  フリップフロップ
１５、９１  係数入力端子 
１６  係数出力端子  
１７  画素データ入力端子
１８  画素データ出力端子
５０、２５０  セレクタ
１１０  第１フィルタモジュール（＃０）
１２０  第１フィルタモジュール（＃１）
１９０  第１フィルタモジュール（＃８）
２１０  第２フィルタモジュール（＃Ａ）
２２０  第２フィルタモジュール（＃Ｂ）
２３０  第２フィルタモジュール（＃Ｃ）
２４０  第２フィルタモジュール（＃Ｄ）
５００  バッファ
６１０  第１セレクタ
６２０  第２セレクタ
６３０  第３セレクタ
６４０  垂直フィルタ処理部
６５０  水平フィルタ処理部
７００、８００  半導体集積回路
７１０、８１０  ２次元フィルタ演算部
７２０  ＣＰＵ
７３０  符号化／復号部
７４０、９０８、９１１  メモリ
７５０  機能回路部
８１１  再構成フィルタ処理部
８１２  構成情報レジスタ
９００  携帯電話システム
９０１  アンテナ
９０２  ＲＦ回路
９０３  スピーカ
９０４  マイク
９０５  ベースバンドＬＳＩ
９０６  キー
９０７  ＵＳＢ
９０９  カメラ
９１０  アプリケーションＬＳＩ
９１２  ＳＤカード
９１３  ＬＣＤコントローラ
９１４  メインＬＣＤ
９１５  サブＬＣＤ
【図１】
0004824703.tif 000005
【図２】
0004824703.tif 000006
【図３】
0004824703.tif 000007
【図４】
0004824703.tif 000008
【図５】
0004824703.tif 000009
【図６】
0004824703.tif 000010
【図７】
0004824703.tif 000011
【図８】
0004824703.tif 000012
【図９】
0004824703.tif 000013
【図１０】
0004824703.tif 000014
【図１１】
0004824703.tif 000015
【図１２】
0004824703.tif 000016
【図１３】
0004824703.tif 000017
【図１４】
0004824703.tif 000018
【図１５】
0004824703.tif 000019
【図１６】
0004824703.tif 000020