(57)【要約】【課題】  少ないメモリで高速に、圧縮された画像データを復元し所定の角度だけ回転させた状態で、順次出力することができる画像処理装置を提供すること。【解決手段】  圧縮された画像データである圧縮画像データを解析し、復号後の画像の所定の列を構成するＭＣＵ群を復号するための情報を有する解析テーブルを生成する生成手段（ハフマン処理部２２）と、生成手段によって生成された解析テーブルを参照し、圧縮画像データから所定のデータを抽出する抽出手段（ＳＤＲＡＭＩ／Ｆ２６）と、抽出手段によって抽出されたデータを復号する復号手段（ＪＰＥＧ処理部２５）と、復号手段による復号結果に基づき、次に処理対象となる列を構成するＭＣＵ群を復号するための情報を生成し、当該情報により解析テーブルを更新する更新手段（ＳＤＲＡＭＩ／Ｆ２６、ハフマン処理部２５ｅ）と、を有する。【選択図】  図１
2006304243.tif 000002
【特許請求の範囲】
【請求項１】
圧縮された画像データである圧縮画像データを解析し、復号後の画像の所定の列を構成するＭＣＵ群を復号するための情報を有する解析テーブルを生成する生成手段と、
上記生成手段によって生成された上記解析テーブルを参照し、上記圧縮画像データから所定のデータを抽出する抽出手段と、
上記抽出手段によって抽出されたデータを復号する復号手段と、
上記復号手段による復号結果に基づき、次に処理対象となる列を構成するＭＣＵ群を復号するための情報を生成し、当該情報により上記解析テーブルを更新する更新手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記解析テーブルは、前記圧縮画像データにおいて、処理対象となるデータが存在する位置を示す位置情報と、前記ＭＣＵ間の相関関係を示す相関情報とを有していることを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記位置情報は前記圧縮画像データ中における位置を示すアドレス情報であり、前記相関情報はＤＰＣＭ符号化されたＤＣ成分であることを特徴とする請求項２記載の画像処理装置。
【請求項４】
前記アドレス情報として、前記圧縮画像データがバッファ上に展開された際の当該バッファの物理的なアドレスであって、所望のデータが格納されている先頭アドレスおよび終端アドレスをさらに有することを特徴とする請求項３記載の画像処理装置。
【請求項５】
前記復号後の画像の各行に対応するＭＣＵ群をそれぞれ格納する領域を備えるバッファを有し、
上記領域の残りのバッファ量を示す残バッファ量のいずれかが、所定の値よりも小さくなった場合には、全ての領域に対して次の圧縮画像データを読み込むことを特徴とする請求項１記載の画像処理装置。
【請求項６】
前記復号後の画像の各行に対応するＭＣＵ群をそれぞれ格納する領域を備えるバッファを有し、
上記各領域には、１回の処理単位に対応するＭＣＵ群が少なくとも格納され、
上記バッファに格納されているＭＣＵ群の復号処理が終了した場合には、次の処理単位のＭＣＵ群を含むデータが格納されることを特徴とする請求項１記載の画像処理装置。
【請求項７】
前記復号後の画像の各行に対応するＭＣＵ群をそれぞれ格納する領域を備えるバッファを有し、
各領域にはリングバッファ形式でＭＣＵ群が格納されることを特徴とする請求項１記載の画像処理装置。
【請求項８】
複数の圧縮画像データを復号するために、それぞれの圧縮画像データに対応する解析テーブルと、復号テーブルとを選択する選択手段をさらに有することを特徴とする請求項１記載の画像処理装置。
【請求項９】
請求項１から８のいずれか１項記載の画像処理装置を有する印刷装置。
【請求項１０】
圧縮された画像データである圧縮画像データを解析し、復号後の画像の所定の列を構成するＭＣＵ群を復号するための情報を有する解析テーブルを生成する生成ステップと、
上記生成ステップにおいて生成された上記解析テーブルを参照し、上記圧縮画像データから所定のデータを抽出する抽出ステップと、
上記抽出ステップにおいて抽出されたデータを復号する復号ステップと、
上記復号ステップにおける復号結果に基づき、次に処理対象となる列を構成するＭＣＵ群を復号するための情報を生成し、当該情報により上記解析テーブルを更新する更新ステップと、
を有することを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、印刷装置、および、画像処理方法に関する。
【背景技術】
【０００２】
近年、ネットワークとディジタル機器の発展に伴い、画像圧縮技術が普及している。このような画像圧縮のフォーマットとして最もポピュラーなものに、「ＪＰＥＧ（Joint Photograph Experts Group）」がある。ＪＰＥＧは、例えば、ＲＧＢ（赤緑青）２４ビットで表現される静止画像情報を圧縮可能な高能率符号化標準である。
【０００３】
図３０は、ＪＰＥＧによる圧縮、復元処理の典型例を表す概念図である。すなわち、同図（Ａ）〜（Ｄ）は、圧縮（符号化）のプロセスを表し、同図（Ｅ）〜（Ｈ）は復元（復号化）のプロセスを表す。
【０００４】
ＪＰＥＧ圧縮に際しては、ＲＧＢあるいはＹ（輝度）Ｃｂ（青色差）Ｃｒ（赤色差）などにより表される原画を、まず、図３０（Ａ）に表すように８ピクセル×８ピクセルのブロックに分割する。
【０００５】
次に、図３０（Ｂ）に示すように、ブロック毎にＤＣＴ（discrete cosine transform：離散コサイン変換）処理を施す。ＤＣＴ処理は空間周波数変換に対応し、この処理によってブロック画像が周波数により表される。一般に画像データは、周波数スペクトルで表すと低周波数帯域に情報が集中しているので、高周波帯域を省略することで少ない情報量で符号化を行うことができる。このように周波数に変換した後にさらに量子化することにより情報を離散化させる。
【０００６】
次に、このようにＤＣＴ量子化したデータを図３０（Ｃ）に表したように、ジグザク走査して一列に並べる（シリアルデータ化する）。そして、エントロピ符号化処理を施すことにより、同図（Ｄ）に表したような符号列とすることができる。
【０００７】
一方、復元は、上述した一連の処理を逆に施すことにより、同図（Ｅ）〜（Ｈ）に表したように実行される。
【０００８】
ところで、画像データを取り扱うに際して、入力した画像を所定の角度だけ回転させたい場合がある。例えば、ＣＤ−ＲＯＭなどの媒体から、あるいはインターネットなどを介してパーソナルコンピュータに取り込んだＪＰＥＧ画像をプリンタで印刷出力する際に、用紙のサイズや画像のレイアウトに応じて、ＪＰＥＧ画像を９０度、１８０度、あるいは２７０度回転させた状態で出力させたい場合がある。
【０００９】
このような場合に、対象となるＪＰＥＧ画像の全体を復元し、しかる後に所定の角度だけ回転処理を施す方法が考えられる。
【００１０】
しかし、この方法によると、復元した画像の全体を一時的に保持するための大容量のメモリが必要となるばかりでなく、大容量の画像データを回転処理するために回転処理の所要時間も増大し、システムに対する負荷が大きくなるという問題が生ずる。
【００１１】
例えば、このようなＪＰＥＧ画像の復元、保持、回転処理をホストコンピュータで実行することとすると、ホストのメモリコストが高くなり、また処理の負荷が増大する。一方、プリンタ側において同様の動作を実行させるためには、大容量メモリを増設する必要があり、コストが大幅に上昇する。
【００１２】
そこで、このような問題点を解決するために、例えば、特許文献１に示すような技術が提案されている。
【００１３】
【特許文献１】特開２００１−０８６３１８号公報（要約書、請求項）
【発明の開示】
【発明が解決しようとする課題】
【００１４】
ところで、特許文献１に示す回転処理は、ソフトウエアによって実現されている。このように、ソフトウエアで処理しようとすると、処理速度をある程度以上向上することができないという問題点がある。
【００１５】
本発明は、上記の事情に基づきなされたもので、その目的とするところは、少ないメモリで高速に、圧縮された画像データを復元し所定の角度だけ回転させた状態で、順次出力することができる、画像処理装置、印刷装置、および、画像処理方法を提供することである。
【課題を解決するための手段】
【００１６】
上述の目的を達成するため、本発明の画像処理装置は、圧縮された画像データである圧縮画像データを解析し、復号後の画像の所定の列を構成するＭＣＵ群を復号するための情報を有する解析テーブルを生成する生成手段と、生成手段によって生成された解析テーブルを参照し、圧縮画像データから所定のデータを抽出する抽出手段と、抽出手段によって抽出されたデータを復号する復号手段と、復号手段による復号結果に基づき、次に処理対象となる列を構成するＭＣＵ群を復号するための情報を生成し、当該情報により解析テーブルを更新する更新手段と、を有する。
【００１７】
このため、少ないメモリで高速に、圧縮された画像データを復元し所定の角度だけ回転させた状態で、順次出力することができる画像処理装置を提供できる。
【００１８】
また、他の発明の画像処理装置は、上述の発明に加えて、解析テーブルが、圧縮画像データにおいて、処理対象となるデータが存在する位置を示す位置情報と、ＭＣＵ間の相関関係を示す相関情報とを有している。このため、解析テーブルを参照することにより、位置情報と相関情報とを算出し、復号処理を行うことができる。
【００１９】
また、他の発明の画像処理装置は、上述の発明に加えて、位置情報が圧縮画像データ中における位置を示すアドレス情報であり、相関情報がＤＰＣＭ符号化されたＤＣ成分である。このため、解析テーブルを参照することにより、アドレス情報およびＤＣ成分を算出し、復号処理を行うことができる。
【００２０】
また、他の発明の画像処理装置は、上述の発明に加えて、アドレス情報として、圧縮画像データがバッファ上に展開された際の当該バッファの物理的なアドレスであって、所望のデータが格納されている先頭アドレスおよび終端アドレスをさらに有するようにしている。このため、バッファ上における画像データの格納状態を考慮せずに、画像データを得ることができる。
【００２１】
また、他の発明の画像処理装置は、上述の発明に加えて、復号後の画像の各行に対応するＭＣＵ群をそれぞれ格納する領域を備えるバッファを有し、領域の残りのバッファ量を示す残バッファ量のいずれかが、所定の値よりも小さくなった場合には、全ての領域に対して次の圧縮画像データを読み込むようにしている。このため、終端アドレスを省略することにより、解析テーブルのサイズを縮小することができる。
【００２２】
また、他の発明の画像処理装置は、復号後の画像の各行に対応するＭＣＵ群をそれぞれ格納する領域を備えるバッファを有し、各領域には、１回の処理単位に対応するＭＣＵ群が少なくとも格納され、バッファに格納されているＭＣＵ群の復号処理が終了した場合には、次の処理単位のＭＣＵ群を含むデータが格納されるようにしている。このため、バッファの領域が少ない場合であっても復号処理を確実に実行することができる。
【００２３】
また、他の発明の画像処理装置は、上述の発明に加えて、復号後の画像の各行に対応するＭＣＵ群をそれぞれ格納する領域を備えるバッファを有し、各領域にはリングバッファ形式でＭＣＵ群が格納されるようにしている。このため、バッファへのコピー回数を減らして、処理の高速化を図ることが可能になる。
【００２４】
また、他の発明の画像処理装置は、上述の発明に加えて、複数の圧縮画像データを復号するために、それぞれの圧縮画像データに対応する解析テーブルと、復号テーブルとを選択する選択手段をさらに有する。このため、複数の画像データを同時に復号することが可能になる。
【００２５】
また、本発明の印刷装置は、前述の画像処理装置を有している。このため、少ないメモリで高速に、圧縮された画像データを復元し所定の角度だけ回転させた状態で、順次出力することができる印刷装置を提供できる。
【００２６】
また、本発明の画像処理方法は、圧縮された画像データである圧縮画像データを解析し、復号後の画像の所定の列を構成するＭＣＵ群を復号するための情報を有する解析テーブルを生成する生成ステップと、生成ステップにおいて生成された解析テーブルを参照し、圧縮画像データから所定のデータを抽出する抽出ステップと、抽出ステップにおいて抽出されたデータを復号する復号ステップと、復号ステップにおける復号結果に基づき、次に処理対象となる列を構成するＭＣＵ群を復号するための情報を生成し、当該情報により解析テーブルを更新する更新ステップと、を有する。
【００２７】
このため、少ないメモリで高速に、圧縮された画像データを復元し所定の角度だけ回転させた状態で、順次出力することができる画像処理方法を提供できる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の一実施の形態について、図面を参照して説明する。
【００２９】
第１の実施の形態．
【００３０】
図１は、本発明の第１の実施の形態に係る画像処理装置の構成例を示す図である。この図に示すように、本発明の第１の実施の形態に係る画像処理装置は、ＣＰＵ（Central Processing Unit）１０、メモリカードＩ／Ｆ（Interface）１１、メモリカード１２、画像処理回路２０、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）コントローラ１３、および、ＳＤＲＡＭ１４を主要な構成要素としている。
【００３１】
ここで、ＣＰＵ１０は、装置の各部を制御する制御装置である。メモリカードＩ／Ｆ１１は、メモリカード１２が装着された場合に、当該メモリカード１２に格納されている情報を読み出したり、新たな情報を書き込んだりする際の制御を行うインタフェースである。メモリカード１２は、フラッシュメモリ等によって構成されており、図示せぬディジタルカメラ等に着脱自在に装着されて、撮影された画像データが格納されるとともに、メモリカードＩ／Ｆ１１に接続することにより、当該格納された画像データを読み出すことができる。
【００３２】
画像処理回路２０は、例えば、ＩＣ（Integrated Circuit）等の半導体装置によって構成され、メモリカード１２から読み出され、ＳＤＲＡＭ１４に格納されている画像データに対して回転処理（例えば、９０度、１８０度、２７０度等）を施して、得られた回転画像データを出力する。なお、画像処理回路２０のみを単体で半導体装置として構成するのではなく、ＣＰＵ１０、メモリカードＩ／Ｆ１１、ＳＤＲＡＭコントローラ１３、および、ＳＤＲＡＭ１４のすべてまたはこれらのいずれかを含む形態で半導体装置として構成してもよい。
【００３３】
ここで、画像処理回路２０は、ＣＰＵＩ／Ｆ２１、ハフマン処理部２２、レジスタ２３、テーブル２４、ＪＰＥＧ処理部２５、および、ＳＤＲＡＭＩ／Ｆ２６を主要な構成要素としている。
【００３４】
ここで、ＣＰＵＩ／Ｆ２１は、ＣＰＵ１０との間で情報を授受する際のインタフェースである。生成手段としてのハフマン処理部２２は、ＳＤＲＡＭ１４またはメモリカード１２に格納されているＪＰＥＧ画像データに施されているハフマン符号を復号処理する。
【００３５】
レジスタ２３は、動作モードを示す情報、現在のステータスを示す情報、および、後述する解析テーブルのＳＤＲＡＭ１４上の格納位置を示す情報等を保持する内部メモリである。テーブル２４は、ハフマン復号に必要な情報等を格納しているメモリである。復号手段としてのＪＰＥＧ処理部２５は、図２を参照して後述するように、ＪＰＥＧ処理を実行するための回路であり、例えば、画像処理回路２０の一部として構成される。
【００３６】
抽出手段および更新手段の一部としてのＳＤＲＡＭＩ／Ｆ２６は、ＳＤＲＡＭ１４に格納されている情報を読み出したり、ＳＤＲＡＭ１４に情報を格納したりする際のインタフェースである。
【００３７】
ＳＤＲＡＭコントローラ１３は、ＳＤＲＡＭ１４を制御するためのインタフェースである。バッファとしてのＳＤＲＡＭ１４は、画像処理回路２０が画像処理を実行する際に必要な情報等を一時的に格納するメモリである。
【００３８】
図２は、図１に示すＪＰＥＧ処理部２５の詳細な構成例を示す図である。この図に示すように、ＪＰＥＧ処理部２５は、ＣＰＵＩ／Ｆ２５ａ、レジスタ２５ｂ、テーブル２５ｃ、入力バッファコントロール部２５ｄ、ハフマン処理部２５ｅ、逆量子化部２５ｆ、ＩＤＣＴ（Inverse Discrete Cosine Transform）部２５ｇ、および、出力バッファコントロール部２５ｈによって構成されている。
【００３９】
ここで、ＣＰＵＩ／Ｆ２５ａは、ＣＰＵ１０との間で情報を授受する際のインタフェースである。レジスタ２５ｂは、動作モードを示す情報、現在のステータスを示す情報等を保持するための内部メモリである。
【００４０】
テーブル２５ｃは、画像データの復号に必要な、ハフマンテーブル、量子化テーブル、画像情報、および、ＭＣＵ（Minimum Coded Unit（最小処理単位））情報等を有している。
【００４１】
入力バッファコントロール部２５ｄは、ＳＤＲＡＭ１４から情報を読み出す際の入力バッファを制御する。更新手段の一部としてのハフマン処理部２５ｅは、入力バッファコントロール部２５ｄを介して入力された画像データに対して、テーブル２５ｃに格納されているハフマンテーブルを参照し、ハフマン復号処理を施す。逆量子化部２５ｆは、ハフマン処理部２５ｅから供給された画像データに対して、テーブル２５ｃに格納されている逆量子化テーブルを参照し、逆量子化処理を施す。ＩＤＣＴ部２５ｇは、逆量子化部２５ｆから供給された画像データに対して、ＩＤＣＴ処理を施す。出力バッファコントロール部２５ｈは、外部に対して画像データを出力するための出力バッファを制御する。
【００４２】
次に、本発明の第１の実施の形態の動作の概要について説明する。
【００４３】
図３は、本発明の実施の形態の動作の概要を説明するための図である。本発明の第１の実施の形態では、ＪＰＥＧ方式によって圧縮された圧縮画像データ（以下、単に「画像データ」と称する）を、所定の方向に回転して（例えば、時計方向に９０度回転して）出力する。ところで、図３（Ａ）に示す画像データｇ０を時計方向に９０度回転させて画像データｇ１を生成する場合、画像データの左端の列データｃ１（ハッチングが施されている部分）から回転処理後の画像データの行データｒ１（ハッチングが施されている部分）を生成するためには、画像データのＤＣ成分（直流成分）とＡＣ成分（交流成分）のそれぞれを一度ハフマン展開しなければならない。それは、画像データをＪＰＥＧ符号化処理する場合、処理の最小単位であるＭＣＵ単位でＤＣＴ（離散コサイン変換）および量子化を行った後、ＤＣ成分は隣接するＤＣ成分値をＤＰＣＭ（Differential Pulse Code Modulation）により符号化し、ＡＣ成分はジグザグスキャンにより一列のビットストリームに並べ、ランレングス符号化及びハフマン符号化処理をするため、ＤＣ成分では隣接するＭＣＵとの相関関係が問題となり、ＡＣ成分ではハフマン符号化処理によりそのデータ長が各ＭＣＵで一定にならず、ＪＰＥＧデータのビットストリーム中のどのデータが求めるＭＣＵのＡＣ成分値であるかが判明できないためである。したがって、ＪＰＥＧ符号化された各ＭＣＵを並べ換えるには各ＭＣＵのＤＣ成分値と、ＪＰＥＧ符号化された各ＭＣＵのビットストリーム中におけるＡＣ成分の位置（以下、ＡＣ成分のアドレスという）を知る必要があり、これらの情報が不明な場合にはＭＣＵを並べ換えることができない。
【００４４】
そこで、本発明においては、画像データの回転処理をする場合、まず、画像データ全体を画像処理回路２０によって処理することにより、画像データの左端の列データのＡＣ成分のアドレスと、ＤＣ成分の値とを求めて解析テーブルを生成する。次に、画像処理回路２０は、解析テーブルに格納されているＡＣ成分のアドレスを参照し、画像データの左端の列ｃ１に対応するデータを取得してＡＣ成分を復号するとともに、ＤＣ成分の値を復号して出力する。画像処理回路２０の出力は、画像処理回路２０の後段に存在する回路（不図示）によって並べ換え処理が施され、回転後の行データｒ１が得られる。この処理に際して、画像処理回路２０は、各行データを処理する毎に、２列目の列データｃ２のＡＣ成分の先頭アドレスと、２列目のＤＣ成分の値を生成するための１列目のＤＣ成分の値とを用いて、解析テーブルを生成する。その結果、１列目の列データｃ１の復号処理が完了すると、２列目の列データを復号するための解析テーブルが完成する。
【００４５】
１列目の列データの復号が終了すると、画像処理回路２０は、解析テーブルを参照しながら、２列目の列データｃ２を行データｒ２に変換する処理を開始する。このときも、前述の場合と同様に、３列目の列データｃ３を行データｒ３に変換する処理を行うための解析テーブルを各行の処理毎に生成する。したがって、２列目の処理が完了した時点で、３列目の解析テーブルが完成する。
【００４６】
以上のような処理を繰り返すことにより、画像データｇ０を時計方向に９０度回転させた画像データｇ１に変換することができる。
【００４７】
このように、解析テーブルを参照しながら回転処理を実行すると同時に、次の解析テーブルを生成するようにしたので、ソフトウエアによって処理を実行する場合に比較して、処理を高速化することができる。また、例えば、処理をパイプライン化することにより、処理を更に高速化することができる。さらに、画像処理回路２０が復号処理と並行して解析テーブルを生成する処理を実行するようにしたので、システムを管理するＣＰＵの負荷が軽減され、システム全体としての処理速度を向上させることができる。
【００４８】
次に、本発明の第１の実施の形態の詳細な動作について説明する。
【００４９】
図４は、本発明の第１の実施の形態において実行される処理の流れを説明するためのフローチャートである。このフローチャートの処理が開始されると、以下のステップが実行される。
【００５０】
ステップＳ１０：ＣＰＵ１０から画像データの回転処理が指示されると、画像処理回路２０は、ＣＰＵ１０に対して処理対象となる画像データを含む画像ファイルをメモリカード１２から読み出してＳＤＲＡＭ１４に格納するように依頼する。画像データがＳＤＲＡＭ１４に格納されると、画像処理回路２０は、画像データから各種復号テーブルを読み出す。ここで、画像ファイル４０は、図５に示すように、ヘッダ情報４１、テーブル４２、および、圧縮データ４３によって構成されている。ここで、ヘッダ情報４１は、例えば、ファイル名、圧縮方式、画像サイズ、密度単位等の情報を有している。テーブル４２は、例えば、ハフマンテーブル、および、量子化テーブル等によって構成されている。圧縮データ４３は、ＪＰＥＧ方式により圧縮された画像データによって構成されている。画像処理回路２０は、図５に示す画像ファイル４０のテーブル４２から各種テーブルを抽出する。
【００５１】
図６は、本発明の第１の実施の形態において処理の対象となる画像データの一例を示している。図６（Ａ）に示すように、画像データは縦Ｎ画素、横Ｍ画素によって構成されるデータがＹ，Ｃｂ，Ｃｒのそれぞれについて１枚ずつ存在する。画像処理回路２０は、８×８画素によって構成されるＭＣＵが５つ横方向に配列されて構成される「処理ブロック」を１回の処理単位として処理する。なお、処理ブロックは、図６（Ｂ）に示すように、印刷装置において、画像データが回転された後に印刷される際に、印刷ヘッドが１走査で印刷することが可能なバンド幅に対応して設定される。
【００５２】
ステップＳ１１：画像処理回路２０は、ステップＳ１０において抽出した各種復号テーブルをテーブル２４およびテーブル２５ｃにそれぞれ設定する。具体的には、テーブル２４にはハフマンテーブルを格納する。また、テーブル２５ｃにはハフマンテーブルおよび量子化テーブルを格納する。なお、画像情報（縦×横のサイズを示す情報）およびＭＣＵ情報（ＭＣＵのサイズを示す情報）についてもヘッダ情報４１から読み出してレジスタ２３，２５ｂにそれぞれ格納する。
【００５３】
ステップＳ１２：画像処理回路２０は、画像データの解析処理を開始する。すなわち、画像処理回路２０は、画像データをＳＤＲＡＭ１４から順次読み出し、ハフマン復号処理を施すことによりＤＣＴ係数を得る。そして、得られたＤＣＴ係数と、画像情報（画像サイズを示す情報）とを対比することにより、画像データのどの位置に存在する処理ブロックであるかを解析する。そして、画像データの左端に位置する処理ブロック（図６（Ａ）のハッチング施された領域に含まれている処理ブロック）に関する情報（ＡＣ成分のアドレス情報およびＤＣ成分の値等の情報）を取得する。
【００５４】
ステップＳ１３：画像処理回路２０のハフマン処理部２２は、ステップＳ１２における解析結果に基づいて解析テーブルを生成する。図７は、解析テーブルの一例を示している。この図に示すように、解析テーブルは、処理ブロックの行数を示す「Ｎｏ．」、Ｙ，Ｃｂ，ＣｒそれぞれのＤＣ成分を示す「Ｙ」、「Ｃｂ」、「Ｃｒ」、画像ファイル内においてＡＣ成分が格納されている位置を示す相対アドレスとしての「アドレス」、および、アドレスで示される位置から実際にデータが含まれているビット位置を示す「ビット」、画像データがＳＤＲＡＭ１４に格納されている際の先頭の絶対アドレスとしての物理アドレスを示す「Ｓアドレス」、および、終端の絶対アドレスとしての物理アドレスを示す「Ｅアドレス」を有している。なお、ステップＳ１３の処理では、ＳアドレスおよびＥアドレスを除く他の項目が生成される。なお、この図において、「０ｘ」は１６進数表記であることを示している。また、「０ｂ」は２進数表記であることを示している。
【００５５】
ステップＳ１４：画像処理回路２０のハフマン処理部２２は、ステップＳ１３において生成された解析テーブルを、ＳＤＲＡＭ１４の予め定められた領域に格納する。なお、レジスタ２３には、解析テーブルを格納する領域の先頭アドレスが格納されているので、当該レジスタ２３の内容に対応する領域に解析テーブルが格納される。
【００５６】
ステップＳ１５：ＣＰＵ１０は、図７に示す解析テーブルの「アドレス」および「ビット」を参照するとともに、ＳＤＲＡＭ１４に格納されている画像データのアドレスを参照し、「Ｓアドレス」および「Ｅアドレス」を計算する。すなわち、図８に示すように、メモリカード１２に格納されている画像ファイルは、例えば、５１２バイト単位で読み出されてＳＤＲＡＭ１４に格納される。このようにしてＳＤＲＡＭ１４に格納された画像データは、処理ブロック単位で画像処理回路２０に供給されて処理が施される。このとき、各行の読み出しの先頭位置を示すのがＳアドレスで、各行のデータの末尾を示すのがＥアドレスである。したがって、画像処理回路２０は、それぞれの行に対応するＳアドレスを先頭として画像データを読み出して処理を行い、Ｅアドレスに至った場合には画像データがＳＤＲＡＭ１４に存在しないので、ＣＰＵ１０はメモリカード１２から画像データを読み出して、ＳＤＲＡＭ１４に格納する。
【００５７】
ステップＳ１６：ＣＰＵ１０は、ステップＳ１５において生成したＳアドレスおよびＥアドレスを図７に示す解析テーブルの該当する位置に格納する。その結果、図７に示す解析テーブルが完成する。
【００５８】
ステップＳ１７：画像処理回路２０のＪＰＥＧ処理部２５は、ＣＰＵ１０から処理の開始が指示されると、画像データの切り出し処理を開始する。すなわち、画像処理回路２０のＪＰＥＧ処理部２５は、解析テーブルのＳアドレスを参照して、ＳＤＲＡＭ１４に格納されている画像データから処理の対象となる部分（所望の処理ブロック）を抽出し、ハフマン処理部２５ｅ、逆量子化部２５ｆ、および、ＩＤＣＴ部２５ｇに順次供給する。例えば、図３に示すように画像ｇ０を時計方向に９０度回転させる場合、画像ｇ０のハッチングが施されている部分の下から上に復号して並べ換えすれば、画像ｇ１は左から右へ再生されることになる。したがって、このような場合には、図７に示す解析テーブルの第ｎ番目の要素から第１番目の要素に向かって復号処理すればよい。この結果、解析テーブルのＹ，Ｃｂ，Ｃｒの値をそれぞれ参照し、処理ブロックの先頭のＭＣＵのＤＣ成分が計算され、その後に続く４つのＭＣＵについても先頭のＭＣＵのＤＣ成分の値を参照して順次ＤＣ成分が計算される。また、ＡＣ成分についてもそれぞれのＭＣＵ単位で計算がなされる。なお、ＳアドレスがＥアドレスと等しくなった場合には、画像データを新たに読み出す必要があるので、ＣＰＵ１０は、解析テーブルのアドレスおよびビットを参照し、メモリカード１２から画像データを読み出す。
【００５９】
ステップＳ１８：画像処理回路２０のハフマン処理部２５ｅは、ステップＳ１７において切り出し処理の対象となった処理ブロックを参照して、解析テーブルを生成する。具体的には、処理ブロックの末尾に位置するＭＣＵの位置を参照して、アドレスおよびビットを算出し、末尾のＭＣＵのＤＣ成分を参照してＹ，Ｃｂ，Ｃｒを算出する。なお、処理が終了したデータのデータ量からアドレスおよびビットを求めるようにしてもよい。
【００６０】
ステップＳ１９：画像処理回路２０のハフマン処理部２５ｅは、ＳＤＲＡＭＩ／Ｆ２６を介して、ＳＤＲＡＭ１４に格納されている解析テーブルの対応する項目を、ステップＳ１８において生成された項目によって更新（上書き）する。例えば、いまの例では、Ｎｏ．ｎの項目のデータが生成されるので、Ｎｏ．ｎの項目であるＹ、Ｃｂ、Ｃｒ、アドレス、および、ビットが更新される。
【００６１】
ステップＳ２０：画像処理回路２０は、１列分のデータの処理が終了したか否かを判定し、終了していない場合にはステップＳ１７に戻って同様の処理を繰り返し、それ以外の場合にはステップＳ２１に進む。例えば、第１回目の処理では、図３（Ａ）に示す列ｃ１の処理が完了したか否かが判定される。
【００６２】
ステップＳ２１：ＣＰＵ１０は、ステップＳ１８の処理によって生成された解析テーブルのアドレス、ビット、および、ＳＤＲＡＭ１４に格納されている画像データのアドレス値を参照し、Ｎｏ．１〜Ｎｏ．ｎまでのそれぞれのＳアドレスを計算する。具体的には、処理が終了したデータのデータ量に応じてＳアドレスを計算する。
【００６３】
ステップＳ２２：ＣＰＵ１０は、ステップＳ２１において算出されたＳアドレスを解析テーブルの該当する部分に格納する。
【００６４】
ステップＳ２３：画像処理回路２０は、全ての列データに対する処理が終了したか否かを判定し、終了していない場合にはステップＳ１７に戻って同様の処理を繰り返し、それ以外の場合には処理を終了する。
【００６５】
なお、以上の処理では、Ｓアドレスについては、列の処理が完了した後に、一括して更新するようにしたが、解析テーブルを更新する際に併せてＳアドレスを更新するようにしてもよい。具体的には、画像処理回路２０によって処理が終了したデータのデータ量に応じてアドレスおよびビットを更新するとともに、併せてＳアドレスも更新する。そして、画像処理回路２０が画像データを読み込んで処理している最中に、読み出し先がＥアドレスに到達した場合には、画像データが存在しないとして、新たな画像データをメモリカード１２から読み出して格納し、格納先の先頭アドレスをＳアドレスに、また、末尾をＥアドレスに設定する。そして、全ての画像データの処理が完了するまで、前述の場合と同様な処理を繰り返す。なお、画像データを決まった領域に格納することにより、Ｅアドレスは固定とすることができる。
【００６６】
以上のようにして復号処理が施された画像データは、図示せぬ後段の回路によって、ＭＣＵ単位の画素の回転処理、表色系の変換処理（例えば、ＹＣＣ表色系をＹＭＣＫ表色系に変換する処理）、ハーフトーン処理等を行った後、印刷ヘッドを駆動し、記録用紙に対して回転した画像を印刷することができる。
【００６７】
以上に説明したように、本発明の第１の実施の形態によれば、画像処理回路２０が解析テーブルを参照しながら画像切り出し処理を実行するとともに、次の列データ用の解析テーブルを生成するようにしたので、画像の回転処理を高速に実行することができる。
【００６８】
また、第１の実施の形態では、画像処理回路２０が切り出し処理と、解析処理とを自動的に実行するようにしたので、例えば、処理ブロックの処理が完了するたびに、割り込みを発生してＣＰＵ１０に事後の処理を担当させる場合に比較して、割り込み処理に係るオーバヘッドを省略することにより処理を高速化することができる。また、ＣＰＵ１０の負担を軽減することにより、システム全体としての処理速度を向上することができる。なお、必要に応じて、割り込みを発生してＣＰＵ１０に事後の処理を担当させることも可能である。
【００６９】
第２の実施の形態．
【００７０】
次に、本発明の第２の実施の形態について説明する。なお、第２の実施の形態では、画像処理装置の構成は、図１および図２に示す第１の実施の形態と同様であるが、解析テーブルの内容と、バッファリング処理の内容が異なっている。以下では、解析テーブルとバッファリング処理について説明する。
【００７１】
図９は、本発明の第２の実施の形態において実行されるバッファリング処理の流れを説明するためのフローチャートである。このフローチャートの処理が開始されると、以下のステップが実行される。なお、当該処理は、図４に示すステップＳ１０〜Ｓ１６の処理が実行され、各種テーブルがテーブル２４，２５ｃに格納されるとともに解析テーブルが生成されてＳＤＲＡＭ１４に格納された後に実行されるものとする。
【００７２】
ステップＳ３０：ＣＰＵ１０は、各起点ブロック（画像データの左端に位置するＭＣＵ）を先頭として一定量（例えば、４キロバイト）の画像データをメモリカード１２から取得する。
【００７３】
ステップＳ３１：ＣＰＵ１０は、ステップＳ３０において取得された画像データを、ＳＤＲＡＭ１４に確保されているバッファに格納する。その結果、ＳＤＲＡＭ１４には、図１０（Ａ）に示すような形態でデータが格納される。ここで、左端の数字１〜ｎは、画像データの各行に対応している。また、Ｄｉｊは、処理ブロックを示しており、ｉは行を、ｊは列を示している。ここで、左端に存在しているＤ１１〜Ｄｎ１は、画像の左端に位置する処理ブロック（起点ブロック）を示している。なお、図１０に示す各データ（Ｄｉｊ）は、図６に示すＭＣＵ５個分に相当しており、可変長符号化が施されているので、長さがそれぞれ異なっている。
【００７４】
ステップＳ３２：ＣＰＵ１０は、画像処理回路２０に対して画像の切り出し処理を実行するように要求する。その結果、画像処理回路２０は、バッファに格納されている画像データから所望の領域に格納された処理ブロックを切り出し（読み出し）、ＪＰＥＧ処理部２５で復号処理を実行する。なお、このとき、ハフマン処理部２５ｅは、図１１（Ａ）に示す解析テーブルのデータを生成して、ＳＤＲＡＭ１４の対応する領域に格納する。図１１（Ａ）に示す解析テーブルでは、図７に示す解析テーブルと比較して、Ｅアドレスが除外されている。これは、第２の実施の形態では、画像データは連続したメモリ領域に格納されることから、Ｓアドレスのみとされている。画像データ全体の処理が終了すると、ＣＰＵ１０は、全てのＳアドレスを一括して計算し、解析テーブルに格納する。
【００７５】
ステップＳ３３：画像処理回路２０は、バッファの残りの容量を示す残バッファ量Ｒを計算し、レジスタ２３に格納する（図１１（Ｂ）参照）。ここで、残バッファ量Ｒとは、図１０（Ａ）に示すように、ハッチングが施されている部分が現在までに切り出しが終了した処理ブロックであるとした場合に、ハッチングが施されていない各行の領域のうち最も容量が小さいものをいう。この例では、２行目のＤ２１の末尾からバッファの末尾までの容量が最も小さいので、これを残バッファ量Ｒと称する。
【００７６】
ステップＳ３４：画像処理回路２０は、ステップＳ３３で計算した残バッファ量Ｒが、予め定められている下限値よりも小さいか否かを判定し、小さい場合にはステップＳ３５に進み、それ以外の場合にはステップＳ３７の処理に進む。具体的には、図１０（Ｂ）に示すように、残バッファ量Ｒが下限値よりも小さくなった場合にはステップＳ３５に進む。なお、下限値としては、バッファの１行の容量が４キロバイトである場合には、例えば、１キロバイトまたは５１２バイト程度に設定する。
【００７７】
ステップＳ３５：画像処理回路２０は、ＣＰＵ１０に画像データを読み出すように要求する。その結果、ＣＰＵ１０は、図１１（Ａ）に示す解析テーブルの「アドレス」を参照し、次に処理されるべき処理ブロックのアドレスを特定し、メモリカード１２から読み出す。
【００７８】
ステップＳ３６：ＣＰＵ１０は、ステップＳ３５において読み出した画像データを、図１１に示すバッファの左端から順に格納（上書き）する。その結果、図１１（Ｃ）に示すように、バッファの内容が更新されることになる。この例では、図１１（Ｂ）においてＤ１４，Ｄ２４，Ｄ３４，Ｄ４４，・・・，Ｄｎ４は、切り出し処理が終了していないので、図１１（Ｃ）ではこれらが最初に読み出されてバッファの左端に配置され、それに続くデータが格納される。
【００７９】
ステップＳ３７：画像処理回路２０は、画像データのすべてのデータに対する処理が終了したか否かを判定し、終了していない場合はステップＳ３２に戻って同様の処理を繰り返し、それ以外の場合には処理を終了する。
【００８０】
以上に説明したように、本発明の第２の実施の形態によれば、ＳＤＲＡＭ１４にバッファを確保し、当該バッファからデータを切り出すようにしたので、図１１（Ａ）に示すように、Ｅアドレスを省略して、解析テーブルのサイズを縮小することができる。
【００８１】
また、バッファが確保される領域を固定とすることにより、ＣＰＵ１０によるＳＤＲＡＭ１４に対する管理処理に係る負担を軽減することができる。
【００８２】
なお、第２の実施の形態では、バッファのサイズおよび下限値は固定としたが、ＳＤＲＡＭ１４の使用状況に応じてバッファのサイズを変更するとともに、下限値をそれに応じて再設定するようにしてもよい。例えば、バッファサイズは、確保可能な上限値を選択するようにし、下限値は、当該バッファサイズの１／４〜１／８程度に設定すればよい。
【００８３】
第３の実施の形態．
【００８４】
次に、本発明の第３の実施の形態について説明する。本発明の第３の実施の形態は、第１の実施の形態と構成は略同様であるが、バッファに関する処理が異なっている。以下では、バッファに関する処理を中心に説明する。
【００８５】
図１２は、第３の実施の形態のバッファに関する処理の流れを説明するためのフローチャートである。このフローチャートの処理が開始されると、以下のステップが実行される。
【００８６】
ステップＳ４０：ＣＰＵ１０は、各起点ブロック（画像データの左端に位置するＭＣＵ）を先頭として、少なくとも１処理ブロック分のデータを含む一定量（例えば、１キロバイト）の画像データをメモリカード１２から取得する。なお、バッファサイズとしては、処理ブロックにおいて想定される最大のデータ長程度とすればよい。
【００８７】
ステップＳ４１：ＣＰＵ１０は、ステップＳ４０において取得された画像データを、ＳＤＲＡＭ１４に確保されているバッファに格納する。その結果、ＳＤＲＡＭ１４には、図１３（Ａ）に示すような形態でデータが格納される。ここで、左端の数字１〜ｎ、および、Ｄｉｊは、図１０の場合と同様である。
【００８８】
ステップＳ４２：ＣＰＵ１０は、画像処理回路２０に対して画像の切り出し処理を実行するように要求する。その結果、画像処理回路２０は、バッファに格納されている画像データを処理ブロック単位で順番に切り出し（読み出し）、ＪＰＥＧ処理部２５で復号処理を実行する。なお、このとき、ハフマン処理部２５ｅは、図１４に示す解析テーブルの対応する行のデータを生成して、ＳＤＲＡＭ１４に格納する。例えば、Ｄｎ１の処理がなされている場合には、Ｎｏ．「ｎ」の行のデータが生成されて格納される。なお、図１４に示す解析テーブルでは、Ｅアドレスが除外されているが、これは、前述の第２の実施の形態と同様の理由に基づく。画像データ全体の処理が終了すると、ＣＰＵ１０は、全てのＳアドレスを一括して計算して、解析テーブルに格納する。なお、第３の実施の形態では、１処理ブロック単位でバッファが更新されるので、第２の実施の形態のような残バッファ量Ｒについては使用しない。
【００８９】
ステップＳ４３：画像処理回路２０は、ＣＰＵ１０に画像データを読み出すように要求する。その結果、ＣＰＵ１０は、図１４に示す解析テーブルの「アドレス」を参照し、次に処理されるべき処理ブロックのアドレスを特定し、メモリカード１２から読み出す。
【００９０】
ステップＳ４４：ＣＰＵ１０は、ステップＳ４３において読み出した画像データを、図１３に示すバッファの左端から格納する。具体的には、図１３（Ｂ）に示すように、処理ブロックＤ１１，Ｄ２１，Ｄ３１，Ｄ４１，・・・，Ｄｎ１の切り出しが完了すると、図１３（Ｃ）に示すように、次の処理ブロックＤ１２，Ｄ２２，Ｄ３２，Ｄ４２，・・・，Ｄｎ２を先頭とする所定量の画像データがメモリカード１２から読み出されてバッファに上書きされる。
【００９１】
ステップＳ４５：画像処理回路２０は、画像データのすべてのデータに対する処理が終了したか否かを判定し、終了していない場合はステップＳ４２に戻って同様の処理を繰り返し、それ以外の場合には処理を終了する。
【００９２】
以上に説明したように、本発明の第３の実施の形態によれば、ＳＤＲＡＭ１４にバッファを確保し、当該バッファからデータを切り出すようにしたので、第２の実施の形態の場合と同様にＥアドレスを省略して、解析テーブルのサイズを縮小することができる。
【００９３】
また、１処理ブロック分のデータを格納するバッファを確保するようにしたので、ＳＤＲＡＭ１４の容量が小さい場合であっても前述の処理を実現することができる。
【００９４】
第４の実施の形態．
【００９５】
次に、本発明の第４の実施の形態について説明する。本発明の第４の実施の形態は、第１の実施の形態と構成は略同様であるが、バッファに関する処理が異なっている。以下では、バッファに関する処理を中心に説明する。
【００９６】
図１５は、第４の実施の形態のバッファに関する処理の流れを説明するためのフローチャートである。このフローチャートの処理が開始されると、以下のステップが実行される。
【００９７】
ステップＳ５０：ＣＰＵ１０は、各起点ブロック（画像データの左端に位置するＭＣＵ）を先頭として、図１７（Ｂ）に示すバッファ幅（例えば、４キロバイト）に対応する画像データをメモリカード１２から取得する。
【００９８】
ステップＳ５１：ＣＰＵ１０は、ステップＳ５０において取得された画像データを、ＳＤＲＡＭ１４に確保されているバッファに格納する。その結果、ＳＤＲＡＭ１４には、図１６（Ａ）に示すような形態でデータが格納される。ここで、左端の数字１〜ｎ、および、Ｄｉｊは、図１０の場合と同様である。なお、バッファを構成する１〜ｎの領域のそれぞれは、例えば、４キロバイトの容量を有している。
【００９９】
ステップＳ５２：ＣＰＵ１０は、画像処理回路２０に対して画像の切り出し処理を実行するように要求する。その結果、画像処理回路２０は、バッファに格納されている画像データを処理ブロック単位で順番に切り出し（読み出し）、ＪＰＥＧ処理部２５で復号処理を実行する。例えば、図３に示すように画像データを時計方向に９０度回転させる場合には、Ｄｎ１〜Ｄ１１の順に処理ブロックを切り出す。なお、このとき、ハフマン処理部２５ｅは、図１７（Ａ）に示す解析テーブルの対応する行のデータを生成して、ＳＤＲＡＭ１４に格納する。なお、図１７（Ａ）に示す解析テーブルでは、Ｅアドレスが除外され、先頭アドレスが新たに追加されている。ここで、「先頭アドレス」とは、バッファの各行の先頭アドレス（ＳＤＲＡＭ１４の物理アドレス）であり、固定値である。画像データ全体の処理が終了すると、ＣＰＵ１０は、Ｓアドレスを計算して、解析テーブルに格納する。なお、先頭アドレスを格納せずに、解析テーブルの先頭のアドレス値と、オフセット値とから各先頭アドレスを必要に応じて算出するようにしてもよい。
【０１００】
ステップＳ５３：画像処理回路２０は、画像データを読み出している最中に、バッファの末尾に到達したか否かを判定し、到達した場合にはステップＳ５４に進み、それ以外の場合にはステップＳ５５に進む。例えば、図１６（Ｂ）に示すように、Ｄ１４が切り出し処理の対象となった場合、バッファの末尾に到達するので、ステップＳ５４に進む。
【０１０１】
ステップＳ５４：ＣＰＵ１０は、末尾にまで切り出し処理が到達したラインについては、バッファ内の全データを更新（上書き）する。具体的には、図１６（Ｂ）に示すように、Ｄ１４の途中でバッファの末尾に到達した場合には、ＣＰＵ１０は、Ｄ１４の残りのデータと、Ｄ１５以降のデータをメモリカード１２から読み出して、バッファに格納する。なお、処理ブロックの途中でバッファの更新処理が実行された場合（図１６のＤ１４の場合）には、バッファが更新された後（図１６（Ｃ）の状態となった後）に、Ｄ１４の残りのデータ（図１６（Ｃ）のバッファの先頭に格納されているＤ１４のデータ）に対する切り出し処理を実行する。
【０１０２】
ステップＳ５５：画像処理回路２０は、１列分の画像データの処理が終了したか否かを判定し、終了した場合にはステップＳ５６に進み、それ以外の場合にはステップＳ５２に戻って同様の処理を繰り返す。
【０１０３】
ステップＳ５６：ＣＰＵ１０は、ＳＤＲＡＭ１４に格納されている解析テーブルを参照して全てのＳアドレスを計算し、解析テーブルに格納する。
【０１０４】
ステップＳ５７：ＣＰＵ１０は、画像データの全列の処理が終了したか否かを判定し、終了していない場合にはステップＳ５２に戻って同様の処理を繰り返し、それ以外の場合には処理を終了する。
【０１０５】
以上に説明したように、本発明の第４の実施の形態によれば、ＳＤＲＡＭ１４にバッファを確保し、当該バッファの末尾まで到達した場合には新たなデータを読み込むようにし、リングバッファ形式で使用するようにした。その結果、第３の実施の形態のようにバッファに読み込まれた画像データの一部を廃棄して再度読み込む必要がなくなるので、メモリカード１２からＳＤＲＡＭ１４への画像データの転送回数を減らすることができる。すなわち、第２の実施の形態では、例えば、図１０（Ａ）で読み込まれたＤ１４は、図１０（Ｃ）で再度読み込まれているが、本実施の形態では、Ｄ１４は２回に分けて分割して読み込まれるが、同一のデータが２度読み込まれることはない。
【０１０６】
第５の実施の形態．
【０１０７】
次に、本発明の第５の実施の形態について説明する。本発明の第５の実施の形態は、第１の実施の形態と構成は略同様であるが、図１８に示すように、複数の画像データ（図１８では２枚の画像データ）を同時に回転して出力することができるように、テーブルに関する処理が異なっている。以下では、テーブルに関する処理を中心に説明する。
【０１０８】
図１９は、第５の実施の形態の処理の流れを説明するためのフローチャートである。このフローチャートの処理が開始されると、以下のステップが実行される。
【０１０９】
ステップＳ６０：画像処理回路２０は、図１８に示す第１の画像に対応する画像データのテーブル情報をメモリカード１２から読み込み、第１の復号テーブルとして、テーブル２４，２５ｃに設定する。
【０１１０】
ステップＳ６１：画像処理回路２０は、第１の画像に対応する画像データを読み込み、解析することにより、第１の画像の解析テーブルである第１の解析テーブルを生成する。
【０１１１】
ステップＳ６２：画像処理回路２０は、テーブル２４，２５ｃに格納されている第１の復号テーブルをＳＤＲＡＭ１４の所定の領域に退避させる。
【０１１２】
ステップＳ６３：画像処理回路２０は、図１８に示す第２の画像に対応する画像データのテーブル情報をメモリカード１２から読み込み、第２の復号テーブルとして、テーブル２４，２５ｃに設定する。
【０１１３】
ステップＳ６４：画像処理回路２０は、第２の画像に対応する画像データを読み込み、解析することにより、第２の画像の解析テーブルである第２の解析テーブルを生成する。
【０１１４】
ステップＳ６５：画像処理回路２０は、テーブル２４，２５ｃに格納されている第２の復号テーブルをＳＤＲＡＭ１４の所定の領域に退避させる。
【０１１５】
ステップＳ６６：ＣＰＵ１０は、第１の画像を印刷するために、レジスタ２３およびレジスタ２５ｂに対して第１の復号テーブルおよび第１の解析テーブルの先頭アドレスを書き込むとともに、復号処理を実行するように画像処理回路２０に要求する。その結果、画像処理回路２０は、ＳＤＲＡＭ１４に退避されている第１の復号テーブルをテーブル２４，２５ｃに書き戻す。
【０１１６】
ステップＳ６７：画像処理回路２０は、第１の復号テーブルおよび第１の解析テーブルを参照して第１の画像データの所定の列に対する切り出し処理を実行する。このとき、第１の解析テーブルの内容は、前述のように処理の進行に応じて更新される。
【０１１７】
ステップＳ６８：ＣＰＵ１０は、第２の画像を印刷するために、レジスタ２３およびレジスタ２５ｂに対して第２の復号テーブルおよび第２の解析テーブルの先頭アドレスを書き込むとともに、復号処理を実行するように画像処理回路２０に要求する。その結果、画像処理回路２０は、ＳＤＲＡＭ１４に退避されている第２の復号テーブルをテーブル２４，２５ｃに書き戻す。
【０１１８】
ステップＳ６９：画像処理回路２０は、第２の復号テーブルおよび第２の解析テーブルを参照して第２の画像データの所定の列に対する切り出し処理を実行する。このとき、第２の解析テーブルの内容は、前述のように処理の進行に応じて更新される。
【０１１９】
ステップＳ７０：ＣＰＵ１０は、すべての列データに対する処理が完了したか否かを判定し、完了していない場合にはステップＳ６６に戻って同様の処理を繰り返し、それ以外の場合には処理を終了する。
【０１２０】
図２０は、以上の処理における動作の概要を示す図である。この図に示すように、画像処理回路２０は、第１の画像を処理する場合には、第１の解析テーブルを参照し、第２の画像を処理する場合には、第２の解析テーブルを参照して処理を行う。また、テーブル２４，２５ｃは、第１の画像を処理する場合には、第１の復号テーブルが書き戻され、第２の画像を処理する場合には、第２の復号テーブルが書き戻されて処理が実行される。その結果、図１８に示すように、第１および第２の画像データを回転させることができる。
【０１２１】
以上に説明したように、本発明の第５の実施の形態では、列単位で解析テーブルおよび復号テーブルを切り換えて復号処理を行うようにしたので、複数の画像データを同時に回転させることができる。
【０１２２】
また、本発明の第５の実施の形態では、ＣＰＵ１０から使用するテーブル（復号テーブルおよび解析テーブル）を指示し、復号処理を実行するようにしたので、画像処理回路２０は複数の画像を処理していることを意識することなく、処理を実行することができる。
【０１２３】
なお、以上に説明した第５の実施の形態では、復号テーブルをＳＤＲＡＭ１４に退避させるようにしたが、テーブル２４，２５ｃの容量を大きくしてこれらを格納可能とし、退避に係る処理時間を短縮するようにしてもよい。そのような実施の形態によれば、処理を高速化することができる。
【０１２４】
また、以上に説明した第５の実施の形態では、２つの画像を処理対象としたが、例えば、３つ以上の画像を同時に処理可能とすることも可能である。
【０１２５】
また、以上に説明した第５の実施の形態では、バッファリング処理に関しては、詳細には説明していないが、例えば、前述の第１〜第４の実施の形態に示したいずれかのバッファリング処理を実行するようにしてもよい。
【０１２６】
第６の実施の形態．
【０１２７】
つぎに、本発明の第６の実施の形態について説明する。図２１は、本発明の第６の実施の形態に係る印刷装置の構成例を示している。印刷装置としては、例えば、インクジェットプリンタ等のプリンタがあり、ホストコンピュータと接続されて動作するプリンタまたはホストコンピュータと接続することなく画像の印刷が可能ないわゆるスタンドアロンプリンタや、プリンタ、ファックス、コピー、および、スキャナ等の機能を有するいわゆる複合機としてのプリンタがある。なお、図２１に示す実施の形態において、図１と対応する部分には同一の符号を付してその説明を省略する。
【０１２８】
図２１に示す第６の実施の形態では、図１の場合と比較して、プリンタエンジン１５および印刷ヘッド１６が新たに追加され、ハフマン処理部２２が制御部３０に置換され、また、ＪＰＥＧ処理部２５が復号手段としてのＪＰＥＧ処理部３１に置換されている。
【０１２９】
プリンタエンジン１５は、後述するように、ＳＤＲＡＭ１４に格納されているハーフトーン処理が施された画像データを読み出し、印刷ヘッド１６用の駆動信号に変換し、印刷ヘッド１６に供給する。印刷ヘッド１６は、印刷用紙に対向する位置に複数のノズルを有しており、プリンタエンジン１５から供給された駆動信号に応じて当該ノズルから微細なインク粒を吐出し、印刷用紙に所望の画像を印刷する。
【０１３０】
制御部３０は、画像処理回路２０の各部を制御するとともに、内蔵されているハフマン処理部３０ａによって、ＳＤＲＡＭ１４またはメモリカード１２に格納されているＪＰＥＧ画像データに施されているハフマン符号を復号処理する。
【０１３１】
図２２は、図２１に示すＪＰＥＧ処理部３１の詳細な構成例を示している。この図に示すように、ＪＰＥＧ処理部３１は、ＣＰＵＩ／Ｆ３１ａ、レジスタ３１ｂ、テーブル３１ｃ、入力バッファコントロール部３１ｄ、ハフマン処理部３１ｅ、逆量子化部３１ｆ、ＩＤＣＴ部３１ｇ、および、出力バッファコントロール部３１ｈによって構成されている。
【０１３２】
ここで、ＣＰＵＩ／Ｆ３１ａは、ＣＰＵ１０との間で情報を授受する際のインタフェースである。レジスタ３１ｂは、動作モードを示す情報、現在のステータスを示す情報等を保持するための内部メモリである。入力バッファコントロール部３１ｄ、ハフマン処理部３１ｅ、逆量子化部３１ｆ、ＩＤＣＴ部３１ｇ、および、出力バッファコントロール部３１ｈは、レジスタ３１ｂに格納されているデータを参照しており、データに応じた処理をこれらが実行する。したがって、レジスタ３１ｂに所定のデータを書き込むことにより、これらの所望の動作を実行させることができる。
【０１３３】
テーブル３１ｃは、画像データの復号に必要な、ハフマンテーブル、量子化テーブル、画像情報、および、ＭＣＵ情報等を有している。
【０１３４】
入力バッファコントロール部３１ｄは、ＳＤＲＡＭ１４から情報を読み出す際の入力バッファを制御する。更新手段の一部としてのハフマン処理部３１ｅは、入力バッファコントロール部３１ｄを介して入力された画像データに対して、テーブル３１ｃに格納されているハフマンテーブルを参照し、ハフマン復号処理を施す。逆量子化部３１ｆは、ハフマン処理部３１ｅから供給された画像データに対して、テーブル３１ｃに格納されている逆量子化テーブルを参照し、逆量子化処理を施す。ＩＤＣＴ部３１ｇは、逆量子化部３１ｆから供給された画像データに対して、ＩＤＣＴ処理を施す。出力バッファコントロール部３１ｈは、外部に対して画像データを出力するための出力バッファを制御する。なお、ＪＰＥＧ処理部３１は、ＣＰＵＩ／Ｆ３１ａを介してレジスタ３１ｂに書き込まれたデータに応じて各部が動作を行うように構成されている。
【０１３５】
次に、本発明の第６の実施の形態の動作について説明する。なお、第６の実施の形態では、第２の実施の形態と同様のバッファ処理を行い、画像データをメモリカード１２から読み出して処理する。
【０１３６】
図２３は、本発明の第６の実施の形態に係る印刷装置の処理の流れを説明するための図である。なお、この図において、ＪＰＥＧ５０は画像処理回路２０によって実行され、色変換処理５１、ＡＰＦ（Auto Photo Fine）処理５２、リサイズ処理５３、レイアウト処理５４、色変換処理５５、ＭＷ（Micro Weave）処理５６、および、ＩＭＢＣＵ（Image Buffer Control Unit）５７はＣＰＵ１０によって所定のプログラムが実行されることにより実現される処理である。なお、これらの処理を必要に応じてハードウエアによって実現してもよい。
【０１３７】
まず、ＣＰＵ１０は、メモリカード１２からメモリカードＩ／Ｆ１１を介して画像データを所定の単位（例えば、５１２バイト単位）で読み込み、ＳＤＲＡＭコントローラ１３を介してＳＤＲＡＭ１４にＦｉｌｅ  Ｃａｓｈ１４ａとして格納する。ＣＰＵ１０は、Ｆｉｌｅ  Ｃａｓｈ１４ａから画像データを読み出し、画像処理が円滑に実行できるようにデータを適宜並べ換えてＪＰＥＧ１４ｂとしてＳＤＲＡＭ１４に格納する。このようにしてＳＤＲＡＭ１４に格納された画像データは、画像処理回路２０によって読み出され、ＪＰＥＧ処理５０が施されて、ＹＣｂＣｒデータに復号され、ＳＤＲＡＭ１４にＹＣｂＣｒ１４ｃとして格納される。なお、この処理の詳細については後述する。
【０１３８】
復号によって得られたＹＣｂＣｒ１４ｃは、色変換処理５１が施され、ＲＧＢデータに変換されてＲＧＢ１４ｄとしてＳＤＲＡＭ１４に格納される。ここで、色変換処理５１としては、例えば、ＹＣｂＣｒデータにγ（ガンマ）補正処理および逆γ補正処理を施して明るさに対する映像信号の振幅の変化の関係を補正する。色変換処理５１が施されたＲＧＢデータ１４ｄは、ＡＰＦ処理５２が施され、ＲＧＢ１４ｅとしてＳＤＲＡＭ１４に格納される。ここで、ＡＰＦ処理５２としては、例えば、露出時間が長い場合に発生する偽色を除去するためのノイズ除去処理、ホワイトバランスおよび色調の調整のために実行されるトーンカーブ補正処理、人が記憶している色に合わせるための記憶色補正処理、画像の鮮やかさを調整するための彩度補正処理、および、輪郭を強調するためのシャープネス処理等がある。
【０１３９】
ＡＰＦ処理５２が施された画像データとしてのＲＧＢ１４ｅは、印刷用紙のサイズに合わせて画像データをリサイズするためのリサイズ処理５３が施され、ＲＧＢ１４ｆとしてＳＤＲＡＭ１４に格納される。リサイズ処理５３が施されたＲＧＢ１４ｆは、印刷用紙に対するレイアウトを決定するためのレイアウト処理５４（例えば、印刷用紙上における印刷位置の設定処理または複数枚画像を重ねる等の処理）が施され、ＲＧＢ１４ｇとしてＳＤＲＡＭ１４に格納される。レイアウト処理５４が施されたＲＧＢ１４ｇは、ＲＧＢ表色系からプリンタの表色系であるＣＭＹＫ表色系に変換する色変換処理５５が施され、ＣＭＹＫ１４ｈとしてＳＤＲＡＭ１４に格納される。色変換処理５５が施されて得られたＣＭＹＫ１４ｈは、マイクロウィーブ印刷を行うためのＭＷ処理５６が施され、ＭＷＢＵＦ（Micro Weave Buffer）１４ｉに格納される。ＭＷＢＵＦ１４ｉに格納されたＣＭＹＫデータは、ＩＭＢＣＵ５７によって読み出され、ハーフトーン処理等が施され、ＩＭＧＢＵＦ１４ｊに格納される。ＩＭＧＢＵＦ１４ｊによって格納されたデータは、プリンタエンジン１５によって順次読み出され、プリンタの印刷ヘッド用信号に変換された後、印刷ヘッド１６に供給され、印刷用紙に画像が印刷される。
【０１４０】
つぎに、図２２に示すＪＰＥＧ処理５０の詳細について説明する。
【０１４１】
図２４は、メモリカード１２に格納されている所定の画像データが指定されて印刷が指示された場合に実行される処理を説明するフローチャートである。このフローチャートの処理が開始されると、以下のステップが実行される。
【０１４２】
ステップＳ８０：ＣＰＵ１０は、処理対象として指定された画像ファイルから各種復号テーブルを読み出す。ここで、画像ファイル４０は、前述した図５に示すように、ヘッダ情報４１、テーブル４２、および、圧縮データ４３によって構成されている。ここで、ヘッダ情報４１は、例えば、ファイル名、圧縮方式、画像サイズ、密度単位等の情報を有している。テーブル４２は、例えば、ハフマンテーブル、および、量子化テーブル等によって構成されている。圧縮データ４３は、ＪＰＥＧ方式により圧縮された画像データによって構成されている。画像処理回路２０は、図５に示す画像ファイル４０のテーブル４２から各種テーブルを抽出する。
【０１４３】
図６は、本発明の第６の実施の形態において処理の対象となる画像データの一例を示している。図６（Ａ）に示すように、画像データは縦Ｎ画素、横Ｍ画素によって構成されるデータがＹ，Ｃｂ，Ｃｒのそれぞれについて１枚ずつ存在する。画像処理回路２０は、８×８画素によって構成されるＭＣＵが５つ横方向に配列されて構成される「処理ブロック」を１回の処理単位として処理する。なお、処理ブロックは、図６（Ｂ）に示すように、印刷装置において、画像データが回転された後に印刷される際に、印刷ヘッド１６が１走査で印刷することが可能なバンド幅に対応して設定される。
【０１４４】
ステップＳ８１：画像処理回路２０は、ステップＳ８０において抽出した各種復号テーブルをテーブル２４およびテーブル３１ｃにそれぞれ設定する。具体的には、テーブル２４にはハフマンテーブルを格納する。また、テーブル３１ｃにはハフマンテーブルおよび量子化テーブルを格納する。なお、画像情報（縦×横のサイズを示す情報）およびＭＣＵ情報（ＭＣＵのサイズを示す情報）についてもヘッダ情報４１から読み出してレジスタ２３，３１ｂにそれぞれ格納する。
【０１４５】
ステップＳ８２：画像処理回路２０は、画像データの解析処理を開始する。すなわち、画像処理回路２０は、ＣＰＵ１０に画像ファイル４０の読み出しを要求するとともに、要求に応じて読み出されてＳＤＲＡＭ１４に格納された画像データを順次読み出し、ハフマン処理部３０ａによってハフマン復号処理を施すことによりＤＣＴ係数を得る。そして、得られたＤＣＴ係数と、画像情報（画像サイズを示す情報）とを対比することにより、画像データのどの位置に存在する処理ブロックであるかを解析する。そして、画像データの始点（左端）に位置する処理ブロック（図６（Ａ）のハッチング施された領域に含まれている処理ブロック）に関する情報（ＡＣ成分のアドレス情報およびＤＣ成分の値等の情報）を取得する。
【０１４６】
ステップＳ８３：画像処理回路２０の制御部３０は、ステップＳ８２における解析の結果に基づいて解析テーブルを構成するアドレスおよびビットを算出する。ここで、図２５は、解析テーブルの一例を示している。この図に示すように、解析テーブルは、図２５（Ａ）に示すように、処理ブロックの行数を示す「Ｎｏ．」、Ｙ，Ｃｂ，ＣｒそれぞれのＤＣ成分を示す「Ｙ」、「Ｃｂ」、「Ｃｒ」、画像ファイル内においてＡＣ成分が格納されている位置を示す相対アドレスとしての「アドレス」、および、アドレスで示される位置から実際にデータが含まれているビット位置を示す「ビット」、画像データがＳＤＲＡＭ１４に設けられたバッファ（詳細は図２６を参照して後述する）に格納されている際の先頭の絶対アドレスとしての物理アドレスを示す「Ｓアドレス」、および、図２５（Ｂ）に示すように、当該バッファの最小の残量を示す「残バッファ量」を有している。なお、「Ｙ」、「Ｃｂ」、「Ｃｒ」はそれぞれ２バイトのデータであり、「アドレス」および「ビット」は双方で４バイトのデータ（ビットは３ビットのデータ）であり、「Ｓアドレス」は４バイトのデータであり、「残バッファ量」は、２バイトのデータである。なお、「Ｎｏ．」は説明の便宜のために記載しているもので、この部分は解析テーブルには実際には含まれていない。
【０１４７】
ステップＳ８３では、図２５に示す解析テーブルのうち、「アドレス」および「ビット」が計算される。すなわち、始点に位置する処理ブロックのファイル内における相対的な位置を示すアドレスと、アドレスで示される位置から実際にデータが含まれているビット位置を求める。なお、Ｙ、Ｃｂ、Ｃｒについては、始点の処理ブロックでは、前の処理ブロックが存在しないことから、すべて“０”となる。
【０１４８】
ステップＳ８４：画像処理回路２０の制御部３０は、ステップＳ８３において生成された解析テーブルを、ＳＤＲＡＭ１４の対応する行に格納する。その結果、図２５に示す解析テーブルにＹ、Ｃｂ、Ｃｒ、アドレス、および、ビットが１行分格納される。
【０１４９】
ステップＳ８５：ＣＰＵ１０は、画像データのすべての行に対する処理が完了したか否かを判定し、終了した場合にはステップＳ８６に進み、それ以外の場合にはステップＳ８２に戻って同様の処理を繰り返す。
【０１５０】
ステップＳ８６：ＣＰＵ１０は、ＳＤＲＡＭ１４に設けられた画像データを格納するためのバッファにおいて、画像データの読み出し位置を示すＳアドレスを算出する。図２６は、ＳＤＲＡＭ１４に設けられているバッファと、当該バッファに格納されるデータとの関係の概要を示す図である。この図に示すように、符号化前の画像データｇ０を８×８の画素からなるＭＣＵに分割して符号化すると、画像ｇ０の始点（左端）および終点（右端）に存在するＭＣＵ群が符号化されて生成されるビットストリーム群が得られる。これらのビットストリームは、その一部が行毎にバッファに格納される。なお、この図において、ＤｉｊはＭＣＵが５つ集まって構成されるデータが符号化されて得られた処理ブロックを示しており、ｉは行を示し、ｊは列を示す。
【０１５１】
図２７は、バッファの更に具体的な例を示す図である。この図に示すように、バッファは、ＳＤＲＡＭ１４の所定のアドレス（この例ではアドレス“０ｘＡ００００”）を先頭とする領域に設けられており、各行に対応するビットストリームが所定量（例えば、８キロバイト）ずつ格納されている。このように各行に対応するビットストリームは、処理ブロック単位で読み出されて画像処理回路２０に供給されて処理される。このとき、画像処理回路２０に供給される（読み出される）ビットストリームの先頭位置を示すのがＳアドレスである。一方、残バッファ量は、後述するように、１〜ｎのうち、残りが最小であるバッファの残量をいう。
【０１５２】
例えば、図２７に示すバッファの場合、第１行目については先頭アドレス“０ｘＡ００００”から格納されているので、初期状態ではＳアドレスは“０ｘＡ００００”となる。また、第２行目以降は、“０ｘＡ００００”にバッファのサイズである“０ｘ２０００”を加算した値となる。これらのデータは、解析テーブルの所定の領域に書き込まれる。なお、書き込む位置については、レジスタ２３に、解析テーブルの先頭アドレスが格納されているので、当該先頭アドレスと、目的とする行によって定まるオフセット値とを参照して決定する。
【０１５３】
ステップＳ８７：ＣＰＵ１０は、残バッファ量を図２５に示す解析テーブルに格納する。この例では、バッファのサイズは８キロバイトであり、画像データの読み出しはまだ行われていないので、残量として８キロバイトに対応する１６進数である“０ｘ２０００”が格納される。
【０１５４】
以上の処理により、図２５に示す解析テーブルが完成する。この図の例では、Ｙ、Ｃｂ、Ｃｒにはすべて“０”が格納され、アドレスおよびビットには画像データの始点に存在する処理ブロックの位置を示す情報が格納されている。また、Ｓアドレスとしては、図２７に示すバッファの先頭アドレスが格納されている。さらに、残バッファ量としては、バッファのサイズである８キロバイトに対応する“０ｘ２０００”が初期値として格納されている。
【０１５５】
ステップＳ８８：ＣＰＵ１０は、図２５に示す解析テーブルのアドレスおよびビットを参照し、メモリカード１２に格納されている画像ファイルの各始点（図２６参照）から８キロバイト分の画像データを抽出し、図２７に示すバッファに格納する。その結果、図２７に示すように、アドレス“０ｘＡ００００”を先頭とする８キロバイトには処理ブロックＤ１１〜Ｄ１４のデータが格納され、アドレス“０ｘＡ２０００”を先頭とする８キロバイトには処理ブロックＤ２１〜Ｄ２４のデータが格納され、以下同様にして、各アドレスに処理ブロックデータが格納される。
【０１５６】
以上の処理により、解析テーブルが生成されてＳＤＲＡＭ１４に格納されるとともに、バッファに画像データが格納される。
【０１５７】
つぎに、以上のようにして生成された解析テーブルを参照して画像データを復号する処理について説明する。図２８は、画像データを復号する際に実行される処理を説明するためのフローチャートである。図２８に示すフローチャートの処理が実行されると、以下のステップが実行される。
【０１５８】
ステップＳ９０：画像処理回路２０のＪＰＥＧ処理部３１は、ＣＰＵ１０から処理の開始が指示されると、画像データの切り出し処理を開始する。すなわち、画像処理回路２０のＪＰＥＧ処理部３１は、解析テーブルのＳアドレスを参照して、ＳＤＲＡＭ１４のバッファに格納されている画像データから処理の対象となる処理ブロックをアドレス単位で読み出し、さらに、「ビット」を参照して所定のビットを抽出し、ハフマン処理部３１ｅ、逆量子化部３１ｆ、および、ＩＤＣＴ部３１ｇに順次供給する。例えば、図３に示すように画像ｇ０を時計方向に９０度回転させる場合、画像ｇ０のハッチングが施されている部分の下から上に復号して並べ換えすれば、画像ｇ１は左から右へ再生されることになる。したがって、このような場合には、図２５に示す解析テーブルの第ｎ番目の要素から第１番目の要素に向かう方向でバッファに格納されているデータを復号処理すればよい。この結果、解析テーブルのＹ，Ｃｂ，Ｃｒの値をそれぞれ参照し、処理ブロックの先頭のＭＣＵのＤＣ成分が計算され、その後に続く４つのＭＣＵについても先頭のＭＣＵのＤＣ成分の値を参照して順次ＤＣ成分が計算される。また、ＡＣ成分についてもそれぞれのＭＣＵ単位で計算がなされる。
【０１５９】
ステップＳ９１：画像処理回路２０のＪＰＥＧ処理部３１は、ステップＳ９０において切り出し処理の対象となった処理ブロックを参照して、ＤＣ成分であるＹ、Ｃｂ、Ｃｒを求める。すなわち、ＪＰＥＧ処理部３１は、処理ブロックの末尾に位置するＭＣＵのＤＣ成分を参照してＹ、Ｃｂ、Ｃｒを算出する。この結果得られたＹ、Ｃｂ、Ｃｒは、つぎの処理ブロックのＤＣ成分を生成するための情報となる。
【０１６０】
ステップＳ９２：画像処理回路２０のＪＰＥＧ処理部３１は、解析テーブル用のアドレスおよびビットを計算する。具体的には、ＪＰＥＧ処理部３１は、処理が完了した画像データのデータ量に応じた値をアドレスに加算するとともに、ビットの値を調整する。その結果、アドレスおよびビットは、画像ファイルにおけるつぎの処理ブロックの位置を示すことになる。
【０１６１】
ステップＳ９３：画像処理回路２０のＪＰＥＧ処理部３１は、Ｓアドレスを求める。具体的には、ステップＳ９２の場合と同様に、処理が完了した画像データのデータ量に応じた値をＳアドレスに加算する。
【０１６２】
ステップＳ９４：画像処理回路２０のＪＰＥＧ処理部３１は、ＳＤＲＡＭＩ／Ｆ２６を介して、ＳＤＲＡＭ１４に格納されている解析テーブルの対応する行を、ステップＳ９１〜ステップＳ９３において算出された情報によって更新（上書き）する。
【０１６３】
ステップＳ９５：画像処理回路２０は、１列分のデータの処理が終了したか否かを判定し、終了していない場合にはステップＳ９０に戻って同様の処理を繰り返し、それ以外の場合にはステップＳ９６に進む。例えば、第１回目の処理では、図３（Ａ）に示す列ｃ１の処理が完了したか否かが判定される。
【０１６４】
図２９は、画像データの１列目の処理が終了した場合における解析テーブルの一例を示している。この例では、１列目の処理ブロックに対する処理が完了しているので、ＤＣ値であるＹ、Ｃｂ、Ｃｒに対してそれぞれＤＣ値が格納されている。また、アドレスおよびビットには、２列目の処理ブロックの先頭アドレスと、先頭ビットを示す情報が格納されている。また、Ｓアドレスとしては、図１０（Ａ）に示す２列目の処理ブロック（Ｄ１２〜Ｄｎ２）の先頭アドレスがそれぞれ格納されている。また、残バッファ量としては、図１０（Ａ）に示すＲに対応する値が格納されている。
【０１６５】
ステップＳ９６：ＣＰＵ１０は、残バッファ量Ｒを算出する。すなわち、ＣＰＵ１０は、例えば、図１０（Ａ）に示すように、１列分の処理ブロックの処理が完了した場合、最も残量が少ない行のバッファ残量を求め、これを残バッファ量Ｒとする。図１０（Ａ）の例では、第２行目のバッファの残量が最も少ないので、これが残バッファ量Ｒとなる。
【０１６６】
ステップＳ９７：ＣＰＵ１０は、残バッファ量Ｒが所定の下限値Ｌ（図１０および図２７参照）よりも小さいか否かを判定し、小さい場合にはステップＳ９８に進み、それ以外の場合にはステップＳ１０１に進む。なお、下限値Ｌとは、データ化けを起こさずに安全に画像データを読み出すことができる下限を決める値である。例えば、バッファのサイズが８キロバイトである場合には、下限値Ｌを１キロバイト程度に設定することにより、これを超えて読み出しがなされ、画像データ以外のデータが誤って読み込まれることを防止することができる。なお、下限値はバッファサイズに応じて適宜設定する。
【０１６７】
ステップＳ９８：ＣＰＵ１０は、バッファを更新する処理を実行する。具体的には、ＣＰＵ１０は、解析テーブルのアドレスおよびビットを参照し、つぎの処理の対象となるビットストリームを８キロバイトだけ各行からそれぞれ取得し、図２７に示すバッファに格納する。その結果、図１０（Ｂ）に示すように、残バッファ量Ｒが下限値Ｌを下回った場合には、図１０（Ｃ）に示すように、新たな処理ブロックのデータがメモリカード１２から読み出されてＳＤＲＡＭ１４のバッファに格納される。
【０１６８】
ステップＳ９９：ＣＰＵ１０は、Ｓアドレスを求める。具体的には、図２７に示すバッファの先頭アドレスが求められる。
【０１６９】
ステップＳ１００：ＣＰＵ１０は、ステップＳ９９で求めたＳアドレスを格納するとともに、残バッファ量を解析テーブルに格納する。具体的には、図２７に示す先頭アドレスと、残バッファ量として９キロバイトに対応する“０ｘ２０００”が格納される。
【０１７０】
ステップＳ１０１：画像処理回路２０は、全ての列データに対する処理が終了したか否かを判定し、終了していない場合にはステップＳ９０に戻って同様の処理を繰り返し、それ以外の場合には処理を終了する。
【０１７１】
以上のようにして復号処理が施された画像データは、図２３に示す後段の処理によって、色変換処理５１等が施され、プリンタエンジン５８を介して印刷ヘッド１６に供給され、印刷用紙に画像が印刷される。
【０１７２】
以上のような処理を繰り返すことにより、画像データを回転して復号することができる。
【０１７３】
なお、以上に示した第６の実施の形態では、バッファに関する処理としては、第２の実施の形態と同様の処理を行うようにしたが、例えば、第１の実施の形態または第３〜第５の実施の形態と同様の処理を行うようにしてもよい。
【０１７４】
なお、以上の各実施の形態は、一例であって、これ以外にも種々の変形実施態様が存在する。例えば、以上の各実施の形態では、画像データを時計方向に９０度回転させる場合を例に挙げて説明したが、例えば、反時計方向に９０度回転させたり、時計方向または反時計方向に１８０度または２７０度回転させたりすることも可能であることはいうまでもない。回転させる方向および角度に応じて起点ブロックおよび切り出す順序を変更すればよい。
【０１７５】
また、以上の各実施の形態では、図６（Ａ）に示すように、５つのＭＣＵが行方向に並んだ処理ブロックを例に挙げて説明を行ったが、本発明はこのような場合に限定されるものではなく、例えば、処理ブロックが１〜４つまたは６つ以上のＭＣＵによって構成されるようにしてもよい。
【０１７６】
また、以上の実施の形態では、画像データを解析する際に（例えば、ステップＳ１２の処理で）、メモリカード１２に格納されている画像データをＳＤＲＡＭ１４に一旦読み込んでからハフマン処理部２２で解析するようにしたが、メモリカード１２から直接読み込んで解析することも可能である。本発明の各実施の形態では、画像データをＳＤＲＡＭ１４に一旦格納してから解析を行うようにしたが、これは、メモリカード１２からの読み込み速度が低速であるので、ＳＤＲＡＭ１４にまとめて読み込んで一括して処理した方が処理速度が向上すること、および、ＳＤＲＡＭ１２を使用することで、一旦読み込んだデータを再利用することが可能である（キャッシュとしての作用を期待できる）ことに基づいている。
【０１７７】
また、図１および図２に示す回路は一例であって、本発明がこのような場合にのみ限定されるものではないことはいうまでもない。
【０１７８】
また、図１および図２に示す回路のうち、メモリカード１２を除く部分については、単一の半導体装置として構成することも可能であるし、また、複数の半導体装置として構成することも可能である。
【０１７９】
また、以上に示す第１〜第５の実施の形態に示す画像処理装置を、例えば、インクジェットプリンタ等の印刷装置に利用することができる。その場合、復号処理がなされた画像データを構成するＭＣＵに含まれている画素を並べ換える処理部と、並べ換えが終了した画素を印刷する印刷部とを有するようにすればよい。適用可能な印刷装置としては、例えば、ホストコンピュータを接続することなく画像の印刷が可能ないわゆるスタンドアロンプリンタや、プリンタ、ファックス、コピー、スキャナ等の機能を有するいわゆる複合機がある。このような印刷装置に本発明を適用することにより、画像を高速に印刷することが可能になる。
【０１８０】
また、印刷装置のみならず、例えば、ディジタルカメラ等のディジタル機器に対しても本発明を適用することができる。例えば、ディジタルカメラに本発明を適用した場合には、画像を少ないメモリで効率良く回転させて出力することができる。
【図面の簡単な説明】
【０１８１】
【図１】第１の実施の形態の画像処理装置の構成例を示す図である。
【図２】図１に示すＪＰＥＧ処理部の構成例を示す図である。
【図３】第１の実施の形態の動作の概要を説明する図である。
【図４】第１の実施の形態の動作を説明するためのフローチャートである。
【図５】圧縮画像ファイルを示す図である。
【図６】画像データを構成するＭＣＵの詳細を説明する図である。
【図７】第１の実施の形態において使用される解析テーブルの一例である。
【図８】メモリカードからＳＤＲＡＭに圧縮画像データが読み出される様子である。
【図９】第２の実施の形態の画像処理装置において実行される処理の一例である。
【図１０】第２の実施の形態のバッファの動作を説明する図である。
【図１１】第２の実施の形態で使用される解析テーブルの一例である。
【図１２】第３の実施の形態の画像処理装置において実行される処理の一例である。
【図１３】第３の実施の形態のバッファの動作を説明する図である。
【図１４】第３の実施の形態で使用される解析テーブルの一例である。
【図１５】第４の実施の形態の画像処理装置において実行される処理の一例である。
【図１６】第４の実施の形態のバッファの動作を説明する図である。
【図１７】第４の実施の形態で使用される解析テーブルの一例である。
【図１８】第５の実施の形態の動作の概要を説明するための図である。
【図１９】第５の実施の形態の画像処理装置において実行される処理の一例である。
【図２０】第５の実施の形態におけるテーブルの選択状態を示す図である。
【図２１】第６の実施の形態の構成例を示す図である。
【図２２】図２１に示すＪＰＥＧ処理部の詳細な構成例である。
【図２３】第６の実施の形態の処理の流れを説明する図である。
【図２４】第６の実施の形態において実行される処理の一例である。
【図２５】第６の実施の形態の解析テーブルの一例である。
【図２６】第６の実施の形態のバッファの概略を示す図である。
【図２７】第６の実施の形態のバッファの詳細を示す図である。
【図２８】第６の実施の形態において実行される処理の一例である。
【図２９】１列目の処理ブロックの処理が完了した後の解析テーブルの一例である。
【図３０】ＪＰＥＧ符号化および復号化を示す図である。
【符号の説明】
【０１８２】
１４  ＳＤＲＡＭ（バッファ）、２２  ハフマン処理部（生成手段）、２５，３１  ＪＰＥＧ処理部（復号手段）、２５ｅ，３１ｅ  ハフマン処理部（更新手段の一部）、２６  ＳＤＲＡＭＩ／Ｆ（抽出手段、更新手段の一部）
【図１】
2006304243.tif 000003
【図２】
2006304243.tif 000004
【図３】
2006304243.tif 000005
【図４】
2006304243.tif 000006
【図５】
2006304243.tif 000007
【図６】
2006304243.tif 000008
【図７】
2006304243.tif 000009
【図８】
2006304243.tif 000010
【図９】
2006304243.tif 000011
【図１０】
2006304243.tif 000012
【図１１】
2006304243.tif 000013
【図１２】
2006304243.tif 000014
【図１３】
2006304243.tif 000015
【図１４】
2006304243.tif 000016
【図１５】
2006304243.tif 000017
【図１６】
2006304243.tif 000018
【図１７】
2006304243.tif 000019
【図１８】
2006304243.tif 000020
【図１９】
2006304243.tif 000021
【図２０】
2006304243.tif 000022
【図２１】
2006304243.tif 000023
【図２２】
2006304243.tif 000024
【図２３】
2006304243.tif 000025
【図２４】
2006304243.tif 000026
【図２５】
2006304243.tif 000027
【図２６】
2006304243.tif 000028
【図２７】
2006304243.tif 000029
【図２８】
2006304243.tif 000030
【図２９】
2006304243.tif 000031
【図３０】
2006304243.tif 000032