(57)【特許請求の範囲】
【請求項１】
疑似中間色表現を有する画像データを、ラインごとのビット列の並び替え（リアレンジ）処理後にランレングス符号化およびその逆変換を行う画像圧縮伸張装置において、複数のリアレンジテーブルと、前記ラインに前記複数のリアレンジテーブルそれぞれを適用して各ビット列に変換する手段と、前記変換された各ビット列のランレングススコアを計算する手段と、各ビット列のランレングススコアのうちスコアがよいリアレンジテーブルを特定する手段と、隣接するラインのリアレンジテーブルが異なる場合にバンド分割を行って、このバンド分割された各バンドについてリアレンジテーブルを関連付ける手段とを有することを特徴とする画像圧縮伸張装置。
【請求項２】
請求項１に記載の画像圧縮伸張装置において、前記特定したリアレンジテーブルとデータ長とを符号化されたデータに含ませることを特徴とする画像圧縮伸張装置。
【請求項３】
請求項１に記載の画像圧縮伸張装置において、前記変換されたビット列を規定の長さの局所ビット列に分割する手段と、前記各局所ビット列ごとのランレングススコアを計算する手段と、前記各局所ビット列ごとのランレングススコアで、隣接する局所ビット列のスコアが一定以上の変動があった位置をエッジとして検出する手段と、前記検出されたエッジを複数ライン数分集計した結果に基づき画像を水平方向にバンド分割する手段とを有すること特徴とする画像圧縮伸張装置。
【請求項４】
疑似中間色表現を有する画像データを、ラインごとのビット列の並び替え（リアレンジ）処理後にランレングス符号化およびその逆変換を行う画像圧縮伸張方法において、複数のリアレンジテーブルを保持しておき、前記ラインに前記複数のリアレンジテーブルそれぞれを適用して各ビット列に変換する工程と、前記変換された各ビット列のランレングススコアを計算する工程と、各ビット列のランレングススコアのうちスコアがよいリアレンジテーブルを特定する工程と、隣接するラインのリアレンジテーブルが異なる場合にバンド分割を行って、このバンド分割された各バンドについてリアレンジテーブルを関連付ける工程とを有することを特徴とする画像圧縮伸張方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、中間色表現を有するデジタル画像を圧縮および伸張するための画像圧縮伸張器に関し、印刷装置や画像データ通信装置に応用して好適なものである。
【０００２】
【従来の技術】
画像の圧縮方式としては同一色の連続数を利用するランレングス符号化が知られているが、階調が低い場合の画像表現に用いられる誤差拡散（ディザ）による疑似中間色表現の画像データは同一色の連続が少なくなるためにランレングス符号化では圧縮効率が低くなってしまう。
そこで、ランレングス符号化に先立ちディザパターンに応じたビット列の並べ替え処理（リアレンジ）をすることで同一色の連続を増やし、圧縮率を高める方法が提案されている。
【０００３】
【発明が解決しようとする課題】
上述した画像データをディザパターンに応じたビット列の並べ替え処理（リアレンジ）を行う場合、このビット列の並べ替え情報（以下リアレンジテーブルという）はディザパターンに依存するため、同一画像内でディザパターンが局所的に異なる場合や、文字を含む画像データの場合、あらかじめシステムアプリケーションが文字情報と画像情報の分離を行っておき、それぞれの領域に応じてリアレンジテーブルを使用するか否か、あるいはどのリアレンジテーブルの内容を使用するかを設定する必要があり、処理が煩雑となっている。
【０００４】
本発明は、上述の問題を解決するためのものであり、文字や異なるディザパターンを含む画像データについて、処理を複雑化することなくランレングス符号化による高い圧縮率を実現する画像圧縮伸張装置および画像圧縮伸張方法を提供することを目的とする。
【０００５】
【課題を解決するための手段】
上記の問題を解決するために、本発明の請求項１の画像圧縮伸張装置は、疑似中間色表現を有する画像データを、ラインごとのビット列の並び替え（リアレンジ）処理後にランレングス符号化およびその逆変換を行う画像圧縮伸張装置において、複数のリアレンジテーブルと、前記ラインに前記複数のリアレンジテーブルそれぞれを適用して各ビット列に変換する手段と、前記変換された各ビット列のランレングススコアを計算する手段と、各ビット列のランレングススコアのうちスコアがよいリアレンジテーブルを特定する手段と、隣接するラインのリアレンジテーブルが異なる場合にバンド分割を行って、このバンド分割された各バンドについてリアレンジテーブルを関連付ける手段とを有することを特徴とする。
【０００６】
したがって、文字や異なるディザパターンを持つイメージデータを含む画像データに対して、ライン単位でランレングスが最も長くなるリアレンジテーブルを選択できるように画像データを自動的にバンド分割し、その各バンドについて最適なリアレンジ処理が行われてランレングス符号化がされるので、高圧縮率が実現できる。
【０００７】
また、請求項２は、請求項１に記載の画像圧縮伸張装置において、前記特定したリアレンジテーブルとデータ長とを符号化されたデータに含ませることを特徴とする。
【０００８】
したがって、文字や異なるディザパターンを持つイメージデータを含む画像データに対して、ライン単位で最適なリアレンジテーブルを選択でき、高圧縮率が実現できる。
【０００９】
また、請求項３は、請求項１に記載の画像圧縮伸張装置において、前記変換されたビット列を規定の長さの局所ビット列に分割する手段と、前記各局所ビット列ごとのランレングススコアを計算する手段と、前記各局所ビット列ごとのランレングススコアで、隣接する局所ビット列のスコアが一定以上の変動があった位置をエッジとして検出する手段と、前記検出されたエッジを複数ライン数分集計した結果に基づき画像を水平方向にバンド分割する手段とを有すること特徴とする。
【００１０】
したがって、文字や異なるディザパターンを持つイメージデータを含む画像データに対して、主走査方向の局所的なランレングススコアを計算し、最適なリアレンジテーブルを選択できるように主走査方向のバンド分割を行うので、高圧縮率が実現できる。
また、請求項４は、疑似中間色表現を有する画像データを、ラインごとのビット列の並び替え（リアレンジ）処理後にランレングス符号化およびその逆変換を行う画像圧縮伸張方法において、複数のリアレンジテーブルを保持しておき、前記ラインに前記複数のリアレンジテーブルそれぞれを適用して各ビット列に変換する工程と、前記変換された各ビット列のランレングススコアを計算する工程と、各ビット列のランレングススコアのうちスコアがよいリアレンジテーブルを特定する工程と、隣接するラインのリアレンジテーブルが異なる場合にバンド分割を行って、このバンド分割された各バンドについてリアレンジテーブルを関連付ける工程とを有することを特徴とする。
【００１１】
【発明の実施の形態】
以下に、図面を用いて本発明の実施例の構成および動作を詳細に述べる。
【００１２】
図１は、本発明の第１実施例の画像圧縮伸張装置のモジュール構成図であって、このモジュールを用いて画像圧縮を行うときのデータフローを示している。
システムメモリ１００上の画像データを画像ＤＭＡＣ（Direct Memory Access Controller）２００が読み出し、リアレンジ部３００にてビット列の並び替え（リアレンジ）て、圧縮伸張器４００で圧縮し、符号ＤＭＡＣ５００により符号データとしてシステムメモリ１００に書き戻される。
【００１３】
また、符号伸張の場合は（図２参照）、画像圧縮時とは逆に、システムメモリ１００上の符号データを符号ＤＭＡＣ５００が読み出し、圧縮伸張器４００で伸張した後、リアレンジ部３００にてリアレンジ処理の後、画像ＤＭＡＣ２００によってシステムメモリ１００に書き戻される。
【００１４】
図３は、画像ＤＭＡＣ２００の内部構造を示すブロック図である。画像ＤＭＡＣ２００は、内部レジスタ群（２１１，２１２，２１３，２１４，２１５，２１６，２１７）およびこれらのレジスタアクセスのためのＣＰＵ  Ｉ／Ｆ（ＣＰＵＩｎｔｅｒｆａｃｅ）２２０、システムメモリ（あるいはその前段のメモリバスアービタ）Ｉ／Ｆ２３０、リアレンジ部３００とのデータ授受を行うリアレンジモジュールＩ／Ｆ２４０およびデータ用の内蔵バッファ２５０で構成される。この内部レジスタ群としては、ＤＭＡ（Direct Memory Access）転送を制御する制御レジスタ２１４、転送状態を示す状態レジスタ２１５、ＤＭＡ転送のモードなどを設定するレジスタ２１６、転送するフレームに関する情報（主走査長、ライン数）を保持する主走査長レジスタ２１１およびライン数レジスタ２１２、ＤＭＡの開始アドレスレジスタ２１３、およびディスクリプタアドレスレジスタ２１７を備えている。
【００１５】
このような構成からなる第１実施例の画像圧縮伸張装置にあって、まず、画像ＤＭＡＣ２００および符号ＤＭＡＣ５００は共に、これらのＤＭＡＣ（２００，５００）の設定に関する情報をディスクリプタと呼ぶデータ構造（後述）としてシステムメモリ１００上にあらかじめ配置し、ＤＭＡ起動時にはこれらのＤＭＡＣ（２００，５００）がこのディスクリプタを読み出してこれらのＤＭＡＣ（２００，５００）内部の設定を行う。
【００１６】
図４は、ディスクリプタのデータ構造を示している。１つのディスクリプタは、少なくともＤＭＡのデータ開始アドレス、次回ディスクリプタアドレス、フレーム情報、データのサイズ、ＤＭＡ転送のモード、選択されたリアレンジテーブル番号とから構成されている。
ここで次回ディスクリプタアドレスは、複数のディスクリプタをもつ場合のディスクリプタへのアドレスを示し、最終のディスクリプタの次回ディスクリプタアドレスは０（ＮＵＬＬポインタ）としたリスト構造となる。これによって複数用意されたディスクリプタは数珠繋ぎになり、ＤＭＡを順次行うことが可能となる。
本発明では、このディスクリプタにより分割されるＤＭＡの単位をバンドと呼ぶ。したがって、このバンド単位でモードやフレーム情報などを変えることが可能となる。
【００１７】
図５は、リアレンジ部３００の内部構造を示すブロック図である。破線の下半分が圧縮に関連する部分で、上半分が伸張に関連する部分である。
画像ＤＭＡＣ２００からの１ライン分のデータを画像ＤＭＡＣ  Ｉ／Ｆ３９１が受け取り、１ライン分のビット列バッファ３４０に格納する。ここでビット列の並べ替えを行うが、その並べ替えのマッピング情報はＮ個のリアレンジテーブル３５０にあらかじめＣＰＵ  Ｉ／Ｆ３９２を介して設定しておく。
ビット列変換器３２０ではこのリアレンジテーブル３５０を使ってビット列の並べ替えを行い、Ｎ個の出力バッファ３７０のうちリアレンジテーブルに対応したバッファに格納する。
ビット列の並べ替えが行われると同時にランレングススコア計算器３６０で各リアレンジテーブルを使った結果、どれくらい同色の連続（ラン）が起こったかを計算して最もランが長い出力バッファ番号の内容を圧縮伸張器Ｉ／Ｆ３９３に渡るようセレクタ３８０を制御すると同時に、セレクトされた番号（リアレンジテーブルの番号）を圧縮伸張器Ｉ／Ｆ３９３に渡す。
さらに、出力バッファ０を設けており、このバッファはリアレンジをしなかった際のビット列を保持するバッファとし、このリアレンジテーブル番号０はリアレンジをしないという意味の番号となる。
【００１８】
図６は、圧縮伸張器４００の内部構造を示すブロック図である。圧縮伸張器４００は、リアレンジ部３００とのＩ／Ｆ４１０と符号ＤＭＡＣ５００とのＩ／Ｆ４６０および入出力用のバッファ（４２０，４５０）、リアレンジテーブル番号バッファ４７０、圧縮コア４３０および伸張コア４４０から構成される。
画像圧縮の場合には、リアレンジ部３００から受け取りリアレンジテーブル番号バッファ４７０に保持されたリアレンジテーブル番号を符号出力と同時に符号ＤＭＡＣ５００に渡す。
また、画像伸張の時には、符号ＤＭＡＣ５００から受け取ったリアレンジテーブル番号は、リアレンジテーブル番号バッファ４７０に一旦保持されてデータをもとの並びに戻すためにリアレンジ部３００へ渡される。
【００１９】
図７は、符号ＤＭＡＣ５００の内部構造を示すブロック図である。
符号ＤＭＡＣ５００は、内部レジスタ群（５１１，５１２，５１３，５１４，５１５，５１６，５１７）およびこれらのレジスタアクセスのためのＣＰＵ  Ｉ／Ｆ（ＣＰＵ  Ｉｎｔｅｒｆａｃｅ）５２０、システムメモリ（あるいはその前段のメモリバスアービタ）Ｉ／Ｆ５３０、圧縮伸張器４００とのデータ授受を行う圧縮伸張器Ｉ／Ｆ５４０およびデータ用の内蔵バッファ５５０で構成される。この内部レジスタ群としては、ＤＭＡの転送を制御する制御レジスタ５１３、転送状態を示す状態レジスタ５１４、ＤＭＡ転送のモードなどを設定するモードレジスタ５１５、転送する符号化情報（１次元のランレングス符号）のサイズを保持する転送サイズレジスタ５１１、ＤＭＡの開始アドレスレジスタ５１２、およびディスクリプタ制限レジスタ５１７を備えている。
【００２０】
符号ＤＭＡＣ５００は、ディスクリプタを自動的に分割してシステムメモリ１００に書き戻し、圧縮伸張器４００からリアレンジテーブル番号を受け取った際、直前のラインのテーブル番号と異なる場合は、新しいディスクリプタをシステムメモリ１００上に作成する。
この新しく作成されたディスクリプタには、このディスクリプタにより転送される符号データの開始アドレスおよび使用したリアレンジテーブル番号と符号のサイズを格納し、この新しいディスクリプタのアドレスを現在のディスクリプタの「次回ディスクリプタアドレス」部分に書きこむことによってリンク情報を更新する。この新しいディスクリプタを作成してもよい領域は、あらかじめ符号ＤＭＡＣ５００内のディスクリプタ制限レジスタ５１７に設定しておく。ディスクリプタを書き込む領域を使い切った場合、符号ＤＭＡＣ５００はエラーを発生し、画像圧縮伸張装置へ通知する。作成されるディスクリプタの順序関係は、「次回ディスクリプタアドレス」部分により論理的に保証されるのでメモリ上では不連続でも前後関係が変わってもよい。
【００２１】
符号ＤＭＡＣ５００は、最終データを受け取った後、現在のディスクリプタに使用したリアレンジテーブル番号と符号サイズを書き、「次回ディスクリプタアドレス」部分に０を書いて圧縮処理を終了する。
なお、ＤＭＡ起動時の符号ＤＭＡＣ５００におけるディスクリプタの初期状態は、符号の書き込み開始アドレスのみ書いておく。
【００２２】
画像圧縮伸張装置は、符号ＤＭＡＣ５００が書き戻したシステムメモリ１００上のディスクリプタを使用して伸張処理を実行させることができる。
伸張時の動作としては、符号ＤＭＡＣ５００のディスクリプタアドレスレジスタ５１６に圧縮時に生成されたディスクリプタの先頭アドレスを設定し、ＤＭＡを起動する。
符号ＤＭＡＣ５００は、符号データの開始アドレス、サイズ、選択するリアレンジテーブル番号、および次回ディスクリプタのアドレスを読み込み、ＤＭＡ転送を開始する。
圧縮伸張器４００は、符号ＤＭＡＣ５００から符号データとリアレンジテーブル番号を取得し、この符号データより伸張コア４４０で伸張された伸張データと同時にこのリアレンジテーブル番号をリアレンジ部３００に渡す。
【００２３】
次に、図５を使って、伸張時のリアレンジ部３００の動作を説明する。
圧縮伸張器４００から圧縮伸張器Ｉ／Ｆ３９３を介して伸張データとリアレンジテーブル番号を受け取って、入力バッファ３１０へ格納した後、ビット列変換器３２０で伸張データをこのリアレンジテーブル番号にしたがったビット列に並べ替え、出力バッファ３３０と画像ＤＭＡＣ  Ｉ／Ｆ３９１を介して画像ＤＭＡＣ２００に渡される。
画像ＤＭＡＣ２００は、画像ＤＭＡＣ２００のディスクリプタに応じてビット列の並び替えられた伸張データをシステムメモリ１００に書く。
【００２４】
画像圧縮伸張装置は、リアレンジテーブルの設定とＤＭＡＣディスクリプタの設定およびＤＭＡの起動を行うが、リアレンジテーブルの選択はライン単位でランレングスのスコアに応じて自動的に行われ、且つ与えられたリアレンジテーブル群に対して可能な限り高圧縮率が実現できる。
【００２５】
次に、本発明の第２実施例の画像圧縮伸張装置を説明する。第２実施例の画像圧縮伸張装置のモジュール構成は第１実施例と同じであるので、そのモジュールの機能の相違点についてのみ説明する（図１参照）。
図１において、システムメモリ１００上の画像データを画像ＤＭＡＣ（Direct Memory Access Controller）２００が読み出し、リアレンジ部３００にてリアレンジテーブルを選択してビット列を並び替え（リアレンジ）て、リアレンジ後のデータが圧縮伸張器４００へ渡るまでの画像圧縮の動作は第１実施例と同様である。
圧縮伸張器４００は、圧縮時、図８に示すように、リアレンジテーブル番号と符号データとを区別する特殊なコード（非符号コード）に続いて、選択したリアレンジテーブル番号と符号データを出力する。この特殊なコードの代わりに符号データのデータサイズとしてもよい。
符号ＤＭＡＣ５００は、ディスクリプタ分割・生成機能を持たない、したがってディスクリプタ制限レジスタも持たない。
【００２６】
逆に圧縮伸張器４００を使って伸張する時、まず特殊コードをトリガとしてリアレンジテーブル番号を読み込み、リアレンジ部３００へそのまま渡し、リアレンジテーブル番号に続いて読み込まれた符号データについては伸張コア４４０で伸張処理してリアレンジ部３００へ渡す。
第２実施例を上述のように構成することによって、画像をライン単位で最適なリアレンジテーブルを選択でき、高圧縮率が実現できる。
【００２７】
次に、本発明の第３実施例の画像圧縮伸張装置を説明する。第３実施例の画像圧縮伸張装置のモジュール構成は第１実施例と同じであるので、そのモジュールの機能の相違点についてのみ説明する（図１参照）。
第３実施例では、画像の主走査方向の分割を行うプレ圧縮モードと、通常の圧縮動作を行うノーマルモードの２つのモードを用いて画像データの圧縮を行う。第３実施例のリアレンジ部３００は、主走査方向の局所的なランレングススコア評価機能を持ち、且つ、画像ＤＭＡＣ２００は第１実施例の符号ＤＭＡＣ５００と同様なディスクリプタ分割・生成機能を持ち、画像の圧縮に先立って、圧縮率を向上するための主走査方向の分割を行う。
このため第３実施例のリアレンジ部３００の内部構造は、図５に示したモジュール構成に加え、ＣＰＵ  Ｉ／Ｆにつながったモードレジスタおよび局所スコア計算器７１０と局所スコア列群７２０、スコアエッジ検出部７３０、スコアエッジ群７４０およびエッジバッファ７５０を備えるようにした（図９参照）。
【００２８】
第３実施例の画像圧縮伸張装置は、はじめにモードレジスタにプレ圧縮モードを設定し、画像ＤＭＡＣ２００のディスクリプタひとつを使ってフレーム情報を設定しておく。
画像ＤＭＡＣ２００の起動後、画像データのＤＭＡが開始し、画像ＤＭＡＣ  Ｉ／Ｆ３９１を介してリアレンジ部３００に画像データを供給する（図５参照）。
リアレンジ部３００では、第１実施例で説明した並べ替え処理を行い各出力バッファ３７０に結果を保持する。
局所スコア計算器７１０は、ラインバッファの主走査方向を規定のビット数ずつに分割して、分割した局所的なビット列でのランレングススコアを計算して、局所スコア列７２０へ保持する（図９参照）。
引き続き、スコアエッジ検出部７３０が局所スコア列７２０を走査して隣接する局所スコアの差が規定値以上の場合にエッジを検出したとしてスコアエッジ７４０にエッジビットを立てる。ラインバッファの局所スコア計算とスコアエッジフラグの例を図１０に示す。この局所スコア計算とスコアエッジ検出はリアレンジテーブルの数だけ行われ、それぞれのエッジのＯＲがとられ、エッジバッファ７５０に格納される。これで１ライン分のエッジ情報が完成する。
また、複数ライン分のエッジバッファ７５０を用意し、複数ライン間での集計処理をすることで、エッジ情報のライン間の誤差を改善する。
【００２９】
続いてリアレンジ部３００は、このエッジ間のデータ長を算出して、連続的に画像ＤＭＡＣ２００に返す。画像ＤＭＡＣ２００では、（エッジの数＋１）個分のデータ長が画像ＤＭＡＣ２００に返ってくるが、画像ＤＭＡＣ２００はその数だけ新しいディスクリプタを生成し、対応するデータ長をディスクリプタのデータサイズ部分に書き込む。
【００３０】
引き続き、画像圧縮伸張装置は、モードレジスタにノーマルモードを設定して、リアレンジ部３００がこのディスクリプタを使用して通常の画像圧縮処理を行う。図１１の例では、画像Ａが領域Ａ１と領域Ａ２に分割され、各領域に対応したディスクリプタ１および２が生成される。
【００３１】
この第３実施例によれば、分割した領域毎に最適なリアレンジテーブルが選択されることにより高い符号圧縮率が得られる。且つディスクリプタは自動生成されるので処理の負担が軽減される。
【００３２】
さらに、本発明は上述した実施例のみに限定されたものではない。上述した各実施例の画像圧縮伸張装置を構成する各モジュール（画像ＤＭＡＣ、リアレンジ部、圧縮伸張器、符号ＤＭＡＣ）の機能をそれぞれプログラム化し、あらかじめＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）のような不揮発性の記録媒体に書き込んでおく。このＲＯＭを画像圧縮伸張装置に組み込み、これらのプログラムを実行することによって、本発明の目的を達成することができる。
【００３３】
【発明の効果】
本発明によれば、文字や異なるディザパターンを持つイメージデータを含む画像データに対して、ライン単位でランレングスが最も長くなるリアレンジテーブルを選択できるように画像データを自動的にバンド分割し、その各バンドについて最適なリアレンジ処理が行われてランレングス符号化されるので、高圧縮率が実現できる。
【００３５】
また、文字や異なるディザパターンを持つイメージデータを含む画像データに対して、主走査方向の局所的なランレングススコアを計算し、最適なリアレンジテーブルを選択できるように主走査方向のバンド分割を行うので、高圧縮率が期待できる。
【図面の簡単な説明】
【図１】  第１実施例の画像圧縮伸張装置のモジュール構成図で、画像圧縮のデータフローを示した図である。
【図２】  第１実施例の画像圧縮伸張装置のモジュール構成図で、画像伸張のデータフローを示した図である。
【図３】  画像ＤＭＡＣ２００の内部構造を示すブロック図である。
【図４】  ディスクリプタのデータ構造である。
【図５】  リアレンジ部３００の内部構造を示すブロック図である。
【図６】  圧縮伸張器４００の内部構造を示すブロック図である。
【図７】  符号ＤＭＡＣ５００の内部構造を示すブロック図である。
【図８】  第２実施例の圧縮伸張器４００から出力されるデータのデータ構造である。
【図９】  第３実施例のリアレンジ部３００へ追加されたモジュールの構成を示すブロック図である。
【図１０】  ラインバッファの局所スコア計算とスコアエッジフラグの例である。
【図１１】  ディスクリプタの分割を説明するための図である。
【符号の説明】
１００…システムメモリ、２００…画像ＤＭＡＣ、３００…リアレンジ部、４００…圧縮伸張器、５００…符号ＤＭＡＣ、７１０…局所スコア計算器、７３０…スコアエッジ検出部。
【図１】
0003763751.tif 000002
【図２】
0003763751.tif 000003
【図３】
0003763751.tif 000004
【図４】
0003763751.tif 000005
【図５】
0003763751.tif 000006
【図６】
0003763751.tif 000007
【図７】
0003763751.tif 000008
【図８】
0003763751.tif 000009
【図９】
0003763751.tif 000010
【図１０】
0003763751.tif 000011
【図１１】
0003763751.tif 000012