(57)【要約】【課題】複数の処理装置における効率の良い並列化処理を実現可能な画像処理装置およびその方法、並びにプログラムを提供する。【解決手段】復号された量子化データを逆量子化する際に、逆量子化の処理ブロック毎に有意係数データの分布情報をフラグにしてこのフラグを係数分布信号Ｓ１０２として出力する逆量子化部１０２と、逆量子化部１０２による係数分布信号Ｓ１０２を受けて、極力ＩＤＣＴを行わなくて良いデータに関しては第２のＩＤＣＴ変換部（アクセラレータ）１０５に転送するのを避け、ＩＤＣＴを行う必要があるデータに関しても第１のＩＤＣＴ変換部（ＣＰＵ）１０４と第２のＩＤＣＴ変換部（アクセラレータ）１０５の処理できる性能を考慮して、係数データの分布によりＩＤＣＴを、第１のＩＤＣＴ変換部１０４で演算するか、第２のＩＤＣＴ変換部で演算するかを決定する演算セレクタ部１０３とを有する。【選択図】図３
2008288986.tif 000002
【特許請求の範囲】
【請求項１】
入力画像信号をブロック化し、当該ブロック単位で直交変換を施して量子化された画像圧縮情報を逆量子化し、逆直交変換を施して復号する画像処理装置であって、
逆量子化された係数データに対して逆直交変換処理が可能で、かつ当該逆直交変換処理以外の処理が可能な第１の逆直交変換部と、
逆量子化された係数データに対して逆直交変換処理が可能な第２の逆直交変換部と、
量子化され符号化された変換係数を復号する復号部と、
上記復号部によって復号された上記変換係数を逆量子化し、当該逆量子化する際に、逆量子化の処理ブロック毎に有意係数データの分布情報をフラグにして示す逆量子化部と、
上記逆量子化部の上記フラグ情報に応じて当該逆量子化部により逆量子化された係数データを上記第１の逆直交変換部または上記第２の逆直交変換部に選択的に出力するセレクタ部と
を有する画像処理装置。
【請求項２】
上記分布フラグには、有意係数データの有無を示す符号化ブロックパターン情報が含まれ、
上記セレクタ部は、
上記符号化ブロックパターン情報により有意係数データを持つブロックのみを収集し格納する
請求項１記載の画像処理装置。
【請求項３】
上記セレクタ部は、
処理の異なるデータをそれぞれ異なる専用バッファに格納する
請求項２記載の画像処理装置。
【請求項４】
上記セレクタ部は、
データを転送するためのラインバッファを有する
請求項３記載の画像処理装置。
【請求項５】
上記セレクタ部は、
上記第１の逆直交変換部および上記第２の逆直交変換部の性能を考慮した閾値が設定され、当該閾値と上記逆量子化部による分布フラグとを比較して逆量子化された係数データを上記第１の逆直交変換部または上記第２の逆直交変換部に選択的に出力する
請求項１記載の画像処理装置。
【請求項６】
上記セレクタ部は、
上記第１の逆直交変換部および上記第２の逆直交変換部の性能を考慮した閾値が設定され、当該閾値と上記逆量子化部による分布フラグとを比較して逆量子化された係数データを上記第１の逆直交変換部または上記第２の逆直交変換部に選択的に出力する
請求項３記載の画像処理装置。
【請求項７】
上記セレクタ部は、
上記閾値は、所定のラインにみに有意係数データが含まれるブロックは上記第１の逆直交変換部で処理されるような値に設定されている
請求項５記載の画像処理装置。
【請求項８】
上記セレクタ部は、
上記閾値は、所定のラインにみに有意係数データが含まれるブロックは上記第１の逆直交変換部で処理されるような値に設定されている
請求項６記載の画像処理装置。
【請求項９】
入力画像信号をブロック化し、当該ブロック単位で直交変換を施して量子化された画像圧縮情報を逆量子化し、逆直交変換を施して復号する画像処理方法であって、
量子化され符号化された変換係数を復号する復号ステップと、
上記復号ステップによって復号された上記変換係数を逆量子化し、当該逆量子化する際に、逆量子化の処理ブロック毎に有意係数データの分布情報をフラグにして示す逆量子化ステップと、
上記逆量子化処理の上記フラグ情報に応じて逆量子化された係数データを複数の逆直交変換部のいずれかに選択的に出力する選択処理ステップと、
逆量子化された係数データが供給された逆直交変換部で逆直交変換処理を行う変換処理ステップと
を有する画像処理方法。
【請求項１０】
入力画像信号をブロック化し、当該ブロック単位で直交変換を施して量子化された画像圧縮情報を逆量子化し、逆直交変換を施して復号する画像処理であって、
量子化され符号化された変換係数を復号する復号処理と、
上記復号ステップによって復号された上記変換係数を逆量子化し、当該逆量子化する際に、逆量子化の処理ブロック毎に有意係数データの分布情報をフラグにして示す逆量子化処理と、
上記逆量子化処理の上記フラグ情報に応じて逆量子化された係数データを複数の逆直交変換部のいずれかに選択的に出力する選択処理と、
逆量子化された係数データが供給された逆直交変換部で逆直交変換処理を行う変換処理と、を含む
画像処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル画像を処理する画像処理装置およびその方法、並びにプログラムに関するものである。
【背景技術】
【０００２】
近年、画像情報をデジタル化して取り扱い、その際、効率の高い情報の伝達および蓄積を目的とし、画像情報特有の冗長性を利用して、離散コサイン変換（Discrete Cosine Transform：ＤＣＴ）等の直交変換と動き補償とにより圧縮するＭＥＰＧ（Moving Picture Experts Group）などの方式に準拠した装置が、放送局などの情報配信および一般家庭における情報受信の双方において普及している。
特に、ＭＰＥＧ２（ISO/IEC 13818−2）は、汎用画像符号化方式として定義されており、飛び越し走査画像および順次走査画像の双方、並びに標準解像度画像および高精細画像を網羅する標準で、プロフェッショナル用途およびコンシューマ用途の広範なアプリケーションに現在広く用いられている。
【０００３】
そのＭＰＥＧにおいても、より高い解像度やより滑らかな画像表示を行うために高速なコーデック処理要求が高まってきおり、主にＡＳＩＣ等の専用回路を用いて高速化を図る手法がとられてきた。
しかし、画像伸張・圧縮手法に関しては多種多彩になってきており、専用回路での実現では、これらに柔軟に対応することが困難である。
【０００４】
その解決策として、処理装置であるＣＰＵとリコンフィギュアブル（再構築可能）なアクセラレータＬＳＩ（以下、アクセラレータ)を使用し、処理の重い部分をアクセラレータで処理させ、かつアクセラレータとＣＰＵ処理を並列化することにより高速化を図る手法が提案されている。
アクセラレータとは特定の機能や処理能力を向上させるハードウェア（H/W）とソフトウェア（S/W）のことであり、ここでのアクセラレータは、性能向上を図るためにＣＰＵが担当する処理を肩代わりするＨ／Ｗを指している。
【０００５】
図１は、既存のアクセラレータを持つが回路の一例を示す図である。
【０００６】
回路の構成要素として、ＣＰＵ１、メインメモリ２、アクセラレータ３がそれぞれバス４に接続されており、アクセラレータ３のなかには、ＡＬＵ、ＭＡＣなどの複数の演算器５とアクセラレータ３内部で使用する専用ＲＡＭ（以後、ローカルメモリ)６が備え付けられている。
また、アクセラレータ３はバス４によりＣＰＵ１やメインメモリ２と接続され、バス４を介してデータのやり取りを行う。
図１に示すアクセラレータ３はＣＰＵ１と独立に稼動し、ＣＰＵ１が演算処理を行っている間、アクセラレータ３ではローカルメモリ６へデータのロード（LOAD）/ストア（STORE）を行ったり、演算器５でＣＰＵ１とは別の演算処理を行わせたりすることで、処理の並列化を実現し、処理の効率化を図っている。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、ローカルメモリ６を搭載したアクセラレータ３は、そのローカルメモリ６内に存在するデータに対してのみ演算が可能であり、アクセラレータ３で処理を行う際にはメインメモリ２からバス４を通してアクセラレータ３のローカルメモリ６にデータを転送(LOAD)する必要があり、アクセラレータ３での演算後もバス４を通してアクセラレータ３のローカルメモリ６からメインメモリ２へデータを転送(STORE)する必要がある。
【０００８】
そのため、アクセラレータ３で演算を高速化できたとしても、簡単で単発な演算などではロード（LOAD）やストア（STORE）の転送サイクルを考慮すると逆にトータルサイクルが増加してしまう。
そのことから、可能な処理をすべてアクセラレータ３で演算させようとした場合に、逆にアクセラレータ３の負荷が大きくなり、ＣＰＵ１がアクセラレータ３をポーリングしている時間が増加し、トータルサイクル数がＣＰＵ１のみを使用していた場合より、増加してしまう可能性がある。
【０００９】
図２は、ＭＰＥＧでフレーム（Frame）内の全てのブロック（block）をアクセラレータに転送しＩＤＣＴ演算を行った場合の、ＣＰＵとアクセラレータの並列化効率について説明するための図である。
図２において、横軸は時間軸で、ＣＰＵ時間軸ＴＸ１とアクセラレータ時間軸ＴＸ２の２つの時間的並列軸を示している。
また、図２において、四角で囲まれた期間Ｔ１は実際演算が行われている演算実行期間であり、四角で囲まれていない期間Ｔ２は演算が行われていない非実行期間である。また、Ｔ３はアクセラレータの演算実行期間を示している。
【００１０】
図２に示すように、ＣＰＵの演算実行期間Ｔ１とアクセラレータの演算実行期間Ｔ３を比較してもわかるように、アクセラレータの演算負荷が高いためにＣＰＵがアクセラレータをポーリングし、ＣＰＵが何も処理していない期間Ｔ２が増加している。
その結果、並列化の効率が落ち、アクセラレータを使用したとしてもトータルサイクル数が増加する原因となっている。
【００１１】
本発明は、複数の処理装置における効率の良い並列化処理を実現可能な画像処理装置およびその方法、並びにプログラムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明の第１の観点は、入力画像信号をブロック化し、当該ブロック単位で直交変換を施して量子化された画像圧縮情報を逆量子化し、逆直交変換を施して復号する画像処理装置であって、逆量子化された係数データに対して逆直交変換処理が可能で、かつ当該逆直交変換処理以外の処理が可能な第１の逆直交変換部と、逆量子化された係数データに対して逆直交変換処理が可能な第２の逆直交変換部と、量子化され符号化された変換係数を復号する復号部と、上記復号部によって復号された上記変換係数を逆量子化し、当該逆量子化する際に、逆量子化の処理ブロック毎に有意係数データの分布情報をフラグにして示す逆量子化部と、上記逆量子化部の上記フラグ情報に応じて当該逆量子化部により逆量子化された係数データを上記第１の逆直交変換部または上記第２の逆直交変換部に選択的に出力するセレクタ部とを有する。
【００１３】
好適には、上記分布フラグには、有意係数データの有無を示す符号化ブロックパターン情報が含まれ、上記セレクタ部は、上記符号化ブロックパターン情報により有意係数データを持つブロックのみを収集し格納する。
【００１４】
好適には、上記セレクタ部は、処理の異なるデータをそれぞれ異なる専用バッファに格納する。
【００１５】
好適には、上記セレクタ部は、データを転送するためのラインバッファを有する。
【００１６】
好適には、上記セレクタ部は、上記第１の逆直交変換部および上記第２の逆直交変換部の性能を考慮した閾値が設定され、当該閾値と上記逆量子化部による分布フラグとを比較して逆量子化された係数データを上記第１の逆直交変換部または上記第２の逆直交変換部に選択的に出力する。
【００１７】
好適には、上記セレクタ部は、上記閾値は、所定のラインにみに有意係数データが含まれるブロックは上記第１の逆直交変換部で処理されるような値に設定されている。
【００１８】
本発明の第２の観点は、入力画像信号をブロック化し、当該ブロック単位で直交変換を施して量子化された画像圧縮情報を逆量子化し、逆直交変換を施して復号する画像処理方法であって、量子化され符号化された変換係数を復号する復号ステップと、上記復号ステップによって復号された上記変換係数を逆量子化し、当該逆量子化する際に、逆量子化の処理ブロック毎に有意係数データの分布情報をフラグにして示す逆量子化ステップと、上記逆量子化処理の上記フラグ情報に応じて逆量子化された係数データを複数の逆直交変換部のいずれかに選択的に出力する選択処理ステップと、逆量子化された係数データが供給された逆直交変換部で逆直交変換処理を行う変換処理ステップとを有する。
【００１９】
本発明の第３の観点は、入力画像信号をブロック化し、当該ブロック単位で直交変換を施して量子化された画像圧縮情報を逆量子化し、逆直交変換を施して復号する画像処理であって、量子化され符号化された変換係数を復号する復号処理と、上記復号ステップによって復号された上記変換係数を逆量子化し、当該逆量子化する際に、逆量子化の処理ブロック毎に有意係数データの分布情報をフラグにして示す逆量子化処理と、上記逆量子化処理の上記フラグ情報に応じて逆量子化された係数データを複数の逆直交変換部のいずれかに選択的に出力する選択処理と、逆量子化された係数データが供給された逆直交変換部で逆直交変換処理を行う変換処理と、を含む画像処理をコンピュータに実行させるプログラムである。
【００２０】
本発明によれば、復号部において、量子化され符号化された変換係数が復号され、逆量子化部に出力される。逆量子化部においては、復号部によって復号された変換係数が逆量子化される。逆量子化部は、この逆量子化する際に、逆量子化の処理ブロック毎に有意係数データの分布情報をフラグにして示す。
セレクタ部において、逆量子化部の分布フラグ情報に応じて逆量子化部により逆量子化された係数データが第１の逆直交変換部または第２の逆直交変換部に選択的に出力される。
そして、逆量子化された係数データが供給された第１または第２の逆直交変換部で逆直交変換処理が行われる。
【発明の効果】
【００２１】
本発明によれば、複数の処理装置における効率の良い並列化処理を実現可能である。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施の形態を図面に関連付けて説明する。
【００２３】
図３は、本発明の実施形態に係る画像処理装置の構成を示すブロック図である。
【００２４】
本画像処理装置１００は、図３に示すように、可変長復号化部１０１、逆量子化部１０２、演算セレクタ部１０３、第１の逆直交変換部（処理装置：ＣＰＵ）としての第１のＩＤＣＴ変換部（逆離散コサイン変換部）１０４、第２の逆直交変換部としての第２の処理装置としての第２のＩＤＣＴ変換部（アクセラレータ）１０５、変換後セレクタ部１０６、動きベクトルデコード部１０７、フレームメモリ１０８、動き補償予測部１０９、および加算部１１０を有する。
【００２５】
本実施形態に係る画像処理装置１００においては、ＭＰＥＧで第２のＩＤＣＴ変換部（アクセラレータ）１０５にＩＤＣＴ処理を行わせる場合に、極力ＩＤＣＴを行わなくて良いデータに関しては第２のＩＤＣＴ変換部（アクセラレータ）１０５に転送することを避け、ＩＤＣＴ処理を行うデータに関しても有意係数データの分布情報を利用して、あらかじめ第１のＩＤＣＴ変換部（ＣＰＵ）１０４と第２のＩＤＣＴ変換部（アクセラレータ）１０５の性能を考慮して決定された閾値を基にＩＤＣＴ演算を、第１のＩＤＣＴ変換部（ＣＰＵ）の演算とするか第２のＩＤＣＴ変換部（アクセラレータ）１０５の演算とするかを選択するように構成されている。
すなわち、本実施形態においては、演算をしなくても良いようなデータなどは第２のＩＤＣＴ変換部（アクセラレータ）１０５への転送を省き、なおかつ、有意係数データを持つブロック（block）においても、バス転送におけるロスを考慮して、第２のＩＤＣＴ変換部（アクセラレータ）１０５に転送せずに第１のＩＤＣＴ変換部（ＣＰＵ）１０４で演算したほうがトータルサイクル数として効率が良いものは、第１のＩＤＣＴ変換部（ＣＰＵ）１０４でＩＤＣＴ演算を行うような効率の良い並列化を実現している。
【００２６】
可変長復号化部１０１は、図示しない符号化装置によって符号化されたデータを受けて可変長復号化処理を行い、処理の結果得られた量子化データを逆量子化部１０２に出力する。
【００２７】
逆量子化部１０２は、可変長復号化部１０１による量子化データをマクロブロック（ＭＢ）ごとに、たとえば８画素×８ラインのブロック単位で逆量子化し、得られたＤＣＴ（Discrete Cosine Transform：離散コサイン変換）係数データを演算セレクタ部１０３に出力する。
逆量子化部１０２は、復号された量子化データを逆量子化する際に、逆量子化の処理ブロック毎に有意係数データの分布情報をフラグにして示し、このフラグ情報を係数分布信号Ｓ１０２として演算セレクタ部１０３に出力する。
たとえば、ＪＶＴ（Joint Video Team）によって標準化が行われている符号化方式であるＡＶＣの場合、図４（Ａ）に示すような４×４のブロック毎にジグザグにスキャンをしながら逆量子化する。
このとき、逆量子化部１０２は、図４（Ｂ）に示すように、４×４ブロック内の係数発生位置をフラグで管理する。
逆量子化部１０２は、図４（Ａ）の４×４ブロックに現れた係数の位置を、たとえば図４（Ｂ）に示すように、「０」，「１」のフラグを用いることによって示し、これを保持する（格納する）
【００２８】
演算セレクタ部１０３は、逆量子化部１０２による係数分布信号Ｓ１０２を受けて、極力ＩＤＣＴを行わなくて良いデータに関しては第２のＩＤＣＴ変換部（アクセラレータ）１０５に転送するのを避け、ＩＤＣＴを行う必要があるデータに関しても第１のＩＤＣＴ変換部（ＣＰＵ）１０４と第２のＩＤＣＴ変換部（アクセラレータ）１０５の処理できる性能を考慮して、係数データの分布によりＩＤＣＴを、第１のＩＤＣＴ変換部（ＣＰＵ）１０４で演算するか、第２のＩＤＣＴ変換部（アクセラレータ）で演算するかを決定し、演算を行うことに決定した第１のＩＤＣＴ変換部（ＣＰＵ）１０４または第２のＩＤＣＴ変換部（アクセラレータ）１０５に逆量子化部１０２から供給されたＤＣＴ係数データを供給する。
【００２９】
演算セレクタ部１０３は、あらかじめ第１のＩＤＣＴ変換部（ＣＰＵ）１０４と第２のＩＤＣＴ変換部（アクセラレータ）１０５の性能を考慮して決定された閾値Threshold_coefが設定されている。
演算セレクタ部１０３は、逆量子化部１０２で演算される有意係数データの分布フラグ（flag）をcoef_flagとおいた場合、分布フラグcoef_flagが閾値Threshold_coefより小さいか否か（coef_flag < Threshold_coefであるか）を判断し、その結果により第１のＩＤＣＴ変換部（ＣＰＵ）１０４で演算を行うか第２のＩＤＣＴ変換部（アクセラレータ）１０５でＩＤＣＴ演算を行うかを判断し、判断結果に応じて、逆量子化部１０２から供給されたＤＣＴ係数データを、第１のＩＤＣＴ変換部１０４または第２のＩＤＣＴ変換部１０５に供給する。
演算セレクタ部１０３は、ＤＣＴ係数データの第１のＩＤＣＴ変換部（ＣＰＵ）１０４または第２のＩＤＣＴ変換部（アクセラレータ）１０５への供給に並行して、第１のＩＤＣＴ変換部（ＣＰＵ）１０４または第２のＩＤＣＴ変換部１０５のいずれかの出力データを加算部１１０に選択的に出力させるためのセレクト信号Ｓ１０３を変換後セレクタ部１０６に出力する。
【００３０】
第１のＩＤＣＴ変換部（ＣＰＵ）１０４は、演算セレクタ部１０３により供給される逆量子化部１０２からのＤＣＴ係数データに対してＩＤＣＴ処理を行い、得られた画素データを変換後セレクタ部１０６に出力する。
また、第１のＩＤＣＴ変換部（ＣＰＵ）１０４は、ＩＤＣＴ処理以外の処理を行うことが可能なＣＰＵとして機能する。
【００３１】
第２のＩＤＣＴ変換部（アクセラレータ）１０５は、リコンフィギュアブル（再構築可能）な演算器を含み、演算セレクタ部１０３により供給される逆量子化部１０２からのＤＣＴ係数データに対してＩＤＣＴ処理を行い、得られた画素データを変換後セレクタ部１０６に出力する。
【００３２】
変換後セレクタ部１０６は、演算セレクタ部１０３により供給されたセレクト信号Ｓ１０３に応じて第１のＩＤＣＴ変換部（ＣＰＵ）１０４または第２のＩＤＣＴ変換部（アクセラレータ）１０５のいずれかの出力データを加算部１１０に選択的に出力する。
【００３３】
動きベクトルデコード部１０７は、可変長復号化部１０１によるデータにより動きベクトルをデコードし、その結果により動き補償予測部１０９に動作を制御する。
【００３４】
動き補償予測部１０９は、動きベクトルデコード部１０７により動作が制御され、加算部１１０でそのとき処理しているものがＩピクチャである場合、この加算部１１０に対して何らデータを供給しない。
動き補償予測部１０９は、加算部１１０でそのとき処理しているものがＰピクチャである場合、フレームメモリ１０８にアクセスして過去のフレームに相当する画像データを読み出し、これに所定の演算処理を行って得られた演算データを加算部１１０に供給する。
また、動き補償予測部１０９は、加算部１１０でそのとき処理しているものがＢピクチャである場合、フレームメモリ１０８にアクセスして過去および未来のフレームに相当する画像データを読み出し、これに所定の演算処理を行って得られた演算データを加算部１１０に供給する。
【００３５】
因みに、フレームメモリ１０８は、加算部１１０から順次出力される復号化された画像データのうち、ＩピクチャおよびＰピクチャに相当する画像データを保持するように構成されている。
そして加算部１１０は、そのとき処理しているものがＩピクチャである場合には、変換後セレクタ部１０６を介した第１のＩＤＣＴ変換部（ＣＰＵ）１０４または第２のＩＤＣＴ変換部（アクセラレータ）１０５からの画素データを、復号化された画像データとしてそのまま出力するように構成されている。
また、加算部１１０は、そのとき処理しているものがＰピクチャまたはＢピクチャである場合には、変換後セレクタ部１０６を介した第１のＩＤＣＴ変換部（ＣＰＵ）１０４または第２のＩＤＣＴ変換部（アクセラレータ）１０５からの画素データと動き補償予測部１０９からの演算データとを加算処理することにより、復号化された画像データを得て、出力するように構成されている。
【００３６】
本実施形態の画像処理装置１００は、逆量子化部１０２が逆量子化の処理ブロック毎に有意係数データの分布情報をフラグにして示す機能を有し、逆量子化部１０２によって示されたフラグを利用して、あらかじめ第１のＩＤＣＴ変換部（ＣＰＵ）１０４と第２のＩＤＣＴ変換部（アクセラレータ）１０５の性能を考慮して決定された閾値を基にＩＤＣＴを第１のＩＤＣＴ変換部（ＣＰＵ）１０４で演算するか第２のＩＤＣＴ変換部（アクセラレータ）１０５で演算するかを選択し、効率のよい並列処理を実現している。
以下、本実施形態に係る画像処理装置１００の動作をより具体的な機能、構成も含めて説明する。
【００３７】
図５は、本実施形態に係る画像処理装置における可変長復号化処理（ＶＬＤ）からＩＤＣＴ（逆離散コサイン変換）演算までの流れの一例を示すフローチャートである。
【００３８】
図５は、フレーム（Frame：1VOP)において、図３における可変長復号化部１０１、逆量子化部１０２、演算セレクタ部１０３、第１のＩＤＣＴ変換部（ＣＰＵ）１０４、第２のＩＤＣＴ変換部（アクセラレータ)１０５、および変換後セレクタ部１０６の各機能ブロックにおける動作をフロー図としてあらわしており、画像処理装置１００はフレームごとに図５に示すようなステップＳＴ１０１〜ＳＴ１２３の動作を繰り返してゆく。
【００３９】
まず始めに、処理しようとしているマクロブロック(以下、ＭＢという)のＭＢタイプによって処理を変更する必要がある。
前述したように、効率のよい並列化を目指すためには、極力ＩＤＣＴを行わなくて良いデータを第２のＩＤＣＴ変換部（アクセラレータ）１０５に転送することを避ける必要がある。
スキップされたＭＢ（skipped MB）は参照フレームをコピーしてくるだけでＩＤＣＴは行わなくて良いため、第２のＩＤＣＴ変換部（アクセラレータ）１０５にはそのブロックのデータを転送する必要はない。
【００４０】
次に、イントラ（intra）ＭＢとインタ（inter）ＭＢの区別である。アクセラレータ（第２のＩＤＣＴ変換部１０５）によっては、イントラ（intra）ＭＢとインタ（inter）ＭＢによって演算パスが異なる場合がある。
もし、演算パスが異なる場合、イントラ（intra）ＭＢとインタ（inter）ＭＢが来るたびにパスを変更する必要があるために、変更するたびごとに演算パスを変更させるサイクル数がかかる。
本実施形態においては、このような状態を防ぐために、イントラ（intra）ＭＢとインタ（inter）ＭＢのように演算パスが異なるものに対しては、別々にバッファをもたせデータを格納させる。
【００４１】
図６は、本実施形態において演算パスの異なるパスのバッファリングの例を示す図である。
【００４２】
図６に示すように、あるフレーム（ＶＬＤデータ）にインタＭＢ（Inter MB）２０１,イントラ（Intra MB）２０２,イントラＭＢ（Intra MB）２０３,インタＭＢ（Inter MB）２０４があるとする。
ここで第２のＩＤＣＴ変換部（アクセラレータ）１０５はイントラＭＢ（Intra MB）とインタＭＢ（Inter MB）の処理でパスが異なるため、このまま順番で第２のＩＤＣＴ変換部（アクセラレータ）１０５に転送するとＭＢごとに第２のＩＤＣＴ変換部（アクセラレータ）１０５の演算パスを変更する必要が生じてしまい、そのたびに無駄なオーバーヘッドが発生してしまう。
そのため、本実施形態においては、図６に示すように、あらかじめ演算パスの異なるイントラバッファ（Intra Buffer）２０５とインタバッファ（Inter Buffer）２０６というバッファを複数用意しておく。
用意されたイントラバッファ２０５，インタバッファ２０６には第２のＩＤＣＴ変換部（アクセラレータ）１０５に転送が必要なデータのみを格納する。図６の例では、イントラバッファ２０５にはイントラ（Intra MB）２０２,２０３が格納され、インタバッファ２０６にインタＭＢ（Inter MB）２０１,２０４が格納されている。
【００４３】
また、イントラバッファ（Intra Buffer）２０５とインタバッファ（Inter Buffer）２０６にデータ格納する際に、バッファごとに第２のＩＤＣＴ変換部（アクセラレータ）１０５での演算が完了したあとメインメモリ（あるいはフレームメモリ１０８）にストア（STORE）するためにインデックス（index）を作成しておく。
ここで、インデックスとは、第２のＩＤＣＴ変換部（アクセラレータ）１０５からのストア（STORE）転送命令を出す上で必要なブロックのパラメータを格納する配列である。
【００４４】
図７は、１ブロックのインデックスの構成例を示す図である。
【００４５】
図７の例では、インデックス（INDEX）には、第２のＩＤＣＴ変換部（アクセラレータ）１０５で演算されたＩＤＣＴ処理の結果を出力用のフレームメモリ１０８にストア（STORE）するために必要なブロックの先頭アドレス３０１やその他にアクセラレータ演算に必要なパラメータ３０２などが格納されているとする。
このパラメータ３０２を１フレームに含まれるブロックの個数分を配列で用意する。
このとき、演算セレクタ部１０３は、異なる演算パスごとにバッファを持たせるために、インデックスもイントラＭＢ（Intra MB）用インデックス３０３とインタＭＢ（Inter MB）用インデックス３０４の２つを用意して第２のＩＤＣＴ変換部（アクセラレータ）１０５へのロード（LOAD）/ストア（STORE）を行う。
【００４６】
次に、ブロック（block）単位の処理を説明する。
ＭＢは、復号処理の１単位であり、たとえば１６×１６のデータサイズを有する。ＭＢは４つの輝度ブロック(Y0,Y1,Y2,Y3)と２つの色差ブロック(Cb,Cr)とマクロブロックヘッダから形成される。
マクロブロックヘッダにはCBP(Coded Block Pattern)と呼ばれる可変長符号ＶＬＣがあり、これはＭＢに含まれるブロックのうち特定のブロックに有効なデータの存在の有無を示す情報である。
ＣＢＰを確認して有意係数データがないと判断された場合、有意係数データはないためにＩＤＣＴを行っても無駄である。そのため、無駄な作業を省きサイクル数を減少させるために、有意係数データを持つブロックを収集する。
しかし、このまま収集されたすべてのブロックを第２のＩＤＣＴ変換部（アクセラレータ）１０５に転送し演算を行っても良い。しかし、第１のＩＤＣＴ変換部（ＣＰＵ）１０４と第２のＩＤＣＴ変換部（アクセラレータ）１０５の性能の相互関係によっては、収集されたブロックデータをすべて転送することによって第２のＩＤＣＴ変換部（アクセラレータ）１０５に多くの負担がかかってしまう場合があり、図２に関連付けて説明したように逆に第１のＩＤＣＴ変換部（ＣＰＵ）１０４が第２のＩＤＣＴ変換部（アクセラレータ）１０５をポーリングするためのサイクル数が増加してしまい、トータルサイクル数が増加してしまう可能性がある。
【００４７】
そこで、本実施形態においては、前述したように、演算セレクタ部１０３が、第１のＩＤＣＴ変換部（ＣＰＵ）１０４と第２のＩＤＣＴ変換部（アクセラレータ）１０５の性能を考慮して閾値を決定して、ブロック毎に第１のＩＤＣＴ変換部（ＣＰＵ）１０４で演算を行うか第２のＩＤＣＴ変換部（アクセラレータ）１０５で演算行うかを振り分ける。
【００４８】
具体的には、ＩＤＣＴ演算の選択基準としての閾値をThreshold_coef、逆量子化部１０２で演算される有意係数データの分布フラグ（flag）をcoef_flagとおいた場合、演算セレクタ部１０３でcoef_flag < Threshold_coefかどうかを判断し、ブロック毎に第１のＩＤＣＴ変換部（ＣＰＵ）１０４でＩＤＣＴ演算を行うか第２のＩＤＣＴ変換部（アクセラレータ）１０５でＩＤＣＴ演算を行うかを判断する。
分布フラグcoef_flagを参照して、ＤＣ成分にのみ係数データが残っているものや、少ないＡＣ成分にのみ係数データがある場合は、その都度アクセラレータにロード（LOAD）してから演算して、ストア（STORE）するよりは、あらかじめ第１のＩＤＣＴ変換部（ＣＰＵ）１０４のみで処理したほうが、サイクル数が減少する場合がある。
【００４９】
そのため、本例としては、図８（Ａ）に示すように、最大でも８×８ブロックで縦の第１ライン（First line）に有意係数データが収まっているブロック４０１や、図８（Ｂ）に示すように、最大でも係数分布が横の第２ライン（Second line）までに有意係数データが収まっているようなブロック４０２のような係数分布のブロックは、第１のＩＤＣＴ変換部（ＣＰＵ）１０４でＩＤＣＴ演算を行うように閾値を決定する。
仮に、このブロック４０１の閾値をThreshold_coef1とし、ブロック４０２の閾値をThreshold_coef2とする。
【００５０】
ここで、図９のようなインタＭＢ（inter MB）を処理する場合を一つの例として、本実施形態における処理の流れを説明する。
【００５１】
図９に示すようなインタＭＢ（inter MB）が存在する場合、まず可変長復号化部１０１で可変長復号化処理が行われる。可変長復号化処理された各ブロックのＤＣＴ係数データは逆量子化部１０２で逆量子化(IQ)と同時に係数データの分布を調べ、その結果を分布フラグcoef_flagとして格納し、係数分布信号Ｓ１０２として演算セレクタ部１０３に渡す。
次に、演算セレクタ部１０３では、送られてきた逆量子化（IQ）後ＤＣＴ係数データに対して、ＣＢＰを確認して有意係数データがあるかどうかのチェックを行う。もし、有意係数データがないのであればＩＤＣＴ処理を行う必要なないため、そのブロックを排除する。
図９（Ａ）においては、Y3ブロック５０１において有意係数データがないものとする。そのため、Y3ブロック５０１のみ排除し、その他のY0,Y1,Y2,Cb,Crの各ブロックに対してはＩＤＣＴ演算を行う。
次に、演算セレクタ部１０３においては、第１のＩＤＣＴ変換部（ＣＰＵ）１０４か第２のＩＤＣＴ変換部（アクセラレータ）１０５でＩＤＣＴ演算を行うかの選択を行う。
【００５２】
本例として、閾値は図８（Ａ）のブロック４０１のような閾値Threshold_coef1と、図８（Ｂ）のブロック４０２のような閾値Threshold_coef2としている。
図１０は、本例における演算セレクタ部１０３での動作を示すフローチャートである。
【００５３】
演算セレクタ部１０３でブロックごとに coef_flag < Threshold_coef1または、 coef_flag < Threshold_coef2の比較を行い判断する（ＳＴ１３１）。
各ブロックが図１１（Ａ）〜（Ｆ）のような係数分布をもっている場合(塗りつぶされている部分に係数データがあるとする)、図１１（Ａ）のY0ブロック６０１に関してはcoef_flag < Threshold_coef1が成り立ち、図１１（Ｆ）のCrブロック６０６に関してはcoef_flag < Threshold_coef2が成り立つため、閾値の範囲内の係数分布となる。このため、即座に第１のＩＤＣＴ変換部（ＣＰＵ）１０４でＩＤＣＴ演算が行われ、図１２（Ａ）〜（Ｃ）のように出力フレームバッファにＩＤＣＴされた結果が格納される（ＳＴ１３２）。
また、Y1ブロック６０２,Y2ブロック６０３,Cbブロック６０５に関しては閾値の範囲外であるために第２のＩＤＣＴ変換部（アクセラレータ）１０５に転送して演算を行うようにする。
【００５４】
次に、第２のＩＤＣＴ変換部（アクセラレータ）１０５によって演算されることが決定したY1ブロック６０２,Y2ブロック６０３,Cbブロック６０５は、第２のＩＤＣＴ変換部（アクセラレータ）１０５で演算するために、図６で示したようなインタバッファ（Inter Buffer）２０６にＤＣＴ係数を格納する（ＳＴ１３３）。
本例では、図１３に示すように、第２のＩＤＣＴ変換部（アクセラレータ）１０５に転送するためのラインバッファ２１０はY1ブロック６０２,Y2ブロック６０３,Cbブロック６０５のならびで連続して格納される。
また、バッファへの格納と並行して図７のように転送に必要なインデックス（Index）を作成する。
前述したように、バッファやインデックスは演算パスの切り替えのロスをなくすためにイントラＭＢ（intra MB）とインタＭＢ（inter MB）で別々に作成するために、今回の例ではインタＭＢ（inter MB）用バッファ２０６を使用する。
インデックス（Index）にはＩＤＣＴ演算後に第２のＩＤＣＴ演算部（アクセラレータ）１０５からストア（STORE）する出力バッファの各ブロックの先頭アドレスなどが必要となる。
そのため、ステップＳＴ１３４において、図１４のような状態でインデックスに書き込む(出力領域の先頭アドレスの例は図１５に示す)。これが、１ＭＢに対しての第２のＩＤＣＴ変換部（アクセラレータ）１０５に転送する有意係数データを持つブロックのインデックスの収集の流れとなる。
【００５５】
次に、この１ＭＢの一連の流れが終了するたびに、インデックスに収集されたブロック数を確認する。このブロック数が指定した個数を超え、第２のＩＤＣＴ変換部（アクセラレータ）１０５が非ビジー（non busy）の場合に、第２のＩＤＣＴ変換部（アクセラレータ）１０５に有意係数データを持つブロックを一塊として演算命令を出す。この場合、１回で第２のＩＤＣＴ変換部（アクセラレータ）１０５に転送するブロックの個数も第１のＩＤＣＴ変換部（ＣＰＵ）１０４と第２のＩＤＣＴ変換部（アクセラレータ）１０５の性能によって決定する。
しかし、第２のＩＤＣＴ変換部（アクセラレータ）１０５が前回転送したブロックをまだ処理していてビジー（busy）状態の場合は演算命令を出さない。
例として図１６に示すように、インタバッファ（Inter Buffer）２０６にＮ個以上のブロックが格納された場合は、図１７に示すように、メインメモリ１１１からバス１１２を使用して、第２のＩＤＣＴ変換部（アクセラレータ）１０５のローカルメモリ１０５１にＮ個のブロックデータ２１１を転送し演算器１０５２で演算を行う。
【００５６】
第２のＩＤＣＴ変換部（アクセラレータ）１０５の演算が終わった場合は、変換後セレクタ部１０６において、演算セレクタ部１０３で作成されたインデックスを示すセレクト信号Ｓ１０３を参照して、図１８（Ａ）〜（Ｃ）に示すように、出力フレームバッファにＩＤＣＴ演算された結果を格納する。
また、第２のＩＤＣＴ変換部（アクセラレータ）１０５の使用時は第１のＩＤＣＴ変換部（ＣＰＵ）１０４で並列しその他の処理を行う。また、このような処理の流れを繰り返すことによって並列の効率化を高める。
【００５７】
図１９は、本実施形態に係る手法で演算を行った際の、第１のＩＤＣＴ変換部（ＣＰＵ）１０４と第２のＩＤＣＴ変換部（アクセラレータ）１０５の並列化の効率について例示して示す図である。
閾値を第１のＩＤＣＴ変換部（ＣＰＵ）１０４と第２のＩＤＣＴ変換部（アクセラレータ）１０５の性能を考慮し、無駄なオーバーヘッドを減らしたため、第１のＩＤＣＴ変換部（ＣＰＵ）１０４の演算実行期間７０１と第２のＩＤＣＴ変換部（アクセラレータ）１０５の演算実行期間７０２は比較的等しくなり、図２と比較しＣＰＵが何も処理していない期間が減少する。
【００５８】
以上説明したように、本実施形態によれば、復号された量子化データを逆量子化する際に、逆量子化の処理ブロック毎に有意係数データの分布情報をフラグにしてこのフラグを係数分布信号Ｓ１０２として出力する逆量子化部１０２と、逆量子化部１０２による係数分布信号Ｓ１０２を受けて、極力ＩＤＣＴを行わなくて良いデータに関しては第２のＩＤＣＴ変換部（アクセラレータ）１０５に転送するのを避け、ＩＤＣＴを行う必要があるデータに関しても第１のＩＤＣＴ変換部（ＣＰＵ）１０４と第２のＩＤＣＴ変換部（アクセラレータ）１０５の処理できる性能を考慮して、係数データの分布によりＩＤＣＴを、第１のＩＤＣＴ変換部（ＣＰＵ）１０４で演算するか、第２のＩＤＣＴ変換部（アクセラレータ）で演算するかを決定し、演算を行うことに決定した第１のＩＤＣＴ変換部（ＣＰＵ）１０４または第２のＩＤＣＴ変換部（アクセラレータ）１０５に逆量子化部１０２から供給されたＤＣＴ係数データを供給する演算セレクタ部１０３とを有することから、複数の処理装置による効率のよい並列化が実現でき、また、サイクル数は削減することができる。
以上の構成を実際にMPEG4 デコーダ（decoder）に実装したところ、約10%のサイクル数削減を実現した。
【００５９】
また、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、ＣＰＵ等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー（登録商標）ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
【図面の簡単な説明】
【００６０】
【図１】アクセラレータを含む回路の概略ブロック図である。
【図２】ＭＰＥＧでフレーム（Frame）内の全てのブロック（block）をアクセラレータに転送しＩＤＣＴ演算を行った場合の、ＣＰＵとアクセラレータの並列化効率について説明するための図である。
【図３】本発明の実施形態に係る画像処理装置の構成を示すブロック図である。
【図４】本実施形態に係る逆量子化部におけるジグザグスキャンによる逆量子化処理と、係数のフラグ管理を説明するための図である。
【図５】本実施形態に係る画像処理装置における可変長復号化処理（ＶＬＤ）からＩＤＣＴ演算までの流れの一例を示すフローチャートである。
【図６】本実施形態において演算パスの異なるパスのバッファリングの例を示す図である。
【図７】１ブロックのインデックスの構成例を示す図である。
【図８】ブロック係数分布の閾値例を説明するための図である。
【図９】フレームバッファにおけるＭＢデータ（skipped MB 選択後)の配置例を示す図である。
【図１０】本例における演算セレクタ部での動作を示すフローチャートである。
【図１１】閾値を利用した第１のＩＤＣＴ変換部（ＣＰＵ）と第２のＩＤＣＴ変換部（アクセラレータ）の選択例を示す図である。
【図１２】フレームバッファのブロックデータの閾値利用後の配置例を示す図である。
【図１３】第２のＩＤＣＴ変換部（アクセラレータ）に転送されるラインバッファにおけるブロックデータの配置例を示す図である。
【図１４】ラインバッファにおけるインデックス配列例を示す図である。
【図１５】フレームバッファのブロックデータの配置例を示す図であって、インデックスに対するアドレス位置を示す図である。
【図１６】インタバッファ（Inter Buffer）にＮ個以上のブロックが格納された場合を示す図である。
【図１７】Ｎ個のブロックを第２のＩＤＣＴ変換部（アクセラレータ）に転送して演算を行う例を説明するための図である。
【図１８】フレームバッファのブロックデータの配置例を示す図である。
【図１９】本実施形態に係る手法で演算を行った際の、第１のＩＤＣＴ変換部（ＣＰＵ）と第２のＩＤＣＴ変換部（アクセラレータ）の並列化の効率について例示して示す図である。
【符号の説明】
【００６１】
１００・・・画像処理装置、１０１・・・変長復号化部、１０２・・・逆量子化部、１０３・・・演算セレクタ部、１０４・・・ＩＤＣＴ変換部（ＣＰＵ）、１０５・・・ＩＤＣＴ変換部（アクセラレータ）、１０６・・・変換後セレクタ部、１０７・・・動きベクトルデコード部、１０８・・・フレームメモリ、１０９・・・動き補償予測部、１１０・・・加算部。
【図１】
2008288986.tif 000003
【図２】
2008288986.tif 000004
【図３】
2008288986.tif 000005
【図４】
2008288986.tif 000006
【図５】
2008288986.tif 000007
【図６】
2008288986.tif 000008
【図７】
2008288986.tif 000009
【図８】
2008288986.tif 000010
【図９】
2008288986.tif 000011
【図１０】
2008288986.tif 000012
【図１１】
2008288986.tif 000013
【図１２】
2008288986.tif 000014
【図１３】
2008288986.tif 000015
【図１４】
2008288986.tif 000016
【図１５】
2008288986.tif 000017
【図１６】
2008288986.tif 000018
【図１７】
2008288986.tif 000019
【図１８】
2008288986.tif 000020
【図１９】
2008288986.tif 000021