(57)【特許請求の範囲】
【請求項１】
画像データを、それぞれがｍ×ｎドットで構成される複数の２次元のブロックに分ける第１の処理と、
各ブロックの画像データを予め決められたスキャン方法に基づきスキャンして１次元ドット列に並べ替える第２の処理と、
前記第２の処理によって並べ替えられた１次元ドット列をウエブレット変換した後に圧縮する第３の処理とを有し、
前記第２、第３の処理をスキャン方法を変えて繰り返し実行し、
圧縮後のデータ量が最も小さいスキャン方法を選択し、選択したスキャン方法およびそのスキャン方法に基づく圧縮画像データを出力することを特徴とする画像データ圧縮方法。
【請求項２】
ＲＧＢ形式およびインデックス形式の画像データの圧縮を行う画像データ圧縮方法において、
画像データを、それぞれがｍ×ｎドットで構成される複数の２次元のブロックに分ける第１の処理と、
各ブロックの画像データを予め決められたスキャン方法に基づきスキャンして１次元ドット列に並べ替える第２の処理と、
前記第２の処理によって並び替えられた１次元ドット列をウエブレット変換する第３の処理と、
前記ウエブレット変換後のデータの量子化を行う第４の処理と、
前記量子化後のデータの差分演算を行う第５の処理と、
前記差分演算後のデータの符号化を行う第６の処理と、
を有し、
画像データがＲＧＢ形式の時は前記第１〜第６の処理をスキャン方法を変えて繰り返し実行し、
圧縮後のデータ量が最も小さいスキャン方法を選択し、選択したスキャン方法およびそのスキャン方法に基づく圧縮画像データを出力し、
画像データがインデックス形式の時は、前記第１、第２、第５、第６の処理をスキャン方法を変えて繰り返し実行し、
圧縮後のデータ量が最も小さいスキャン方法を選択し、選択したスキャン方法およびそのスキャン方法に基づく圧縮画像データを出力することを特徴とする画像データ圧縮方法。
【請求項３】
前記画像データはＲＧＢデータであり、前記第１の処理および第２の処理の間に、ＲＧＢ→ＹＵＶ変換処理を設けたことを特徴とする請求項１または請求項２に記載の画像データ圧縮方法。
【請求項４】
前記第４の処理と前記第５の処理の間に、データが一定値以下の場合に「０」に置換するしきい値処理を設けたことを特徴とする請求項２に記載の画像データ圧縮方法。
【請求項５】
前記ブロックに含まれる画像データの内、可逆圧縮が必要な画像データに対応するマスクパターンを形成し、該マスクパターンを前記第１、第２、第５および第６の処理によって可逆圧縮し、前記圧縮画像データと共に出力することを特徴とする請求項２に記載の画像データ圧縮方法。
【請求項６】
前記第６の処理は、被符号化データ「０」が複数連続する場合に、そのデータ「０」の列を、連続する「０」の個数を示すデータおよび第１の特定コードに置換する処理を含むことを特徴とする請求項２〜請求項５のいずれかの項に記載の画像データ圧縮方法。
【請求項７】
前記第６の処理は、被符号化データ「０」が連続する個数が予め定められたゼロランレングス値以下の場合に、そのデータ「０」の列を、連続する「０」の個数を示すデータおよび第１の特定コードに置換し、被符号化データ「０」が連続する個数が予め定められたゼロランレングス値以上の場合に、そのデータ「０」の列を、前記第１の特定コードおよび「００・・・００」からなるデータと、連続する「０」の個数を示すデータとに置換する処理を含むことを特徴とする請求項２〜請求項５のいずれかの項に記載の画像データ圧縮方法。
【請求項８】
前記ゼロランレングス値を変えて圧縮後のデータ量が最小となるゼロランレングス値を検出することを特徴とする請求項７に記載の画像データ圧縮方法。
【請求項９】
前記第６の処理は、被符号化データが直前のデータと絶対値が同一の場合に、その被符号化データを、データ絶対値同一を示す第２の特定コードおよびデータの正負を示すビットからなるデータに置換する処理を含むことを特徴とする請求項２〜請求項５のいずれかの項に記載の画像データ圧縮方法。
【請求項１０】
前記第６の処理は、被符号化データが特定値より小の時は、そのデータを第３の特定コードおよびデータ値に置換し、被符号化データが該特定値より大の時は、そのデータを第４の特定コードおよびデータ値に置換する処理を含むことを特徴とする請求項２〜請求項５のいずれかの項に記載の画像データ圧縮方法。
【請求項１１】
前記特定値を変えて圧縮後のデータ量が最小となる特定値を検出することを特徴とする請求項１０に記載の画像データ圧縮方法。
【請求項１２】
圧縮の際に最大圧縮率とされたスキャン方法および圧縮画像データを受けて該圧縮データを伸張する画像データ伸張装置において、
前記圧縮データを伸張した後にウエブレット逆変換処理によって１次元ドット列に復号する復号手段と、
前記復号手段によって復号された１次元ドット列を前記スキャン方法が示すスキャン順序と逆の順序に従ってｍ×ｎドットで構成される複数の２次元のブロック状に一時記憶メモリに書き込む書込手段と、
を具備することを特徴とする画像データ伸張装置。
【請求項１３】
圧縮の際に最大圧縮率とされたスキャン方法、圧縮画像データおよびＲＧＢ形式／インデックス形式の区別を示すデータを受けて該圧縮データを伸張する画像データ伸張装置において、
前記圧縮画像データを符号化の逆処理によって復号する第１の復号手段と、
前記第１の復号手段によって復号されたデータの加算演算を行う加算演算手段と、
前記ＲＧＢ形式／インデックス形式の区別を示すデータがＲＧＢ形式を指示していた場合は、前記加算演算手段の出力データを、逆量子化およびウエブレット逆変換によって１次元ドット列に復号し、前記ＲＧＢ形式／インデックス形式の区別を示すデータがインデックス形式を指示していた場合は、前記加算演算手段の出力データをそのまま出力する第２の復号手段と、
前記第２の復号手段から出力された１次元ドット列を前記スキャン方法が示すスキャン順序と逆の順序に従ってｍ×ｎドットで構成される複数の２次元のブロック状に一時記憶メモリに書き込む書込手段と、
を具備することを特徴とする伸張装置。
【請求項１４】
前記第２の復号手段の出力データをＲＧＢデータに変換して前記書込手段へ出力するデータ変換手段を設けたことを特徴とする請求項１３に記載の画像データ伸張装置。
【請求項１５】
前記第１の復号手段は、前記圧縮画像データ中に第１の特定コードを検出した時、該特定コードに付属するデータが示す数の「０」データを復号する処理を含むことを特徴とする請求項１３に記載の画像データ伸張装置。
【請求項１６】
前記第１の復号手段は、前記圧縮画像データ中に第１の特定コードを検出した場合において、該特定コードに付属するデータが「００・・・００」でない場合はそのデータが示す数の「０」データを復号し、該特定コードに付属するデータが「００・・・００」であった場合は次のデータが示す数の「０」データを復号する処理を含むことを特徴とする請求項１３に記載の画像データ伸張装置。
【請求項１７】
前記第１の復号手段は、前記圧縮画像データ中に第２の特定コードを検出した時、該特定コードに付属するデータが２値論理レベルの一方データの時は直前のデータと同じデータを復号し、該特定コードに付属するデータが２値論理レベルの他方データの時は直前のデータと符号を変えたデータを復号する処理を含むことを特徴とする請求項１３に記載の画像データ伸張装置。
【請求項１８】
前記第１の復号手段は、前記圧縮画像データ中に第３の特定コードを検出した時、該特定コードに付属する予め決められたＫ（Ｋは正の整数）ビットをデータとして復号し、第４の特定コードを検出した時は、該特定コードに付属する予め決められたＭ（Ｍは正の整数）ビットをデータとして復号する処理を含むことを特徴とする請求項１３に記載の画像データ伸張装置。
【請求項１９】
圧縮の際に最大圧縮率とされたスキャン方法および圧縮画像データを受けて該圧縮データを伸張するプログラムにおいて、
前記圧縮画像データを伸張した後にウエブレット逆変換処理によって１次元ドット列に復号する復号手順と、
前記復号手順によって復号された１次元ドット列を前記スキャン方法が示すスキャン順序と逆の順序に従ってｍ×ｎドットで構成される複数の２次元のブロック状に一時記憶メモリに書き込む書込手順と、
をコンピュータに実行させるためのプログラム。
【請求項２０】
圧縮の際に最大圧縮率とされたスキャン方法、圧縮画像データおよびＲＧＢ形式／インデックス形式の区別を示すデータを受けて該圧縮データを伸張するプログラムにおいて、
前記圧縮画像データを符号化の逆処理によって復号する第１の復号手順と、
前記第１の復号手段によって復号されたデータの加算演算を行う加算演算手順と、
前記ＲＧＢ形式／インデックス形式の区別を示すデータがＲＧＢ形式を指示していた場合は、前記加算演算処理後のデータを、逆量子化およびウエブレット逆変換によって１次元ドット列に復号し、前記ＲＧＢ形式／インデックス形式の区別を示すデータがインデックス形式を指示していた場合は、前記加算演算処理後のデータをそのまま出力する第２の復号手順と、
前記第２の復号手順から出力された１次元ドット列を前記スキャン方法が示すスキャン順序と逆の順序に従ってｍ×ｎドットで構成される複数の２次元のブロック状に一時記憶メモリに書き込む書込手順と、
をコンピュータに実行させるためのプログラム。
【請求項２１】
前記第２の復号手順の処理後のデータをＲＧＢデータに変換して前記書込手順へ送るデータ変換手順を設けたことを特徴とする請求項２０に記載のプログラム。
【請求項２２】
前記第１の復号手順は、前記圧縮画像データ中に第１の特定コードを検出した時、該特定コードに付属するデータが示す数の「０」データを復号する処理を含むことを特徴とする請求項２０に記載のプログラム。
【請求項２３】
前記第１の復号手順は、前記圧縮画像データ中に第１の特定コードを検出した場合において、該特定コードに付属するデータが「００・・・００」でない場合はそのデータが示す数の「０」データを復号し、該特定コードに付属するデータが「００・・・００」であった場合は次のデータが示す数の「０」データを復号する処理を含むことを特徴とする請求項２０に記載のプログラム。
【請求項２４】
前記第１の復号手順は、前記圧縮画像データ中に第２の特定コードを検出した時、該特定コードに付属するデータが２値論理レベルの一方データの時は直前のデータと同じデータを復号し、該特定コードに付属するデータが２値論理レベルの他方データの時は直前のデータと符号を変えたデータを復号する処理を含むことを特徴とする請求項２０に記載のプログラム。
【請求項２５】
前記第１の復号手順は、前記圧縮画像データ中に第３の特定コードを検出した時、該特定コードに付属する予め決められたＫ（Ｋは正の整数）ビットをデータとして復号し、第４の特定コードを検出した時は、該特定コードに付属する予め決められたＭ（Ｍは正の整数）ビットをデータとして復号する処理を含むことを特徴とする請求項２０に記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、カラー画像データを高能率で圧縮する圧縮方法およびその圧縮方法によって圧縮されたデータを元のカラー画像データに伸張する伸張装置並びに伸張プログラムに関する。
【０００２】
【従来の技術】
従来のカラー画像データの圧縮方法として次のような方法が知られている。
（１）セル参照方式、ライン参照方式
これらの方法は、前後に同じカラーコードが続くベタ絵に対しては有効であるが、前後に同じカラーコードがない場合は圧縮率が上がらない欠点がある。また、ＲＧＢ形式の画像データの非可逆／高能率圧縮ができない欠点がある。
【０００３】
（２）辞書法
再現度を上げるために、大きな辞書データが必要となる。セル参照方式、ライン参照方式と同様に可逆圧縮であるため、ＲＧＢ形式の画像データの非可逆／高能率圧縮ができない欠点がある。
【０００４】
（３）ＤＣＴ変換＋ハフマン符号化（ＪＰＥＧ；Joint Photographic image coding Experts Group））
８×８サイズのブロックを形成してＤＣＴ（Discrete Cosine Transform；離散コサイン変換）を行うため圧縮率が上がってくるとブロック単位での歪みが目立つようになる。また、本質的に正弦波で近似するため、アニメ画像などのようにエッジの強い部分をうまく近似できない。また、ハフマン符号化のためにハフマンテーブルが必要となり、テーブル参照等の処理がハードウエア化に不利である。さらに、カラーパレット変換を前提としたインデックス形式の画像データ可逆圧縮ができない欠点がある。
【０００５】
（４）ウエーブレット変換＋算術符号化（ＪＰＥＧ２０００）
画像圧縮のため２次元ウエーブレット変換を行うためには、画素サイズと同等のメモリをバッファとして必要とし、したがって、ハードウエア化に適しておらず、また、変換時間も多くかかる。算術符号化は演算が複雑で、特に、ＪＰＥＧ２０００のようにビットプレーン単位で符号化すると、復号処理に時間がかかってしまう。ウエーブレット変換はＤＣＴと同様に画像の相関を利用しているので、インデックス形式の画像データの可逆圧縮には向かない。
【０００６】
【発明が解決しようとする課題】
この発明は、このような事情を考慮してなされたもので、その目的は、インデックス形式の画像データの可逆圧縮およびＲＧＢ形式の画像データの非可逆／高能率圧縮をともに可能とする画像データ圧縮／伸張方法および装置を提供することにある。また、この発明の他の目的は、テーブルや複雑な演算の必要がなく、簡単な処理によって圧縮データを高速に伸張することができる画像データ圧縮／伸張方法および装置を提供することにある。
【０００７】
【課題を解決するための手段】
この発明は上記の課題を解決すべくなされたもので、請求項１に記載の発明は、画像データを、それぞれがｍ×ｎドットで構成される複数の２次元のブロックに分ける第１の処理と、各ブロックの画像データを予め決められたスキャン方法に基づきスキャンして１次元ドット列に並べ替える第２の処理と、前記第２の処理によって並べ替えられた１次元ドット列をウエブレット変換した後に圧縮する第３の処理とを有し、前記第２、第３の処理をスキャン方法を変えて繰り返し実行し、圧縮後のデータ量が最も小さいスキャン方法を選択し、選択したスキャン方法およびそのスキャン方法に基づく圧縮画像データを出力することを特徴とする画像データ圧縮方法である。
【０００８】
請求項２に記載の発明は、ＲＧＢ形式およびインデックス形式の画像データの圧縮を行う画像データ圧縮方法において、画像データを、それぞれがｍ×ｎドットで構成される複数の２次元のブロックに分ける第１の処理と、各ブロックの画像データを予め決められたスキャン方法に基づきスキャンして１次元ドット列に並べ替える第２の処理と、前記第２の処理によって並び替えられた１次元ドット列をウエブレット変換する第３の処理と、前記ウエブレット変換後のデータの量子化を行う第４の処理と、前記量子化後のデータの差分演算を行う第５の処理と、前記差分演算後のデータの符号化を行う第６の処理とを有し、画像データがＲＧＢ形式の時は前記第１〜第６の処理をスキャン方法を変えて繰り返し実行し、圧縮後のデータ量が最も小さいスキャン方法を選択し、選択したスキャン方法およびそのスキャン方法に基づく圧縮画像データを出力し、画像データがインデックス形式の時は、前記第１、第２、第５、第６の処理をスキャン方法を変えて繰り返し実行し、圧縮後のデータ量が最も小さいスキャン方法を選択し、選択したスキャン方法およびそのスキャン方法に基づく圧縮画像データを出力することを特徴とする画像データ圧縮方法である。
【０００９】
請求項３に記載の発明は、請求項１または請求項２に記載の画像データ圧縮方法において、前記画像データはＲＧＢデータであり、前記第１の処理および第２の処理の間に、ＲＧＢ→ＹＵＶ変換処理を設けたことを特徴とする。
請求項４に記載の発明は、請求項２に記載の画像データ圧縮方法において、前記第４の処理と前記第５の処理の間に、データが一定値以下の場合に「０」に置換するしきい値処理を設けたことを特徴とする。
【００１０】
請求項５に記載の発明は、請求項２に記載の画像データ圧縮方法において、前記ブロックに含まれる画像データの内、可逆圧縮が必要な画像データに対応するマスクパターンを形成し、該マスクパターンを前記第１、第２、第５および第６の処理によって可逆圧縮し、前記圧縮画像データと共に出力することを特徴とする。
請求項６に記載の発明は、請求項２〜請求項５のいずれかの項に記載の画像データ圧縮方法において、前記第６の処理は、被符号化データ「０」が複数連続する場合に、そのデータ「０」の列を、連続する「０」の個数を示すデータおよび第１の特定コードに置換する処理を含むことを特徴とする。
【００１１】
請求項７に記載の発明は、請求項２〜請求項５のいずれかの項に記載の画像データ圧縮方法において、前記第６の処理は、被符号化データ「０」が連続する個数が予め定められたゼロランレングス値以下の場合に、そのデータ「０」の列を、連続する「０」の個数を示すデータおよび第１の特定コードに置換し、被符号化データ「０」が連続する個数が予め定められたゼロランレングス値以上の場合に、そのデータ「０」の列を、前記第１の特定コードおよび「００・・・００」からなるデータと、連続する「０」の個数を示すデータとに置換する処理を含むことを特徴とする。
【００１２】
請求項８に記載の発明は、請求項７に記載の画像データ圧縮方法において、前記ゼロランレングス値を変えて圧縮後のデータ量が最小となるゼロランレングス値を検出することを特徴とする。
請求項９に記載の発明は、請求項２〜請求項５のいずれかの項に記載の画像データ圧縮方法において、前記第６の処理は、被符号化データが直前のデータと絶対値が同一の場合に、その被符号化データを、データ絶対値同一を示す第２の特定コードおよびデータの正負を示すビットからなるデータに置換する処理を含むことを特徴とする。
【００１３】
請求項１０に記載の発明は、請求項２〜請求項５のいずれかの項に記載の画像データ圧縮方法において、前記第６の処理は、被符号化データが特定値より小の時は、そのデータを第３の特定コードおよびデータ値に置換し、被符号化データが該特定値より大の時は、そのデータを第４の特定コードおよびデータ値に置換する処理を含むことを特徴とする。
請求項１１に記載の発明は、請求項１０に記載の画像データ圧縮方法において、前記特定値を変えて圧縮後のデータ量が最小となる特定値を検出することを特徴とする。
【００１４】
請求項１２に記載の発明は、圧縮の際に最大圧縮率とされたスキャン方法および圧縮画像データを受けて該圧縮データを伸張する画像データ伸張装置において、前記圧縮データを逆ウエブレット変換処理によって１次元ドット列に復号する復号手段と、前記復号手段によって復号された１次元ドット列を前記スキャン方法が示すスキャン順序と逆の順序に従ってｍ×ｎドットで構成される複数の２次元のブロック状に一時記憶メモリに書き込む書込手段とを具備することを特徴とする画像データ伸張装置である。
【００１５】
請求項１３に記載の発明は、圧縮の際に最大圧縮率とされたスキャン方法、圧縮画像データおよびＲＧＢ形式／インデックス形式の区別を示すデータを受けて該圧縮データを伸張する画像データ伸張装置において、前記圧縮画像データを符号化の逆処理によって復号する第１の復号手段と、前記第１の復号手段によって復号されたデータの加算演算を行う加算演算手段と、前記ＲＧＢ形式／インデックス形式の区別を示すデータがＲＧＢ形式を指示していた場合は、前記加算演算手段の出力データを、逆量子化および逆ウエブレット変換によって１次元ドット列に復号し、前記ＲＧＢ形式／インデックス形式の区別を示すデータがインデックス形式を指示していた場合は、前記加算演算手段の出力データをそのまま出力する第２の復号手段と、前記第２の復号手段から出力された１次元ドット列を前記スキャン方法が示すスキャン順序と逆の順序に従ってｍ×ｎドットで構成される複数の２次元のブロック状に一時記憶メモリに書き込む書込手段とを具備することを特徴とする伸張装置である。
【００１６】
請求項１４に記載の発明は、請求項１３に記載の画像データ伸張装置において、前記第２の復号手段の出力データをＲＧＢデータに変換して前記書込手段へ出力するデータ変換手段を設けたことを特徴とする。
請求項１５に記載の発明は、請求項１３に記載の画像データ伸張装置において、前記第１の復号手段は、前記圧縮画像データ中に第１の特定コードを検出した時、該特定コードに付属するデータが示す数の「０」データを復号する処理を含むことを特徴とする。
【００１７】
請求項１６に記載の発明は、請求項１３に記載の画像データ伸張装置において、前記第１の復号手段は、前記圧縮画像データ中に第１の特定コードを検出した場合において、該特定コードに付属するデータが「００・・・００」でない場合はそのデータが示す数の「０」データを復号し、該特定コードに付属するデータが「００・・・００」であった場合は次のデータが示す数の「０」データを復号する処理を含むことを特徴とする。
請求項１７に記載の発明は、請求項１３に記載の画像データ伸張装置において、前記第１の復号手段は、前記圧縮画像データ中に第２の特定コードを検出した時、該特定コードに付属するデータが２値論理レベルの一方データの時は直前のデータと同じデータを復号し、該特定コードに付属するデータが２値論理レベルの他方データの時は直前のデータと符号を変えたデータを復号する処理を含むことを特徴とする。
【００１８】
請求項１８に記載の発明は、請求項１３に記載の画像データ伸張装置において、前記第１の復号手段は、前記圧縮画像データ中に第３の特定コードを検出した時、該特定コードに付属する予め決められたＫ（Ｋは正の整数）ビットをデータとして復号し、第４の特定コードを検出した時は、該特定コードに付属する予め決められたＭ（Ｍは正の整数）ビットをデータとして復号する処理を含むことを特徴とする。
【００１９】
請求項１９に記載の発明は、圧縮の際に最大圧縮率とされたスキャン方法および圧縮画像データを受けて該圧縮データを伸張するプログラムにおいて、前記圧縮画像データを逆ウエブレット変換処理によって１次元ドット列に復号する復号手順と、前記復号手順によって復号された１次元ドット列を前記スキャン方法が示すスキャン順序と逆の順序に従ってｍ×ｎドットで構成される複数の２次元のブロック状に一時記憶メモリに書き込む書込手順とをコンピュータに実行させるためのプログラムである。
【００２０】
請求項２０に記載の発明は、圧縮の際に最大圧縮率とされたスキャン方法、圧縮画像データおよびＲＧＢ形式／インデックス形式の区別を示すデータを受けて該圧縮データを伸張するプログラムにおいて、前記圧縮画像データを符号化の逆処理によって復号する第１の復号手順と、前記第１の復号手段によって復号されたデータの加算演算を行う加算演算手順と、前記ＲＧＢ形式／インデックス形式の区別を示すデータがＲＧＢ形式を指示していた場合は、前記加算演算処理後のデータを、逆量子化および逆ウエブレット変換によって１次元ドット列に復号し、前記ＲＧＢ形式／インデックス形式の区別を示すデータがインデックス形式を指示していた場合は、前記加算演算処理後のデータをそのまま出力する第２の復号手順と、前記第２の復号手順から出力された１次元ドット列を前記スキャン方法が示すスキャン順序と逆の順序に従ってｍ×ｎドットで構成される複数の２次元のブロック状に一時記憶メモリに書き込む書込手順とをコンピュータに実行させるためのプログラムである。
【００２１】
請求項２１に記載の発明は、請求項２０に記載のプログラムにおいて、前記第２の復号手順の処理後のデータをＲＧＢデータに変換して前記書込手順へ送るデータ変換手順を設けたことを特徴とする。
請求項２２に記載の発明は、請求項２０に記載のプログラムにおいて、前記第１の復号手順は、前記圧縮画像データ中に第１の特定コードを検出した時、該特定コードに付属するデータが示す数の「０」データを復号する処理を含むことを特徴とする。
【００２２】
請求項２３に記載の発明は、請求項２０に記載のプログラムにおいて、前記第１の復号手順は、前記圧縮画像データ中に第１の特定コードを検出した場合において、該特定コードに付属するデータが「００・・・００」でない場合はそのデータが示す数の「０」データを復号し、該特定コードに付属するデータが「００・・・００」であった場合は次のデータが示す数の「０」データを復号する処理を含むことを特徴とする。
請求項２４に記載の発明は、請求項２０に記載のプログラムにおいて、前記第１の復号手順は、前記圧縮画像データ中に第２の特定コードを検出した時、該特定コードに付属するデータが２値論理レベルの一方データの時は直前のデータと同じデータを復号し、該特定コードに付属するデータが２値論理レベルの他方データの時は直前のデータと符号を変えたデータを復号する処理を含むことを特徴とする。
【００２３】
請求項２５に記載の発明は、請求項２０に記載のプログラムにおいて、前記第１の復号手順は、前記圧縮画像データ中に第３の特定コードを検出した時、該特定コードに付属する予め決められたＫ（Ｋは正の整数）ビットをデータとして復号し、第４の特定コードを検出した時は、該特定コードに付属する予め決められたＭ（Ｍは正の整数）ビットをデータとして復号する処理を含むことを特徴とする。
【００２４】
【発明の実施の形態】
以下、図面を参照し、この発明の一実施の形態について説明する。
最初に、この発明の一実施形態による画像データ圧縮方法を図１〜図８を参照して説明する。この圧縮方法は、ハードウエアまたはマイクロプロセッサによって実行されるもので、ＲＧＢ（レッド・グリーン・ブルー）データ、ＹＵＶ（輝度・色差・色差）データおよびIndexデータのいずれのカラー画像データも圧縮することができる。また、非可逆／高能率圧縮および可逆圧縮のいずれも行うことができる。なお、Indexデータとは、色を指定するコードデータであり、表示の際にカラーパレットによってＲＧＢデータに変換する必要があるデータである。
【００２５】
図２は、この圧縮方法の処理過程を示すフローチャートである。まず、圧縮処理すべき画像データを読み込む（ステップＳａ１）。次に、操作者によって、マスクパターンを作成する必要があるか否かがチェックされる（ステップＳａ２）。そして、必要がある場合は、操作者によってマスクパターンの生成が指示され、マスクパターンの生成が行われ（ステップＳａ３）、指示がない場合は次の処理へ進む。ここで、マスクパターンとは、圧縮時に非可逆圧縮されてはまずい部分、例えば透明部分を識別するためのパターンであり、非可逆圧縮されてはまずい部分が”１”に、非可逆圧縮されてもよい部分が”０”となるパターンである。
【００２６】
次に、入力画像が表示され（ステップＳａ４）、次いで、操作者によってプリフィルタ処理の必要があるか否かがチェックされる（ステップＳａ５）。そして、必要がある場合はプリフィルタ処理が指示され、プリフィルタ処理が行われ（ステップＳａ６）、指示がない場合は次の処理へ進む。ここで、プリフィルタ処理とは、表示画像のエッジ部分を滑らかにする処理であり、この処理を行っておくことにより、非可逆圧縮の場合の圧縮率を上げることができる。
次に、操作者によってパラメータの仮設定が行われ（ステップＳａ７）、次いで、圧縮処理が行われる（ステップＳａ８）。ここで、パラメータとは、圧縮処理において使用されるパラメータである。次に、圧縮処理が終了すると、パラメータが決定され（ステップＳａ９）、次いで圧縮済みのファイルが出力される（ステップＳａ１０）。
【００２７】
次に、上述したステップＳａ８の「圧縮処理」について詳述する。
図１は圧縮処理を説明するための説明図であり、また、図３は圧縮処理の過程を示すフローチャートである。この圧縮処理においては、まず、カラー画像データをブロックに分割する（ステップＳｂ１）。すなわち、いま、図１の符号ＧＤを表示画面の各表示ドット対応の画像データとすると、この画像データを１６×１６ドット毎にブロック分けする。次に、画像データがＲＧＢデータであった場合は、指示に応じてそのＲＧＢデータをＹＵＶデータに変換し、さらに変換後のＵ、Ｖデータを「間引き処理」によって圧縮する（ステップＳｂ２）。
【００２８】
上述した処理によって、各ブロックのデータは、画像データがIndexデータの場合、１６×１６ドットに対応する１６×１６データとなり（図１の符号ＧＤ１参照）、ＲＧＢデータの場合は、Ｒ、Ｇ、Ｂデータの各々について１６×１６データとなる（ＧＤ１〜ＧＤ３参照）。また、ＹＵＶデータの場合は、Ｙデータが１６×１６データ（ＧＤ１参照）、Ｕ，Ｖデータが各々８×８データとなる（ＧＤ２、ＧＤ３参照）。ここで、Ｕ、Ｖデータが８×８データとなっているのは、間引き処理の結果である。
【００２９】
次に、スキャンＮｏとして「０」が設定され（ステップＳｂ３）、次いでスキャン処理（ステップＳｂ４）へ進む。このスキャン処理とは、ブロック化された画像データを一列に並べる処理であり、図１に示すように、Scan0〜Scan3の４種類のスキャン方法が予め設定されている。Scan0は、１６×１６データの左上部から右方向へ順次データを抽出し、最上行のデータ抽出が終了すると、第２行目について最右部から左方向へ順次データを抽出し、第３行目については再び最左部から順次データを抽出し、以下、この動作を繰り返して２５６データによるデータ列ＤＳを作成する。このように被圧縮画像データを並べ替える理由は、例えば、画像が横縞のような画像であった場合に近似するデータが並ぶことになり、圧縮効率を上げることができるからである。
【００３０】
Scan1は、左上部から下方へ順次データを抽出し、第１列のデータ抽出が終了すると、第２列目について最下部から上方へ順次データを抽出し、第３列目については再び最上部から順次データを抽出し、以下、この動作を繰り返して２５６データによるデータ列ＤＳを作成する。このScan1は画像が縦縞模様の場合に圧縮効率を上げることができる。Scan2は、１６×１６データによるブロックをさらに細分し、各ブロックにおいてScan1と同様の抽出処理を行ってデータ列ＤＳを作成する。同様にScan3は、１６×１６データのブロックを細分し、各ブロックにおいてScan0と同様の抽出処理を行ってデータ列ＤＳを作成する。これらのScan2、Scan3は画像が部分的に同じ模様や色を有している場合に圧縮効率を上げることができる。
なお、スキャンの方法は上記４種類に限らず、例えば斜め方向のスキャン等種々の方法が考えられる。
【００３１】
図３のステップＳｂ３においてスキャンＮｏ「０」が設定された後、ステップＳｂ４へ進むと、上述したScan0が実行されてデータ列ＤＳが作成される。
図４は、このスキャン処理（ステップＳｂ４）の具体的処理過程を示すフローチャートである。まず、IndexデータまたはＹデータまたはＧデータによるブロックがスキャン処理され（ステップＳｃ１）、コードビットによるデータ列ＤＳが作成される（ステップＳｃ２）。次に、スキャン処理されたデータがIndexデータか否かが判断され（ステップＳｃ３）、判断結果が「ＮＯ」の場合はステップＳｃ４へ進み、ＵデータまたはＲデータによるブロックがスキャン処理され（ステップＳｃ４）、コードビットによるデータ列ＤＳが作成される（ステップＳｃ５）。次いで、ＶデータまたはＢデータによるブロックがスキャン処理され（ステップＳｃ６）、コードビットによるデータ列ＤＳが作成される（ステップＳｃ７）。また、ステップＳｃ３の判断結果が「ＹＥＳ」の場合は上述したステップＳｃ４〜Ｓｃ７をジャンプして次の処理へ進む。
【００３２】
次に、マスクデータがあるか否かがチェックされ（ステップＳｃ８）、ある場合はマスクデータによるブロックがスキャン処理され（ステップＳｃ９）、コードビットによるデータ列ＤＳが作成される（ステップＳｃ１０）。そして、図３の処理へ戻る。また、ステップＳｃ８の判断結果が「なし」の場合は上述したステップＳｃ９〜Ｓｃ１０をジャンプして図３の処理へ戻る。
次に、図３のステップＳｂ５においてブロックヘッダが構成され、次いでステップＳｂ６の圧縮処理へ進む。
【００３３】
以下、この圧縮処理について図５、図６および図１を参照して説明する。
図５は圧縮処理の過程を示すフローチャートであり、この処理へ進むと、まず、IndexデータまたはＹデータまたはＧデータに基づくデータ列ＤＳの圧縮処理が行われる（ステップＳｄ１）。次に、圧縮処理されたデータがIndexデータか否かが判断され（ステップＳｄ２）、判断結果が「ＮＯ」の場合はステップＳｄ３へ進み、ＵデータまたはＲデータによるデータ列ＤＳの圧縮処理が行われ（ステップＳｄ３）、次に、ＶデータまたはＢデータによるデータ列ＤＳの圧縮処理が行われる（ステップＳｄ４）。また、ステップＳｄ２の判断が「ＹＥＳ」の場合はステップＳｄ３、Ｓｄ４をジャンプしてステップＳｄ５へ進む。次に、ステップＳｄ５では、マスクデータによるデータ列ＤＳがあるか否かが判断され、ある場合はマスクデータによるデータ列ＤＳの圧縮が行われ（ステップＳｄ６）、そして、図３の処理へ戻る。また、マスクデータによるデータ列ＤＳがない場合はステップＳｄ６をジャンプして図３の処理へ戻る。
【００３４】
次に、データ列ＤＳの圧縮処理を図６に示すフローチャートおよび図１を参照して説明する。この圧縮処理では、まず、ウエブレット変換処理を行うか否かが判断される（ステップＳｅ１）。そして、判断結果が「ＹＥＳ」の場合はウエブレット変換が行われ（ステップＳｅ２）、また、「ＮＯ」の場合はステップＳｅ２をジャンプして次の処理へ進む。このウエブレット変換は、圧縮率が高い非可逆変換である。この実施形態においては、ＹＵＶデータについてのみ、ユーザの指定によりウエブレット変換を適用できる。
【００３５】
次に、量子化処理が行われる（ステップＳｅ３）。この量子化処理はデータ列ＤＳの各データを一定数で除算し、除算結果の小数点以下をカットすることにより精度を落とし、ビット数を減らす処理である。次に、しきい値処理が行われる（ステップＳｅ５）。このしきい値処理は、データ列ＤＳの各データが予め決められたしきい値以下の場合は「０」とする処理である。例えば、しきい値を「１」とすると、「１」以下のデータが全て「０」となる。ウエブレット変換後のデータは値の小さいデータが多く、このしきい値処理を行うと、「０」のデータが多くなり、以下の処理において圧縮率を上げることができる。なお、これら２つの処理はいずれも非可逆変換であり、したがって、Indexデータのような可逆変換を行うデータには用いられない。
【００３６】
次に、後続の処理のための各種の設定が行われる（ステップＳｅ６）。すなわち、図６の圧縮処理においては、扱うデータの種類として、Index、Ｒ、Ｇ、Ｂ、Ｙ（ウエブレットなし）、Ｕ（ウエブレットなし）、Ｖ（ウエブレットなし）、Ｙ（ウエブレットあり）、Ｕ（ウエブレットあり）、Ｖ（ウエブレットあり）の１０パターンがあり、それぞれデータの個数は、
Index＝Ｒ＝Ｇ＝Ｂ＝Ｙ（ウエブレットなし）＝２５６個
Ｕ（ウエブレットなし）＝Ｖ（ウエブレットなし）＝６４個
Ｙ（ウエブレットあり）＝１２８個
Ｕ（ウエブレットあり）＝Ｖ（ウエブレットあり）＝３２個
となっている。データの個数が異なれば、例えば、次の差分演算（ステップＳｅ７）においては差分を演算する回数が異なることとなり、予め演算回数を設定する必要が生じる。他にも様々な設定が必要になる。ステップＳｅ６ではこの設定が行われる。また、上述したステップＳｅ２のウエブレット変換が行われると、ローパスデータとハイパスデータが得られる。ステップＳｅ６では、ローパスデータの圧縮処理のための各種設定が行われる。
【００３７】
次に、ステップＳｅ７に進むと、差分演算が行われて、データ列ＤＳ１（図１）が生成される。すなわち、この差分演算においては、まず、データ列ＤＳ１の第１番目のデータとして、データ列ＤＳ（または、上記各処理後のデータ列）の最初のデータがそのまま移される。そして、２番目以降のデータｄNとしては、
ｄN＝ｐ(N)−p(N-1)
なる差分データが書き込まれる。例えば、２番目のデータｄ2は、データ列ＤＳの２番目のデータｐ(2)からデータ列ＤＳの１番目のデータｐ(1)を減算したデータとなる。この差分演算を行うと、単調増加や単調減少データの場合に、同じデータが並ぶことになり、以下の処理において圧縮率を上げることができる。
【００３８】
次に、データ列ＤＳ１の各データをチェックして最大ビット長のデータを検出し、そのビット長を「code＿max」として記憶する（ステップＳｅ８）。次に、短コードビット長を仮決定し、そのビット長を「code＿th」として記憶する（ステップＳｅ９）。次に、データ列ＤＳ１の各データをチェックして、「０」が最大何個並んでいるかを検出する。そして、検出した個数を表すビット数をゼロランレングス最大ビット長「zero＿max」として記憶する（ステップＳｅ１０）。次に、ゼロランレングス短コードビット長を仮決定し、「zero＿th」として記憶する（ステップＳｅ１１）。
【００３９】
次に、上述した各処理において決定したcode＿max、code＿th、zero＿max、zero＿thを用いて符号化処理を行う（ステップＳｅ１２）。以下、その過程を図７、図８を参照して説明する。
まず、データ列ＤＳ１において、「０」が２個以上連続している箇所を検出し、次いで、その箇所の「０」の個数（ゼロランレングス）を検出する。次に、その個数がzero＿th以下か、否かをチェックする。そして、zero＿th以下であった場合は、その連続する「０」を図７（ａ）のフォーマット、すなわち、
０  ０    個数（0RL)
によって表す。ここで、「0RL」はゼロランレングスの意味である。また、個数（0RL）を表すためのビット数はzero＿thの数字を表すためのビット数である。また、zero＿th以上（zero＿thを含まない）であった場合は、図７（ｂ）のフォーマット、すなわち、
０  ０  ０  ・・・  ０（All「０」）
個数(0RL)
という２データによって表す。ここで、All「０」のビット数は上述したzero＿thの数字を表すためのビット数である。また、個数を表すためのビット数はzero＿maxである。
【００４０】
例えば、zero＿thを「２」と仮設定し、また、zero＿maxが「７」であった場合において、データ「０」が３個続いていた場合（ゼロランレングスが「３」）、その３個のデータ「０」が、
０  ０  １  １
なる１つのデータによって表される。また、ゼロランレングスが、例えば「１３」であった場合は、
０  ０  ０  ０
０  ０  ０  １  １  ０  １
なるデータによって表される。そして、上述したフォーマットによる符号化が、「０」が２個以上連続している全箇所において行われる。
【００４１】
次に、データ列ＤＳ１の「０」を除く各データについて、直前のデータとの絶対値が同じか否かをチェックする。そして、直前のデータと絶対値が同じであった場合は、図７（ｃ）のフォーマット、すなわち、
０  １  ｓ
によって表す。ここで、「ｓ」は対象データが直前のデータと絶対値が同じであって正のデータの場合「０」となり、絶対値が同じであって負のデータの場合「１」となる。
【００４２】
次に、データ列ＤＳ１の、上述した各フォーマットによる符号化が行われていない各データについて、そのデータの有効ビット数がcode＿th以下か否かをチェックする。そして、以下であった場合は図７（ｄ）のフォーマット、すなわち、
１  ０  データ値
なるフォーマットによってデータを表す。ここで、データ値を表すビット数はcode＿thである。また、データのビット数がcode＿th以上（code＿thを含まない）であった場合は図７（ｅ）のフォーマット、すなわち、
１  １  データ値
なるフォーマットによってデータを表す。ここで、データ値を表すビット数はcode＿maxである。
【００４３】
例えば、code＿thが「３」、code＿maxが「７」であった場合において、対象データが「６」であった場合は、
１  ０  １  １  ０
なるデータによって表される。
また、対象データが「１５」であった場合は、
１  １  ０  ０  ０  １  １  １  １
なるデータによって表される。そして、上述したフォーマットによる符号化は、データ列ＤＳ１の、図７（ａ）〜（ｃ）の符号化が行われない全データについて行われる。
【００４４】
図８はデータ列ＤＳ１の「０」を除く各データの有効ビット数別の個数の一例を示すグラフである。このグラフに示すように、前述したウエブレット変換、しきい値処理、差分演算等が終了したデータは、小さい値のデータが多く、有効ビット数が「１」、「２」というデータが多い。したがって、上記図７（ｄ）のフォーマットによる符号化によって圧縮率を高めることができる。
以上の符号化処理が終了した後、zero＿thおよびcode＿thを種々変化させて上記の符号化処理を繰り返す。そして、データ列ＤＳ１の符号化後のビット数が最も小さくなるzero＿thおよびcode＿thを決定する。
【００４５】
上述した符号化処理（ステップＳｅ１２）が終了すると、ステップＳｅ１３へ進み、ステップＳｅ２においてウエブレット変換が行われたか否かが判断される。そして、判断結果が「ＹＥＳ」の場合は、ステップＳｅ１４へ進む。ステップＳｅ１４では、ウエブレット変換によって得られたハイパスデータについて、ステップＳｅ６と同様の設定処理が行われ、次いで、ステップＳｅ１５〜Ｓｅ２０において、ハイパスデータの圧縮処理がステップＳｅ７〜Ｓｅ１２と同様の処理によって行われる。
【００４６】
以上が圧縮処理の過程である。上述した圧縮処理が終了すると、処理の過程で決定されたzero＿th、code＿th等の各パラメータ、スキャン方式名、処理後のデータ列およびデータ列のサイズ（ビット数）が保存され（図３のステップＳｂ７）、そして、図３のステップＳｂ８へ進む。このステップＳｂ８では、各スキャン方式Scan0〜Scan3（図１参照）について圧縮処理が終了したか否かが判断される。そして、終了していない場合はスキャンＮｏに「１」を加算して、ステップＳｂ４へ戻る。
【００４７】
以後、ステップＳｂ４においてスキャンＮｏ「１」のScan1が行われ、スキャン後のデータ列ＤＳについて上述した圧縮処理が行われる（ステップＳｂ６）。そして、その圧縮後のビット数と前回のScan0の圧縮後のビット数が比較され、ビット数が小さい方のスキャン方式名、パラメータ、処理後のデータ列およびデータ列のサイズが保存される（ステップＳｂ７）。
【００４８】
以後、スキャン方式Scan2およびScan3について同様の圧縮処理が行われる。そして、Scan3の圧縮処理が終了した時点で最も圧縮率が高いスキャン方式の方式名、パラメータ、処理後のデータ列およびデータ列のサイズが保存される（ステップＳｂ７）。次に、ステップＳｂ８の判断が「ＹＥＳ」となり、ステップＳｂ１０へ進む。ステップＳｂ１０では、全ブロックについての圧縮処理が終了したか否かが判断される。そして、判断結果が「ＮＯ」の場合は再びステップＳｂ２へ戻り、以後、次のブロックについて圧縮処理が行われる。そして、全ブロックについて圧縮処理が終了すると、ステップＳｂ１０の判断結果が「ＹＥＳ」となり、圧縮処理を終了する。
【００４９】
次に、上記の圧縮処理によって圧縮された画像データの伸張処理について、図９〜図１１を参照して説明する。
図９は伸張処理の過程を示すフローチャートである。まず、圧縮ファイルの読み込みが行われる（ステップＳｆ１）。ここで、圧縮ファイルには、各ブロック毎に圧縮後のデータ列、圧縮に使用されたスキャン方式、圧縮に使用された各パラメータが書き込まれている。次に、最初のブロックについてスキャン方式およびパラメータが伸張回路に設定される（ステップＳｆ２）。次に、最初のブロックのIndexデータ（またはＹデータまたはＧデータ）の伸張処理が行われる（ステップＳｆ３）。次に、ステップＳｆ３の処理がIndexデータであったか否かが判断され、Indexデータでなかった場合は、Ｕデータ（またはＲデータ）の伸張処理が行われ（ステップＳｆ５）、次いでＶデータ（またはＢデータ）の伸張処理が行われる（ステップＳｆ６）。また、ステップＳｆ４の判断結果が「ＹＥＳ」の場合はステップＳｆ５、Ｓｆ６をジャンプしてステップＳｆ７の処理へ進む。
【００５０】
ステップＳｆ７では、そのブロックにマスクデータが付属しているか否かが判断される。そして、付属している場合はマスクデータの伸張処理が行われる（ステップＳｆ８）。また、付属していない場合は、ステップＳｆ８をジャンプしてステップＳｆ９へ進む。ステップＳｆ９では、マスクデータに基づく画像合成およびＹＵＶ→ＲＧＢ変換（ＹＵＶデータの場合）が行われる。次に、ステップＳｆ１０へ進むと、全ブロックの伸張処理が終了したか否かが判断され、判断結果が「ＮＯ」の場合はステップＳｆ２へ戻り、以後、次のブロックの圧縮データの伸張処理が行われる。また、ステップＳｆ１０の判断結果が「ＹＥＳ」の場合は伸張済みの画像データによる画像表示が行われる（ステップＳｆ１１）。
【００５１】
次に、伸張処理の詳細を図１０、図１１を参照して説明する。図１０は伸張処理のフローチャート、また、図１１は伸張処理を説明するための説明図である。この伸張処理においては、最初に、圧縮データにウエブレット変換が行われているか否かが判断される（ステップＳｇ１）。そして、ウエブレット変換が行われていた場合は、まず、ローパスデータの復号処理が行われる。この復号処理は前述した符号化処理（図６のステップＳｅ１２）の全く逆の処理である。この復号処理によって前述したデータ列ＤＳ１が再現される（図１、図１１参照）。
【００５２】
次に、加算演算処理が行われる（ステップＳｇ３）。この加算演算処理は、前述した差分演算（図６のステップＳｅ７）の逆演算であり、
ｐN＝ｐN＋ｄN
但し、ｄN：データ列ＤＳ１のN番目のデータ
ｐN：加算演算結果として得られるデータ列のN番目のデータ
なる演算によってデータ列ＤＳ１が差分演算前のデータ列に戻される。次に、逆量子化処理が行われる（ステップＳｇ４）。
【００５３】
次に、ハイパスデータについて上述したステップＳｇ２〜Ｓｇ４と同様の処理が行われる（ステップＳｇ５〜Ｓｇ７）。次いで、上記の各処理が終了したローパスデータおよびハイパスデータに基づいてウエブレット逆変換が行われ、前述したデータ列ＤＳ（図１、図１１参照）に戻される（ステップＳｇ８）。次に、圧縮時に用いられたスキャンＮｏが示すスキャン順と逆の順でデータがブロック状に並べ替えられることによって、元のブロックが再構成される（ステップＳｇ９）。
【００５４】
また、ステップＳｇ１の判断において、ウエブレット変換が用いられていないと判断された場合は、ステップＳｇ１０、Ｓｇ１１、Ｓｇ１２の復号、加算演算、逆量子化処理が行われる。なお、これらの処理はステップＳｇ２〜Ｓｇ４の処理と同様である。次いで、スキャンＮｏに基づくブロックの再構成が行われる（ステップＳｇ９）。
【００５５】
次に、上述した伸張処理が行われる伸張回路について、図１２を参照して説明する。同図において、符号１は圧縮データが記憶されたＲＯＭ（リードオンリメモリ）である。ここで、圧縮データには、圧縮画像データの他に、圧縮時に使用された各種のパラメータおよびスキャンＮｏが含まれている。２はＦＩＦＯ（ファーストイン・ファーストアウト）構成のコードバッファであり、ＲＯＭ１から読み出された圧縮データが一時記憶される。３は復号回路であり、コードバッファ２から読み出された圧縮データの復号処理（図１０のステップＳｇ２参照）を行い、その結果得られたデータ列ＤＳ１を加算演算回路４へ出力すると共に、コードバッファ２から受けたスキャンＮｏをスキャン番号レジスタ５に書き込む。
【００５６】
加算演算回路４は、復号回路３から受けたデータ列ＤＳ１について、前述した加算演算を行う（ステップＳｇ３参照）。そして、加算演算後のデータ列がIndexデータであった場合はカラーパレット７へ出力し、Indexデータではなく、かつ、可逆データであった場合はバッファ８〜１０へ書き込み、Indexデータではなく、可逆データでもなかった場合は逆量子化回路６へ出力する。また、この加算演算回路４は、圧縮データにマスクデータが含まれていた場合に、加算演算後のマスクデータをバッファ１１へ書き込む。
【００５７】
逆量子化回路６は加算演算回路４の出力の逆量子化処理を行い（ステップＳｇ４参照）、その結果をバッファ８〜１０へ書き込む。すなわち、圧縮データがＹデータまたはＧデータであった場合はバッファ８に書き込み、圧縮データがＵデータまたはＲデータであった場合はバッファ９に書き込み、圧縮データがＶデータまたはＢデータであった場合はバッファ１０に書き込む。
【００５８】
カラーパレット７は加算演算回路４から出力されたIndexデータをＲＧＢデータに変換し、バッファ８〜１０へ書き込む。逆ウエブレット変換回路１２はバッファ８〜１０内のデータがウエブレット変換されたローパスデータであった場合に、そのデータを内部に一時記憶し、次にハイパスデータがバッファ８〜１０に書き込まれた時、ローパスデータ、ハイパスデータに基づくウエブレット逆変換を行なって、変換後のデータを出力する。この場合、バッファ８のデータにウエブレット逆変換を行なってバッファ１３へ出力し、バッファ９のデータにウエブレット逆変換を行なってバッファ１４へ出力し、バッファ１０のデータにウエブレット逆変換を行なってバッファ１５へ出力する。
【００５９】
スキャンＲＯＭ１６には、予めスキャンＮｏ０〜３に対応するデータ書き込み順序が記憶されている。そして、スキャン番号レジスタ５内のデータによって指定された書き込み順序を各バッファ１３〜１５および１１へ出力する。これにより、逆ウエブレット変換回路１２からバッファ１３〜１５へ出力されたデータは、スキャンＮｏに基づくスキャンを元に戻す順序でバッファ１３〜１５に書き込まれる。逆ウエブレット変換が行われないデータの場合も同様に、バッファ８〜１０からバッファ１３〜１５へデータが移される際にスキャンを元に戻す順序でデータ書き込みが行われる。バッファ１１の書き込みの場合も同様である。
【００６０】
ＹＵＶ−ＲＧＢ変換回路１７は、バッファ１３〜１５内のデータがＹ、Ｕ、Ｖデータであった場合に、そのデータを所定の演算によってＲ、Ｇ、Ｂデータに変換し、画像合成回路１８へ出力する。画像合成回路１８はＹＵＶ−ＲＧＢ変換回路１７からＲＧＢデータが出力された場合は、バッファ１１から出力されるマスクデータが指示する透明色のデータを、透明色のカラーコードが記憶された透明色レジスタ１９内のカラーコードに置き換え、１６×１６ワードのＲＧＢバッファ２０を介してフレームメモリに書き込む。同様に、バッファ１３〜１５内のデータがＲＧＢデータであった場合は、画像合成回路１８がそのＲＧＢデータの中の、バッファ１１内のマスクデータが指定するデータを透明カラーコードに置き換え、ＲＧＢバッファ２０を介してフレームメモリ２１に書き込む。
【００６１】
【発明の効果】
以上説明したように、この発明によれば、被圧縮データを高能率で圧縮することができ、また、伸張時においては、テーブルや複雑な演算の必要がなく、簡単な処理によって圧縮データを高速に伸張することができる。また、この発明によれば、インデックス形式の画像データの可逆圧縮およびＲＧＢ形式またはＹＵＶ形式の画像データの非可逆／高能率圧縮を共に行うことができる。
【図面の簡単な説明】
【図１】  この発明の一実施形態による画像データ圧縮方法を説明するための説明図である。
【図２】  同圧縮方法の処理過程を示すフローチャートである。
【図３】  図２における圧縮処理（ステップＳａ８）の詳細を示すフローチャートである。
【図４】  図３におけるスキャン処理（ステップＳｂ４）の詳細を示すフローチャートである。
【図５】  図３における圧縮処理（ステップＳｂ６）の詳細を示すフローチャートである。
【図６】  図５における圧縮処理（ステップＳｄ１、Ｓｄ３、Ｓｄ４、Ｓｄ６）の詳細を示すフローチャートである。
【図７】  図６における符号化処理（ステップＳｅ１２）を説明するためのフォーマット図である。
【図８】  図６における符号化処理（ステップＳｅ１２）を説明するための図である。
【図９】  図１の実施形態による圧縮方法で圧縮したデータを伸張する伸張処理の過程を示すフローチャートである。
【図１０】  図９における伸張処理（ステップＳｆ３、Ｓｆ５、Ｓｆ６、Ｓｆ８）の詳細を示すフローチャートである。
【図１１】  図９における伸張処理を説明するための説明図である。
【図１２】  この発明の一実施形態による画像データ伸張回路の構成を示すブロック図である。
【符号の説明】
ＧＤ、ＧＤ１〜ＧＤ３…画像データ、ＤＳ、ＤＳ１…データ列、１…ＲＯＭ（圧縮データ）、３…復号処理回路、４…加算演算回路、６…逆量子化回路、７…カラーパレット、８〜１１、１３〜１５…バッファ、１６…ＲＯＭ、１７…ＹＵＶ−ＲＧＢ変換回路、１８…画像合成回路。
【図１】
0003707456.tif 000002
【図２】
0003707456.tif 000003
【図３】
0003707456.tif 000004
【図４】
0003707456.tif 000005
【図５】
0003707456.tif 000006
【図６】
0003707456.tif 000007
【図７】
0003707456.tif 000008
【図８】
0003707456.tif 000009
【図９】
0003707456.tif 000010
【図１０】
0003707456.tif 000011
【図１１】
0003707456.tif 000012
【図１２】
0003707456.tif 000013