(57)【要約】【課題】符号の切り出しを含むデータ伸張装置全体としての処理速度を、本発明を用いない場合よりも高速化できるようにする。【解決手段】カテゴリ０判定部２２０は、シフト部２０６から供給された未処理データの先頭部分が、前ブロックと直流成分が等しいカテゴリ０を示す符号「００」の後にブロック終端符号「１０１０」が続く６ビットのパターンに一致するか否かを判定する。一致しない場合は、従来構成と同様、有効符号長検出部２０８にその先頭部分の有効符号長を検出させ、その先頭部分の有効符号長のデータをハフマンデコーダ２６０及びＪＰＥＧコード伸張部１０６に処理させる。一致する場合は、有効符号長検出部２０８の出力を無効化し、第３セレクタ１１４ａがブロック生成部１１２ａ側を選択し、前ブロックと同じＤＣ成分値１ブロック分を出力する。この場合、有効符号長検出部２０８の処理結果を用いない分だけ処理が速くなる。【選択図】図４
2015130640.tif 000002
【特許請求の範囲】
【請求項１】
伸張対象の圧縮画像データの先頭部分の有効符号長を検出し、検出した有効符号長を伸張手段に供給し、前記伸張手段が前記圧縮画像データの先頭から前記有効符号長のデータを伸張できるようにする有効符号長検出手段と、
前記伸張対象の圧縮画像データの先頭部分が、特定の直流差分値を表す符号の後にブロック終端符号が続く特定パターンであるか否かを判定し、前記伸張対象の圧縮画像データの先頭部分が前記特定パターンであると判定した場合に、前記有効符号長検出手段が有効符号長を検出するのを待たずに、前記特定パターンが検知されたことを前記伸張手段に通知し、前記伸張手段に前記特定の直流差分値に対応するあらかじめ定められた伸張結果を出力させる判定手段と、
を有するデータ伸張装置。
【請求項２】
前記特定の直流差分値を表す符号は、直前のブロックとの間の直流成分の差が０であることを示すカテゴリ０符号である、ことを特徴とする請求項１に記載のデータ伸張装置。
【請求項３】
再構成可能回路と、
第１回路構成と第２回路構成とを前記再構成可能回路上に再構成する制御を行う再構成制御手段と、
を備え、
前記第１回路構成は、
前記判定手段の回路と、
前記有効符号長検出手段の回路と、
前記伸張対象の圧縮画像データの先頭部分が前記特定パターンでないと前記判定手段の回路が判定した場合に、前記圧縮画像データの先頭から前記有効符号長検出手段の検出した有効符号長のデータを、前記圧縮画像データの圧縮方式に応じた伸張方式を用いて伸張する回路と、
前記伸張対象の圧縮画像データの先頭部分が前記特定パターンであると前記判定手段の回路が判定した場合に、前記再構成制御手段に対して前記第２回路構成への再構成を要求する回路と、
を有し、
前記第２回路構成は、
前記判定手段の回路と、
前記伸張対象の圧縮画像データの先頭部分が前記特定パターンであると前記判定手段の回路が判定した場合に前記特定の直流差分値に対応するあらかじめ定められた伸張結果を出力する回路と、
前記伸張対象の圧縮画像データの先頭部分が前記特定パターンでないと前記判定手段の回路が判定した場合に、前記再構成制御手段に対して前記第１回路構成への再構成を要求する回路と、
を有する、ことを特徴とする請求項１又は２に記載のデータ伸張装置。
【請求項４】
前記判定手段は、前記伸張対象の圧縮画像データの先頭部分が、前記特定パターンがあらかじめ定めた回数連続するパターンであるか否かを判定し、この判定において前記特定パターンがあらかじめ定めた回数連続するパターンであると判定した場合に、前記伸張手段に前記特定の直流差分値に対応するあらかじめ定められた伸張結果を前記あらかじめ定めた回数連続して出力させる、ことを特徴とする請求項２に記載のデータ伸張装置。
【請求項５】
再構成可能回路と、
第１回路構成と第２回路構成とを前記再構成可能回路上に再構成する制御を行う再構成制御手段と、
を備え、
前記第１回路構成は、
前記判定手段の回路と、
前記有効符号長検出手段の回路と、
前記伸張対象の圧縮画像データの先頭部分が前記特定パターンでないと前記判定手段の回路が判定した場合に、前記圧縮画像データの先頭から前記有効符号長検出手段の検出した有効符号長のデータを、前記圧縮画像データの圧縮方式に応じた伸張方式を用いて伸張する回路と、
前記伸張対象の圧縮画像データの先頭部分が前記特定パターンであると前記判定手段の回路が判定した場合に、前記再構成制御手段に対して前記第２回路構成への再構成を要求する回路と、
を有し、
前記第２回路構成は、
前記判定手段の回路と、
前記伸張対象の圧縮画像データの先頭部分が前記特定パターンが前記あらかじめ定めた回数連続するパターンであると前記判定手段の回路が判定した場合に前記特定の直流差分値に対応するあらかじめ定められた伸張結果を前記あらかじめ定められた回数出力する回路と、
前記伸張対象の圧縮画像データの先頭部分が前記特定パターンが前記あらかじめ定めた回数連続するパターンでないと前記判定手段の回路が判定した場合に、前記再構成制御手段に対して前記第１回路構成への再構成を要求する回路と、
を有する、ことを特徴とする請求項４に記載のデータ伸張装置。
【請求項６】
コンピュータを、
伸張対象の圧縮画像データの先頭部分の有効符号長を検出し、検出した有効符号長を伸張手段に供給し、前記伸張手段が前記圧縮画像データの先頭から前記有効符号長のデータを伸張できるようにする有効符号長検出手段、
前記伸張対象の圧縮画像データの先頭部分が、特定の直流差分値を表す符号の後にブロック終端符号が続く特定パターンであるか否かを判定し、前記伸張対象の圧縮画像データの先頭部分が前記特定パターンであると判定した場合に、前記有効符号長検出手段が有効符号長を検出するのを待たずに、前記特定パターンが検知されたことを前記伸張手段に通知し、前記伸張手段に前記特定の直流差分値に対応するあらかじめ定められた伸張結果を出力させる判定手段、
として機能させるためのプログラム。
【請求項７】
コンピュータを、
伸張対象の圧縮画像データの先頭部分の有効符号長を検出し、検出した有効符号長を伸張手段に供給し、前記伸張手段が前記圧縮画像データの先頭から前記有効符号長のデータを伸張できるようにする有効符号長検出手段、
前記伸張対象の圧縮画像データの先頭部分が、特定の直流差分値を表す符号の後にブロック終端符号が続く特定パターンであるか否かを判定し、前記伸張対象の圧縮画像データの先頭部分が前記特定パターンであると判定した場合に、前記有効符号長検出手段が有効符号長を検出するのを待たずに、前記特定パターンが検知されたことを前記伸張手段に通知し、前記伸張手段に前記特定の直流差分値に対応するあらかじめ定められた伸張結果を出力させる判定手段、
として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項８】
伸張対象の圧縮データの先頭部分の有効符号長を検出する検出手段と、
前記伸張対象の圧縮データの先頭部分が、特定の直流差分値を表す符号の後にブロック終端符号が続く特定パターンである場合、前記検出手段による前記有効符号長の検出を待たずに、前記特定の直流差分値に対応する予め定められた伸張結果を出力する出力手段と、
を有するデータ伸張装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ伸張装置、プログラムおよび記録媒体に関する。
【背景技術】
【０００２】
ＪＰＥＧ（Joint Photographic Experts Group）等の圧縮方式に従って圧縮された画像データを伸張する伸張装置の中には、様々な方式で伸張速度の向上を図っているものがある。
【０００３】
例えば特許文献１に開示される装置は、ＪＰＥＧ符号が背景ブロック（ＤＣ成分のみ）を示しているか否かを判定し、背景ブロックであると判定した場合は、通常の伸長処理を行う代わりに、あらかじめ分かっている均一なＤＣ成分を１ブロック分を出力することで、ＪＰＥＧ伸長の高速化を図っている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−００５０７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
圧縮画像データ中の符号が背景ブロックを示しているかどうかを適切に判定するには、圧縮画像データ中からその符号を適切に切り出す必要がある。この符号の切り出しのために時間が掛かると、背景ブロックのデータを高速に出力できる手段を有していても、装置全体としての処理速度は符号切り出しの速度により制限されてしまう。
【０００６】
本発明は、符号の切り出しを含むデータ伸張装置全体としての処理速度を、本発明を用いない場合よりも高速化できるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
請求項１に係る発明は、伸張対象の圧縮画像データの先頭部分の有効符号長を検出し、検出した有効符号長を伸張手段に供給し、前記伸張手段が前記圧縮画像データの先頭から前記有効符号長のデータを伸張できるようにする有効符号長検出手段と、前記伸張対象の圧縮画像データの先頭部分が、特定の直流差分値を表す符号の後にブロック終端符号が続く特定パターンであるか否かを判定し、前記伸張対象の圧縮画像データの先頭部分が前記特定パターンであると判定した場合に、前記有効符号長検出手段が有効符号長を検出するのを待たずに、前記特定パターンが検知されたことを前記伸張手段に通知し、前記伸張手段に前記特定の直流差分値に対応するあらかじめ定められた伸張結果を出力させる判定手段と、を有するデータ伸張装置である。
【０００８】
請求項２に係る発明は、前記特定の直流差分値を表す符号は、直前のブロックとの間の直流成分の差が０であることを示すカテゴリ０符号である、ことを特徴とする請求項１に記載のデータ伸張装置である。
【０００９】
請求項３に係る発明は、再構成可能回路と、第１回路構成と第２回路構成とを前記再構成可能回路上に再構成する制御を行う再構成制御手段と、を備え、前記第１回路構成は、前記判定手段の回路と、前記有効符号長検出手段の回路と、前記伸張対象の圧縮画像データの先頭部分が前記特定パターンでないと前記判定手段の回路が判定した場合に、前記圧縮画像データの先頭から前記有効符号長検出手段の検出した有効符号長のデータを、前記圧縮画像データの圧縮方式に応じた伸張方式を用いて伸張する回路と、前記伸張対象の圧縮画像データの先頭部分が前記特定パターンであると前記判定手段の回路が判定した場合に、前記再構成制御手段に対して前記第２回路構成への再構成を要求する回路と、を有し、前記第２回路構成は、前記判定手段の回路と、前記伸張対象の圧縮画像データの先頭部分が前記特定パターンであると前記判定手段の回路が判定した場合に前記特定の直流差分値に対応するあらかじめ定められた伸張結果を出力する回路と、前記伸張対象の圧縮画像データの先頭部分が前記特定パターンでないと前記判定手段の回路が判定した場合に、前記再構成制御手段に対して前記第１回路構成への再構成を要求する回路と、を有する、ことを特徴とする請求項１又は２に記載のデータ伸張装置である。
【００１０】
請求項４に係る発明は、前記判定手段は、前記伸張対象の圧縮画像データの先頭部分が、前記特定パターンがあらかじめ定めた回数連続するパターンであるか否かを判定し、この判定において前記特定パターンがあらかじめ定めた回数連続するパターンであると判定した場合に、前記伸張手段に前記特定の直流差分値に対応するあらかじめ定められた伸張結果を前記あらかじめ定めた回数連続して出力させる、ことを特徴とする請求項２に記載のデータ伸張装置である。
【００１１】
請求項５に係る発明は、再構成可能回路と、第１回路構成と第２回路構成とを前記再構成可能回路上に再構成する制御を行う再構成制御手段と、を備え、前記第１回路構成は、前記判定手段の回路と、前記有効符号長検出手段の回路と、前記伸張対象の圧縮画像データの先頭部分が前記特定パターンでないと前記判定手段の回路が判定した場合に、前記圧縮画像データの先頭から前記有効符号長検出手段の検出した有効符号長のデータを、前記圧縮画像データの圧縮方式に応じた伸張方式を用いて伸張する回路と、前記伸張対象の圧縮画像データの先頭部分が前記特定パターンであると前記判定手段の回路が判定した場合に、前記再構成制御手段に対して前記第２回路構成への再構成を要求する回路と、を有し、前記第２回路構成は、前記判定手段の回路と、前記伸張対象の圧縮画像データの先頭部分が前記特定パターンが前記あらかじめ定めた回数連続するパターンであると前記判定手段の回路が判定した場合に前記特定の直流差分値に対応するあらかじめ定められた伸張結果を前記あらかじめ定められた回数出力する回路と、前記伸張対象の圧縮画像データの先頭部分が前記特定パターンが前記あらかじめ定めた回数連続するパターンでないと前記判定手段の回路が判定した場合に、前記再構成制御手段に対して前記第１回路構成への再構成を要求する回路と、を有する、ことを特徴とする請求項４に記載のデータ伸張装置である。
【００１２】
請求項６に係る発明は、コンピュータを、伸張対象の圧縮画像データの先頭部分の有効符号長を検出し、検出した有効符号長を伸張手段に供給し、前記伸張手段が前記圧縮画像データの先頭から前記有効符号長のデータを伸張できるようにする有効符号長検出手段、前記伸張対象の圧縮画像データの先頭部分が、特定の直流差分値を表す符号の後にブロック終端符号が続く特定パターンであるか否かを判定し、前記伸張対象の圧縮画像データの先頭部分が前記特定パターンであると判定した場合に、前記有効符号長検出手段が有効符号長を検出するのを待たずに、前記特定パターンが検知されたことを前記伸張手段に通知し、前記伸張手段に前記特定の直流差分値に対応するあらかじめ定められた伸張結果を出力させる判定手段、として機能させるためのプログラムである。
【００１３】
請求項７に係る発明は、コンピュータを、伸張対象の圧縮画像データの先頭部分の有効符号長を検出し、検出した有効符号長を伸張手段に供給し、前記伸張手段が前記圧縮画像データの先頭から前記有効符号長のデータを伸張できるようにする有効符号長検出手段、前記伸張対象の圧縮画像データの先頭部分が、特定の直流差分値を表す符号の後にブロック終端符号が続く特定パターンであるか否かを判定し、前記伸張対象の圧縮画像データの先頭部分が前記特定パターンであると判定した場合に、前記有効符号長検出手段が有効符号長を検出するのを待たずに、前記特定パターンが検知されたことを前記伸張手段に通知し、前記伸張手段に前記特定の直流差分値に対応するあらかじめ定められた伸張結果を出力させる判定手段、として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【００１４】
請求項８に係る発明は、伸張対象の圧縮データの先頭部分の有効符号長を検出する検出手段と、前記伸張対象の圧縮データの先頭部分が、特定の直流差分値を表す符号の後にブロック終端符号が続く特定パターンである場合、前記検出手段による前記有効符号長の検出を待たずに、前記特定の直流差分値に対応する予め定められた伸張結果を出力する出力手段と、を有するデータ伸張装置である。
【発明の効果】
【００１５】
請求項１、６、７又は８に係る発明によれば、符号の切り出しを含むデータ伸張装置全体としての処理速度を、本発明を用いない場合よりも高速化できる。
【００１６】
請求項２に係る発明によれば、実際の印刷対象の文書において出現割合が高いカテゴリ０の直流成分のみのブロックを、本発明を用いない場合よりも高速に伸張することができる。
【００１７】
請求項３又は５に係る発明によれば、データ伸張装置の全回路を再構成可能回路上に再構成する場合よりも、再構成可能回路上の回路規模を小さくすることができる。
【００１８】
請求項４に係る発明によれば、特定のパターンを１つずつ検出する場合よりも、伸張処理を高速に実行することができる。
【図面の簡単な説明】
【００１９】
【図１】実施形態の仕組みが適用される画像データ復号装置の一例を示す図である。
【図２】画像データ復号装置内のハフマンデコード部の構成例を示す図である。
【図３】ハフマンデコード部の符号切り出し処理を説明するための図である。
【図４】実施形態の画像データ復号装置の要部構成を示す図である。
【図５】実施形態の画像データ復号装置をＤＲＰへの実装のために２つのコンフィギュレーション（コンフィグ）に分けた場合の、通常のＪＰＥＧ伸張を行うコンフィグの例を示す図である。
【図６】実施形態の画像データ復号装置をＤＲＰへの実装のために２つのコンフィギュレーション（コンフィグ）に分けた場合の、カテゴリ０の背景ブロック専用の伸張を行うコンフィグの例を示す図である。
【図７】実施形態の画像データ復号装置をＤＲＰへ実装した場合のシステム構成の例を示す図である。
【発明を実施するための形態】
【００２０】
まず図１を参照して、実施形態の構成を適用し得る画像データ復号装置の構成例を説明する。この画像データ復号装置は、特許文献１に示されるものと同様のものである。図１の画像データ復号装置は、ＪＰＥＧ伸張処理部１００、背景データ判定部１１０、均一データブロック生成部１１２、出力セレクタ１１４及び出力部１１６を備える。ＪＰＥＧ伸張処理部１００は、ＪＰＥＧ圧縮された圧縮画像データをＪＰＥＧ方式に従って伸張する回路であり、入力データ取り込み部１０２、ハフマンデコード部１０４、ＪＰＥＧコード伸張部１０６、及び、ブロック生成部１０８を備える。入力データ取り込み部１０２は、復号対象であるＪＰＥＧ圧縮された画像データを受信する回路である。
【００２１】
周知のように、ＪＰＥＧ方式の画像圧縮では、大まかに言えば、ビットマップ画像データを８×８画素のブロック単位に分割し、ブロックに対してＤＣＴ（離散コサイン変換）を行って周波数領域での８×８の周波数成分へと変換する。これら各周波数成分のうち、最も低周波数（例えば周波数０）の成分が直流（ＤＣ）成分であり、これはブロック内の画素値の平均を表す。ＤＣ成分より高い６３個の各周波数成分は交流（ＡＣ）成分と呼ばれる。このＤＣＴ結果の各周波数成分は量子化テーブルを用いて量子化される。１ブロック分の量子化後の各成分をジグザグスキャン順序で並べると、一般には、ＤＣ成分から始まり、その後にＡＣ成分が続くデータとなる。そして、このジグザグスキャン順序の各成分の量子化結果の並びをハフマン符号化することで、最終的なＪＰＥＧ圧縮画像データが得られる。ハフマン符号化処理では、ＤＣ成分は単独で（場合によっては直前のブロックのＤＣ成分との差分が）ハフマン符号に変換される。ＤＣ成分の後に続くＡＣ成分は、量子化により値が０の成分が多いため、連続する０の数（ゼロランと呼ばれる）とそのあとに続く非ゼロの成分値との組がハフマン符号化される。このように、１ブロックの画像は、最終的に、１つのＤＣ成分のハフマン符号と、その後に続くゼロランと非ゼロＡＣ成分の組のハフマン符号（０個以上）とからなるハフマン符号データに変換される。ここで、このハフマン符号化処理では、ジグザグスキャン順序である周波数成分（量子化結果）以降の全ての成分の値が０の場合、当該周波数成分以降の高周波成分をまとめて１つのブロック終端符号（ＥＯＢマーカと呼ぶ。ＥＯＢはEnd Of Blockの略）で表現することで、データ量の削減を図っている。
【００２２】
ハフマンデコード部１０４は、このようなＪＰＥＧ圧縮画像データを構成するハフマン符号を順に復号する。ＪＰＥＧコード伸張部１０６は、ハフマン復号結果のデータに対して逆量子化やＩＤＣＴ（逆離散コサイン変換）を行い、１ブロック（８×８画素）の各画素の画素値を求める。ハフマンデコード部１０４が行う復号処理、及びＪＰＥＧコード伸張部１０６が行う伸張処理は、従来公知の方式に従ったものでよい。
【００２３】
ブロック生成部１０８は、ＪＰＥＧコード伸張部１０６の復号結果である１ブロック（８×８画素）分の画素値をバッファメモリに蓄積することで、１ブロック分の画像データを生成する。ブロック生成部１０８が生成した１ブロックの各画素の値は、出力セレクタ１１４を介して出力部１１６へと出力される。出力部１１６は、その各画素値を、例えばこの画像データ復号装置に対して復号処理を依頼した上位システム（例えば画像処理アプリケーションなど）などといった出力先システムに対して出力する。
【００２４】
図１の例では、ハフマンデコード部１０４の出力は、直接ＪＰＥＧコード伸張部１０６に入力されるのではなく、背景データ判定部１１０を介することになる。
【００２５】
背景データ判定部１１０は、ハフマンデコード部１０４から出力されるブロックのハフマン復号結果が、「背景」（すなわちＤＣ成分の直後にＥＯＢマーカが続くブロック）を表しているかどうかを判定する。ＤＣ成分の直後にＥＯＢマーカが続く場合、当該ブロックにはＤＣ成分しか存在しないので、８×８の全画素がそのＤＣ成分の示す均一な値となる。このように全画素が均一な値となるブロックは絵柄のないブロックなので、「背景」ブロックと呼ぶ。背景データ判定部１１０は、背景でないと判定したブロックのデータはＪＰＥＧコード伸張部１０６に供給し、背景であると判定したブロックのデータは均一データブロック生成部１１２に供給する。
【００２６】
均一データブロック生成部１１２は、背景データ判定部１１０から供給されたブロックのデータ（この場合ＤＣ成分のみ）から、８×８の全ての画素がそのＤＣ成分に対応した同一の画素値を持つブロックのデータを生成し、出力セレクタ１１４に対して出力する。これら１ブロックの各画素値は、出力セレクタ１１４を介して出力部１１６へと出力され、この出力部１１６から出力システムに対して出力される。
【００２７】
出力セレクタ１１４は、背景データ判定部１１０から供給される背景データフラグ（「背景」か否かの判定結果を示すフラグデータのこと）を受け取り、判定結果が「背景でない」であればブロック生成部１０８を、「背景である」であれば均一データブロック生成部１１２を選択する。そして、選択した側から供給される各画素値を出力部１１６に出力する。
【００２８】
ここで、ハフマンデコード部１０４を論理回路として構成する場合、１つの例として図２に示す回路構成とすることが考えられる。図２に例示するハフマンデコード部１０４は、ＤＲＰ（Dynamic Reconfigurable Processor：動的再構成可能プロセッサ）を用いて構成した場合の例である。図２のハフマンデコード部１０４は、符号切り出し部２００と、有効符号入力部２５０と、ハフマンデコーダ２６０を含む。
【００２９】
符号切り出し部２００は、入力データ取り込み部１０２から取り込まれる圧縮画像データの先頭から順に、１符号ずつ符号を切り出す。有効符号入力部２５０は、符号切り出し部２００が１符号ずつ切り出した有効符号のデータをハフマンデコーダ２６０に入力する。ハフマンデコーダ２６０は、入力された有効符号を従来と同様の方式で復号する。
【００３０】
符号切り出し部２００は、ＦＩＦＯ２０２、符号バッファ２０４、シフト部２０６、有効符号長検出部２０８、符号長加算部２１０、更新判定部２１２を含む。
【００３１】
ＦＩＦＯ２０２は、入力データ取り込み部１０２が取り込んだＪＰＥＧ圧縮画像データを保持する先入れ先出し方式のメモリである。ＦＩＦＯ２０２に保持されたデータは、先頭から順に取り出され、符号バッファ２０４に入れられる。ＦＩＦＯ２０２の先頭からデータが取り出されると、取り出されたのと同量のＪＰＥＧ圧縮画像データが入力データ取り込み部１０２から取り込まれ、ＦＩＦＯ２０２内の残りのデータの後ろに追加される。
【００３２】
符号バッファ２０４は、切り出し対象の符号を含んだデータ列を一時的に保持するバッファである。１つの例では、符号バッファ２０４は、図３に示すように３２ビットワードのデータを２ワード保持するバッファであり、１ワード分ずつデータを更新可能である。
【００３３】
シフト部２０６は、符号バッファ２０４から、切り出し対象の符号を含んだ読み出す回路である。シフト部２０６は、符号バッファ２０４から読み出すデータの先頭アドレスを、それまでに切り出した有効符号の符号長に応じてシフトしていく。シフト部２０６が読み出したデータ列は、有効符号長検出部２０８と有効符号入力部２５０に入力される。
【００３４】
有効符号長検出部２０８は、シフト部２０６が読み出したデータから、そのデータに含まれる有効符号の符号長を求める。有効符号長の判定は、例えば、読み出したデータの列を、個々の符号長に対応する最小符号値と大小比較する等といった周知の手法で行えばよい。求められた符号長は、有効符号入力部２５０及び符号長加算部２１０に入力される。
【００３５】
有効符号入力部２５０は、シフト部２０６から入力されたデータ列の先頭から、有効符号長検出部２０８が検出した符号長分のデータを取り出し、ハフマンデコーダ２６０に入力する。
【００３６】
符号長加算部２１０は、有効符号長検出部２０８が検出した符号長を累積加算し、その累積加算の結果（累積加算値）をシフト部２０６及び更新判定部２１２に入力する。符号長加算部２１０の累積加算値は、ＦＩＦＯ２０２からのデータ入力により符号バッファ２０４内のデータが更新されると、初期値にリセットされ、符号バッファ２０４の先頭から符号を切り出す毎に、切り出した符号の符号長ずつ累積加算値が増えていく。
【００３７】
累積加算値は、符号バッファ２０４の先頭から何ビット目までシフトすると、次の符号の先頭であるかを示すシフト量として用いる。すなわち、シフト部２０６は、次の符号を切り出す際、符号バッファ２０４の先頭アドレスから、符号長加算部２１０が出力する累積加算値（シフト量）だけシフトしたアドレスからデータを読み出し、有効符号長検出部２０８等に供給する。
【００３８】
更新判定部２１２は、符号バッファ２０４内のデータの更新の要否を判定する。符号バッファ２０４内に保持したデータの先頭から符号の切り出しを進めていき、符号バッファ２０４内に符号切り出しのために必要なデータ量が残っていない状態になったときに、更新判定部２１２はＦＩＦＯ２０２に対してデータ出力を指示し、符号バッファ２０４内のデータが更新されるようにする。
【００３９】
符号切り出し部２００における符号切り出しの流れを、図３を参照して詳説する。この例では符号バッファ２０４は、３２ビットのバッファ領域を２つ（ＡとＢ）有している。まず、（ａ）ＦＩＦＯ２０２から、最初にこの符号バッファ２０４に、圧縮画像データの先頭から３２ビット×２の量のデータが転送される。この時点では、シフト部２０６のシフト量は０であり、（ｂ）シフト部２０６は、符号バッファ２０４の先頭（ビット位置「０」）から固定長１６ビットのデータを読み出し、このデータを有効符号長検出部２０８に渡す。（ｃ）有効符号長検出部２０８は、渡された１６ビットのデータの先頭から何ビットまでが有効符号であるのか（すなわち有効符号長）を検出する。図では、１６ビットのデータのうちの先頭の太線の枠で囲んだ１０ビットの部分が有効符号である。有効符号長検出部２０８をＤＲＰのＰＥ（プロセッサエレメント）群を用いて構成した例の１つでは、この有効符号長の検出の処理に５クロックの時間を要する。
【００４０】
有効符号長（＝１０ビット）がわかると、有効符号入力部２５０は、シフト部２０６から供給されている符号切り出し対象の１６ビットのデータのうち、先頭から有効符号長分のデータをハフマンデコーダ２６０に供給する。また、符号長加算部２１０は、シフト量（累積加算値）の現状の値「０」に対し、有効符号長検出部２０８が検出した今回の有効符号長「１０」を加算し、加算結果であるシフト量「１０」を出力する。（ｄ）シフト部２０６は、次の符号の切り出しの際、符号バッファ２０４の先頭位置「０」からその新たなシフト量「１０」だけシフトしたビット位置「１０」を先頭として固定長１６ビットのデータを読み出し、有効符号長検出部２０８に渡す。符号切り出し部２００内の各要素をＤＲＰのＰＥ群で構成した１つの回路構成例では場合、段階（ｃ）で有効符号長検出部２０８が有効符号長を検出した後、段階（ｄ）にて次の符号切り出し対象の１６ビットデータが有効符号長検出部２０８に供給されるまでに４クロックの時間を要する。
【００４１】
（ｅ）有効符号長検出部２０８は、段階（ｄ）で供給された１６ビットデータから、５クロックの時間で、有効符号長が１２ビットであることを検出する。符号長加算部２１０は、現在のシフト量「１０」に対し、今回検出された符号長「１２」を加算する。（ｆ）これに応じてシフト部２０６は、符号バッファ２４の先頭位置「０」から新たなシフト量「２２」だけシフトしたビット位置を先頭として固定長１６ビットのデータを読み出し、有効符号長検出部２０８に渡す。
【００４２】
この処理を繰り返していき、符号長加算部２１０が出力するシフト量が「２６」以上になると、符号バッファ２０４内から次の符号切り出し対象の１６ビットのデータが取り出せなくなる。更新判定部２１２は、このように符号バッファ２０４から次の１６ビットのデータが取り出せなくなったと判定すると、ＦＩＦＯ２０２内の圧縮画像データの先頭から３２ビットワードを２つ読み出して符号バッファ２０４のＡ，Ｂ領域に順に格納すると共に、ＦＩＦＯ２０２内の読み出した２つのワードのうちの順番が早いほうをＦＩＦＯ２０２の先頭から削除し、入力データ取り込み部１０２から新たな３２ビットのデータをＦＩＦＯ２０２内のデータの末尾に追加する。これにより、符号バッファ２０４内のデータが３２ビットだけ進んだものとなり、ＦＩＦＯ２０２の先頭３２ビットが符号バッファ２０４のＢ領域内のデータと同じものとなる。また、このとき、符号長加算部２１０が持つ累積加算値（シフト量）から３２を減算するリセット処理を行う。以降、このように更新された符号バッファ２０４内のデータを対象として、前述と同様の符号切り出し処理が繰り返される。
【００４３】
再び図２の説明に戻る。図２では、符号切り出し部２００内の各要素のブロックの近傍に丸で囲んだ数字を記載しているが、この数字は、各要素がそれぞれ自分の処理を実行するのに要するクロック数である。例えば、シフト部２０６は、シフト量に従って符号バッファ２０４から符号切り出し処理の対象とする固定長のデータ列を取り出して有効符号長検出部２０８に渡すのに２クロックの時間を要し、有効符号長検出部２０８は、シフト部２から供給されたデータ列から符号を切り出す処理に５クロックの時間を要する。
【００４４】
図２の太い破線で示した経路は、更新判定部２１２による符号バッファ２０４の更新が行われない期間における、１符号の切り出しのための処理経路（パイプライン）である。この処理経路では、まずシフト部２０６が、シフト量に応じて符号バッファ２０４から切り出し対象のデータを取り出して有効符号長検出部２０８に渡すのに２クロックを要し、有効符号長検出部２０８がそのデータから有効符号長を検出するのに更に５クロックを要する。そして更に、符号長加算部２１０が次の符号切り出し位置を示すシフト量を更新するのに２クロックを要する。これらを合わせると、符号バッファ２０４の更新が行われない期間は、１符号を切り出すのに合計９クロックの時間が掛かることがわかる。
【００４５】
また、符号バッファ２０４の更新が行われるときには、更新判定部２１２の処理に要する時間１クロックと、ＦＩＦＯ２０２から符号バッファ２０４に更新用のデータを転送するのに要する時間１クロックと、転送されたデータにより符号バッファ２０４を更新するのに要する時間１クロックとの、合計３クロックの時間が余計にかかる。したがって、この更新の際には、１符号の切り出しに１２クロックの時間を要することになる。
【００４６】
このように、ハフマンデコード部１０４では、１符号の切り出しに少なくとも９クロックの時間を要する。ＤＣ成分のみの背景画像ブロックを表す符号も、その符号を切り出し、その符号がＤＣ成分の後にブロック終端記号が続くものであることがわかるには、最低９クロックの時間が掛かる。
【００４７】
これに対し、図１に示した装置構成では、ＤＣ成分のみ背景ブロックについては均一データブロック生成部１１２が１ブロック（６４画素）分の画像データをまとめて高速に生成して出力することが可能である。しかし、均一データブロック生成部１１２が、１ブロック分の画像データを９クロック未満の時間（例えば４クロック）で生成して出力することができたとしても、その元になる入力データのハフマン復号には少なくとも９クロックを要するので、均一データブロック生成部１１２がいくら高速に処理可能でも、その効果が打ち消されてしまうことになる。すなわち、符号切り出し部２００が、画像データ復号装置全体の処理速度のボトルネックとなっている。
【００４８】
このような問題に対処するために、本実施形態では、ＤＣ成分のみでＡＣ成分を含まないブロック（背景ブロック）のうちカテゴリ０に該当するブロックについて符号切り出しの高速化を図ることで、そのような背景画像ブロックのデータを出力する回路の高速性を生かせるようにする。この実施形態における画像データ復号装置の回路構成の一例を図４に示す。
【００４９】
周知のように、ＪＰＥＧにおけるＤＣ成分の符号化では、注目ブロックのＤＣ成分の直前ブロックのＤＣ成分に対する差分値（ＤＣ差分値と呼ぶ）を求め、そのＤＣ差分値をハフマン符号化する。ハフマン符号化では、ＤＣ差分値をその絶対値の大きさに応じてカテゴリ分けし、各カテゴリにハフマン符号を割り当てている。カテゴリ０は、ＤＣ差分値が０である場合のカテゴリであり、注目ブロックのＤＣ成分が直前ブロックのＤＣ成分と同じであることを示す。カテゴリ０のＤＣ成分に割り当てられたハフマン符号は「００」である。
【００５０】
ＤＣ成分のみでＡＣ成分を含まず、かつカテゴリ０に該当するブロック、すなわちカテゴリ０の背景ブロック、を表すハフマン符号は、カテゴリ０のＤＣ成分を表すハフマン符号「００」の直後に、ブロック終端符号（ＥＯＢ）「１０１０」が続く６ビットの符号「００１０１０」である。
【００５１】
発明者らが、社団法人電子情報技術産業協会が規定したプリンター用テストパターン（JEITA IT-3011）のうち、表、グラフ、図形、イメージを多用したカラープレゼンテーションパターンであるＪ１１チャートを分析したところ、ＤＣ成分のみのブロック（背景ブロック）のうち９５パーセントがカテゴリ０であった。オフィスでよく用いられるワープロや表計算ソフトで作成した文書、カタログ、パンプレット、一般書籍などでも、背景ブロック群のうちカテゴリ０のものが占める割合はかなり高いと考えられる。
【００５２】
本実施形態では、符号切り出し部２００に、カテゴリ０の背景ブロックを示すハフマン符号を判定する特別の回路（カテゴリ０判定部２２０）を設け、この回路によりカテゴリ０の背景ブロックを検出すると、その旨を知らせる信号を有効符号長検出部２０８を経ないバイパス経路により、後段の出力データ選択用のセレクタ（第３セレクタ１１４ａ。図１の例の出力セレクタ１１４に相当）に伝達する。これにより、有効符号長検出部２０８の処理結果を待たずに、セレクタが均一な背景ブロックのデータを選択して出力することが可能になる。印刷対象の画像中に多く含まれるカテゴリ０の背景ブロックを高速に復号できるようにすることで、画像全体の復号速度の向上が図れる。
【００５３】
以下、図４に示す回路構成について説明する。図４に示すハフマンデコード部１０４は、図２に示したハフマンデコード部１０４の回路構成に対して、カテゴリ０判定部２２０、カテゴリ０専用シフト量出力部２２２、第１セレクタ２２４、ＤＣ／ＡＣ判定部２７０及び第２セレクタ２７２を追加したものである。
【００５４】
カテゴリ０判定部２２０には、シフト部２０６から、有効符号長検出部２０８に供給されるのと同じ符号切り出し対象の１６ビットのデータが入力される。カテゴリ０判定部２２０は、シフト部２０６から入力された１６ビットのデータの先頭６ビットが、カテゴリ０の背景ブロックを示しているかどうかを判定する。（ａ）入力された１６ビットデータの先頭６ビットのパターンが「００１０１０」であるという条件と、（ｂ）その６ビットがＤＣ成分を表しているという条件の両方が満たされる場合に、その６ビットのパターンがカテゴリ０の背景ブロックを表していると判定する。このうち条件（ｂ）は、ＤＣ／ＡＣ判定部２７０から供給される判定結果信号も考慮に入れて判定する。
【００５５】
ＤＣ／ＡＣ判定部２７０は、ハフマンデコーダ２６０の出力から１ブロックの末尾に達したことを検出すると、次の符号がＤＣ成分であると判定し、ＤＣ成分を示すフラグ値をカテゴリ０判定部２２０に供給する。１ブロックの末尾に達したことは、ブロック終端符号を検出したことにより検出すればよい。また、ブロックの先頭のＤＣ成分を検出した後ゼロランの数も含め６３個のＡＣ成分の符号がハフマンデコーダから出力されたことを検知した場合も、１ブロックの末尾に達したと判定する。
【００５６】
またＤＣ／ＡＣ判定部２７０は、ハフマンデコーダ２６０からＤＣ成分の符号が出力されたことを検出すると、次の符号はＡＣ成分と判定し、ＡＣ成分を示すフラグ値をカテゴリ０判定部２２０に供給する。
【００５７】
カテゴリ０判定部２２０は、ＤＣ／ＡＣ判定部２７０から供給されるフラグがＤＣ成分を表しており、かつ、シフト部２０６から入力された１６ビットのデータの先頭６ビットが「００１０１０」のパターンに合致する場合には、その６ビットのデータがカテゴリ０の背景ブロックを表していると判定する。またカテゴリ０判定部２２０は、シフト部２０６から入力されたデータの先頭６ビットがカテゴリ０の背景ブロックを表していると判定した場合、その次にシフト部２０６から入力されるデータについては、ＤＣ／ＡＣ判定部２７０から供給されるフラグの値によらず、ＤＣ成分であるとみなす（有効符号長検出部２０８等による遅延により、ＤＣ／ＡＣ判定が次の符号に間に合わない場合を考慮）。
【００５８】
このようにカテゴリ０判定部２２０の判定において判定対象データがＤＣ成分であるか否かを考慮するのは、ＡＣ成分のハフマン符号の中にその先頭が「００１０１０」のパターンに合致するものが存在するからである。
【００５９】
なお、カテゴリ０判定部２２０は、入力された１６ビットのデータの先頭６ビットが「００１０１０」のパターンに合致しない場合、または、ＤＣ／ＡＣ判定部２７０からのフラグ等によりその入力データがＤＣ成分でないとわかっている場合には、否定判定（すなわち「カテゴリ０の背景ブロック」ではないとの判定）を行う。
【００６０】
カテゴリ０判定部２２０の判定結果を示す信号は、第１セレクタ２２４、第２セレクタ２７２及び第３セレクタ１１４ａに供給される。それら各セレクタ２２４、２７２及び１１４ａは、それぞれａ入力とｂ入力という２つの入力を受け、カテゴリ０判定部２２０からの信号が「カテゴリ０の背景ブロック」を示す値である場合にはａ入力を選択し、そうでない場合はｂ入力を選択する。
【００６１】
第１セレクタ２２４のａ入力にはカテゴリ０専用シフト量出力部２２２の出力が供給され、ｂ入力には有効符号長検出部２０８の出力が供給されており、それら２入力のうちの一方を選択して符号長加算部２１０へと出力する。カテゴリ０専用シフト量出力部２２２は、カテゴリ０の背景ブロックを表すハフマン符号パターン「００１０１０」のビット長である固定値「６」を常に出力している。
【００６２】
したがって、カテゴリ０判定部２２０が肯定判定（すなわち今回切り出した符号はカテゴリ０の背景ブロックを表す）を行った場合、第１セレクタ２２４は値「６」を符号長加算部２１０に供給する。これにより符号長加算部２１０が出力するシフト量は、カテゴリ０の背景ブロックを表すハフマン符号パターン「００１０１０」のビット長「６」だけ増える。この場合、有効符号長検出部２０８の検出処理（所要時間例えば５クロック）の完了を待たずにシフト量が加算され、シフト部２０６が次の切り出し対象のデータを読み出せるようになる。同様に、更新判定部２１２の更新判定も、有効符号長検出部２０８の処理完了を待たずに実行される。
【００６３】
逆に、カテゴリ０判定部２２０の判定結果が否定（カテゴリ０の背景ブロックではない）の場合、第１セレクタ２２４は、ｂ入力を選択する。これにより、有効符号長検出部２０８の出力値が符号長加算部２１０に供給されることになる。したがって、シフト部２０６が符号バッファ２０４からデータを読み出した時点から、有効符号長検出部２０８の検出処理の所要時間（例えば５クロック）が経過した時点で、有効符号長検出部２０８が求めた有効符号長が符号長加算部２１０に入力される。これは、図２に示した回路構成の場合と同様である。
【００６４】
次に第２セレクタ２７２について説明する。第２セレクタ２７２のａ入力には「無効」を示す信号値が、ｂ入力にはハフマンデコーダ２６０の出力が供給されており、それら２入力のうちの一方を選択してＪＰＥＧコード伸張部１０６へと出力する。
【００６５】
カテゴリ０判定部２２０が肯定判定をした場合、第２セレクタ２７２はａ入力「無効」を選択し、ＪＰＥＧコード伸張部１０６側へと出力する。ＪＰＥＧコード伸張部１０６は、この「無効」を示す値を検知すると、伸張処理を一時停止するようにしてもよい。「無効」値の入力に応じて伸張処理を一時停止することで、誤って切り出されたデータが伸張され、後段に流れることが更に確実に防止される。
【００６６】
すなわち、第２セレクタ２７２のａ入力が選択された場合は、切り出された符号はカテゴリ０の背景ブロックを示すものであり、この場合、ＪＰＥＧコード伸張部１０６を用いる代わりに、ブロック生成部１１２ａ（図１の例の均一データブロック生成部１１２に相当）から均一な背景値を１ブロック分まとめて出力することになる。このため、第３セレクタ１１４ａがブロック生成部１１２ａ側のａ入力を選択するわけであるが、ここではそれに加えてＪＰＥＧコード伸張部１０６を一時停止することで、用いないデータの伸張結果がＪＰＥＧコード伸張部１０６から出力され、誤って後段に流れることを防止するのである。
【００６７】
カテゴリ０判定部２２０が否定判定をした場合、第２セレクタ２７２はｂ入力を選択し、ハフマンデコーダ２６０のデコード結果をＪＰＥＧコード伸張部１０６へと出力する。ＪＰＥＧコード伸張部１０６は、そのデコード結果をＪＰＥＧ伸張することで、１ブロック分の画像データを復号する。この処理は、図２に示した回路構成の場合と同様である。
【００６８】
次に第３セレクタ１１４ａについて説明する。第３セレクタ１１４ａのａ入力にはブロック生成部１１２ａの出力が、ｂ入力にはブロック生成部１０８の出力が供給されており、それら２入力のうちの一方を選択して外部へ（図１の例では出力部１１６を経由して、復号依頼元の装置へ）と出力する。
【００６９】
ブロック生成部１０８は、図１に示したブロック生成部１０８と同様、ＪＰＥＧコード伸張部１０６の伸張結果に基づき１ブロックの画像データを生成して出力する。
【００７０】
一方、ブロック生成部１１２ａは、全画素がＤＣ成分値出力部１１１からのＤＣ成分値を持つ１ブロック（すなわち６４画素）の背景画像データを生成し、出力する。なお、ＤＣ成分値出力部１１１は、ＪＰＥＧコード伸張部１０６から出力された最新のＤＣ成分値（言い換えれば、直前のブロックのＤＣ成分値）を保持し、常に出力している。このＤＣ成分値は、ＪＰＥＧコード伸張部１０６にも供給されており、ＪＰＥＧコード伸張部１０６はＤＣ成分の伸張復号の際に、この直前ブロックのＤＣ成分値に対してデコード結果のＤＣ差分値を加算することで、現ブロックのＤＣ成分値と求める。このように、ＤＣ成分値出力部１１１とブロック生成部１１２ａのペアが、図１の例の均一データブロック生成部１１２に相当する。
【００７１】
カテゴリ０判定部２２０が肯定判定をした場合、第３セレクタ１１４ａはａ入力、すなわちブロック生成部１１２ａが出力する背景ブロックの画像データを選択し、これを外部に出力する。
【００７２】
カテゴリ０判定部２２０が否定判定をした場合、第３セレクタ１１４ａはｂ入力を選択し、ブロック生成部１０８から出力される通常のＪＰＥＧ伸張結果の画像データを出力する。この処理は、図２に示した回路構成の場合と同様である。
【００７３】
以上に説明した各セレクタ２２４、２７２及び１１４ａのうち、第１セレクタ２２４は、カテゴリ０判定部２２０が判定を行った時点で、その判定の結果に従って即座に選択の切り替えを行う。これに対し、第２セレクタ２７２及び第３セレクタ１１４ａの選択の切り替えは、その判定の時点でシフト部２０６から各セレクタ２７２及び１１４ａまでの回路のパイプライン内に存在するデータを処理し終わるまで待ってから行う。
【００７４】
すなわち、第２セレクタ２７２の選択をｂ入力（通常のＪＰＥＧ伸張時）からａ入力（カテゴリ０の背景ブロックの高速出力時）に切り換えるのは、シフト部２０６と第２セレクタ２７２との間の、有効符号長検出部２０８とハフマンデコーダ２６０からなるパイプライン内にあるデータがすべてハフマンデコーダ２６０で処理し終わった時点である。このパイプラインの長さ（パイプライン遅延量）は既知であり、第２セレクタ２７２は、ｂ入力を選択している状態でカテゴリ０判定部２２０から肯定判定（カテゴリ０の背景ブロック）を示す信号を受け取ると、そのパイプラインの遅延量に対応するクロック数分だけ待ってから、選択をａ入力側に切り換える。また、この代わりに、例えばハフマンデコーダ２６０が、デコード結果と並行して、そのデコード結果がブロックの終端に該当するか否かを示すトークンを第２セレクタ２７２に出力し、このトークンに従って第２セレクタ２７２の切り替えを制御してもよい。この例では、第２セレクタ２７２は、ｂ入力を選択している状態でカテゴリ０判定部２２０から肯定判定を受け取った場合、その後ブロックの終端を示すトークンが入力されるまでは、ａ入力への切り替えを行わず、その終端を示すトークンが入力されたタイミングで、ａ入力へと選択を切り換える。
【００７５】
同様に、第３セレクタのｂ入力からａ入力に切り換えるのは、シフト部２０６と第３セレクタ２７２との間のパイプライン（有効符号長検出部２０８、ハフマンデコーダ２６０、ＪＰＥＧコード伸張部１０６及びブロック生成部１０８）内にあるデータがすべて第３セレクタ１１４ａから外部に出力し終わったタイミングである。別の観点から言えば、その切り替えのタイミングは、第２セレクタ２７２の選択をｂからａに切り換えた後、その切り替えの時点でＪＰＥＧコード伸張部１０６が伸張しているブロックの符号の伸張が終了し、その伸張結果のブロックのデータが第３セレクタ１１４ａから出力し終わったタイミングである。このタイミングの検出は、例えば、第２セレクタ２７２が、ＪＰＥＧコード伸張部１０６へと出力するデータと並行に出力するトークンを用いて行う。すなわち、第２セレクタ２７２は、ＪＰＥＧコード伸張部１０６へと出力するデータがブロックの終端に該当するか否かを示すトークンを、そのデータと共に、ＪＰＥＧコード伸張部１０６以降のパイプラインと並行な信号経路を経由して第３セレクタ１１４ａへと送る。第３セレクタ１１４ａは、ｂ入力を選択している状態でカテゴリ０判定部２２０から肯定判定を受け取った場合、その後ブロックの終端を示すトークンが入力されるまでは、ａ入力への切り替えを行わず、その終端を示すトークンが入力されたタイミングで、ａ入力へと選択を切り換える。
【００７６】
以上、第２セレクタ２７２及び第３セレクタ１１４ａの選択をｂからａに切り換えるタイミングについて説明した。一方、それらセレクタ２７２及び１１４ａの選択をその逆向き（すなわちａからｂ）へ切り換える場合も、同様に、カテゴリ０判定部２２０が判定結果を肯定（カテゴリ０の背景ブロックである）から否定（カテゴリ０の背景ブロックでない）へと切り換えたタイミングでは、ブロック生成部１１２ａから前のブロック（これはカテゴリ０の背景ブロック）のデータを出力中である。したがって、第３セレクタ１１４ａはこのブロックの全データの出力が完了されるのを待って、第２セレクタ２７２及び第３セレクタ１１４ａの選択をｂ入力側に切り換える。
【００７７】
図４に示す画像データ復号装置は、各セレクタ２２４、２７２及び１１４ａの選択をすべてｂ入力へと初期化してから、入力された圧縮画像データの復号を開始する。その後は、復号の進展に伴って、上述の方式に従って各セレクタ２２４、２７２及び１１４ａの選択を切り換えていく。これにより、画像データ出力装置からは、カテゴリ０の背景ブロック以外のブロックについてはＪＰＥＧコード伸張部１０６の伸張結果が、カテゴリ０の背景ブロックについては直前のブロックと同じＤＣ成分１ブロック分のデータが、それぞれ出力されることになる。ここで、入力される圧縮画像データのうちカテゴリ０の背景ブロックを表す符号が連続する部分では、カテゴリ０判定部２２０の判定結果に従って第１セレクタ２２４からカテゴリ０専用シフト量「６」が即座に（すなわち有効符号長検出部２０８の処理を経ることなく）符号長加算部２１０に供給される。したがって、符号切り出し部２００が１符号を切り出すのに要する時間（パイプラインの長さ）は、図２に示した通常の場合と比べて、有効符号長検出部２０８の処理時間（例えば５クロック）だけ短くなる。図２の例では１符号あたりの切り出し時間が最短で９クロックであったが、図４の回路構成の場合、カテゴリ０の背景ブロックを表す符号が連続する部分では、最短４クロックで１符号を切り出せる。したがって、ブロック生成部１１２ａから背景ブロックの画像データ６４画素分を例えば４クロックで出力する場合、符号切り出し部２００の符号切り出し速度は、ブロック生成部１１２ａからの画像データ出力速度に匹敵するものとなる。このような仕組みにより、ブロック生成部１１２ａによる背景ブロックデータの高速出力能力を削ぐことなく、画像データ復号装置全体として高速な復号処理が実現される。
【００７８】
以上、本発明の一実施形態について説明した。
【００７９】
さて、前述の通りカテゴリ０の背景ブロックを示すハフマン符号は「００１０１０」の６ビットデータ列あるのに対し、シフト部２０６が符号バッファ２０４から読み出す符号切り出し対象のデータは１６ビット長である。このため、その切り出し対象のデータには、カテゴリ０の背景ブロックを示す６ビットの符号が２つ連続して含まれることもある。画像内で同一色の背景が連続していることが多いことを考えると、むしろ切り出し対象の１６ビットの中にカテゴリ０の背景ブロックを示す６ビットの符号が２つ連続して入っているケースは多いと考えられる。
【００８０】
そこで、図４の回路の変形例として、カテゴリ０判定部２２０が、カテゴリ０の背景ブロックの２回連続しているか否かを判定してもよい。すなわち、カテゴリ０判定部２２０は、シフト部２０６から供給される１６ビットのデータの先頭１２ビットが、符号「００１０１０」が２回連続したパターン「００１０１０００１０１０」に一致するかどうかを判定する。この判定の結果が肯定（「一致」）であり、且つ、ＤＣ／ＡＣ判定部２７０からＤＣ成分を示すフラグが入力されている（または直前の符号の判定結果も「一致」であった）場合に、カテゴリ０判定部２２０は、肯定判定を示す値を各セレクタ２２４、２７２、１１４ａに供給する。これに応じ、第３セレクタ１１４ａは、（ｂ側を選択している場合には、肯定判定の時点で未出力のデータの出力が終わり次第）ａ側、すなわちブロック生成部１１２ａ側を選択し、ブロック生成部１１２ａから背景ブロックのデータを２ブロック分（１ブロックの出力に４クロックを要する場合は、８クロックの時間）出力する。逆に、第３セレクタ１１４ａがａ側を選択しているときに、カテゴリ０判定部２２０が否定判定（すなわちカテゴリ０の背景ブロックの２連続ではない）を行った場合は、その判定の時点で出力中の背景ブロック（２連続分）の出力が終わり次第、第３セレクタ１１４ａは選択をｂ側に切り換える。
【００８１】
なお、この変形例では、カテゴリ０専用シフト量出力部２２２は、符号「００１０１０」２つ分のシフト量「１２」を出力する。
【００８２】
この変形例では、符号長加算部２１０及びシフト部２０６の処理のためのパイプライン遅延が図２の場合と同様それぞれ２クロックである場合、符号切り出しサイクル１回の４クロック（ＦＩＦＯ２０２の更新が行われない場合）の時間で、カテゴリ０の背景ブロックを２つまとめて出力することができる。すなわち、カテゴリ０の背景ブロックを１つずつ検出して出力する上記実施形態に対して約二倍の符号切り出し速度を得ることができる。なお、この変形例では、符号切り出し部２００がカテゴリ０の背景ブロックの２連続を検出する時間（上述の例では４クロック）に、ブロック生成部１１２ａから２ブロック分のデータを出力できる（例えば２倍の帯域を持つ出力バスを用いる）ようにすれば、符号切り出し部２００とブロック生成部１１２ａの速度が整合し、無駄がない。
【００８３】
この変形例では、シフト部２０６が符号バッファ２０４から読み出すデータが１６ビットであり、カテゴリ０の背景ブロックを表す符号（「カテゴリ０背景符号」と呼ぶ）が６ビットであったため、カテゴリ０判定部２２０ではその符号の２連続の有無を判定した。これに対し、例えばシフト部２０６が符号バッファ２０４から読み出すデータが３２ビットであれば、カテゴリ０背景符号が最大５回連続するパターンを検出することができ、５ブロック分の背景ブロックを連続して出力することが可能となる。カテゴリ０判定部２２０が同時に検出するカテゴリ０判定符号の連続数は、シフト部２０６が符号バッファ２０４から読み出すデータのビット長の中に含まれ得るカテゴリ０背景符号の最大数以下の範囲で定めればよい。この場合、その連続数は、ブロック生成部１１２ａが生成する背景ブロックの画像データを外部に出力するのに用いる出力バスの出力帯域幅（出力速度）の許す範囲内で定めればよい。
【００８４】
次に、実施形態の画像データ復号装置をＤＲＰに実装する例を説明する。周知のように、ＤＲＰは、使用するＰＥの組合せやそれらＰＥ間の配線構造を動的に（すなわち例えば１クロックの間で）切り替えることで、内部の論理回路構成を動的に再構成できるプロセッサのことである。ＤＲＰ上に構成する回路構成は、コンフィギュレーション（以下「コンフィグ」と略す）と呼ばれる。ＤＲＰは、コンフィギュレーションを定義する複数のコンフィグデータを保持可能であり、使用するコンフィグデータを切り換えることで、内部の回路構成を再構成する。
【００８５】
以下に示すＤＲＰ実装例では、通常のＪＰＥＧ復号系統と、カテゴリ０の背景ブロック用の復号系統とを、それぞれ別々のコンフィグとする。
【００８６】
通常のＪＰＥＧ復号系統は、図５に示すコンフィグＡとして実装される。図５に示すコンフィグＡの構成要素のうち、図４に示した上記実施形態の画像データ復号装置の構成要素と同様のものには同一符号を付した。
【００８７】
図５に示すように、コンフィグＡは、図４に示した回路構成から、カテゴリ０専用シフト量出力部２２２、第１セレクタ２２４、ブロック生成部１１２ａ及び第３セレクタ１１４ａを削除し、新たにリコンフィグリクエスト生成部１２０を追加したものである。図４に示す構成から削除した要素は、通常のＪＰＥＧ復号を行う場合には不要である。
【００８８】
カテゴリ０判定部２２０が、シフト部２０６からのデータ列の先頭が「カテゴリ０の背景ブロックを表す符号」に該当しないと判定（否定判定）している間は、ＤＲＰ上にはこのコンフィグＡが構成されている。この間、第２セレクタ２７２はｂ入力を選択しており、図２を参照して説明したのと同様の符号切り出し及び復号が行われる。
【００８９】
そして、ＤＲＰ上にコンフィグＡが構成されているときに、カテゴリ０判定部２２０がシフト部２０６からのデータ列の先頭が「カテゴリ０の背景ブロックを表す符号」に該当すると判定（肯定判定）した場合、第２セレクタ２７２が選択をａ入力側へと切り換える。同時に、肯定判定の信号を受け取ったリコンフィグリクエスト生成部１２０は、カテゴリ０の背景ブロック用のコンフィグＢへの切替を求めるリコンフィギュレーション（リコンフィグ）リクエストを生成し、リコンフィグ制御部１００８（後述。図７参照）へと出力する。これにより、ＤＲＰ上に構成される回路が、次に説明するコンフィグＢ（図６参照）へと再構成される。
【００９０】
なお、リコンフィグリクエスト生成部１２０は、カテゴリ０判定部２２０から肯定判定の信号を受け取った場合、図４の実施形態の場合と同様、その判定の時点でシフト部２０６から出力部１１６までの間のパイプラインにある未処理のデータの処理が完了するのを待ってから、リコンフィグリクエストを発する。
【００９１】
コンフィグＢは、図６に示すように、図４に示した回路構成から、ＪＰＥＧコード伸張部１０６、ブロック生成部１０８、有効符号長検出部２０８、第１セレクタ２２４、ハフマンデコーダ２６０、ＤＣ／ＡＣ判定部２７０及び第３セレクタ１１４ａを削除し、新たにリコンフィグリクエスト生成部１２０を追加したものである。図４に示す構成から削除した要素は、カテゴリ０の背景ブロックについての復号を行う場合には不要である。
【００９２】
カテゴリ０判定部２２０が、シフト部２０６からのデータ列の先頭が「カテゴリ０の背景ブロックを表す符号」に該当すると判定（肯定判定）している間は、ＤＲＰ上の回路構成はこのコンフィグＢとなっている。この間、第２セレクタ２７２はｂ入力を選択しており、第２セレクタ２７２はＤＣ成分値出力部１１１が動作するための信号を出力する。ＤＣ成分値出力部１１１には、このコンフィグＢに切り替わる前のコンフィグＡ（図５）の回路のＪＰＥＧコード伸張部１０６が求めた最新のＤＣ成分値が保持されている。第２セレクタ２７２からｂ入力の信号を受けている間は、ＤＣ成分値出力部１１１は、そのＤＣ成分値をブロック生成部１１２ａへと出力する。これに応じ、ブロック生成部１１２ａは、全画素がそのＤＣ成分値を持つ背景ブロックの画素群のデータを出力部１１６を介して外部に出力する 。
【００９３】
そして、ＤＲＰ上にコンフィグＢが構成されているときに、カテゴリ０判定部２２０がシフト部２０６からのデータ列の先頭が「カテゴリ０の背景ブロックを表す符号」に該当しないと判定（否定判定）した場合、第２セレクタ２７２が選択をａ入力側へと切り換える。これにより、ＤＣ成分値出力部１１１に対して「無効」信号が入力される。ＤＣ成分値出力部１１１は、「無効」信号を受け取ると、保持しているＤＣ成分値の出力を停止する（あるいは、そのＤＣ成分値の代わりに、「無効」を示す信号を出力する）。同時に、否定判定の信号を受け取ったリコンフィグリクエスト生成部１２０は、コンフィグＡへの切替を求めるリコンフィグリクエストを生成し、後述するリコンフィグ制御部１００８へと出力する。これにより、ＤＲＰ上に構成される回路が、コンフィグＡ（図５参照）へと再構成される。
【００９４】
なお、コンフィグＢのリコンフィグリクエスト生成部１２０は、カテゴリ０判定部２２０から否定判定の信号を受け取った場合、図４の実施形態の場合と同様、その判定の時点で既にＤＣ成分出力部１１１から出力済みのＤＣ成分値に対応するブロックがすべてブロック生成部１１２ａから出力部１１６を介して出力完了するのを待ってから、リコンフィグリクエストを発する。
【００９５】
なお、使用するＤＲＰが部分再構成可能な場合、コンフィグＡからＢ、ＢからＡへの切り替え（再構成）では、両コンフィグ間で共通の要素はＤＲＰ上に残し、共通でない要素のみ再構成を行うようにしてもよい。部分再構成とは、ＤＲＰ上に構成されている回路の一部を残し、その他の部分を別の構成へと再構成する処理のことである。例えば、図５のコンフィグＡから図６のコンフィグＢへと部分再構成する場合、コンフィグＡのうち入力データ取り込み部１０２、ＦＩＦＯ２０２、符号バッファ２０４、シフト部２０６、符号長加算部２１０、更新判定部２１２、カテゴリ０判定部２２０、第２セレクタ２７２、ＤＣ成分値出力部１１１、出力部１１６及びリコンフィグリクエスト生成部１２０はそのまま保存される。そして、ＤＲＰ内のＰＥ（プロセッサエレメント）のうち、それら保存される要素を構成しているＰＥ以外のＰＥ群を用いて、コンフィグＢで新たに必要となるカテゴリ０専用シフト量出力部２２２及びブロック生成部１１２ａの各要素と、これら各要素と既存の他の要素とを繋ぐ配線とが形成される。
【００９６】
部分再構成の前後で保存される回路要素は、再構成前に当該回路要素内に保持しているデータを保持したまま、再構成後に処理を再開する。例えば、コンフィグＡからＢ、ＢからＡへの再構成の際、符号長加算部２１０は再構成前の累積加算値（シフト量）を保持したまま残り、再構成後には、その保持している累積加算値から処理を再開する。
【００９７】
図５及び図６に示した例において、カテゴリ０判定部２２０は、カテゴリ０の背景ブロックの２回連続しているか否かを判定するものであってもよい。この場合、カテゴリ０専用シフト量出力部２２２は、カテゴリ０の背景ブロックを表す符号２つ分のシフト量「１２」を出力する。
【００９８】
このようなコンフィグの切替機能を実現するためのＤＲＰ構成の例を図７示す。
【００９９】
図７に示すＤＲＰにおいて、再構成可能回路部１００４は、内部の論理回路構成を動的に（すなわち当該プロセッサが動作中に）再構成できる回路である。再構成可能回路部１００４としては、例えば、特開２００９−３７６５号公報に紹介されているＤＮＡなど、様々な既存の、又はこれから開発される回路を用いることができる。例えば、ＤＮＡは、多数のプロセッサエレメント（ＰＥ）からなるアレイであり、それらＰＥ間の接続構成をコンフィギュレーションデータに従って高速（例えば１クロックの間に）組み替え可能となっている。なお、その公報で紹介されたＤＡＰＤＮＡアーキテクチャをこの実施形態に採用した場合、リコンフィグ制御部１００８及び次コンフィグデータ選択部１０１４は、ＤＡＰと呼ばれる汎用プロセッサコアで、後述する各機能を表すプログラムを実行することにより実現される。この場合、再構成可能回路部１００４と汎用プロセッサコアとを含む回路が、１つのＤＲＰとして提供される。また、ＤＲＰは、ＲＡＭ（ランダム・アクセス・メモリ）等のメモリと、外部装置との間でのデータの入出力など入出力回路と、を備える。これらハードウエア要素のうちのいくつかが１つの集積回路上に集積されていてももちろんよい。もちろん、これはあくまで一例に過ぎず、他の再構成可能プロセッサアーキテクチャを用いてもよい。
【０１００】
データ入力部１００２は、再構成可能回路部１００４上に再構成（リコンフィグ）された処理回路に対して入力データを供給する手段である。例えば、再構成可能回路部１００４に接続されたメモリ上に確保された入力データ用のバッファ領域が、データ入力部１００２の一例である。この場合、ホストシステム（例えばこのＤＲＰの装着先のコンピュータのＣＰＵ）は、この実施形態のＤＲＰに圧縮画像の復号処理を実行させる場合、処理対象である圧縮画像データを入力データとしてそれら各バッファ領域に転送し、リコンフィグ制御部１００８に対してその入力データの処理を指示する。これに応じ、リコンフィグ制御部１００８は、その入力データをデータ入力部１００２から再構成可能回路部１００４上に構成された画像データ復号回路に供給する。また、別の例として、ホストシステムからこの実施形態のＤＲＰに、ＤＭＡ（ダイレクトメモリアクセス）によりデータを転送してもよく、この場合データ入力部１００２は、例えば、データ処理装置内のＤＭＡコントローラ（図示省略）により割り当てられるチャンネルに相当する。
【０１０１】
データ出力部１００６は、再構成可能回路部１００４上に再構成された画像データ復号回路から出力されたデータをホストシステムに対して出力する手段である。データ出力部１００６も、上述のデータ入力部１００２と同様、再構成可能回路部１００４に接続されたメモリ上に確保された出力バッファ、或いはＤＭＡコントローラから割り当てられた出力チャンネルなどがその具体例である。
【０１０２】
リコンフィグ制御部１００８は、再構成可能回路部１００４内の回路要素の接続関係を制御することで、再構成可能回路部１００４上に各種データ処理のための回路を再構成する。また、リコンフィグ制御部１００８は、再構成可能回路部１００４上に再構成された回路に対してホストシステムからの指示に応じてデータ入力部１００２経由で入力データを供給したり、その回路からの出力データをデータ出力部１００６経由でホストシステムに返したりする制御を行う。
【０１０３】
再構成可能回路部１００４内の回路の再構成は、コンフィグデータ格納部１０１０に記憶されたコンフィグデータに従って行われる。この例では、コンフィグデータ格納部１０１０には、図５及び図６に示したコンフィグＡ及びＢをそれぞれ表すコンフィグデータＡ１０１２ａ及びコンフィグデータＢ１０１２ｂが記憶される。コンフィグデータ格納部１０１０は、例えばＤＲＰ内のＲＡＭ又は不揮発性メモリなどの記憶装置上に構成される。コンフィグデータ格納部１０１０には、ホストシステムからの制御により新たなコンフィギュグデータを追加したり、既存のコンフィグデータを削除したりすることができる。
【０１０４】
リコンフィグ制御部１００８は、再構成可能回路部１００４上に構成された回路からリコンフィグリクエストを受け取ると、そのリクエストに応じたコンフィグデータを選択する指示を次コンフィグデータ選択部１０１４に発する。
【０１０５】
次コンフィグデータ選択部１０１４は、再構成可能回路部１００４上に次に再構成すべきコンフィグを規定するコンフィグデータを選択する手段である。例えば、コンフィグデータ格納部１０１０に記憶された各コンフィグデータを再構成可能回路部１００４に適用する条件を示す制御情報が、あらかじめホストシステムから次コンフィグデータ選択部１０１４に設定されている。次コンフィグデータ選択部１０１４は、リコンフィグ制御部１００８から指示を受けると、その制御情報に従い、その指示に応じたコンフィグデータをコンフィグデータ格納部１０１０から読み出し、再構成可能回路部１００４上に現在構成されているコンフィグの処理が終わると、そのコンフィグデータを再構成可能回路部１００４上に書き込むことで、再構成可能回路部１００４を次の回路構成へと切り換える。
【０１０６】
なお、上述したＤＡＰＤＮＡアーキテクチャのように、再構成可能回路部１００４に複数のバンクを備えるコンフィグメモリを設け、各バンクにコンフィグデータをそれぞれ記憶させ、使用するバンクを順次切り替えることで回路の再構成を行う構成としてもよい。例えばコンフィグメモリのバンク数より多いコンフィグデータを用いる場合などには、各バンク内のコンフィグデータを、コンフィグデータ格納部１０１０内のコンフィグデータにより順次書き替えていってもよい。
【０１０７】
このようなＤＲＰ構成において、復号開始時にはまずコンフィグＡを再構成可能回路部１００４内に構成する。そして、その後リコンフィグ制御部１００８は、コンフィグＡのリコンフィグリクエスト生成部１２０からリコンフィグリクエストが到来すれば、再構成可能回路部１００４内の回路をコンフィグＢに書き換え、またコンフィグＢのリコンフィグリクエスト生成部１２０からリコンフィグリクエストが到来すれば、再構成可能回路部１００４内の回路をコンフィグＡに書き換える。これにより、図４の装置と同等の機能がコンフィグＡとＢの切り替えにより実現される。
【０１０８】
以上、実施形態及びその変形例を説明した。以上の例では、実施形態及びその変形例の画像データ復号装置をＤＲＰに実装する場合を例にとって説明したが、回路の再構成が不要な図４の構成は、ＤＲＰ以外にも、ＩＣ（集積回路）、ＬＳＩ（大規模集積回路）、ＡＳＩＣ（特定用途向け集積回路）などの通常の集積回路、ＦＰＧＡ（Field Programmable Gate Array）等のプログラマブル論理回路などといった様々な形態の回路として実装可能である。
【０１０９】
以上では、画像データの圧縮方式としてＪＰＥＧが用いられる場合を例にとって説明した。しかし、この実施形態の方式は、ＪＰＥＧのみならず、ブロックごとに１つの直流成分の情報と直流成分以外の各周波数の成分の情報とを含む圧縮画像データであって直流成分以外の各周波数の成分がすべて０であるブロックについては直流成分の情報とブロック終端符号のみを含むような圧縮画像データを扱う圧縮符号化方式一般に適用可能である。ここで、直流成分とは、必ずしも周波数が完全に０である成分に限られるわけではなく、当該圧縮符号化方式で周波数解析により求める最低周波数成分であってもよい。また、周波数解析には、ＪＰＥＧにおいて用いられるＤＣＴに限らず、ウェーブレット変換などの他の方式を用いてもよい。
【０１１０】
以上に説明した画像データ復号装置は、例えば、複写機、プリンタ、複合機（プリンタ、スキャナ、コピー機、ファクシミリ装置などの機能を兼ね備えた多機能装置）、デジタルカメラなどといった、静止画像の圧縮データを復号する機能を有する機器に組み込むことができる。
【０１１１】
また以上の説明では、有効符号長検出部２０８等をはじめとする各要素がハードウエア回路として構成されている場合を例にとっていた。しかし、有効符号長検出部２０８等の各要素がプログラムモジュールを用いてソフトウエアとして構成されている場合でも、有効符号長検出部２０８の検出処理が、ブロック生成部１１２ａからの１ブロック分のデータ出力よりも時間を要するのであれば、図１及び図２に説明した装置と同様の問題が生じる。この問題は、有効符号長検出部２０８よりも高速に判定を行うことができるカテゴリ０判定部２２０をソフトウエアとして実装すれば、図４等に示した実施形態の装置と同様の原理で解決できる。有効符号長検出部２０８は、シフト部２０６から供給されるデータが様々に異なる符号長のいずれに合致するかを判定する必要があるのに対し、カテゴリ０判定部２２０は、その供給されるデータが特定の１つの符号パターン（例えば前述の「００１０１０」）に合致するか否かを判定するだけでよい。このため、ソフトウエアとして構成する場合でも、カテゴリ０判定部２２０の方が有効符号長検出部２０８よりも高速処理が可能である。このように、実施形態及び変形例の画像データ復号装置は、ソフトウエアとして実装した場合でも、ハードウエア回路として実装した場合と同様の効果が得られる。
【０１１２】
ソフトウエアとして実装する場合、実施形態及び変形例の画像データ復号装置は、例えば、汎用のコンピュータに当該装置の各機能モジュールの処理を表すプログラムを実行させることにより実現される。ここで言うコンピュータは、例えば、ハードウエアとして、ＣＰＵ等のマイクロプロセッサ、ランダムアクセスメモリ（ＲＡＭ）およびリードオンリメモリ（ＲＯＭ）等のメモリ（一次記憶）、ＨＤＤ（ハードディスクドライブ）やＳＳＤ（ソリッドステートドライブ）、フラッシュメモリ等の二次記憶を制御する二次記憶コントローラ、各種Ｉ／Ｏ（入出力）インタフェース、無線又は有線のネットワークとの接続のための制御を行うネットワークインタフェース等が、たとえばバスを介して接続された回路構成を有する。また、そのバスに対し、例えばＩ／Ｏインタフェース経由で、ＣＤやＤＶＤ、ブルーレイディスクなどの可搬型ディスク記録媒体に対する読み取り及び／又は書き込みのためのディスクドライブ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体に対する読み取り及び／又は書き込みのためのメモリリーダライタ、などが接続されてもよい。上に例示した各機能モジュールの処理内容が記述されたプログラムがＣＤやＤＶＤ等の記録媒体を経由して、又はネットワーク等の通信手段経由で、フラッシュメモリ等の二次記憶装置に保存され、コンピュータにインストールされる。二次記憶装置に記憶されたプログラムがＲＡＭに読み出されＣＰＵ等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。
【符号の説明】
【０１１３】
１００  ＪＰＥＧ伸張処理部、１０２  入力データ取り込み部、１０４  ハフマンデコード部、１０６  ＪＰＥＧコード伸張部、１０８  ブロック生成部、１１０  背景データ判定部、１１１  ＤＣ成分値出力部、１１２  均一データブロック生成部、１１２ａ  ブロック生成部、１１４  出力セレクタ、１１４ａ  第３セレクタ、１１６  出力部、１２０  リコンフィグリクエスト生成部、２００  符号切り出し部、２０２  ＦＩＦＯ、２０４  符号バッファ、２０６  シフト部、２０８  有効符号長検出部、２１０  符号長加算部、２１２  更新判定部、２２０  カテゴリ０判定部、２２２  カテゴリ０専用シフト量出力部、２２４  第１セレクタ、２５０  有効符号入力部、２６０  ハフマンデコーダ、２７０  ＤＣ／ＡＣ判定部、２７２  第２セレクタ。
【図１】
2015130640.tif 000003
【図２】
2015130640.tif 000004
【図３】
2015130640.tif 000005
【図４】
2015130640.tif 000006
【図５】
2015130640.tif 000007
【図６】
2015130640.tif 000008
【図７】
2015130640.tif 000009