(57)【特許請求の範囲】
【請求項１】
入力したカラー画像データを一時的に蓄積するバッファメモリと、このバッファメモリに蓄積された画像データを隣接する所定数の画素毎にブロック化してブロック毎に固定長の符号データに圧縮処理する圧縮処理装置と、圧縮装置が生成した符号データを一時的に蓄積する画像メモリと、これら各メモリや装置のデータの入出力や処理のタイミングを制御する制御装置を備える画像圧縮装置において、
前記圧縮処理装置は、前記ブロック内の各画素の３つの原色からなる画素データを所定順に入力し、前記３つの原色の中で最大の階調（信号振幅）を持つデータの中間値から閾値を検出する閾値検出回路と、この閾値に基づいて前記画素データを２つのグループに分類するデータ分配回路からなるグループ分割手段を１つ、または分割されたグループを更に分割して近似色数に応じたグループ分割を可能にする複数段のグループ分割手段を設けるとともに、前記データ分配回路毎にその複数の入力信号のタイミングを前記制御装置からの制御信号に同期させるパイプライン構成としたことを特徴とする画像圧縮装置。
【請求項２】
請求項１において、前記グループ分割手段のデータ分配回路から出力されるグループ毎の画素データの階調を加算する加算回路とその加算結果を当該グループに属する画素数で除残する除残回路を有し、グループ毎の平均値から求めた近似色を用いて前記符号データを作成する符号データ作成手段を設け、前記除残回路は入力の被除数と除数に対応して設定されている除算結果を読み出すルックアップテーブルで構成したことを特徴とする画像圧縮装置。
【請求項３】
請求項１または２において、前記ブロックの画素数、前記近似色数を含むパラメータ設定手段を設けた画像圧縮装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、カラー画像を効率的に蓄積、伝送する装置に関わり、特に圧縮率が固定の画像圧縮装置に関する。
【０００２】
【従来の技術】
カラー画像は少なくとも３種類の多値レベルの色信号で表されるので、画像データが膨大な量となる。この画像データを効率良く蓄積ないし伝送するために、国際標準機関（ＩＴＵ）の勧告Ｔ8.1に基づく、ＪＰＥＧ（Joint Photographic Expert Group）と呼ばれる圧縮処理技術が広く使われている。この方式は、画像対象を８×８画素のブロックに分割し、各ブロックを、ＤＣＴ（離散コサイン変換）量子化、ジグザグスキャン、ラン長符号化の処理を行って符号を生成する。
【０００３】
しかし、ＪＰＥＧ方式は、圧縮対象の画像内容によってラン長符号化の結果が異なることから、圧縮率が変動する。一般には、平坦な画像領域では圧縮率が高く、逆に、細かな線図形がある画像領域では圧縮率が低くなる。このため、符号データ量が変動しても破綻しないように、符号データ量の最大値を想定して、符号データメモリ容量などを設計する必要があった。しかし、想定した最大値よりも符号データ量が少ない場合には、メモリ容量などに無駄が生じることになり、価格上昇などを招く。また、符号データをメモリ書き込みするための、メモリアドレス発生および書き込みタイミング制御なども変動するデータ量に対応した装置構成としておく必要があり、全体的に装置構成の増大を招く。
【０００４】
本発明者等は既に、上記したＪＰＥＧ方式の問題点を克服するため、圧縮率が一定となるカラー画像信号の圧縮方式を実現している（特公平6−7688号）。すなわち、カラー画像を表現する３つの色情報の符号化処理において、画像データを複数の画素からなるブロックに分割し、このブロック内の画素を色毎にその平均階調レベルをしきい値としてグループ分けし、グループ毎に求めた各色の平均階調レベルからグループの近似色を定め、ブロック内の各画素の色と各グループの近似色との色差を求め、画素毎に色差の小さいグループの近似色を割当て、ブロック内の画情報を近似色と各画素の類別により符号化する。これによれば、ブロック内の画情報の符号データ長が一定となり、処理中の圧縮率は固定される。
【０００５】
【発明が解決しようとする課題】
従来のＪＰＥＧ方式の画像圧縮装置では、符号データ量の最大値を想定してメモリ容量を設定するとともに、その最大データ量を処理するためのクロック数や、符号データ転送時間なども設計して、信号処理の破綻を防止する。しかし、最大データ量に基づいた処理時間の設定には無駄が多く、結果的に装置性能の低下をもたらす。これに対し、本発明者等による上述の画像圧縮方式では圧縮率が一定になるので、圧縮率変動に伴う問題点を基本的に解決できる。しかしながら、圧縮率一定の圧縮方式においても、処理時間は圧縮率から一義に定まるものではなく、処理時間の変動による問題点までは克服されていない。
【０００６】
例えば、ソフトウェアのシングルタスク等による処理時間が変動する圧縮処理では、最大処理時間を想定して信号処理クロック数、符号データ転送時間などの装置設計を行わなくてはならず、装置の処理能力に無駄が生じることになり、性能の低下、価格上昇などの問題がもたらされる。また、符号データをメモリ書き込みするための、メモリアドレス発生および書き込みタイミング制御なども、変動するデータ量に対応した構成が必要となり、装置構成の増大を招く。
【０００７】
例えば一定の動作速度で動作するスキャナ装置の場合、スキャナが画像データを読み取る速度よりも高速に画像データ圧縮処理を行う保証ができない場合は、圧縮処理を行う前に一旦非圧縮画像データをページメモリ等に記録させる必要が生じる。このページメモリを省くためには、処理時間が変動しても圧縮処理が破綻しないような設計が必要となり、圧縮率が変動する場合と同様な問題点が存在する。
【０００８】
本発明の目的は、上記した従来技術の問題点を克服し、画像データの内容に関わらず、圧縮率と圧縮時間を一定化することで、処理破綻のしない設計が容易で、メモ容量をはじめ無駄のない構成の圧縮処理装置を提供することにある。また、圧縮処理時間の一定化により、表示装置やプリンタなどの処理能力に適応した高速処理が可能な圧縮処理装置を提供することにある。
【００１１】
上記課題を解決するために、本発明は入力したカラー画像データを一時的に蓄積するバッファメモリと、このバッファメモリに蓄積された画像データを隣接する所定数の画素毎にブロック化してブロック毎に固定長の符号データに圧縮処理する圧縮処理装置と、圧縮装置が生成した符号データを一時的に蓄積する画像メモリと、これら各メモリや装置のデータの入出力や処理のタイミングを制御する制御装置を備える画像圧縮装置において、前記圧縮処理装置は、前記ブロック内の各画素の３つの原色からなる画素データを所定順に入力し、前記３つの原色の中で最大の階調（信号振幅）を持つデータの中間値から閾値を検出する閾値検出回路と、この閾値に基づいて前記画素データを２つのグループに分類するデータ分配回路からなるグループ分割手段を１つ、または分割されたグループを更に分割して近似色数に応じたグループ分割を可能にする複数段のグループ分割手段を設けるとともに、前記データ分配回路毎にその複数の入力信号のタイミングを前記制御装置からの制御信号に同期させるパイプライン構成としたことを特徴とする。
【００１２】
前記パイプライン構成は、例えば、データ分配回路に入力する所定順の画像データを、閾値の検出タイミングに合わせて遅延させる。さらには、グループ別の近似色を求める処理結果に対応して各画素のグループ属性を遅延し、両方の最終データが同期するようにして、符号化信号（圧縮データ）を生成する。
【００１３】
また、前記グループ分割手段のデータ分配回路から出力されるグループ毎の画素データの階調を加算する加算回路とその加算結果を当該グループに属する画素数で除残する除残回路を有し、グループ毎の平均値から求めた近似色を用いて前記符号データを作成する符号データ作成手段を設け、前記除残回路は入力の被除数と除数に対応して設定されている除算結果を読み出すルックアップテーブルで構成したことを特徴とする。
【００１４】
また、本発明の画像圧縮装置には、前記ブロックの画素数、前記近似色数を含むパラメータの設定手段を設けている。
【００１５】
【発明の実施の形態】
以下、本発明の実施の形態を図面を用いて説明する。以下で、DATA〔7−0〕という表現は、DATA7，DATA6，DATA5，DATA4，DATA3，DATA2，DATA1及びDATA0という８本の信号線の組を意味する。まず、全体的な構成と動作を説明する。
【００１６】
図１は本発明による画像圧縮装置の基本構成を示す機能ブロック図である。本画像圧縮装置は制御回路0100、バッファメモリ0101、圧縮回路0102及び画像メモリ0103からなる。本実施例の圧縮回路0102はパイプライン制御で各処理を並列に動作させ、入力した画像データを一時的に蓄積するバッファメモリ0101からデータを受け取り、データの圧縮を行って画像メモリ0103に圧縮データを格納する。このとき、バッファメモリ0101、圧縮回路0102及び画像メモリ0103は制御回路0100によって制御される。
【００１７】
圧縮回路0102は、１ブロックの画素データを第１の閾値により２グループに分類する分割処理（１）手段0104、この２グループを第２、第３の閾値によりさらに分割し、元の画素データを４グループに分類する分割処理（２）手段0105、４グループの近似色を求めて、各画素をいずれかの近似色に割り当てて圧縮データを作成する圧縮データ作成手段0106及び、これら各手段の入力信号のタイミングを合わせるためのパイプライン制御手段0107からなる。
【００１８】
これによれば、圧縮回路0102がバッファメモリ0101からデータを入力して、画像メモリ0103に圧縮データを出力するまでの処理時間、すなわち、制御回路0100からのクロック数による遅延時間は入力データの内容に関わらず一定となる。また、出力されるデータの量も入力データの内容に関わらずデータ量に対して一定の比率となる。つまり、入力される画像データの内容に関わらず圧縮処理時間及び圧縮率が固定となる。なお、回路0100，0101，0102，0103は、回路単体でのリセット動作と、外部に接続した回路等からの信号でリセット動作をすることができる。
【００１９】
次に、本実施例における画像データの圧縮方式を具体的に説明する。図２に画像データ圧縮の原理を示す。本データ圧縮方式は、特公平06−7688号に記載されている「カラー画像情報の符号化処理方法」に基づく。本方式では、画像全体を４×４画素の領域を１ブロックとしてブロック単位で圧縮処理を行う。まず、（ａ）ブロック内の全画素をＲＧＢ空間上にマッピングし、（ｂ）グループ分割処理を行い１６個のデータを第１の閾値により２つのグループに分ける。各グループに属するデータの個数の最小値は１で、最大値は１６である。（ｃ）各グループについて更に分割処理を行い、第２、第３の閾値により４グループに分ける。（ｄ）この４つのグループの各々について、グループに属するデータの平均値をそのグループを代表する近似色として、４種類の近似色信号Ｃ０〜Ｃ４を設定する。（ｅ）近似色が設定されたら、各画素が属するグループを示す選択信号ｘと各グループ近似色信号Ｃｘを圧縮データとして出力する。各グループに属するデータの個数の最小値は０、最大値は１６である。
【００２０】
図３に圧縮処理のフローチャートを示す。まず、ブロックサイズと近似色数からなる圧縮率、メモリのデータ領域や符号領域、出力装置のガンマ特性（信号／濃度特性）などを初期設定する（ｓ１０１）。次に、１ブロック当り４×４画素のデータ（ＲＧＢ）を入力し（ｓ１０２）、以下のグループ分割処理を行う。グループ分割は、ブロック内のデータスキャンを行いながら、Ｒ，Ｇ，Ｂの中で最大の信号振幅を持つ信号を閾値設定のための色信号とし（ｓ１０３）、出力装置のガンマ特性を考慮して振幅範囲の中間値を閾値とし、（ｓ１０４）、この閾値を用いてブロック内の各画素のグループ分けを行う（ｓ１０５）。
【００２１】
グループが２つに分割されたら、各グループについて更にグループ分割処理を行い、最終的に１６個のデータを４グループに分ける（ｓ１０６）。この４つのグループの各々について、グループに属するデータの平均値を求め、そのグループを代表する近似色として設定する（ｓ１０７）。近似色が設定されたら、各画素が属するグループを示す選択信号と各グループ近似色信号を圧縮データとして出力する（ｓ１０８）。この一連の処理を全ブロックについて終了するまで、繰返し行う（ｓ１０９）。
【００２２】
本実施例での画素データＲ，Ｇ，Ｂは各８bitで、１画素につき24bitとなっている。１ブロックは１６画素あるので、圧縮前の１ブロックのデータ量は384bitとなる。圧縮後の１ブロックのデータ量は、選択信号ｘが各画素2bitで１６画素あるので32bit、近似信号Ｃは１色24bitで４色あるので96bitとなり、合計で128bitとなり、１／３に圧縮される。つまり、画像情報の内容に関わらず、画像データは１／３の定率で圧縮できる。
【００２３】
次に、各部の機能を説明する。バッファメモリ0101は、画像データ全体のうち４ラスタ分（４ｎ〜４ｎ＋３）だけを保持するラインバッファであり、図４に示すように画像データが格納される。画像データは１画素につき３バイトであり、ラインメモリのアドレスが先頭の方からＲ，Ｇ，Ｂの順に１バイトずつ格納されている。図示では各ラスタの画素番号順に、画素の先頭アドレスを示している。
【００２４】
図５に示すように、バッファメモリ0101からのデータの読み出しはブロック０，１，２．．．の順番で、ブロック内ではブロック画素番号（図示）の順番で読み出される。
【００２５】
図６に圧縮回路0102の詳細な構成を示す。圧縮回路0102はバッファ読み出し回路0600と、第１の閾値を決定して２グループに分割するための閾値検出回路0601、遅延バッファＡ0602及びデータ分配回路Ａ0603と、第１、第２の閾値を決定して更に２分割するための閾値検出回路0604，0605、遅延バッファＢ0606及びデータ分配回路Ｂ0607と、各グループに属するデータの平均値を求めて近似色信号を決定するための加算回路0608〜0611、除残回路0612及び遅延バッファＣと、出力バッファ0614からなる。Ａ〜Ｃの遅延バッファは、図２の（ｂ），（ｃ），（ｄ）と（ｅ）の処理（以下では、大処理Ａ、大処理Ｂ、大処理Ｃと呼ぶ）毎に、処理結果と次の処理に用いる入力データとの同期を取るため、その処理時間に相当する分だけ入力データを遅延させる。
【００２６】
図７、図８及び図９に、図６の圧縮回路の全体的な動作タイミングと制御回路の制御タイミングを示す。主として、図７は大処理Ａ、図８は大処理Ｂ、図９は大処理Ｃの動作を示し、それぞれの詳細な説明は後述する各部の説明時に併用して行う。
【００２７】
圧縮回路0102の各部（0601〜0614）で使用するクロックは、先頭のバッファ読み出しに使用するLBRCLKを３分周したCLKであり、このCLKに同期して１周期につき１画素の画像データの圧縮処理をパイプライン的に実行する。本実施例の圧縮処理は１ブロック１６画素のデータに対し、データ入力から圧縮データ出力までの処理を、７４クロック数の一定時間で行う。すなわち、最初の1ブロック16画素の最初ｍのデータの入力から74クロック後に、最初の1ブロックの圧縮データの出力が開始され、その後16クロック毎に次のブロックの圧縮データが出力される。
【００２８】
ちなみに、大処理Ａでは、その閾値検出回路が１９クロックで処理するので、遅延バッファＡは入力信号（D−0D〔23−0〕）を１９クロックだけ遅延する。なお、データ分配回路Ａは２クロックで処理する。大処理Ｂでは、その各閾値検出回路が並列に１９クロックで処理するので、遅延バッファＢは入力信号（D−20D〔24−0〕）データを１９クロックだけ遅延する。なお、データ分配回路Ｂは２クロックで処理する。大処理Ｃでは、各加算回路が並列に１６クロックで処理を行い、除算回路は加算回路が出力する12個の各16bitデータを、5クロックのパイプライン処理で1つずつ処理して8bitのデータを出力する。このため、全ての除算結果が揃うのは加算回路のデータ出力から16クロック後となる。遅延バッファＣは2bitの入力信号（IDX−41D）16個をまとめて32bitのデータとし、最初のデータ入力から16クロック後に出力を開始し、16クロックの間保持する。出力バッファ0614は、各8bitの除算結果12個と、遅延バッファＣの32bitの出力データを受け取り、合計128bitのデータを16クロックの間、値を保持して出力する。なお、本実施例では各処理のクロック数を規定しているが、必ずしもこのクロック数に限定されるものではない。
【００２９】
次に、圧縮回路0102の各部を説明する。図１０にバッファ読み出し回路0600の動作タイミングを示す。バッファ読み出し回路0600は、制御回路0100からのLBRCLKに同期してバッファメモリ0101からデータを読み出し、Ｒ，Ｇ，Ｂそれぞれ８ビットのデータを２４ビットに合成する。ここで、信号LBRENB−P，ENB−0P，LBRCLK，CLK，LBRADR〔15−0〕は制御回路0100から出力される信号であり、LBRENB−Pは回路0600全体のイネーブル信号、LBRCLKは回路0600で使用するクロック信号、CLKは圧縮回路0102全体で使用するクロック信号であり、ENB−0Pは閾値検出回路0601全体と遅延バッファＡ0602全体のイネーブル信号である。
【００３０】
バッファ読み出し回路0600は、制御回路0100からのイネーブル信号LBRENB−Pが”１”になったのを受けて、バッファメモリ0101からＲ，Ｇ，Ｂそれぞれ8bit幅で出力される画像データLBRD〔7−0〕を受け取り、それぞれDR〔7−0〕，DG〔7−0〕，DB〔7−0〕として、LBRCLKで４クロック後にこれらをまとめて24bit幅のデータDRGB〔23−0〕とし、これを図７に示すように出力信号D−0D〔23−0〕として出力し、閾値検出回路0601と遅延バッファＡ0602にそれぞれ入力する。
【００３１】
また、制御回路0100はD−0D〔23−0〕に同期してイネーブル信号ENB−0Pを”１”にする。このとき、D−0D〔7−0〕がＲのデータ、D−0D〔15−8〕がＧのデータ、D−0D〔23−16〕がＢのデータである。このようにして、閾値検出回路0601に転送する２４ビットのデータを生成する。
【００３２】
次に、閾値検出回路0601、遅延バッファＡ及びデータ分配回路Ａによる大処理Ａについて説明する。図１１は閾値検出回路0601の全体構成、図１２はその動作タイミングを示す。
【００３３】
閾値検出回路0601は３並列の範囲検出回路0800，0801，0802と、閾値決定回路803で構成されている。閾値検出回路0601は、１６個の画素データを２つのグループに分割するための第１閾値を検出する。ここで、図１２の信号ENB−Pは、図７に示すように制御回路0100からENB−0Pとして出力されている信号であり、閾値検出回路0601内の範囲検出回路0800，0801，0802及び閾値決定回路803のイネーブル信号である。
【００３４】
閾値検出回路0601は、ENB−Pが”１”になったのを受けて、バッファ読み出し回路0600の出力信号D−0D〔23−0〕をDMAX〔23−0〕とDMIN〔23−0〕として両方に同じ信号を入力し、ＲのデータDMAX〔7−0〕，DMIN〔7−0〕を範囲検出回路0800に、ＧのデータDMAX〔15−8〕，DMIN〔15−8〕を範囲検出回路0801に、ＢのデータDMAX〔23−16〕，DMIN〔23−16〕を範囲検出回路0802にそれぞれ入力し、19クロック後に閾値決定回路0803からSEL−19D〔2−0〕、THVAL−19D〔7−0〕を16クロックの間、値を保持して出力する。
【００３５】
図１３に範囲検出回路の構成を示す。範囲検出回路0800，0801，0802は、入力データが違うだけで回路自体は同一である。8bitのデータDMAX〔7−0〕，DMIN〔7−0〕を入力し、１６個のDMAX〔7−0〕の最大値を最大検出回路0900で算出し、１６個のDMIN〔7−0〕の最小値を最小値検出回路0901で算出し、減算器0902で減算して最大値から最小値までの範囲の値を算出し、範囲値RNGを１bitシフタ0903で１／２した値と最小値を加算器0904で加算して中点の値THVを算出し、その範囲値RNGと中点値THVを出力する。図１２に示すように、17クロック後に、16個のデータ中の最大値と最小値の範囲を示す信号RNG−17D〔7−0〕と、最大値と最小値の中点の値を示す信号THV−17D〔7−0〕を、16クロックの間、値を保持して出力する。
【００３６】
図１４に閾値決定回路の構成を示す。閾値決定回路0803は、範囲検出回路0801，0802，0803がＲ，Ｇ，Ｂ毎に出力する信号RNG−17D〔7−0〕とTHV−17D〔7−0〕をそれぞれRNG(R)〔7−0〕、THV(R)〔7−0〕、RNG(G)〔7−0〕、THV(G)〔7−0〕、RNG(B)〔7−0〕、THV(B)〔7−0〕として受け取り、３入力の比較器1000でRNG(R)〔7−0〕、RNG(G)〔7−0〕、RNG(B)〔7−0〕を比較して、Ｒ，Ｇ，Ｂのどれが最大かを示す3bitの選択フラグ、つまり信号SEL−2D〔2−0〕を出力する。
【００３７】
ＲＧＢの選択フラグSEL−2D〔2−0〕の出力は、RNG(R)〔7−0〕、RNG(G)〔7−0〕及びRNG(B)〔7−0〕のうちで、RNG(G)〔7−0〕が最大だった場合は”001”となり、RNG(G)〔7−0〕が最大だった場合は”010”、RNG(B)〔7−0〕が最大だった場合は”100”となる。
【００３８】
また、SEL−2D〔2−0〕に基づいて、セレクタ1001でＲ，Ｇ，Ｂのうち最大のもののTHV〔7−0〕を選択し、THVAL−19D〔7−0〕として、図１２に示すように２クロック後に16クロックの間、値を保持して出力する。この２つの出力信号SEL−2D〔7−0〕とTHVAL−2D〔7−0〕は、それぞれ図６に示すSEL1−19D〔2−0〕，THVAL1−19D〔7−0〕として閾値検出回路0601から出力される。
【００３９】
補足すれば、閾値検出回路0601は24bitの画素データを受け取ると、まずＲ，Ｇ，Ｂ各色の画素データ8bitに分離し、分離された各色のブロック毎の１６画素のデータの中から最大値と最小値を検出して、範囲RNG8bitと中間値(中点)THV8bitを求め、その中から最大の範囲RNGの中点を閾値THVALに設定する。閾値情報は閾値8bitと、ＲＧＢの選択フラグSELの3bitとの合計11bitからなる。このようにして、１６個の画素のデータを２つのグループに分割するための第１の閾値を検出し、データ入力から１９クロック後の１６クロックの間、閾値データを出力する。
【００４０】
次に、図６と図７を参照して遅延バッファＡの動作を説明する。遅延バッファＡ0602は、閾値検出回路0601が第１の閾値を検出するまで画素データを遅延させる。制御回路0100からのイネーブル信号ENB−0Pが”１”になったのを受けて、バッファ読み出し回路0600の出力信号D−0D〔23−0〕を入力し、SEL−19D〔2−0〕とTHVAL1−19D〔7−0〕が出力されるまでの間データを遅延させ、SEL−19D〔2−0〕とTHVAL1−19D〔7−0〕が出力されるタイミングに合わせてD−0D〔23−0〕を19クロック遅延させた出力信号D−19D〔23−0〕を出力する。
【００４１】
このとき制御回路0100は、D−19D〔23−0〕に同期してENB−19Pを”１”にする。このようにして、遅延バッファＡは、閾値検出回路0601の出力タイミングと同期をとって、データ入力の１９クロック後に元の画素データの出力をデータ分配回路Ａへ開始する。
【００４２】
図１５はデータ分配回路Ａの構成、図１６はその処理フローチャート、図１７はその動作タイミングを示す。データ分配回路Ａ0603はセレクタ1300と比較器1301などから構成される。ＲＧＢ各8bitの画素データと、11bitの閾値データを受け取り、まず、3bitの選択フラグから比較対象となるＲ，Ｇ，Ｂいずれかの画素データを選択する（ｓ２０１）。次に、選択した画素データと閾値を比較し（ｓ２０２）、閾値以上であれば元のデータ24bitにフラグ”１”を付加し（ｓ２０３）、閾値未満であれば元のデータ24bitにフラグ”０”を付加し（ｓ２０４）て、２つのグループに分類する。
【００４３】
次に、データ分配回路Ａ0603の動作を詳細に説明する。ここで、図１７の信号ENB−Pは、制御回路0100からENB−19P（図７）として出力されている信号であり、データ分配回路Ａ全体のイネーブル信号である。
【００４４】
データ分配回路Ａは、ENB−Pが”１”になったのを受けて、閾値検出回路0601の出力信号THVAL1−19D〔7−0〕、SEL1−19D〔2−0〕をそれぞれTHVAL〔7−0〕、SEL〔2−0〕として入力し、遅延バッファＡ0602の出力信号D−19D〔23−0〕をD〔23−0〕として入力する。そして、閾値検出回路0803のときと同様に、SEL〔2−0〕によりセレクタ1300でＲのデータD〔7−0〕，GのデータD〔15−8〕，BのデータD〔23−16〕のうち一つを選択してDT〔7−0〕とし、DT〔7−0〕とTHVAL〔7−0〕を比較器1301で比較し、結果を１bitの信号D〔24〕として出力する。
【００４５】
このときDT〔7−0〕＞THVAL〔7−0〕の場合は、D〔24〕は”１”となり、それ以外の場合は”０”となる。そして、このD〔24〕とD〔23−0〕を合わせてD−1D〔24−0〕として、図６に示す出力信号D−20D〔24−0〕とし、図７に示すタイミングで遅延バッファＢに出力する。このとき制御回路0100は、D−20D〔24−0〕に同期してENB−20Pを”１”にする。
【００４６】
さらに、図１５（ｂ）に示すように、D〔24〕をセレクタ1302，1303に入力し、D〔24〕をインバータ1306，1307で反転したものをセレクタ1304，1305に入力する。そしてD〔24〕が”１”のときは、セレクタ1302，1303，1304，1305の出力信号DAMAX−2D〔23−0〕，DAMIN−2D〔23−0〕、DBMAX−2D〔23−0〕，DBMIN−2D〔23−0〕は、それぞれD−1D〔23−0〕の値，DID〔23−0〕の値，固定値000000h（最大検出時に影響を与えない値），固定値FFFFFFh（最小値検出時に影響を与えない値）となる。
【００４７】
D〔24〕の値が”０”のときは、各セレクタの出力信号の値は、固定値000000h，固定値FFFFFFh，D1−D〔23−0〕の値，D−1D〔23−0〕となる。そして、これらのDAMAX−2D〔23−0〕，DAMIN−2D〔23−0〕、DBMAX−2D〔23−0〕，DBMIN−2D〔23−0〕を、それぞれ図６に示すDMAX−21D〔23−0〕，DAMIN−21D〔23−0〕、DBMAX−21D〔23−0〕，DBMIN−21D〔23−0〕として図７や図１７に示すタイミングで出力する。このとき、制御回路0100は、DAMAX−21D〔23−0〕に同期してENB−21Pを”１”にする。
【００４８】
このようにして、データ分配回路Ａは１６個の画素のデータを閾値により２つのグループに分類し、データ入力から２クロック後にそれぞれの画素の分類結果を出力する。
【００４９】
次に、図７及び図８を参照しながら大処理Ｂについて説明する。大処理Ｂはデータ分配回路Ａで第１の閾値により分類された２つのグループを更に分割処理して、１ブロックの１６個の画素データを４グループに分ける。このため、２つの閾値検出回路0604，0605（回路自体は閾値検出回路0601と同じもの）と、データ分配回路Ｂ及び元の画素データを閾値検出処理の期間だけ遅延させる遅延バッファＢを有している。
【００５０】
閾値検出回路0604，0605は、制御回路0100からのイネーブル信号ENB−21Pが”１”になった（図７）のを受けて動作を開始する。閾値検出回路0604はデータ分配回路Ａ0603の出力信号DAMAX−21D〔23−0〕，DAMIN−21D〔23−0〕をそれぞれDMAX〔23−0〕，DMIN〔23−0〕として入力し、SEL−19D〔2−0〕とTHVAL−19D〔7−0〕を、それぞれSEL2A−39D〔2−0〕，THVAL2A−39D〔7−0〕として出力する。閾値検出回路0605はデータ分配回路Ａ0603の出力信号DBMAX−21D〔23−0〕，DBMIN−21D〔23−0〕をそれぞれDMAX〔23−0〕，DMIN〔23−0〕として入力し、SEL−19D〔2−0〕とTHVAL−19D〔7−0〕を、それぞれSEL2B−39D〔2−0〕，THVAL2B−39D〔7−0〕として出力する。
【００５１】
これらSEL2A−39D〔2−0〕，SEL2B−39D〔2−0〕，THVAL2A−39D〔7−0〕，THVAL2B−39D〔7−0〕の出力信号のタイミングは、図８に示すTHVAL2A−39D〔7−0〕のタイミングと同じである。このようにして、第１の閾値により分類されたグループからそれぞれ第２、第３の閾値を検出し、データ入力から１９クロック後に出力する。
【００５２】
遅延バッファＢ0606は、元の画像データと第１の閾値による分類結果を遅延させる回路であり、遅延バッファＡと同様に、制御回路0100が出力するイネーブル信号ENB−20Pが”１”になったのを受けて、データ分配回路Ａ0603の出力信号D−20D〔24−0〕を入力し、SEL2A−39D〔2−0〕，THVAL2A−39D〔7−0〕，SEL2B−39D〔2−0〕，THVAL2B−39D〔7−0〕が出力されるまで19クロックの間データを遅延させ、上述のSEL2A−39D〔2−0〕，THVAL2A−39D〔7−0〕，SEL2B−39D〔2−0〕，THVAL2B−39D〔7−0〕が出力されるタイミングに合わせて出力信号D−39D〔24−0〕を出力する。このとき制御回路0100は、D−39D〔24−0〕に同期してENB−39Pを”１”にする。
【００５３】
このようにして、第２、第３の閾値の出力タイミングに同期させ、データ入力から１９クロック後に、元の画像データと第１閾値による分類結果をデータ分配回路Ｂに出力する。
【００５４】
図１８にデータ分配回路Ｂの構成を示す。データ分配回路Ｂは、第１の閾値によりデータ分配回路Ａで２つのグループに分類された各々のグループ画素データを、閾値検出回路0604，0605で検出された第２、第３の閾値により、さらにそれぞれ２つ、合計４つのグループに分類する。
【００５５】
データ分配回路Ｂ0607は、図８に示すように制御回路0100が出力するENB−39Pが”１”になったのを受けて、図６に示すSEL2A−39D〔2−0〕，THVAL2A−39D〔7−0〕，SEL2B−39D〔2−0〕，THVAL2B−39D〔7−0〕，D−39D〔24−0〕をそれぞれ、SEL2A〔2−0〕，THVAL2A〔7−0〕，SEL2B〔2−0〕，THVAL2B〔7−0〕，D〔24−0〕として入力する。
【００５６】
セレクタ1500は、D〔24〕により、THVAL2A〔7−0〕とTHVAL2B〔7−0〕のどちらかを選択し、THVAL2−1D〔7−0〕として出力する。セレクタ150１はD〔24〕により、SEL2A〔2−0〕とSEL2B〔2−0〕のどちらかを選択し、SEL〔2−0〕として出力する。D〔24〕＝”１”のときにはTHVAL2A〔7−0〕とSEL2A〔2−0〕が選択され、D〔24〕＝”０”のときにはTHVAL2B〔7−0〕とSEL2B〔2−0」が選択される。そして、SEL〔2−0〕によりセレクタ1502で、D〔7−0〕,D〔15−8〕,D〔23−16〕のいずれかを選択し、DT−1D〔7−0〕として出力する。このとき、DT−1D〔7−0〕には、SEL〔2−0〕＝”001”の場合はD〔7−0〕、SEL〔2−0〕＝”010”の場合はD〔15−8〕、SEL〔2−0〕＝”100”の場合はD〔23−16〕が選択される。
【００５７】
比較器1504はTHVAL2−1D〔7−0〕とDT−1D〔7−0〕を比較して１bitの信号Ｆを出力する。このとき、DT−1D〔7−0〕＞THVAL2−1D〔7−0〕の場合、比較器1504の出力Ｆは”１”となり、それ以外の場合の出力Ｆは”０”となる。この信号Fは、その画素の値が第2の閾値または第3の閾値より大きいことを示す。そして、ANDゲート1507でD〔24〕とＦのANDをとり、その出力をDA−2D〔24〕とし、ANDゲート1508で、D〔24〕とインバータ1506で反転したもののANDをとり、その出力をDB−2D〔24〕とする。また、ANDゲート1509でD〔24〕をインバータ1505で反転したものとＦのANDをとり、その出力をDC−2D〔24〕とする。また、ANDゲート1510でD〔24〕をインバータ1505で反転したものとＦをインバータ1506で反転したものとのANDをとり、その出力をDD−2D〔24〕とする。これにより、DA−2D〔24〕、DB−2D〔24〕、DC−2D〔24〕、DD−2D〔24〕のうち1になるのは同時に1つだけであり、他の3つは0となる。これらの、DA−2D〔24〕、DB−2D〔24〕、DC−2D〔24〕、DD−2D〔24〕は、その画素が4つのグループに分類されるときに、どのグループに分類されるかを示すフラグとなる。
【００５８】
さらに、ANDゲート1511で、D〔23−0〕のD〔23〕からD〔0〕の24本の１bitの信号の各々とDA−2D〔24〕のANDをとり、その出力をDA−2D〔23−0〕とし、DA−2D〔24〕と合せて25bitの出力信号DA−2D〔24−0〕とする。同様に、ANDゲート1512でD〔23−0〕とDB−2D〔24〕のANDをとり、その出力をDB−2D〔23−0〕とし、さらにDB−2D〔24〕と合せて25bitの出力信号DB−2D〔24−0〕とする。また、ANDゲート1513でD〔23−0〕とDC−2D〔24〕のANDをとり、その出力をDC−2D〔23−0〕として、さらにDC−2D〔24〕と合せて25bitの出力信号DC−2D〔24−0〕とする。また、ANDゲート1514でD〔23−0〕とDD−2D〔24〕のANDをとり、その出力をDD−2D〔23−0〕として、さらにDD−2D〔24〕と合せて25bitの出力信号DD−2D〔24−0〕とする。これにより、DA−2D〔23−0〕、DB−2D〔23−0〕、DC−2D〔23−0〕、DD−2D〔23−0〕、のうち1つだけがD〔23−0〕の値となり、残りの3つの値は全て0となる。
【００５９】
それらの出力信号DA−2D〔24−0〕，DB−2D〔24−0〕，DC−2D〔24−0〕，DD−2D〔24−0〕は、それぞれ図６のDA−41D〔24−0〕，DB−41D〔24−0〕，DC−41D〔24−0〕，DD−41D〔24−0〕として示され、図８に示すDA−41D〔24−0〕のタイミングで出力する。
【００６０】
また、D〔24〕をインバータ1505で反転したものとＦをインバータ1506で反転したものを、それぞれIDX−2D〔0〕、IDX−2D〔1〕とし、合せて2bitの出力信号IDX−2D〔1−0〕とし、図６に示す信号IDX−41D〔1−0〕として、図８に示すようなタイミングで出力する。信号IDX−41D〔1−0〕はグループ属性フラグであり、この2bitのフラグの値により、画素データは、例えばグループＡ、グループＢ、グループＣ、グループＤに分けられる。このとき制御回路0100は、IDX−41D〔1−0〕に同期してENB−41Pを”１”にする。
【００６１】
このようにして、大処理Ａで２つに分けられた画素データ25bit（１bitはフラグ）は、大処理Ｂで４つに分けられ、さらに１bit付加されて合計26bitの画素データ（このうち、2bitはグループ属性フラグ）となる。データ分配回路Ｂはそのデータ入力から２クロック後に2bitのグループ属性フラグからその画素が、グループＡ、グループＢ、グループＣ、グループＤのどのグループに分類されるかを判断し、それぞれの画素の分類結果を1bitのフラグを付加して出力する。このフラグが１の場合は、その画素がそのグループに属することを示し、０の場合はそのグループに属さないことを示す。また、フラグの値が０の場合は、データの値も０となる。各グループに属する画素数の最小値は０、最大値は１６となる。
【００６２】
次に大処理Ｃについて図６、図８、図９を参照しながら説明をする。大処理Ｃはデータ分配回路Ｂで４グループに分類された画素データを、グループ毎に加算、除算して各々の平均値を求め、グループを代表する近似色の設定を行う。
【００６３】
図１９に加算回路の構成、図２０にその処理フロー、図２１にその動作タイムチャートを示す。加算回路0608（他の加算回路0609，0610，0611も同じ）は、主に４つの加算回路1600〜1603を用い構成している。
【００６４】
加算回路0608は、Ｒ，Ｇ，Ｂ各色毎に処理を行うため、入力データを各色８ｂｉｔのデータＲ(D〔7−0〕)，Ｇ(D〔15−8〕)，Ｂ(D〔23−16〕)とフラグＦ（D〔24〕）に分離し（ｓ３０１）、Ｒ，Ｇ，Ｂ及びＦについてそれぞれ１６個のデータの加算処理を行う（ｓ３０２〜ｓ３０５）。加算処理後のＲ，Ｇ，Ｂはそれぞれ12bit、Ｆは4bitのデータとし、Ｒ，Ｇ，Ｂ各12bitにフラグＦ4bitを付加し、それぞれ１６ｂｉｔのデータとして出力する（ｓ３０７）。
【００６５】
次に、加算回路0608，0609，0610，0611の全体動作を説明する。ここで、図２１の信号ENB−Pは制御回路0100からENB−41Pとして出力されている信号であり、加算回路全体のイネーブル信号である。ENB−Pが”１”になったのを受けて、データ分配回路Ｂ0607の出力信号DA−41D〔24−0〕をD〔24−0〕として入力する。加算回路0608がデータDA−41D〔24−0〕を入力すると、加算回路1601は8bitのデータD〔7−0〕の16個の合計値を、16クロック後に12bitの信号DR−16D〔15−4〕として、16クロックの間、値を保持して出力する。同様に、加算回路1602，1603はそれぞれD〔15−8〕，D〔23−16〕の16個の合計値を12bitの信号DG−16D〔15−4〕，DB−16D〔15−4〕として出力する。また、加算回路1600は1bitのデータD〔24〕の16個の合計値を、16クロック後に4bitの信号DS−16D〔3−0〕とし、16クロックの間、値を保持して出力する。
【００６６】
さらに、DR−16D〔15−4〕とDS−16D〔3−0〕を合せて16bitの信号DR−16D〔15−0〕とする。同様に、DG−16D〔15−4〕とDS−16D〔3−0〕を合せて16bitの信号DG−16D〔15−0〕とし、DB−16D〔15−4〕とDS−16D〔3−0〕を合せて16bitの信号DB−16D〔15−0〕とし、それぞれ図６に示すDAR−57D〔15−0〕，DAG−57D〔15−0〕，DAB−57D〔15−0〕として、図８に示すタイミングで１６クロック後に出力する。このとき、DS−16D〔3−0〕が”0”の場合はその値を16とみなす。
【００６７】
加算回路0609，0610，0611は加算回路0608と同じ構成であり、図６に示すように、それぞれDB−41D〔24−0〕，DB−41D〔24−0〕，DB−41D〔24−0〕を入力し、それぞれDBR−57D〔15−0〕，DBG−57D〔15−0〕，DBB−57D〔15−0〕，DCA−57〔15−0〕，DCG−57D〔15−0〕，DCB−57D〔15−0〕，DDR−57D〔15−0〕，DDG−57D〔15−0〕，DDB−57D〔15−0〕を出力する。このとき制御回路0100は、図９に示すように、DAR−57D〔15−0〕に同期してENB−57Pを”１”にする。
【００６８】
このようにして、各加算回路はそのデータ入力から１６クロック後に、各グループに属する画素のＲ，Ｇ，Ｂそれぞれの合計値（12bit）と、属する画素の画素数（4bit）を計算し、グループＡとしてDAR，DAG，DAB、グループＢとしてDBR，DBG，DBB、グループＣとしてDCR，DCG，DCB、グループＤとしてDDR，DDG，DDBを、除残回路0612に出力する。
【００６９】
図２２は除算回路0612の構成、図２３はその動作タイミングを示す。除算回路0612は、加算回路0608〜0611で計算された各グループのＲ，Ｇ，Ｂの合計値をそれぞれのグループの画素数で除算し、各グループのＲ，Ｇ，Ｂの平均値を計算する。ここで、図２３の信号ENB−Pは制御回路0100から図９に示すようなタイミングで出力されている信号ENB−57Pであり、除算回路0612全体のイネーブル信号である。
【００７０】
除算回路0612は、ENB−Pが”１”になったのを受けて、図６に示すように加算回路0608〜0611から出力信号DAR−57D〔15−0〕，DAG−57D〔15−0〕，DAB−57D〔15−0〕，DBR−57D〔15−0〕，DBG−57D〔15−0〕，DBB−57D〔15−0〕，DCR−57D〔15−0〕，DCG−57D〔15−0〕，DCB−57D〔15−0〕、DDR−57D〔15−0〕，DDG−57D〔15−0〕，DDB−57D〔15−0〕を、それぞれDAR〔15−0〕，DAG〔15−0〕，DAB〔15−0〕，DBR〔15−0〕，DBG〔15−0〕，DBB〔15−0〕，DCR〔15−0〕，DCG〔15−0〕，DCB〔15−0〕，DDR〔15−0〕，DDG〔15−0〕，DDB〔15−0〕として、セレクタ1801に入力する。また、制御回路0100からのCLKを入力するカウンタ1800は4bitの出力SEL〔3−0〕をセレクタ1801に出力する。
【００７１】
セレクタ1801はSEL〔3−0〕により、16bitの入力信号の12組から１組を選択して、ルックアップテーブル（ＬＵＴ）1802に与える。ルックアップテーブル1802は、入力信号16bitの上位12bitを被除数、下位4bitを除数として、対応する8bitの除算結果をD−5D〔7−0〕として出力し、図６に示す出力信号D−62D〔7−0〕として、図９に示すようなタイミング（入力から５クロック後）で出力する。
【００７２】
ＬＵＴ1802による除算は、実際には入力の被除数と除数に対し、予め設定されている商を読み出す処理となるので、除残処理時間を一定にし、短縮できる。ここで、ルックアップテーブル1802に入力する信号の下位4bit〔3−0〕が”0000”の場合は、”10000”とみなして対応する除算結果を出力する。また、このとき制御回路0100は、D−62D〔7−0〕に同期してENB−62Pを”１”にする。
【００７３】
このように、ＬＵＴテーブルを用いて除算を行いて各グループの画素Ｒ，Ｇ，Ｂの平均値を計算し、データ入力から５クロック後に１２個の計算結果の出力を開始して、除算時間の高速化と一定化を実現している。
【００７４】
次に、遅延バッファＣ0613について説明する。図２４は遅延バッファＣ、図２５はその動作タイミングを示す。遅延バッファＣ0613は、データ分配回路Ｂ0607から出力される各画素の分類結果（グループ属性フラグ）を、大処理Ｃでの加算処理及び除残処理の期間に対応して遅延させる回路である。ここで、図２５の信号ENB−Pは制御回路0100から図９に示すタイミングで出力されている信号ENB−41Pであり、遅延バッファＣ0613全体のイネーブル信号である。
【００７５】
遅延バッファＣ0613は、ENB−Pが”１”になったのを受けて、図６に示すデータ分配回路Ｂ0607の出力信号IDX−41D〔1−0〕をD〔1−0〕として受けとり、図２４（ａ）に示すように、2bitのラッチ2000〜2015に入力する。このとき、ラッチ2000〜2015のそれぞれには、図２４（ｂ）に示すように、カウンタ2016とデコーダ2017から出力されるイネーブル信号が入力され、図２５に示すようにそれぞれ１クロック異なるタイミングでデータをラッチする。
【００７６】
図２４（ｃ）に示すように、ラッチ2018は１６クロック後にラッチ2000〜2015の各2bitの信号を32bitのデータIDX−17D〔31−0〕としてラッチし、図６に示す信号IDX−58D〔31−0〕として図９に示すようなタイミングで出力し、16クロックの間保持される。これにより、１６個の画素の分類結果（グループ属性）を１６クロック間に亘って出力し、除算回路が１２個のデータの最後のデータを出力するタイミングに同期させている。
【００７７】
次に、圧縮回路0102から画像メモリ0103にデータを転送するための出力バッファ0614について説明する。図２６は出力バッファ0614の構成、図２７はその動作タイミングを示す。ここで、図２７の信号ENB−Pは、制御回路0100から図９に示すタイミングで出力されている信号ENB−62Pであり、出力バッファ0614全体のイネーブル信号である。
【００７８】
出力バッファ0614は、ENB−Pが”１”になったのを受けて、図６に示す除算回路0612の出力信号D−62D〔7−0〕をD〔7−0〕として受け取り、図２６（ａ）に示すように、8bitのラッチ2200〜2210に入力し、また、図６に示す遅延バッファＣ0613の出力信号IDX−59D〔31−0〕をIDX〔31−0〕として受け取り、32bitのラッチ2214に入力する。このとき、ラッチ2200〜2210には図２６（ｂ）に示すように、カウンタ2215とデコーダ2216から出力されるイネーブル信号がそれぞれに入力され、図２７に示すようにそれぞれ１クロック異なるタイミングでデータをラッチする。
【００７９】
ラッチ2211は12クロック後にラッチ2200，2203，2206，2209の各8bitの信号を32bitのデータDR−12D〔31−0〕としてラッチし、図６に示す信号DR−74D〔31−0〕として図９に示すタイミングで出力し、16クロックの間保持される。同様に、ラッチ2212は12クロック後にそれぞれラッチ2201，2204，2207，2210の各8bitの信号を32bitのデータDG−12D〔31−0〕としてラッチし、DG−74D〔31−0〕として出力し、16クロックの間保持される。ラッチ2213は、ラッチ2202，2205，2208の各8bitの信号とD〔7−0〕を合せてDB−11D〔31−0〕として12クロック後にDB−12D〔31−0〕としてでラッチし、DB−74D〔31−0〕として出力し、16クロックの間保持される。ラッチ2214はIDX〔31−0〕をIDX−12D〔31−0〕としてラッチして、図６に示すIDX−74D〔31−0〕として図９に示すタイミングで出力し、16クロックの間保持される。
【００８０】
この結果、除残回路出力D〔7−0〕と遅延バッファＣ出力IDX〔31−0〕の最終データが、たとえば図２７の１２クロック目で一致し、このクロックを起点に出力バッファからDG−12D〔31−0〕，DR−12D〔31−0〕，DB−12D〔31−0〕及びIDX−12D〔31−0〕が同期して出力される。
【００８１】
以上により、圧縮回路0102は画像データの内容に関わらず、各画素２４bitの１６個の画素データ、つまり合計384bitの画像データの入力開始から７４クロック後に、１／３に圧縮された128bitのデータにして出力する。
【００８２】
次に、画像メモリ0103について説明する。図２８は、画像メモリ0103のデータの格納を示す。出力バッファ0614からの合計128bit（16byte）の圧縮データである信号DR−74D〔31−0〕，DG−74D〔31−0〕，DB−74D〔31−0〕，IDX−74D〔31−0〕を、同図（ａ）に示すように、４×４画素ブロック１つのデータとして格納する。このデータは、同図（ｂ）に示すようなフォーマットになっている。ブロック１つのデータ長は固定なので、圧縮前のデータに対応する圧縮データのアドレスが一意に定まる。
【００８３】
図１の画像圧縮装置では、バッファメモリ0101から読み出すデータがなくなったら、制御回路0100が出力する全てのイネーブル信号を同時に”０”にして回路全体を一時停止させる。そして、バッファメモリ0101のデータが準備できたら全てのイネーブル信号を同時に”１”にして回路全体の動作を再開させる。バッファメモリ0101から読み出すデータがなくなり、読み出したデータが処理するデータの最後だった場合は、制御回路0100が出力するイネーブル信号LBRENB−Pを３クロックの間”１”にし、ENB−0P，ENB−19P，ENB−20P，ENB−21P，ENB−39P，ENB−41P，ENB−57P，ENB−62Pを75クロックの間”１”にして圧縮回路0102を動作させ、すべてのデータを処理する。
【００８４】
以上のように、本実施例による画像圧縮装置は、画像データの内容に関わらず、ブロック単位の１６個の画素データ384bitを入力し、１／３の128bitに圧縮したデータを作成する。また、画像データの入力開始から７４クロック後に圧縮データを出力する。つまり、画像データの内容に関わらず、圧縮率、圧縮処理時間が共に一定となる。
【００８５】
なお、上記実施例では１ブロックの近似色数４色、１ブロックのサイズを４×４画素としたが、これらをパラメータの設定により、２色または４色あるいは４×４または８×８というように、可変設定することができる。これらのパラメータ設定は、外部に接続されたパソコン等からの信号で可変設定することができる。また、これらのパラメータは、メモリ0103の容量に基づきオーバーフローしないように圧縮率を設定することができる。
【００８６】
次に、本実施例による画像圧縮装置の適用例を説明する。図２９に、マルチファンクションプリンタコントローラのシステム構成を示す。この例では、パソコン2500やスキャナ2501からのデータをコントローラ2502中の入力Ｉ／Ｆ回路2507で受け取る。入力Ｉ／Ｆ回路2507は受け取ったデータをデータ圧縮回路2508に渡す。圧縮回路2508はデータを圧縮し、CPUバス2506を介してメモリ2505に転送する。その後、メモリ2505から、バス2506を介してデータ伸長回路2509に圧縮データを転送し、伸長回路2509はデータを伸長して、プリンタ出力回路Ｉ／Ｆ回路2510にデータを渡し、Ｉ／Ｆ回路2510はプリンタ2503の動作に合せてデータをプリンタ2503に出力する。
【００８７】
このとき、入力Ｉ／Ｆ回路2507は図１のバッファメモリ0101に相当し、データ圧縮回路2508は図１の制御回路0100と圧縮回路0102に相当し、メモリ2505は図１の画像メモリ0103に相当する。このメモリ2505はデータ圧縮回路2508、CPU2504の両方で使用する。
【００８８】
これによれば、圧縮回路2508の処理時間や圧縮データ量が画像内容に関わらず一定となるので、パラメータを適当に設定してプリンタ動作に追随できるデータ処理が可能になり、画像データ入力後のプリンタ作業を計画的に遂行できる。
【００８９】
図３０に、本実施例による画像圧縮装置の他の適用例を示す。図２９のシステムと相違は、画像データ専用のバスと画像データ専用のメモリを持つ点である。この例では、パソコン2600やスキャナ2601からのデータをコントローラ2602中の入力Ｉ／Ｆ回路2607で受け取り、このデータをデータ圧縮回路2608で圧縮して画像データバス2611を介して画像メモリ2612に転送する。その後、画像メモリ2612から、バス2611を介してデータ伸長回路2609に圧縮データを転送し、伸長回路2609はデータを伸長して、プリンタ出力Ｉ／Ｆ回路2610にデータを渡し、Ｉ／Ｆ回路2610はプリンタの動作に合わせてデータをプリンタ2603に出力する。
【００９０】
このとき、入力Ｉ／Ｆ回路2607は図１のバッファメモリ0101に相当し、データ圧縮回路2608は図１の制御回路0100と圧縮回路0102に相当し、画像メモリ2612は図１の画像メモリ0103に相当する。この画像メモリ2612は画像データ専用のメモリで、CPU2604はメモリ2605を使用する。この構成では主にCPUアクセス用のCPUバス2606と、画像データ専用の画像データバス2611と分けているので、お互いに独立して動作することができ、図２９のシステム構成よりもより高速に動作することができる。
【００９１】
【発明の効果】
本発明によれば１ブロック当りの圧縮データ量とともに圧縮処理時間が一定となるため、信号処理クロック数、符号データ転送時間、符号データ蓄積メモリ容量の必要とする数値が予測可能となり、装置が必要最小限のもので構成できる。また、前後の処理のタイミングを固定的に決定することができるので、圧縮前のデータと圧縮後のデータのメモリ上の位置関係が一意に定まり、圧縮後のデータから必要な部分だけを取り出すような処理が容易になる。
【図面の簡単な説明】
【図１】本発明の圧縮処理装置の基本構成を示す機能ブロック図。
【図２】本実施例の画像データ圧縮方式（ＢＴＣ圧縮方式）の原理を示す模式図。
【図３】ＢＴＣ圧縮方式の処理手順を示すフローチャート。
【図４】バッファメモリのアドレスと画像データの関係を示す説明図。
【図５】バッファメモリからのデータ読み出し順序を示す説明図。
【図６】圧縮回路の構成の一実施例を示すブロック図。
【図７】圧縮回路の動作タイミングの一部（その１）を示すタイムチャート。
【図８】圧縮回路の動作タイミングの一部（その２）を示すタイムチャート。
【図９】圧縮回路の動作タイミングの一部（その３）を示すタイムチャート。
【図１０】バッファ読み出し回路0600の動作タイミングを示すタイムチャート。
【図１１】閾値検出回路全体の構成を示すブロック図。
【図１２】閾値検出回路全体の動作タイミングを示すタイムチャート。
【図１３】範囲検出回路の構成を示すブロック図。
【図１４】閾値決定回路の構成を示すブロック図。
【図１５】データ分配回路Ａの構成を示すブロック図。
【図１６】データ分配回路Ａの処理手順を示すフローチャート。
【図１７】データ分配回路Ａの動作タイミングを示すタイムチャート。
【図１８】データ分配回路Ｂの構成を示すブロック図。
【図１９】各加算回路の全体の構成を示すブロック図。
【図２０】加算回路の処理手順を示すフローチャート。
【図２１】加算回路の動作タイミングを示すタイムチャート。
【図２２】除算回路の構成を示すブロック図。
【図２３】除算回路の動作タイミングを示すタイムチャート。
【図２４】遅延バッファＣの構成を示すブロック図。
【図２５】遅延バッファＣの動作タイミングを示すタイムチャート。
【図２６】出力バッファＣの構成を示すブロック図。
【図２７】出力バッファＣ0614の動作タイミングを示すタイムチャート。
【図２８】圧縮データのデータフォーマットを示す説明図。
【図２９】本発明の一適用例を示すシステムの構成図。
【図３０】本発明の他の適用例を示すシステムの構成図。
【符号の説明】
0100…制御回路、0101…バッファメモリ、0102…圧縮回路、0103…画像メモリ、0600…バッファ読み出し回路、0601，0604，0605…閾値検出回路、0602…遅延バッファＡ、0603…データ分配回路Ａ、0606…遅延バッファＢ、0607…データ分配回路Ｂ、0608〜0611…加算回路、0612…除算回路、0613…遅延バッファＣ、0614…出力バッファ、0800〜0802…範囲検出回路、0803…閾値決定回路、0900…最大値検出回路、0901…最小値検出回路、0902…減算器、0903…１bitシフタ、0904…加算器、1000…３入力比較器、1001，1300，1502…３入力セレクタ、1301，1504…比較器、1302〜1305，1500，1501…セレクタ、1305，1306，1505，1506…インバータ、1507〜1514…ANDゲート、1600〜1603…加算回路、1800，2016，2215…４bitカウンタ、1801…12入力セレクタ、1802…ルックアップテーブル、2000〜2015，2018，2200〜2214…ラッチ、2017，2216…４bitデコーダ、2500，2600…パソコン、2501，2601…スキャナー、2502，2602…コントローラ、2503，2603…プリンタ、2504，2604…ＣＰＵ、2505，2605，2612…メモリ、2506，2606，2611…バス、2507，2607…入力Ｉ／Ｆ回路、2508，2608…データ圧縮回路、2509，2609…データ伸長回路、2510，2610…プリンタ出力Ｉ／Ｆ回路。
【図１】
0004252707.tif 000002
【図２】
0004252707.tif 000003
【図３】
0004252707.tif 000004
【図４】
0004252707.tif 000005
【図５】
0004252707.tif 000006
【図６】
0004252707.tif 000007
【図７】
0004252707.tif 000008
【図８】
0004252707.tif 000009
【図９】
0004252707.tif 000010
【図１０】
0004252707.tif 000011
【図１１】
0004252707.tif 000012
【図１２】
0004252707.tif 000013
【図１３】
0004252707.tif 000014
【図１４】
0004252707.tif 000015
【図１５】
0004252707.tif 000016
【図１６】
0004252707.tif 000017
【図１７】
0004252707.tif 000018
【図１８】
0004252707.tif 000019
【図１９】
0004252707.tif 000020
【図２０】
0004252707.tif 000021
【図２１】
0004252707.tif 000022
【図２２】
0004252707.tif 000023
【図２３】
0004252707.tif 000024
【図２４】
0004252707.tif 000025
【図２５】
0004252707.tif 000026
【図２６】
0004252707.tif 000027
【図２７】
0004252707.tif 000028
【図２８】
0004252707.tif 000029
【図２９】
0004252707.tif 000030
【図３０】
0004252707.tif 000031