(57)【要約】【課題】  圧縮された画像データの途中にフレキシブルで高速にアクセス可能な復号装置を提供する。【解決手段】  ハフマン復号ユニット２０に、各々のＭＣＵに含まれるハフマン符号化されたデータ単位を検出する段階で処理が区切られる第１の回路３１ａおよび３１ｂと、ＭＣＵに含まれるハフマン符号化されたデータ単位をデコードし、そのデータ単位に対応する復号データを出力する第２の回路３２とを設ける。第１の回路３１における処理を繰り返し実行することにより、復号データを出力しないでＭＣＵの終端部分または次のＭＣＵの先頭部分を判断できる。このため、圧縮された画像データの途中にアクセスする処理をさらに高速化できる。【選択図】        図２
2005109812.tif 000002
【特許請求の範囲】
【請求項１】
画像を複数の画素ブロックに分割し、各々の画素ブロックに含まれる画素データをハフマン符号化することにより可変長のビット列に符号化した複数の圧縮データセットを含む画像データを復号して出力する復号装置であって、
前記圧縮データセットをハフマン復号化するハフマン復号ユニットを有し、
このハフマン復号ユニットは、前記圧縮データセットに含まれるハフマン符号化されたデータ単位を検出した段階で処理が区切られる第１の回路と、
前記圧縮データセットに含まれるハフマン符号化されたデータ単位をデコードし、そのデータ単位に対応する復号データを出力する第２の回路とを備えている復号装置。
【請求項２】
請求項１において、前記第１の回路は前記データ単位の検出を繰り返して前記圧縮データセットの終端部分または先頭部分を判断する復号装置。
【請求項３】
請求項１において、前記圧縮データセットは、前記画素データが離散コサイン変換および量子化され、量子化により得られた量子化係数がハフマン符号化された前記データ単位を含んでおり、
前記第２の回路は、前記量子化係数のうち、直流成分を含む前記データ単位はデコードし、交流成分を含む前記データ単位はデコードしない第１のモードと、
前記直流成分を含む前記データ単位および交流成分を含む前記データ単位を共にデコードする第２のモードとで動作する復号装置。
【請求項４】
請求項１に記載の復号装置と、前記第２の回路から出力された復号データにより復号された前記画素データを用いて出力用のデータを生成するデータ生成手段とを有する出力装置。
【請求項５】
請求項４において、前記データ生成手段は、前記第１の回路により前記データ単位の検出を繰り返して前記第２の回路により復号する前記圧縮データセットの終端部分または先頭部分を判断させ、所望の前記画素データを取得する取得手段を備えており、
この取得手段を繰り返し駆動することにより得られた複数の前記画素データにより前記出力用のデータを生成する出力装置。
【請求項６】
請求項４または５に記載の出力装置と、前記出力用のデータを用いて印刷する手段とを有する印刷装置。
【請求項７】
画像を複数の画素ブロックに分割し、各々の画素ブロックに含まれる画素データをハフマン符号化することにより、可変長のビット列に符号化した複数の圧縮データセットを含む画像データを復号するデータ処理方法であって、
前記圧縮データセットに含まれるハフマン符号化されたデータ単位を検出した段階で処理が区切られる処理を繰り返し行う第１の工程と、
前記圧縮データセットに含まれるハフマン符号化されたデータ単位をデコードし、そのデータ単位に対応する復号データを出力する第２の工程とを有するデータ処理方法。
【請求項８】
請求項７において、前記第１の工程では、前記データ単位の検出を繰り返して前記圧縮データセットの終端部分または先頭部分を判断する、データ処理方法。
【請求項９】
請求項７において、前記圧縮データセットは、前記画素データが離散コサイン変換および量子化され、量子化により得られた量子化係数がハフマン符号化された前記データ単位を含んでおり、
前記第２の工程は、前記量子化係数のうち、直流成分を含む前記データ単位はデコードし、交流成分を含む前記データ単位はデコードしない第１のモードと、
前記直流成分を含む前記データ単位および交流成分を含む前記データ単位を共にデコードする第２のモードとを備えているデータ処理方法。
【請求項１０】
請求項７において、前記第１の工程により前記データ単位の検出を繰り返して前記第２の工程により復号する前記圧縮データセットの終端部分または先頭部分を判断させ、所望の前記画素データを取得する第３の工程と、
この第３の工程を繰り返し実行することにより得られた複数の前記画素データにより出力用のデータを生成する第４の工程とを有するデータ処理方法。
【請求項１１】
画像を複数の画素ブロックに分割し、各々の画素ブロックに含まれる画素データをハフマン符号化することにより可変長のビット列に符号化した複数の圧縮データセットを含む画像データを復号するプログラムであって、
前記圧縮データセットに含まれるハフマン符号化されたデータ単位を検出した段階で処理が区切られる処理を繰り返し行い、前記データ単位の検出を繰り返して復号する前記圧縮データセットの終端部分または先頭部分を判断させ、前記圧縮データセットに含まれるハフマン符号化されたデータ単位をデコードし、そのデータ単位に対応する復号データを出力することにより所望の前記画素データを取得する処理と、
この画像データを取得する処理を繰り返し実行することにより得られた複数の前記画素データにより出力用のデータを生成する処理とを繰り返してコンピュータに実行させ、すべての出力用のデータを生成させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はハフマン符号化されたデータ列またはビットストリームをデコードする復号装置に関するものである。
【背景技術】
【０００２】
元データを可変長のデータに圧縮する符号化の方式の１つとしてハフマン符号化方式が知られている。このハフマン符号化は、エントロピー符号化とも称され、デジタルカメラで撮影した画像などに用いられるＪＰＥＧ方式の圧縮技術にも用いられている。ＪＰＥＧ（Joint Photographic Cording Experts Group）方式は、画像を形成する画素情報が、画像の左側から右側に、そして上から下、すなわち、左上から右下に向って８ドット×８ドットの画素ブロック単位で圧縮される。ＪＰＥＧでは、画像を形成するドットマトリクスが、８ドット×８ドットの小さなドットマトリクス（画素ブロック）に分割され、その小マトリクスを１つの単位として圧縮して１つの圧縮データセットとし、複数の圧縮データセットの集合で１つの画像を圧縮したデータを形成している。画素ブロックの単位は８ドット×８ドットに限定されずに、１６ドット×１６ドットなどのデータを単位として圧縮することも可能である。
【０００３】
さらに、ＪＰＥＧ方式では、８ドット×８ドットの画素データを離散コサイン変換（ＤＣＴ：Discrete Cosine Transform）する。離散コサイン変換時に得られたＤＣＴ係数を、量子化テーブルを用いて量子化する。量子化されたＤＣＴ係数（量子化係数）は、さらに、ハフマン符号化（エントロピー符号化）により圧縮される。量子化されたＤＣＴ係数にはＤＣ成分（直流成分）および複数のＡＣ成分（交流成分）が含まれ、それぞれの係数が１つのデータ単位としてハフマン符号化される。さらに、ＤＣ係数（成分）は直前の画素ブロックのＤＣ係数に対する差分値がハフマン符号化される。符号化された画素ブロック単位のデータセットは最小符号化単位（ＭＣＵ）と称され、ＪＰＥＧ方式で圧縮された画像ファイルには、ＭＣＵ階層では、複数のＭＣＵがスキャン方向に順番に並んで収納されている。個々のＭＣＵには、輝度情報（Ｙ）、色差情報（Ｃｂ、Ｃｒ）のコンポーネント毎に１ケのＤＣ係数の差分値と６３ケのＡＣ係数が含まれている。
【特許文献１】特開平６−２７６１０４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ＪＰＥＧ方式で圧縮されたデータ列またはビットストリームはデジタルカメラ、パーソナルコンピュータ、記録媒体などに保存し、画像を見たり印刷する場合は、圧縮されたデータ列を伸長して出力したり印刷したりするためのデータを作成する。また、インターネットなどを介してブラウザで画像を見る場合は、ブラウザがＪＰＥＧデータを伸長する機能をサポートする。
【０００５】
ＪＰＥＧ方式で圧縮された画像データを伸張する場合は、圧縮されたのと逆の手順、すなわち、ハフマン復号化、逆量子化、逆ＤＣＴの処理を経て伸長（復号）する。復号処理を高速で実行する必要があるデータ処理装置、たとえば、プリンタにおいては、復号処理を高速に実行するためにＪＰＥＧ復号専用のＬＳＩ、あるいは専用回路を含んだ画像処理機能の高いＬＳＩが採用される。
【０００６】
復号処理のうち、ハフマン復号化するためには、まず、ＭＣＵを検出し、そのＭＣＵから可変長のハフマンコード（符号）を検出し、検出した符号に対応した復号データを出力する必要がある。そして、１つのＭＣＵをハフマン復号することにより、輝度、色差のコンポーネント毎に復号データとして１ケのＤＣ係数の差分値と６３ケのＡＣ係数を出力することが要求され、１つの画像を再現するためには、千あるいは万単位、さらにそれ以上のＭＣＵを復号する必要がある場合も少なくない。したがって、復号データを短時間で出力することが要求される。さらに、ＬＳＩの常として、復号データを出力するための回路規模を小さくすることも要求される。
【０００７】
特開平６−２７６１０４号公報に開示されたハフマン復号回路は、複数のハフマン符号をそれぞれ格納したハフマン符号レジスタと、それぞれのハフマン符号レジスタに格納されたハフマン符号の符号長に相当する部分を通過させるフィルタ回路とを設け、フィルタ回路により切り出された復号対象のデータとハフマン符号をそれぞれの一致回路で一致検索し、一致検出した回路に相当する復号データを組み合わせ回路により出力している。高速で復号するためにメモリ回路にハフマン符号をアドレスとして割り当て、そのアドレスに記憶された復号データを出力する方式に比較すると、復号速度を低下させずに回路規模が小さくなるというメリットを備えている。
【０００８】
ハフマン符号は可変長であるので、順番に復号していかないと次のデータの先頭が見つからないという特性を備えている。したがって、複数のハフマン符号を含むＭＣＵも可変長であり、先頭から順番にＭＣＵを復号していかないとＪＰＥＧ圧縮されたデータを復号できないという特徴がある。その一方で、ＪＰＥＧ方式で圧縮された画像データを途中から切り出して表示あるいは印刷したいという要望がある。たとえば、画像の一部を出力したいとか、ＪＰＥＧ圧縮されたデータには左上から右下方向に左右を走査方向としてＭＣＵが並んでいるが、上下を走査方向として印刷したい場合がある。この場合、表示あるいは印刷したい画像データだけを復号すれば良いのであるが、ＭＣＵを順番に伸長する必要があるので、全画像を予め伸長しておく必要があり、全画像データを記憶する必要がある。このため、表示あるいは印刷に必要なデータに対して膨大なメモリが要求される。
【０００９】
復号した全画像データを記憶する代わりに、各ＭＣＵのデータ長だけを記録したり、各ＭＣＵの先頭アドレスだけを記憶することによりメモリ量を削減することが可能であるが、部分的に画像を表示したり印刷するためには再度所望のＭＣＵを伸長する必要がある。したがって、処理速度は低下する。また、途中のＭＣＵを伸長しようとすれば差分情報として格納されている直流成分（ＤＣ係数）は、アドレスなどのＭＣＵを識別するための情報と共に記憶しておく必要がある。したがって、部分的に伸長するために要求されるメモリ量はそれほど少なくならない。
【００１０】
さらに、部分的に伸長しようとしている画像が方形な領域であれば、その領域の先頭の行あるいは列のＭＣＵを前処理により見つけて記憶する方法があり、部分的に伸長するために要求されるメモリ量はさらに削減される。この方法では、画像を伸長する際に、次の行あるいは列のＭＣＵを、先行する行あるいは列のＭＣＵから連続して伸長するという工程を繰り返す必要がある。したがって、この方法でも、出力するデータを蓄積するバッファの他に、少なくとも行あるいは列のＭＣＵのアドレスとＤＣ係数を記憶するメモリ量は必要になる。また、行あるいは列単位でしか画像データを伸長することができず、この点では、画像データに含まれる全てのＭＣＵのアドレスおよびＤＣ係数をメモリに記憶する、上述した方法よりフレキシブルではない。その一方で、先頭の行あるいは列のＭＣＵを発見するために画像データ全体を予め伸長する前処理と、行あるいは列単位のＭＣＵを伸長して出力データを生成する処理とが必要となる点は共通し、処理速度を上げることは難しい。
【００１１】
そこで、本発明においては、画像データの途中から伸長するプロセスを高速で行うことができる復号装置およびデータ処理方法を提供することを目的としている。さらに、途中から伸長するプロセスのために要求されるメモリをさらに小さくすることができる出力装置を提供することを目的としている。
【課題を解決するための手段】
【００１２】
画像データの途中のＭＣＵにアクセスするための前処理においては、各ＭＣＵのサイズあるいはアドレスが決まり、ＤＣ係数が求まれば良い。したがって、特開平６−２７６１０４号に示されたようなハフマン復号化回路だけをアクティブにして、復号化回路から出力された復号データを逆量子化および逆ＤＣＴ変換せずに、前処理の処理時間を短縮するという方法が提案されている。これに対し、本発明においては、さらに、ハフマン復号化のプロセスを見直すことにより、ハフマン復号化に要する処理時間を短縮し、前処理に要する処理時間を大幅に短縮する。
【００１３】
すなわち、本発明においては、画像を複数の画素ブロックに分割し、各々の画素ブロックに含まれる画素データをハフマン符号化することにより可変長のビット列に符号化した複数の圧縮データセットを含む画像データを復号して出力する復号装置であって、圧縮データセットをハフマン復号化するハフマン復号ユニットを有する復号装置を提供する。このハフマン復号ユニットは、圧縮データセットに含まれるハフマン符号化されたデータ単位を検出した段階で処理が区切られる第１の回路と、圧縮データセットに含まれるハフマン符号化されたデータ単位をデコードし、そのデータ単位に対応する復号データを出力する第２の回路とを備えている。この復号装置では、圧縮データセットに含まれるハフマン符号化されたデータ単位を検出した段階で処理が区切られる処理を繰り返し行う第１の工程と、圧縮データセットに含まれるハフマン符号化されたデータ単位をデコードし、そのデータ単位に対応する復号データを出力する第２の工程とを有するデータ処理が行われる。
【００１４】
従来、ハフマン復号化は、圧縮データセットに含まれるハフマン符号化されたデータ単位に対応する復号データを出力することを目的としており、復号データが出力されると、次のハフマン符号化されたデータ単位の先頭から復号して次の復号データを出力するという処理を繰り返している。したがって、ハフマン符号化されたデータ単位に対応する復号データが出力されない復号化回路あるいは復号化プロセスというものが存在しない。これに対し、本発明においては、ハフマン符号化されたデータ単位を検出するが復号データは出力しない第１の回路を設け、この第１の回路だけで次々とハフマン符号化されたデータ単位を検出できるようにしている。この第１の回路において、復号データを出力しないということは、復号データの入出力に係る処理時間を省くことができることを意味する。すなわち、復号データが記憶されているメモリアドレスから復号データを出力バッファなどにセットしたり、復号データが記憶されているメモリアドレスを出力したりする復号データが記憶されているアドレスを出力するために消費されるサイクル数を省くことができる。復号データの出力に数サイクルを要する程度であっても、ＡＣ成分だけで数１０回のデータ出力を省略することが可能となり、さらに、数百あるいは数千のＭＣＵを前処理することを考えると、復号データの出力処理を省くことによる処理速度の向上は著しい。
【００１５】
実際には、ハフマン符号化は、エントロピーコーディングによりデータを圧縮しているので、符号化されたデータよりも復号データの方がデータ量は多い。したがって、ハフマン復号化において、ハフマン符号化されてビット数が圧縮されたデータ単位を読み込む処理に要する時間よりも、そのデータ単位が伸長された復号データをメモリあるいはルックアップテーブルなどから読み出して、ＦＦ（フリップフロップ）などの出力バッファに展開し、さらに、それをＣＰＵに転送するという、１つの復号データを出力する処理に要する時間の方が長い。したがって、本願発明による復号処理の高速化の効果は顕著であり、本願発明者のシミュレーションによると、復号データの出力を省くことにより、処理時間を２０〜３０％に圧縮できるという結果が得られている。
【００１６】
したがって、第１の回路および第１の工程において、ハフマン符号化されたデータ単位の検出を繰り返して行い、圧縮データセットの終端部分または先頭部分を判断することにより、ＪＰＧＥ方式で圧縮された各々のＭＣＵのアドレスを高速で検出できる。また、画素データが離散コサイン変換および量子化され、量子化により得られた量子化係数がハフマン符号化されたデータ単位を含むＪＰＥＧ圧縮方式の場合は、ＤＣ成分は差分データが圧縮されているので、ＤＣ成分については復号データを出力する必要がある。したがって、第２の回路および第２の工程では、量子化係数のうち、直流成分を含むデータ単位はデコードし、交流成分を含むデータ単位はデコードしない第１のモードと、直流成分を含むデータ単位および交流成分を含むデータ単位を共にデコードする第２のモードとを設けておくことが望ましい。
【００１７】
本発明により、途中のＭＣＵを完全に復号せずに読み飛ばす復号処理が非常に高速になるので、画像データの途中から伸長する方法として、新たな方法を採用することが可能となる。すなわち、画像を途中から出力する方法としては、前もって全てのＭＣＵを伸長してメモリに展開しておくか、アドレスなどの個別のＭＣＵを伸長するためのデータを予め取得してメモリに格納しておくか、行あるいは列といった単位の複数のＭＣＵを伸長するためのデータを予め取得してメモリに格納しておく必要があることは上述した通りである。これに対し、本発明においては、伸長するターゲットのＭＣＵに到達するまでの途中のＭＣＵを高速で読み飛ばすことが可能になるので、本発明により、ターゲットのＭＣＵを伸長するためのアドレスなどのデータはその都度、取得することが現実的な処理として可能となり、基本的にＭＣＵのアドレスやＤＣ成分を記憶しておくメモリを完全に省くことができる。
【００１８】
すなわち、本発明においては、本発明の復号装置と、第２の回路から出力された復号データにより復号された画素データを用いて出力用のデータを生成するデータ生成手段とを有する出力装置を提供可能である。そして、このデータ生成手段に、第１の回路によりデータ単位の検出を繰り返して第２の回路により復号する圧縮データセットの終端部分または先頭部分を、その都度、判断させ、所望の画素データを取得する取得手段を設け、この取得手段を繰り返し駆動することにより得られた複数の画素データにより出力用のデータを生成する出力装置を提供することが可能となる。また、本発明の出力装置としては、第１の工程によりデータ単位の検出を繰り返して第２の工程により復号する圧縮データセットの終端部分または先頭部分を判断させ、所望の画素データを取得する第３の工程と、この第３の工程を繰り返し実行することにより得られた複数の画素データにより出力用のデータを生成する第４の工程とを有するデータ処理方法を提供することが可能となる。したがって、出力用のデータを用いて印刷する手段を有する印刷装置において、最小のメモリで、画像データを途中から伸長する機能を備えた印刷装置を提供できる。
【００１９】
印刷する出力用のデータを生成する処理はファームウェアなどのプログラムとして適当な記録媒体に記録して、あるいはコンピュータネットワークを介して提供することが可能である。すなわち、本発明により、画像を複数の画素ブロックに分割し、各々の画素ブロックに含まれる画素データを可変長のビット列に符号化した複数の圧縮データセットを含む画像データを復号するプログラムであって、圧縮データセットに含まれるハフマン符号化されたデータ単位を検出した段階で処理が区切られる処理を繰り返し行い、データ単位の検出を繰り返して復号する圧縮データセットの終端部分または先頭部分を判断させ、圧縮データセットに含まれるハフマン符号化されたデータ単位をデコードし、そのデータ単位に対応する復号データを出力することにより所望の画素データを取得する処理と、この画像データを取得する処理を繰り返し実行することにより得られた複数の画素データにより出力用のデータを生成する処理とを繰り返してコンピュータに実行させ、すべての出力用のデータを生成させることを特徴とするプログラムを提供することができる。
【発明の効果】
【００２０】
このように本発明においては、ハフマン復号する際に、復号データを常に出力するのではなく、ハフマン符号化されたデータ単位の検出を繰り返して復号データは出力しない第１の回路と、復号データを出力する第２の回路とを設け、選択できるようにしている。したがって、少ないメモリ消費で、画像データの途中にフレキシブルに高速にアクセスすることが可能な復号装置を提供できる。
【発明を実施するための最良の形態】
【００２１】
以下に、図面を参照して本発明をさらに詳しく説明する。図１に本発明の復号装置を用いたプリンタの概略を示してある。プリンタ１は、デジタルカメラ等の周辺機器やパーソナルコンピュータなどのホスト装置からＪＰＥＧ方式で圧縮されたデータ列φ１を取得して、伸長（復号）して印刷する。データ列φ１は、コンパクトフラッシュ（登録商標）やメモリスティック（登録商標）などのストレージ１３により提供される。このストレージ１３はＵＳＢ、カードインターフェイスなどのインターフェイス１１を介してプリンタ１に取り付けられる。ホスト装置や周辺機器（ＰＣ）から通信によりデータ列φ１を提供することも可能である。
【００２２】
プリンタ１は、印刷用紙２にインク滴を吐出する複数のノズル３を備えた印刷ヘッド４と、この印刷ヘッド４をシャフト５に沿って紙幅方向を印刷時のスキャン方向として往復動するためのモータ６と、印刷時のスキャン方向と直交する紙送り方向に印刷用紙２をフィードするためにローラ７を駆動するモータ８とを有している。さらに、プリンタ１は、ＣＰＵ１５、ＲＡＭ１４、ＲＯＭ１２、メカ制御機構２１などによって構成される制御部１０とを有しており、メカ制御機構２１によりモータ６および８やノズル３からインク滴を吐出するタイミングが制御される。
【００２３】
制御部１０は、さらに、データ列φ１を復号する復号装置２０を備えている。この復号装置２０は、ハフマン復号化する専用回路が組み込まれたＬＳＩ、すなわち、ハフマン復号ユニットである。ハフマン復号化された復号データに対して逆量子化以降の処理を行って出力データを生成する機能はＣＰＵ１５がプログラムを実行することにより実現される。したがって、本例のプリンタ１においては、ＣＰＵ１５が逆量子化および逆離散コサイン変換を行う復号装置としても機能し、復号データにより復号された画素データを用いて出力用のデータを生成するデータ生成手段１６としても機能する。また、ハフマン復号ユニット２０を制御して復号データを取得する取得手段１７としても機能する。したがって、復号装置２０とＣＰＵ１５によって出力装置が構成されている。逆量子化および逆離散コサイン変換の処理をハードウェアにより実行することも可能であり、この場合は、専用回路を備えたＬＳＩが用意される。あるいは、ハフマン復号用の専用回路に加え、逆量子化および逆離散コサイン変換の処理用の専用回路を備えたＬＳＩが用意される。
【００２４】
ハフマン復号ユニット２０は、ＪＰＥＧ方式で圧縮されたデータ列φ１に含まれる各種のマーカーを解析する解析部２６と、ＭＣＵに含まれるハフマン符号化されたデータ単位のデータ長を特定した段階で処理が区切られる第１の回路３１と、ＭＣＵに含まれるハフマン符号化されたデータ単位をデコードし、そのデータ単位に対応する復号データを出力する第２の回路３２と、これらの回路３１および３２を含めてハフマン復号ユニット２０の動作を制御するシーケンサ２７とを備えている。このハフマン復号ユニット２０では、第１の回路３１で特定されたデータ単位に対応する復号データが第２の回路３２により出力される。したがって、第１の回路３１は、第２の回路３２の一部をなす。ハフマン符号化されたデータ単位を特定するだけの第１の回路３１と、ハフマン符号化されたデータ単位を特定し、それに対応した復号データを出力する第２の回路３２とを独立して搭載することも可能である。
【００２５】
第１の回路３１は、データ列φ１を連続あるいは断続的に読み込み、データ列φ１と共に与えられているハフマンテーブル２８を参照してハフマン符号化されたデータ単位を順番に検出する機能を備えている。したがって、検出されたデータ単位の数をカウントすることにより、各々のＭＣＵの終端部分または次のＭＣＵの先頭部分を判断できる。各ＭＣＵの境界が検出できれば、ＣＰＵ１５は、その情報に基づき、各ＭＣＵの境界のアドレスを記憶する処理を実行してもよく、あるいは、検出されたＭＣＵの数を単にカウントするだけの処理を実行しても良く、さらに、他の処理を実行することも可能である。いずれの場合も、第１の回路３１では、ハフマン符号化されたデータ単位を検出するだけであり、そのデータ単位を特定し、そのデータ単位に対応する復号データを出力する処理は行われない。ハフマンテーブル２８には、ＤＣ係数用のテーブルとＡＣ係数用のテーブルがあるが、これらはＲＡＭ１４に予め格納しておいても良く、データ列φ１に含まれるマーカーで指定されたテーブルを解析部２６で解析することにより作成することも可能である。
【００２６】
第２の回路３２は、第１の回路３１により検出されたデータ単位をさらにデコードする機能を備えている。したがって、第１の回路３１によりデータ単位が検出された後に、第２の回路３２に制御が渡されると、第２の回路３２の処理が済むまで、第１の回路３１は次のデータ単位の検出は行わない。あるいは、第２の回路３２が、デコードするデータ単位を検出するために第１の回路３１を使用すると理解することができる。
【００２７】
第２の回路３２が第１の回路３１を制御する構成であると、第２の回路３２は、量子化係数のうち、ＤＣ係数（ＤＣ係数の差分値）に対応したハフマン符号をデコードし、そのハフマン符号に対応する復号データ、すなわち、ＤＣ係数の差分値は出力し、ＡＣ係数に対応したハフマン符号はデコードせずに、ＡＣ係数は出力しない第１のモードと、ＤＣ係数およびＡＣ係数の双方をデコードしてそれぞれの復号データを出力する第２のモードとを備えている必要がある。このため、シーケンサ２７は第２の回路３２を第１のモードで動作させる第１の機能Ｍ１と、第２の回路３２を第２のモードで動作させる第２の機能Ｍ２とを備えている。第２の回路３２を第１のモードで動作させることにより、ＡＣ係数については第１の回路３１が連続してデータ単位を検出して復号データは出力せず、ＤＣ係数に対応した復号データ、すなわち、ＤＣ係数の差分値だけが出力される。したがって、ＤＣ係数の差分値を演算しておくことにより、所望のＭＣＵに到達したときにそのＭＣＵを復号するために必要なＤＣ係数の絶対値を得ることができる。
【００２８】
所望のＭＣＵに到達したときは、第２の回路３２を、第２のモードで動作させる。これにより、ＤＣ係数およびＡＣ係数の全てのデータ単位に対応する復号データが出力される。したがって、ＣＰＵ１５によりこれらの復号データを逆量子化以降の復号処理を実行し、所望のＭＣＵを伸長し、それにより圧縮されていた画素データを得ることができる。
【００２９】
図２に、ハフマン復号ユニット２０の処理ステートを示してある。第１の回路３１は、ＤＣ係数のデータ単位を検出する回路３１ａと、ＡＣ係数のデータ単位を検出する回路３１ｂとに分かれており、第２の回路３２はこれらの第１の回路３１ａおよび３１ｂを包含した構成となっている。ハフマン復号ユニット２０でハフマン符号化されたデータ単位を特定して復号データを出力する処理を説明する。この場合は、第２の回路３２が第２のモードで動作する。ハフマン復号ユニット２０は、データ列φ１を読み込み、第１の回路３１ａにより、ハフマンテーブル２８を参照してＤＣ係数に対応するハフマン符号の検出を開始し（ステート３５）、ハフマンテーブル２８に合致するデータ単位を検出すると（ステート３６）、検出されたデータ単位に対応するＤＣ係数の復号データを生成または取得して出力する（ステート３７）。
【００３０】
第１の回路３１ｂにより、データ列φ１からＡＣ係数に対応するハフマン符号化されたデータ単位の検出を開始し（ステート３８）、ハフマンテーブル２８に合致するデータ単位を検出すると（ステート３９）、そのデータ単位に対応するＡＣ係数の復号データを生成または取得してＣＰＵ１５に出力する（ステート４０）。そして、ステート３８に戻り、ステート３８、３９および４０の処理を繰り返し、必要な数のＡＣ係数の復号データをＣＰＵ１５に出力する。このような処理を全てのコンポーネント（輝度情報（Ｙ）、色差情報（Ｃｂ、Ｃｒ））について行った段階で１つのＭＣＵに対するハフマン復号ユニット２０の処理が終了する。
【００３１】
一方、第２の回路３２を第１のモードで動作させると、ハフマン復号ユニット２０は、データ列φ１を読み込み、第１の回路３１ａにより、ハフマンテーブル２８を参照してＤＣ係数に対応するハフマン符号の検出を開始し（ステート３５）、ハフマンテーブル２８に合致するデータ単位を検出すると（ステート３６）、検出されたデータ単位に対応するＤＣ係数の復号データを生成または取得して出力する（ステート３７）。
【００３２】
次に、第１の回路３１ｂにより、データ列φ１からＡＣ係数に対応するハフマン符号化されたデータ単位の検出を開始し（ステート３８）、ハフマンテーブル２８に合致するデータ単位を検出すると（ステート３９）、ステート３８に戻り、ステート３８および３９の処理を繰り返し、必要な数のＡＣ係数が検出された段階で１つのコンポーネントに対する処理が終了する。１つのコンポーネントに対する処理が終了すると、ターゲットのＭＣＵに含まれる別のコンポーネントに対する処理がステート３５から再び行われ、ターゲットのＭＣＵに含まれている全てのコンポーネントに対する処理が終了すると、１つのＭＣＵに対するハフマン復号ユニット２０の処理が終了し、ステート４０を介してＣＰＵ１５に通知される。すなわち、各々のコンポーネントのＡＣ係数のデータ単位の処理においては、復号データを出力するステート４０は実行されず、図中にループ３３で示すように、ステート３８および３９の処理のみが繰り返される。
【００３３】
図３にハフマン復号ユニット２０のハードウェア構成を示してある。ハフマン復号ユニット２０は、データ列φ１から順番にデータが転送される１６ビットのフリップフロップ４２と、フリップフロップ４２に入力されたデータがラッチされる１６ビットのシフトレジスタ４３とを備えている。このシフトレジスタ４３は４ビットのカウンタ４４によってデータがシフトされ、１６ビットのシフトレジスタ４５に転送され、１６ビットのコンパレータ４６によりハフマンテーブルと比較される。そのため、ハフマン復号ユニット２０は、最大で１６ビットのハフマン符号をセットできるハフマン符号レジスタ４７を備えており、コンパレータ４６により参照される。コンパレータ４６によりハフマン符号との一致が検出されると、その信号φ２がシーケンサ２７に入力される。したがって、このハフマン復号ユニット２０は、第１の回路３１の機能を備えている。
【００３４】
ハフマン符号レジスタ４７に入力されるハフマン符号は、１６バイトのＬｎテーブル４８から選択され、１６ビットのレジスタ４９を介してハフマン符号レジスタ４７に入力される。コンパレータ４６で比較されたデータがＬｎテーブル４８で選択されたハフマン符号に一致するときには、そのハフマン符号に対応する符号長が８ビットのＶｍポインター５０を介して４ビット×２５６のテーブル５１から取得される。これにより、ハフマン符号に対応する符号長が得ることができる。
【００３５】
また、シーケンサ２７は得られた符号長に基づきシフトレジスタ４３および４５のシフト量を制御すると共に、その符号長に対応したビット数のデータがシフトレジスタ５３に入力される。なお、Ｌｎテーブルで選択されるハフマン符号は４ビットのカウンタ５２を介してシーケンサ２７から制御される。
【００３６】
また、ハフマン復号ユニット２０では、シーケンサ２７によりＤＣ係数についてはシフトレジスタ５３に入力されたデータが出力用のフリップフロップ５４を介して出力される。したがって、シフトレジスタ５３で正負の処理が施されたＤＣ係数に対応する復号データがユニット外に出力される。また、ＡＣ係数についてはシフトレジスタ５３に入力されたデータと、４ビット×２５６のゼロランテーブル５５からゼロランを得て出力用のフリップフロップ５４から復号データとして出力される。したがって、このハフマン符号ユニット２０は、第２の回路３２の機能を備えている。
【００３７】
図４に、本例の印刷装置１により、データ列φ１にスキャン方向（行方向）Ｘに順番に含められた複数のＭＣＵを、サブスキャン方向（列方向）Ｙに伸長して印刷する例を示してある。また、印刷する処理の概要を図５にフローチャートにより示してある。ｎ列目を印刷する場合は、まず、ステップ８１において、ソフトウェアを用いてＣＰＵ１５により実現されるデータ生成手段１６は、同じくソフトウェアを用いてＣＰＵ１５により実現される取得手段１７に、最初のターゲットのＭＣＵをセットする。たとえば、ｎ１番目のＭＣＵをターゲットとしてセットする。次に、取得手段１７は、ステップ８２でターゲットのＭＣＵに達するまで、ステップ８３でハフマン復号ユニット２０を第１のモードにセットしてＭＣＵの処理を行う。これにより、１番目から（ｎ１−１）番目までＭＣＵまでが第１のモードで読み飛ばされる。ターゲットのＭＣＵに到達すると、取得手段１７は、ステップ８４でハフマン復号ユニット２０を第２のモードにセットしてＭＣＵの処理を行う。これにより、ターゲットのＭＣＵをハフマン復号化したデータが得られる。
【００３８】
さらに、ＣＰＵ１５は、ハフマン復号化されたデータを逆量子化し、離散コサイン変換して画素データを生成する。そして、ステップ８５では、ターゲットのＭＣＵから復号された画素データをＲＡＭ１４に出力用のデータ１９としてセットする（画素データを取得する処理）。さらにＣＰＵ１５のデータ生成手段１６は、ステップ８６において印刷するために出力用のデータ１９が整ったかを判断し、不足の場合は、ステップ８１に戻って次のターゲットのＭＣＵを取得手段１７にセットする。たとえば、ｎ２番目のＭＣＵをターゲットとしてセットする。
【００３９】
これにより、取得手段１７は、ハフマン復号ユニット２０を用いて１番目から（ｎ２−１）番目のＭＣＵまでが第１のモードで読み飛ばし、ｎ２番目のＭＣＵに圧縮された復号データを取得する。そして、ＣＰＵ１５からは、ｎ２番目のＭＣＵに圧縮された画素データがＲＡＭ１４の出力用のデータ１９にセットされる。このプロセスを繰り返してｎ番目の列を印刷する出力データ１９が整うと（ステップ８６、出力用のデータを生成する処理）、ステップ８７で、ＣＰＵ１５は出力用のデータ１９をメカ制御機構２１に送って印刷する。そして、ステップ８８で、所望の範囲の画像の印刷が終了するまで、これらの画素データを取得する処理と、出力用のデータを生成する処理と、１列分の出力用のデータを印刷する処理を繰り返して行う。
【００４０】
ハフマン復号ユニット２０においては、第１のモードで第１の回路３１が連続して動作することにより、ターゲットのＭＣＵに至るまでの途中のＭＣＵを完全に復号せずに読み飛ばす復号処理が非常に高速になる。このため、ステップ８３において、ターゲットのＭＣＵ毎に、ターゲットのＭＣＵを伸長するためのアドレスなどのデータをその都度、取得することが現実的な処理速度で可能となり、特定のＭＣＵを伸長するために、そのアドレスやＤＣ成分を記憶しておくメモリを省くことができる。したがって、データ生成手段１６は、取得手段１７を用い、ステップ８３（第１の工程）の、第１の回路３１によりデータ単位の検出を繰り返して第２の回路３２により復号するＭＣＵ（圧縮データセット）の終端部分または先頭部分を、その都度、判断させる処理を行い、次にステップ８４（第２の工程）で第２の回路３２により所望の画素データを取得する。そして、読み飛ばし処理（ステップ８３）と伸長処理（ステップ８４）により所望の画素データを取得する（ステップ８５、第３の工程）と、このステップ８５までのプロセスを繰り返し実行することにより得られた複数の画素データにより出力用のデータを生成し（ステップ８７、第４の工程）、印刷することができる。したがって、本例のプリンタ１においては、個々のＭＣＵを伸長するためのアドレスやＤＣ係数を記憶しておくメモリは不要であり、最小のメモリでデータ列φ１を途中からデータを伸長することができる。
【００４１】
図６にハフマン復号ユニット２０において１つのＭＣＵを復号する処理を、フローチャートを用いて示してある。ステップ６１において、ＪＰＥＧ方式で圧縮されたデータに含まれるマーカーの処理を行う。これにより、ハフマンテーブルや量子化テーブルの種類を把握できる。次に、ステップ６２において、圧縮されたデータであるデータ列φ１をＲＡＭ１４から読み出す。ステップ６３において、ハフマン符号を生成、すなわち、ハフマンテーブルからハフマン符号を取得して、ステップ６４において、読み出したデータ列φ１の部分的なデータの中にハフマン符号と一致するデータ単位があるか否かを検出する。このステップ６３における処理はＤＣ係数に対応するデータ単位を検出する処理である。ハフマンテーブルのハフマン符号のいずれかに一致するデータ単位が検出されるまでこのステップ６３を繰り返す。ハフマン符号と一致するＤＣ係数のデータ単位が検出されると、ステップ６５で、ハフマン符号に一致したデータ単位に対応するＤＣ係数のデータビットがメモリあるいはハフマンテーブルなどから読み出され、ステップ６６でＤＣ係数の復号データが生成されて累計バッファに出力される。ＤＣ係数の復号データは差分値であるので、累計バッファでＤＣ係数の絶対値が随時求められる。
【００４２】
次に、ステップ６７において、復号ユニット２０が第１のモードで駆動されているか、第２のモードで駆動されているかが判断される。第１のモードで駆動されている場合は、図７（ａ）のステップ６８の処理を行う。ステップ７１において、ハフマンテーブルと比較する対象となるデータをデータ列φ１から読み出し、ステップ７２において、ハフマンテーブル２８のＡＣ係数用のハフマン符号を取得する。そして、ステップ７３において、読み出したデータの少なくとも一部に、ハフマン符号と一致するデータ単位があるか否かの一致検出を行う。ハフマン符号のいずれかと一致するデータ単位が検出されると、それ以降の処理は行われず、ステップ７１のデータの読み出しに戻り、ステップ７４でターゲットのＭＣＵに含まれる１つコンポーネントの全てのＡＣ係数に対応するデータ単位が検出されるまでデータ単位を検出する処理が繰り返される。これにより、ターゲットのＭＣＵに含まれている１つのコンポーネントについての処理が終了する。１つのＭＣＵには輝度情報（Ｙ）、色差情報（Ｃｂ、Ｃｒ）に関し複数のコンポーネントが含まれている。したがって、図６に示したステップ７０において、ターゲットのＭＣＵに含まれる全てのコンポーネントに対してステップ６２からステップ６８までの処理を繰り返すことにより、１つのＭＣＵに対する処理が終了する。
【００４３】
一方、復号ユニット２０が第２のモードで駆動されている場合は、図７（ｂ）のステップ７９の処理が行われる。まず、ステップ７１において、ハフマンテーブルと比較する対象となるデータをデータ列φ１から読み出し、ステップ７２において、ハフマンテーブル２８のＡＣ係数用のハフマン符号を取得する。そして、ステップ７３において、読み出したデータの少なくとも一部に、ハフマン符号と一致するデータ単位があるか否かの一致検出を行う。ここまでの処理は、第１のモードと同じである。
【００４４】
次に、ハフマン符号のいずれかと一致するデータ単位が検出されると、ステップ７６で、ハフマン符号に一致したデータ単位に対応するＡＣ係数のデータビットがメモリあるいはハフマンテーブルなどから読み出され、復号データとして出力用のバッファに格納される。さらに、ステップ７７において、出力用バッファからＣＰＵ１５によりＲＡＭ１４に用意されたＭＣＵを伸長するための一時記憶エリアに転送される。図３に示したハードウェアであると、ステップ７６において、シフトレジスタ５３により復号データが生成され、出力用のフリップフロップ５４に生成された復号データがセットされ、さらにステップ７７において、フリップフロップ５４にセットされた復号データがＣＰＵ１５を介してメモリへ転送される。
【００４５】
ターゲットのＭＣＵを復号する場合は、ステップ７４においてハフマン復号ユニット２０から全てのデータ単位に対応する復号データが出力された後に、さらに、ステップ７８において逆量子化され、ステップ７９において逆離散コサイン変換される。本例のプリンタ１においては、これらの処理は、ＣＰＵ１５においてプログラム（ファームウェア）で実行される。専用回路を設けて処理することも可能である。これらの処理が行われると、ターゲットのＭＣＵに含まれる１つのコンポーネントが復号され、ステップ８０においてデータがメモリ１４に格納される。そして、ステップ７０において、全てのコンポーネントに対する復号が終了することにより、印刷用のデータ１９が生成される。
【００４６】
ＭＣＵを復号しないで読み飛ばす場合、ハフマン復号ユニット２０においては常にステップ７１から７７までの処理を行い、ＣＰＵ１５における逆量子化（ステップ７８）、逆離散コサイン変換（ステップ７９）の処理を省くことで処理時間の短縮を図ることも可能であり、これらの処理（ステップ７８および７９）では処理されるデータ量も大きく、ＲＡＭ１４との入出力に費やされる処理時間も長いので、読み飛ばしの効果は十分にある。
【００４７】
本発明においては、さらに、ハフマン復号ユニット２０に、第１の回路３１と第２の回路３２とを設けることにより、読み飛ばす際に、ハフマン復号ユニット２０における復号データを生成する処理（ステップ７６）と、ハフマン復号ユニット２０から復号データを読み出す処理（ステップ７７）とを省略し、ハフマン復号ユニット２０の内部でハフマン符号化されたデータ単位を検出する処理を繰り返せるようになっている。
【００４８】
ハフマン復号ユニット２０のような専用回路を備えたＬＳＩあるいはＡＳＩＣにおいては、内部処理に対してデータの入出力に費やされる処理時間が長い。特に、入出力用のバス幅がデータ量よりも小さい場合は、１つのデータを入出力するために複数回のＩ／Ｏを繰り返す必要があり、その処理に費やされる時間がクリティカルパスとなる。さらに、ハフマン符号化は、データ圧縮処理であり、入力されるデータ列φ１より、復号データの方がデータ量は多く、復号データを出力バッファにセットして、それをＣＰＵ１５に転送する処理に時間が費やされ、さらに、１６ビットの入力データ中に複数のハフマン符号化されたデータ単位が含まれている可能性が高いことを考慮すると、復号データを出力する処理回数がデータ列φ１を入力する処理回数よりも圧倒的に多い。したがって、復号データを生成し、出力する処理がハフマン復号ユニット２０のクリティカルパスになっており、第１のモードで、これらの処理を省くことによりハフマン復号ユニット２０の処理速度は飛躍的に増大する。
【００４９】
実際に、本願発明者が、ハフマン復号ユニット２０を第１のモードで使用して１０ＭＣＵを読み飛ばす処理（第１の処理）と、ハフマン復号ユニット２０を第２のモードに固定し、逆量子化（ステップ７８）および逆離散コサイン変換（ステップ７９）を省いて１０ＭＣＵを読み飛ばす処理（第２の処理）と、を行うシミュレーションをしたところ、第２の処理に３００μｓ程度を要する回路を設定し、第１の処理を行うと処理時間を４０μｓ程度に短縮することができ、処理時間を１５パーセント以下に短縮することができた。この処理時間はシミュレーション上の数値であり、また、連続するＭＣＵの途中に階層データが含まれるなどの条件が異なると同等の効果が得られるとは限らないが、少なくとも本発明を適用することにより、ハフマン復号化するプロセスの処理時間を数分の一に短縮することが可能となり、ＭＣＵの読み飛ばしに要する時間を大幅に短縮できる。
【００５０】
このハフマン復号ユニット２０は、ＭＣＵを読み飛ばす全てのプロセスに有効である。すなわち、ＪＰＥＧ圧縮された画像データのすべてのＭＣＵを部分的に復号して全てのＭＣＵのアドレスとＤＣ係数の絶対を取得する事前処理においても、本例のハフマン復号ユニットを用いれば１つのＭＣＵを処理する時間を短縮できる。また、行あるいは列といった部分復号する最初あるいは途中のデータを事前に取得する処理においても、本例のハフマン復号ユニット２０を用いることにより途中のＭＣＵを読み飛ばす処理時間を短縮できる。さらに、本例のプリンタ１のように、印刷するデータを作成するときに、印刷するデータに含まれるターゲットのＭＣＵに到達するまでのＭＣＵを全て読み飛ばす処理も、本例のハフマン復号ユニット２０を用いることにより高速化できる。特に、本例のプリンタ１のようにターゲットのＭＣＵまでのＭＣＵを常に読み飛ばす方式においては、読み飛ばしに要する処理がクリティカルパスとなる可能性が高く、本例のハフマン復号ユニット２０を採用することにより、クリティカルパスを短縮できるか、または、読み飛ばしの処理がクリティカルパスになることを防ぐことができる。
【００５１】
なお、上記では、ハフマン復号ユニット２０に本発明が適用された例を説明しているが、ハフマン復号化回路に加えて、逆量子化などの他の復号処理回路を搭載した復号用あるいは画像処理用のＬＳＩあるいはＡＳＩＣにおいても本発明を適用可能である。
【００５２】
また、本発明を適用した印刷装置の例としてインクジェットタイプのプリンタ１を説明したが、サーマルタイプやレーザタイプのプリンタであっても良い。さらに、印刷ヘッド１３を移動または走査させながら印刷するタイプに限定されずに、ラインタイプのプリンタにも本発明は適用できる。また、プリンタは、ファクシミリやコピーなどの印刷する機能を有する機器を全て含む概念である。さらに、印刷処理に限らず、圧縮された順番と異なる順番で画面に画像を表示するような出力装置においても本発明は適用できる。
【図面の簡単な説明】
【００５３】
【図１】本発明を適用した復号装置が搭載されたプリンタの概略構成を示す図である。
【図２】ハフマン復号ユニットの処理ステートを示す図である。
【図３】ハフマン復号ユニットのハードウェア構成を示す図である。
【図４】ＪＰＥＧ方式で圧縮されたデータ列がプリンタで印刷される様子を示す図である。
【図５】プリンタにおける印刷処理を示すフローチャートである。
【図６】ハフマン復号ユニットで１つのＭＣＵを復号する処理を示すフローチャートである。
【図７】図７（ａ）は、図６においてハフマン復号ユニットが第１のモードで動作するときの処理を示すフローチャート、図７（ｂ）は、図６においてハフマン復号ユニットが第２のモードで動作するときの処理を示すフローチャートである。
【符号の説明】
【００５４】
１    プリンタ
１５    ＣＰＵ
１６    データ生成手段
１７    取得手段
２０    ハフマン復号ユニット（復号装置）
２６    解析部
２７    シーケンサ
２８    ハフマンテーブル
３１    第１の回路
３２    第２の回路
【図１】
2005109812.tif 000003
【図２】
2005109812.tif 000004
【図３】
2005109812.tif 000005
【図４】
2005109812.tif 000006
【図５】
2005109812.tif 000007
【図６】
2005109812.tif 000008
【図７】
2005109812.tif 000009