JP4824703B2 - 2次元フィルタ演算装置及び方法 - Google Patents

2次元フィルタ演算装置及び方法 Download PDF

Info

Publication number
JP4824703B2
JP4824703B2 JP2007551015A JP2007551015A JP4824703B2 JP 4824703 B2 JP4824703 B2 JP 4824703B2 JP 2007551015 A JP2007551015 A JP 2007551015A JP 2007551015 A JP2007551015 A JP 2007551015A JP 4824703 B2 JP4824703 B2 JP 4824703B2
Authority
JP
Japan
Prior art keywords
filter
pixel
processing
processing unit
pixels
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007551015A
Other languages
English (en)
Other versions
JPWO2007072644A1 (ja
Inventor
昭彦 井上
督三 清原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2007551015A priority Critical patent/JP4824703B2/ja
Publication of JPWO2007072644A1 publication Critical patent/JPWO2007072644A1/ja
Application granted granted Critical
Publication of JP4824703B2 publication Critical patent/JP4824703B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4007Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

本発明は、画像圧縮伸張処理、ループ内フィルタ処理、走査線変換処理、あるいは、画像平滑化処理等に使用される2次元フィルタ演算装置に関するものである。
近年、音声や画像のデータ圧縮技術を基盤とした音声符号化技術や動画像符号化技術は、我々のオーディオ・ビジュアルライフを豊かなものにする上で非常に重要な技術となっている。
今日、動画像符号化技術として、様々な方式が提案されている。動画像符号化技術の標準規格としては、ITU‐T(国際電気通信連合電気通信標準化部門)のH.261、H.263、ISO(国際標準化機構)のMPEG‐1、MPEG‐2、MPEG‐4などがある(MPEGは、Moving Picture Experts Groupの略語)。また、ITU−TとISOが共同で規格化した動画像符号化技術の新しい標準規格として、H.264|MPEG−4 AVC(Advanced Video Coding)がある。
さらに、SMPTE(Society of Motion Picture and Television Engineers:全米映画テレビジョン技術者協会)は、次世代の大容量光ディスク規格「HD DVD」と「Blue−Ray Disk」に、動画像符号化技術として「Video Codec 1(VC1)」を採用した。
その他、インターネット上のコンテンツには、マイクロソフト社のWMVや、リアルネットワークス社のRealVideoなどの方式が使用されている。このように、現在、異なる動画像符号化技術に基づいて、多くの標準規格が乱立している。
これらの動画像符号化方式の標準規格は、応用分野ごとに異なる適用のされ方をしている。例えば、現在のDVDにはMPEG−2が採用されており、次世代のDVDには、前述したように、H.264|MPEG−4 AVCやVC1が採用されている。すでにサービスが開始されている日本国内におけるディジタル放送には、H.264|MPEG−4 AVCが採用されている。また、携帯電話のテレビ電話には、H.263、あるいは、MPEG−4 Simple Profileが採用されている。さらに、インターネット上のコンテンツには、WMV方式やRealVideo方式が多く採用されている。
一方、近年の動画像符号化技術は、動画像の圧縮率向上のために、複雑な圧縮伸張処理を行っている。このため、圧縮伸張処理対象の画像の画素数が多くなると、必要とする計算量が膨大となる。
ディジタルテレビ、DVD,または、携帯電話等の映像機器に組み込まれているCPUは、パーソナルコンピュータに搭載されるCPUより動作周波数が低い。これらの映像機器は、動作周波数が低いCPUによるソフトウェア処理では、上述した膨大な計算量を伴う動画像の伸張処理(デコード処理)が間に合わないために、処理アルゴリズムをダイレクトに実行する、伸張処理専用のハードウェアを搭載していることが多い。
搭載後の変更が容易でない専用ハードウェアで、前述した複数の規格のストリームデータを効率よくデコードするためには、それぞれの規格での類似点と相違点を考慮することが重要となる。
動画のストリームデータをデコードする処理は、可変長符号化されたストリームデータを復号する可変長復号、可変長復号後のデータを周波数領域のデータに変換する逆量子化、周波数領域のデータから画素領域のデータへ変換する逆直交変換、参照画像から動きベクトルに応じた補間画像を生成し、その値に逆直交変換の結果を足しこむ動き補償予測という手順で実行される。これらのうち、逆直交変換及び動き補償予測は、2次元フィルタ処理という共通の処理を行っている。さらに、この2次元フィルタ処理は、デコード処理の中で特に多くの計算量を要する部分である。また、H.264|MPEG−4 AVCでは、圧縮率を改善するために、参照画像に対して補間を行うフィルタ処理を施す。このフィルタ処理も2次元フィルタ処理である。
このように、2次元フィルタ処理技術は、現在の動画像処理において、広範囲に利用される重要な技術である。
図16は、特許文献1が開示する従来の2次元フィルタのブロック図である。図16に示す従来の2次元フィルタは、画像メモリ1、ラインメモリ2a〜ラインメモリ2e、垂直フィルタ処理部3、水平フィルタ処理部4、シフトレジスタ5、及び、シフトレジスタ6を備える。このものは、画像メモリ1に格納されている画素に対して、最初に、垂直フィルタ処理部3が垂直方向に5タップのフィルタ演算を実行し、次に、水平フィルタ処理部4が、垂直方向フィルタ演算により更新された画素を用いて、水平方向に同じく5タップのフィルタ演算を実行する。
以下に、図16に示す従来の2次元フィルタについて、さらに詳しい動作を説明する。最初に、画像メモリ1に格納されている入力画像のある1ラインの画素の画素値が、ラインメモリ2aに読み出される。次の1ラインの画素の画素値がラインメモリ2aに読み出されるとき、ラインメモリ2aに最初に読み出された画素の画素値がラインメモリ2bに転送される。この処理を5回繰り返すことで、最初に読み出された1ラインの画素の画素値がラインメモリ2eに格納され、ラインメモリ2a〜2dにも、順次読み出されたラインの画素の画素値が格納されることになる。次に、各ラインメモリからそれぞれの最右の1画素値が、垂直フィルタ処理部3に同時に読み出され、垂直フィルタ処理部3において、垂直方向フィルタ演算が実行される。
垂直フィルタ処理部3によりフィルタ処理された画素値は、レジスタ5に蓄積される。垂直フィルタ処理部3によりフィルタ処理された5つの画素値がレジスタ5にそろった時点で、それらの5つの画素値が水平フィルタ処理部4に入力され、水平フィルタ処理部4において水平方向フィルタ演算が実行される。
上記の処理を繰り返すことにより、画像メモリ1に格納されている画素の画素値に対して2次元のフィルタ演算が実行される。
しかしながら、図16に示す従来の2次元フィルタでは、垂直方向フィルタ演算を実行するために、水平方向に読み出された画素の画素値を垂直方向に並べ替えるためのバッファ(ラインメモリ2a〜2e)を必要としていた。さらに、そのバッファを制御するための制御回路のパスが、フィルタ演算を実行するデータパスとは別に必要であり、回路面積を増大させているという問題があった。これは、従来技術のように、垂直方向フィルタ演算を実行するデータパスと水平方向フィルタ処理を実行するデータパスが同一のデータパス構造になっている場合に必ず生じる問題である。また、図16に示す従来の2次元フィルタでは、フィルタ処理方向の順序を容易に変更できないという問題があった。
また、特許文献2は、水平方向フィルタと垂直方向フィルタを用いて、画素データ密度を変換し、縮小画面を生成する技術を開示している。特許文献2が開示する技術では、水平方向フィルタ処理と垂直方向フィルタ処理の間に、画素データを並び替えるための、遅延回路(バッファに相当する)を必要としていた。
さらに、特許文献3は、水平方向フィルタと、構成を簡単にした垂直方向フィルタとを有する2次元ディジタルフィルタ技術を開示している。特許文献3が開示する技術においても、垂直方向にフィルタ処理ためには、水平方向にフィルタ処理された画素データを蓄積する遅延回路(バッファに相当する)を必要としていた。
特開2002−304624号公報 米国特許第5289292号公報 米国特許第5410362号公報
そこで本発明は、画面上の画素の画素値に対して、2次元フィルタ処理を行う場合、フィルタ処理方向の違いを吸収するためのバッファが不要で、フィルタ処理方向の順序を容易に変更できる、2次元フィルタ演算装置を提供することを目的とする。
第1の発明に係る2次元フィルタ演算装置は、被フィルタ画像データを格納する記憶部と、記憶部に格納されている被フィルタ画像データに対して、第1のフィルタ演算を実行する第1フィルタ処理部と、第1フィルタ処理部がフィルタ処理した画像データに対して、第2のフィルタ演算を実行する第2フィルタ処理部とを備え、第1フィルタ処理部と第2フィルタ処理部とは、垂直方向フィルタ演算と水平方向フィルタ演算の内の互いに異なるフィルタ演算を実行し、垂直方向フィルタ演算と水平方向フィルタ演算とは、互いに異なる並列処理によって実行される。
この構成によれば、被フィルタ画像データの2次元フィルタ演算において、フィルタ処理方向の順序を任意に設定でき、さらに、フィルタ処理方向の違いを吸収するためのバッファを必要としない、2次元フィルタ演算装置を提供できる。この2次元フィルタ演算装置は、バッファが不要な分だけ回路面積を削減できる。
第2の発明に係る2次元フィルタ演算装置では、並列処理は、被フィルタ画像データに対して、並列に実行される順次演算処理と並列に実行される並列演算処理とを含む。
この構成によれば、被フィルタ画像データの2次元フィルタ演算は、フィルタ処理方向によって、順次演算処理と並列演算処理の内のいずれかの演算処理を実行することができる。さらに、この構成によれば、演算処理の違いを吸収するためのバッファが不要であり、その分回路面積を削減した2次元フィルタ演算装置を提供できる。
第3の発明に係る2次元フィルタ演算装置では、第1フィルタ処理部は、複数の第1フィルタモジュールを有し、第2フィルタ処理部は、少なくとも1つの第2フィルタモジュールを有し、複数の第1フィルタモジュールは、被フィルタ画像データに対して第1のフィルタ演算を実行し、第1フィルタ処理部は、複数の第1フィルタ結果を出力し、少なくとも1つの第2フィルタモジュールは、複数の第1フィルタ結果の内の少なくとも一部を入力して、第2のフィルタ演算を実行し、第2フィルタ処理部は、少なくとも1つの第2フィルタ結果を出力する。
この構成によれば、複数の画素の画素値に対して、複数の水平方向フィルタ処理(あるいは垂直方向フィルタ処理)を実行し、フィルタ処理された複数の画素値を得て、得られた複数の画素値に対して、少なくとも1つの垂直方向フィルタ処理(あるいは水平方向フィルタ処理)を引き続き実行し、2次元フィルタ処理された複数の画素値を生成することができる。
第4の発明に係る2次元フィルタ演算装置では、第1フィルタ処理部は、複数の第1フィルタモジュールを用いて、第1のフィルタ演算を並列に実行し、第2フィルタ処理部が複数の第2フィルタモジュールを有する場合は、第2フィルタ処理部は、複数の第2フィルタモジュールを用いて、第2のフィルタ演算を並列に実行する。
この構成によれば、複数の水平方向フィルタ処理(あるいは垂直方向フィルタ処理)と、それに続く複数の垂直方向フィルタ処理(あるいは水平方向フィルタ処理)とを、それぞれ並列に実行することができる。したがって、より効率の良い2次元フィルタ演算装置を実現できる。
第5の発明に係る2次元フィルタ演算装置では、複数の第1フィルタモジュールのそれぞれは、初段の累積加算部と少なくとも1つの後段の累積加算部が縦続接続された複数の累積加算部と、複数の累積加算部のそれぞれの出力を順次選択して、出力する選択部とを有し、初段の累積加算部には、所定のフィルタ係数が、1処理時間ごとに順次入力され、少なくとも1つの後段の累積加算部には、それぞれの前段の累積加算部から、所定のフィルタ係数が、1処理時間ごとに順次転送され、複数の累積加算部それぞれには、被フィルタ画像データの垂直または水平に並んだ画素の画素値が、記憶部から1処理時間ごとに順次入力され、複数の累積加算部は、それぞれ、1処理時間ごとに画素値と所定のフィルタ係数との積和演算を行って、複数の第1フィルタ結果を出力する。
この構成によれば、フィルタ係数をシフト入力し、画素値を並列入力して、ループ内パイプライン処理によって、画素値とフィルタ係数との積和演算を高効率に行う第1フィルタモジュールを実現できる。
第6の発明に係る2次元フィルタ演算装置では、少なくとも1つの第2フィルタモジュールは、複数の加算部と、複数の積算部とを有し、複数の第1フィルタ結果の内の少なくとも一部と、所定の複数のフィルタ係数との積和演算を行い、少なくとも1つの第2フィルタ結果を出力する。
この構成によれば、第1フィルタモジュールが出力した演算結果を入力して、ループ内並列処理によって、演算結果とフィルタ係数との積和演算を高効率に行う第2フィルタモジュールを実現できる。この結果、2次元フィルタ演算を完成させることができる。
第7の発明に係る2次元フィルタ演算装置では、複数の第1フィルタモジュールは、ループ内パイプライン処理方式とループ内並列処理方式の内の一方の処理方式に従って、第1のフィルタ演算を実行し、少なくとも1つの第2フィルタモジュールは、ループ内パイプライン処理方式とループ内並列処理方式の内、複数の第1フィルタモジュールが従っていない方の処理方式に従って、第2のフィルタ演算を実行する。
この構成によれば、ループ内パイプライン処理(または、ループ内並列処理)により、第1のフィルタ処理を行う第1フィルタ処理部と、ループ内並列処理(または、ループ内パイプライン処理)により、第2のフィルタ処理を行う第2フィルタ処理部とを備える、2次元フィルタ演算装置を実現できる。
第8の発明に係る2次元フィルタ演算装置では、記憶部から1ライン分の画素の画素値を取得して一時的に格納し、第1フィルタ処理部に出力する、ラインメモリをさらに備える。
この構成によれば、記憶部からフィルタ演算部への画素値の転送をより効率よく行う2次元フィルタ演算装置を実現できる。
第9の発明に係る2次元フィルタ演算装置は、被フィルタ画像データを格納する記憶部と、垂直方向フィルタ演算を実行する垂直フィルタ処理部と、水平方向フィルタ演算を実行する水平フィルタ処理部と、記憶部の出力と水平フィルタ処理部の出力の内の一つを選択して、垂直フィルタ処理部へ出力する第1選択部と、記憶部の出力と垂直フィルタ処理部の出力の内の一つを選択して、水平フィルタ処理部へ出力する第2選択部と、垂直フィルタ処理部の出力と水平フィルタ処理部の出力の内の一つを選択して、2次元フィルタ演算結果として出力する第3選択部とを備える。垂直方向フィルタ演算と水平方向フィルタ演算とは、互いに異なる並列処理によって実行される。第1動作モードが選択された場合は、第1選択部は、記憶部の出力を選択し、第2選択部は、垂直フィルタ処理部の出力を選択し、第3選択部は、水平フィルタ処理部の出力を選択し、記憶部に格納されている被フィルタ画像データに対して、垂直方向フィルタ演算が実行された後に、水平方向フィルタ演算が実行される。第2動作モードが選択された場合は、第1選択部は、水平フィルタ処理部の出力を選択し、第2選択部は、記憶部の出力を選択し、第3選択部は、垂直フィルタ処理部の出力を選択し、記憶部に格納されている被フィルタ画像データに対して、水平方向フィルタ演算が実行された後に、垂直方向フィルタ演算が実行される。
この構成によれば、垂直方向フィルタ演算と水平方向フィルタ演算の順序を任意に変えることができる2次元フィルタ演算装置を実現できる。
第10の発明に係る2次元フィルタ演算装置では、互いに異なる並列処理は、被フィルタ画像データに対して、並列に実行される順次演算処理と並列に実行される並列演算処理とを含む。
この構成によれば、被フィルタ画像データの2次元フィルタ演算は、フィルタ処理方向によって、順次演算処理と並列演算処理の内のいずれかの演算処理を実行することができる。さらに、この構成によれば、演算処理の違いを吸収するためのバッファが不要であり、その分回路面積を削減した2次元フィルタ演算装置を提供できる。
第11の発明に係る2次元フィルタ演算装置では、第1動作モードと第2動作モードの選択は、被フィルタ画像データが準拠する動画像符号化規格に従って実行される。
この構成によれば、被フィルタ画像データが準拠する動画像符号化規格に従って、垂直方向フィルタ演算と水平方向フィルタ演算の実行順序を任意に変えることができる。
本発明によれば、画面上の画素の画素値に対して、2次元フィルタ処理を行う場合、フィルタ処理方向の違いを吸収するためのバッファが不要で、フィルタ処理方向の順序を容易に変更できる、2次元フィルタ演算装置を提供することができる。
以下図面を参照しながら、本発明の実施の形態を説明する。
(実施の形態1)
本発明の実施の形態1は、例として、H.264|MPEG−4 AVCに準拠した動き補償予測演算における2次元フィルタ処理を扱う。
なお、本発明は、一般的な2次元フィルタ演算に適用できるものであり、本形態に限定されるものではない。
本形態が例示する動き補償予測演算では、(4×4)個の整数画素精度の画素からなる画像領域を、動きベクトル(1/2、1/2)に従って平行移動して、新たな画像領域を求め、そこに含まれる1/2画素精度の画素の画素値を求める。この時、新たな画像領域に含まれる1/2画素精度の画素の画素値は、整数画素精度の画素の画素値に対して、6タップの2次元フィルタ演算を施すことにより算出する。(以下の記述では、整数画素精度の画素を「整数画素」、1/2画素精度の画素を「1/2画素」と略称する。)
図1は、本発明の実施の形態1における整数画素と1/2画素の配置図である。図1において、大きい白丸で示される整数画素は、水平方向に整数画素F00、F01、F02・・・F08の順に並んでおり、垂直方向に整数画素F00、F10、F20・・・F80の順に並んでいる。
今、図1の実線の矩形で示される画像領域A((4×4)個の整数画素)が、動きベクトル(1/2、1/2)に従って破線の矩形で示される画像領域Bに平行移動すると仮定する。画像領域Bを規定する画素は、小さい黒丸で示される(4×4)個の1/2画素である。これらの黒丸で示される1/2画素は、ちょうど整数画素の対角線上に位置している。したがって、黒丸で示される1/2画素の画素値を水平方向フィルタにより補間するために、小さい白丸で示される1/2画素の画素値が必要である。(水平方向フィルタは、6タップフィルタであり、補間する画素値の画素の左右に位置する6個の隣接画素の画素値を必要とする。)さらに、小さい白丸で示される1/2画素の画素値は、整数画素F00〜F88の画素値を用いて、垂直方向フィルタにより補間される。(図1において、1/2画素については、説明に必要なもののみが示されている。)
図2は、本発明の実施の形態1における1/2画素の配置図である。図2は、符号を見やすくするために、小さい白丸の1/2画素(1/2画素H20〜H58)とそれらの間にある整数画素の配置を示している。
図3は、本発明の実施の形態1における1/2画素の別の配置図である。図3は、符号を見やすくするために、画像領域Bに位置する小さい黒丸の1/2画素Ha、Hb、Hc、Hd、He、Hf、Hg、Hh、Hi、Hj、Hk、Hm、Hn、Hp、Hq、Hr(以下、1/2画素Ha〜Hrと略記する)のみを示している。
以下に、図1〜3を参照して、1/2画素Ha〜Hrの画素値を6タップの2次元フィルタにより求める過程を説明する。
本形態の2次元フィルタ演算の方法では、最初に、整数画素F00〜F88に対して垂直方向フィルタ演算を行い、1/2画素H20〜H58を求める。次に、垂直方向フィルタ演算で求めた1/2画素H20〜H58に対して、水平方向フィルタ演算を行い、1/2画素Ha〜Hrを求める。
垂直方向フィルタ演算は、図1の整数画素F00、F10、F20・・・F80を用いて、図2の1/2画素H20、H30、H40、H50の画素値の補間を行う。フィルタ演算の式は、
Figure 0004824703
で表される。数式1において、左辺「Y」は、補間される画素の画素値であり、右辺の変数「X0〜X5」は、補間される画素の上下(垂直方向フィルタ演算の場合)、または左右(水平方向フィルタ演算の場合)に隣接するそれぞれ3個の画素の画素値である。
H264|MPEG−4 AVCの動き補償予測の場合、数式1の右辺の各係数は、a=1、b=−5、c=20、d=20、e=−5、f=1である。したがって、数式1は数式2と表される。
Figure 0004824703
例えば、1/2画素H20の画素値「Y」は、数式2を用いて、
変数「X0」に整数画素F00の画素値を代入し、
変数「X1」に整数画素F10の画素値を代入し、
変数「X2」に整数画素F20の画素値を代入し、
変数「X3」に整数画素F30の画素値を代入し、
変数「X4」に整数画素F40の画素値を代入し、
変数「X5」に整数画素F50の画素値を代入して、生成される。
同様に、変数「X0〜X5」に代入する画素値の整数画素を1つずつ下方にずらして、1/2画素H30、H40、H50の画素値を生成することができる。
上述した垂直方向フィルタ演算を、整数画素列「F00〜F80」、「F01〜F81」・・・「F08〜F88」の画素の画素値に対して、実行することにより、図2に示す1/2画素列「H20〜H50」、「H21〜H51」・・・「H28〜H58」の画素の画素値が生成される。
次に、上で生成された1/2画素H20〜H58の画素値を用いて、水平方向フィルタ演算を行い、図3の1/2画素Ha〜Hrの画素値を生成する。フィルタ演算の式は、数式1と同様であり、係数値も垂直方向フィルタ演算のものと同様である。
例えば、1/2画素Haの画素値「Y」は、数式2を用いて、
変数「X0」に1/2画素H20の画素値を代入し、
変数「X1」に1/2画素H21の画素値を代入し、
変数「X2」に1/2画素H22の画素値を代入し、
変数「X3」に1/2画素H23の画素値を代入し、
変数「X4」に1/2画素H24の画素値を代入し、
変数「X5」に1/2画素H25の画素値を代入して、生成される。
同様に、変数「X0〜X5」に代入する画素値の1/2画素を1つずつ右方にずらして、1/2画素Hb、Hc、Hdの画素値を生成することができる。
上述した水平方向フィルタ演算を、1/2画素行「H20〜H28」、「H30〜H38」、「H40〜H48」、「H50〜H58」の画素の画素値に対して、実行することにより、図3に示す1/2画素Ha〜Hrの画素値が生成される。
次に、本発明の2次元フィルタ演算装置について説明する。
図4は、本発明の実施の形態1における2次元フィルタ演算装置のブロック図である。図4に示す本形態の2次元フィルタ演算装置は、画像メモリ300、ラインメモリ400、垂直フィルタ処理部100、バッファ500、及び、水平フィルタ処理部200を備える。垂直フィルタ処理部100は、第1フィルタ処理部に相当し、水平フィルタ処理部200は、第2フィルタ処理部に相当する。
本形態の2次元フィルタ演算装置は、最初に垂直方向フィルタ演算を行い、次に、水平方向フィルタ演算を行う。勿論、この順序は、逆にしても良い。
図5は、本発明の実施の形態1における2次元フィルタ演算方法のフローチャートである。図5に従って、図4に示す本形態の2次元フィルタ演算装置の動作の概要を以下に説明する。
図5のステップS0で2次元フィルタ演算処理が開始されると、ステップS1において、画像メモリ300からラインメモリ400へ、画像データ(整数画素の画素値)を読み込む。
ステップS2において、垂直フィルタ処理部100は、ラインメモリ400から整数画素の画素値を読み込み、垂直方向フィルタ演算を行って、1/2画素の画素値を求める。この演算により、図1に示す整数画素列「F00〜F80」、「F01〜F81」・・・「F08〜F88」の画素の画素値から、図2に示す1/2画素列「H20〜H50」、「H21〜H51」・・・「H28〜H58」の画素の画素値が生成される。
ステップS3において、水平フィルタ処理部200は、ステップS2において生成された1/2画素H20〜H58の画素値に対して水平方向フィルタ演算を実行して、1/2画素Ha〜Hrの画素値を生成する。
ステップS4において、水平フィルタ処理部200は、生成した1/2画素Ha〜Hrの画素値を、画像領域Bを構成する1/2画素の画素データとして、画像メモリ300に格納し、ステップS5に移って、処理を終了する。
上述した図5のステップS1〜ステップS4までの処理では、ある部分は、互いに重なり合って並列に実行される。以下では、図4に示す2次元フィルタ演算装置の動作をさらに詳しく説明する。
図4において、画像メモリ300は、整数画素の画素値を画像データとして格納している。
ラインメモリ400は、画像メモリ300から、水平方向1ライン分の整数画素の画素値を取り込む。ラインメモリ400は、この1ライン分の画素値に含まれている、図1に示す整数画素F00〜F08の画素値を、垂直フィルタ処理部100に順次送る。ラインメモリ400は、整数画素F00〜F08の画素値を送り終えると、次の水平方向1ライン分の整数画素の画素値を取り込む。ラインメモリ400が、この操作を繰り返すことにより、垂直フィルタ処理部100には、図1に示す、整数画素行「F00〜F08」、「F10〜F18」・・・「F80〜F88」の画素の画素値が、順次送られることになる。
垂直フィルタ処理部100は、整数画素列「F00〜F80」、「F01〜F81」・・・「F08〜F88」に対して、垂直方向フィルタ演算を並列に実行する。この処理により、図2に示す1/2画素行「H20〜H28」の画素の画素値が最初に並列に生成され、バッファ500に出力される。次に、1/2画素行「H30〜H38」、1/2画素行「H40〜H48」、最後に、1/2画素行「H50〜H58」の各画素の画素値が並列に生成され、それぞれ、バッファ500に出力される。
水平フィルタ処理部200は、バッファ500から、1/2画素行「H20〜H28」の画素の画素値を取り込み、水平方向フィルタ演算により、1/2画素Ha、Hb、Hc、Hdの画素値を生成する。次に、水平フィルタ処理部200は、1/2画素行「H30〜H38」の画素の画素値を取り込み、1/2画素He、Hf、Hg、Hhの画素値を生成し、1/2画素行「H40〜H48」の画素の画素値を取り込み、1/2画素Hi、Hj、Hk、Hmの画素値を生成し、最後に、1/2画素行「H50〜H58」の画素の画素値を取り込み、1/2画素Hn、Hp、Hq、Hrの画素値を生成する。水平フィルタ処理部200は、生成した1/2画素Ha〜Hrの画素値を、順次、画像メモリ300に出力する。
以上の2次元フィルタ演算により、図1に示す画像領域Bの1/2画素Ha〜Hrの画素値が生成される。
次に、本形態の2次元フィルタ演算装置の垂直フィルタ処理部100と水平フィルタ処理部200の構成と動作について述べる。
図6は、本発明の実施の形態1における垂直フィルタ処理部100のブロック図である。図6において、 図4と同様な構成要素については、同一の符号を付すことにより、説明を省略する。
図6に示す本形態の垂直フィルタ処理部100は、並列に設置された9個の第1フィルタモジュール(#0)110〜(#8)190を備える。
第1フィルタモジュール(#0)110は、図1の整数画素列「F00〜F80」に対して、垂直方向フィルタ演算を行い、第1フィルタモジュール(#1)120は、整数画素列「F01〜F81」に対して、垂直方向フィルタ演算を行い、以下同様に、第1フィルタモジュール(#8)190は、整数画素列「F08〜F88」に対して、垂直方向フィルタ演算を行う。
図6に示す9個の第1フィルタモジュール(#0)110〜(#8)190は、いずれも同じ構造を有しており、以下に、第1フィルタモジュール(#0)110を例として、それらの構造を説明する。
第1フィルタモジュール(#0)110は、縦続接続されたプロセッサエレメントPE10、PE20、PE30、PE40と、これらのプロセッサエレメントの出力を選択するセレクタ50とを有している。セレクタ50は、選択部に相当する。PE10〜PE40のそれぞれは、クロックに合わせて、それぞれの一方の入力端に、ラインメモリ400から、画素値が入力される。初段のプロセッサエレメントPE10の他の入力端に係数入力端子91からフィルタ係数が入力される。PE10に入力されたフィルタ係数は、クロックに合わせて、それぞれ後段のプロセッサエレメントに転送される。PE10〜PE40は、クロックに合わせて、入力された画素値とフィルタ係数との積和演算を行い、それぞれの結果を、セレクタ50に出力する。セレクタ50は、PE10〜PE40の出力を順次選択して、バッファ500に出力する。以上述べた積和演算の詳細は、タイミング図を参照して、後述する。
図7は、本発明の実施の形態1におけるプロセッサエレメントPE10のブロック図である。PE20〜PE40も、図7に示すPE10のブロック図と同じ構成を有する。PE10〜PE40は、累積加算部に相当する。
図7において、本形態のPE10は、乗算器11、加算器12、フリップフロップ13、及び、フリップフロップ14を有している。係数入力端子15には、フィルタ係数が入力され(PE10では係数入力端子91から)、そのフィルタ係数は、フリップフロップ13を経由して次のクロック時に係数出力端子16から後段のプロセッサエレメントに(PE10では、PE20に)出力される。画素データ入力端子17には、ラインメモリ400から、画素値が入力され、乗算器11において、係数入力端子15から入力されたフィルタ係数との積が求められる。乗算器11の演算結果は、加算器12において、すでに演算されてフリップフロップ14に累積されている積和値と加算され、フリップフロップ14の積和値を更新する。最終的な積和値、すなわち、6個の画素値と6個のフィルタ係数との積和演算を行った値が、1/2画素の画素値としてセレクタ50に出力される。
図8は、本発明の実施の形態1における2次元フィルタ演算装置のタイミング図である。図8において、横軸は、クロック(clk)のサイクル数を示し、縦軸は、図6に示す垂直フィルタ処理部100へ入力される画素値とフィルタ係数、垂直フィルタ処理部100から出力される画素値、及び、後述の図9に示す水平フィルタ処理部200のへ入力される画素値と水平フィルタ処理部200から出力される画素値を示している。
以下に、図8を参照して、垂直フィルタ処理部100の垂直方向フィルタ演算を説明する。
クロック0において、ラインメモリ400からPE10の画素データ入力端子in0に画素値「X0」が入力され、係数入力端子91からPE10の係数入力端子inAにフィルタ係数「a」が入力され、PE10において以下の演算が実行される。すなわち、乗算器11において、乗算「a*X0」が実行され、加算器12において、フリップフロップ14に累積しておいた積和結果に乗算結果「a*X0」を足し、フリップフロップ14の積和結果を更新する。この場合は、フリップフロップ14にはまだ積和結果は累積されていないため、乗算結果「a*X0」そのものが、フリップフロップ14に保持される。フィルタ係数「a」は、後段のPE20に転送するために、フリップフロップ13に保持しておく。
ここで注意すべきことは、図6の垂直フィルタ処理部100では、上述のクロック0における処理が、第1フィルタモジュール(#0)110〜(#8)190において、同時に実行されていることである。すなわち、図6のラインメモリ400からは、図示されていない接続により、第1フィルタモジュール(#1)120〜(#8)190のそれぞれのPE10〜PE40にも並列して画素値が送られる。したがって、図8の画素値「X0〜X8」は、第1フィルタモジュール(#0)110では、図1の整数画素F00〜F80の画素値を表し、第1フィルタモジュール(#1)120では、同じく整数画素F01〜F81の画素値を表し、以下同様に、第1フィルタモジュール(#8)190では、整数画素F08〜F88の画素値を表す。その結果、クロック0において、第1フィルタモジュール(#0)110では、PE10に乗算結果「a*整数画素F00の画素値」が保持され、第1フィルタモジュール(#1)120では、PE10に乗算結果「a*整数画素F01の画素値」が保持され、以下同様に、第1フィルタモジュール(#8)190では、PE10に乗算結果「a*整数画素F08の画素値」が保持される。
この時点で、1/2画素行「H20〜H28」のそれぞれの画素の画素値を並列に算出するための6タップフィルタの最初の1タップ分の乗算「a*X0」(数式1の右辺第1項)が終了する。
次に、クロック1において、ラインメモリ400からPE10の画素データ入力端子in0に画素値「X1」が入力され、係数入力端子91からPE10の係数入力端子inAにフィルタ係数「b」が入力され、PE10において以下の演算が実行される。すなわち、乗算器11において、乗算「b*X1」が実行され、続いて、加算器12において、フリップフロップ14に累積しておいた積和結果「a*X0」に乗算結果「b*X1」(数式1の右辺第2項)を足し、フリップフロップ14の積和結果を「a*X0+b*X1」に更新する。また、フィルタ係数「b」は、フリップフロップ13に保持しておく。
同時に、クロック1において、ラインメモリ400からPE20の画素データ入力端子in1に画素値「X1」が入力され、PE10のフリップフロップ13からPE20の係数入力端子inBにフィルタ係数「a」が入力され、PE20において以下の演算が実行される。すなわち、乗算器11において、乗算「a*X1」が実行され、続いて、加算器12において、フリップフロップ14に累積しておいた積和結果に乗算結果「a*X1」を足し、フリップフロップ14の積和結果を更新する。この場合は、フリップフロップ14にはまだ積和結果は累積されていないため、乗算結果「a*X1」そのものが、フリップフロップ14に保持される。フィルタ係数「a」は、後段のPE30に転送するために、フリップフロップ13に保持しておく。
クロック1においても、図6の垂直フィルタ処理部100では、上述の処理が、第1フィルタモジュール(#0)110〜(#8)190において、同時に実行される。すなわち、図8の画素値「X1」は、第1フィルタモジュール(#0)110では、図1の整数画素F10の画素値を表し、第1フィルタモジュール(#1)120では、同じく整数画素F11の画素値を表し、以下同様に、第1フィルタモジュール(#8)190では、整数画素F18の画素値を表す。
次に、クロック2において、ラインメモリ400からPE10の画素データ入力端子in0に画素値「X2」が入力され、係数入力端子91からPE10の係数入力端子inAにフィルタ係数「c」が入力され、PE10において以下の演算が実行される。すなわち、乗算器11において、乗算「c*X2」が実行され、続いて、加算器12において、フリップフロップ14に累積しておいた積和結果「a*X0+b*X1」に乗算結果「c*X2」(数式1の右辺第3項)を足し、フリップフロップ14の積和結果を「a*X0+b*X1+c*X2」に更新する。また、フィルタ係数「c」は、フリップフロップ13に保持しておく。
同時に、クロック2において、ラインメモリ400からPE20の画素データ入力端子in1に画素値「X2」が入力され、PE10のフリップフロップ13からPE20の係数入力端子inBにフィルタ係数「b」が入力され、PE20において以下の演算が実行される。すなわち、乗算器11において、乗算「b*X2」が実行され、続いて、加算器12において、フリップフロップ14に累積しておいた積和結果「a*X1」に乗算結果「b*X2」を足し、フリップフロップ14の積和結果を「a*X1+b*X2」に更新する。フィルタ係数「b」は、後段に転送するために、フリップフロップ13に保持しておく。
さらに同時に、クロック2において、ラインメモリ400からPE30の画素データ入力端子in2に画素値「X2」が入力され、PE20からPE30の係数入力端子inCにフィルタ係数「a」が入力され、PE30において以下の演算が実行される。すなわち、乗算器11において、乗算「a*X2」が実行され、続いて、加算器12において、フリップフロップ14に累積しておいた積和結果に乗算結果「a*X2」を足し、フリップフロップ14の積和結果を更新する。この場合は、フリップフロップ14にはまだ積和結果は累積されていないため、乗算結果「a*X2」そのものが、フリップフロップ14に保持される。フィルタ係数「a」は、後段のPE40に転送するために、フリップフロップ13に保持しておく。
クロック2においても、図6の垂直フィルタ処理部100では、上述の処理が、第1フィルタモジュール(#0)110〜(#8)190において、同時に実行される。すなわち、図8の画素値「X2」は、第1フィルタモジュール(#0)110では、図1の整数画素F20の画素値を表し、第1フィルタモジュール(#1)120では、同じく整数画素F21の画素値を表し、以下同様に、第1フィルタモジュール(#8)190では、整数画素F28の画素値を表す。
次に、クロック3において、ラインメモリ400からPE10の画素データ入力端子in0に画素値「X3」が入力され、係数入力端子91からPE10の係数入力端子inAにフィルタ係数「d」が入力され、PE10において以下の演算が実行される。すなわち、乗算器11において、乗算「d*X3」が実行され、続いて、加算器12において、フリップフロップ14に累積しておいた積和結果「a*X0+b*X1+c*X2」に乗算結果「d*X3」(数式1の右辺第4項)を足し、フリップフロップ14の積和結果を「a*X0+b*X1+c*X2+d*X3」に更新する。また、フィルタ係数「d」は、フリップフロップ13に保持しておく。
同時に、クロック3において、ラインメモリ400からPE20の画素データ入力端子in1に画素値「X3」が入力され、PE10からPE20の係数入力端子inBにフィルタ係数「c」が入力され、PE20において以下の演算が実行される。すなわち、乗算器11において、乗算「c*X3」が実行され、続いて、加算器12において、フリップフロップ14に累積しておいた積和結果「a*X1+b*X2」に乗算結果「c*X3」を足し、フリップフロップ14の積和結果を「a*X1+b*X2+c*X3」に更新する。フィルタ係数「c」は、後段に転送するために、フリップフロップ13に保持しておく。
さらに同時に、クロック3において、ラインメモリ400からPE30の画素データ入力端子in2に画素値「X3」が入力され、PE20からPE30の係数入力端子inCにフィルタ係数「b」が入力され、PE30において以下の演算が実行される。すなわち、乗算器11において、乗算「b*X3」が実行され、続いて、加算器12において、フリップフロップ14に累積しておいた積和結果「a*X2」に乗算結果「b*X3」を足し、フリップフロップ14の積和結果を「a*X2+b*X3」更新する。フィルタ係数「b」は、後段に転送するために、フリップフロップ13に保持しておく。
さらに同時に、クロック3において、ラインメモリ400からPE40の画素データ入力端子in3に画素値「X3」が入力され、PE30からPE40の係数入力端子inDにフィルタ係数「a」が入力され、PE30において以下の演算が実行される。すなわち、乗算器11において、乗算「a*X3」が実行され、続いて、加算器12において、フリップフロップ14に累積しておいた積和結果に乗算結果「a*X3」を足し、フリップフロップ14の積和結果を更新する。この場合は、フリップフロップ14にはまだ積和結果は累積されていないため、乗算結果「a*X2」そのものが、フリップフロップ14に保持される。
クロック3においても、図6の垂直フィルタ処理部100では、上述の処理が、第1フィルタモジュール(#0)110〜(#8)190において、同時に実行される。すなわち、図8の画素値「X3」は、第1フィルタモジュール(#0)110では、図1の整数画素F30の画素値を表し、第1フィルタモジュール(#1)120では、同じく整数画素F31の画素値を表し、以下同様に、第1フィルタモジュール(#8)190では、整数画素F38の画素値を表す。
以下同様な処理を繰り返すと、第1フィルタモジュール(#0)110〜(#8)190の各々に対して、
クロック4において、
PE10には、積和結果「a*X0+b*X1+c*X2+d*X3+e*X4」が保持され、
PE20には、積和結果「a*X1+b*X2+c*X3+d*X4」が保持され、
PE30には、積和結果「a*X2+b*X3+c*X4」が保持され、
PE40には、積和結果「a*X3+b*X4」が保持される。
クロック5において、
PE10には、積和結果「a*X0+b*X1+c*X2+d*X3+e*X4+f*X5」が保持され、
PE20には、積和結果「a*X1+b*X2+c*X3+d*X4+e*X5」が保持され、
PE30には、積和結果「a*X2+b*X3+c*X4+d*X5」が保持され、
PE40には、積和結果「a*X3+b*X4+c*X5」が保持される。
クロック5において、PE10は、数式1の右辺6項の演算を終了する。
クロック6において、セレクタ50は、PE10の出力を選択し、垂直フィルタ処理部100のフィルタ出力として画素値「Y0」をバッファ500に送る。
クロック6において、図8の画素値「Y0」は、第1フィルタモジュール(#0)110では、図2の1/2画素H20の画素値を表し、第1フィルタモジュール(#1)120では、1/2画素H21の画素値を表し、以下同様に、第1フィルタモジュール(#8)190では、1/2画素H28の画素値を表す。
このように、クロック6において、第1フィルタモジュール(#0)110〜(#8)190における最初の垂直方向フィルタ演算「a*X0+b*X1+c*X2+d*X3+e*X4+f*X5」が終了し、1/2画素行「H20〜H28」の各画素の画素値が垂直フィルタ処理部100から、バッファ500に送られる。
続いて、クロック7において、第1フィルタモジュール(#0)110〜(#8)190における垂直方向フィルタ演算「a*X1+b*X2+c*X3+d*X4+e*X5+f*X6」が終了し、1/2画素行「H30〜H38」の各画素の画素値が垂直フィルタ処理部100から、バッファ500に送られる。
さらに、クロック8において、第1フィルタモジュール(#0)110〜(#8)190における垂直方向フィルタ演算「a*X2+b*X3+c*X4+d*X5+e*X6+f*X7」が終了し、1/2画素行「H40〜H48」の各画素の画素値が垂直フィルタ処理部100から、バッファ500に送られる。
最後に、クロック9において、第1フィルタモジュール(#0)110〜(#8)190における垂直方向フィルタ演算「a*X3+b*X4+c*X5+d*X6+e*X7+f*X8」が終了し、1/2画素行「H50〜H58」の各画素の画素値が垂直フィルタ処理部100から、バッファ500に送られる。
なお、クロック7以降では、以下に述べる水平方向フィルタ演算が垂直方向フィルタ演算と並行して実行される。
図9は、本発明の実施の形態1における水平フィルタ処理部のブロック図である。図9において、 図4と同様な構成要素については、同一の符号を付すことにより、説明を省略する。
図9に示す本形態の水平フィルタ処理部200は、セレクタ250、第2フィルタモジュール(#A)210、(#B)220、(#C)230、(#D)240、及び、フリップフロップ260〜280を備える。第2フィルタモジュール(#A)210〜(#D)240は、同じ構造を有している。以下に第2フィルタモジュール(#A)210の構造を説明する。
図9に示すように、第2フィルタモジュール(#A)210は、加算器211、212、213、217、218、乗算器214、215、216、及び、フリップフロップ219を有する。第2フィルタモジュール(#A)210は、数式3で示される、水平方向フィルタ演算を行う。
Figure 0004824703
数式3は、数式2のように、フィルタ演算が左右対称の係数を有する場合、同じ係数の項をまとめて表現したものである。
図9において、セレクタ250は、バッファ500に出力された垂直方向フィルタ演算結果から画素値を選択し、加算器211には画素値「X0」、「X5」を送り、加算器212には、画素値「X1」、「X4」を送り、加算器213には、画素値「X2」、「X3」を送る。
フリップフロップ260には、フィルタ係数「1」が保持されており、乗算器214は、フリップフロップ260の出力「1」と加算器211の出力「X0+X5」を乗算して、乗算結果「X0+X5」を加算器217に送る。
フリップフロップ270には、フィルタ係数「−5」が保持されており、乗算器215は、フリップフロップ270の出力「−5」と加算器212の出力「X1+X4」を乗算して、乗算結果「(−5)*(X1+X4)」を加算器217に送る。
フリップフロップ280には、フィルタ係数「20」が保持されており、乗算器216は、フリップフロップ280の出力「20」と加算器213の出力「X2+X3」を乗算して、乗算結果「20*(X2+X3)」を加算器217に送る。
加算器217は、乗算器214の出力「X0+X5」と乗算器215の出力「(−5)*(X1+X4)」の和を取り、和算結果「(X0+X5)−5*(X1+X4)」を出力する。
加算器218は、加算器217の出力「(X0+X5)−5*(X1+X4)」と乗算器216の出力「20*(X2+X3)」の和を取り、和算結果「(X0+X5)−5*(X1+X4)+20*(X2+X3)」を、フリップフロップ219に出力する。この和算結果は、数式3の右辺に等しく、したがって、水平方向フィルタ演算結果「Y」である。
フリップフロップ219は、水平方向フィルタ演算結果「Y」を出力する。
水平フィルタ処理部200では、第2フィルタモジュール(#B)220、第2フィルタモジュール(#C)230、第2フィルタモジュール(#D)240も、上述した第2フィルタモジュール(#A)210と同様の動作を、同時に並列して実行する。
次に、水平フィルタ処理部200の動作を、図8に示す本形態の2次元フィルタ演算装置のタイミング図に従って説明する。
クロック6において、垂直フィルタ出力として画素値「Y0」、すなわち、1/2画素行「H20〜H28」の各画素の画素値が垂直フィルタ処理部100から、バッファ500に送られている。
クロック7において、セレクタ250は、バッファ500に格納されている1/2画素行「H20〜H28」の各画素の画素値を次のように選択して、第2フィルタモジュール(#A)210〜(#D)240に送る。
すなわち、セレクタ250は、
画素値X0〜X5として、1/2画素H20〜H25の画素値を選択して第2フィルタモジュール(#A)210に送り、
画素値X0〜X5として、1/2画素H21〜H26の画素値を選択して第2フィルタモジュール(#B)220に送り、
画素値X0〜X5として、1/2画素H22〜H27の画素値を選択して第2フィルタモジュール(#C)230に送り、
画素値X0〜X5として、1/2画素H23〜H28の画素値を選択して第2フィルタモジュール(#D)240に送る。
第2フィルタモジュール(#A)210は、入力された画素値とフィルタ係数との積和演算を行い、画素値Z0を求め、フリップフロップ219に送る。
次のクロック8において、第2フィルタモジュール(#A)210は、画素値「Z0」を1/2画素Haの画素値として出力する。
同様に、クロック8において、第2フィルタモジュール(#B)220は、画素値「Z0」を1/2画素Hbの画素値として出力し、第2フィルタモジュール(#C)230は、画素値「Z0」を1/2画素Hcの画素値として出力し、第2フィルタモジュール(#D)240は、画素値「Z0」を1/2画素Hdの画素値として出力する。
このように、クロック8において、水平フィルタ出力「Z0」が求まり、第2フィルタモジュール(#A)210〜(#D)240から、1/2画素Ha、Hb、Hc、Hdの画素値がそれぞれ並列に出力される。
また、クロック8において、セレクタ250は、バッファ500に格納されている1/2画素行「H30〜H38」の各画素の画素値を選択して、第2フィルタモジュール(#A)210〜(#D)240に送る。
クロック9において、第2フィルタモジュール(#A)210〜(#D)240おいて、水平フィルタ出力「Z1」が求まり、1/2画素He、Hf、Hg、Hhの画素値がそれぞれ並列に出力される。
また、クロック9において、セレクタ250は、バッファ500に格納されている1/2画素行「H40〜H48」の各画素の画素値を選択して、第2フィルタモジュール(#A)210〜(#D)240に送る。
クロック10において、第2フィルタモジュール(#A)210〜(#D)240において、水平フィルタ出力「Z2」が求まり、1/2画素Hi、Hj、Hk、Hmの画素値がそれぞれ並列に出力される。
また、クロック10において、セレクタ250は、バッファ500に格納されている1/2画素行「H50〜H58」の各画素の画素値を選択して、第2フィルタモジュール(#A)210〜(#D)240に送る。
クロック11において、第2フィルタモジュール(#A)210〜(#D)240において、水平フィルタ出力「Z3」が求まり、1/2画素Hn、Hp、Hq、Hrの画素値がそれぞれ並列に出力される。
以上説明したように、本形態の2次元フィルタ演算装置では、垂直フィルタ処理部100と水平フィルタ処理部200とが、異なる並列処理方式を採用して、図8に示すタイミング図に従った2次元フィルタ演算を実行する。その結果、本形態の2次元フィルタ演算装置は、クロックの13周期で、整数画素F00〜F88を用いて、1/2画素Ha〜Hrを求めることができる。この処理サイクルは、従来の2次元フィルタ演算装置のそれに比べ、約10%以上改善されている。図8に示す記号「*」のところでは、次の画像領域Bに属する1/2画素Ha〜Hrの画素値生成のためのフィルタ演算を実行できる。したがって、本形態の2次元フィルタ演算装置は、実効的な処理サイクルをさらに改善できる。
本形態の2次元フィルタ演算装置では、垂直フィルタ処理部100は、並列処理方式として、ループ内パイプライン処理(すなわち、順次演算処理)を実行し(図6)、水平フィルタ処理部200は、並列処理方式として、ループ内並列処理(すなわち、並列演算処理)を実行している(図9)。
なお、本形態の2次元フィルタ演算装置は、左右対称の6タップフィルタを用いたが、タップフィルタは、本例に限定されるものではない。
例えば、水平フィルタ処理部200が、非対称の4タップフィルタを用いる場合は、水平フィルタ処理部200は、図9のブロック図において、類似の構成のまま、乗算器と加算器とフリップフロップをそれぞれ一つ追加すればよい。さらに、水平フィルタ処理部200は、非対称なタップフィルタ、または、6タップ以上のタップフィルタに対応するために、ループ内並列処理の並列度を増やすこともできる。また、垂直フィルタ処理部100も同様に、採用するフィルタの構造に従って、PE10〜PE40の構造を変えることができる。
なお、本形態の2次元フィルタ演算装置において、処理対象の画像データが準拠する規格が決まっている場合、垂直フィルタ処理部100と水平フィルタ処理部200とが備える乗算器を、シフタと加算器に置き換えてもよい。
また、垂直方向フィルタ演算の後にクリップ処理が必要な場合は、垂直フィルタ処理部100の第1フィルタモジュール(#0)110〜(#8)190において、PE10〜PE40の各出力端子にクリップ演算回路を挿入すればよい。
さらに、本形態の2次元フィルタ演算装置では、垂直フィルタ処理部100が、第1フィルタモジュール(#0)110〜第1フィルタモジュール(#8)190を用いて9重の並列処理を行ない、水平フィルタ処理部200が、第2フィルタモジュール(#A)210〜第2フィルタモジュール(#D)240を用いて4重の並列処理を行っている。しかし、垂直フィルタ処理部100と水平フィルタ処理部200が実行する並列処理の並列度は、使用目的に応じて、適宜変更して良い。たとえば、垂直フィルタ処理部100は、複数の第1フィルタモジュールを用い、水平フィルタ処理部200は、1つの第2フィルタモジュールを用いる構造でも良い。この場合でも、フィルタ処理方向の違いを吸収するためのバッファが不要で、使用目的にあった2次元フィルタ演算装置を実現できる。
以上述べたように、本形態の2次元フィルタ演算装置は、垂直方向フィルタ処理と水平方向フィルタ処理とを、互いに異なる並列処理方式(順次演算処理と並列演算処理)によって実行している。したがって、本形態の2次元フィルタ演算装置は、従来技術で必要とされたフィルタ処理方向の違いを吸収するためのバッファを用いることなく、垂直・水平方向のフィルタ処理を連続的に実行できる(本形態のバッファ500は、単にタイミング調整のために挿入されたものである)。その結果、本形態の2次元フィルタ演算装置は、2次元フィルタ演算を高速に実行することができ、さらに、その回路面積を縮小できる。
(実施の形態2)
図10は、本発明の実施の形態2における2次元フィルタ演算装置のブロック図である。本形態の2次元フィルタ演算装置は、画像メモリ300、ラインメモリ400、垂直フィルタ処理部640、水平フィルタ処理部650、第1セレクタ610、第2セレクタ620、及び、第3セレクタ630を備える。
本形態の2次元フィルタ演算装置は、2つの動作モードを有する。すなわち、第1動作モードの場合は、垂直方向フィルタ演算を先に実行し、水平方向フィルタ演算を次に実行する。第2動作モードの場合は、水平方向フィルタ演算を先に実行し、垂直方向フィルタ演算を次に実行する。すなわち、本形態の2次元フィルタ演算装置は、動作モードの切替えにより、垂直方向フィルタ演算と水平方向フィルタ演算の順序を任意に変更できる。これは、MPEG−4 ASP(Advanced Simple Profile)などのように、必ず水平方向から先にフィルタをかけるという制約をもつ規格にも柔軟に対応するためである。
先ず、第1動作モードについて説明する。第1動作モードでは、本形態の2次元フィルタ演算装置は、先に垂直方向フィルタ演算を実行する。第1セレクタ610は、ラインメモリ400の出力を選択し、第2セレクタ620は、垂直フィルタ処理部640の出力を選択し、第3セレクタ630は、水平フィルタ処理部650の出力を選択する。
垂直フィルタ処理部640と水平フィルタ処理部650は、それぞれ、本発明の実施の形態1で説明した、図6に示す垂直フィルタ処理部100と図9に示す水平フィルタ処理部200とを用いることができる。なお、バッファ500は、セレクタ250の一部として、水平フィルタ処理部650に含まれている。
この構成により、本形態の2次元フィルタ演算装置は、先ず垂直方向フィルタ演算を行い、図1に示した、1/2画素H20〜H58の画素値を求め、次に、水平方向フィルタ演算を行い、図3に示した1/2画素Ha〜Hrの画素値を求めることができる。本形態の2次元フィルタ演算装置の第1モードでの処理過程は、本発明の実施の形態1の2次元フィルタ演算装置における処理過程と同様であり、クロックの13周期で、整数画素F00〜F88を用いて、1/2画素Ha〜Hrを求めることができる。
次に、第2動作モードについて説明する。第2動作モードでは、本形態の2次元フィルタ演算装置は、先に水平方向フィルタ演算を実行する。第1セレクタ610は、水平フィルタ処理部650の出力を選択し、第2セレクタ620は、ラインメモリ400の出力を選択し、第3セレクタ630は、垂直フィルタ処理部640の出力を選択する。
図11は、本発明の実施の形態2における整数画素と1/2画素の配置図である。図11は、第2動作モードにおける画素値生成の手順を示す説明図である。図1に示す本発明の実施の形態1と同様に、本形態の2次元フィルタ演算装置は、実線の矩形で示される画像領域Aから、動きベクトル(1/2、1/2)に従って平行移動した、点線の矩形で示される画像領域Bを構成する1/2画素Ha〜Hr(符号は、図3を参照のこと)の画素値を生成する。
第2動作モードの場合、図11に示すように、水平方向フィルタ演算により、整数画素F00〜F88の画素値を用いて、1/2画素H02〜H85の画素値を生成し、次に、垂直方向フィルタ演算により、1/2画素H02〜H85の画素値を用いて、1/2画素Ha〜Hrの画素値を生成する。
図10の垂直フィルタ処理部640と水平フィルタ処理部650は、それぞれ、本発明の実施の形態1で説明した、図6に示す垂直フィルタ処理部100と図9に示す水平フィルタ処理部200とを用いることができる。なお、バッファ500は、なくても良く、セレクタ250が、ラインメモリ400から画素値を並列に入力できれば良い。また、図6のラインメモリ400は、なくてもよく、第1フィルタモジュール(#0)110〜(#8)190が、第1セレクタ610を介して、水平フィルタ処理部200が生成した画素値Z0〜Z3を、並列に入力できれば良い。
第2動作モードにおいて、水平フィルタ処理部200は、ラインメモリ400から、整数画素行「F00〜F08」の画素の画素値を読み出し、1/2画素H02〜H05の画素の画素値を生成する。続いて、水平フィルタ処理部200は、ラインメモリ400から、整数画素行「F10〜F18」の画素の画素値を読み出し、1/2画素H12〜H15の画素の画素値を生成する。以下同様に、水平フィルタ処理部200は、1/2画素の内、図11の小さい白丸の1/2画素の画素値を、1/2画素H82〜H85まで、各行ごとに4個の1/2画素の画素値を並列に生成する。
水平フィルタ処理部200が並列に生成した、1/2画素行「H02〜H05」「H12〜H15」・・・「H82〜H85」の各行の4個の画素の画素値は、垂直フィルタ処理部100の第1フィルタモジュール(#0)110〜(#3)130(図示せず)のそれぞれのPE10〜PE40に、並列に入力される。
垂直フィルタ処理部100の第1フィルタモジュール(#0)110は、図11に示す、1/2画素列「H02〜H82」の画素の画素値を用いて、1/2画素Ha、He、Hi、Hnの画素値を生成する。第1フィルタモジュール(#1)120は、1/2画素列「H03〜H83」の画素の画素値を用いて、1/2画素Hb、Hf、Hj、Hpの画素値を生成する。第1フィルタモジュール(#2)130(図示せず)は、1/2画素列「H04〜H84」の画素の画素値を用いて、1/2画素Hc、Hg、Hk、Hqの画素値を生成する。第1フィルタモジュール(#3)140(図示せず)は、1/2画素列「H05〜H85」の画素の画素値を用いて、1/2画素Hd、Hh、Hm、Hrの画素値を生成する。なお、第1フィルタモジュール(#4)(図示せず)〜第1フィルタモジュール(#8)190は、使用しない。
以上の処理により、画像領域Bを規定する1/2画素Ha〜Hrすべての画素値が求まる。
本形態の2次元フィルタ演算装置の第2動作モードにおける、処理の流れをタイミング図に従って、さらに詳しく説明する。
図12は、本発明の実施の形態2における2次元フィルタ演算装置(第2動作モード)のタイミング図である。図6、図9、図10、及び、図11を参照して、図12のタイミング図を説明する。
第2動作モードでは、ラインメモリ400から水平フィルタ処理部200のセレクタ250に画像データが入力され、水平フィルタ処理部200の出力が垂直フィルタ処理部100に入力される。
クロック0において、ラインメモリ400から水平フィルタ処理部200に画素値「Y0」(整数画素F00〜F08の画素値)が入力される。すなわち、セレクタ250を介して、第2フィルタモジュール(#A)210に整数画素F00〜F05の画素値が入力され、第2フィルタモジュール(#B)220に整数画素F01〜F06の画素値が入力され、第2フィルタモジュール(#C)230に整数画素F02〜F07の画素値が入力され、第2フィルタモジュール(#D)240に整数画素F03〜F08の画素値が入力される。各モジュール(#A〜#D)では、入力された画素値と、フリップフロップ260、フリップフロップ270、フリップフロップ280が出力する各フィルタ係数との積和演算(数式3)が実行される。
クロック1において、水平フィルタ処理部200は、水平方向フィルタ処理を行った画素値「Z0」を出力する。すなわち、第2フィルタモジュール(#A)210は、整数画素F00〜F05の画素値から生成された1/2画素H02の画素値を出力し、第2フィルタモジュール(#B)220は、整数画素F01〜F06の画素値から生成された1/2画素H03の画素値を出力し、第2フィルタモジュール(#C)230は、整数画素F02〜F07の画素値から生成された1/2画素H04の画素値を出力し、第2フィルタモジュール(#D)240は、整数画素F03〜F08の画素値から生成された1/2画素H05の画素値を出力する。
同時にクロック1において、ラインメモリ400から水平フィルタ処理部200に画素値「Y1」(整数画素F10〜F18の画素値)が入力される。すなわち、セレクタ250を介して、第2フィルタモジュール(#A)210に整数画素F10〜F15の画素値が入力され、第2フィルタモジュール(#B)220に整数画素F11〜F16の画素値が入力され、第2フィルタモジュール(#C)230に整数画素F12〜F17の画素値が入力され、第2フィルタモジュール(#D)240に整数画素F13〜F18の画素値が入力される。各モジュール(#A〜#D)では、入力された画素値と、フリップフロップ260、フリップフロップ270、フリップフロップ280が出力する各フィルタ係数との積和演算(数式3)が実行される。
クロック2において、水平フィルタ処理部200は、水平方向フィルタ処理を行った画素値「Z1」を出力する。すなわち、第2フィルタモジュール(#A)210は、1/2画素H12の画素値を出力し、第2フィルタモジュール(#B)220は、1/2画素H13の画素値を出力し、第2フィルタモジュール(#C)230は、1/2画素H14の画素値を出力し、第2フィルタモジュール(#D)240は、1/2画素H15の画素値を出力する。
同時にクロック2において、ラインメモリ400から水平フィルタ処理部200に画素値「Y3」(整数画素F20〜F28の画素値)が入力される。以下同様な処理が、クロック9まで、順次実行される。
一方、垂直フィルタ処理部100においては、クロック2において、垂直フィルタ処理部100のPE10の画素データ入力端子in0に、クロック1において、水平フィルタ処理部200から出力された画素値「Z0」が、画素値「X0」として入力され、係数入力端子91からPE10の係数入力端子inAに入力されたフィルタ係数「a」との積和演算が実行される。すなわち、第1フィルタモジュール(#0)110のPE10の画素データ入力端子in0に、1/2画素H02の画素値が入力され、第1フィルタモジュール(#1)120のPE10の画素データ入力端子in0に、1/2画素H03の画素値が入力され、第1フィルタモジュール(#2)(図示せず)のPE10の画素データ入力端子in0に、1/2画素H04の画素値が入力され、第1フィルタモジュール(#3)(図示せず)のPE10の画素データ入力端子in0に、1/2画素H05の画素値が入力される。なお、第1フィルタモジュール(#4)(図示せず)〜第1フィルタモジュール(#8)190は、使用しない。
クロック3において、水平フィルタ処理部200から出力された画素値「Z1」が、画素値「X1」としてPE10に入力され、係数入力端子91から入力されたフィルタ係数「b」との積和演算が実行される。同時に、水平フィルタ処理部200から出力された画素値「Z1」が、画素値「X1」としてPE20に入力され、PE10から入力されたフィルタ係数「a」との積和演算が実行される。すなわち、第1フィルタモジュール(#0)110のPE10の画素データ入力端子in0とPE20の画素データ入力端子in1に、1/2画素H12の画素値が入力され、第1フィルタモジュール(#1)120のPE10の画素データ入力端子in0とPE20の画素データ入力端子in1に、1/2画素H13の画素値が入力され、第1フィルタモジュール(#2)(図示せず)のPE10の画素データ入力端子in0とPE20の画素データ入力端子in1に、1/2画素H14の画素値が入力され、第1フィルタモジュール(#3)(図示せず)のPE10の画素データ入力端子in0とPE20の画素データ入力端子in1に、1/2画素H15の画素値が入力され、それぞれのPEにおいて積和演算が実行される。
以下、第1フィルタモジュール(#0)110〜第1フィルタモジュール(#3)(図示せず)のPE10〜PE40において、同様な積和演算を実行し、クロック8において、垂直フィルタ処理部100は、画素値「Y0」を出力する。すなわち、第1フィルタモジュール(#0)110は、1/2画素Haの画素値を出力し、第1フィルタモジュール(#1)120は、1/2画素Hbの画素値を出力し、第1フィルタモジュール(#2)(図示せず)は、1/2画素Hcの画素値を出力し、第1フィルタモジュール(#3)(図示せず)は、1/2画素Hdの画素値を出力する。
クロック9において、垂直フィルタ処理部100は、画素値「Y1」(1/2画素He〜Hhの画素値)を出力する。
クロック10において、垂直フィルタ処理部100は、画素値「Y2」(1/2画素Hi〜Hmの画素値)を出力する。
クロック11において、垂直フィルタ処理部100は、画素値「Y3」(1/2画素Hn〜Hrの画素値)を出力する。
以上説明したように、本形態の2次元フィルタ演算装置は、先ず水平方向フィルタ処理、次に垂直方向フィルタ処理の順に、図12に示すタイミング図に従った2次元フィルタ演算を実行する。その結果、本形態の2次元フィルタ演算装置は、第2動作モードにおいても、クロックの13周期で、整数画素F00〜F88を用いて、1/2画素Ha〜Hrを求めることができる。この処理サイクルは、第1動作モードにおける処理サイクルと等しい。したがって、本形態の2次元フィルタ演算装置は、第1動作モードにおいても、第2動作モードにおいても、従来の2次元フィルタ演算装置に比べ、約10%以上改善された処理速度で、2次元フィルタ処理を実行できる。
本形態の2次元フィルタ演算装置は、第1動作モードでは、垂直方向フィルタ演算を先に実行し、水平方向フィルタ演算を次に実行して2次元フィルタ演算を完遂し、第2動作モードでは、水平方向フィルタ演算を先に実行し、垂直方向フィルタ演算を次に実行して2次元フィルタ演算を完遂する。したがって、本形態の2次元フィルタ演算装置によれば、処理する画像データが準拠する規格に従って動作モードを選択することにより、水平方向フィルタ演算と垂直方向フィルタ演算の順序を容易に変更できる。
(実施の形態3)
図13は、本発明の実施の形態3における半導体集積回路のブロック図である。
本形態の半導体集積回路700は、2次元フィルタ演算部710、CPU720、符号化/復号部730、メモリ740、及び、機能回路部750を備え、2次元フィルタ演算部710は、垂直フィルタ処理部711と水平フィルタ処理部712を有する。
本形態の2次元フィルタ演算部710は、本発明の実施の形態1で説明した、図4に示す2次元フィルタ演算装置に相当する。すなわち、本形態の垂直フィルタ処理部711は、図4の垂直フィルタ処理部100とラインメモリ400を含んでいる。本形態の水平フィルタ処理部712は、図4の水平フィルタ処理部200とバッファ500を含んでいる。
2次元フィルタ演算部710は、被フィルタ画像データに対して、2次元のフィルタ処理を行い、新しい画素の画素値を生成する。
符号化/復号部730は、動画像を可変長符号化し、符号化画像データを出力する。また、符号化/復号部730は、符号化画像データを可変長復号し、復号画像を出力する。
符号化/復号部730は、動画像の符号化における、動き補償予測による予測画像の生成や、符号化画像データの復号における、動きベクトルに基づく動き補償画像の生成において、2次元フィルタ演算部710を用いて2次元フィルタ処理を行い、予測画像や動き補償画像の画素を補間する。
メモリ740は、画像メモリ300に相当し、画像データを格納する。
機能回路部750は、2次元フィルタ演算部710と符号化/復号部730の機能以外の機能を有するその他の回路部である。
本形態の2次元フィルタ演算部710における2次元フィルタ処理は、本発明の実施の形態1の2次元フィルタ演算装置による処理と同じであり、メモリ740に格納されている被フィルタ画像データに対して、垂直方向フィルタ処理を行い、次に、水平方向フィルタ処理(あるいは、その逆の順序のフィルタ処理)を行い、動き補償予測した画像データを生成する。2次元フィルタ演算部710の動作の詳細は、本発明の実施の形態1の2次元フィルタ演算装置と同じであるから、その説明を省略する。
CPU720は、符号化/復号部730が行う符号化/復号処理と機能回路部750が行う処理以外の処理を行う。同時に、CPU720は、半導体集積回路700全体の制御を行う。
本形態の半導体集積回路700は、2次元フィルタ演算部710が、2次元フィルタ演算処理のフィルタ処理方向の違いを吸収するためのバッファを必要としないため、従来よりも小さい回路面積で実現でき、消費電力も低く抑えることができる。
なお、本形態の半導体集積回路700では、符号化/復号部730が符号化/復号処理を行うとしたが、CPU720が、符号化/復号処理をソフトウェアによって処理しても良い。その場合には、符号化/復号部730を半導体集積回路700から割愛できる。
なお、本形態の半導体集積回路700は、メモリ740を内部に備えているが、半導体集積回路700は、外部に別個に設けられたメモリを利用しても良い。その場合には、メモリ740を半導体集積回路700から割愛できる。
本形態の半導体集積回路700は、例えば、携帯電話、DVDレコーダ、HDDレコーダ、テレビ受像機など、動画像データを扱う電子機器に好適に応用できる。
(実施の形態4)
図14は、本発明の実施の形態4における半導体集積回路のブロック図である。図14において、図13と同様な構成要素については、同一の符号を付すことにより、説明を省略する。
図14に示す本形態の半導体集積回路800は、本発明の実施の形態3の図13に示す半導体集積回路700と、大略同じ構成であるが、2次元フィルタ演算部810が異なる。すなわち、本形態の2次元フィルタ演算部810は、再構成フィルタ処理部811と構成情報レジスタ812を有する。
再構成フィルタ処理部811は、再構成ロジックで構成されていて、構成情報レジスタ812に格納されている構成情報に従って、本発明の実施の形態2の図10に示す2次元フィルタ演算装置に相当する2次元フィルタ回路を動的に再構成できる。
構成情報レジスタ812に格納されている構成情報は、少なくとも2つの構成情報、すなわち、第1構成情報と第2構成情報を有する。
2次元フィルタ演算部810は、2つの動作モード、すなわち、第1動作モードと第2動作モードを有する。
第1動作モードが選択された場合は、再構成フィルタ処理部811は、構成情報レジスタ812に格納されている第1構成情報に従って再構成され、メモリ740に格納されている被フィルタ画像データに対して、垂直方向フィルタ演算を先に実行し、水平方向フィルタ演算を次に実行するようになる。この結果、再構成フィルタ処理部811は、第1動作モードにおいては、本発明の実施の形態2における2次元フィルタ演算装置の第1動作モードにおける機能と同じ機能を発揮できる。
第2動作モードが選択された場合は、再構成フィルタ処理部811は、構成情報レジスタ812に格納されている第2構成情報に従って再構成され、メモリ740に格納されている被フィルタ画像データに対して、水平方向フィルタ演算を先に実行し、垂直方向フィルタ演算を次に実行するようになる。この結果、再構成フィルタ処理部811は、第2動作モードにおいては、本発明の実施の形態2における2次元フィルタ演算装置の第2動作モードにおける機能と同じ機能を発揮できる。
符号化/復号部730は、動画像の符号化における、動き補償予測による予測画像の生成や、符号化画像データの復号における、動きベクトルに基づく動き補償画像の生成において、2次元フィルタ演算部810を用いて2次元フィルタ処理を行い、予測画像や動き補償画像の画素を補間する。
CPU720は、符号化/復号部730が行う符号化/復号処理と機能回路部750が行う処理以外の処理を行う。同時に、CPU720は、半導体集積回路800全体の制御を行う。
本形態の半導体集積回路800は、2次元フィルタ演算部810が、2次元フィルタ演算処理のフィルタ処理方向の違いを吸収するためのバッファを必要としないため、従来よりも小さい回路面積で実現できる。また、本形態の半導体集積回路800は、処理する画像データが準拠する規格に従って動作モードを選択することにより、水平方向フィルタ処理と垂直方向フィルタ処理の順序を動的に簡単に変更できる。
なお、構成情報レジスタ812に格納されている構成情報は、第1構成情報と第2構成情報以外の構成情報を有していても良い。その場合には、6タップ以外のタップ数を有するタップフィルタによる2次元フィルタ演算、あるいは、非対称フィルタ係数を有するフィルタによる2次元フィルタ演算などが実現できる。
なお、本形態の半導体集積回路800では、符号化/復号部730が符号化/復号処理を行うとしたが、CPU720が、符号化/復号処理をソフトウェアによって処理しても良い。その場合には、符号化/復号部730を半導体集積回路800から割愛できる。
なお、本形態の半導体集積回路800は、メモリ740を内部に備えていているが、半導体集積回路800は、外部に別個に設けられたメモリを利用しても良い。その場合には、メモリ740を半導体集積回路800から割愛できる。
本形態の半導体集積回路800は、例えば、携帯電話、DVDレコーダ、HDDレコーダ、テレビ受像機など、動画像データを扱う電子機器に好適に応用できる。
(実施の形態5)
図15は、本発明の実施の形態5における携帯電話システム900のブロック図である。
本形態の携帯電話システム900は、主要な構成要素として、アンテナ901、RF回路902、ベースバンドLSI905、カメラ909、アプリケーションLSI910、メモリ911、LCDコントローラ913、メインLCD914、及び、サブLCD915を備える。
本形態の携帯電話システム900の動作を以下に概説する。
RF回路902は、外部の相手先携帯電話と通信を行い、画像データをビットストリームとして、送信したり、受信したりする。また、RF回路902は、インターネットから画像データを受信する。
ベースバンドLSI905は、主として通信処理を行う。
アプリケーションLSI910は、画像データの処理を行う。アプリケーションLSI910には、本発明の実施の形態3の半導体集積回路700、または、実施の形態4の半導体集積回路800を、好適に用いることができる。また、アプリケーションLSI910は、被フィルタ画像データを格納するメモリ911を外部に備えているので、アプリケーションLSI910に用いる半導体集積回路700、または、半導体集積回路800は、被フィルタ画像データを格納するメモリをそれらの内部に備えていないものでよい。
メインLCD914は、LCDコントローラ913の制御の下、アプリケーションLSI910が処理した画像データと文字データなどを表示する。サブLCD915は、LCDコントローラ913の制御の下、主として文字データを表示する。
本形態の携帯電話システム900では、アンテナ901経由でRF回路902が外部の相手先携帯電話から受信した画像データ、あるいは、インターネットから受信した画像データは、ベースバンドLSI905で一旦処理された後、アプリケーションLSI910で復号され、復号された復号画像が、メインLCD914に表示される。また、カメラ909で撮影された画像は、アプリケーションLSI910で処理され、メインLCD914に表示されるとともに、アプリケーションLSI910で符号化され、符号化画像データが生成される。この符号化画像データは、ベースバンドLSI905で通信処理された後、RF回路902から、アンテナ901経由で相手先携帯電話に送信される。
本形態のアプリケーションLSI910は、本発明の実施の形態3の半導体集積回路700、または、実施の形態4の半導体集積回路800を用いているので、受信画像データの復号処理における動き補償の2次元フィルタ処理、あるいは、カメラで撮影した画像の符号化処理における動き予測の2次元フィルタ処理を、効率よく実行できる。また、受信画像データの規格に従って、2次元フィルタ処理のフィルタ処理方向の順序を簡単に切替えることができる。さらに、本形態のアプリケーションLSI910は、従来よりも小さい回路面積で実現できる。この結果、本形態の携帯電話システム900は、小型で、柔軟な機能を有する装置として、好適に実現できる。
以上、本発明の実施の形態3の半導体集積回路700、または、実施の形態4の半導体集積回路800を用いる電子機器の応用例として、携帯電話システム900を取り上げたが、半導体集積回路700または半導体集積回路800を用いる電子機器には、携帯電話システム900の他に、例えば、携帯情報端末(PDA)、DVDレコーダ、HDDレコ−ダ、テレビ受像機、カーナビゲーションシステム、動画像処理機能つきパソコンなどがある。これらの電子機器においても、本発明の2次元フィルタ演算部を搭載した半導体集積回路700または半導体集積回路800を利用することにより、画像データ処理を効率的に実行できる。
本発明に係わる2次元フィルタ演算装置は、例えば、動画像処理装置等、画像圧縮伸張処理、ループ内フィルタ処理、走査線変換処理、あるいは、画像平滑化処理を必要とする分野とその応用分野において利用できる。
本発明の実施の形態1における整数画素と1/2画素の配置図である。 本発明の実施の形態1における1/2画素の配置図である。 本発明の実施の形態1における1/2画素の別の配置図である。 本発明の実施の形態1における2次元フィルタ演算装置のブロック図である。 本発明の実施の形態1における2次元フィルタ演算方法のフローチャートである。 本発明の実施の形態1における垂直フィルタ処理部のブロック図である。 本発明の実施の形態1におけるプロセッサエレメントのブロック図である。 本発明の実施の形態1における2次元フィルタ演算装置のタイミング図である。 本発明の実施の形態1における水平フィルタ処理部のブロック図である。 本発明の実施の形態2における2次元フィルタ演算装置のブロック図である。 本発明の実施の形態2における整数画素と1/2画素の配置図である。 本発明の実施の形態2における2次元フィルタ演算装置(第2動作モード)のタイミング図である。 本発明の実施の形態3における半導体集積回路のブロック図である。 本発明の実施の形態4における半導体集積回路のブロック図である。 本発明の実施の形態5における電子機器のブロック図である。 従来の2次元フィルタのブロック図である。
符号の説明
1、300 画像メモリ
2a、2e、400 ラインメモリ
3、100、711 垂直フィルタ処理部
4、200、712 水平フィルタ処理部
5、6 レジスタ
10、20、30、40 プロセッサエレメント
11、214、215、216 乗算器
12、211、212、213、217、218 加算器
13、14、219、260、270、280 フリップフロップ
15、91 係数入力端子
16 係数出力端子
17 画素データ入力端子
18 画素データ出力端子
50、250 セレクタ
110 第1フィルタモジュール(#0)
120 第1フィルタモジュール(#1)
190 第1フィルタモジュール(#8)
210 第2フィルタモジュール(#A)
220 第2フィルタモジュール(#B)
230 第2フィルタモジュール(#C)
240 第2フィルタモジュール(#D)
500 バッファ
610 第1セレクタ
620 第2セレクタ
630 第3セレクタ
640 垂直フィルタ処理部
650 水平フィルタ処理部
700、800 半導体集積回路
710、810 2次元フィルタ演算部
720 CPU
730 符号化/復号部
740、908、911 メモリ
750 機能回路部
811 再構成フィルタ処理部
812 構成情報レジスタ
900 携帯電話システム
901 アンテナ
902 RF回路
903 スピーカ
904 マイク
905 ベースバンドLSI
906 キー
907 USB
909 カメラ
910 アプリケーションLSI
912 SDカード
913 LCDコントローラ
914 メインLCD
915 サブLCD

Claims (9)

  1. 被フィルタ画像データを格納する記憶部と、
    前記記憶部に格納されている被フィルタ画像データに対して、第1のフィルタ演算を実行する第1フィルタ処理部と、
    前記第1フィルタ処理部がフィルタ処理した画像データに対して、第2のフィルタ演算を実行する第2フィルタ処理部とを備え、
    前記第1フィルタ処理部と前記第2フィルタ処理部とは、垂直方向フィルタ演算と水平方向フィルタ演算の内の互いに異なるフィルタ演算を実行し、
    前記垂直方向フィルタ演算と前記水平方向フィルタ演算とは、互いに異なる並列処理によって実行され
    前記第1フィルタ処理部は、複数の第1フィルタモジュールを有し、
    前記第2フィルタ処理部は、少なくとも1つの第2フィルタモジュールを有し、
    前記複数の第1フィルタモジュールは、前記被フィルタ画像データに対して前記第1のフィルタ演算をそれぞれ実行し、前記第1フィルタ処理部は、複数の第1フィルタ結果を出力し、
    前記少なくとも1つの第2フィルタモジュールは、前記複数の第1フィルタ結果の内の少なくとも一部を入力して、前記第2のフィルタ演算を実行し、前記第2フィルタ処理部は、少なくとも1つの第2フィルタ結果を出力し、
    前記複数の第1フィルタモジュールのそれぞれは、
    初段の累積加算部と少なくとも1つの後段の累積加算部が縦続接続された複数の累積加算部と、
    前記複数の累積加算部のそれぞれの出力を順次選択して、出力する選択部とを有し、
    前記初段の累積加算部には、所定のフィルタ係数が、1処理時間ごとに順次入力され、
    前記少なくとも1つの後段の累積加算部には、それぞれの前段の累積加算部から、前記所定のフィルタ係数が、1処理時間ごとに順次転送され、
    前記複数の累積加算部のそれぞれには、前記被フィルタ画像データの垂直または水平に並んだ画素の画素値が、前記記憶部から1処理時間ごとに順次入力され、
    前記複数の累積加算部は、それぞれ、1処理時間ごとに前記画素値と前記所定のフィルタ係数との積和演算を行って、前記複数の第1フィルタ結果を出力する2次元フィルタ演算装置。
  2. 前記並列処理は、被フィルタ画像データに対して、並列に実行される順次演算処理と並列に実行される並列演算処理とを含む、請求項1記載の2次元フィルタ演算装置。
  3. 前記第1フィルタ処理部は、前記複数の第1フィルタモジュールを用いて、前記第1のフィルタ演算を並列に実行し、
    前記第2フィルタ処理部が複数の第2フィルタモジュールを有する場合は、前記第2フィルタ処理部は、前記複数の第2フィルタモジュールを用いて、前記第2のフィルタ演算を並列に実行する、請求項記載の2次元フィルタ演算装置。
  4. 前記少なくとも1つの第2フィルタモジュールは、
    複数の加算部と、
    複数の積算部とを有し、
    前記複数の第1フィルタ結果の内の少なくとも一部と、所定の複数のフィルタ係数との積和演算を行い、前記少なくとも1つの第2フィルタ結果を出力する、請求項記載の2次元フィルタ演算装置。
  5. 前記複数の第1フィルタモジュールは、ループ内パイプライン処理方式とループ内並列処理方式の内の一方の処理方式に従って、前記第1のフィルタ演算を実行し、
    前記少なくとも1つの第2フィルタモジュールは、前記ループ内パイプライン処理方式と前記ループ内並列処理方式の内、前記複数の第1フィルタモジュールが従っていない方の処理方式に従って、前記第2のフィルタ演算を実行する、請求項記載の2次元フィルタ演算装置。
  6. 前記記憶部から1ライン分の画素の画素値を取得して一時的に格納し、前記第1フィルタ処理部に出力する、ラインメモリをさらに備える、請求項1記載の2次元フィルタ演算装置。
  7. 被フィルタ画像データを格納する格納ステップと、
    格納されている被フィルタ画像データに対して、第1のフィルタ演算を実行する第1フィルタ処理ステップと、
    前記第1フィルタ処理ステップでフィルタ処理した画像データに対して、第2のフィルタ演算を実行する第2フィルタ処理ステップとを備え、
    前記第1フィルタ処理ステップと前記第2フィルタ処理ステップ部とでは、垂直方向フィルタ演算と水平方向フィルタ演算の内の互いに異なるフィルタ演算を実行し、
    前記垂直方向フィルタ演算と前記水平方向フィルタ演算とは、互いに異なる並列処理によって実行され、
    前記第1フィルタ処理ステップでは、複数の第1フィルタモジュールが使用され、
    前記第2フィルタ処理ステップでは、少なくとも1つの第2フィルタモジュールが使用され、
    前記複数の第1フィルタモジュールは、前記被フィルタ画像データに対して前記第1のフィルタ演算をそれぞれ実行し、前記第1フィルタ処理ステップでは、複数の第1フィルタ結果を出力し、
    前記少なくとも1つの第2フィルタモジュールは、前記複数の第1フィルタ結果の内の少なくとも一部を入力して、前記第2のフィルタ演算を実行し、前記第2フィルタ処理ステップでは、少なくとも1つの第2フィルタ結果を出力し、
    前記複数の第1フィルタモジュールのそれぞれは、
    初段の累積加算部と少なくとも1つの後段の累積加算部が縦続接続された複数の累積加算部と、
    前記複数の累積加算部のそれぞれの出力を順次選択して、出力する選択部とを使用し、
    前記初段の累積加算部には、所定のフィルタ係数が、1処理時間ごとに順次入力され、
    前記少なくとも1つの後段の累積加算部には、それぞれの前段の累積加算部から、前記所定のフィルタ係数が、1処理時間ごとに順次転送され、
    前記複数の累積加算部のそれぞれには、前記被フィルタ画像データの垂直または水平に並んだ画素の画素値が、前記記憶部から1処理時間ごとに順次入力され、
    前記複数の累積加算部は、それぞれ、1処理時間ごとに前記画素値と前記所定のフィルタ係数との積和演算を行って、前記複数の第1フィルタ結果を出力する2次元フィルタ演算方法。
  8. 前記並列処理は、被フィルタ画像データに対して、並列に実行される順次演算処理と並列に実行される並列演算処理とを含む、請求項記載の2次元フィルタ演算方法。
  9. 前記垂直方向フィルタ演算と前記水平方向フィルタ演算の処理順序を、前記被フィルタ画像データが準拠する動画像符号化規格に従って変更する、請求項記載の2次元フィルタ演算方法。
JP2007551015A 2005-12-19 2006-11-21 2次元フィルタ演算装置及び方法 Expired - Fee Related JP4824703B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007551015A JP4824703B2 (ja) 2005-12-19 2006-11-21 2次元フィルタ演算装置及び方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2005364373 2005-12-19
JP2005364373 2005-12-19
JP2007551015A JP4824703B2 (ja) 2005-12-19 2006-11-21 2次元フィルタ演算装置及び方法
PCT/JP2006/323214 WO2007072644A1 (ja) 2005-12-19 2006-11-21 2次元フィルタ演算装置及び方法

Publications (2)

Publication Number Publication Date
JPWO2007072644A1 JPWO2007072644A1 (ja) 2009-05-28
JP4824703B2 true JP4824703B2 (ja) 2011-11-30

Family

ID=38188427

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007551015A Expired - Fee Related JP4824703B2 (ja) 2005-12-19 2006-11-21 2次元フィルタ演算装置及び方法

Country Status (3)

Country Link
US (1) US8260075B2 (ja)
JP (1) JP4824703B2 (ja)
WO (1) WO2007072644A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011121716A1 (ja) * 2010-03-30 2011-10-06 株式会社 東芝 動画像符号化方法、復号化方法、符号化装置および復号化装置
US9172972B2 (en) * 2011-01-05 2015-10-27 Qualcomm Incorporated Low complexity interpolation filtering with adaptive tap size
CN103098371B (zh) 2011-09-02 2016-04-13 松下知识产权经营株式会社 对称型滤波运算装置以及对称型滤波运算方法
US9077313B2 (en) * 2011-10-14 2015-07-07 Vivante Corporation Low power and low memory single-pass multi-dimensional digital filtering
WO2013145221A1 (ja) * 2012-03-29 2013-10-03 富士通株式会社 パイプライン型プロセッサ
JP6649750B2 (ja) * 2015-11-16 2020-02-19 キヤノン株式会社 画像処理装置、画像処理方法
US11170481B2 (en) * 2018-08-14 2021-11-09 Etron Technology, Inc. Digital filter for filtering signals
CN109767408B (zh) * 2018-12-29 2021-11-12 广州方硅信息技术有限公司 图像处理方法、装置、存储介质及计算机设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10304184A (ja) * 1997-05-02 1998-11-13 Fuji Xerox Co Ltd 画像処理装置および画像処理方法
JP2002197454A (ja) * 2000-12-27 2002-07-12 Sony Corp 画像変換装置及び方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4602285A (en) * 1983-04-08 1986-07-22 Ampex Corporation System and method for transforming and filtering a video image
JPH04347969A (ja) * 1991-05-24 1992-12-03 Victor Co Of Japan Ltd 画素密度変換装置
JP3066199B2 (ja) * 1992-10-09 2000-07-17 浩詔 寺田 2次元ディジタルフィルタ
EP0644684B1 (en) * 1993-09-17 2000-02-02 Eastman Kodak Company Digital resampling integrated circuit for fast image resizing applications
JP2002304624A (ja) 2001-04-05 2002-10-18 Canon Inc フィルタ処理装置及び撮像装置
US7127121B1 (en) * 2002-03-20 2006-10-24 Ess Technology, Inc. Efficient implementation of a noise removal filter

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10304184A (ja) * 1997-05-02 1998-11-13 Fuji Xerox Co Ltd 画像処理装置および画像処理方法
JP2002197454A (ja) * 2000-12-27 2002-07-12 Sony Corp 画像変換装置及び方法

Also Published As

Publication number Publication date
US8260075B2 (en) 2012-09-04
JPWO2007072644A1 (ja) 2009-05-28
US20100046851A1 (en) 2010-02-25
WO2007072644A1 (ja) 2007-06-28

Similar Documents

Publication Publication Date Title
JP4824703B2 (ja) 2次元フィルタ演算装置及び方法
JP2007174634A (ja) 階層符号化装置、階層復号化装置、階層符号化方法、階層復号方法、階層符号化プログラム及び階層復号プログラム
US8259808B2 (en) Low complexity video decoder
JP2003319398A (ja) 動画像の符号化方法および復号化方法、これを用いた装置とプログラム
JP2007060673A (ja) 画像予測装置、画像符号化装置、画像復号化装置、画像予測方法、画像符号化方法、画像復号化方法、記録媒体及びプログラム
JP6409516B2 (ja) ピクチャ符号化プログラム、ピクチャ符号化方法及びピクチャ符号化装置
US7965767B2 (en) Two-dimensional filtering architecture
JP2007174283A (ja) 映像信号階層復号化装置、映像信号階層復号化方法、及び映像信号階層復号化プログラム
US9100650B2 (en) Video encoding method, decoding method, and apparatus
US20070071103A1 (en) Apparatus for digital video format down-conversion with arbitrary conversion ratio and method therefor
WO2008072500A1 (ja) 動画像符号化装置および動画像復号装置
JP2009159287A (ja) 半導体装置および信号処理方法
JP4844456B2 (ja) 映像信号階層符号化装置、映像信号階層符号化方法、及び映像信号階層符号化プログラム
JP2008022530A (ja) 映像信号階層復号化装置、映像信号階層復号化方法、及び映像信号階層復号化プログラム
KR20050084396A (ko) 공간 스케일 능력를 갖는 디지털 필터
JP2002058026A (ja) 画像符号化装置及び方法並びに画像復号装置及び方法
JP2006340211A (ja) 動き補償予測装置
JP4565393B2 (ja) 映像信号階層符号化装置、映像信号階層符号化方法、及び映像信号階層符号化プログラム
US6724822B1 (en) Efficient motion compensation apparatus for digital video format down-conversion using generalized orthogonal transformation
WO2001082630A1 (en) Pixel calculating device
JP5522736B2 (ja) 画像超解像装置およびそのプログラム
JP2008532335A (ja) 画像内挿方法及び画素内挿装置
JP2013093668A (ja) 動画像符号化装置、動画像復号装置、動画像符号化方法、動画像復号方法、動画像符号化プログラムおよび動画像復号プログラム
JP2009141445A (ja) サンプリングレート変換装置、およびサンプリングレート変換方法
JP2009278473A (ja) 画像処理装置、それを搭載した撮像装置、および画像再生装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110518

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110715

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110818

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110908

R150 Certificate of patent or registration of utility model

Ref document number: 4824703

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140916

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees