(57)【要約】【課題】係数並べ替えの手間を軽減でき、処理の高速化を実現可能な画像処理装置およびその方法、並びにプログラムを提供する。【解決手段】画像処理装置１００は、量子化され符号化された変換係数を復号し、一次元係数列を出力する復号部１１１と、復号部１１１から出力される変換係数を、一次元係数列から二次元係数列への係数走査を行う係数走査部１１２と、係数走査部１１２で得られる変換係数を逆量子化する逆量子化部１１４と、逆量子化された係数データに対して一次元係数列から二次元係数列への変換処理が可能な変換処理部１１５と、を有する。【選択図】図２
2009170992.tif 000002
【特許請求の範囲】
【請求項１】
入力画像信号をブロック化し、当該ブロック単位で量子化された画像情報を逆量子化し、逆変換処理を施して復号する画像処理装置であって、
量子化され符号化された変換係数を復号し、一次元係数列を出力する復号部と、
上記復号部から出力される変換係数を、一次元係数列から二次元係数列への係数走査を行う係数走査部と、
上記係数走査部で得られる上記変換係数を逆量子化する逆量子化部と、
逆量子化された係数データに対して一次元係数列から二次元係数列への変換処理が可能な変換処理部と、
を有する画像処理装置。
【請求項２】
上記係数走査部は、
複数要素を並列計算する命令セットを有する演算器の内部メモリに係数をロードする段階で、上記変換処理部に直接入力可能な形式である二次元配列に予め並べなおしておく機能を有する
請求項１記載の画像処理装置。
【請求項３】
上記係数走査部は、
上記復号部で可変長復号されて出力された非ゼロのＤＣＴ係数値に対し、ジグザグスキャンテーブルおよびＲＵＮ情報を用い、一次元の係数列から上記変換処理部の入力列となる二次元係数列の周波数配列に変換するためのアドレス生成を行う
請求項２記載の画像処理装置。
【請求項４】
上記復号部から上記変換処理部までの一連の復号プロセスにおいて、ゼロ係数を含む二次元データに対して、少なくとも逆量子化（ＩＱ）処理の前処理としてゼロ係数マスクを行う
請求項３記載の画像処理装置。
【請求項５】
上記ＩＱ処理に係るゼロ係数マスクは、ＩＱ演算を行う際に、複数要素を並列計算する上記演算器の演算対象要素が全てゼロだった場合、ＩＱ処理をマスクする
請求項４記載の画像処理装置。
【請求項６】
上記演算器は、
上記ＩＱ処理の有効無効判定は、演算対象の複数要素に対して適用されるハードウェア（Ｈ／Ｗ）専用命令として実装されている
請求項５記載の画像処理装置。
【請求項７】
上記演算器は、
上記ＩＱ処理の有効無効判定に従って、ＩＱ演算に有効な係数群に対応する量子化テーブルのみロードする
請求項６記載の画像処理装置。
【請求項８】
上記係数走査部の後段で上記変換処理部より前段に、ＡＣ／ＤＣ予測を行うＡＣ／ＤＣ予測部を有し、
上記演算器は、
上記ＩＱ処理の有効無効判定に従って、ＡＣ／ＤＣ予測時の対象係数群が全てゼロだった場合は、ＡＣ／ＤＣ予測時、そのまま隣接ブロックから所定の画素値をムーブしてくる
請求項６記載の画像処理装置。
【請求項９】
上記演算器は、
上記復号部の出力である一次元の係数列を、対象となる上記内部メモリに直接ロードし、二次元係数列への係数走査を内部メモリ間ムーブ（ｍｖ）命令によって実行する
請求項２記載の画像処理装置。
【請求項１０】
上記演算器は、
上記係数走査部の係数走査処理を上記復号部の出力段で行う第１の処理と、上記変換処理部の入力段で行う第２の処理を選択的に切り替え可能な機能を有する
請求項２記載の画像処理装置。
【請求項１１】
上記演算器は、
上記一次元係数列を出力とする復号部から出力される係数が、予め設定した閾値を超えた個数の係数を出力したら、係数走査処理を上記第２の処理から上記第１の処理に切り替える
請求項１０記載の画像処理装置。
【請求項１２】
上記演算器は、
採用する処理が第１の処理か第２の処理に決定するまでは上記復号部から得た値を加工せずに当該演算器の内部メモリに保持しておく
請求項１１記載の画像処理装置。
【請求項１３】
入力画像信号をブロック化し、当該ブロック単位で量子化された画像情報を逆量子化し、逆変換処理を施して復号する画像処理方法であって、
量子化され符号化された変換係数を復号し、一次元係数列を得る復号ステップと、
上記復号ステップで得られた変換係数を、一次元係数列から二次元係数列への係数走査を行う係数走査ステップと、
上記係数走査ステップで得られる上記変換係数を逆量子化する逆量子化ステップと、
逆量子化された係数データに対して一次元係数列から二次元係数列への変換処理を行う変換処理ステップと、
を有する画像処理方法。
【請求項１４】
入力画像信号をブロック化し、当該ブロック単位で量子化された画像情報を逆量子化し、逆変換処理を施して復号する画像処理であって、
量子化され符号化された変換係数を復号し、一次元係数列を得る復号処理と、
上記復号ステップで得られた変換係数を、一次元係数列から二次元係数列への係数走査を行う係数走査処理と、
上記係数走査ステップで得られる上記変換係数を逆量子化する逆量子化処理と、
逆量子化された係数データに対して一次元係数列から二次元係数列への変換処理を行う変換処理と、を含む
画像処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル画像を処理する画像処理装置およびその方法、並びにプログラムに関するものである。
【背景技術】
【０００２】
近年、画像情報をデジタル化して取り扱い、その際、効率の高い情報の伝達および蓄積を目的とし、画像情報特有の冗長性を利用して、離散コサイン変換（Discrete Cosine Transform：ＤＣＴ）等の直交変換と動き補償とにより圧縮するＭＥＰＧ（Moving Picture Experts Group）などの方式に準拠した装置が、放送局などの情報配信および一般家庭における情報受信の双方において普及している。
特に、ＭＰＥＧ２（ISO/IEC 13818−2）は、汎用画像符号化方式として定義されており、飛び越し走査画像および順次走査画像の双方、並びに標準解像度画像および高精細画像を網羅する標準で、プロフェッショナル用途およびコンシューマ用途の広範なアプリケーションに現在広く用いられている。
【０００３】
図１は、代表的なＭＰＥＧコーデック（Ｃｏｄｅｃ）復号器の機能ブロック図である。
【０００４】
図１に示す代表的なＭｐｅｇＣｏｄｅｃ復号器１は、ＩＤＣＴ（逆離散コサイン変換）と動き補償付き予測とを組み合わせた構成になっている。そして、復号器１は、ＩＤＣＴ処理部２、動き補償付き予測部３、加算部４、およびフレームバッファ５を有する。
【０００５】
ＩＤＣＴ処理部２は、可変長復号部２１、ＡＣ／ＤＣ予測部２２、逆量子化部（ＩＱ）部２３、係数走査（ＺｉｇＺａｇ−Ｓｃａｎ／Ａｌｔｅｒｎａｔｉｖｅ  Ｓｃａｎ）部２４、およびＩＤＣＴ部２５により構成される。
また、動き補償付き予測部３は、動きベクトル復号部３１、動きベクトル予測部３２、および動き補償部３３により構成される。
そして、最終的にＩＤＣＴ処理部２の出力と動き補償付き予測部３との出力を加算部４で足し合わせることにより、画素データを生成する。
【０００６】
図示しない符号化器の可変長符号化部において、量子化された一次元の係数列に並び替えて可変長符号化し冗長分を削減する。
具体的には、可変長符号化部で一次元配列として係数を配置した際に、ゼロの個数を表すラン（ＲＵＮ）情報と係数値の大きさをしめすレベル（ＬＥＶＥＬ）情報の組み合わせに対してランレングスデータを生成する。
このＲＵＮ情報と係数値の組み合わせに対して符号長の異なる符号語を割り当てることにより可変長符号化し、データの容量を削減する。
よって、復号器１の可変長復号部２１は復号したＲＵＮ情報値の個数分のゼロ係数を生成し、非ゼロ係数についてはレベル（ＬＥＶＥＬ）の値を係数値として復号化係数列を生成する。
【０００７】
復号化されるＤＣＴ係数は８ｘ８単位でまとめて可変長復号された後、ＡＣ／ＤＣ予測部２２でＡＣ／ＤＣ予測適用後、逆量子化部２３において、量子化係数で乗算されることにより逆量子化される。
逆量子化後、係数走査部２４において係数走査テーブルを参照し各係数を並べ直すことによりＩＤＣＴ処理の入力となる周波数配列に変換し、ＩＤＣＴ部２５のＩＤＣＴ（逆離散コサイン変換）により周波数領域から空間領域に変換することにより画素データが復号される。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述した、ＭＰＥＧＣｏｄｅｃ復号器では、ゼロ係数に対するＩＱ演算を省略し、デコードの高速化を図る工夫が行われてきた。
この場合、非ゼロ係数のみデータメモリ上の所定の領域に詰めて格納しＡＣ／ＤＣ予測、ＩＱ演算等を施した後に、ゼロ係数を加味した形で二次元的なデータ配列に並べ直し(係数走査)する。
【０００９】
この手法であると、無駄なＩＱ演算を省くことが可能であるが、係数並べ替えにかかる手間が増える。
特に、高ビットレートでエンコードされたＭＰＥＧＣｏｄｅｃストリームは非ゼロ係数の割合が低いため、ゼロ係数を無視しＩＱ処理を軽減することによる利得が低くなり、逆に配列並べ替えに対するメモリアクセスによるオーバーヘッドが相対的に重くなるため、高ビットレートにおいて処理負荷が増加するという不利益があった。
【００１０】
本発明は、係数並べ替えの手間を軽減でき、処理の高速化を実現可能な画像処理装置およびその方法、並びにプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明の第１の観点は、入力画像信号をブロック化し、当該ブロック単位で量子化された画像情報を逆量子化し、逆変換処理を施して復号する画像処理装置であって、量子化され符号化された変換係数を復号し、一次元係数列を出力する復号部と、上記復号部から出力される変換係数を、一次元係数列から二次元係数列への係数走査を行う係数走査部と、上記係数走査部で得られる上記変換係数を逆量子化する逆量子化部と、逆量子化された係数データに対して一次元係数列から二次元係数列への変換処理が可能な変換処理部と、を有する。
【００１２】
好適には、上記係数走査部は、複数要素を並列計算する命令セットを有する演算器の内部メモリに係数をロードする段階で、上記変換処理部に直接入力可能な形式である二次元配列に予め並べなおしておく機能を有する。
【００１３】
好適には、上記復号部で可変長復号されて出力された非ゼロのＤＣＴ係数値に対し、ジグザグスキャンテーブルおよびＲＵＮ情報を用い、一次元の係数列から上記変換処理部の入力列となる二次元係数列の周波数配列に変換するためのアドレス生成を行う。
【００１４】
好適には、上記復号部から上記変換処理部までの一連の復号プロセスにおいて、ゼロ係数を含む二次元データに対して、少なくとも逆量子化（ＩＱ）処理の前処理としてゼロ係数マスクを行う。
【００１５】
好適には、上記ＩＱ処理に係るゼロ係数マスクは、ＩＱ演算を行う際に、複数要素を並列計算する上記演算器の演算対象要素が全てゼロだった場合、ＩＱ処理をマスクする。
【００１６】
好適には、上記演算器は、上記ＩＱ処理の有効無効判定は、演算対象の複数要素に対して適用されるハードウェア（Ｈ／Ｗ）専用命令として実装されている。
【００１７】
好適には、上記演算器は、上記ＩＱ処理の有効無効判定に従って、ＩＱ演算に有効な係数群に対応する量子化テーブルのみロードする。
【００１８】
好適には、上記係数走査部の後段で上記変換処理部より前段に、ＡＣ／ＤＣ予測を行うＡＣ／ＤＣ予測部を有し、上記演算器は、上記ＩＱ処理の有効無効判定に従って、ＡＣ／ＤＣ予測時の対象係数群が全てゼロだった場合は、ＡＣ／ＤＣ予測時、そのまま隣接ブロックから所定の画素値をムーブしてくる。
【００１９】
好適には、上記演算器は、上記復号部の出力である一次元の係数列を、対象となる上記内部メモリに直接ロードし、二次元係数列への係数走査を内部メモリ間ムーブ（ｍｖ）命令によって実行する。
【００２０】
好適には、上記演算器は、上記係数走査部の係数走査処理を上記復号部の出力段で行う第１の処理と、上記変換処理部の入力段で行う第２の処理を選択的に切り替え可能な機能を有する。
【００２１】
好適には、上記演算器は、上記一次元係数列を出力とする復号部から出力される係数が、予め設定した閾値を超えた個数の係数を出力したら、係数走査処理を上記第２の処理から上記第１の処理に切り替える。
【００２２】
好適には、上記演算器は、採用する処理が第１の処理か第２の処理に決定するまでは上記復号部から得た値を加工せずに当該演算器の内部メモリに保持しておく。
【００２３】
本発明の第２の観点は、入力画像信号をブロック化し、当該ブロック単位で量子化された画像情報を逆量子化し、逆変換処理を施して復号する画像処理方法であって、量子化され符号化された変換係数を復号し、一次元係数列を得る復号ステップと、上記復号ステップで得られた変換係数を、一次元係数列から二次元係数列への係数走査を行う係数走査ステップと、上記係数走査ステップで得られる上記変換係数を逆量子化する逆量子化ステップと、逆量子化された係数データに対して一次元係数列から二次元係数列への変換処理を行う変換処理ステップと、を有する。
【００２４】
好適には、入力画像信号をブロック化し、当該ブロック単位で量子化された画像情報を逆量子化し、逆変換処理を施して復号する画像処理であって、量子化され符号化された変換係数を復号し、一次元係数列を得る復号処理と、上記復号ステップで得られた変換係数を、一次元係数列から二次元係数列への係数走査を行う係数走査処理と、上記係数走査ステップで得られる上記変換係数を逆量子化する逆量子化処理と、逆量子化された係数データに対して一次元係数列から二次元係数列への変換処理を行う変換処理と、を含む画像処理をコンピュータに実行させるプログラムである。
【００２５】
本発明によれば、復号部において、量子化され符号化された変換係数が復号され、その結果得られた一次元係数列が係数走査部に入力される。
係数走査部においては、一次元係数列から二次元係数列への係数走査（係数の並べ替え）が行われ、逆量子化部に出力される。
逆量子化部においては、復号部によって復号された変換係数が逆量子化され、変換処理部に出力される。
そして、変化処理部において、逆量子化された係数データに対して一次元係数列から二次元係数列への変換処理が行われる。
【発明の効果】
【００２６】
本発明によれば、複数の処理装置における効率の良い並列化処理を実現可能である。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の実施の形態を図面に関連付けて説明する。
【００２８】
本発明の実施形態は、複数要素を並列計算する命令セット（ＳＩＭＤ演算等）を有する演算器に対して、一次元係数列を出力とする復号部（可変長復号部・算術符号部等）、および係数走査（ＺｉｇＺａｇＳｃａｎ）、逆量子化（ＩＱ）、一次元係数列から二次元係数列への変換処理（逆離散コサイン変換処理・逆ウェーブレット変換等）を有する復号装置に対して適用される。
そして、本発明の実施形態においては、代表的な復号装置と異なり、基本的に、一次元係数列を出力とする復号部（可変長復号部・算術符合部等）の出力列である一次元の係数列から二次元係数列への変換を可変長復号の直後で行う。
つまり、本実施形態においては、演算器の内部メモリに係数をロードする段階で、一次元係数列から二次元係数列への変換処理部（ＩＤＣＴ部等）に直接入力可能な形式である二次元配列に予め並べなおしておくことにより、途中段階での冗長な並べ替え処理を削減する構成を実現している。
換言すると、本実施形態においては、可変長復号（ＶＬＣ）後、ＤＣＴブロックを複数のサブＤＣＴに分割して、各サブＤＣＴブロック毎にプロセッサエレメントに対応する量子化テーブルを割り当てることにより、ＩＱコードを効率よくＳＩＭＤ演算が可能となっている。
【００２９】
以下、本発明の実施形態に係る画像処理装置としてのＭＰＥＧコーデック（Ｃｏｄｅｃ）復号器の具体的な構成、機能について説明する。
【００３０】
＜第１実施形態＞
図２は、本発明の実施形態に係る画像処理装置としてのＭＰＥＧコーデック（Ｃｏｄｅｃ）復号器の構成を示す機能ブロック図である。
【００３１】
本復号器（画像処理装置）１００は、図２に示すように、ＩＤＣＴ（逆離散コサイン変換）と動き補償付き予測とを組み合わせた構成になっている。
そして、復号器１００は、ＩＤＣＴ処理部１１０、動き補償付き予測部１２０、加算部１３０、フレームバッファメモリ１４０、およびＳＩＭＤ演算機能を有する演算器（プロセッサ）２００を含んで構成されている。
【００３２】
ＩＤＣＴ処理部１１０は、可変長復号部１１１、係数走査（ＺｉｇＺａｇ−Ｓｃａｎ／Ａｌｔｅｒｎａｔｉｖｅ  Ｓｃａｎ）部１１２、ＡＣ／ＤＣ予測部１１３、逆量子化部（ＩＱ）部１１４、およびＩＤＣＴ部１１５により構成される。
また、動き補償付き予測部１２０は、動きベクトル復号化部１２１、および動き補償予測部１２２により構成される。
そして、最終的にＩＤＣＴ処理部１１０の出力と動き補償付き予測部１２０との出力を加算部１３０で足し合わせることにより、画素データを生成し、フレームバッファメモリ１４０に格納する。
【００３３】
本実施形態に係る復号器（画像処理装置）１００においては、ソフトウエアによる画像復号をターゲットとし、複数要素を並列計算する演算器を擁する構成を対象とする。また、本発明は、可変長復号部からＩＤＣＴ部までの復号プロセスに適用される。
【００３４】
可変長復号部１１１は、図示しない符号化装置によって符号化されたデータを受けて可変長復号化処理を行い、処理の結果得られた量子化データを係数走査部１１２に出力する。
【００３５】
図示しない符号化器の可変長符号化部において、量子化された一次元の係数列に並び替えて可変長符号化し冗長分を削減する。
具体的には、可変長符号化部で一次元配列として係数を配置した際に、ゼロの個数を表すラン（ＲＵＮ）情報と係数値の大きさをしめすレベル（ＬＥＶＥＬ）情報の組み合わせに対してランレングスデータを生成する。
このＲＵＮ情報と係数値の組み合わせに対して符号長の異なる符号語を割り当てることにより可変長符号化し、データの容量を削減する。
よって、復号器１００の可変長復号部１１１は復号したＲＵＮ情報値の個数分のゼロ係数を生成し、非ゼロ係数についてはＤＣＴ係数（レベル：ＬＥＶＥＬ）の値を係数値として復号化係数列を生成する。
【００３６】
係数走査部１１２は、可変長復号部１１１において、可変長復号し出力された非ゼロのＤＣＴ係数（＝ＬＥＶＥＬ）値に対し、ジグザグスキャンテーブルおよびＲＵＮ情報を用い、一次元の係数列からＩＤＣＴの入力列となる二次元係数列の周波数配列に変換するためのアドレス生成を行う。
【００３７】
ＡＤ／ＤＣ予測部１１３は、係数走査部１１２の出力に対するＡＤ／ＤＣ予測を行い、その結果を逆量子化部１１４に出力する。
【００３８】
逆量子化部１１４は、可変長復号化部１０１により得られる量子化データをマクロブロック（ＭＢ）ごとに、たとえば８画素×８ラインのブロック単位で逆量子化し、得られたＤＣＴ（Discrete Cosine Transform：離散コサイン変換）係数データをＩＤＣＴ部１１５に出力する。
【００３９】
ＩＤＣＴ部１１５は、供給される逆量子化部１０２からのＤＣＴ係数データに対してＩＤＣＴ処理を行い、得られた画素データを加算部１３０に出力する。
【００４０】
動きベクトル復号化部１２１は、可変長復号部１１１によるデータにより動きベクトルをデコードし、その結果により動き補償予測部１２２の動作を制御する。
【００４１】
動き補償予測部１２２は、動きベクトル復号化部１２１により動作が制御され、加算部１３０でそのとき処理しているものがＩピクチャである場合、この加算部１３０に対して何らデータを供給しない。
動き補償予測部１２２は、加算部１３０でそのとき処理しているものがＰピクチャである場合、フレームバッファメモリ１４０にアクセスして過去のフレームに相当する画像データを読み出し、これに所定の演算処理を行って得られた演算データを加算部１３０に供給する。
また、動き補償予測部１２２は、加算部１３０でそのとき処理しているものがＢピクチャである場合、フレームバッファメモリ１４０にアクセスして過去および未来のフレームに相当する画像データを読み出し、これに所定の演算処理を行って得られた演算データを加算部１３０に供給する。
【００４２】
因みに、フレームバッファメモリ１４０は、加算部１３０から順次出力される復号化された画像データのうち、ＩピクチャおよびＰピクチャに相当する画像データを保持するように構成されている。
そして加算部１３０は、そのとき処理しているものがＩピクチャである場合には、ＩＤＣＴ部１１５からの画素データを、復号化された画像データとしてそのまま出力するように構成されている。
また、加算部１３０は、そのとき処理しているものがＰピクチャまたはＢピクチャである場合にはＩＤＣＴ部１１５からの画素データと動き補償予測部１３３からの演算データとを加算処理することにより、復号化された画像データを得て、出力するように構成されている。
【００４３】
また、本実施形態の復号器（画像処理装置）１００は、可変長復号部１１１からＩＤＣＴ部１１５までの復号プロセスにおいて、ゼロ係数を含む二次元データに対して、逆量子化（ＩＱ）やＡＣ／ＤＣ予測等の処理の前処理としてゼロ係数マスクを行うことによりＩＱやＡＣ／ＤＣ予測等の処理を高速に実施する機能を有する。
ＩＱ処理に係るゼロ係数マスクは、ＩＱ演算を行う際に、複数要素を並列計算する演算器の演算対象要素が全てゼロだった場合、ＩＱ処理をマスクする。
ＩＱ処理有効無効判定は、演算対象の複数要素に対して同時に適用されるハードウェア（Ｈ／Ｗ）専用命令として実装することにより高速化を図る機能を有する。
また、ＩＱマスク判定に従って、ＩＱ演算有効な係数群に対応する量子化テーブルのみロードすることにより、冗長なメモリ・レジスタ間ロードを省き、ＩＱ処理を高速化する機能を有する。
また、ＩＱマスク判定に従って、ＡＣ／ＤＣ予測時の対象係数群が全てゼロだった場合は、ＡＣ／ＤＣ予測時、そのまま隣接ブロックから所定の画素値をムーブ（ｍｖ）してくる（ゼロ係数との足し合わせ等の演算を行わない）。
【００４４】
また、本実施形態の復号プロセスにおいては、可変長復号部１１１の出力である一次元の係数列を、複数要素を並列計算する命令セットを有する演算器の対象となる内部メモリに直接ロードし、二次元係数列への変換（係数走査：ＺｉｇＺａｇＳｃａｎ）を内部メモリ間ｍｖ命令によって実装することにより高速化を図る機能を有する。
【００４５】
以下、本実施形態に係る復号プロセスについてさらに詳述する。
【００４６】
図３は、本実施形態に係る複数要素を並列計算する命令セットの一例であるＳＩＭＤ演算命令系有するプロセッサ（演算器）の機能ブロック図である。
【００４７】
図３のプロセッサ２００は、係数（Ｃｏｅｆｆ）データバッファ（プロセッサ内部メモリ）２０１、ジグザグスキャナ変換テーブル２０２、ＭＶ命令部２０３、Ｑマトリクス（ｍａｔｒｉｘ）２０４、中間値データバッファ２０５、サブマクロ単位ＩＱマスク判定およびＩＱ命令部２０６、ＩＤＣＴ命令部２０７、および中間値バッファ２０８を有する。
また、図３において、符号１１２ａは外部の係数（Ｃｏｅｆｆ）データバッファを示す。
【００４８】
図４は、本実施形態に係る復号プロセスを模式的に示す図である。
図５は、図４に対する比較として既存の復号器の復号プロセスを示す図である。
図６は、本実施形態において、ＩＱ処理をマスク場合の復号プロセスを示す図である。
図７は、本実施形態において、ＩＱ演算後の復号プロセスを示す図である。
【００４９】
係数走査部１１２は、可変長復号部１１１において可変長復号され出力された非ゼロのＤＣＴ係数（＝ＬＥＶＥＬ）値に対し、ジグザグスキャンテーブルおよびＲＵＮ情報を用い、一次元の係数列からＩＤＣＴの入力列となる二次元係数列の周波数配列に変換するためのアドレス生成を行う。
【００５０】
本実施形態においては、図１に示した代表的なＭｐｅｇＣｏｄｅｃ復号器の構成と異なり、一次元から二次元係数列への変換を可変長復号の直後で行う。
つまり、図４に示すように、ＳＩＭＤ演算用プロセッサ２００のレジスタに係数をロードする段階で、ＩＤＣＴに直接入力可能な形式である二次元配列に予め並べなおしておくことにより、途中段階での冗長な並べ替え処理を削減する。
【００５１】
図５に示した代表的なＭｐｅｇＣｏｄｅｃ復号器の構成では、非ゼロ係数のみ格納された一次元配列に対してＡＣ／ＤＣ予測・ＩＱ処理を施し、ゼロ係数が演算対象の配列中に含まれる二次元配列への変換をＩＤＣＴ処理の直前に実施することにより、ゼロ係数に対する冗長な演算を省いていた。
【００５２】
これに対して、本実施形態による復号器１００の構成では、図４に示すように、複数係数要素を、並列計算をするＳＩＭＤ演算可能なプロセッサ２００にマッピングした状態で係数走査やＩＱ処理を実施する。
このため、ＤＣＴ係数の一次元から二次元への変換を可変長復号化の直後で行う。
この手法を用いた場合、ゼロ係数が配列中に含まれる二次元配列への変換をＩＱやＡＣ／ＤＣ予測の前に行うためゼロ係数に対する冗長な演算が発生してしまうおそれがある。
そのため、それぞれの処理の前処理としてゼロ係数マスクをハードウェア（Ｈ／Ｗ）命令によって行うことにより、既存の手法と比べて高速に冗長演算マスクを実施する。
【００５３】
上述したように、変換アドレス生成はソフトウエア処理により実施されるが、実際の係数並べ替え処理の実行は、複数要素並列計算可能な演算器内の内部メモリ間ｍｖ命令を用いて行う。
変換アドレス生成後、図４に示すように、一次元配列として格納されている非ゼロＤＣＴ係数列を演算器であるプロセッサ２００内の内部メモリ２０１に割り当てる。
なお、この処理の前に演算器内の内部メモリはゼロクリア済みである。よって、ゼロ係数ロードを省略することが可能となる。
演算器であるプロセッサ２００内の内部メモリ２０１へ非ゼロＤＣＴ係数列をロードする際、この係数列は一次元配列のため所定のストライド幅でリニア転送する。図４の例では、ストライド幅を４としている。
また、係数走査部１１２で生成した変換アドレス配列も同じく演算器であるプロセッサ２００内の内部メモリに割り当て、所定のストライド幅でリニア転送する。この作業を１ブロック分（８ｘ８）繰り返す。
【００５４】
次に、演算器であるプロセッサ２００内の内部メモリにロードされた変換アドレスに従い、対応する非ゼロ係数を移動（係数走査）させる。
この移動の際には、図４に示すように、複数要素並列計算可能な演算器であるプロセッサ２００の内部メモリ間ｍｖ命令を用い複数要素並列で実施する。
ただし、係数走査用テーブルは８ｘ８要素に対して設定される座標変換テーブルのため、本構成において複数要素並列計算可能な演算器のｍｖ命令は、移動先アドレスが演算対象エリアの範囲外（ただし、８ｘ８範囲内）のケースも対応する。
【００５５】
複数要素の並列計算命令における並べ替え(係数走査)の後も、ＡＣ／ＤＣ予測、ＩＱ演算を、並列計算命令２０６を複数要素に適用することにより実施する。
【００５６】
次に、ＡＣ／ＤＣ予測時、ＩＱマスク判定に従って対象係数群が全てゼロだった場合は、ＡＣ／ＤＣ予測時、そのまま隣接ブロックから所定の画素値を移動（ｍｖ）してくる。この場合、ゼロ係数との足し合わせ等の演算を行わない。
【００５７】
ＩＱ演算を行う際に、図６に示しように、複数要素に対する並列演算の演算ターゲットとなる複数係数要素が全てゼロだった場合、ＩＱ処理をマスクする。
この有効無効判定はＨ／Ｗ専用命令２０６として実装する。
また、この際、プロセッサ２００の複数要素に対する並列演算要素サイズが８ｘ８であるときに限り符号化ブロックパターン（Ｃｏｄｅｄ Ｂｌｏｃｋ Ｐａｔｔｅｒｎ）とＨ／Ｗ専用命令によるＩＱ処理マスク判定命令は等価の情報を持つ。
ただし、一般的にＨ／Ｗ命令によるＩＱ処理マスク判定命令を使うほうが、処理速度的に利得があるケースが多い。
【００５８】
ＩＱ演算の際は、図６に示すように、所定のマトリックステーブル２０４を予めレジスタ２１０へロードしておき、ＡＣ／ＤＣ予測が終わり次第、レジスタへロードしたＱマトリックステーブルの量子化係数とＤＣＴ係数の乗算をＳＩＭＤ演算処理により複数要素並行して行う。
また、Ｑマトリックステーブル２０４のロードの際、ＩＱ演算マスクされていない複数要素に対応するＱマトリックステーブル２０４のみロードすることにより、無駄なＱマトリックステーブルロードを省く。
【００５９】
ＩＱ演算後、図７に示すように、既に演算器であるプロセッサ２００の内部メモリ上の係数は二次元周波数配列として並んでいるため、配置アドレスの変換なしでそのまま８ｘ８ＩＤＣＴ演算を施し、画素データを生成する。
ＩＤＣＴ演算の際、通常演算のマスクはＣｏｄｅｄ Ｂｌｏｃｋ Ｐａｔｔｅｒｎを用いるが、ＩＱ演算で用いたＩＱ処理マスク判定命令を用いたほうが、処理速度が高速である場合はＣｏｄｅｄ Ｂｌｏｃｋ Ｐａｔｔｅｒｎを使わずに、無効判定命令を複数要素に対して同時に適用することにより代替することが可能である。
【００６０】
ＩＤＣＴで生成された画素データをフレームバッファメモリ１４０にストアした後、使用済みの演算器であるプロセッサ２００の内部メモリをＨ／Ｗ専用命令によって全てゼロにクリアする。
【００６１】
以上、第１の実施形態について説明した。
次に、１ブロック中に殆ど非ゼロ係数が含まれていない場合の処理例を第２の実施形態として説明する。
【００６２】
＜第２実施形態＞
第１の実施形態において説明した本手法（第１の方法；第１の処理）は高ビットレート時に特に有利であるが、反面、１ブロック中に殆ど非ゼロ係数が含まれていないケースでは既存の手法（第２の方法；第２の処理）のほうが有利であるケースが存在する。
そのため、本第２の実施形態においては、デコード処理中に所定の閾値を用いることにより第１の方法（第１の処理）と第２の方法（第２の処理）を動的に切り替えることにより、常に最適なデータ配置を選択する構成にすることが可能である。
【００６３】
図８は、本第２の実施形態の構成を説明するための図である。
以下、この図８に関連付けて説明をする。
なお、本第２の実施形態は、前述の第１の実施形態を基本にした構成となる。ここでは、第１の実施形態１との差分部分のみ説明する。
【００６４】
可変長復号部１１１におけるＤＣＴ係数のＶＬＤ処理の際、８ｘ８単位である閾値Ｖｔｈを超えた個数の係数を出力したら（ＳＴ１，ＳＴ２）、第２の方法から第１の方法（第１の実施形態で説明したＳＩＭＤ演算に係数マップする手法）に切り替える。
ＶＬＤ出力ＤＣＴ係数が閾値Ｖｔｈに達するまではＶＬＤから得た値を加工しない状態で所定の演算器であるプロセッサ２００の内部レジスタ（グローバルレジスタ）等に保持しておく（ＳＴ３）。
【００６５】
係数の個数がある閾値Ｖｔｈを超えるまで可変長復号後の処理を保留することにより、余計なメモリアクセスを最小限に抑えた状態で適応的に処理の切り替えを行うことができる（ＳＴ２〜ＳＴ５）。
【００６６】
閾値ＶｔｈはＣＰＵのもつグローバルレジスタの本数とＳＩＭＤ演算の要素数、ＳＩＭＤ演算にかかる遅延のバランスを加味して決定する。
【００６７】
以上説明したように、本実施形態によれば、本実施形態による復号器１００の構成では、複数係数要素を、並列計算をするＳＩＭＤ演算可能なプロセッサ２００にマッピングした状態で係数走査やＩＱ処理を実施するため、ＤＣＴ係数の一次元から二次元変換を可変長復号化の直後で行う。そして、この手法を用いた場合、ゼロ係数が配列中に含まれる二次元配列への変換をＩＱやＡＣ／ＤＣ予測の前に行うためゼロ係数に対する冗長な演算が発生してしまうおそれがあることから、それぞれの処理の前処理としてゼロ係数マスクをハードウェア（Ｈ／Ｗ）命令によって行うことにより、既存の手法と比べて高速に冗長演算マスクを実施することから、以下の効果を得ることができる。
【００６８】
複数要素並列演算可能な演算器を有するシステムにおいては、ＩＤＣＴ係数を周波数成分に配置したときの非ゼロ係数の偏りを利用してＩＱ処理を効率よくマスクすることが可能となるため、処理が高速化される。
つまり、通常非ゼロ係数はＩＤＣＴ時の低周波成分領域に集中することから、二次元データへの並べ替え後であってもある程度非ゼロデータの偏りは存在するため、あえて既存の手法（図５）のように非ゼロ係数のみをまとめてデータ配置するよりも、処理の前工程で二次元データに並べなおして複数要素に対して並列に演算処理を適用することにより、一気に並列処理を行うことに対するメリットのほうが大きい。
【００６９】
係数に対する量子化係数をテーブル引きするときの手間が軽減され、その分、処理が高速化される。
つまり、既存の手法では非ゼロ係数の一次元配列に対して順次ＩＱ処理を行うため、それぞれの非ゼロ係数の二次元配置アドレスを計算して量子化テーブルから当該の量子化係数値を参照する必要があったが、本実施形態ではＩＤＣＴ係数が二次元配置された状態でＩＱ処理を行うため、係数個別に量子化テーブル参照アドレスの算出を行う必要がない。
よって、二次元配置されたＩＤＣＴ係数と量子化テーブルを直接ベクタ演算することが可能となる。
【００７０】
また、係数走査を複数要素に対して演算処理を並列に適用することにより処理の高速化が図れる。
【００７１】
また、複数要素並列で一括して演算処理するため、各ＤＣＴの非ゼロ係数の割合（＝ビットレート）に関わらず、ほぼ一定の処理量で復号処理が実施できる。
それによるメリットの一例として、各処理を複数のプロセッサに割り振り復号システム全体をパイプライン制御にした場合の各プロセッサのロードバランスが安定する。その結果、復号器全体としての性能の安定・処理の高速化につながる。
【００７２】
また、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、ＣＰＵ等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー（登録商標）ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
【図面の簡単な説明】
【００７３】
【図１】代表的なＭＰＥＧコーデック（Ｃｏｄｅｃ）復号器の機能ブロック図である。
【図２】本発明の実施形態に係る画像処理装置としてのＭＰＥＧＣｏｄｅｃ復号器の構成を示す機能ブロック図である。
【図３】本実施形態に係る複数要素を並列計算する命令セットの一例であるＳＩＭＤ演算命令系有するプロセッサ（演算器）の機能ブロック図である。
【図４】本実施形態に係る復号プロセスを模式的に示す図である。
【図５】図４に対する比較として既存の復号器の復号プロセスを示す図である。
【図６】本実施形態において、ＩＱ処理をマスク場合の復号プロセスを示す図である。
【図７】本実施形態において、ＩＱ演算後の復号プロセスを示す図である。
【図８】第２の実施形態を説明するための図である。
【符号の説明】
【００７４】
１００・・・画像処理装置（復号器）、１１０・・・ＩＤＣＴ処理部、１１１・・・可変長復号部、１１２・・・係数走査部、１１３・・・ＡＣ／ＤＣ予測部、１１４・・・逆量子化部、１１５・・・ＩＤＣＴ部、１２０・・・動き補償付き予測部、１２１・・・動きベクトル復号化部、１２２・・・動き補償予測部、１３０・・・加算部、１４０・・・フレームメモリ。
【図１】
2009170992.tif 000003
【図２】
2009170992.tif 000004
【図３】
2009170992.tif 000005
【図４】
2009170992.tif 000006
【図５】
2009170992.tif 000007
【図６】
2009170992.tif 000008
【図７】
2009170992.tif 000009
【図８】
2009170992.tif 000010