JP2004221998A - 画像処理装置 - Google Patents
画像処理装置 Download PDFInfo
- Publication number
- JP2004221998A JP2004221998A JP2003007664A JP2003007664A JP2004221998A JP 2004221998 A JP2004221998 A JP 2004221998A JP 2003007664 A JP2003007664 A JP 2003007664A JP 2003007664 A JP2003007664 A JP 2003007664A JP 2004221998 A JP2004221998 A JP 2004221998A
- Authority
- JP
- Japan
- Prior art keywords
- data
- compression
- memory
- image
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
- H04N19/15—Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
Abstract
【課題】符号化及び復号時に使用するQテーブルを格納するためのメモリ容量の増大を防止して、最適な量に符号化された画像データをメモリに格納して復号できるという効果がある。
【解決手段】画像データをJPEG圧縮する際、その符号化されたデータ量を求め、そのデータ量がメモリの容量を越えているか否かを判定し(S104)、メモリの容量を越えていると判定されると、その圧縮率を高く設定して(S106)画像データを圧縮し、またデータ量がメモリの容量を越えたと判定された回数を計数する(S105)。そして、そのデータの復号時、その計数値を求め(S109)、その計数値に応じてQテーブルを設定し(S110)メモリに記憶されているデータを復号する(S111)。
【選択図】 図36
【解決手段】画像データをJPEG圧縮する際、その符号化されたデータ量を求め、そのデータ量がメモリの容量を越えているか否かを判定し(S104)、メモリの容量を越えていると判定されると、その圧縮率を高く設定して(S106)画像データを圧縮し、またデータ量がメモリの容量を越えたと判定された回数を計数する(S105)。そして、そのデータの復号時、その計数値を求め(S109)、その計数値に応じてQテーブルを設定し(S110)メモリに記憶されているデータを復号する(S111)。
【選択図】 図36
Description
【0001】
【発明の属する技術分野】
本発明は、画像データを符号化する際に、その符号化データのデータ量が所定量に収まるように符号化し、その符号化した画像データを復号する技術に関するものである。
【0002】
【従来の技術】
近年、スキャナやプリンタ等を備え、スキャナから入力した画像データを処理してプリンタにより印刷する画像処理システムでは、スキャナから読み込んだ画像をローカルエリアネットワーク(LAN)やインターネット上に流したり、LANやインターネットから受信した画像をプリンタにより印刷することができる。また、スキャナから読んだ画像をFAXに送信したり、通信回線からのデータをモデムにより受信してプリンタにより印刷するといった、ネットワークを使用した様々な画像データの受け渡しが必要となっている。
【0003】
そのため、このような画像処理システム内では、PDLやスキャナからの入力画像データ、プリンタ出力用の画像データ、FAX用の画像データ、画像データベースサーバに蓄積するためのデータなど様々な画像フォーマットに変換を行い、それぞれのデータを入出力するためのデータの受け渡しが発生する。このような画像処理システムの処理パフォーマンスを考えた時、画像データの受け渡しを頻繁に行なう状況において、大量のデータをやり取りすることは大きなマイナス要因となる。特に、スキャナから入力される画像データはカラーを表現するための色数、階調を表わすためのビット数、また、高画質化に伴う解像度のアップなどにより非常に大きなデータ量となってきている。
【0004】
そのため、スキャナから入力された画像データは、画像処理システムで取り扱う際に、まずデータの圧縮を行ってデータ量を小さくし、一旦、メモリに格納してからシステムで処理を行なうといった取り扱い方法が一般的である。このようなデータ圧縮には様々なデータ圧縮方法があり、その中でも、スキャナ画像データの特徴に合わせたデータ圧縮技術が標準化されたものとしてJPEG処理がある。このJPEG処理は、階調画像に対して最適な圧縮方法として一般的に使用されている。
【0005】
【発明が解決しようとする課題】
このような手法で圧縮された画像データを格納するメモリの容量は、圧縮された画像データが格納されることを前提として予め決定される。しかし、JPEGによる圧縮符号化処理は、元の画像データの内容によってその圧縮率が変化するため、必ずしも予想している圧縮率で圧縮符号化されるとは限らない。つまり、予想した圧縮率よりも小さい圧縮率で圧縮符号化された画像データの場合には、その圧縮された画像データのデータ量がメモリ容量を越えてしまい、そのメモリに全てのデータが格納できないことなる。そのような場合は、予想圧縮率を上げて、再度圧縮処理をし直し、その圧縮後の画像データ量がメモリに収まる圧縮率となるまで何度も原稿をセットし直してスキャンを行なう必要があり、このような操作は使用者の手を煩わせることとなっていた。
【0006】
そのため、入力されたデータを予想圧縮率の異なる複数の圧縮経路で圧縮符号化処理を行ない、圧縮率の低い方で処理を行なった符号化データをメインメモリに、圧縮率の高い方で処理を行なった符号化データをテンポラリーメモリに格納し、メインメモリの容量を越えたデータが入力される場合には、それをクリアし、テンポラリメモリに格納されている圧縮率の高い処理で符号化されたデータを入力するという処理をリアルタイムで行なう方法がある。
【0007】
しかし、このような方法によってメインメモリに納まるように圧縮を行なうためには、複数のQテーブルを用意しなくてはならない。これによってQテーブルを格納しておくメモリの増大を招くことになる。また復号を行なう際も、符号化を行なった時と同じQテーブルを使用する必要があるため、復号処理を行なう部分でも複数のQテーブルが必要となり、これによるQテーブルを格納しておくメモリの増大を招くことになる。
【0008】
本発明は上記従来例に鑑みてなされたもので、符号化及び復号時に使用するQテーブルを格納するためのメモリ容量の増大を防止して、最適な量に符号化された画像データをメモリに格納して復号することを目的とする。
【0009】
【課題を解決するための手段】
上記目的を達成するために本発明の画像処理装置は以下のような構成を備える。即ち、
画像データを入力して符号化する画像処理装置であって、
画像データを圧縮する圧縮手段と、
前記圧縮手段により圧縮された画像データのデータ量を求めるデータ量計算手段と、
前記データ量計算手段により計算された前記データ量がメモリの容量を越えているか否かを判定する判定手段と、
前記判定手段による判定結果に応じて前記圧縮手段による圧縮率を高く設定して前記圧縮手段により前記画像データを圧縮して前記メモリに記憶するように制御する制御手段と、
前記判定手段により前記データ量が前記メモリの容量を越えたと判定された回数を計数する計数手段と、
前記計数手段による計数値に応じて前記メモリに記憶されている前記データの復号を行う復号手段と、を有することを特徴とする。
【0010】
【発明の実施の形態】
以下、添付図面を参照して本発明の好適な実施の形態を詳細に説明する。
【0011】
[実施の形態1]
図1A及び図1Bは、本発明の実施の形態に係る画像処理システムの全体構成を示すブロック図である。
【0012】
図において、制御ユニット2000は、画像入力デバイスであるスキャナ2070や画像出力デバイスであるプリンタ2095と接続され、一方では、LAN2011や公衆回線(WAN)2051と接続することで、画像情報やデバイス情報の入出力、及びPDLデータからイメージデータへの展開を行っている。CPU2001は、このシステム全体を制御するプロセッサである。本実施の形態では2つのCPUを用いた例を示す。これら2つのCPUは、共通のCPUバス2126に接続され、更に、システムバスブリッジ2007に接続されている。このシステムバスブリッジ2007はバススイッチであり、このバスブリッジ2007にはCPUバス2126、RAMコントローラ2124、ROMコントローラ2125、I/Oバス1(2127)、サブバススイッチ2128、I/Oバス2(2129)、画像リングインターフェース1(2147)、画像リングインターフェース2(2148)等が接続されている。サブバススイッチ2128は第2のバススイッチであり、画像DMA1(2130)、画像DMA2(2132)、フォント伸長部3134、ソート回路(2135)、ビットマップトレース部(2136)が接続され、これらDMAから出力されるメモリアクセス要求を調停し、システムバスブリッジ2007への接続を行う。
【0013】
RAM2002は、CPU2001が動作する際に、プログラムや各種データを一時的に保存するシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。このRAM2002へのアクセスはRAMコントローラ2124により制御される、本実施の形態では、ダイレクトRDRAMを採用している。ROM2003はブートROMであり、このシステムのブートプログラムが格納されている。このROM2003からの読み出しはROMコントローラ2125により制御される。
【0014】
画像DMA1(2130)は画像圧縮部3131に接続され、レジスタアクセスリング2137を介して設定された情報に基づき、画像圧縮部2131を制御して、RAM2002に格納されている非圧縮データの読み出し、データ圧縮及び圧縮後データの書き戻しを行う、尚、本実施の形態では、JPEGを圧縮アルゴリズムに採用した例で説明する。画像DMA2(2132)は画像伸長部(2133)に接続され、レジスタアクセスリング2137を介して設定された情報に基づいて画像伸長部2133を制御し、RAM2002に格納されている圧縮データの読み出し、伸長及び伸長後データの書き戻しを行う、本実施の形態では、JPEGを伸長アルゴリズムに採用した例で説明する。
【0015】
フォント伸長部2134は、LANインターフェース2010等を介して外部より転送されるPDLデータに含まれるフォントコードに基づき、ROM2003或いはRAM2002に格納された圧縮フォントデータを伸長している。本実施の形態では、FBEアルゴリズムを採用している。ソート回路2135は、PDLデータを展開する段階で生成されるディスプレイリストのオブジェクトの順番を並び替える回路である。ビットマップトレース回路2136は、ビットマップデータよりエッジ情報を抽出する回路である。I/Oバス1(2127)は、内部I/Oバスの一種であり、標準バスであるUSBバスのコントローラ、USBインターフェース2138、汎用シリアルポート2139、インタラプトコントローラ2140、GPIOインターフェース2141が接続される。I/Oバス1には、バスアービタ(図示せず)が含まれる。
【0016】
操作部I/F2006は、操作部(UI)2012とインターフェース部とを含み、操作部2012に表示する画像データを操作部2012に出力する。また、操作部2012から本実施の形態に係るシステムの使用者が入力した情報を、CPU2001に伝える役割をする。I/Oバス2(2129)は内部I/Oバスの一種であり、汎用バスインターフェース1及び2(2142)と、LANコントローラ2010が接続される。このI/Oバス2にはバスアービタ(図示せず)が含まれる。汎用バスインターフェース2142は、2つの同一のバスインターフェースを有し、標準I/Oバスをサポートするバスブリッジである。本実施の形態では、PCIバス2143を採用した例を示している。
【0017】
外部記憶装置2004は、システムソフトウェアや画像データ等を格納している。本実施の形態では、この外部記憶装置2004はハードディスクドライブとし、ディスクコントローラ2144を介して一方のPCIバス2143に接続されている。LANコントローラ2010は、MAC回路2145、PHY/PMD回路2146を介してLAN2011に接続されており、このLAN2011を介して情報の入出力を行う。モデム2050は公衆回線2051に接続されて情報の入出力を行う。
【0018】
画像リングインターフェース1(2147)及び画像リングインターフェース2(2148)は、システムバスブリッジ2007と画像データを高速で転送する画像リング2008とを接続し、タイル化後に圧縮されたデータをRAM2002とタイル画像処理部2149との間で転送するDMAコントローラである。画像リング2008は、一対の単方向接続経路の組み合わせにより構成される(画像リング1及び画像リング2)。この画像リング2008は、画像処理部2149で、画像リングインターフェース3(2101)及び画像リングインターフェース4(2102)を介して、タイル伸長部2103、コマンド処理部2104、ステータス処理部2105、タイル圧縮部2106に接続されている。本実施の形態では、タイル伸長部2103を2組、タイル圧縮部2106を3組それぞれ実装する例を示した。
【0019】
タイル伸長部2103は、これら画像リングインターフェースへの接続に加えてタイルバス2107に接続され、画像リング2008より入力された圧縮後の画像データを伸長してタイルバス2107へ転送している。本実施の形態では、多値データの伸長にはJPEG、2値データの伸長にはパックビッツを伸長アルゴリズムを採用している。タイル圧縮部2106は、画像リングインターフェースへの接続に加え、タイルバス2107に接続され、タイルバス2107から入力された圧縮前の画像データを圧縮して画像リング2008へ転送する。本実施の形態では、多値データの圧縮にはJPEG、2値データの圧縮にはパックビッツを圧縮アルゴリズムを採用している。
【0020】
コマンド処理部2104は、画像リングインターフェースへの接続に加え、レジスタ設定バス2109に接続され、画像リング2008を介して入力したCPU2001より発行されたレジスタ設定要求を、レジスタ設定バス2109に接続される該当ブロックへ書き込む。また、CPU2001より発行されたレジスタ読み出し要求に基づき、レジスタ設定バスを介して該当レジスタより情報を読み出して画像リングインターフェース4(2102)に転送する。ステータス処理部2105は各画像処理部の情報を監視し、CPU2001に対してインタラプトを発行するためのインタラプトバケットを生成し、画像リングインターフェース4(2102)に出力する。
【0021】
タイルバス2107には上記ブロックに加え、以下の機能ブロックが接続される。即ち、レンダリング部インターフェース2110、画像入力インターフェース2112、画像出力インターフェース2113、多値化部2119、2値化部2118、色空間変換部2117、画像回転部2030、解像度変換部(2116)等である。レンダリング部インターフェース2110は、後述するレンダリング部2060により生成されたビットマップイメージを入力するインターフェースである。レンダリング部2060とレンダリング部インターフェース2110は、一般的なビデオ信号2111にて接続される。このレンダリング部インターフェース2110は、タイルバス2107に加え、メモリバス2108、レジスタ設定バス2109への接続を有し、入力されたラスタ画像をレジスタ設定バスを介して設定された所定の方法によりタイル画像への構造変換をすると同時にクロックの同期化を行い、タイルバス2107に対して出力する。画像入力インターフェースは2112は、後述するスキャナ用画像処理部2114により補正画像処理されたラスタイメージデータを入力し、レジスタ設定バスを介して設定された、所定の方法によりタイル画像への構造変換とクロックの同期化を行い、タイルバス2107に対して出力する。画像出力インターフェース2113は、タイルバス2107からのタイル画像データを入力し、ラスタ画像への構造変換及びクロックレートの変更を行い、ラスタ画像をプリンタ用画像処理部2115へ出力する。また画像回転部2030は画像データの回転を行い、解像度変換部2116は画像の解像度を変更し、色空間変換部2117は、カラー及びグレースケール画像の色空間の変換を行う。2値化部2118は、多値(カラー、グレースケール)画像を2値化する。また多値化部2119は2値画像を多値データへ変換する。
【0022】
外部バスインターフェース部2120は、画像リングインターフェース1,2,3,4、コマンド処理部2104、レジスタ設定バス2109を介し、CPU2001により発行された、書き込み、読み出し要求を外部バス3(2121)に変換出力するバスブリッジである。外部バス3(2121)は本実施の形態では、プリンタ用画像処理部2115及びスキャナ用画像処理部2114に接続されている。
【0023】
メモリ制御部2122はメモリバス2108に接続され、各画像処理部の要求に従い、予め設定されたアドレス分割により、画像メモリ1及び画像メモリ2(2123)に対して、画像データの書き込み、読み出し、更には必要に応じてリフレッシュ等の動作を行う。本実施の形態では、画像メモリにSDRAMを用いた例を示した。スキャナ用画像処理部2114では、画像入力デバイスであるスキャナ2070により読取られた画像データを補正処理する。プリンタ用画像処理部2115は、プリンタ出力のための補正処理を行い、その結果をプリンタ2095に出力する。レンダリング部2060はPDLコードもしくは中間ディスプレイリストをビットマップイメージに展開する。
【0024】
本実施の形態に係る制御ユニット2000は、画像データを、図2に示すデータパケットのようにパケット化された形式で転送するものとする。
【0025】
本実施の形態では、図4に示すように画像データを32画素×32画素からなるタイル形式の画像データ3002に分割して取り扱う例を示す。このタイル単位の画像情報に、必要なヘッダ情報3001及び画像付加情報等3003を付加してデータパケットとする。画像情報部分には、スキャナ2070から入力された場合にはRGBデータ、そのRGBデータに圧縮処理を行なった場合には、圧縮後の符号化データが入れられる。(図5)
以下、図2のヘッダ情報3001に含まれる情報について説明する。
【0026】
パケットのタイプはヘッダ情報3001のPcktType3004で識別される。このPcktType3004にはリピートフラグが含まれており、データパケットの画像データが1つ前に送信したデータパケットのの画像データと同一の場合、このリピートフラグをセットする。ChipID3005は、パケットを送信するターゲットとなるチップのIDを示す。DataType3006はデータのタイプを示す。PageID3007はページを示しており、JobIDは、ソフトウェアで管理するためのジョブID3008を格納する。
【0027】
タイル番号はY方向のタイル座標3009とX方向のタイル座標3010の組み合わせで、Yn,Xnで表される。データパケットは画像データが圧縮されている場合と非圧縮の場合がある。本実施の形態では、圧縮アルゴリズムとして、多値カラー(多値グレースケールを含む)の場合はJPEGを、2値の場合はパックビッツを採用した例を示した。画像データが圧縮されている場合と非圧縮の場合との区別は、CompressFlag(圧縮フラグ)3017で示される。この圧縮フラグ3017は、画像データ用の1ビットと、Zデータ(Z data)用の1ビットのそれぞれが用意されており、圧縮処理が行なわれたデータがパケットデータとして入っている場合に「1」を立てることとする。
【0028】
Process Instruction(処理命令)3011は左詰で処理順に設定され、各処理ユニットは、処理後、その処理命令を左方向に8ビットシフトする。処理命令3011は、ユニットID(UnitID)3024とモード(Mode)3025との組が8組格納されている。このユニットID3024は、各処理ユニットを指定し、モード3025は各処理ユニットでの動作モードを指定する。これにより、1つのパケットは8つのユニットで連続して処理される。パケットバイト長(Packet Byte Length)3012は、パケットのトータルバイト数を示す。画像データバイト長(Image Data Byte Lengh)3015は、画像データのバイト数、Zデータバイト長(Z Data Byte Length)3016は、画像付加情報のバイト数を表し、画像データオフセット(Image Data Offset)3013、Zデータオフセット(Z data Offset)3014は、それぞれのデータのパケットの先頭からのオフセットを表している。
【0029】
メモリリセットフラグ(RAM Rst)3022は、RAM2002をクリアする信号を伝えるためのメモリリセットフラグである。通常の処理時には「0」で固定とされていて、タイル圧縮部2106によって圧縮されたデータ量がRAM2002の容量を越える時に、このフラグに「1」がセットされる。このメモリリセットフラグ3022に「1」が付加されたパケットデータを受けて、RAMコントローラ2124では、それを基にしてRAM2002及び、この後に説明するパケットテーブルのデータのリセットを行なう。
【0030】
各パケットデータは、パケットテーブル(Packet Table)6001によって管理される。このパケットテーブル6001の構成要素は、図3に示す通りで、それぞれテーブルの値に「0」を5ビット付加すると、パケットの先頭アドレス6002、パケットのバイト長6005となる。
【0031】
パケットアドレスポインタ(27ビット)+「5b00000」=パケット先頭アドレス
パケット長(11ビット)+「5b00000」=パケットのバイト長
パケットテーブル6001とチェインテーブル(ChainTable)6010は分割されないものとする。
【0032】
パケットテーブル6001は常に走査方向に並んでおり、Yn/Xn=000/000,000/001,000/002,…という順で並んでいる。このパケットテーブル6001のエントリは、一意に一つのタイルを示す。また、Yn/Xmaxの次のエントリは、(Yn+1/X0)となる。
【0033】
今、パケットが一つ前のパケットと全く同じデータである場合は、そのパケットはメモリ上には書かず、パケットテーブルのエントリに1つめのエントリと同じパケットアドレスポインタ、パケット長を格納する。1つのパケットデータを2つのテーブルエントリが指すような形になる。この場合、2つめのテーブルエントリのリピートフラグ(Repeat Flag)6003がセットされる。
【0034】
パケットがチェインDMAにより複数に分断された場合は、分割フラグ(Divide Flag)6004をセットし、そのパケットの先頭部分が入っているチェインブロックのチェインテーブル番号6006をセットする。チェインテーブル6010のエントリは、チェインブロックアドレス(Chain Block Address)6011と、チェインブロック長(Chain Block Length)6012とを含んでおり、テーブルの最後のエントリには、アドレス、データ長が共に「0」で格納されている。
【0035】
このようにパケットフォーマットによって処理を行なう特徴として、以下の点が挙げられる。
【0036】
図6に示すように、1つの画像データ50をタイル化し、ヘッダを付加した各パケットデータを2つの処理ブロック51,52で処理し、その処理結果をアービタ53を通してメモリ54に格納する画像処理システムを想定する。この時、アービタ53は、先に入力されたパケットフォーマットデータの転送が終わるまでは、次に入力されたデータを格納しておき、先に入力されたデータが全てメモリ54に出力され次第、それまで格納されていた次のデータの出力を行うと言った順番で、パケットフォーマットのブロック毎にメモリ54へ入力していく。
【0037】
このような図6のシステムにおいて、各パケットデータは、処理ブロック51,処理ブロック52のうち、前のタイルの処理が終わったところに入力されて処理が行なわれる。また本実施の形態では、処理ブロック51の処理時間の方が処理ブロック52の処理時間よりも早いものとする。
【0038】
図6から図15は、本実施の形態に係る画像処理システムにより、図4に示すような画像データをパケット化して処理を行なった時の例を示す図である。
【0039】
図6では、まず最初に処理ブロック51に座標X=0,Y=0のパケットデータが、また処理ブロック52に座標X=0,Y=1のパケットデータが入力される。
【0040】
次に図7では、処理ブロック51の座標X=0,Y=0のパケットデータの処理が終了し、アービタ53を通ってメモリ54の00番地に、その処理済みのデータ格納され、新たに次のデータである、座標X=0,Y=2のパケットデータが処理ブロック51に入力される。この時、処理ブロック52では、座標X=0,Y=1のパケットデータの処理が行なわれている。
【0041】
次に図8では、処理ブロック51の座標X=0,Y=2のパケットデータの処理が終了し、アービタ53を通ってメモリ54の01番地に格納され、新たに次のデータである座標X=0,Y=3のパケットデータが処理ブロック51に入力される。この時、処理ブロック52では、座標X=0,Y=1のパケットデータの処理が行なわれている。
【0042】
次に図9では、処理ブロック52の座標X=0,Y=1のパケットデータの処理が終了し、アービタ53を通ってメモリ54の02番地に格納され、新たに次のデータである座標X=1,Y=0のパケットデータが処理ブロック52に入力される。この時、処理ブロック51では、座標X=0,Y=3のパケットデータの処理が行なわれている。
【0043】
次に図10では、処理ブロック51の座標X=0,Y=3のパケットデータの処理が終了し、アービタ53を通ってメモリ54の03番地に格納され、新たに次のデータである座標X=1,Y=1のパケットデータが処理ブロック51に入力される。この時、処理ブロック52では、座標X=1,Y=0のパケットデータの処理が行なわれている。
【0044】
図11では、処理ブロック51の座標X=1,Y=1のパケットデータの処理が終了し、アービタ53を通ってメモリ54の04番地に格納され、新たに次のデータである座標X=1,Y=2のパケットデータが処理ブロック51に入力される。この時、処理ブロック52では、座標X=1,Y=0のパケットデータの処理が行なわれている。
【0045】
図12では、処理ブロック52の座標X=1,Y=0のパケットデータの処理が終了し、アービタ53を通ってメモリの05番地に格納され、新たに次のデータである座標X=1,Y=3のパケットデータが処理ブロック52に入力される。この時、処理ブロック51では、座標X=1,Y=2のパケットデータの処理が行なわれている。
【0046】
図13は、処理ブロック51の座標X=1,Y=2のパケットデータの処理が終了し、アービタ53を通ってメモリ54の06地に格納され、新たに次のデータである座標X=2,Y=0パケットデータが処理ブロック51に入力される。この時、処理ブロック52では、座標X=1,Y=3のパケットデータの処理が行なわれている。
【0047】
図14では、処理ブロック51の座標X=2,Y=0のパケットデータの処理が終了し、アービタ53を通ってメモリ54の07番地に格納され、新たに次のデータである座標X=2,Y=1のパケットデータが処理ブロック51に入力される。この時、処理ブロック52では、座標X=1,Y=3のパケットデータの処理が行なわれている。
【0048】
図15では、処理ブロック52の座標X=1,Y=3のパケットデータの処理が終了し、アービタ53を通ってメモリ54の08番地に格納され、新たに次のデータである座標X=2,Y=2のパケットデータが処理ブロック52に入力される。この時、処理ブロック51では、座標X=1,Y=1のパケットデータの処理が行なわれている。
【0049】
以上のようにして、メモリ54に処理データを格納すると、出力されるタイルの順番は、元のパケットの順番とは異なる順でメモリ54に格納される。
【0050】
このようなシステムにおいて、先に説明を行なったパケットフォーマットでない場合、画像データは位置情報を持たないので、処理後のデータを元のデータの並びに復元することはできない。しかしながら、パケットフォーマットの場合、各タイルの位置情報(X,Y座標データ)がヘッダ部分に付加されており、また、パケットテーブルフォーマットによって、各タイルのメモリ54の格納アドレスが管理されているため、順不同にメモリ54に入力されているパケットデータであっても、元の並び順でメモリ54から読み出して出力することができる。
【0051】
先に説明を行なったような大規模なシステムにおいて、画像データを処理する場合、容量の大きなデータを各処理ブロック間で受け渡しを行なうと、処理に時間が掛かってしまう。そのため、一般的に画像データは、圧縮符号化処理を行なった状態で受け渡しを行ない、実際に出力するにあたって、その圧縮符号化されたデータを復号化して出力している。
【0052】
FAXやPC、画像データベースなどからネットワークを通してシステム内に送られてくる画像データは、既に圧縮符号化されているものが送られてくるため、そのまま各処理ブロック内の受け渡しに使用することができるが、スキャナから入力された画像データは、圧縮符号化処理を行なった後に、メモリにその情報を格納し、その後の処理に使用する事となる。
【0053】
その時のデータの流れを図1A,1Bに従って説明すると以下のような流れとなる。
【0054】
本実施の形態では、スキャンした画像に対して圧縮符号化を行ってメモリに格納した後、そのメモリからデータを読み出して復号処理を行なった後にプリンタによって出力を行う場合を例にして説明する。
【0055】
スキャナ2070から入力された画像データは、スキャナ用画像処理部2114によって、スキャンされた画像データに補正処理が行なわれる。その後、この補正された画像データは、画像入力インターフェース2112、タイルバス2107を通ってタイル圧縮部2106へ入力される。本実施の形態では、タイル圧縮部1(2106)はJPEGによって圧縮符号化処理を行っている。このタイル圧縮部1(2106)により圧縮符号化されたデータは、画像リングインターフェース4(2102)及び画像リングインターフェース2(2148)、システムバスブリッジ2007、RAMコントローラ2124を経由してRAM2002に格納される。こうして圧縮されてRAM2002に格納されたデータは、その後システムバスブリッジ2007を経由して、プリンタ部、FAX送信、LANのデータベースなど、それぞれ目的の処理ブロックに送られる。
【0056】
その後、RAM2002に格納された画像データは、RAMコントローラ2124によって再び読み出されて、システムバスブリッジ2007を経由し、LANコントローラ2010を通してLANに出力されたり、或いは汎用バスインターフェース2142を通して、ハードディスクなどの外部記憶装置2004に蓄積される。
【0057】
本実施の形態では、RAM2002のデータをプリンタ2095によって印刷する場合で説明する。
【0058】
この場合、RAM2002のデータは、RAMコントローラ2124によって読み出され、システムバスブリッジ2007、画像リングインターフェース1(2147)及び画像リングインターフェース3(2101)を通ってタイル伸長部1(2103)に入力される。タイル伸長部1(2103)では、先にタイル圧縮部2106おいてJPEGによって圧縮された符号化データの復号を行ない、パケットフォーマットのデータとして、タイルバス2107を通り、画像出力インターフェース2113によって、パケット形式のタイルデータからプリンタ出力用のラスタデータに変換される。その後、プリンタ用画像処理部2115によって画像処理が施された後、プリンタ2095によって印刷される。
【0059】
ここでRAM2002としては、画像データを格納するために十分な容量のメモリを使用する必要があるが、実際にはコストとの兼ね合いで、それほど大きなメモリを使用できない。そこで実際は、ある程度圧縮符号化が行なわれたデータを蓄積することを前提として、それにあった容量のメモリを用意しておくことになる。
【0060】
以上のような構成において、JPEGによって圧縮する場合、できるだけ高画質のデータを後の処理ブロックにおいて取り扱うためには、できるだけ低圧縮率で圧縮符号化処理を行なう必要がある。つまり、RAM2002に格納可能なデータ容量で、なおかつ低圧縮率の圧縮符号化処理を行うのが望ましい。
【0061】
まずここで、JPEGによる圧縮方法の仕組みを簡単に説明する。
【0062】
図16は、カラー静止画符号化の国際標準方式として、JPEG(Joint Photographic Experts Group)にて提案されている符号化方式のブロック構成図である。
【0063】
図において、入力端子501より入力されたイメージ画素データは、ブロック化回路502において8×8画素のブロック状に切り出され、離散コサイン変換(DCT)回路503にてコサイン変換された後、その変換係数が量子化回路504に供給される。この量子化回路504では、量子化テーブル(Qテーブル)505より供給される量子化ステップ情報に従って変換係数の線形量子化を行ない、その量子化した値がハフマン符号化ブロック517に出力される。
【0064】
このハフマン符号化ブロック517では、以下の処理が行われる。
【0065】
量子化された変換係数の内、DC係数は予測符号化回路(DPCM)506において前ブロックのDC成分との差分(予測誤差)が取られ、それが一次元ハフマン符号化回路507に供給される。
【0066】
図17は、予測符号化回路(DPCM)506の詳細構成を示すブロック図である。
【0067】
同図において、量子化回路504にて量子化されたDC係数は、遅延回路601及び減算器602に印加される。この遅延回路601は、離散コサイン変換回路503が1ブロック、即ち、8×8画素分の演算に必要な時間だけ遅延させる回路であり、遅延回路601からは、前ブロックのDC係数が減算器602に供給される。よって、減算器602の出力としては、前ブロックとのDC係数の差分(予測誤差)が出力されることになる。(この予測符号化では、予測値として前ブロック値を用いているため、予測器は前述のごとく遅延回路にて構成される)。図16に示す一次元ハフマン符号化回路507は、予測符号化回路506より供給された予測誤差信号を、DCハフマンコードテーブル508に従って可変長符号化し、多重化回路515にDCハフマンコードを供給する。
【0068】
一方、量子化回路504にて量子化されたAC係数(DC係数以外の係数)は、スキャン変換回路509にて、低次の係数より順にジグザグスキャンされて有意係数検出回路510に供給される。このジグザグスキャンでは、図18に示すような順番(0から63の順)に、2次元DTCの結果がスキャンされ、1次元の連続データに変換される。
【0069】
有意係数検出回路510は、量子化されたAC係数が「0」かどうかを判定し、「0」の場合は、ラン長カウンタ511にカウントアップ信号を供給し、カウンタの値を+1する。しかしAC係数が「0」以外であればリセット信号をラン長カウンタ511に供給してカウンタ511の値を「0」にリセットすると共に、グループ化回路512にて、図19に示すように、係数をグループ番号SSSSと、付加ビットとに分割する。そして、グループ番号SSSSを2次元ハフマン符号化回路513に供給し、付加ビットを多重化回路515に供給する。
【0070】
尚、図19において、EOBは、1ブロック(8×8画素)の符号化を終えたという区切り符号であり、R16は、「0」のランが16以上の場合に使用する符号である。ラン長カウンタ511は「0」のラン長をカウントする回路で、「0」以外の有意係数間の「0」の数NNNNを2次元ハフマン符号化回路513に供給する。この2次元ハフマン符号化回路513は、供給された「0」のラン長NNNNと有意係数のグループ番号SSSSとをACハフマンコードテーブル514に従って可変長符号化し、多重化回路515にACハフマンコードを供給する。
【0071】
多重化回路515は、1ブロック(8×8の入力画素)分のDCハフマンコード、ACハフマンコード及び付加ビットを入力してそれらを多重化し、結果的に出力端子516より圧縮した画像データとして出力する。従って、出力端子516より出力される圧縮データをメモリに記憶し、読出し時に、逆操作によって伸長することにより、メモリ容量の削減が可能となる。
【0072】
尚、このようなJPEGによって符号化されたデータの復号は、この符号化処理の全く逆の流れによって行われる。
【0073】
図20は、この復号処理の流れを説明するブロック図である。
【0074】
図に示すように、入力端子901より入力されたイメージ画素データは、ハフマン復号部902によって、ハフマン符号化されたデータを復号する。逆量子化部903は、符号化用に作成したQテーブルを基にした復号用のQテーブル904を使用して逆量子化を行う。マッピング部905は、DCT係数のジグザグスキャンによって1次元の連続データに変換されたDCT係数を2次元にマッピングし直す。そして逆DCT部906で8×8のエリアごとに逆離散コサイン変換を掛けることにより復号し、出力端子907から、その復号したデータを出力する。
【0075】
上記圧縮符号化データ処理を行ない、容量の限られたメモリに画像データを格納するために、一般的には下記のような処理を行なっている。本実施の形態では、RAM2002のメモリ容量が、元の画像データの1/16の場合で説明する。
【0076】
最初、タイル圧縮1(2106)のJPEG処理において、予想圧縮率が1/8となるようなQテーブルを使用して圧縮する。これでは、RAM2002のメモリ容量よりも、圧縮符号化処理後の符号化データ量の方が多くなる。しかし、JPEG処理では、画像データによって予想圧縮率より高圧縮率で圧縮されることがあるので、この圧縮処理で符号化データが元データの1/16以下まで圧縮されていれば、そのままRAM2002に格納されることとなる。
【0077】
ここで、例えば圧縮符号化後のデータがRAM2002のメモリ容量を越えてしまった場合、次は予想圧縮率が1/16のQテーブルを使用して圧縮を行なう。この圧縮符号化処理によって、圧縮符号化後のデータがRAM2002の容量以下まで圧縮された場合、そのデータをRAM2002に格納する。しかし、画像データによっては予想圧縮率に満たない圧縮率となってしまう場合があるので、このような時には、RAM2002に用意されているメモリ容量では格納しきれないことになる。従って、このような場合は、予想圧縮率が1/32のQテーブルを使用して圧縮を行なう。このような圧縮符号化処理によって、圧縮符号化後のデータがRAM2002のメモリ容量以下まで圧縮された場合、そのデータをRAM2002に格納する。
【0078】
以上のように、RAM2002のメモリ容量に収まるような圧縮符号化処理が行なわれるまで、次々と圧縮率の高いQテーブルに切り替えて圧縮処理を行なうことにより、RAM2002に格納できるデータ容量となり、かつ低圧縮率の圧縮符号化処理を行なうことができる。
【0079】
しかし、このような方法によって複数回圧縮を行なうためには、幾つかの問題が発生する。第1点は、複数のQテーブルを用意しなくてはならないことである。これによってQテーブルを格納しておくメモリの増大を招く事となる。また、復号を行なう際も、符号化を行なった時と同じQテーブルを使用する必要があるため、タイル伸長部2103などの復号化処理を行なう部分でも、複数のQテーブルが必要となり、これによるQテーブルを格納しておくメモリの増大を招く事となる。
【0080】
第2点目は、予想圧縮率を変更して圧縮処理を行なう際に、スキャナ2070による原稿画像の再スキャンが必要となることである。スキャン動作を繰り返し行なうため、ジョブの処理にかかる時間の増大を招く事となる。また、1枚ずつスキャンを行なう場合は、スキャンのし直しも可能であるが、オートシートフィーダなどにより、連続してスキャンを行ない、次々と原稿を変えてスキャンを行なっている場合には、リアルタイムで処理を進めていかなくてはならないため、スキャンのし直しと言う動作はできない。このようなスキャンのし直しを行なおうとする場合には、もう一度原稿をセットし直す事となり、使用者の手を煩わせることになる。
【0081】
以上のような問題を解決するために、以下のような処理方法がある。
【0082】
本実施の形態では、画像データは前述したタイル画像(パケット)フォーマットのデータとして入出力が行なわれるものとする。具体的には、図4のように画像データを32×32(画素)を1単位としたタイルに分割し、X座標、Y座標を定め、ヘッダ部分にその座標データを入れておく。画像データ部分には、1タイル分、つまり1024画素分の画像データが入れられることとなる。又この画像データ部分には、スキャナ2070から入力された場合にはRGBデータが、そのRGBデータに圧縮処理を行なった場合には、圧縮後の符号化データが入れられる。(図5)
また、タイル圧縮部では、複数の符号化回路と復号化回路を使用し、RAM2002のメモリ容量に収まるようにJPEGの圧縮をリアルタイムで行ない出力をする。また、複数のQテーブルを持つ代わりにビットシフト(右方向のビットシフトを意味する)することにより、Qテーブル格納用のメモリ容量の削減も実現できる。
【0083】
次に、JPEG圧縮処理において、量子化データをビットシフト(以下特に断わらない限りは右方向のビットシフトである)器によって、ビットシフトさせる効果に関して説明する。
【0084】
図21は、ビットシフト器を伴ったデータ圧縮システムの構成を示す図で、図16と共通する部分は同じ記号を使用して詳細な説明は省く。
【0085】
この説明に使用するQテーブル505は、予想圧縮率が1/8となるQテーブルである。また、ビットシフト器1001では、CPU2001によりビットシフトを行わない設定に、ビットシフト器1002ではCPU2001により、1ビットシフト(1/2演算)を行う設定にしておく。このような設定により、ある画像データの量子化を行なった結果、図22の左側に示すような量子化結果になった場合、ビットシフト器1001では、ビットシフトを行なわない設定になっているので、量子化結果をそのままハフマン符号化による圧縮符号化を行ない、図22の右側に示したように106ビットの圧縮データとなる。
【0086】
またビットシフト器1002では、1ビットシフトを行うように設定されているので、ビットシフト器1002から出力される量子化結果は、図23の左側に示すような値となる。図23に示すように、量子化データで「1」及び「−1」であった部分は、ビットシフトすることによって「0」となる。そのため、量子化データをジグザグスキャンし、その並びを符号化する際に「0」が連続する部分が多くなる。その結果。このデータをハフマン符号化による圧縮符号化を行なうと、図23の右側に示したように63ビットの圧縮データとなる。
【0087】
この方法によると、ビットシフトを行なう前に比べて、圧縮後のデータは正確に1/2にはならないが、標準的な画像を処理した場合、ほぼ1/2のデータ量にまで圧縮できる。
【0088】
図24は、本実施の形態に係るタイル圧縮部1(2106)の内部で使用する前記問題点を解決するためのJPEG圧縮を実現するためのJPEG圧縮部の構成を示すブロック図である。
【0089】
図において、メモリ1312は、図1AにおけるRAM2002に相当し、画像リングインターフェース4(2102)及び、画像リングインターフェース2(2148)、システムバスブリッジ2007、RAMコントローラ2124は、この図においては、省略している。
【0090】
図24において、入力端子1301は、タイルバスインターフェース2107からの画像データを入力するインターフェース部分である。この入力端子1301より入力された画素データは、ブロック化回路1302において8×8画素のブロック状に切り出され、離散コサイン変換(DCT)回路1303にてコサイン変換された後、その変換係数が量子化回路1304に供給される。この量子化回路1304では、量子化テーブル(Qテーブル)1305より供給される量子化ステップ情報に従って変換係数の線形量子化を行なう。こうして量子化回路1304より出力された量子化データは、ビットシフト器1306及びビットシフト器1307へ入力される。ここでは、8×8の量子化データを、ビットシフトにより1/2や、1/4,1/8にする機能を持っている。尚、ここで何ビットシフトを行なうかといった情報は、CPU2001(図1A)によって制御されるものとする。また、ビットシフト器1306のビットシフト数は、ビットシフト器1307のビットシフト数よりも1ビット分少ない値とする。ビットシフト器1306及びビットシフト器1307から出力された量子化データはそれぞれ、ハフマン符号化部1308、ハフマン符号化部1309へ入力され、さきに詳細に説明を行なった符号化方法に従って圧縮符号化処理が行なわれる。
【0091】
ハフマン符号化部1308によって符号化されたデータはアービタ1311に入力されメモリ1312に格納される。また、ハフマン符号化部1309から出力された符号化データは、メモリ1310へ入力される。このメモリ1310のデータの入出力は、CPU2001によって制御されるものとする。メモリ1310から出力されたデータは、アービタ1311を通ってメモリ1312に格納されるとともに、ハフマン復号化部1313によって、元の量子化テーブルに復号される。こうして復号されたデータは、ビットシフト器1314によって1ビットシフト(1/2)される。ビットシフト器1314によって1ビットシフトされた量子化結果は、ハフマン符号化部1315によって再び符号化されメモリ1310へと入力される。
【0092】
以上の構成からなるタイル圧縮部1(2106)によって、メモリ1312に蓄積可能な最も小さな圧縮率による圧縮処理をリアルタイムで行なうための方法を以下に説明する。
【0093】
図25から図32は、図24の構成に基づくメモリ1312に蓄積可能な最も小さな圧縮率による圧縮処理をリアルタイムで行なうための方法を説明する図である。本実施の形態の前提として、Qテーブル1305は、予想圧縮率が1/8のものを使用するものとする。また、メモリ1312は、元の画像データの1/16の容量まで蓄積できるメモリ容量を持っているものとする。尚、これら図中の実線で表わされている部分は、データが流れている経路を表わし、点線で表わされている部分は、その図の状態の時にはデータが流れていない経路を示している。また、これら図面において図24と共通する部分は同じ記号で示し、その説明を省略する。
【0094】
まず処理開始時には、図25のように、ビットシフト器1306は、0ビットシフト(スルー)の設定を行なう。また、ビットシフト器1307は、1ビットシフト(1/2)の設定を行なう。以上のような設定を行ない、入力画像データの圧縮符号化処理を行なうと、ハフマン符号化部1308からは、予想圧縮率1/8によって圧縮された画像データが出力され、メモリ1312に蓄積される。また、ハフマン符号化1309からは、予想圧縮率1/16によって圧縮された画像データが出力され、メモリ1310に蓄積される。ここではメモリ1310からデータの出力は行なわない。
【0095】
このような設定で処理を行なった時、圧縮率が足らずに図26のように、メモリ1312の容量が一杯になってしまった場合は、メモリ1312にリセットが掛かり、それまでメモリ1312に蓄積された全データをクリアする。メモリ1312がクリアされた後、図27のように、ビットシフト器1306は、1ビットシフト(1/2)に設定される。また、ビットシフト器1307は、2ビットシフト(1/4)に設定される。そして、メモリ1310から、今まで蓄積されていた予想圧縮率1/16によって圧縮符号化された画像データの先頭から、リセットが掛けられる前までのデータが出力され、アービタ1311を通してメモリ1312に蓄積される。メモリ1310から出力されたデータが蓄積されていたメモリ1310のエリアはリセットされ、次のデータが入力された時の蓄積部分として使用される。
【0096】
また、ハフマン符号化部1308からは、リセットが掛けられた後に、入力端子1301から入力され、量子化され、ビットシフト器1306により1ビットシフトが行なわれたデータが、ハフマン符号化され、予想圧縮率1/16によって圧縮された画像データとして出力されてメモリ1312に蓄積される。このメモリ1312には、メモリ1310から入力される予想圧縮率1/16によって圧縮された先頭からのデータと、ハフマン符号化部1308から入力される予想圧縮率1/16によって圧縮された途中データの両方が混ざった形で入力されるが、前述したように、パケットフォーマットの形で、位置情報はパケットテーブルによって管理されているため、後にメモリ1312からデータの出力を行なう時には、スキャナ2070から入力を行なった順番で、データの出力を行なえるようになっている。またこの時、ハフマン符号化部1309からは、予想圧縮率1/32によって圧縮された画像データが出力され、メモリ1310の空いているエリアに蓄積される。そしてメモリ1310から出力されたデータは、メモリ1312に入力されると同時に、ハフマン復号化部1313により復号処理が行なわれ量子化データに戻される。その量子化データは、次のビットシフト器1314によって1ビットシフト(1/2)される。その後、ハフマン符号化部1315によって再び符号化され、予想圧縮率1/32によって圧縮された符号化データとしてメモリ1310に蓄積される。
【0097】
つまり、メモリ1310には、ハフマン符号化部1315から入力される予想圧縮率1/32によって圧縮された先頭からのデータと、ハフマン符号化部1309から入力される予想圧縮率1/32によって圧縮された途中データの両方が混ざった形で入力されるが、先に説明を行なったように、パケットフォーマットの形で位置情報はパケットテーブルによって管理されているため、後にメモリ1312からデータの出力を行なう時には、スキャナ2070から入力を行なった順番でデータを出力することができる。
【0098】
そして図28に示すように、メモリ1310内に蓄積されていた予想圧縮率1/16によって圧縮されていたデータが全てメモリ1312に出力された時点で、メモリ1310からのデータの出力が停止され、ハフマン符号化部1308からのデータのみがメモリ1312に入力されて格納される。尚、この間もメモリ1312には、ハフマン符号化部1309からのデータが蓄積されている。その後、この処理を続けて、予想圧縮率1/16によって圧縮されたデータがメモリ1312に全て蓄積された場合、圧縮処理は終了となる。
【0099】
しかし、圧縮符号化を行なう画像によっては、図29のように、予想していた1/16の圧縮率を満たさずに、メモリ1312に蓄積しきれない場合もある。このように圧縮率が足らずにメモリ1312の容量が一杯になってしまった場合は、メモリ1312にリセットが掛かり、そのメモリ1312に蓄積されていたデータがクリアされる。こうしてメモリ1312がクリアされた後は、図30に示すように、ビットシフト器1306は2ビットシフト(1/4)に設定される。また、ビットシフト器1307は3ビットシフト(1/8)に設定される。そしてメモリ1310から、今まで蓄積されていた予想圧縮率1/32によって圧縮符号化された画像データの先頭から、今回リセットが掛けられる前までのデータが出力され、アービタ1311を通してメモリ1312に蓄積される。メモリ1310から出力を行なったデータの蓄積されていた部分はリセットされ、次のデータが入力された時の蓄積部分として使用される。
【0100】
また、ハフマン符号化部1308からは、リセットが掛けられた後に、入力端子1301から入力され量子化されて、ビットシフト器1306で2ビットシフトされたデータがハフマン符号化され、予想圧縮率1/32によって圧縮された画像データとして出力され、メモリ1312に蓄積される。メモリ1312には、メモリ1310から入力される予想圧縮率1/32によって圧縮された先頭からのデータと、ハフマン符号化部1308から入力される予想圧縮率1/32によって圧縮された途中データの両方が混ざった形で入力されるが、前述したように、パケットフォーマットの形で、各パケットの位置情報がパケットテーブルによって管理されているため、後にメモリ1312からデータの出力を行なう時には、スキャナ2070から入力を行なった順番でデータの出力を行なえる。またこの時、ハフマン符号化部1309からは、予想圧縮率1/64によって圧縮された画像データが出力されてメモリ1310に蓄積される。このメモリ1310から出力されたデータは、メモリ1312に入力されると同時にハフマン復号化部1313に入力されて復号処理が行なわれ量子化データに戻される。その量子化データは、ビットシフト器1314によって1ビットシフト(1/2)された後、ハフマン符号化部1315によって再び符号化され、約1/64の符号化データとしてメモリ1310に蓄積される。こうしてメモリ1310には、ハフマン符号化部1315から入力される予想圧縮率1/64によって圧縮された先頭からのデータと、ハフマン符号化部1309から入力される予想圧縮率1/64によって圧縮された途中データの両方が混ざった形で入力される。
【0101】
次に図31のように、メモリ1310に蓄積されて予想圧縮率1/32によって圧縮されていたデータが全てメモリ1312に出力された時点で、メモリ1310からのデータの出力が停止され、ハフマン符号化部1308からのデータのみがメモリ1312に入力される。また、この間もメモリ1310には、ハフマン符号化部1309からのデータが蓄積されている。その後、この処理を続けて、予想圧縮率1/32によって圧縮されたデータがメモリ1312に全て蓄積された場合(図32)に、この圧縮処理は終了する。
【0102】
次に図33をもとに、タイル圧縮部2106の内部構成を説明する。
【0103】
1501はデータ入力インターフェースで、タイルバス2107からのパケット化されたデータを入力する。1502はヘッダ情報解析部で、パケットデータのヘッダ部分の情報を読み取り、ヘッダ情報として、ヘッダ情報変更部1505に出力する。データ部分の情報はJPEG圧縮部1503に入力され、先に詳細な説明を行なった方法により、圧縮符号化処理が行なわれる。こうして圧縮符号化されたデータはデータ出力インターフェース1508に出力されるとともに、カウンタ1504に入力される。このカウンタ1504は、圧縮後のデータがどれだけのデータ量になったかをカウントし、その情報をデータサイズとしてヘッダ情報変更部1507及び加算器1505に出力する。加算器1505は、その圧縮後のデータの加算を行ない、その加算結果を比較器1506へ出力する。この時、ヘッダ部分のデータ量も加味した上で加算を行なうものとする。この加算器1505からの加算結果をもとに比較器1506は、その加算結果がRAM2002の容量を越える時に、それを伝える信号をJPEG圧縮部1503、ヘッダ情報変更部1507、カウンタ1509に出力する。またこの時同時に、加算器1505の値もクリアする。
【0104】
この容量オーバを示す信号を受けたJPEG圧縮部1503は、現時点の圧縮率よりも圧縮率を上げた圧縮データを生成して出力するための制御に切り替える。またカウンタ1509は、容量オーバーの信号が何回出力されたかをカウントし、その計数値をレジスタなどに保持しておく。ヘッダ情報変更部1507は、パケットデータのヘッダ部分にあるデータサイズ情報を圧縮後のサイズに変更するとともに、圧縮フラグを書き換えて圧縮後のデータ表示とする。また比較器1506からの比較結果を受けて、データの加算結果がRAM2002の容量を越えた場合には、ヘッダ部分のRam Rstフラグ3022にその情報を載せて出力用ヘッダ情報とする。こうして内容が変更されたヘッダ情報は、データ出力インターフェース1508に入力され、圧縮符号化後のデータのヘッダとして付加され、パケットデータとして画像リングインターフェース4(2102)へ出力される。
【0105】
図34は、本実施の形態に係るRAMコントローラ2124の構成を表わしたブロック図である。
【0106】
1601はSSBインターフェース部で、システムバスブリッジからのパケットデータの入力及びシステムバスブリッジへのパケットデータの出力を行う。1602はヘッダ情報解析部で、入力されたパケットデータのヘッダ部分を読み取って必要な情報の解析を行う。また出力を行うパケットデータのヘッダ部分の情報の修正を行う場合の書き換えもこの部分で行う。1603はパケットテーブル生成部で、ヘッダ情報解析部1602からヘッダ情報として、XY座標情報とデータサイズを入力し、それを基にパケットデータテーブルを生成する。またヘッダ情報として、メモリリセットフラグも入力され、もしこのフラグに「1」が立っていた場合には、RAM2002の内容をリセットするとともに、パケットデータテーブルのリセットを行なう。1604はRAMインターフェースで、パケットテーブル生成部1603で作られたパケットテーブルに従って、アドレスやRAM制御信号を生成してRAM2002の制御を行なう。
【0107】
以上説明した方法により、RAM2002に格納されている圧縮データがRAM2002のメモリ容量を越えてしまうこと検知し、システムのコントロールを行うことが可能となる。
【0108】
次に図35を参照して、符号化されたデータを印刷する際に、JPEG圧縮データを復号するタイル伸長部2103の内部構成を説明する。
【0109】
1701はデータ入力インターフェースで、画像リングインターフェース3(2101)からのパケット化されたデータを入力する。1702はヘッダ情報解析部で、パケットデータのヘッダ部分の情報を読み取り、ヘッダ情報としてヘッダ情報変更部1705に出力する。またデータ部分の情報は、JPEG伸長部1703に入力され、前述したようにしてJPEG復号処理が行なわれる。こうして復号されたデータは、データ出力インターフェース1706に出力されるとともに、カウンタ1704に入力される。このカウンタ1704は、圧縮後のデータがどれだけのデータ量になったかをカウントし、そのカウント情報をデータサイズとしてヘッダ情報変更部1705へ出力する。ヘッダ情報変更部1705は、パケットデータのヘッダ部分にあるデータサイズ情報を、伸長後のサイズに変更するとともに、圧縮フラグの書き換えを行ない、伸長後の画像データとする。こうして内容が変更されたヘッダ情報は、データ出力インターフェース1706に入力され、復号後の画像データのヘッダとして付加され、パケットデータとしてタイルバス2107へ出力される。
【0110】
JPEG圧縮データの伸長を行なう場合、圧縮を行なった際に使用したQテーブルを基に復号用のQテーブルを用意する必要がある。通常は圧縮時に使用しているQテーブルは1つに決まっていて、それに対応する復号時のQテーブルを1つ用意しておけば圧縮及び復号ができる。しかし、本実施の形態におけるQテーブルは、1/8の圧縮率となるようなQテーブルを1/2nしたものを使用していて、nの値はJPEG圧縮時にRAM2002の容量に応じて変化するので、その変化に応じて、複数のQテーブルを使い分ける必要がある。
【0111】
そこで本実施の形態では、タイル圧縮部2106においてRamRetフラグが「1」となった回数をタイル圧縮部2106内のカウント1509(図33)によってカウントし、nがいくつであるかを認識しておき、タイル圧縮部2106の内部のレジスタに記憶しておく。そしてRAM2002から出力されたJPEG圧縮データがタイル伸長部2103にて伸長される時に、その情報を読み出すことによって復号用のQテーブルを準備しることができる。つまり、1度もRamRetフラグが「1」とならなかった場合には1/8に対応したQテーブルを、1度RamRetフラグが「1」となった場合には1/16に対応したQテーブルを、2度RamRetフラグが「1」となった場合には1/32に対応したQテーブルを、それぞれ用意してJPEG復号を行なう。
【0112】
以上の説明に基づいて、本実施の形態に係る画像処理の動作を図36のフローチャートを参照して説明する。
【0113】
まずステップS101で、スキャナ2070によって原稿の読み取りスキャンを行ない、スキャンデータを入力する。次にステップS102に進み、タイル圧縮部1(2106)のRamRstフラグに「1」が立つ回数をカウントするカウンタ1509(図33)の値を「0」にリセットする。次にステップS103に進み、タイル圧縮部2106のJPEG圧縮部6003によって画像データの圧縮処理を行なう。そしてステップS104で、このタイル圧縮部2106による処理によって、入力画像データを圧縮した後のデータが、RAM2002のメモリ容量を越えているか否か判断する。ここでもしRAM2002のメモリ容量を越えてしまうと判断した時にはステップS105に進み、カウンタ1509の値をカウントアップし、ステップS106で圧縮率を変更した後、より高圧縮率で圧縮されたJPEGデータを生成する。
【0114】
こうして圧縮率を上げていき、RAM2002に全データを格納できるまで、即ち、ステップS104の判定がNOになるまで前記処理を繰り返し、全ての画像データを格納できるようになるとステップS107に進み、RAM2002にその圧縮したデータを格納する。次にステップS108に進み、入力画像データをプリントするために、RAM2002からJPEG圧縮データを読み出す。次にステップS109で、カウンタ1509の値を取得し、その値を基にステップS110で、タイル伸長部1(2103)でJPEG復号処理を行なうためのQテーブルを設定する。そしてステップS111に進み、タイル伸長部1(2013)によってJPEG圧縮データの復号処理を行なう。次にステップS112に進み、プリンタ用画像処理部2115によって、所定の画像処理を施した後、その処理済みの画像データをプリンタ2095に出力して印刷する。
【0115】
以上述べた処理によって、JPEGによる圧縮が行なわれたデータがメモリ容量を越えた場合にリアルタイムで検知し、その画像データを更に高い圧縮率で圧縮してメモリ容量内に収まるデータ量となるようにシステムの処理を切り替えることができる。また圧縮を行なった時に使用したQテーブルに対応したQテーブルを、復号時に的確に選択できることにより、その圧縮データの復号処理を行なうことができる。
【0116】
[実施の形態2]
前述の実施の形態1では、タイル圧縮部1(2106)のカウンタ1509によって、RamRstフラグが「1」となった回数をカウントし、その計数値に基づいて復号時のQテーブルの設定を行なっていた。
【0117】
これに対し本実施の形態2では、RAMコントローラ2124にカウンタを持ち、これによりRamRstフラグが「1」となった回数をカウントし復号する。また、復号を行なう際には、複数のQテーブルを用意することなく、符号化時に何回RAM2002にリセットが掛かったかによって、それに合わせた復号処理を行なう。
【0118】
図37は、本発明の実施の形態2に係るタイル圧縮部1(2106)の構成を示すブロック図である。ここでは図33で説明した前述の実施の形態1におけるタイル圧縮部1(2106)と同様な部分は同じ記号で示している。ここでの特徴は、RamRstフラグが「1」となる回数をカウントするカウンタ1509が無い事である。
【0119】
図において、1501はデータ入力インターフェースで、タイルバス2107からのパケット化されたデータを入力する。1502はヘッダ情報解析部で、パケットデータのヘッダ部分の情報を読み取り、ヘッダ情報として、ヘッダ情報変更部1505に出力する。またデータ部分の情報は、JPEG圧縮部1503に入力され、前述の方法により圧縮符号化処理が行なわれる。こうして圧縮符号化されたデータは、データ出力インターフェース1508に出力されるとともに、カウンタ1504に入力される。このカウンタ1504は、圧縮後のデータがどれだけのデータ量になったかをカウントし、その情報をデータサイズとしてヘッダ情報変更部1507及び加算器1505へ出力している。加算器1505は、圧縮後のデータの加算を行ない、その加算結果を比較器1506へ出力する。この時、ヘッダ部分のデータ量も加味した上で加算を行なう。この加算器1505からの加算結果をもとに比較器1506は、その加算結果がRAM2002のメモリ容量を越える時に、それを伝える信号をJPEG圧縮部1503、ヘッダ情報変更部1507に出力する。また、この時同時に、加算器1505の値もクリアする。この容量オーバーの信号を受けたJPEG圧縮部1503は、圧縮率を上げたデータを生成し、出力するために制御の切り替えが行なわれる。ヘッダ情報変更部1507は、パケットデータのヘッダ部分にあるデータサイズ情報を、圧縮後のサイズに変更するとともに圧縮フラグの書き換えを行い、圧縮後のデータ表示とする。また比較器1506からの比較結果を受けて、データの加算結果がRAM2002のメモリ容量を越えた場合には、ヘッダ部分のRam Rstフラグ3022にその情報を載せて出力用ヘッダ情報とする。こうして内容が変更されたヘッダ情報は、データ出力インターフェース1508に入力され、圧縮符号化後のデータのヘッダとして付加され、パケットデータとして画像リングインターフェース4(2102)へ出力される。
【0120】
図38は、実施の形態2に係るRAMコントローラ2124の内部構成を示したブロック図である。
【0121】
5101はSSBインターフェース部で、システムバスブリッジからのパケットデータの入力及び、システムバスブリッジへのパケットデータの出力を行なう。5102はヘッダ情報解析部で、入力されたパケットデータのヘッダ部分を読み取り、必要な情報の解析を行なう。また出力を行なうパケットデータのヘッダ部分の情報を修正する場合の書き換えもこの部分で行なう。また、ヘッダ情報解析部5102からは、Ram Rstフラグ3022の値が出力されていて、カウンタ5105へとつながれている。カウンタ5105では、このRam Rstフラグに「1」が立った回数をカウントし、レジスタなどに保持しておく。5103はパケットテーブル生成部で、ヘッダ情報解析部5102からヘッダ情報として、XY座標情報とデータサイズを入力し、それをもとにパケットデータテーブルを生成する。また、ヘッダ情報として、メモリリセットフラグも入力され、もし「1」が立っていた場合には、RAM2002をリセットするとともに、パケットデータテーブルをリセットする。804はRAMインターフェースで、パケットテーブル生成部803で作られたパケットテーブルに従ってアドレスやRAM制御信号を生成してRAM2002を制御する。RAM2002から出力されたJPEG圧縮データがタイル伸長部1(2103)にて処理される時には、カウンタ5105の情報を読み出すことによって、JPEG符号化が行われた際に、何回ビットシフトが行われたかを検知することができる。つまり、1度もRam Retフラグ3022が「1」とならなかった場合には、1/8に対応したQテーブルを使用してビットシフトが行われていないことになる。また1度だけRamRetフラグ3022が「1」となった場合には、1/8に対応したQテーブルを使用して1回ビットシフトを行なったことになる。更に2度RamRetフラグが「1」となった場合には、1/8に対応したQテーブルを使用して2回ビットシフトを行なったことになる。この情報を基に、タイル伸長部2103のJPEG伸長部1503は、JPEGデータの復号処理を行なう。
【0122】
図39は、実施の形態2に係るタイル伸長部1(2113)のJPEG伸長部の構成を示すブロック図である。
【0123】
入力端子5201より入力された画素データは、ハフマン復号化部5202によって、ハフマン符号化されたデータを復号する。ビットシフト部5203は、JPEG符号化が行われた際に、何回ビットシフトが行われたかを示す情報をRAMコントローラ2124から入力し、0回の場合はそのままの値を逆量子化部5204へ出力し、1回の場合は1ビットシフトを行ってデータを2倍の値にし、2回の場合は2ビットシフトを行なって4倍の値にし、3回の場合は3ビットシフトを行ってデータを8倍の値にするように、それぞれ左方向へのビットシフトを行なう。逆量子化部5204は、符号化用に使用した(本実施の形態では1/8)予想圧縮率のQテーブルをもとにした復号化用のQテーブル5205を使用して逆量子化を行なう。マッピング部5206は、DCT係数のジグザグスキャンによって1次元の連続データに変換されたDCT係数を、2次元にマッピングし直す。逆DCT部5207は、8×8のエリアごとに逆離散コサイン変換を掛けることにより復号し、出力端子5208から復号したデータを出力する。
【0124】
以上述べた処理によって、JPEGによる圧縮が行なわれたデータが、メモリ容量を越えて格納されようとした場合、リアルタイムで検知を行ない、更に高い圧縮率で圧縮を行ないメモリ内に収まるデータ量となるように、システムの処理を切り替えることが可能となった。更に、RAMコントローラのカウンタによってJPEG符号化時のビットシフトの回数をカウントし、そのカウントした情報をJPEG復号化の際のビットシフトの回数とすることによって、複数のQテーブルを持つことなく、JPEG復号化を行うことができる。
【0125】
[実施の形態3]
前述の実施の形態1では、タイル圧縮部1(2106)カウンタ1509によって、RamRstフラグ3022が「1」となる回数をカウントし、その値をタイル圧縮部1(2106)のレジスタなどに記憶することによって、後の復号の際のQテーブルの設定を行なっていた。
【0126】
これに対して本発明の実施の形態3では、タイル圧縮部1(2106)のカウンタ1509によって、RamRstフラグ3022が「1」となる回数をカウントし、その値をパケットデータのヘッダ部分に書き込んでおく。そして復号する際には、ヘッダ部分のカウント数を基にして処理する。また復号する際には、複数のQテーブルを用意することなく、符号化時に何回RAM2002にリセットが掛かったかによって、それに合わせた復号処理を行うことができる。
【0127】
図40は、本発明の実施の形態3に係るタイル圧縮部1(2106)の構成を示すブロック図で、前述の図33のタイル圧縮部1(2106)の構成と共通する部分は同じ記号で示している。この実施の形態3の特徴は、Ram Rstフラグ3022が「1」となる回数をカウントするカウンタ1509によるカウント数がヘッダ情報変更部1507に入力されていることである。これによって出力するパケットデータのヘッダ情報に、そのデータが圧縮されるときに何回RAM2002にリセットが行われたか書き込む。
【0128】
1501はデータ入力インターフェースで、タイルバス2107からのパケット化されたデータを入力する。1502はヘッダ情報解析部で、パケットデータのヘッダ部分の情報を読み取り、ヘッダ情報として、ヘッダ情報変更部1505に出力する。またデータ部分の情報は、JPEG圧縮部1503に入力され、前述の方法により圧縮符号化処理が行なわれる。こうして圧縮符号化されたデータは、データ出力インターフェース1508に出力されるとともに、カウンタ1504に入力される。このカウンタ1504では圧縮後のデータがどれだけのデータ量になったかをカウントし、その情報をデータサイズとしてヘッダ情報変更部1507及び加算器1505へ出力する。加算器1505は圧縮後のデータの加算を行い、その加算結果を比較器1506へ出力する。この時、ヘッダ部分のデータ量も加味した上で加算を行なうものとする。この加算器1505からの加算結果をもとに比較器1506は、その加算結果がRAM2002のメモリ容量を越える時に、それを伝える信号をJPEG圧縮部1503、ヘッダ情報変更部1507、カウンタ1509に出力する。また、この時同時に、加算器1505の値もクリアする。この容量オーバーの信号を受けたJPEG圧縮部1503は、圧縮率を上げたデータを生成して出力するために制御を切り替える。またカウンタ1509は、この容量オーバーの信号が何回出力されたかをカウントし、その値をヘッダ情報変更部1507に出力する。ヘッダ情報変更部1507は、パケットデータのヘッダ部分にあるデータサイズ情報を、圧縮後のサイズに変更するとともに、圧縮フラグの書き換えを行って圧縮後のデータ表示とする。また比較器1506からの比較結果を受けて、データの加算結果がRAM2002のメモリ容量を越えた場合には、ヘッダ部分のRam Rstフラグ3022にその情報を載せる。またカウンタ1509からのリセット回数も常にヘッダに載せて出力用ヘッダ情報とする。こうして内容が変更されたヘッダ情報は、データ出力インターフェース1508に入力され、圧縮符号化後のデータのヘッダとして付加され、パケットデータとして画像リングインターフェース2102へ出力される。
【0129】
図41は、本発明の実施の形態3に係るパケットデータのヘッダ部分の内容を示した図である。
【0130】
先の実施の形態と異なる点は、Rst Counter5401が設けられていることである。この部分にカウンタ1509から入力されるリセット回数の計数値を載せて出力しRAM2002に格納する。RAM2002から出力されたJPEG圧縮データがタイル伸長部1(2103)にて伸長処理される際に、ヘッダ部分のRst Counter5401の情報を読み出すことによってJPEG符号化が行われた際に、何回ビットシフトが行われたかを検知する。つまりRst Counter5401が「0」の場合には、1/8に対応したQテーブルを使用して1回もビットシフトを行なっていないことになる。またRst Counter5401が「1」の場合には、1/8に対応したQテーブルを使用して1回ビットシフトを行なったことになる。更に、Rst Counter5401が「2」の場合には、1/8に対応したQテーブルを使用して2回ビットシフトを行なったことになる。この情報をもとに、タイル伸長部2103内のJPEG伸長部6003は、JPEGデータを復号する。
【0131】
本実施の形態におけるJPEG圧縮データの復号は前述の実施の形態2におけるタイル伸長部1(2113)のJPEG伸長部1703の構成と同じ(図39)とする。
【0132】
入力端子5201より入力された画素データは、ハフマン復号化部5202によって復号される。ビットシフト部5203は、JPEG符号化が行われた際に、何回ビットシフトが行われたかを示す情報をヘッダ情報のRst Counter5401から入力し、0回の場合はそのままの値を逆量子化部5204へ出力する。1回の場合は1ビット左シフトを行ってデータを2倍の値にして出力する。更に、2回の場合は2ビット左シフトを行なってデータを4倍の値にし、3回の場合は3ビット左シフトを行ってデータを8倍の値にして出力する。
【0133】
逆量子化部5204は、符号化用に使用した(本実施の形態では1/8)予想圧縮率のQテーブルを基にした復号化用のQテーブル5505を使用して逆量子化する。マッピング部5206で、DCT係数のジグザグスキャンによって1次元の連続データに変換されたDCT係数を2次元にマッピングし直す。逆DCT部5207で、8×8のエリアごとに逆離散コサイン変換を掛けることにより、復号し、出力端子5208から復号したデータを出力する。
【0134】
以上述べた処理によって、JPEGによる圧縮が行なわれたデータが、メモリ容量を越えて格納されようとした場合、リアルタイムで検知を行ない、更に高い圧縮率で圧縮を行ないメモリ内に収まるデータ量となるように、システムの処理を切り替える事が可能となる。更に、ヘッダ情報のRst Counter5401によって、JPEG符号化時のビットシフトの回数をカウントし、その情報をJPEG復号化の際のビットシフトの回数とすることによって、複数のQテーブルを持つことなくJPEGの復号を行なうことが可能となった。
【0135】
[その他の実施の形態]
なお本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用しても良い。
【0136】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUまたはMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成されることは言うまでもない。
【0137】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0138】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピィディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることが出来る。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0139】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【0140】
以上説明したように本実施の形態によれば、JPEG圧縮されたデータがメモリ容量を越えて格納されようとした場合、それをリアルタイムで検知し、ビットシフトによって更に高い圧縮率で圧縮してメモリ容量に収まるデータ量となるように圧縮率を変更する。こうして圧縮されて記憶された符号化データを復号する際には、符号化時に使用されたQテーブルに対応するQテーブルを設定して復号することができる。
【0141】
尚、以上説明した本願発明の実施の形態は、以下の実施態様で表わすことができる。
【0142】
[実施態様1] 画像データを入力して符号化する画像処理装置であって、
画像データを圧縮する圧縮手段と、
前記圧縮手段により圧縮された画像データのデータ量を求めるデータ量計算手段と、
前記データ量計算手段により計算された前記データ量がメモリの容量を越えているか否かを判定する判定手段と、
前記判定手段による判定結果に応じて前記圧縮手段による圧縮率を高く設定して前記圧縮手段により前記画像データを圧縮して前記メモリに記憶するように制御する制御手段と、
前記判定手段により前記データ量が前記メモリの容量を越えたと判定された回数を計数する計数手段と、
前記計数手段による計数値に応じて前記メモリに記憶されている前記データの復号を行う復号手段とを有することを特徴とする画像処理装置。
【0143】
[実施態様2] 前記圧縮手段は、画像データを直交変換する直交変換手段と、前記直交変換手段により直交変換された係数をQテーブルに応じて量子化する量子化手段と、前記圧縮率を変更するために、前記量子化手段により量子化された係数をシフトするシフト手段と、前記シフト手段によりシフトされた係数を符号化する符号化手段とを備えることを特徴とする実施態様1に記載の画像処理装置。
【0144】
[実施態様3] 前記復号手段は、前記計数手段により計数された計数値に応じたQテーブルを設定して復号することを特徴とする実施態様2に記載の画像処理装置。
【0145】
[実施態様4] 画像データを入力して符号化する画像処理方法であって、
画像データを圧縮する圧縮工程と、
前記圧縮工程で圧縮された画像データのデータ量を求めるデータ量計算工程と、
前記データ量計算工程で計算された前記データ量がメモリの容量を越えているか否かを判定する判定工程と、
前記判定工程による判定結果に応じて前記圧縮工程での圧縮率を高く設定して前記圧縮工程で前記画像データを圧縮して前記メモリに記憶するように制御する制御工程と、
前記判定工程で前記データ量が前記メモリの容量を越えたと判定された回数を計数する計数工程と、
前記計数工程による計数値に応じて前記メモリに記憶されている前記データの復号を行う復号工程とを有することを特徴とする画像処理方法。
【0146】
[実施態様5] 前記圧縮工程では、画像データを直交変換する直交変換工程と、前記直交変換工程で直交変換された係数をQテーブルに応じて量子化する量子化工程と、前記圧縮率を変更するために、前記量子化工程で量子化された係数をシフトするシフト工程と、前記シフト工程でシフトされた係数を符号化する符号化工程とを備えることを特徴とする実施態様4に記載の画像処理方法。
【0147】
[実施態様6] 前記復号工程では、前記計数工程で計数された計数値に応じたQテーブルを設定して復号することを特徴とする実施態様5に記載の画像処理方法。
【0148】
【発明の効果】
以上説明したように本発明によれば、符号化及び復号時に使用するQテーブルを格納するためのメモリ容量の増大を防止して、最適な量に符号化された画像データをメモリに格納して復号できるという効果がある。
【図面の簡単な説明】
【図1A】、
【図1B】本発明の実施の形態に係る画像処理システム全体の構成を示すブロック図である。
【図2】本実施の形態に係るパケットデータの詳細な構成を示す図である。
【図3】本実施の形態に係るパケットテーブル内部の詳細な構成を示す図である。
【図4】画像データをタイル単位に分割する方法を示す図である。
【図5】本実施の形態に係わるパケットデータの構成を簡略的に示す図である。
【図6】、
【図7】、
【図8】、
【図9】、
【図10】、
【図11】、
【図12】、
【図13】、
【図14】、
【図15】本実施の形態に係わるパケットデータのメモリへの格納方法を簡略的に説明する図である。
【図16】一般的に行われているJPEG圧縮処理の構成を示す図である。
【図17】JPEG処理における予測符号化部の内部の詳細な処理の構成を示すブロック図である。
【図18】JPEG処理におけるジグザグスキャンを説明する図である。
【図19】JPEG処理におけるハフマン符号化を説明する図である。
【図20】一般的に行われているJPEG復号処理の構成を示す図である。
【図21】JEPG圧縮を行なう際の量子化データのビットシフトの効果を説明するためのブロックの構成を示す図である。
【図22】JEPG圧縮を行なう際の量子化データのビットシフトの効果を説明するためビットシフト無しの量子化データをハフマン符号化した結果を示す図である。
【図23】JEPG圧縮を行なう際の量子化データのビットシフトの効果を説明するため1ビットシフトの量子化データをハフマン符号化した結果を示す図である。
【図24】本実施の形態に係る画像処理システムのJPEG圧縮部の構成を示すブロック図である。
【図25】、
【図26】、
【図27】、
【図28】、
【図29】、
【図30】、
【図31】、
【図32】本実施の形態に係るJPEG圧縮データのメモリへの格納方法を簡略的に示す図である。
【図33】本発明の実施の形態に係わるタイル圧縮部の詳細な処理の構成を示すブロック図である。
【図34】本実施の形態に係わるRMAコントローラの詳細な処理の構成を示すブロック図である。
【図35】本実施の形態に係るタイル復号部の詳細な処理の構成を示すブロック図である。
【図36】本発明の実施の形態に係る画像処理システムにおける処理を説明するフローチャートである。
【図37】本発明の実施の形態2に係るタイル圧縮部の詳細な処理の構成を示すブロック図である。
【図38】本実施の形態2に係るRMAコントローラの詳細な処理の構成を示すブロック図である。
【図39】本発明の実施の形態2に係るタイル復号部のJPEG伸長部の詳細な処理の構成を示す図である。
【図40】本発明の実施の形態3に係るタイル圧縮部の詳細な処理を説明するブロック図である。
【図41】本発明の実施の形態3に係るパケットデータの詳細な構成を示す図である。
【発明の属する技術分野】
本発明は、画像データを符号化する際に、その符号化データのデータ量が所定量に収まるように符号化し、その符号化した画像データを復号する技術に関するものである。
【0002】
【従来の技術】
近年、スキャナやプリンタ等を備え、スキャナから入力した画像データを処理してプリンタにより印刷する画像処理システムでは、スキャナから読み込んだ画像をローカルエリアネットワーク(LAN)やインターネット上に流したり、LANやインターネットから受信した画像をプリンタにより印刷することができる。また、スキャナから読んだ画像をFAXに送信したり、通信回線からのデータをモデムにより受信してプリンタにより印刷するといった、ネットワークを使用した様々な画像データの受け渡しが必要となっている。
【0003】
そのため、このような画像処理システム内では、PDLやスキャナからの入力画像データ、プリンタ出力用の画像データ、FAX用の画像データ、画像データベースサーバに蓄積するためのデータなど様々な画像フォーマットに変換を行い、それぞれのデータを入出力するためのデータの受け渡しが発生する。このような画像処理システムの処理パフォーマンスを考えた時、画像データの受け渡しを頻繁に行なう状況において、大量のデータをやり取りすることは大きなマイナス要因となる。特に、スキャナから入力される画像データはカラーを表現するための色数、階調を表わすためのビット数、また、高画質化に伴う解像度のアップなどにより非常に大きなデータ量となってきている。
【0004】
そのため、スキャナから入力された画像データは、画像処理システムで取り扱う際に、まずデータの圧縮を行ってデータ量を小さくし、一旦、メモリに格納してからシステムで処理を行なうといった取り扱い方法が一般的である。このようなデータ圧縮には様々なデータ圧縮方法があり、その中でも、スキャナ画像データの特徴に合わせたデータ圧縮技術が標準化されたものとしてJPEG処理がある。このJPEG処理は、階調画像に対して最適な圧縮方法として一般的に使用されている。
【0005】
【発明が解決しようとする課題】
このような手法で圧縮された画像データを格納するメモリの容量は、圧縮された画像データが格納されることを前提として予め決定される。しかし、JPEGによる圧縮符号化処理は、元の画像データの内容によってその圧縮率が変化するため、必ずしも予想している圧縮率で圧縮符号化されるとは限らない。つまり、予想した圧縮率よりも小さい圧縮率で圧縮符号化された画像データの場合には、その圧縮された画像データのデータ量がメモリ容量を越えてしまい、そのメモリに全てのデータが格納できないことなる。そのような場合は、予想圧縮率を上げて、再度圧縮処理をし直し、その圧縮後の画像データ量がメモリに収まる圧縮率となるまで何度も原稿をセットし直してスキャンを行なう必要があり、このような操作は使用者の手を煩わせることとなっていた。
【0006】
そのため、入力されたデータを予想圧縮率の異なる複数の圧縮経路で圧縮符号化処理を行ない、圧縮率の低い方で処理を行なった符号化データをメインメモリに、圧縮率の高い方で処理を行なった符号化データをテンポラリーメモリに格納し、メインメモリの容量を越えたデータが入力される場合には、それをクリアし、テンポラリメモリに格納されている圧縮率の高い処理で符号化されたデータを入力するという処理をリアルタイムで行なう方法がある。
【0007】
しかし、このような方法によってメインメモリに納まるように圧縮を行なうためには、複数のQテーブルを用意しなくてはならない。これによってQテーブルを格納しておくメモリの増大を招くことになる。また復号を行なう際も、符号化を行なった時と同じQテーブルを使用する必要があるため、復号処理を行なう部分でも複数のQテーブルが必要となり、これによるQテーブルを格納しておくメモリの増大を招くことになる。
【0008】
本発明は上記従来例に鑑みてなされたもので、符号化及び復号時に使用するQテーブルを格納するためのメモリ容量の増大を防止して、最適な量に符号化された画像データをメモリに格納して復号することを目的とする。
【0009】
【課題を解決するための手段】
上記目的を達成するために本発明の画像処理装置は以下のような構成を備える。即ち、
画像データを入力して符号化する画像処理装置であって、
画像データを圧縮する圧縮手段と、
前記圧縮手段により圧縮された画像データのデータ量を求めるデータ量計算手段と、
前記データ量計算手段により計算された前記データ量がメモリの容量を越えているか否かを判定する判定手段と、
前記判定手段による判定結果に応じて前記圧縮手段による圧縮率を高く設定して前記圧縮手段により前記画像データを圧縮して前記メモリに記憶するように制御する制御手段と、
前記判定手段により前記データ量が前記メモリの容量を越えたと判定された回数を計数する計数手段と、
前記計数手段による計数値に応じて前記メモリに記憶されている前記データの復号を行う復号手段と、を有することを特徴とする。
【0010】
【発明の実施の形態】
以下、添付図面を参照して本発明の好適な実施の形態を詳細に説明する。
【0011】
[実施の形態1]
図1A及び図1Bは、本発明の実施の形態に係る画像処理システムの全体構成を示すブロック図である。
【0012】
図において、制御ユニット2000は、画像入力デバイスであるスキャナ2070や画像出力デバイスであるプリンタ2095と接続され、一方では、LAN2011や公衆回線(WAN)2051と接続することで、画像情報やデバイス情報の入出力、及びPDLデータからイメージデータへの展開を行っている。CPU2001は、このシステム全体を制御するプロセッサである。本実施の形態では2つのCPUを用いた例を示す。これら2つのCPUは、共通のCPUバス2126に接続され、更に、システムバスブリッジ2007に接続されている。このシステムバスブリッジ2007はバススイッチであり、このバスブリッジ2007にはCPUバス2126、RAMコントローラ2124、ROMコントローラ2125、I/Oバス1(2127)、サブバススイッチ2128、I/Oバス2(2129)、画像リングインターフェース1(2147)、画像リングインターフェース2(2148)等が接続されている。サブバススイッチ2128は第2のバススイッチであり、画像DMA1(2130)、画像DMA2(2132)、フォント伸長部3134、ソート回路(2135)、ビットマップトレース部(2136)が接続され、これらDMAから出力されるメモリアクセス要求を調停し、システムバスブリッジ2007への接続を行う。
【0013】
RAM2002は、CPU2001が動作する際に、プログラムや各種データを一時的に保存するシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。このRAM2002へのアクセスはRAMコントローラ2124により制御される、本実施の形態では、ダイレクトRDRAMを採用している。ROM2003はブートROMであり、このシステムのブートプログラムが格納されている。このROM2003からの読み出しはROMコントローラ2125により制御される。
【0014】
画像DMA1(2130)は画像圧縮部3131に接続され、レジスタアクセスリング2137を介して設定された情報に基づき、画像圧縮部2131を制御して、RAM2002に格納されている非圧縮データの読み出し、データ圧縮及び圧縮後データの書き戻しを行う、尚、本実施の形態では、JPEGを圧縮アルゴリズムに採用した例で説明する。画像DMA2(2132)は画像伸長部(2133)に接続され、レジスタアクセスリング2137を介して設定された情報に基づいて画像伸長部2133を制御し、RAM2002に格納されている圧縮データの読み出し、伸長及び伸長後データの書き戻しを行う、本実施の形態では、JPEGを伸長アルゴリズムに採用した例で説明する。
【0015】
フォント伸長部2134は、LANインターフェース2010等を介して外部より転送されるPDLデータに含まれるフォントコードに基づき、ROM2003或いはRAM2002に格納された圧縮フォントデータを伸長している。本実施の形態では、FBEアルゴリズムを採用している。ソート回路2135は、PDLデータを展開する段階で生成されるディスプレイリストのオブジェクトの順番を並び替える回路である。ビットマップトレース回路2136は、ビットマップデータよりエッジ情報を抽出する回路である。I/Oバス1(2127)は、内部I/Oバスの一種であり、標準バスであるUSBバスのコントローラ、USBインターフェース2138、汎用シリアルポート2139、インタラプトコントローラ2140、GPIOインターフェース2141が接続される。I/Oバス1には、バスアービタ(図示せず)が含まれる。
【0016】
操作部I/F2006は、操作部(UI)2012とインターフェース部とを含み、操作部2012に表示する画像データを操作部2012に出力する。また、操作部2012から本実施の形態に係るシステムの使用者が入力した情報を、CPU2001に伝える役割をする。I/Oバス2(2129)は内部I/Oバスの一種であり、汎用バスインターフェース1及び2(2142)と、LANコントローラ2010が接続される。このI/Oバス2にはバスアービタ(図示せず)が含まれる。汎用バスインターフェース2142は、2つの同一のバスインターフェースを有し、標準I/Oバスをサポートするバスブリッジである。本実施の形態では、PCIバス2143を採用した例を示している。
【0017】
外部記憶装置2004は、システムソフトウェアや画像データ等を格納している。本実施の形態では、この外部記憶装置2004はハードディスクドライブとし、ディスクコントローラ2144を介して一方のPCIバス2143に接続されている。LANコントローラ2010は、MAC回路2145、PHY/PMD回路2146を介してLAN2011に接続されており、このLAN2011を介して情報の入出力を行う。モデム2050は公衆回線2051に接続されて情報の入出力を行う。
【0018】
画像リングインターフェース1(2147)及び画像リングインターフェース2(2148)は、システムバスブリッジ2007と画像データを高速で転送する画像リング2008とを接続し、タイル化後に圧縮されたデータをRAM2002とタイル画像処理部2149との間で転送するDMAコントローラである。画像リング2008は、一対の単方向接続経路の組み合わせにより構成される(画像リング1及び画像リング2)。この画像リング2008は、画像処理部2149で、画像リングインターフェース3(2101)及び画像リングインターフェース4(2102)を介して、タイル伸長部2103、コマンド処理部2104、ステータス処理部2105、タイル圧縮部2106に接続されている。本実施の形態では、タイル伸長部2103を2組、タイル圧縮部2106を3組それぞれ実装する例を示した。
【0019】
タイル伸長部2103は、これら画像リングインターフェースへの接続に加えてタイルバス2107に接続され、画像リング2008より入力された圧縮後の画像データを伸長してタイルバス2107へ転送している。本実施の形態では、多値データの伸長にはJPEG、2値データの伸長にはパックビッツを伸長アルゴリズムを採用している。タイル圧縮部2106は、画像リングインターフェースへの接続に加え、タイルバス2107に接続され、タイルバス2107から入力された圧縮前の画像データを圧縮して画像リング2008へ転送する。本実施の形態では、多値データの圧縮にはJPEG、2値データの圧縮にはパックビッツを圧縮アルゴリズムを採用している。
【0020】
コマンド処理部2104は、画像リングインターフェースへの接続に加え、レジスタ設定バス2109に接続され、画像リング2008を介して入力したCPU2001より発行されたレジスタ設定要求を、レジスタ設定バス2109に接続される該当ブロックへ書き込む。また、CPU2001より発行されたレジスタ読み出し要求に基づき、レジスタ設定バスを介して該当レジスタより情報を読み出して画像リングインターフェース4(2102)に転送する。ステータス処理部2105は各画像処理部の情報を監視し、CPU2001に対してインタラプトを発行するためのインタラプトバケットを生成し、画像リングインターフェース4(2102)に出力する。
【0021】
タイルバス2107には上記ブロックに加え、以下の機能ブロックが接続される。即ち、レンダリング部インターフェース2110、画像入力インターフェース2112、画像出力インターフェース2113、多値化部2119、2値化部2118、色空間変換部2117、画像回転部2030、解像度変換部(2116)等である。レンダリング部インターフェース2110は、後述するレンダリング部2060により生成されたビットマップイメージを入力するインターフェースである。レンダリング部2060とレンダリング部インターフェース2110は、一般的なビデオ信号2111にて接続される。このレンダリング部インターフェース2110は、タイルバス2107に加え、メモリバス2108、レジスタ設定バス2109への接続を有し、入力されたラスタ画像をレジスタ設定バスを介して設定された所定の方法によりタイル画像への構造変換をすると同時にクロックの同期化を行い、タイルバス2107に対して出力する。画像入力インターフェースは2112は、後述するスキャナ用画像処理部2114により補正画像処理されたラスタイメージデータを入力し、レジスタ設定バスを介して設定された、所定の方法によりタイル画像への構造変換とクロックの同期化を行い、タイルバス2107に対して出力する。画像出力インターフェース2113は、タイルバス2107からのタイル画像データを入力し、ラスタ画像への構造変換及びクロックレートの変更を行い、ラスタ画像をプリンタ用画像処理部2115へ出力する。また画像回転部2030は画像データの回転を行い、解像度変換部2116は画像の解像度を変更し、色空間変換部2117は、カラー及びグレースケール画像の色空間の変換を行う。2値化部2118は、多値(カラー、グレースケール)画像を2値化する。また多値化部2119は2値画像を多値データへ変換する。
【0022】
外部バスインターフェース部2120は、画像リングインターフェース1,2,3,4、コマンド処理部2104、レジスタ設定バス2109を介し、CPU2001により発行された、書き込み、読み出し要求を外部バス3(2121)に変換出力するバスブリッジである。外部バス3(2121)は本実施の形態では、プリンタ用画像処理部2115及びスキャナ用画像処理部2114に接続されている。
【0023】
メモリ制御部2122はメモリバス2108に接続され、各画像処理部の要求に従い、予め設定されたアドレス分割により、画像メモリ1及び画像メモリ2(2123)に対して、画像データの書き込み、読み出し、更には必要に応じてリフレッシュ等の動作を行う。本実施の形態では、画像メモリにSDRAMを用いた例を示した。スキャナ用画像処理部2114では、画像入力デバイスであるスキャナ2070により読取られた画像データを補正処理する。プリンタ用画像処理部2115は、プリンタ出力のための補正処理を行い、その結果をプリンタ2095に出力する。レンダリング部2060はPDLコードもしくは中間ディスプレイリストをビットマップイメージに展開する。
【0024】
本実施の形態に係る制御ユニット2000は、画像データを、図2に示すデータパケットのようにパケット化された形式で転送するものとする。
【0025】
本実施の形態では、図4に示すように画像データを32画素×32画素からなるタイル形式の画像データ3002に分割して取り扱う例を示す。このタイル単位の画像情報に、必要なヘッダ情報3001及び画像付加情報等3003を付加してデータパケットとする。画像情報部分には、スキャナ2070から入力された場合にはRGBデータ、そのRGBデータに圧縮処理を行なった場合には、圧縮後の符号化データが入れられる。(図5)
以下、図2のヘッダ情報3001に含まれる情報について説明する。
【0026】
パケットのタイプはヘッダ情報3001のPcktType3004で識別される。このPcktType3004にはリピートフラグが含まれており、データパケットの画像データが1つ前に送信したデータパケットのの画像データと同一の場合、このリピートフラグをセットする。ChipID3005は、パケットを送信するターゲットとなるチップのIDを示す。DataType3006はデータのタイプを示す。PageID3007はページを示しており、JobIDは、ソフトウェアで管理するためのジョブID3008を格納する。
【0027】
タイル番号はY方向のタイル座標3009とX方向のタイル座標3010の組み合わせで、Yn,Xnで表される。データパケットは画像データが圧縮されている場合と非圧縮の場合がある。本実施の形態では、圧縮アルゴリズムとして、多値カラー(多値グレースケールを含む)の場合はJPEGを、2値の場合はパックビッツを採用した例を示した。画像データが圧縮されている場合と非圧縮の場合との区別は、CompressFlag(圧縮フラグ)3017で示される。この圧縮フラグ3017は、画像データ用の1ビットと、Zデータ(Z data)用の1ビットのそれぞれが用意されており、圧縮処理が行なわれたデータがパケットデータとして入っている場合に「1」を立てることとする。
【0028】
Process Instruction(処理命令)3011は左詰で処理順に設定され、各処理ユニットは、処理後、その処理命令を左方向に8ビットシフトする。処理命令3011は、ユニットID(UnitID)3024とモード(Mode)3025との組が8組格納されている。このユニットID3024は、各処理ユニットを指定し、モード3025は各処理ユニットでの動作モードを指定する。これにより、1つのパケットは8つのユニットで連続して処理される。パケットバイト長(Packet Byte Length)3012は、パケットのトータルバイト数を示す。画像データバイト長(Image Data Byte Lengh)3015は、画像データのバイト数、Zデータバイト長(Z Data Byte Length)3016は、画像付加情報のバイト数を表し、画像データオフセット(Image Data Offset)3013、Zデータオフセット(Z data Offset)3014は、それぞれのデータのパケットの先頭からのオフセットを表している。
【0029】
メモリリセットフラグ(RAM Rst)3022は、RAM2002をクリアする信号を伝えるためのメモリリセットフラグである。通常の処理時には「0」で固定とされていて、タイル圧縮部2106によって圧縮されたデータ量がRAM2002の容量を越える時に、このフラグに「1」がセットされる。このメモリリセットフラグ3022に「1」が付加されたパケットデータを受けて、RAMコントローラ2124では、それを基にしてRAM2002及び、この後に説明するパケットテーブルのデータのリセットを行なう。
【0030】
各パケットデータは、パケットテーブル(Packet Table)6001によって管理される。このパケットテーブル6001の構成要素は、図3に示す通りで、それぞれテーブルの値に「0」を5ビット付加すると、パケットの先頭アドレス6002、パケットのバイト長6005となる。
【0031】
パケットアドレスポインタ(27ビット)+「5b00000」=パケット先頭アドレス
パケット長(11ビット)+「5b00000」=パケットのバイト長
パケットテーブル6001とチェインテーブル(ChainTable)6010は分割されないものとする。
【0032】
パケットテーブル6001は常に走査方向に並んでおり、Yn/Xn=000/000,000/001,000/002,…という順で並んでいる。このパケットテーブル6001のエントリは、一意に一つのタイルを示す。また、Yn/Xmaxの次のエントリは、(Yn+1/X0)となる。
【0033】
今、パケットが一つ前のパケットと全く同じデータである場合は、そのパケットはメモリ上には書かず、パケットテーブルのエントリに1つめのエントリと同じパケットアドレスポインタ、パケット長を格納する。1つのパケットデータを2つのテーブルエントリが指すような形になる。この場合、2つめのテーブルエントリのリピートフラグ(Repeat Flag)6003がセットされる。
【0034】
パケットがチェインDMAにより複数に分断された場合は、分割フラグ(Divide Flag)6004をセットし、そのパケットの先頭部分が入っているチェインブロックのチェインテーブル番号6006をセットする。チェインテーブル6010のエントリは、チェインブロックアドレス(Chain Block Address)6011と、チェインブロック長(Chain Block Length)6012とを含んでおり、テーブルの最後のエントリには、アドレス、データ長が共に「0」で格納されている。
【0035】
このようにパケットフォーマットによって処理を行なう特徴として、以下の点が挙げられる。
【0036】
図6に示すように、1つの画像データ50をタイル化し、ヘッダを付加した各パケットデータを2つの処理ブロック51,52で処理し、その処理結果をアービタ53を通してメモリ54に格納する画像処理システムを想定する。この時、アービタ53は、先に入力されたパケットフォーマットデータの転送が終わるまでは、次に入力されたデータを格納しておき、先に入力されたデータが全てメモリ54に出力され次第、それまで格納されていた次のデータの出力を行うと言った順番で、パケットフォーマットのブロック毎にメモリ54へ入力していく。
【0037】
このような図6のシステムにおいて、各パケットデータは、処理ブロック51,処理ブロック52のうち、前のタイルの処理が終わったところに入力されて処理が行なわれる。また本実施の形態では、処理ブロック51の処理時間の方が処理ブロック52の処理時間よりも早いものとする。
【0038】
図6から図15は、本実施の形態に係る画像処理システムにより、図4に示すような画像データをパケット化して処理を行なった時の例を示す図である。
【0039】
図6では、まず最初に処理ブロック51に座標X=0,Y=0のパケットデータが、また処理ブロック52に座標X=0,Y=1のパケットデータが入力される。
【0040】
次に図7では、処理ブロック51の座標X=0,Y=0のパケットデータの処理が終了し、アービタ53を通ってメモリ54の00番地に、その処理済みのデータ格納され、新たに次のデータである、座標X=0,Y=2のパケットデータが処理ブロック51に入力される。この時、処理ブロック52では、座標X=0,Y=1のパケットデータの処理が行なわれている。
【0041】
次に図8では、処理ブロック51の座標X=0,Y=2のパケットデータの処理が終了し、アービタ53を通ってメモリ54の01番地に格納され、新たに次のデータである座標X=0,Y=3のパケットデータが処理ブロック51に入力される。この時、処理ブロック52では、座標X=0,Y=1のパケットデータの処理が行なわれている。
【0042】
次に図9では、処理ブロック52の座標X=0,Y=1のパケットデータの処理が終了し、アービタ53を通ってメモリ54の02番地に格納され、新たに次のデータである座標X=1,Y=0のパケットデータが処理ブロック52に入力される。この時、処理ブロック51では、座標X=0,Y=3のパケットデータの処理が行なわれている。
【0043】
次に図10では、処理ブロック51の座標X=0,Y=3のパケットデータの処理が終了し、アービタ53を通ってメモリ54の03番地に格納され、新たに次のデータである座標X=1,Y=1のパケットデータが処理ブロック51に入力される。この時、処理ブロック52では、座標X=1,Y=0のパケットデータの処理が行なわれている。
【0044】
図11では、処理ブロック51の座標X=1,Y=1のパケットデータの処理が終了し、アービタ53を通ってメモリ54の04番地に格納され、新たに次のデータである座標X=1,Y=2のパケットデータが処理ブロック51に入力される。この時、処理ブロック52では、座標X=1,Y=0のパケットデータの処理が行なわれている。
【0045】
図12では、処理ブロック52の座標X=1,Y=0のパケットデータの処理が終了し、アービタ53を通ってメモリの05番地に格納され、新たに次のデータである座標X=1,Y=3のパケットデータが処理ブロック52に入力される。この時、処理ブロック51では、座標X=1,Y=2のパケットデータの処理が行なわれている。
【0046】
図13は、処理ブロック51の座標X=1,Y=2のパケットデータの処理が終了し、アービタ53を通ってメモリ54の06地に格納され、新たに次のデータである座標X=2,Y=0パケットデータが処理ブロック51に入力される。この時、処理ブロック52では、座標X=1,Y=3のパケットデータの処理が行なわれている。
【0047】
図14では、処理ブロック51の座標X=2,Y=0のパケットデータの処理が終了し、アービタ53を通ってメモリ54の07番地に格納され、新たに次のデータである座標X=2,Y=1のパケットデータが処理ブロック51に入力される。この時、処理ブロック52では、座標X=1,Y=3のパケットデータの処理が行なわれている。
【0048】
図15では、処理ブロック52の座標X=1,Y=3のパケットデータの処理が終了し、アービタ53を通ってメモリ54の08番地に格納され、新たに次のデータである座標X=2,Y=2のパケットデータが処理ブロック52に入力される。この時、処理ブロック51では、座標X=1,Y=1のパケットデータの処理が行なわれている。
【0049】
以上のようにして、メモリ54に処理データを格納すると、出力されるタイルの順番は、元のパケットの順番とは異なる順でメモリ54に格納される。
【0050】
このようなシステムにおいて、先に説明を行なったパケットフォーマットでない場合、画像データは位置情報を持たないので、処理後のデータを元のデータの並びに復元することはできない。しかしながら、パケットフォーマットの場合、各タイルの位置情報(X,Y座標データ)がヘッダ部分に付加されており、また、パケットテーブルフォーマットによって、各タイルのメモリ54の格納アドレスが管理されているため、順不同にメモリ54に入力されているパケットデータであっても、元の並び順でメモリ54から読み出して出力することができる。
【0051】
先に説明を行なったような大規模なシステムにおいて、画像データを処理する場合、容量の大きなデータを各処理ブロック間で受け渡しを行なうと、処理に時間が掛かってしまう。そのため、一般的に画像データは、圧縮符号化処理を行なった状態で受け渡しを行ない、実際に出力するにあたって、その圧縮符号化されたデータを復号化して出力している。
【0052】
FAXやPC、画像データベースなどからネットワークを通してシステム内に送られてくる画像データは、既に圧縮符号化されているものが送られてくるため、そのまま各処理ブロック内の受け渡しに使用することができるが、スキャナから入力された画像データは、圧縮符号化処理を行なった後に、メモリにその情報を格納し、その後の処理に使用する事となる。
【0053】
その時のデータの流れを図1A,1Bに従って説明すると以下のような流れとなる。
【0054】
本実施の形態では、スキャンした画像に対して圧縮符号化を行ってメモリに格納した後、そのメモリからデータを読み出して復号処理を行なった後にプリンタによって出力を行う場合を例にして説明する。
【0055】
スキャナ2070から入力された画像データは、スキャナ用画像処理部2114によって、スキャンされた画像データに補正処理が行なわれる。その後、この補正された画像データは、画像入力インターフェース2112、タイルバス2107を通ってタイル圧縮部2106へ入力される。本実施の形態では、タイル圧縮部1(2106)はJPEGによって圧縮符号化処理を行っている。このタイル圧縮部1(2106)により圧縮符号化されたデータは、画像リングインターフェース4(2102)及び画像リングインターフェース2(2148)、システムバスブリッジ2007、RAMコントローラ2124を経由してRAM2002に格納される。こうして圧縮されてRAM2002に格納されたデータは、その後システムバスブリッジ2007を経由して、プリンタ部、FAX送信、LANのデータベースなど、それぞれ目的の処理ブロックに送られる。
【0056】
その後、RAM2002に格納された画像データは、RAMコントローラ2124によって再び読み出されて、システムバスブリッジ2007を経由し、LANコントローラ2010を通してLANに出力されたり、或いは汎用バスインターフェース2142を通して、ハードディスクなどの外部記憶装置2004に蓄積される。
【0057】
本実施の形態では、RAM2002のデータをプリンタ2095によって印刷する場合で説明する。
【0058】
この場合、RAM2002のデータは、RAMコントローラ2124によって読み出され、システムバスブリッジ2007、画像リングインターフェース1(2147)及び画像リングインターフェース3(2101)を通ってタイル伸長部1(2103)に入力される。タイル伸長部1(2103)では、先にタイル圧縮部2106おいてJPEGによって圧縮された符号化データの復号を行ない、パケットフォーマットのデータとして、タイルバス2107を通り、画像出力インターフェース2113によって、パケット形式のタイルデータからプリンタ出力用のラスタデータに変換される。その後、プリンタ用画像処理部2115によって画像処理が施された後、プリンタ2095によって印刷される。
【0059】
ここでRAM2002としては、画像データを格納するために十分な容量のメモリを使用する必要があるが、実際にはコストとの兼ね合いで、それほど大きなメモリを使用できない。そこで実際は、ある程度圧縮符号化が行なわれたデータを蓄積することを前提として、それにあった容量のメモリを用意しておくことになる。
【0060】
以上のような構成において、JPEGによって圧縮する場合、できるだけ高画質のデータを後の処理ブロックにおいて取り扱うためには、できるだけ低圧縮率で圧縮符号化処理を行なう必要がある。つまり、RAM2002に格納可能なデータ容量で、なおかつ低圧縮率の圧縮符号化処理を行うのが望ましい。
【0061】
まずここで、JPEGによる圧縮方法の仕組みを簡単に説明する。
【0062】
図16は、カラー静止画符号化の国際標準方式として、JPEG(Joint Photographic Experts Group)にて提案されている符号化方式のブロック構成図である。
【0063】
図において、入力端子501より入力されたイメージ画素データは、ブロック化回路502において8×8画素のブロック状に切り出され、離散コサイン変換(DCT)回路503にてコサイン変換された後、その変換係数が量子化回路504に供給される。この量子化回路504では、量子化テーブル(Qテーブル)505より供給される量子化ステップ情報に従って変換係数の線形量子化を行ない、その量子化した値がハフマン符号化ブロック517に出力される。
【0064】
このハフマン符号化ブロック517では、以下の処理が行われる。
【0065】
量子化された変換係数の内、DC係数は予測符号化回路(DPCM)506において前ブロックのDC成分との差分(予測誤差)が取られ、それが一次元ハフマン符号化回路507に供給される。
【0066】
図17は、予測符号化回路(DPCM)506の詳細構成を示すブロック図である。
【0067】
同図において、量子化回路504にて量子化されたDC係数は、遅延回路601及び減算器602に印加される。この遅延回路601は、離散コサイン変換回路503が1ブロック、即ち、8×8画素分の演算に必要な時間だけ遅延させる回路であり、遅延回路601からは、前ブロックのDC係数が減算器602に供給される。よって、減算器602の出力としては、前ブロックとのDC係数の差分(予測誤差)が出力されることになる。(この予測符号化では、予測値として前ブロック値を用いているため、予測器は前述のごとく遅延回路にて構成される)。図16に示す一次元ハフマン符号化回路507は、予測符号化回路506より供給された予測誤差信号を、DCハフマンコードテーブル508に従って可変長符号化し、多重化回路515にDCハフマンコードを供給する。
【0068】
一方、量子化回路504にて量子化されたAC係数(DC係数以外の係数)は、スキャン変換回路509にて、低次の係数より順にジグザグスキャンされて有意係数検出回路510に供給される。このジグザグスキャンでは、図18に示すような順番(0から63の順)に、2次元DTCの結果がスキャンされ、1次元の連続データに変換される。
【0069】
有意係数検出回路510は、量子化されたAC係数が「0」かどうかを判定し、「0」の場合は、ラン長カウンタ511にカウントアップ信号を供給し、カウンタの値を+1する。しかしAC係数が「0」以外であればリセット信号をラン長カウンタ511に供給してカウンタ511の値を「0」にリセットすると共に、グループ化回路512にて、図19に示すように、係数をグループ番号SSSSと、付加ビットとに分割する。そして、グループ番号SSSSを2次元ハフマン符号化回路513に供給し、付加ビットを多重化回路515に供給する。
【0070】
尚、図19において、EOBは、1ブロック(8×8画素)の符号化を終えたという区切り符号であり、R16は、「0」のランが16以上の場合に使用する符号である。ラン長カウンタ511は「0」のラン長をカウントする回路で、「0」以外の有意係数間の「0」の数NNNNを2次元ハフマン符号化回路513に供給する。この2次元ハフマン符号化回路513は、供給された「0」のラン長NNNNと有意係数のグループ番号SSSSとをACハフマンコードテーブル514に従って可変長符号化し、多重化回路515にACハフマンコードを供給する。
【0071】
多重化回路515は、1ブロック(8×8の入力画素)分のDCハフマンコード、ACハフマンコード及び付加ビットを入力してそれらを多重化し、結果的に出力端子516より圧縮した画像データとして出力する。従って、出力端子516より出力される圧縮データをメモリに記憶し、読出し時に、逆操作によって伸長することにより、メモリ容量の削減が可能となる。
【0072】
尚、このようなJPEGによって符号化されたデータの復号は、この符号化処理の全く逆の流れによって行われる。
【0073】
図20は、この復号処理の流れを説明するブロック図である。
【0074】
図に示すように、入力端子901より入力されたイメージ画素データは、ハフマン復号部902によって、ハフマン符号化されたデータを復号する。逆量子化部903は、符号化用に作成したQテーブルを基にした復号用のQテーブル904を使用して逆量子化を行う。マッピング部905は、DCT係数のジグザグスキャンによって1次元の連続データに変換されたDCT係数を2次元にマッピングし直す。そして逆DCT部906で8×8のエリアごとに逆離散コサイン変換を掛けることにより復号し、出力端子907から、その復号したデータを出力する。
【0075】
上記圧縮符号化データ処理を行ない、容量の限られたメモリに画像データを格納するために、一般的には下記のような処理を行なっている。本実施の形態では、RAM2002のメモリ容量が、元の画像データの1/16の場合で説明する。
【0076】
最初、タイル圧縮1(2106)のJPEG処理において、予想圧縮率が1/8となるようなQテーブルを使用して圧縮する。これでは、RAM2002のメモリ容量よりも、圧縮符号化処理後の符号化データ量の方が多くなる。しかし、JPEG処理では、画像データによって予想圧縮率より高圧縮率で圧縮されることがあるので、この圧縮処理で符号化データが元データの1/16以下まで圧縮されていれば、そのままRAM2002に格納されることとなる。
【0077】
ここで、例えば圧縮符号化後のデータがRAM2002のメモリ容量を越えてしまった場合、次は予想圧縮率が1/16のQテーブルを使用して圧縮を行なう。この圧縮符号化処理によって、圧縮符号化後のデータがRAM2002の容量以下まで圧縮された場合、そのデータをRAM2002に格納する。しかし、画像データによっては予想圧縮率に満たない圧縮率となってしまう場合があるので、このような時には、RAM2002に用意されているメモリ容量では格納しきれないことになる。従って、このような場合は、予想圧縮率が1/32のQテーブルを使用して圧縮を行なう。このような圧縮符号化処理によって、圧縮符号化後のデータがRAM2002のメモリ容量以下まで圧縮された場合、そのデータをRAM2002に格納する。
【0078】
以上のように、RAM2002のメモリ容量に収まるような圧縮符号化処理が行なわれるまで、次々と圧縮率の高いQテーブルに切り替えて圧縮処理を行なうことにより、RAM2002に格納できるデータ容量となり、かつ低圧縮率の圧縮符号化処理を行なうことができる。
【0079】
しかし、このような方法によって複数回圧縮を行なうためには、幾つかの問題が発生する。第1点は、複数のQテーブルを用意しなくてはならないことである。これによってQテーブルを格納しておくメモリの増大を招く事となる。また、復号を行なう際も、符号化を行なった時と同じQテーブルを使用する必要があるため、タイル伸長部2103などの復号化処理を行なう部分でも、複数のQテーブルが必要となり、これによるQテーブルを格納しておくメモリの増大を招く事となる。
【0080】
第2点目は、予想圧縮率を変更して圧縮処理を行なう際に、スキャナ2070による原稿画像の再スキャンが必要となることである。スキャン動作を繰り返し行なうため、ジョブの処理にかかる時間の増大を招く事となる。また、1枚ずつスキャンを行なう場合は、スキャンのし直しも可能であるが、オートシートフィーダなどにより、連続してスキャンを行ない、次々と原稿を変えてスキャンを行なっている場合には、リアルタイムで処理を進めていかなくてはならないため、スキャンのし直しと言う動作はできない。このようなスキャンのし直しを行なおうとする場合には、もう一度原稿をセットし直す事となり、使用者の手を煩わせることになる。
【0081】
以上のような問題を解決するために、以下のような処理方法がある。
【0082】
本実施の形態では、画像データは前述したタイル画像(パケット)フォーマットのデータとして入出力が行なわれるものとする。具体的には、図4のように画像データを32×32(画素)を1単位としたタイルに分割し、X座標、Y座標を定め、ヘッダ部分にその座標データを入れておく。画像データ部分には、1タイル分、つまり1024画素分の画像データが入れられることとなる。又この画像データ部分には、スキャナ2070から入力された場合にはRGBデータが、そのRGBデータに圧縮処理を行なった場合には、圧縮後の符号化データが入れられる。(図5)
また、タイル圧縮部では、複数の符号化回路と復号化回路を使用し、RAM2002のメモリ容量に収まるようにJPEGの圧縮をリアルタイムで行ない出力をする。また、複数のQテーブルを持つ代わりにビットシフト(右方向のビットシフトを意味する)することにより、Qテーブル格納用のメモリ容量の削減も実現できる。
【0083】
次に、JPEG圧縮処理において、量子化データをビットシフト(以下特に断わらない限りは右方向のビットシフトである)器によって、ビットシフトさせる効果に関して説明する。
【0084】
図21は、ビットシフト器を伴ったデータ圧縮システムの構成を示す図で、図16と共通する部分は同じ記号を使用して詳細な説明は省く。
【0085】
この説明に使用するQテーブル505は、予想圧縮率が1/8となるQテーブルである。また、ビットシフト器1001では、CPU2001によりビットシフトを行わない設定に、ビットシフト器1002ではCPU2001により、1ビットシフト(1/2演算)を行う設定にしておく。このような設定により、ある画像データの量子化を行なった結果、図22の左側に示すような量子化結果になった場合、ビットシフト器1001では、ビットシフトを行なわない設定になっているので、量子化結果をそのままハフマン符号化による圧縮符号化を行ない、図22の右側に示したように106ビットの圧縮データとなる。
【0086】
またビットシフト器1002では、1ビットシフトを行うように設定されているので、ビットシフト器1002から出力される量子化結果は、図23の左側に示すような値となる。図23に示すように、量子化データで「1」及び「−1」であった部分は、ビットシフトすることによって「0」となる。そのため、量子化データをジグザグスキャンし、その並びを符号化する際に「0」が連続する部分が多くなる。その結果。このデータをハフマン符号化による圧縮符号化を行なうと、図23の右側に示したように63ビットの圧縮データとなる。
【0087】
この方法によると、ビットシフトを行なう前に比べて、圧縮後のデータは正確に1/2にはならないが、標準的な画像を処理した場合、ほぼ1/2のデータ量にまで圧縮できる。
【0088】
図24は、本実施の形態に係るタイル圧縮部1(2106)の内部で使用する前記問題点を解決するためのJPEG圧縮を実現するためのJPEG圧縮部の構成を示すブロック図である。
【0089】
図において、メモリ1312は、図1AにおけるRAM2002に相当し、画像リングインターフェース4(2102)及び、画像リングインターフェース2(2148)、システムバスブリッジ2007、RAMコントローラ2124は、この図においては、省略している。
【0090】
図24において、入力端子1301は、タイルバスインターフェース2107からの画像データを入力するインターフェース部分である。この入力端子1301より入力された画素データは、ブロック化回路1302において8×8画素のブロック状に切り出され、離散コサイン変換(DCT)回路1303にてコサイン変換された後、その変換係数が量子化回路1304に供給される。この量子化回路1304では、量子化テーブル(Qテーブル)1305より供給される量子化ステップ情報に従って変換係数の線形量子化を行なう。こうして量子化回路1304より出力された量子化データは、ビットシフト器1306及びビットシフト器1307へ入力される。ここでは、8×8の量子化データを、ビットシフトにより1/2や、1/4,1/8にする機能を持っている。尚、ここで何ビットシフトを行なうかといった情報は、CPU2001(図1A)によって制御されるものとする。また、ビットシフト器1306のビットシフト数は、ビットシフト器1307のビットシフト数よりも1ビット分少ない値とする。ビットシフト器1306及びビットシフト器1307から出力された量子化データはそれぞれ、ハフマン符号化部1308、ハフマン符号化部1309へ入力され、さきに詳細に説明を行なった符号化方法に従って圧縮符号化処理が行なわれる。
【0091】
ハフマン符号化部1308によって符号化されたデータはアービタ1311に入力されメモリ1312に格納される。また、ハフマン符号化部1309から出力された符号化データは、メモリ1310へ入力される。このメモリ1310のデータの入出力は、CPU2001によって制御されるものとする。メモリ1310から出力されたデータは、アービタ1311を通ってメモリ1312に格納されるとともに、ハフマン復号化部1313によって、元の量子化テーブルに復号される。こうして復号されたデータは、ビットシフト器1314によって1ビットシフト(1/2)される。ビットシフト器1314によって1ビットシフトされた量子化結果は、ハフマン符号化部1315によって再び符号化されメモリ1310へと入力される。
【0092】
以上の構成からなるタイル圧縮部1(2106)によって、メモリ1312に蓄積可能な最も小さな圧縮率による圧縮処理をリアルタイムで行なうための方法を以下に説明する。
【0093】
図25から図32は、図24の構成に基づくメモリ1312に蓄積可能な最も小さな圧縮率による圧縮処理をリアルタイムで行なうための方法を説明する図である。本実施の形態の前提として、Qテーブル1305は、予想圧縮率が1/8のものを使用するものとする。また、メモリ1312は、元の画像データの1/16の容量まで蓄積できるメモリ容量を持っているものとする。尚、これら図中の実線で表わされている部分は、データが流れている経路を表わし、点線で表わされている部分は、その図の状態の時にはデータが流れていない経路を示している。また、これら図面において図24と共通する部分は同じ記号で示し、その説明を省略する。
【0094】
まず処理開始時には、図25のように、ビットシフト器1306は、0ビットシフト(スルー)の設定を行なう。また、ビットシフト器1307は、1ビットシフト(1/2)の設定を行なう。以上のような設定を行ない、入力画像データの圧縮符号化処理を行なうと、ハフマン符号化部1308からは、予想圧縮率1/8によって圧縮された画像データが出力され、メモリ1312に蓄積される。また、ハフマン符号化1309からは、予想圧縮率1/16によって圧縮された画像データが出力され、メモリ1310に蓄積される。ここではメモリ1310からデータの出力は行なわない。
【0095】
このような設定で処理を行なった時、圧縮率が足らずに図26のように、メモリ1312の容量が一杯になってしまった場合は、メモリ1312にリセットが掛かり、それまでメモリ1312に蓄積された全データをクリアする。メモリ1312がクリアされた後、図27のように、ビットシフト器1306は、1ビットシフト(1/2)に設定される。また、ビットシフト器1307は、2ビットシフト(1/4)に設定される。そして、メモリ1310から、今まで蓄積されていた予想圧縮率1/16によって圧縮符号化された画像データの先頭から、リセットが掛けられる前までのデータが出力され、アービタ1311を通してメモリ1312に蓄積される。メモリ1310から出力されたデータが蓄積されていたメモリ1310のエリアはリセットされ、次のデータが入力された時の蓄積部分として使用される。
【0096】
また、ハフマン符号化部1308からは、リセットが掛けられた後に、入力端子1301から入力され、量子化され、ビットシフト器1306により1ビットシフトが行なわれたデータが、ハフマン符号化され、予想圧縮率1/16によって圧縮された画像データとして出力されてメモリ1312に蓄積される。このメモリ1312には、メモリ1310から入力される予想圧縮率1/16によって圧縮された先頭からのデータと、ハフマン符号化部1308から入力される予想圧縮率1/16によって圧縮された途中データの両方が混ざった形で入力されるが、前述したように、パケットフォーマットの形で、位置情報はパケットテーブルによって管理されているため、後にメモリ1312からデータの出力を行なう時には、スキャナ2070から入力を行なった順番で、データの出力を行なえるようになっている。またこの時、ハフマン符号化部1309からは、予想圧縮率1/32によって圧縮された画像データが出力され、メモリ1310の空いているエリアに蓄積される。そしてメモリ1310から出力されたデータは、メモリ1312に入力されると同時に、ハフマン復号化部1313により復号処理が行なわれ量子化データに戻される。その量子化データは、次のビットシフト器1314によって1ビットシフト(1/2)される。その後、ハフマン符号化部1315によって再び符号化され、予想圧縮率1/32によって圧縮された符号化データとしてメモリ1310に蓄積される。
【0097】
つまり、メモリ1310には、ハフマン符号化部1315から入力される予想圧縮率1/32によって圧縮された先頭からのデータと、ハフマン符号化部1309から入力される予想圧縮率1/32によって圧縮された途中データの両方が混ざった形で入力されるが、先に説明を行なったように、パケットフォーマットの形で位置情報はパケットテーブルによって管理されているため、後にメモリ1312からデータの出力を行なう時には、スキャナ2070から入力を行なった順番でデータを出力することができる。
【0098】
そして図28に示すように、メモリ1310内に蓄積されていた予想圧縮率1/16によって圧縮されていたデータが全てメモリ1312に出力された時点で、メモリ1310からのデータの出力が停止され、ハフマン符号化部1308からのデータのみがメモリ1312に入力されて格納される。尚、この間もメモリ1312には、ハフマン符号化部1309からのデータが蓄積されている。その後、この処理を続けて、予想圧縮率1/16によって圧縮されたデータがメモリ1312に全て蓄積された場合、圧縮処理は終了となる。
【0099】
しかし、圧縮符号化を行なう画像によっては、図29のように、予想していた1/16の圧縮率を満たさずに、メモリ1312に蓄積しきれない場合もある。このように圧縮率が足らずにメモリ1312の容量が一杯になってしまった場合は、メモリ1312にリセットが掛かり、そのメモリ1312に蓄積されていたデータがクリアされる。こうしてメモリ1312がクリアされた後は、図30に示すように、ビットシフト器1306は2ビットシフト(1/4)に設定される。また、ビットシフト器1307は3ビットシフト(1/8)に設定される。そしてメモリ1310から、今まで蓄積されていた予想圧縮率1/32によって圧縮符号化された画像データの先頭から、今回リセットが掛けられる前までのデータが出力され、アービタ1311を通してメモリ1312に蓄積される。メモリ1310から出力を行なったデータの蓄積されていた部分はリセットされ、次のデータが入力された時の蓄積部分として使用される。
【0100】
また、ハフマン符号化部1308からは、リセットが掛けられた後に、入力端子1301から入力され量子化されて、ビットシフト器1306で2ビットシフトされたデータがハフマン符号化され、予想圧縮率1/32によって圧縮された画像データとして出力され、メモリ1312に蓄積される。メモリ1312には、メモリ1310から入力される予想圧縮率1/32によって圧縮された先頭からのデータと、ハフマン符号化部1308から入力される予想圧縮率1/32によって圧縮された途中データの両方が混ざった形で入力されるが、前述したように、パケットフォーマットの形で、各パケットの位置情報がパケットテーブルによって管理されているため、後にメモリ1312からデータの出力を行なう時には、スキャナ2070から入力を行なった順番でデータの出力を行なえる。またこの時、ハフマン符号化部1309からは、予想圧縮率1/64によって圧縮された画像データが出力されてメモリ1310に蓄積される。このメモリ1310から出力されたデータは、メモリ1312に入力されると同時にハフマン復号化部1313に入力されて復号処理が行なわれ量子化データに戻される。その量子化データは、ビットシフト器1314によって1ビットシフト(1/2)された後、ハフマン符号化部1315によって再び符号化され、約1/64の符号化データとしてメモリ1310に蓄積される。こうしてメモリ1310には、ハフマン符号化部1315から入力される予想圧縮率1/64によって圧縮された先頭からのデータと、ハフマン符号化部1309から入力される予想圧縮率1/64によって圧縮された途中データの両方が混ざった形で入力される。
【0101】
次に図31のように、メモリ1310に蓄積されて予想圧縮率1/32によって圧縮されていたデータが全てメモリ1312に出力された時点で、メモリ1310からのデータの出力が停止され、ハフマン符号化部1308からのデータのみがメモリ1312に入力される。また、この間もメモリ1310には、ハフマン符号化部1309からのデータが蓄積されている。その後、この処理を続けて、予想圧縮率1/32によって圧縮されたデータがメモリ1312に全て蓄積された場合(図32)に、この圧縮処理は終了する。
【0102】
次に図33をもとに、タイル圧縮部2106の内部構成を説明する。
【0103】
1501はデータ入力インターフェースで、タイルバス2107からのパケット化されたデータを入力する。1502はヘッダ情報解析部で、パケットデータのヘッダ部分の情報を読み取り、ヘッダ情報として、ヘッダ情報変更部1505に出力する。データ部分の情報はJPEG圧縮部1503に入力され、先に詳細な説明を行なった方法により、圧縮符号化処理が行なわれる。こうして圧縮符号化されたデータはデータ出力インターフェース1508に出力されるとともに、カウンタ1504に入力される。このカウンタ1504は、圧縮後のデータがどれだけのデータ量になったかをカウントし、その情報をデータサイズとしてヘッダ情報変更部1507及び加算器1505に出力する。加算器1505は、その圧縮後のデータの加算を行ない、その加算結果を比較器1506へ出力する。この時、ヘッダ部分のデータ量も加味した上で加算を行なうものとする。この加算器1505からの加算結果をもとに比較器1506は、その加算結果がRAM2002の容量を越える時に、それを伝える信号をJPEG圧縮部1503、ヘッダ情報変更部1507、カウンタ1509に出力する。またこの時同時に、加算器1505の値もクリアする。
【0104】
この容量オーバを示す信号を受けたJPEG圧縮部1503は、現時点の圧縮率よりも圧縮率を上げた圧縮データを生成して出力するための制御に切り替える。またカウンタ1509は、容量オーバーの信号が何回出力されたかをカウントし、その計数値をレジスタなどに保持しておく。ヘッダ情報変更部1507は、パケットデータのヘッダ部分にあるデータサイズ情報を圧縮後のサイズに変更するとともに、圧縮フラグを書き換えて圧縮後のデータ表示とする。また比較器1506からの比較結果を受けて、データの加算結果がRAM2002の容量を越えた場合には、ヘッダ部分のRam Rstフラグ3022にその情報を載せて出力用ヘッダ情報とする。こうして内容が変更されたヘッダ情報は、データ出力インターフェース1508に入力され、圧縮符号化後のデータのヘッダとして付加され、パケットデータとして画像リングインターフェース4(2102)へ出力される。
【0105】
図34は、本実施の形態に係るRAMコントローラ2124の構成を表わしたブロック図である。
【0106】
1601はSSBインターフェース部で、システムバスブリッジからのパケットデータの入力及びシステムバスブリッジへのパケットデータの出力を行う。1602はヘッダ情報解析部で、入力されたパケットデータのヘッダ部分を読み取って必要な情報の解析を行う。また出力を行うパケットデータのヘッダ部分の情報の修正を行う場合の書き換えもこの部分で行う。1603はパケットテーブル生成部で、ヘッダ情報解析部1602からヘッダ情報として、XY座標情報とデータサイズを入力し、それを基にパケットデータテーブルを生成する。またヘッダ情報として、メモリリセットフラグも入力され、もしこのフラグに「1」が立っていた場合には、RAM2002の内容をリセットするとともに、パケットデータテーブルのリセットを行なう。1604はRAMインターフェースで、パケットテーブル生成部1603で作られたパケットテーブルに従って、アドレスやRAM制御信号を生成してRAM2002の制御を行なう。
【0107】
以上説明した方法により、RAM2002に格納されている圧縮データがRAM2002のメモリ容量を越えてしまうこと検知し、システムのコントロールを行うことが可能となる。
【0108】
次に図35を参照して、符号化されたデータを印刷する際に、JPEG圧縮データを復号するタイル伸長部2103の内部構成を説明する。
【0109】
1701はデータ入力インターフェースで、画像リングインターフェース3(2101)からのパケット化されたデータを入力する。1702はヘッダ情報解析部で、パケットデータのヘッダ部分の情報を読み取り、ヘッダ情報としてヘッダ情報変更部1705に出力する。またデータ部分の情報は、JPEG伸長部1703に入力され、前述したようにしてJPEG復号処理が行なわれる。こうして復号されたデータは、データ出力インターフェース1706に出力されるとともに、カウンタ1704に入力される。このカウンタ1704は、圧縮後のデータがどれだけのデータ量になったかをカウントし、そのカウント情報をデータサイズとしてヘッダ情報変更部1705へ出力する。ヘッダ情報変更部1705は、パケットデータのヘッダ部分にあるデータサイズ情報を、伸長後のサイズに変更するとともに、圧縮フラグの書き換えを行ない、伸長後の画像データとする。こうして内容が変更されたヘッダ情報は、データ出力インターフェース1706に入力され、復号後の画像データのヘッダとして付加され、パケットデータとしてタイルバス2107へ出力される。
【0110】
JPEG圧縮データの伸長を行なう場合、圧縮を行なった際に使用したQテーブルを基に復号用のQテーブルを用意する必要がある。通常は圧縮時に使用しているQテーブルは1つに決まっていて、それに対応する復号時のQテーブルを1つ用意しておけば圧縮及び復号ができる。しかし、本実施の形態におけるQテーブルは、1/8の圧縮率となるようなQテーブルを1/2nしたものを使用していて、nの値はJPEG圧縮時にRAM2002の容量に応じて変化するので、その変化に応じて、複数のQテーブルを使い分ける必要がある。
【0111】
そこで本実施の形態では、タイル圧縮部2106においてRamRetフラグが「1」となった回数をタイル圧縮部2106内のカウント1509(図33)によってカウントし、nがいくつであるかを認識しておき、タイル圧縮部2106の内部のレジスタに記憶しておく。そしてRAM2002から出力されたJPEG圧縮データがタイル伸長部2103にて伸長される時に、その情報を読み出すことによって復号用のQテーブルを準備しることができる。つまり、1度もRamRetフラグが「1」とならなかった場合には1/8に対応したQテーブルを、1度RamRetフラグが「1」となった場合には1/16に対応したQテーブルを、2度RamRetフラグが「1」となった場合には1/32に対応したQテーブルを、それぞれ用意してJPEG復号を行なう。
【0112】
以上の説明に基づいて、本実施の形態に係る画像処理の動作を図36のフローチャートを参照して説明する。
【0113】
まずステップS101で、スキャナ2070によって原稿の読み取りスキャンを行ない、スキャンデータを入力する。次にステップS102に進み、タイル圧縮部1(2106)のRamRstフラグに「1」が立つ回数をカウントするカウンタ1509(図33)の値を「0」にリセットする。次にステップS103に進み、タイル圧縮部2106のJPEG圧縮部6003によって画像データの圧縮処理を行なう。そしてステップS104で、このタイル圧縮部2106による処理によって、入力画像データを圧縮した後のデータが、RAM2002のメモリ容量を越えているか否か判断する。ここでもしRAM2002のメモリ容量を越えてしまうと判断した時にはステップS105に進み、カウンタ1509の値をカウントアップし、ステップS106で圧縮率を変更した後、より高圧縮率で圧縮されたJPEGデータを生成する。
【0114】
こうして圧縮率を上げていき、RAM2002に全データを格納できるまで、即ち、ステップS104の判定がNOになるまで前記処理を繰り返し、全ての画像データを格納できるようになるとステップS107に進み、RAM2002にその圧縮したデータを格納する。次にステップS108に進み、入力画像データをプリントするために、RAM2002からJPEG圧縮データを読み出す。次にステップS109で、カウンタ1509の値を取得し、その値を基にステップS110で、タイル伸長部1(2103)でJPEG復号処理を行なうためのQテーブルを設定する。そしてステップS111に進み、タイル伸長部1(2013)によってJPEG圧縮データの復号処理を行なう。次にステップS112に進み、プリンタ用画像処理部2115によって、所定の画像処理を施した後、その処理済みの画像データをプリンタ2095に出力して印刷する。
【0115】
以上述べた処理によって、JPEGによる圧縮が行なわれたデータがメモリ容量を越えた場合にリアルタイムで検知し、その画像データを更に高い圧縮率で圧縮してメモリ容量内に収まるデータ量となるようにシステムの処理を切り替えることができる。また圧縮を行なった時に使用したQテーブルに対応したQテーブルを、復号時に的確に選択できることにより、その圧縮データの復号処理を行なうことができる。
【0116】
[実施の形態2]
前述の実施の形態1では、タイル圧縮部1(2106)のカウンタ1509によって、RamRstフラグが「1」となった回数をカウントし、その計数値に基づいて復号時のQテーブルの設定を行なっていた。
【0117】
これに対し本実施の形態2では、RAMコントローラ2124にカウンタを持ち、これによりRamRstフラグが「1」となった回数をカウントし復号する。また、復号を行なう際には、複数のQテーブルを用意することなく、符号化時に何回RAM2002にリセットが掛かったかによって、それに合わせた復号処理を行なう。
【0118】
図37は、本発明の実施の形態2に係るタイル圧縮部1(2106)の構成を示すブロック図である。ここでは図33で説明した前述の実施の形態1におけるタイル圧縮部1(2106)と同様な部分は同じ記号で示している。ここでの特徴は、RamRstフラグが「1」となる回数をカウントするカウンタ1509が無い事である。
【0119】
図において、1501はデータ入力インターフェースで、タイルバス2107からのパケット化されたデータを入力する。1502はヘッダ情報解析部で、パケットデータのヘッダ部分の情報を読み取り、ヘッダ情報として、ヘッダ情報変更部1505に出力する。またデータ部分の情報は、JPEG圧縮部1503に入力され、前述の方法により圧縮符号化処理が行なわれる。こうして圧縮符号化されたデータは、データ出力インターフェース1508に出力されるとともに、カウンタ1504に入力される。このカウンタ1504は、圧縮後のデータがどれだけのデータ量になったかをカウントし、その情報をデータサイズとしてヘッダ情報変更部1507及び加算器1505へ出力している。加算器1505は、圧縮後のデータの加算を行ない、その加算結果を比較器1506へ出力する。この時、ヘッダ部分のデータ量も加味した上で加算を行なう。この加算器1505からの加算結果をもとに比較器1506は、その加算結果がRAM2002のメモリ容量を越える時に、それを伝える信号をJPEG圧縮部1503、ヘッダ情報変更部1507に出力する。また、この時同時に、加算器1505の値もクリアする。この容量オーバーの信号を受けたJPEG圧縮部1503は、圧縮率を上げたデータを生成し、出力するために制御の切り替えが行なわれる。ヘッダ情報変更部1507は、パケットデータのヘッダ部分にあるデータサイズ情報を、圧縮後のサイズに変更するとともに圧縮フラグの書き換えを行い、圧縮後のデータ表示とする。また比較器1506からの比較結果を受けて、データの加算結果がRAM2002のメモリ容量を越えた場合には、ヘッダ部分のRam Rstフラグ3022にその情報を載せて出力用ヘッダ情報とする。こうして内容が変更されたヘッダ情報は、データ出力インターフェース1508に入力され、圧縮符号化後のデータのヘッダとして付加され、パケットデータとして画像リングインターフェース4(2102)へ出力される。
【0120】
図38は、実施の形態2に係るRAMコントローラ2124の内部構成を示したブロック図である。
【0121】
5101はSSBインターフェース部で、システムバスブリッジからのパケットデータの入力及び、システムバスブリッジへのパケットデータの出力を行なう。5102はヘッダ情報解析部で、入力されたパケットデータのヘッダ部分を読み取り、必要な情報の解析を行なう。また出力を行なうパケットデータのヘッダ部分の情報を修正する場合の書き換えもこの部分で行なう。また、ヘッダ情報解析部5102からは、Ram Rstフラグ3022の値が出力されていて、カウンタ5105へとつながれている。カウンタ5105では、このRam Rstフラグに「1」が立った回数をカウントし、レジスタなどに保持しておく。5103はパケットテーブル生成部で、ヘッダ情報解析部5102からヘッダ情報として、XY座標情報とデータサイズを入力し、それをもとにパケットデータテーブルを生成する。また、ヘッダ情報として、メモリリセットフラグも入力され、もし「1」が立っていた場合には、RAM2002をリセットするとともに、パケットデータテーブルをリセットする。804はRAMインターフェースで、パケットテーブル生成部803で作られたパケットテーブルに従ってアドレスやRAM制御信号を生成してRAM2002を制御する。RAM2002から出力されたJPEG圧縮データがタイル伸長部1(2103)にて処理される時には、カウンタ5105の情報を読み出すことによって、JPEG符号化が行われた際に、何回ビットシフトが行われたかを検知することができる。つまり、1度もRam Retフラグ3022が「1」とならなかった場合には、1/8に対応したQテーブルを使用してビットシフトが行われていないことになる。また1度だけRamRetフラグ3022が「1」となった場合には、1/8に対応したQテーブルを使用して1回ビットシフトを行なったことになる。更に2度RamRetフラグが「1」となった場合には、1/8に対応したQテーブルを使用して2回ビットシフトを行なったことになる。この情報を基に、タイル伸長部2103のJPEG伸長部1503は、JPEGデータの復号処理を行なう。
【0122】
図39は、実施の形態2に係るタイル伸長部1(2113)のJPEG伸長部の構成を示すブロック図である。
【0123】
入力端子5201より入力された画素データは、ハフマン復号化部5202によって、ハフマン符号化されたデータを復号する。ビットシフト部5203は、JPEG符号化が行われた際に、何回ビットシフトが行われたかを示す情報をRAMコントローラ2124から入力し、0回の場合はそのままの値を逆量子化部5204へ出力し、1回の場合は1ビットシフトを行ってデータを2倍の値にし、2回の場合は2ビットシフトを行なって4倍の値にし、3回の場合は3ビットシフトを行ってデータを8倍の値にするように、それぞれ左方向へのビットシフトを行なう。逆量子化部5204は、符号化用に使用した(本実施の形態では1/8)予想圧縮率のQテーブルをもとにした復号化用のQテーブル5205を使用して逆量子化を行なう。マッピング部5206は、DCT係数のジグザグスキャンによって1次元の連続データに変換されたDCT係数を、2次元にマッピングし直す。逆DCT部5207は、8×8のエリアごとに逆離散コサイン変換を掛けることにより復号し、出力端子5208から復号したデータを出力する。
【0124】
以上述べた処理によって、JPEGによる圧縮が行なわれたデータが、メモリ容量を越えて格納されようとした場合、リアルタイムで検知を行ない、更に高い圧縮率で圧縮を行ないメモリ内に収まるデータ量となるように、システムの処理を切り替えることが可能となった。更に、RAMコントローラのカウンタによってJPEG符号化時のビットシフトの回数をカウントし、そのカウントした情報をJPEG復号化の際のビットシフトの回数とすることによって、複数のQテーブルを持つことなく、JPEG復号化を行うことができる。
【0125】
[実施の形態3]
前述の実施の形態1では、タイル圧縮部1(2106)カウンタ1509によって、RamRstフラグ3022が「1」となる回数をカウントし、その値をタイル圧縮部1(2106)のレジスタなどに記憶することによって、後の復号の際のQテーブルの設定を行なっていた。
【0126】
これに対して本発明の実施の形態3では、タイル圧縮部1(2106)のカウンタ1509によって、RamRstフラグ3022が「1」となる回数をカウントし、その値をパケットデータのヘッダ部分に書き込んでおく。そして復号する際には、ヘッダ部分のカウント数を基にして処理する。また復号する際には、複数のQテーブルを用意することなく、符号化時に何回RAM2002にリセットが掛かったかによって、それに合わせた復号処理を行うことができる。
【0127】
図40は、本発明の実施の形態3に係るタイル圧縮部1(2106)の構成を示すブロック図で、前述の図33のタイル圧縮部1(2106)の構成と共通する部分は同じ記号で示している。この実施の形態3の特徴は、Ram Rstフラグ3022が「1」となる回数をカウントするカウンタ1509によるカウント数がヘッダ情報変更部1507に入力されていることである。これによって出力するパケットデータのヘッダ情報に、そのデータが圧縮されるときに何回RAM2002にリセットが行われたか書き込む。
【0128】
1501はデータ入力インターフェースで、タイルバス2107からのパケット化されたデータを入力する。1502はヘッダ情報解析部で、パケットデータのヘッダ部分の情報を読み取り、ヘッダ情報として、ヘッダ情報変更部1505に出力する。またデータ部分の情報は、JPEG圧縮部1503に入力され、前述の方法により圧縮符号化処理が行なわれる。こうして圧縮符号化されたデータは、データ出力インターフェース1508に出力されるとともに、カウンタ1504に入力される。このカウンタ1504では圧縮後のデータがどれだけのデータ量になったかをカウントし、その情報をデータサイズとしてヘッダ情報変更部1507及び加算器1505へ出力する。加算器1505は圧縮後のデータの加算を行い、その加算結果を比較器1506へ出力する。この時、ヘッダ部分のデータ量も加味した上で加算を行なうものとする。この加算器1505からの加算結果をもとに比較器1506は、その加算結果がRAM2002のメモリ容量を越える時に、それを伝える信号をJPEG圧縮部1503、ヘッダ情報変更部1507、カウンタ1509に出力する。また、この時同時に、加算器1505の値もクリアする。この容量オーバーの信号を受けたJPEG圧縮部1503は、圧縮率を上げたデータを生成して出力するために制御を切り替える。またカウンタ1509は、この容量オーバーの信号が何回出力されたかをカウントし、その値をヘッダ情報変更部1507に出力する。ヘッダ情報変更部1507は、パケットデータのヘッダ部分にあるデータサイズ情報を、圧縮後のサイズに変更するとともに、圧縮フラグの書き換えを行って圧縮後のデータ表示とする。また比較器1506からの比較結果を受けて、データの加算結果がRAM2002のメモリ容量を越えた場合には、ヘッダ部分のRam Rstフラグ3022にその情報を載せる。またカウンタ1509からのリセット回数も常にヘッダに載せて出力用ヘッダ情報とする。こうして内容が変更されたヘッダ情報は、データ出力インターフェース1508に入力され、圧縮符号化後のデータのヘッダとして付加され、パケットデータとして画像リングインターフェース2102へ出力される。
【0129】
図41は、本発明の実施の形態3に係るパケットデータのヘッダ部分の内容を示した図である。
【0130】
先の実施の形態と異なる点は、Rst Counter5401が設けられていることである。この部分にカウンタ1509から入力されるリセット回数の計数値を載せて出力しRAM2002に格納する。RAM2002から出力されたJPEG圧縮データがタイル伸長部1(2103)にて伸長処理される際に、ヘッダ部分のRst Counter5401の情報を読み出すことによってJPEG符号化が行われた際に、何回ビットシフトが行われたかを検知する。つまりRst Counter5401が「0」の場合には、1/8に対応したQテーブルを使用して1回もビットシフトを行なっていないことになる。またRst Counter5401が「1」の場合には、1/8に対応したQテーブルを使用して1回ビットシフトを行なったことになる。更に、Rst Counter5401が「2」の場合には、1/8に対応したQテーブルを使用して2回ビットシフトを行なったことになる。この情報をもとに、タイル伸長部2103内のJPEG伸長部6003は、JPEGデータを復号する。
【0131】
本実施の形態におけるJPEG圧縮データの復号は前述の実施の形態2におけるタイル伸長部1(2113)のJPEG伸長部1703の構成と同じ(図39)とする。
【0132】
入力端子5201より入力された画素データは、ハフマン復号化部5202によって復号される。ビットシフト部5203は、JPEG符号化が行われた際に、何回ビットシフトが行われたかを示す情報をヘッダ情報のRst Counter5401から入力し、0回の場合はそのままの値を逆量子化部5204へ出力する。1回の場合は1ビット左シフトを行ってデータを2倍の値にして出力する。更に、2回の場合は2ビット左シフトを行なってデータを4倍の値にし、3回の場合は3ビット左シフトを行ってデータを8倍の値にして出力する。
【0133】
逆量子化部5204は、符号化用に使用した(本実施の形態では1/8)予想圧縮率のQテーブルを基にした復号化用のQテーブル5505を使用して逆量子化する。マッピング部5206で、DCT係数のジグザグスキャンによって1次元の連続データに変換されたDCT係数を2次元にマッピングし直す。逆DCT部5207で、8×8のエリアごとに逆離散コサイン変換を掛けることにより、復号し、出力端子5208から復号したデータを出力する。
【0134】
以上述べた処理によって、JPEGによる圧縮が行なわれたデータが、メモリ容量を越えて格納されようとした場合、リアルタイムで検知を行ない、更に高い圧縮率で圧縮を行ないメモリ内に収まるデータ量となるように、システムの処理を切り替える事が可能となる。更に、ヘッダ情報のRst Counter5401によって、JPEG符号化時のビットシフトの回数をカウントし、その情報をJPEG復号化の際のビットシフトの回数とすることによって、複数のQテーブルを持つことなくJPEGの復号を行なうことが可能となった。
【0135】
[その他の実施の形態]
なお本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用しても良い。
【0136】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUまたはMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成されることは言うまでもない。
【0137】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0138】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピィディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることが出来る。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0139】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【0140】
以上説明したように本実施の形態によれば、JPEG圧縮されたデータがメモリ容量を越えて格納されようとした場合、それをリアルタイムで検知し、ビットシフトによって更に高い圧縮率で圧縮してメモリ容量に収まるデータ量となるように圧縮率を変更する。こうして圧縮されて記憶された符号化データを復号する際には、符号化時に使用されたQテーブルに対応するQテーブルを設定して復号することができる。
【0141】
尚、以上説明した本願発明の実施の形態は、以下の実施態様で表わすことができる。
【0142】
[実施態様1] 画像データを入力して符号化する画像処理装置であって、
画像データを圧縮する圧縮手段と、
前記圧縮手段により圧縮された画像データのデータ量を求めるデータ量計算手段と、
前記データ量計算手段により計算された前記データ量がメモリの容量を越えているか否かを判定する判定手段と、
前記判定手段による判定結果に応じて前記圧縮手段による圧縮率を高く設定して前記圧縮手段により前記画像データを圧縮して前記メモリに記憶するように制御する制御手段と、
前記判定手段により前記データ量が前記メモリの容量を越えたと判定された回数を計数する計数手段と、
前記計数手段による計数値に応じて前記メモリに記憶されている前記データの復号を行う復号手段とを有することを特徴とする画像処理装置。
【0143】
[実施態様2] 前記圧縮手段は、画像データを直交変換する直交変換手段と、前記直交変換手段により直交変換された係数をQテーブルに応じて量子化する量子化手段と、前記圧縮率を変更するために、前記量子化手段により量子化された係数をシフトするシフト手段と、前記シフト手段によりシフトされた係数を符号化する符号化手段とを備えることを特徴とする実施態様1に記載の画像処理装置。
【0144】
[実施態様3] 前記復号手段は、前記計数手段により計数された計数値に応じたQテーブルを設定して復号することを特徴とする実施態様2に記載の画像処理装置。
【0145】
[実施態様4] 画像データを入力して符号化する画像処理方法であって、
画像データを圧縮する圧縮工程と、
前記圧縮工程で圧縮された画像データのデータ量を求めるデータ量計算工程と、
前記データ量計算工程で計算された前記データ量がメモリの容量を越えているか否かを判定する判定工程と、
前記判定工程による判定結果に応じて前記圧縮工程での圧縮率を高く設定して前記圧縮工程で前記画像データを圧縮して前記メモリに記憶するように制御する制御工程と、
前記判定工程で前記データ量が前記メモリの容量を越えたと判定された回数を計数する計数工程と、
前記計数工程による計数値に応じて前記メモリに記憶されている前記データの復号を行う復号工程とを有することを特徴とする画像処理方法。
【0146】
[実施態様5] 前記圧縮工程では、画像データを直交変換する直交変換工程と、前記直交変換工程で直交変換された係数をQテーブルに応じて量子化する量子化工程と、前記圧縮率を変更するために、前記量子化工程で量子化された係数をシフトするシフト工程と、前記シフト工程でシフトされた係数を符号化する符号化工程とを備えることを特徴とする実施態様4に記載の画像処理方法。
【0147】
[実施態様6] 前記復号工程では、前記計数工程で計数された計数値に応じたQテーブルを設定して復号することを特徴とする実施態様5に記載の画像処理方法。
【0148】
【発明の効果】
以上説明したように本発明によれば、符号化及び復号時に使用するQテーブルを格納するためのメモリ容量の増大を防止して、最適な量に符号化された画像データをメモリに格納して復号できるという効果がある。
【図面の簡単な説明】
【図1A】、
【図1B】本発明の実施の形態に係る画像処理システム全体の構成を示すブロック図である。
【図2】本実施の形態に係るパケットデータの詳細な構成を示す図である。
【図3】本実施の形態に係るパケットテーブル内部の詳細な構成を示す図である。
【図4】画像データをタイル単位に分割する方法を示す図である。
【図5】本実施の形態に係わるパケットデータの構成を簡略的に示す図である。
【図6】、
【図7】、
【図8】、
【図9】、
【図10】、
【図11】、
【図12】、
【図13】、
【図14】、
【図15】本実施の形態に係わるパケットデータのメモリへの格納方法を簡略的に説明する図である。
【図16】一般的に行われているJPEG圧縮処理の構成を示す図である。
【図17】JPEG処理における予測符号化部の内部の詳細な処理の構成を示すブロック図である。
【図18】JPEG処理におけるジグザグスキャンを説明する図である。
【図19】JPEG処理におけるハフマン符号化を説明する図である。
【図20】一般的に行われているJPEG復号処理の構成を示す図である。
【図21】JEPG圧縮を行なう際の量子化データのビットシフトの効果を説明するためのブロックの構成を示す図である。
【図22】JEPG圧縮を行なう際の量子化データのビットシフトの効果を説明するためビットシフト無しの量子化データをハフマン符号化した結果を示す図である。
【図23】JEPG圧縮を行なう際の量子化データのビットシフトの効果を説明するため1ビットシフトの量子化データをハフマン符号化した結果を示す図である。
【図24】本実施の形態に係る画像処理システムのJPEG圧縮部の構成を示すブロック図である。
【図25】、
【図26】、
【図27】、
【図28】、
【図29】、
【図30】、
【図31】、
【図32】本実施の形態に係るJPEG圧縮データのメモリへの格納方法を簡略的に示す図である。
【図33】本発明の実施の形態に係わるタイル圧縮部の詳細な処理の構成を示すブロック図である。
【図34】本実施の形態に係わるRMAコントローラの詳細な処理の構成を示すブロック図である。
【図35】本実施の形態に係るタイル復号部の詳細な処理の構成を示すブロック図である。
【図36】本発明の実施の形態に係る画像処理システムにおける処理を説明するフローチャートである。
【図37】本発明の実施の形態2に係るタイル圧縮部の詳細な処理の構成を示すブロック図である。
【図38】本実施の形態2に係るRMAコントローラの詳細な処理の構成を示すブロック図である。
【図39】本発明の実施の形態2に係るタイル復号部のJPEG伸長部の詳細な処理の構成を示す図である。
【図40】本発明の実施の形態3に係るタイル圧縮部の詳細な処理を説明するブロック図である。
【図41】本発明の実施の形態3に係るパケットデータの詳細な構成を示す図である。
Claims (1)
- 画像データを入力して符号化する画像処理装置であって、
画像データを圧縮する圧縮手段と、
前記圧縮手段により圧縮された画像データのデータ量を求めるデータ量計算手段と、
前記データ量計算手段により計算された前記データ量がメモリの容量を越えているか否かを判定する判定手段と、
前記判定手段による判定結果に応じて前記圧縮手段による圧縮率を高く設定して前記圧縮手段により前記画像データを圧縮して前記メモリに記憶するように制御する制御手段と、
前記判定手段により前記データ量が前記メモリの容量を越えたと判定された回数を計数する計数手段と、
前記計数手段による計数値に応じて前記メモリに記憶されている前記データの復号を行う復号手段と、
を有することを特徴とする画像処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003007664A JP2004221998A (ja) | 2003-01-15 | 2003-01-15 | 画像処理装置 |
US10/754,526 US20040141655A1 (en) | 2003-01-15 | 2004-01-12 | Method and apparatus for image processing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003007664A JP2004221998A (ja) | 2003-01-15 | 2003-01-15 | 画像処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004221998A true JP2004221998A (ja) | 2004-08-05 |
Family
ID=32709129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003007664A Pending JP2004221998A (ja) | 2003-01-15 | 2003-01-15 | 画像処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20040141655A1 (ja) |
JP (1) | JP2004221998A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7940990B2 (en) | 2006-08-02 | 2011-05-10 | Sony Corporation | Image signal processing apparatus and image signal processing method |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4588360B2 (ja) * | 2004-05-18 | 2010-12-01 | パナソニック株式会社 | 動画像符号化復号化処理方法、動画像符号化復号化処理装置及び動画像双方向通信システム |
US7783781B1 (en) | 2005-08-05 | 2010-08-24 | F5 Networks, Inc. | Adaptive compression |
US8275909B1 (en) * | 2005-12-07 | 2012-09-25 | F5 Networks, Inc. | Adaptive compression |
US20070201554A1 (en) * | 2006-02-24 | 2007-08-30 | Samsung Electronics Co., Ltd. | Video transcoding method and apparatus |
KR20100079121A (ko) * | 2008-12-30 | 2010-07-08 | 주식회사 동부하이텍 | 이미지 인코더 및 이미지 인코딩 방법 |
US8593466B2 (en) * | 2010-06-08 | 2013-11-26 | Intel Corporation | Tile rendering for image processing |
US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
CN114339226B (zh) * | 2021-12-28 | 2024-02-09 | 山东云海国创云计算装备产业创新中心有限公司 | 一种提高画面的流畅度的方法、装置及介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0469835B1 (en) * | 1990-07-31 | 1998-09-30 | Canon Kabushiki Kaisha | Image processing apparatus and method |
DE69132002T2 (de) * | 1990-11-19 | 2000-08-03 | Canon Kk | Bildverarbeitungsgerät und -Verfahren |
US6427025B1 (en) * | 1992-08-14 | 2002-07-30 | Canon Kabushiki Kaisha | Image processing with selection between reversible and irreversible compression |
JP2738410B2 (ja) * | 1993-09-08 | 1998-04-08 | 富士ゼロックス株式会社 | 画像符号化復号装置 |
JP3202433B2 (ja) * | 1993-09-17 | 2001-08-27 | 株式会社リコー | 量子化装置、逆量子化装置及び画像処理装置並びに量子化方法、逆量子化方法及び画像処理方法 |
JP3566334B2 (ja) * | 1994-03-25 | 2004-09-15 | キヤノン株式会社 | 画像処理装置およびその方法 |
TW293227B (ja) * | 1994-11-24 | 1996-12-11 | Victor Company Of Japan | |
JP3862374B2 (ja) * | 1997-09-04 | 2006-12-27 | キヤノン株式会社 | 画像処理装置及び方法 |
JP3915272B2 (ja) * | 1998-10-06 | 2007-05-16 | 株式会社ニコン | 量子化方法,および量子化プログラムを記録した記録媒体 |
US6865299B1 (en) * | 1999-07-27 | 2005-03-08 | Canon Kabushiki Kaisha | Coding apparatus and method |
EP1271926B1 (en) * | 2001-06-18 | 2015-08-12 | Canon Kabushiki Kaisha | Image processing method, apparatus and computer program for compression-encoding |
US20030056146A1 (en) * | 2001-09-14 | 2003-03-20 | Freeman Tracy K. | Method for suggesting corrective action in response to resource constraint |
US7194140B2 (en) * | 2001-11-05 | 2007-03-20 | Canon Kabushiki Kaisha | Image processing apparatus and method which compresses image data of each region using a selected encoding method |
-
2003
- 2003-01-15 JP JP2003007664A patent/JP2004221998A/ja active Pending
-
2004
- 2004-01-12 US US10/754,526 patent/US20040141655A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7940990B2 (en) | 2006-08-02 | 2011-05-10 | Sony Corporation | Image signal processing apparatus and image signal processing method |
Also Published As
Publication number | Publication date |
---|---|
US20040141655A1 (en) | 2004-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7468803B2 (en) | Image processing apparatus and image processing method | |
US7499592B2 (en) | Image decoding apparatus and its control method | |
US7106911B2 (en) | Image processing apparatus and control method for inputting image data and encoding the data | |
JP4365957B2 (ja) | 画像処理方法及びその装置及び記憶媒体 | |
US20110123127A1 (en) | Image processing apparatus, control method for the same, program | |
US7130072B2 (en) | Multifunction system, image processing method, computer program and memory medium | |
JP2006080792A (ja) | 画像符号化装置及び方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体 | |
JP2000295113A (ja) | ハフマン符号化データ圧縮装置 | |
US8027546B2 (en) | Method, apparatus, and computer program for image data processing | |
JP2004221998A (ja) | 画像処理装置 | |
US7447384B2 (en) | Image processing method and apparatus | |
US6879725B2 (en) | Method, system, and program for decoding a section from compressed data | |
JP2003189109A (ja) | 画像処理装置及び方法、並びにコンピュータ・プログラム | |
US6069980A (en) | Adaptive character image generation and synthesis | |
JP2003348355A (ja) | 画像処理装置及びその制御方法 | |
JP2003078770A (ja) | 画像処理方法及びその装置 | |
JP4136573B2 (ja) | 画像処理方法、画像処理装置、プログラム及び記録媒体 | |
JP2006229688A (ja) | 画像処理装置 | |
JP2005045458A (ja) | 画像圧縮方法、画像圧縮装置 | |
JP2004328406A (ja) | 符号量制御方法及び符号化装置 | |
JPH08125818A (ja) | 画像処理装置 | |
JP3368186B2 (ja) | 画像処理装置及びその方法 | |
JP2004120135A (ja) | 画像処理装置、及び、その制御方法 | |
JP2004253906A (ja) | 伸長装置 | |
JP2003234904A (ja) | マルチファンクションシステムコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051221 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071012 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071019 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080303 |