プリントや印刷技術の発展で、印刷の分野でも気軽に高品質の印字が可能になってきている。これと共に、1つ1つの画素を構成する画像データの構成ビット数が増大する傾向にある。これら画像データは画像処理装置の内部メモリに一度蓄積されてから印字に使用されるのが通常である。
たとえば複写機を例に採ると、そのスキャナが読み取った画像データは、複写機本体の内部メモリに一度蓄積される。そして、この内部メモリから読み出した画像データを用いてプリントが行われる。デジタル複合機の場合では、原稿をスキャナで読み取る代わりに、パーソナルコンピュータ等から外部入力された画像データを内部メモリに読み込むこともできる。そして、内部メモリから読み出した画像データを用いて画像のプリントが行われる。
このような画像処理装置では、プリントが高速化したり、用紙の両面に記録を行ったり、各種の画像編集を可能にするような場合には、装置が内部メモリに何枚もの画像データを蓄積する必要がある場合が多い。しかも、前記したように画像の高品質化に伴って1枚の画像を構成する画像データの量は膨大となっている。このため、内部メモリに何らの削減処理を行うことなく画像データを蓄積すると、必要なメモリ容量を確保するためには装置の価格が大幅に上昇せざるを得ない。そこで、一般にこのような画素処理装置では、画像圧縮技術を用いて内部メモリに画像データを蓄積するようにしており、印字の際にこの圧縮された画像データを伸長している。
内部メモリに蓄積するために行う画像データの圧縮技術は各種存在している。たとえば、2値画像データを対象としたMMR(Modified Modified Read)方式や、JBIG(Joint Bi-level Image experts Group)方式といった標準化された符号化技術が存在している。また、カラー画像やグレー画像といった多値画像データを対象としたJPEG(Joint Photographic Experts Group)方式等の標準化された、あるいは独自に開発された各種の多値画像符号化技術も存在している。
後者の多値画像データは、2値画像データと比較すると、圧縮前の画像データの量自体が遥かに大きくなっている。このため、JPEG方式等の各種の符号化方式を用いて圧縮しても、圧縮によるデータ量の低減効果をそれほど期待することはできない。一般に、画質と圧縮効率はトレードオフの関係にあり、画質を高品位に維持しようとすると圧縮性能が限定されてしまい、画像データを大きく圧縮することができない。特に、パーソナルコンピュータから取り込む画像データは、デジタルカメラで撮影した人物写真や、ウェブサイトから取得した風景画のように高品位な画像品質が求められる場合が多い。このように、カラー画像など多値画像データを取り扱う画像処理装置では、必然的に大容量のメモリが必要となってしまう。
そこで、多値画像を重み付けされた複数のビットプレーンに分割して、それぞれを2値画像として表わし、これらの相関をとることで画像データの圧縮率を向上することが提案されている(たとえば特許文献1参照)。
図12は、この第1の提案による画像処理装置の構成の要部を表わしたものである。この画像処理装置500は、多値の画像データ501を入力して複数のビットプレーンに分離するビットプレーン分離器502を備えている。ビットプレーン分離器502は分離用テーブル503を用いて多値の画像データ501を複数のビットプレーン504に分離する。分離後のビットプレーン504は、圧縮前処理器505に入力されて、ビットプレーンを構成する同位置のビットデータを近傍位置に配列した単一のビットプレーンとしての合成プレーン506が作成される。合成プレーン506は、データ圧縮器507に入力されて画像圧縮が行われる。
図13は、この第1の提案によるビットプレーン分離器の分離用テーブルを表わしたものである。この例では、多値の画像データ501が第1〜第3のビットプレーン画素値に分離される。第1〜第3のビットプレーン画素値は、10進数で表わした「0」から「7」までの値を、2進数を構成する各ビット(各桁)に分離したものと等しくなっている。
図14は、圧縮前処理器の処理内容を原理的に表わしたものである。第1のビットプレーンは、図13に示した第1ビットプレーン画素値で構成した画像を走査して、第1ラインから順にラインごとに配置した「0」または「1」のビット列からなるビットプレーンである。同様に、第2のビットプレーンは、図13に示した第2ビットプレーン画素値で構成した画像を走査して、第1ラインから順にラインごとに配置した「0」または「1」からなるビットプレーンであり、第3のビットプレーンは、図13に示した第3ビットプレーン画素値で構成した画像を走査して、第1ラインから順にラインごとに配置した「0」または「1」からなるビットプレーンである。
圧縮前処理器505はこれら第1〜第3のビットプレーンから1枚の合成プレーン506を作成する。この際に、まず第1のビットプレーンの第1ラインのビット列が第1ラインとして一列に配置され、その下に第2のビットプレーンの第1ラインのビット列が第2ラインとして一列に配置される。その下には、第3のビットプレーンの第1ラインのビット列が第3ラインとして一列に配置される。第4ライン〜第6ラインは、第1〜第3のビットプレーンの第2ラインのビット列が順に1ラインずつ配置される。以下同様である。
データ圧縮器507は、このようにして作成された1枚の合成プレーン506を既存の圧縮技術を用いて圧縮する。この際に相互に隣接するラインの相関情報を用いることで、画像データの圧縮効率が高まることになる。
一方、本発明に関連して、ビットプレーンを圧縮する前に多値の画像データの階調ビットを削減する処理を行うという技術も存在している(たとえば特許文献2参照)。この第2の提案では、原多階調画像を単純な下位ビットの切り捨てにより表示可能な単純多階調数データに変換する第1の変換手段と、原多階調画像をディザ法により表示可能なディザ多階調数データに変換する第2の変換手段を備えている。そして、これら第1および第2の変換手段によって変換された階調数データを、第3の変換手段によってグレーコードデータに変換し、このグレーコードデータを、単純多階調データの最高位ビットプレーンから最低位ビットプレーンへ順次ビットプレーン単位で段階的に符号化することにしている。
図15は、この第2の提案による階調数をグレーコードデータに変換するテーブルを表わしたものである。このグレーコードデータは、隣り合う符号間のハミング距離が「1」になっているコードである。写真のように濃度が緩やかに変化する画像では、グレーコードを用いたビットプレーンにおいて隣合う画素間の相関が強い。
特開2004−312773号公報(第0010段落、第0016段落〜第0018段落、図5、図8)
特開平08−009369号公報(第0004段落、第0006段落、図1、図4)
図1は、本発明の一実施例における画像圧縮伸長装置の構成を表わしたものである。本実施例の画像圧縮伸長装置100は、多値画像データ101を入力するスクリーン処理部102を備えている。多値画像データ101は、図示しないスキャナが図示しない原稿を読み取った出力データであってもよいし、図示しないコンピュータの出力データであってもよい。また、この画像圧縮伸長装置100が各種の外部メモリと接続されるコネクタを備えている場合には、このコネクタに装着されたメモリから選択された画像の出力データであってもよい。
スクリーン処理部102は、入力された多値画像データ101の構成ビットを減少させる前処理としてスクリーン処理を行うようになっている。スクリーン処理部102には、スクリーンパタンメモリ103が接続されており、スクリーン処理に必要なスクリーンパタン104が読み出されるようになっている。スクリーン処理の詳細は後に説明する。
スクリーン処理部104によって変換された多値データ105は、テーブル変換処理部106に送られるようになっている。テーブル変換処理部106には第1のテーブル格納メモリ107が接続されており、多値データ105の各値が第1のテーブルデータ108を用いて変換される。この変換についての詳細は後に説明する。
テーブル変換処理部106から出力されるテーブル変換処理後の多値データ109はビットプレーン変換部111に入力されて、1枚のビットプレーンへと展開される。展開されたビットプレーン112は2値圧縮部113に供給されるようになっている。2値圧縮部113は、ビットプレーン112を圧縮し、圧縮後の符号データ114をデータ蓄積メモリ115に格納する。
本実施例の画像圧縮伸長装置100は、たとえばコピー機としての機能やスキャナあるいはプリンタとして機能を兼用するデジタル複合機の主要部を構成するようになっている。このため、データ蓄積メモリ115は、圧縮後の各種の画像データを、後の使用時まで圧縮された状態で保持するようになっている。
このデータ蓄積メモリ115は、2値圧縮部113の他に2値伸長部116とも接続されている。2値伸長部116はデータ蓄積メモリ115から読み出された符号データ117を伸長して、ビットプレーンデータに復元する。復元されたビットプレーンデータ118は、多値データ復元部119に送られて多値データに復元される。多値データ復元部119から出力される多値データ121はテーブル逆変換処理部122に送られる。テーブル逆変換処理部122には第2のテーブル格納メモリ123が接続されている。第2のテーブル格納メモリ123は、第1のテーブル格納メモリ107と全く逆の変換を行うための変換テーブルが格納されている。テーブル逆変換処理部122は、第2のテーブルデータ124を用いて、テーブル変換処理部106で行った処理とは逆のテーブル変換を行う。そして、元のスクリーン後の多値データ125を復元して出力することになる。この多値データ125は、たとえば図示しないプリンタに送出されて、印字が行われる。
このような本実施例の画像圧縮伸長装置100の画像圧縮伸長処理の様子を次に具体的に説明する。スクリーン処理部102に入力される多値画像データ101は、モノクログレー多値画像やカラー画像データである。このような多値画像データ101を本実施例の画像圧縮伸長装置100に入力するには、各種の手法が可能である。たとえば、図示しないパーソナルコンピュータで生成した多値画像データ101を、LAN(Local Area Network)やファクシミリ等の通信モジュールを用いて入力することができる。この際に、記録紙にプリントした状態で得られた画像情報については、これを図示しないスキャナで読み取るようにすればよい。
また、LAN以外にも、パーソナルコンピュータからUSB(Universal Serial Bus)やプリンタ用のパラレルポートとしてのセントロニクス(Centronics)といった標準のインタフェースや専用のインタフェースを通して画像圧縮伸長装置100に入力することも可能である。更に、パーソナルコンピュータからPCI(Peripheral Component Interconnect)バスや、その他の独自のバスを使用して画像圧縮伸長装置100に入力する手法もある。更にまた、パーソナルコンピュータから送られてくるプリンタ記述用の言語を解釈して、端末側のCPU(Central Processing Unit)等のデバイスでビットマップ画像に展開したものを多値画像データ101として画像圧縮伸長装置100に入力するものであってもよい。
このような本実施例の画像圧縮伸長装置100に入力される多値画像データ101の種類は特に限定されるものではない。ただし、本実施例で用いられる多値画像データ101は、印刷用の色空間データであることを前提としている。すなわち、モノクログレー多値画像データは、明度データでなく濃度データである必要があり、カラー画像データの場合にはCMYK色空間のデータである必要がある。したがって、たとえばデジタルビデオ用のYUV色空間で表わされた画像データを使用する場合には、パーソナルコンピュータ側や端末側に備えられた図示しないCPUやその他の変換手段を使用してCMYK色空間に色変換しておく必要がある。もちろん、本実施例の画像圧縮伸長装置100におけるスクリーン処理部102の前段に多値画像データ101の色空間を必要により変換する色空間変換部を備えることは自由である。
スクリーン処理部102では、入力された多値画像データ101に対してスクリーンパタンメモリ103に格納されたスクリーンパターン104を使用して、濃度を多値データ表わした画像データの画素ごとの構成ビット数を低減させる前処理を行う。本実施例ではこれをスクリーン処理と呼ぶことにしている。多値画像データ101としてCMYKのカラー画像データが入力された場合、スクリーン処理部102はスクリーンパタンメモリ103に格納されたC、M、Y、Kの各色に対応したスクリーンパターン104を用いて、それぞれの色ごとにスクリーン処理を行うことになる。本実施例では、多値画像データ101として256階調のモノクログレー多値画像データを入力する場合を説明する。
図2は、本実施例のスクリーン処理部の原理的な動作を説明するためのものである。多値画像データ101は、たとえばそれぞれの画素の濃度を256段階(8ビット)で表わしたものである。この多値画像データ101は、図1に示したスクリーンパタンメモリ103に格納されたx方向(主走査方向)とy方向(副走査方向)にそれぞれ複数画素長からなるスクリーンパターン131を用いて、それぞれの画素ごとに8段階(3ビット)の多値データ105に変換される。ここで、スクリーンパターン131は、各画素P11〜P44ごとに8段階の多値化を行うしきい値TH11、TH12、……TH44を設定したもので、一例としては多値用ディザパターンとして構成されている。
スクリーン処理は、画素ごとの構成ビット数を低減させる一般的なスクリーン処理技術を使用して構わない。このように多値で画像の階調を表現しようとする擬似中間調処理では、微視的にそれぞれの画素の濃度を見てみると、スクリーン処理前の画像データ101と異なり、濃度そのものを直接的に表わすデータではなくなる。たとえば多値のディザ処理では、図2に示したスクリーンパターン131を構成する範囲の256階調の4×4画素枠部分の全体的な濃度を、同一範囲の8階調の4×4画素の集合で、できるだけ正確に表わすようにしたものであるからである。
図3は、画素ごとに階調濃度に比例した画像データを有する一定の画像領域の画像データをビットプレーンに展開する一般的な様子を表わしたものである。ここでは、256階調で表わした元の画像領域141の各画素が濃度に応じて8階調(3ビット)に変換されたものとする。変換後の最下位ビットを第1ビットとし、最上位ビットを第3ビットとする。
256階調で表わした元の画像領域141には、白地に比較的暗い色で「あ」という文字が描かれているものとする。このような明暗の比較的はっきりした文章等の画像の場合、先のディザ処理のような中間調を忠実に再現する手法を採用せず、8ビットのうちの下位ビットを削除するようにして濃度を単純に256階調の表現から8階調の表現に変更した場合、第1ビットから第3ビットまでの各ビットプレーン143〜145は、ほぼ同一の画像パターンとなる。
図4は、階調ビットを削減した場合における前記した画像領域の画像データをビットプレーンに展開する様子を表わしたものである。256階調で表わした元の画像領域141の画像データを本実施例のスクリーン処理部102(図1)によって8階調に変換する前処理を行ったものとする。すると、たとえばディザ処理で「あ」という文字部分(暗い部分)では、画素ごとに各種の値となるしきい値のほとんどの値の部分で、これらのしきい値よりも暗い側の画素であると判別される。また、白地に近い地色の部分では、これらのしきい値のほとんどの値の部分で、これらのしきい値よりも明るい側の画素であると判別される。この結果、8階調で表わした画像データの第1ビットに関するビットプレーン151は、256階調で表わした元の画像領域141とほぼ同一の画像パターンとなる。
これに対して、8階調で表わした画像データの第2ビットや第3ビットに関しては、しきい値が画素ごとに各種の値をとる関係で、文字の一部を構成する画素部分であっても、しきい値によっては暗い側の画素であると判別されないことになる。この結果、「あ」という文字部分の濃度にもよるが、第2ビットのビットプレーン152や第3ビットのビットプレーン153では文字パターンが現われず、この代わりに「0」と「1」のビットが混在したパターンが現われることになる。
もちろん、このように「0」と「1」のビットが混在したパターンは、圧縮を効率的に行う上で好ましいものではない。そこで、本実施例では図1に示すスクリーン処理部102でスクリーン処理を行った後、ビットプレーン変換部111で各ビットプレーンに展開する前に、テーブル変換処理部106でこのように点在するノイズの発生を極小化するようにしている。第1のテーブル格納メモリ107には、スクリーン処理後の多値データ105の変換処理を行うための第1のテーブルデータ108が格納されている。
図5は、第1のテーブルデータと第2のテーブルデータの一例についてこれらの関係を表わしたものである。図1に示した第1のテーブル格納メモリ107には、画像圧縮伸長装置100に入力される多値画像データ101に対応させて幾つかの種類の第1のテーブルデータが格納されている。図5には、ユーザが選択したその中の1つを第1のテーブルデータ108として示している。第2のテーブルデータ124は、第1のテーブルデータ108と対を成している。すなわち第1のテーブルデータ108は、2値圧縮部113で圧縮が最適に行われるようにビットプレーン変換部111で各ビットプレーンに展開する多値データ105の変換処理を行う変換データであり、第2のテーブルデータ124は、元のスクリーン処理後の多値データ125を復元するための変換データである。
この変換データがどのように作成されるかを次に説明する。これは、本実施例のように第1のテーブル格納メモリ107に複数通りの第1のテーブルデータ108を用意している場合に、ユーザがこのうちのどれを選択するかの問題でもある。
図6は、本実施例で図4に示した文字「あ」を表わした多値画像データのヒストグラムを表わしたものである。この図で横軸は画像の濃度を「0」から「255」の256段階で表わしたものであり、縦軸は該当する画素の個数を表わしたものである。白色系統の地色部分に黒色系統の文字「あ」が描かれているので、濃度「0」と濃度「255」の2つの濃度に画素数のピークが存在している。また、その他の階調にも値がある程度分散しており、一番多い濃度「255」の画素数の約10パーセント程度の画素数が他の幾つかの階調でも存在している。
図7は、スクリーン処理によって画像データの階調ビットを削減した後の多値データのヒストグラムを表わしたものである。横軸は濃度「0」から濃度「7」の8段階の階調を表わしており、縦軸はそれぞれの濃度の画素数を表わしている。この場合には、濃度「0」と濃度「7」といった階調にほとんどの画素が集中している。他の階調の画素数は、一番多い濃度「7」の画素数に対して約0.5パーセント程しか出現していない。このため、一番出現率の大きい濃度「7」の値を多値データとして「111(2進数)」で表わすより、「000(2進数)」や「001(2進数)」といった多値データとして表わすことで、ビットプレーンに展開したときに各ビットに偏りを持たせて効果的に圧縮することができる。
図6と図7を対比すると分かるように、画像圧縮伸長装置100に入力されたスクリーン処理前の多値画像データ101(図6)に比べてスクリーン処理後の多値データ105(図6)では出現率が全階調のうちの幾つかに集中してくる。この結果、たとえば図7で濃度「6」は出現率が最も低く、該当する画素が零となっている。このような出現率の低い濃度に「111(2進数)」といった圧縮率の高くならないビット列を優先的に配置することで、たとえば図4に示した第2ビット152あるいは第3ビット153における「1」のビットの出現する回数を減少させることができる。このように図7に示したスクリーン処理後の多値の画像データにおける各濃度(階調)の出現する割合が高いほど圧縮に有利なビット列を割り当てていくことで、この例で3つのビットプレーンに変換した後のパターンを効果的に圧縮することができる。
図5に示した第1のテーブルデータ108は、紙に文字が印刷された場合のような文字モードに対して圧縮率が向上するようになっている。中間調を主体とした写真モードのように画像データの種類に応じて複数のモードを設定しておき、第1のテーブルデータ108をこれらの各モード用に用意しておいて、ユーザが適宜選択できるようにしておくことは圧縮率の向上に効果がある。
図8は、文字「あ」を表わした画像データをテーブル変換した結果としての3つのビットプレーンを表わしたものである。図4に示した第2および第3ビットに関するビットプレーン152、153と比較すると、ノイズとして現われている「1」のビットの数が減少しており、圧縮効率が向上している。
ところで、ビットプレーン変換部111では、このようにして得られた1画像当たり3枚のビットプレーン161〜163を1枚のビットプレーンに展開して、図1に示した2値圧縮部113で圧縮することにしている。
図9は、3枚のビットプレーンを1枚のビットプレーンに展開する方法を示したものである。本実施例では、この図に示したように多値データ109を構成するX×Y画素分のビットプレーン161〜163を横に並べて3X×Y画素分のビットプレーン171として、これを2値圧縮部113で圧縮するようにしている。並べる方向はこれと同一方向に限定されるものではなく、たとえばX×3Yとなるように並べてもよい。
これにより、2値圧縮部113は、3X画素あるいはY画素分の長さのラインメモリを数組用いるだけで、1つのラインにおける同一画素の連続状態を利用した圧縮や、隣接するライン同士の同一異同状態を利用した圧縮が可能になる。これらは、たとえばファクシミリ通信における2値符号化方式としてのMH(Modified Huffman)、MR(modified READ:relative element address designate)、MMR、JBIGといった標準の2値エントロピ符号化や、独自のエントロピ符号化として使用されている。
ところで3枚のビットプレーン161〜163は、図9に示したように1枚のビットプレーン171にまとめずに、それぞれ別々に圧縮して保管することも可能である。しかしながら、このようにすると、これら3枚のビットプレーン161〜163を1組のデータとして統一して管理する必要があり、その分のデータが余計に必要となる。また、3枚のビットプレーン161〜163は一体として処理すべきものなので、個別管理するメリットがない。
更に、3枚のビットプレーン161〜163をこれらの面を図9に示したように横1枚にまとめずに、縦方向(垂直方向)に並べることも可能である。しかしながら、この場合には、各ビットプレーン161〜163ごとのシーケンシャル処理が必要となり、リアルタイムでの圧縮処理ができなくなる。また、縦方向に並べた場合、それぞれのビットプレーン161〜163には相関がほとんどないので、圧縮のメリットは大きくない。
図9に示したように1枚のビットプレーン171にまとめることで、画像処理に必要なメモリは最低で1ライン分だけで良く、また、圧縮時にたとえば主走査方向の画素数をそれぞれのビットプレーン161〜163の3倍に設定することでリアルタイムな圧縮処理が可能になる。
本実施例の2値圧縮部113は、通常の2値符号化用の回路を使用することができ、その回路規模も小さく、安価に構成することができる。また、2値圧縮部113をソフトウェアで構成する場合にも、その処理が比較的軽いので、高速処理が可能である。本実施例では、ビットプレーン変換部111までの回路処理の3倍の処理速度で2値圧縮部113を動作させることで、データ蓄積メモリ115への圧縮後の符号データ114を書き込むまでの処理を遅滞なく、かつリアルタイムで行うことが可能である。
このようにしてデータ蓄積メモリ115に蓄積された符号データ114は、図示しないプリンタが印刷を必要とした時点で読み出される。印刷用のデータとして図示しないLAN(Local Area Network)等のネットワークあるいは通信ケーブルで転送する場合も同様である。データ蓄積メモリ115から読み出された符号データ117は、2値伸長部116で多値のビットプレーンデータ121に伸長される。伸長時の2値復号化方式は、当然ながら2値圧縮部113に対応した復号化方式となる。伸長されたビットプレーンデータ118は、多値データ復元部119で多値データ121へと戻される。この処理は、ビットプレーン変換部111での処理の逆の処理となる。
多値データ復元部119で復元された最初の段階の多値データは、図9で示した3X×Y画素分のビットプレーン171に対応するものとなっている。そこで、これをそれぞれX×Y画素分の3枚のビットプレーンデータに切り離したものが多値データ121となる。このひとまとまりの多値データ121は、テーブル逆変換処理部122に入力される。テーブル逆変換処理部122は第2のテーブル格納メモリ123から送られてくる第2のテーブルデータ124を参照して、テーブル変換を行う。
図5で説明したように第1のテーブルデータ108と第2のテーブルデータ124は対の関係となっている。したがって、第1のテーブル格納メモリ107に複数通りの第1のテーブルデータ108が用意されている場合には、第2のテーブル格納メモリ123にも同じ数だけの第2のテーブルデータ124が用意されている。そして、たとえば第1のテーブルデータ108として文字モード用のデータが読み出された場合には、同様に第2のテーブルデータ124として文字モード用のデータが読み出されることになる。
このテーブル逆変換処理部122は、元のスクリーン処理後の多値データ125を復元する。ここではテーブル変換処理部106とは逆の変換が行われる。図5はこの変換の様子を表わしている。テーブル逆変換処理部122でテーブル逆変換処理が行われて得られた多値データ125は、スクリーン処理後のデータとなり出力される。出力されたデータは、必要であればPWM(Pulse Width Modulation)等の多値化のための後処理を経て、図示しないプリンタによって印刷されることになる。このように、本実施例の画像圧縮伸長装置100では、スクリーン処理等の画像を印刷する場合の画像処理を行うため、装置から出力されるデータは、最終的には印刷目的となることを前提としている。
なお、実施例ではモノクログレー多値画像データの印字を行う場合を例にとって説明した。カラー画像データや多色の多値画像データの印字を行う場合についても、本発明を同様に適用することができる。
以上説明したように本実施例の画像圧縮伸長装置100によれば、スクリーン処理後の多値データに対して、値の偏りを利用してビットの割付を変更するための変換を施すことで画像データの圧縮効率を向上させている。また、多値データの各ビットプレーンを横方向に並べて1つのビットプレーンにすることで、1ライン程度の少ないメモリ量と、簡易な2値符号化回路を高速で動作させることを可能にしている。
これにより、モノクログレー画像やカラー画像といった多値画像データを、比較的簡単な2値符号化方式を使用して、しかもリアルタイムで高い圧縮性能で効率的に圧縮および伸長することができる。また本実施例では、多値画像データに対してスクリーン処理を行うことにしているので、圧縮前のデータ量を削減することができ、比較的少ないメモリ容量で多くの多値画像データを蓄積することができる。したがって、画像圧縮伸長装置100のコストダウンを図ることができる。また、圧縮された画像データの伸長時も圧縮時と逆の処理を行うことで、プリンタエンジンの速度に対しても遅滞無く画像を復元し出力することができる。
<発明の変形可能性>
図10は、本発明の変形例における画像圧縮伸長装置の構成を表わしたものである。この変形例の画像圧縮伸長装置100Aで、図1に示した画像圧縮伸長装置100と同一部分には同一の符号を付しており、これらの説明を適宜省略する。
この変形例の画像圧縮伸長装置100Aでは、これに入力された多値画像データ101の特性をデータ解析部201がスクリーン処理部102から出力される多値データ105を基に解析を行って、第1のテーブルデータ108Aとこれに対応した第2のテーブルデータ124Aを作成するようになっている。このうちの第1のテーブルデータ108Aは、第1のテーブル格納メモリ107Aに格納される。
また、第2のテーブルデータ124Aの方はデータ蓄積メモリ115に供給され、2値圧縮部113が圧縮した符号データ114Aに対応させてこれに格納されるようになっている。これは、データ蓄積メモリ115に時間を異にして複数の画像が符号データ114Aとして蓄積される場合、どの画像の符号データ117Aが読み出されるかによって第2のテーブルデータ124Aが相違するので、画像に対応した第2のテーブルデータ124Aが読み出されるようにするためである。
ところで、この変形例の画像圧縮伸長装置100Aでは、データ解析部201がスクリーン処理部102から出力される多値データ105を基に解析を行う。そこで、この解析に要する時間的な遅延とテーブル変換処理部106Aに供給されるスクリーン処理後の多値データ105Aの時間的なタイミング調整を行うためのテンポラリメモリ202が用意されている。
テーブル変換処理部106Aは、スクリーン処理後の多値データ105Aを、第1のテーブル格納メモリ107Aから供給されるその画像データに対応した第1のテーブルデータ108Aを用いてテーブル変換して、多値データ109Aを出力する。この多値データ109Aは、先の実施例で説明したようにビットプレーン変換部111でビットプレーンに変換され、これによって展開されたビットプレーン112Aは2値圧縮部113で圧縮されて、符号データ114Aとしてデータ蓄積メモリ115Aに格納されることになる。
データ蓄積メモリ115Aから印字される画像の符号データ117Aが読み出されると、このタイミングで第2のテーブルデータ124Aが第2のテーブル格納メモリ123Aに供給される。したがって、テーブル逆変換処理部122Aはこのとき出力される第2のテーブルデータ124Aを用いて、テーブル変換処理部106Aで行った処理とは逆のテーブル変換を行う。そして、元のスクリーン処理後の多値データ125Aを復元して出力することになる。この多値データ125Aは、たとえば図示しないプリンタに送出されて、印字が行われる。
図11は、データ解析部の解析処理の概要を表わしたものである。図10に示したこの変形例の画像圧縮伸長装置100Aは、図示しないがCPU(Central Processing Unit)とこのCPUが実行する制御プログラムを格納した記憶媒体を備えている。そして、CPUが制御プログラムを実行することで、データ解析部201の解析制御等の所定の制御を行うようになっている。多値画像データ101が新しく画像圧縮伸長装置100Aに入力した場合のデータ解析部201の制御を図10と共に説明する。
データ解析部201は、スクリーン処理後の多値データ105を1ページ分あるいは所定のデータ量(たとえば256ラインや1024ラインといったバンド単位あるいは半ページ)だけ入力すると、これに対して各階調ごとの出現頻度の統計をとる(ステップS301)。スクリーン処理でたとえば256段階の階調が8段階に減少する処理が行われている場合には、この8段階の階調のそれぞれについて、図7で説明したように出現頻度を計数することになる。なお、この処理が行われている間、後に説明するステップS304の処理が行われるまで、スクリーン処理後の多値データ105はテンポラリメモリ202に順次格納されていく。
ステップS301の統計処理が終了したら、データ解析部201は出現頻度の高い階調から順に、各ビットプレーンへの出現が抑えられるビット列を割り振って、これらを対応付けた変換テーブル(第1のテーブルデータ108A)と、復元の際に使用する変換テーブル(第2のテーブルデータ124A)を作成する(ステップS302)。そして、これらを第1のテーブルデータ108Aおよび第2のテーブルデータ124Aとして出力する(ステップS303)。第1のテーブルデータ108Aは第1のテーブル格納メモリ107Aに送られる。また、第2のテーブルデータ124Aはデータ蓄積メモリ115Aへ送られる。
以上の処理が終了すると、データ解析部201はテンポラリメモリ202に対してテーブル変換処理部106Aへ一時的に格納した多値データ105Aから順に多値データ105Aの出力を指示する(ステップS304)。これにより、テーブル変換処理部106Aは、入力される多値データ105Aに対してこれに対応する第1のテーブルデータ108Aを用いてテーブル変換を開始することになる。
テーブル逆変換処理部122Aでは、多値データ復元部119から送られてくる多値データ121Aを、第2のテーブルデータ124Aを用いて逆変換を行うが、これについては詳細な説明を省略する。
なお、データ解析部201における第1のテーブルデータ108Aの作成に関しては、たとえば多値データが3ビットとした場合、一番頻度が高いものを「000(2進数)」、次に出現頻度が高いものを「001(2進数)」、その次に高いものを「010(2進数)」、一番出現頻度が低いものを「000(2進数)」というような変換テーブルを作成する。ここで、ビット数はスクリーン後のビット数に応じて変化し、また、変換テーブルでは、「0」から「000(2進数)」への変換は固定化し、その他のデータに対して出現頻度に応じて「001(2進数)」、「010(2進数)」、「100(2進数)」、……「111(2進数)」といったルールでもよい。
このような変形例の画像圧縮伸長装置100Aによれば、入力される多値画像データ101にしたがって入力画像の特性を分析し変換テーブルをダイナミックに生成することができる。このため、どのような画像タイプが入力されても柔軟に対応することができ、先の実施例に比べ、ユーザのモード選択の技量に頼ることなく、画像データの圧縮性能を安定して向上させることができる。その代わりとして画像タイプの分析処理が入るため圧縮時には一時蓄積用のメモリが必要となる。メモリ量は分析するデータの範囲による。また、伸長時は分析された結果だけを使用するため、先の実施例と同様、リアルタイムで処理することができる。
なお、この変形例ではデータ解析部201で生成された変換テーブル用の第1のテーブルデータ108Aや第2のテーブルデータ124Aを符号データとは分けてメモリに格納して管理していたが、テーブルの管理方法はこれに限定するものではない。たとえば、符号データ自体にメタデータとして入れ込んでおくことも可能である。一例を挙げると、符号データの先頭に逆変換テーブルを並べ、その後に符号データをつけてメモリに蓄積するようにしてもよい。逆変換データは生のままでも圧縮をかけていても問題ない。伸長側では先頭から逆変換テーブル部分を抜き出し、第2のテーブル格納メモリ123Aに設定し、残りの符号データを2値伸長部116で伸長することになる。これにより、符号データと別に管理するという煩わしさがなくなる。
また、実施例および変形例では画像圧縮伸長装置100、100A内に画像データの圧縮を行う回路部分と伸長を行う回路部分を組み込んだが、別々の装置に格納するようにしてもよい。また、圧縮や伸長はハードウェアで行ってもよいし、ソフトウェアで実現してもよい。
更に、本発明の変形例では装置に入力される多値画像データに対応する第1のテーブルデータおよび第2のテーブルデータをその都度作成することで処理を自動化したが、これに限るものではない。すなわち、実施例のように各種の多値画像データに対応する第1のテーブルデータおよび第2のテーブルデータを予め複数種類作成しておき、処理の対象となる多値画像データの特性を測定して、どのタイプのテーブルデータが適するかを装置側が判別して選択作業を行うようにしてもよい。この場合、第1のテーブル格納メモリおよび第2のテーブル格納メモリには、どのタイプのテーブルデータを使用するかを示す情報が供給されることになる。