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