JP4760727B2 - データ圧縮装置とその復号装置、それらの方法、及びプログラム - Google Patents

データ圧縮装置とその復号装置、それらの方法、及びプログラム Download PDF

Info

Publication number
JP4760727B2
JP4760727B2 JP2007027844A JP2007027844A JP4760727B2 JP 4760727 B2 JP4760727 B2 JP 4760727B2 JP 2007027844 A JP2007027844 A JP 2007027844A JP 2007027844 A JP2007027844 A JP 2007027844A JP 4760727 B2 JP4760727 B2 JP 4760727B2
Authority
JP
Japan
Prior art keywords
data
buffer
encoded
storage area
compression
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.)
Expired - Fee Related
Application number
JP2007027844A
Other languages
English (en)
Other versions
JP2008193567A (ja
Inventor
三好 笹倉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2007027844A priority Critical patent/JP4760727B2/ja
Publication of JP2008193567A publication Critical patent/JP2008193567A/ja
Application granted granted Critical
Publication of JP4760727B2 publication Critical patent/JP4760727B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Compression Of Band Width Or Redundancy In Fax (AREA)

Description

本発明は、文字データや画像データ等の各種データの圧縮技術及びその復元技術に関する。
近年のコンピュータの急速な進歩に伴い、文字コード、ベクトル情報、画像など様々な種類のデータがコンピュータで扱われるようになった。同時に、扱われるデータ量も急速に増加し、大容量のデータが取り扱われるようになった。
そこで、データの伝送時間を短縮するためや記憶装置を効率的に利用するために、データ中の冗長な部分を省いてデータ量を圧縮することが行われている。データを圧縮する際に用いられる符号化方法としては、様々なものが知られている。このうち、文字コード、ベクトル情報、画像などの対象データに限定せずに様々なデータに適用可能な符号化は、ユニバーサル符号化と呼ばれている。
ユニバーサル符号化としては、文字列の類似性を利用する辞書型符号化と、文字の出現頻度を利用する確率統計型符号化が知られている(非特許文献1)。
なお、以下の説明においては情報理論に基づきデータの1byte単位を「文字」又は「バイトデータ」と表記し、データが任意byteつながったものを「文字列」又は「データ列」と表記することにする。
まず、辞書型符号化の代表的な方法としてLempel−Ziv符号化がある。Lempel−Ziv符号化では、(1)スライド辞書型(ユニバーサル型、LZ1、LZ77ともいう)と、(2)動的辞書型(増分分解型、LZ2、LZ78ともいう)の2つのアルゴリズムが提案されている。
LZ77(LZ1)については、非特許文献2がある。さらに、スライド辞書型アルゴリズムの改良として、LZSS符号(非特許文献3)や1/4インチ・カートリッジ磁気テープの標準圧縮方式であるQIC−122符号等がある。
LZ78(LZ2)については、非特許文献4等で説明されている。また、動的辞書型アルゴリズムの改良としては、LZW(Lempel−Ziv−Welch)符号(非特許文献5)等がある。
従来のスライド辞書型Lempel−Ziv符号化のアルゴリズム(特許文献1,特許文献2)を説明する。
まず、スライド辞書型アルゴリズム(LZ1)について説明する。スライド辞書型アルゴリズム(LZ1)は、演算量は多いが、高圧縮率が得られる方法である。即ち、符号化データを過去のデータ系列の任意の位置から一致する最長の系列に区切り(部分列)、過去の文字列の複製として符号化する方法である。
図7は、従来におけるユニバーサル型Lempel−Ziv符号の符号器の原理図を示す。Pバッファには符号化済みの入カデータが格納されており、Qバッファにはこれから符号化するデータが入力されている。
Qバッファの文字列をPバッファの系列と照合し、Pバッファ中で一致する最長の文字部分列を求め、Pバッファ中でこの最長文字列を指定するために、[Pバッファ中の最長一致系列(部分文字列)の開始位置]、[一致する長さ]、及び[不一致の文字(シンボル)]からなる情報の組を符号化する。
次に、Qバッファ内の符号化した文字列をPバッファに移して新たなデータをQバッファに入力する。以下、同様の操作を繰り返し、データを部分列に分解して符号化する。
このようにLempel−Ziv符号では、現在の文字コードの系列を符号化済みの過去の系列からの複製として符号化するものである。Lempel−Ziv符号を用いた場合、文字コードの文書情報は1/2程度に圧縮できる。
次に、図8〜図11を用いて、LZSS符号について説明する。
図8は、従来におけるLZSS符号化で用いるバッファ構成図である。LZSS符号化では、QバッファとPバッファを用いる。
Qバッファには、図9(b)に示すように、例えば4ビットのインデックス情報をもって、これから符号化する文字列を格納する例えば4ビットのインデックス情報に対応して16個の文字数を格納することができる。
Pバッファには、図9(a)に示すように、例えば12ビットのインデックス情報をもって4096個の符号化済の文字列を格納することができる。
図9は、従来におけるLZSS符号による符号化の処理フローを示す。まず、Pバッファを空にしてQバッファに入カデータを詰める(ステップ101。以下、ステップを「S」と称する)。その後に、Qバッファの文字列とPバッファの文字列とを照合し最長一致する文字部分列(Str)を求める(S102)。
文字列Strが2文字以上の場合(S103で「Yes」へ進む)、求められた文字部分列を指定するために[文字列Strの出現位置][一致長]の組で符号化する(S105)。
続いてQバッファ内の符号化した文字列をPバッファに移して、Qバッファ内に符号化した文字列分の新たな文字列を入力していくことで符号化を実行する(S106)。
尚、最長一致文字部分列Strが1バイト(1文字)のときは(S103で「No」へ進む)、生データで符号化した方が有利であるので、[生データ1バイト]をそのまま出力し(S104)、S106の処理を行う。
図10は、従来におけるLZSS符号化の符号化データの出力型式を示す。LZSS符号化の符号化データは、8個のデータ(符号化データ(2バイト)もしくは生データ(1バイト))を1組のデータとしてまとめると共に、そのまとめられた各8個のデータが符号化データなのか生データなのかを示すS104,S105で得られたフラグビットでなる8ビット識別データを先頭に付加し、1組のデータとして出力する。
図11は、従来におけるLZSS符号による復号化の処理フローを示す。まず、Pバッファの内容を空にする(S111)。データエンドでない場合(S112で「No」へ進む)、図10の識別データからフラグ1ビットを取り出す(S113)。
S113で取り出したフラグ1ビットが「0(圧縮データ)」の場合(S114で「Yes」へ進む)、符号化データから2バイトを取り出す(S115)。その取り出した符号化データ(2バイト)を「一致開始位置」と「一致長」とに分解し、Pバッファ上の一致開始位置で示される文字列から一致長分のサイズを復号データとして出力する(S116)。
一方、S113で取り出したフラグ1ビットが「1(生データ)」の場合(S114で「No」へ進む)、符号化データから1バイト取り出し、その取り出した1バイトのデータをそのまま復号データとして出力する(S117)。
S116またはS117の処理後、復号データをPバッファに移すと共に、移したサイズ分の最も古いデータをPバッファから捨てる(S118)。符号化データがエンドになるまでS113〜S118を繰り返す。
このようにして、LZSS符号による符号化を行ってデータを圧縮し、その圧縮データをLZSS符号による復号を行って復号することができる。
ところで、従来、多階調画像を印刷する多階調画像印刷装置においては、サーマルヘッドが1ピクセル当たり表現できる階調数が2階調であるため、マトリックス(ディザパターン)によるディザ法(ディザリング)を用いて多階調画像を擬似的に2階調の面積階調に変換するようにしていた。このディザ法では多階調画像を、例えば4×4(擬似16階調)や8×8(擬似64階調)画素の組織的なブロックに分割して各ブロック毎に2値化するもので、階調変化がなめらかな2値画像を得ることができる。
図12は、従来の多階調画像印刷装置において、ディザリングによりRGBデータをハーフトーン処理してデータ圧縮する説明図である。まず、R(赤)、G(緑)、B(青)がそれぞれ8ビットデータからなるRGBデータ100があるとする。
RGBデータ100のR(赤)、G(緑)、B(青)の色データは、色変換処理101により、シアン(C)、マゼンダ(M)、イエロー(Y)、ブラック(K)のデータ(各8ビット)に変換され、Cプレーンデータ(102C)、Mプレーンデータ(102M)、Yプレーンデータ(102Y)、Kプレーンデータ(102K)が生成される。
次に、シアン(C)、マゼンダ(M)、イエロー(Y)、ブラック(K)のそれぞれについて、ディザリング(ディザパターン(疑似網点化パターン)による処理)104が行われる。CMYKデータ(各8ビット)はそれぞれ、2値化されることにより、1ビットデータに変換される。
ここでディザリング104について述べる。ディザリングの前提として、Cプレーンデータ(102C)、Mプレーンデータ(102M)、Yプレーンデータ(102Y)、Kプレーンデータ(102K)にはそれぞれ対応するディザパターン(Cのディザパターン(103C)、Mのディザパターン(103M)、Yのディザパターン(103Y)、Kのディザパターン(103K))が用意されている。
ここで、シアン(C)のディザリングを例として説明する。同図において、Cプレーンデータ(102C)の各ドットC1,C2,・・・の階調値は、8ビットで構成されている。
Cのディザパターン(103C)は、同図では、縦512[バイト]×横512[バイト]のディザマトリックス(周期:512[バイト])から構成されているものとする。ディザマトリックスの各要素DC1,DC2,・・・DC512には、閾値が格納されている。
Cのディザパターン(103C)を用いて、Cプレーンデータ(102C)のディザリングを行うと、2値化されることにより、8ビットデータが1ビットデータに変換される。例えば、Cプレーンデータ(102C)のC1の階調値とCのディザパターン(103C)の閾値DC1とを比較し、C1≧DC1なら0(1ビット)を出力し、C1<DC1なら1(1ビット)を出力する。
Cプレーンデータ(102C)のC2,C3,・・・,C512は、それぞれ、Cのディザパターン(103C)の閾値DC2、DC3,・・・,DC512と比較して、1または0を出力する。Cプレーンデータ(102C)のC513は、再びDC1と比較して、1または0を出力する。以降、同様にして当該処理を繰り返す。
そうすると、2値化されたCの画像データ(1ビットデータ)105Cが得られる。このとき、例えば、同じ色で矩形領域を塗り潰すような場合、出力ドット値は、ディザパターンの周期ごとに同じ値となる(C1,・・・,C8と、C513,・・・,C520とは同じ値である。)。
マゼンダ(M)、イエロー(Y)、ブラック(K)のプレーンデータについても、C(シアン)と同様にしてディザリングを行い、それぞれMの画像データ(1ビットデータ)105M、Yの画像データ(1ビットデータ)105Y、Kの画像データ(1ビットデータ)105Kが得られる。
特許第3241788号 特許第2940948号 宗像清治、「Ziv−Lempelのデータ圧縮法」、情報処理、Vol.26,No.1,1985年 J.Ziv,A.Lempel,「A UniversalA190rithmforSequentiaIDataCompression(順次データ圧縮に関する万能アルゴリズム)」、情報理論に関するIEEE会報、vol.IT−23,No3、PP.337〜343(1977年5月)、 (TC.Bell,"Better OPM/L Text Compression",IEEE Trans.On Commun.,vol.COM−34,No.12,Dec.1986) J.Ziv,A.Lempel,「Compression of Individual Sequences via Variable Rate Coding(可変速符号化による個別連鎖の圧縮)」、情報理論に関するIEEE会報、vol.IT−24、No.5、pp.530〜536(1978年9月) T.A.Welch,"A Technique for High−PerformanceDataCompression",Computer,June1984
以下に示すように、LZ1系LZ符号化には問題(1)及び(2)、LZSS符号化には問題(3)がある。
(1)ユニバーサル型のアルゴリズムは、符号化済みの文字列の中から符号化対象の文字列に最大長に一致する文字部分列を検索して、その文字部分列を複製として符号化を実行する方式であって、増分分解型よりも高いデータ圧縮率が実現できる方式である。
このようなアルゴリズムを実装していくにあたっては、データの圧縮率をより高めていく構成を採用していく必要があるとともに、符号化された符号化データが利用され易い形式となる構成にする必要がある。
(2)データの圧縮率を高めていくためには、Pバッファの格納文字数を多くしていく必要があるとともに、Qバッファの格納文字数を多くしていく必要がある。しかるに、PバッファとQバッファの格納文字数を増加させると、符号化データが8ビットの倍数でなくなるため、データを転送する際にビット詰め等の面倒な処理が強いられ極めて不便なものとなる。
そうかといって、Pバッファのビット幅を18ビット、Qバッファのビット幅を6ビット等といったように符号化データが3バイトになるようにすれば、符号化データのデータ量が著しく多くなってしまうという問題点がある。
また、ハードウェアでLZ符号化を実現する場合には次の問題がある。より大きなウィンドウサイズに伴う1つの問題は、全体の圧縮及び伸張エンジンが単一の集積回路上に配置されるべきである場合には特に、回路が膨大になり、必要なハードウェアのコストが非常に高くなることである。
また、ソフトウェアでLZ符号化を実現する場合には次の問題がある。ウィンドウサイズを大きくすると、比較演算量が非常に膨大になって性能劣化を引き起こし、その性能劣化が多くの場合に許容され得ない。
したがって、あらゆる場合において、通常は、圧縮アルゴリズムの互換性のあるソフトウェア及びハードウェアのバージョンを有することが望ましい。このとき、アルゴリズムによって達成され得る圧縮比率と共に、ハードウェア及びソフトウェアの両方のコスト及び速度が考慮されなくてはならない。
(3)上記のLZSS符号化では、Pバッファとして4096個の文字列とQバッファとして16個の文字列分のバッファを持たなくてはならない。このことは、上記の問題(2)に当てはまる。
また、図13のように、符号化データを1バイトデータとする方法もある。この場合、Pバッファとして32個の文字列、Qバッファとして8個の文字列分のバッファで済むが、Pバッファが32個の文字列と少ないため、同じ値のデータが出現する可能性が低くなり、圧縮効率が悪くなる。
特に、画像データの場合、画像データはディザパターンによりディザリングされて生成されているために、ディザパターンの周期ごとに同じ値のデータが出現する可能性が高い。図13で示したように、ディザパターンの周期として512[バイト]のようなものもあり、1バイトの符号化データでは、図14に示すように、圧縮効率が悪い。
図14は、図13の符号化データフォーマットを用いて、図12の画像データ(105C)を符号化する場合の例を示す。図13で説明したように、ある色で塗りつぶされた矩形領域の場合、同じ色でも、ディザパターンの周期ごとに同じ値のデータとなる(C1−8とC513−520とは同じ値であり、C9−16とC521−528とは同じ値であり、それ以降も同様である。)。したがって、同じ入力データ列同士を圧縮するようにすれば、圧縮効率は向上する。
ここで、Cの画像データ(105C)をLZ77(LZ1)で圧縮する場合、C1−8とC513−520とのギャップはディザパターンの周期に対応する。そうすると、周期[バイト]≧Pバッファの許容量[バイト]の場合には、C513−520と一致するデータ列C1−8がPバッファに存在しないこととなる。そのため、C513−520と一致するデータ列C1−8をPバッファに含めようとすれば、Pバッファの格納文字数をディザパターンの周期よりも多くする必要があるが、そうすると前記問題(2)に直面する。
上記の課題を鑑み、本発明では、より高速で、より圧縮効率が高く、かつ、より安価に辞書型符号化方式による画像データの圧縮を行うことを目的とする。
本発明にかかる、入力データを辞書型符号化方式により符号化して圧縮するデータ圧縮装置は、未符号化データが格納される未符号化データ格納領域と、該未符号化データ格納領域中の前記未符号化データが符号化されて符号化済みデータの履歴が先入れ先出し式で格納される符号化データ履歴格納領域であって、かつ前記符号化済データのうち前記未符号化データ格納領域の先頭位置にある前記未符号化データから連続するデータ列と最長一致する該符号化済データの部分列を検索するための検索範囲である検索領域が含まれる該符号化データ履歴格納領域と、を有する符号化用入力データバッファと、前記検索領域と前記未符号化データ格納領域とが隣接する状態から、該未符号化データ格納領域に対して該検索領域を所定量ずらし、該検索領域内で前記検索を行って検索された該符号化済データの部分列の一致開始位置及び一致長で指定して符号化し、該符号化済み入力データを前記符号化データ履歴格納領域に移して新たな符号化済みデータとし、次の未符号化データを符号化する圧縮手段と、前記未符号化データに対して施されているデータ処理の規則性に基づいて、前記検索領域と前記未符号化データ格納領域とが隣接する状態から、該未符号化データ格納領域に対して該検索領域を前記所定量ずらすためのずらし量を設定するずらし量設定手段とを備え、前記ずらし量設定手段は、前記未符号化データに対して施されているデータ処理がディザリングである場合、ディザパターンの周期に基づいて、前記ずらし量を設定することを特徴とする。
このように構成することにより、より高速で、より圧縮効率の高い、かつ、より安価でデータ圧縮を行うことができる
また、このように構成することにより、一定の規則性をもって配列されているデータ列に対して、Pバッファ(履歴バッファ)を現在の圧縮対象文字データの直前から、処理済の文字列データのその規則性に基づいた位置にずらすことにより、圧縮データの圧縮率を向上させることができる。
更に、このように構成することにより、Pバッファの先頭位置とQバッファの先頭位置とのギャップをディザパターンの周期と一致させることができるので、同じ色で矩形領域を塗り潰すような場合に一定周期で同じデータ列が出現するという特徴を利用して、効率よい圧縮処理を行うことができる。
本発明を用いることにより、より高速で、より圧縮効率が高く、かつ、より安価に辞書型符号化方式による画像データの圧縮を行うことができる。
本発明では、文字列単位で圧縮する適応型の辞書型符号化方法(Lempel−Ziv法)において、Pバッファ(履歴バッファ)を現在の圧縮対象文字データの直前から、処理済の文字列データ側へ任意に移動させて、符号化を行う。
本発明の第1の実施形態にかかる、入力データを辞書型符号化方式により符号化して圧縮するデータ圧縮装置は、符号化用入力データバッファ(入力データバッファ2)と、圧縮手段(圧縮手段3)とを有する。
符号化用入力データバッファには、未符号化データ格納領域(Qバッファ22)と、符号化データ履歴格納領域(符号化データ履歴格納領域24)とを領域がある。未符号化データ格納領域には、未符号化データが格納される。
符号化データ履歴格納領域には、該未符号化データ格納領域中の前記未符号化データが符号化されて符号化済みデータの履歴が先入れ先出し式で格納され、かつ、検索領域(Pバッファ21)を含んでいる。
検索領域(Pバッファ21)は、前記符号化済データのうち前記未符号化データ格納領域の先頭位置にある前記未符号化データから連続するデータ列と最長一致する該符号化済データの部分列を検索するための検索範囲である。
圧縮手段は、前記検索領域(Pバッファ21)と前記未符号化データ格納領域(Qバッファ22)とが隣接する状態から、該未符号化データ格納領域(Qバッファ22)に対して該検索領域(Pバッファ21)を所定量Zずらし、該検索領域(Pバッファ21)内で前記検索を行って検索された該符号化済データの部分列の一致開始位置及び一致長で指定して符号化し、該符号化済み入力データを前記符号化データ履歴格納領域に移して新たな符号化済みデータとし、次の未符号化データを符号化する。
また、前記圧縮手段は、前記符号化済データの部分列の一致開始位置及び一致長で指定して符号化して1バイトデータとし、バイト単位の圧縮処理を行うことができる。
前記データ圧縮装置は、さらに、ずらし量設定手段(ずらし量設定手段5)を備える。ずらし量設定手段は、前記未符号化データに対して施されているデータ処理の規則性に基づいて、前記検索領域(Pバッファ21)と前記未符号化データ格納領域(Qバッファ22)とが隣接する状態から、該未符号化データ格納領域(Qバッファ22)に対して該検索領域(Pバッファ21)を前記所定量ずらすためのずらし量Zを設定する。また、前記ずらし量設定手段は、前記ずらし量を示す情報を前記符号化データに付与する。
なお、前記ずらし量設定手段は、前記未符号化データに対して施されているデータ処理がディザリングである場合、ディザパターンの周期に基づいて、前記ずらし量を設定することができる。
本発明の第2の実施形態にかかるデータ復号装置は、第1の実施形態にかかるデータ圧縮装置により符号化された符号化データを辞書型符号化方式により復号処理するものである。
当該データ復号装置は、復号用入力データバッファ(入力データバッファ32)と、ずらし量取得手段(ずらし量取得手段35)と、復号手段(復号手段33)とを備える。
復号用入力データバッファ(入力データバッファ21)には、順次入力される前記符号化データが復号されて該復号済みデータの履歴が先入れ先出し方式で格納される復号データ履歴格納領域を有する。
ずらし量取得手段は、入力された前記符号化データから、前記復号データ履歴格納領域内の前記復号済みデータの所定位置からの相対的な位置を示すずらし量を取得する。
復号手段は、前記符号化データから前記一致開始位置と前記一致長を取得し、前記ずらし量分ずらした前記復号データ履歴格納領域内の該一致開始位置の示す位置から前記一致長に対応する前記復号済みデータの部分列を復号データとして出力する。
(第1の実施形態)
本実施形態では、出カデータも含めて全てバイトデータ扱いとした、スライド辞書型Lempel−Ziv符号化方法(LZSS)において、スライド辞書のPバッファ(履歴バッファ)を任意の位置にずらす場合について説明する。
図1は、本実施形態におけるデータ圧縮装置の構成概念図である。同図において、データ圧縮装置1は、入力データバッファ2、圧縮手段3、出力データバッファ4、ずらし量設定手段5から構成される。
入力データバッファ2には、例えば文字データ、ベクトルデータ、画像データ等のデータの入力データ列(または入力文字列)が入力される。入力データバッファ2は、例えば、RAM(ランダムアクセスメモリ)で構成される。
ずらし量設定手段は、入力データ列の配列の特徴(例えば、配列の周期等)に基づいて、Pバッファ(履歴バッファ)を、現在の圧縮対象文字データの直前(Qバッファの直前)から処理済の文字列データ側へ所定文字数(ビット単位またはバイト単位)ずらす。
圧縮手段3は、適応型の辞書型符号化方法(Lempel−Ziv法)用いて、入力データバッファ2に入力された入力データ列に対して符号化処理を行う。適応型の辞書型符号化方法は、入力データ列を、符号化済データの部分列のうち最長一致するものを検索して符号化する方法である。
この適応型の辞書型符号化方法では、圧縮(符号化)されたデータであるか否かを識別する識別フラグを除く符号化データを1バイトデータとして出力し、さらに識別フラグ(1ビット)を8個まとめて1バイトデータとして出力することにより、全てバイト単位での出力としている。
出力データバッファ4には、圧縮手段3により符号化処理がなされた符号化データが所定のフォーマットで出力される。出力データバッファ4は、例えば、RAM(ランダムアクセスメモリ)で構成される。出力データバッファ4に出力されたデータは、データ圧縮装置1の外部に出力される。
なお、圧縮手段3及びずらし量設定手段5は、ハードウェアで構成されていてもよいし、または記憶装置等に格納された当該機能を実行するプログラムを制御装置(CPU)が読み込むことによりその機能を実現するようにしてもよい。
図2は、本実施形態におけるデータ圧縮方法の原理を示す。入力データバッファ2は、少なくとも、Pバッファ21とQバッファ22の格納領域を有し、さらに、Pバッファ21をQバッファ22の直前からずらし量Z分ずらすことにより生じる可変の格納領域(ずらし格納領域)23を有する場合がある。Pバッファ21は、履歴バッファであり、本実施形態では32バイトで構成されている。
Qバッファ22は、供給された入力文字列(未符号化データ)をFIFO(First In First Out、先入れ先出し)方式で格納する未符号化データ格納領域である。なお、本実施形態ではQバッファ22は、9バイトで構成されている。
Qバッファ22中の未符号化データが符号化されると、ずらし格納領域23とPバッファ21とからなる領域(符号化データ履歴格納領域24)には、その符号化済みデータの履歴がFIFO方式で順次格納される。
しかし、Pバッファ21とずらし格納領域23のうち、文字列単位で圧縮する適応型の辞書型符号化方法(Lempel−Ziv法)のPバッファ(履歴バッファまたは辞書バッファ)と機能するのは、Pバッファ21である。すなわち、Pバッファ21が、符号化済データのうちQバッファ22の先頭位置にある未符号化データから連続するデータ列(同図でいえば、Qバッファ22中の“abcd”に相当)と最長一致する該符号化済データの部分列(同図でいえば、Pバッファ21中の“abcd”に相当)を検索するための領域(検索領域)である。
この場合、ずらし格納領域23には、未符号化データが符号化された符号化済みデータの履歴が順次Qバッファ22から入力されてくるので、その移ったデータ分の古いデータをPバッファ21に出力するようにする。このずらし格納領域の容量は、ずらし量Zをかえることにより可変であるから、符号化データ履歴格納領域24中におけるPバッファ21の位置を調整することができる。
したがって、Pバッファずらし量Zを任意に設定することにより、Pバッファ21を、Qバッファ22の先頭からそのずらし量Z分だけ入力データ列の進行方向(同図で言えば左側方向)にずらすことができる。
よって、入力データ列が一定の周期で繰り返されるような場合には、Pバッファ21の先頭位置とQバッファの先頭位置との差がその周期となるように(周期=Pバッファ21の容量+Pバッファのずらし量Z)、ずらし量Zを設定することができる。
なお、同図に示す太枠Aは、スライディング・ウィンドウであり、同図に示す矢印c方向にスライド可能に構成されている。入力データ列は、前述のように文字データ、ベクトルデータ、画像データ等のデータであり、具体的にはスライディング・ウィンドウAを矢印c方向にスライドすることによって、Qバッファ22への入力データ列の取り込みを行う。
ここで入力データバッファ2の動作について説明する。Pバッファ21には符号化済みの入力データ列が格納されており、Qバッファ22には符号化前の入力データ列が入力される。この状態で、Qバッファ22に入力された入力文字列は、順次Pバッファ21に格納された文字列と照合され、Pバッファ21の中において一致する最長の文字列が検索される。そして、Pバッファ21の中に対応する最長文字列が存在すると、符号化処理が行われる。
同図では、Qバッファ22内には符号化処理前の入力文字列「abcdh」が入力されている。Qバッファ22の先頭位置からずらし量Zだけ離れた位置に設定されたPバッファ21には、既に符号化処理がなされた文字列「abcf・・・abcde」が入力されている。
この場合、Pバッファ内には、Qバッファ22内の文字部分列と一致する文字列は、「a」、「ab」、「abc」、「abcd」とあるが、そのうち最長の文字列「abcd」が検索される。このとき、一致開始位置は「n」、一致文字列のサイズは4バイト(4文字)である。
図3は、本実施形態における出力データバッファ4へ出力された圧縮データ(符号化データ)のフォーマットを示す。図3(a)に示すように、出力データバッファ4の先頭2バイトには、Pバッファ22のずらし量Zが記憶されている。
出力データバッファ4の先頭から3バイト目に格納されているのはフラグデータであり、フラグデータの後に8個の圧縮データ(及び非圧縮データ)が記録されている。フラグデータは図3(b)に示すように、1バイト(8ビット)のデータであり、フラグ1ビット“0”が非圧縮データを示し、フラグ1ビット“1”が圧縮データを示す。
また、図3(b)に示す#1〜#8の各フラグは、フラグデータに続く圧縮データ(及び非圧縮データ)それぞれに付された#1〜#8に対応する。例えば、最初のフラグデータ(#1)がフラグ“1”である場合、8個の圧縮データ及び非圧縮データのうち最初の(#1)のデータは、1バイト(8ビット)の圧縮データである。
図3(e)に示すデータ構成は、その圧縮データの例を示し、上位5ビットが一致開始位置のデータが記録され、下位3ビットが一致文字列の長さデータが記録される。したがって、Pバッファ21は5ビットで表せる容量を有するバッファである。また、下位3ビットより2バイト(000)〜9バイト(111)の範囲で圧縮できるから、最大で9バイトの文字列のデータの一致検索を行うことができる。
一方、最初のフラグデータ(#1)がフラグ“0”である場合、8個の圧縮データ(及び非圧縮データ)のうち最初の(#1)のデータは、1バイト(8ビット)の非圧縮データである。図3(d)に示すデータ構成は、この非圧縮データの例を示し、原データのまま記憶される。
#2以降の圧縮データ(及び非圧縮データ)についても#1と同様であり、フラグデータに記録されたフラグの状態に対応した圧縮データか、または非圧縮データが記録されている。
尚、上記8個の圧縮データ(及び非圧縮データ)に続くフラグデータは、図3(c)に示すように、#9〜#16の圧縮データ(及び非圧縮データ)の情報が記録されている。本実施形態では、スライド辞書のPバッファ(履歴バッファ)21とQバッファ22を小さくし、その文字列参照の符号化データ(その識別フラグを除く)を1バイトデータとして全てバイト単位の出力としている。
図4は、本実施形態における圧縮(符号化)処理のフローを示す。まず、ずらし量設定手段5により、出カデータバッファ4の先頭2バイトに、Pバッファ21のずらし量Zをセットが設定される(S1)。Pバッファ21のずらし量Zは、任意で設定することができる。本実施形態では、ディザパターンの周期[バイト]に基づいて、Pバッファ21のずらし量Zを設定することとする。ディザパターンの周期[バイト]は、出力ドットデータ8ビット(1バイト)の多値化に基づいて、以下の式を用いて換算する必要がある。
ディザパターンの周期[バイト]=L/K
ここで、Lはディザパターンのサイズ[バイト]を示す。例えば、ディザパターンのサイズが1024×1024の場合には、L=1024[バイト]となる。
Kの逆数(1/K)は、多値ディザ法による換算比を示す。例えば、2値化の場合には、8ビット(1バイト)データは、1ビットデータに変換されるので、1/K=1/8である。4値化の場合には、8ビット(1バイト)データは、2ビットデータに変換されるので、1/K=2/8=1/4である。16値化の場合には、8ビット(1バイト)データは、4ビットデータに変換されるので、1/K=4/8=1/2である。
そうすると、Pバッファ21のずらし量Zは、
Pバッファのずらし量Z=(ディザパターンの周期)−Pバッファの容量
で表すことができる。これにより、Pバッファの先頭位置とQバッファの先頭位置とのギャップをディザパターンの周期と一致させることができる。よって、同じ色で矩形領域を塗り潰すような場合に一定周期で同じデータ列が出現するという特徴を利用して、効率よい圧縮処理を行うことができる。
次に、圧縮手段3は、入力データバッファ2において、Pバッファ21及びPバッファずらし量Z分のバッファの内容を空にする(S2)。
次に、圧縮手段3は、Qバッファ22に入カデータ列を詰める(S3)。圧縮手段3は、Pバッファ21内の文字列から、Qバッファ22の文字列に一致するPバッファの最長の文字列Strを検索する(S4)。
一致最長文字列Strが2文字以上の場合(S5で「Yes」へ進む)、圧縮手段3は文字列参照モードへ移行する(S7)。すなわち、検索された一致最長文字列Strを指定するために、[フラグビット:1]、[文字列Strの開始位置(5ビット)]、[一致長(3ビット)]の組を符号化し、出力データバッファ4に出力する。このとき、フラグビットの出力は、8個のフラグビットをまとめて1バイトのデータとして出力する(図3(b))。
一方、一致最長文字列Strが1文字の場合(S5で「No」へ進む)、圧縮手段3は生データ・モードの処理を行なう(S6)。すなわち、[フラグビット:0]及び[生データ1バイト]の組を符号化し、出カデータバッファ4に出力する。このとき、フラグビットの出力は、8個のフラグビットをまとめて、1バイトのデータとして出力する(図3(b))。
S6またはS7の処理後、圧縮手段3は、符号化済みのQバッファ22の文字列をPバッファ21の方向に移すとともに、同数の新たな文字をQバッファ22に入力する。同時に、Pバッファ21方向に移した文字数分の最も古い文字をPバッファ21から捨てる(FIFO方式:First In First Out)(S8)。
それから、圧縮手段3は、入カデータ列が存在する間S4〜S8の処理を繰り返し(S9で「No」へ進む)、入力データ列がなくなれば(S9で「Yes」へ進む)、データ圧縮処理を終了する。
本実施形態によれば、文字列の類似性に着目した、文字列単位で圧縮する適応型の辞書型符号化方法(Lempel−Ziv法)を行う場合、圧縮対象データの入力データ列の配列の規則性に基づいて、Pバッファ(履歴バッファ)を現在の圧縮対象文字データの直前から、処理済の文字列データの任意の位置にシフトさせることにより、より高速で、より圧縮効率の高い、かつより安価で、データ圧縮率を向上させることができる。
すなわち、一定の規則性をもって配列されているデータ列に対して、Pバッファ(履歴バッファ)を現在の圧縮対象文字データの直前から、処理済の文字列データのその規則性に基づいた位置にずらすことにより、圧縮データの圧縮率を向上させることができる。特に、画像データのように、周期的に同じ値のデータが繰り返す可能性が多いデータには、非常に有効である。
また、前記ずらし量を示す情報を前記符号化データに付与するので、圧縮データを復号する場合、Pバッファをどのくらいずらせばよいかを復号する側で認識することができる。
また、全てバイトデータ扱いとしたことにより、ビット操作を極力少なくすることができ、処理の高速化を図ることができる。
(第2の実施形態)
本実施形態では、第1の実施形態の圧縮処理によって圧縮されたデータの復元処理について説明する。以下、具体的に説明する。
図5は、本実施形態におけるデータ復号装置の構成概念図である。同図において、データ復号装置31は、入力データバッファ32、復号手段33、出力データバッファ34、ずらし量取得手段35から構成される。
ずらし量取得手段35は、第1の実施形態においてPバッファのずらし量Zが付与された圧縮データ(符号化データ)から、そのずらし量Zを取り出すものである。
入力データバッファ32には、ずらし量取得手段35により取り出されたずらし量以外の、符号化データがFIFO方式で入力されるものであり、かつ復号済みデータの履歴が格納されるPバッファを有する。入力データバッファ32は、例えば、RAM(ランダムアクセスメモリ)で構成される。なお、Pバッファをずらした後に生じる領域にも、FIFO方式で復号済みデータの履歴が格納される。すなわち、Pバッファは、ずらし量Z分だけ拡張されることになる。
復元手段33は、ずらし量取得手段35により取得されたPバッファのずらし量Z分だけ、入力データバッファ32のPバッファを拡張し、入力データバッファ32に入力された適応型の辞書型符号化(Lempel−Ziv法)符号化データに対して、復号処理を行う。
すなわち、復号手段33は、符号化データから一致開始位置と一致長を取得して、Z分ずらした後のPバッファの先頭位置を基準とした一致開始位置の示す位置から前記一致長に対応する前記復号済みデータの部分列を復号データとして出力する。
なお、復元手段33、ずらし量取得手段35は、ハードウェアで構成されていてもよいし、または記憶装置等に格納された当該機能を実行するプログラムを制御装置(CPU)が読み込むことによりその機能を実現するようにしてもよい。
復元手段33によって復号されたデータは、出力データバッファ34を介して、データ復号装置31の外部へ出力される。出力データバッファ34は、例えば、RAM(ランダムアクセスメモリ)で構成される。
図6は、本実施形態における復号処理のフローを示す。まず、第1の実施形態で圧縮された圧縮データ(符号化データ)がデータ復号装置31へ入力される。すると、ずらし量取得手段35は、その符号化データ(図3(a))の先頭2バイトを取り出して解析し、その解析した結果をPバッファのずらし量Zとして設定する(S11)。
次に、復号手段33は、入力データバッファ2において、Pバッファ21及びPバッファずらし量Z分のバッファの内容を空にする(S12)。
次に、復号手段33は、符号化データがデータエンドかどうかを判定する(S13)。符号化データがデータエンドである場合(S13で「Yes」へ進む)、復号手段33は、復号化処理を終了する。
符号化データがデータエンドでない場合(S13で「No」へ進む)、復号手段33は、フラグデータ(図3(b))からフラグ1ビットを取り出す(S14)。フラグビットを取り出す場合、8個分のフラグビット(#1〜#8)の集まりである1バイトデータのフラグが取り出され、その中から1ビットずつフラグビットとして処理される。なお、8個分のデータについて処理が終了すれば、次の1バイトのフラグデータ(#9〜#16)が取り出される(図3(c))。
復号手段33は、S14で取り出したフラグビットが圧縮データ(フラグビット=1)/非圧縮データ(フラグビット=0)かを判定する。圧縮データ(フラグビット=1)と判定された場合(S15で「Yes」へ進む)、復号手段33は、符号化データから当該フラグビット(#nフラグ)に対応する#nデータ(1バイト)を取り出す(S16)。
それから、復号手段33は、取り出した符号データ(1バイト)を「一致開始位置」(上位5ビット)と「一致長」(下位3ビット)とに分解する(図3(e))。そして、復号手段33は、「Pバッファのずらし量Z」分ずらされたPバッファの先頭位置を基準とした場合での、「一致開始位置」から「一致長」分のサイズに対応する文字列を復号データとして出力データバッファ34を介して出力する(S17)。
S15において、非圧縮データ(フラグビット=0)と判定された場合(S15で「No」へ進む)、復号手段33は、符号化データから当該フラグビット(#nフラグ)に対応する#nデータ(1バイト)を取り出し、その取り出したデータをそのまま復号データとして出力データバッファ34を介して出力する(S18)。
S17またはS18の処理後、復号手段33は、S17またはS18の処理で得られた復号データをPバッファ方向に移すと共に、移したサイズ分の最も古いデータをPバッファから捨てる(FIFO方式)(S19)。以降、S13でデータエンドと判定されるまで、S13〜S19の処理を繰り返す。
本実施形態によれば、可逆的に(無損失)復号化が行われ、圧縮処理に対応する復号処理を行うことができる。
本発明によれば、より高速で、より圧縮効率が高く、かつ、より安価に辞書型符号化方式による画像データの圧縮を行うことができる。また、スライド辞書(Pバッファ、Qバッファを含むスライディング・ウィンドウ)を小さくすることができ、かつ圧縮効率も向上させることができる。なおかつ、全てバイトデータ扱いしたことにより、ビット操作を極力少なくできるので、ソフトウェア的な観点から圧縮・復号処理の高速化を図ることができる。
また、ハードウェア的な観点から、履歴アレイやシフトレジスタの「スライド辞書のPバッファ」と、比較器等を非常に少なくすることができ、回路規模を非常に小きくでき、安価で済む。かつ、圧縮・復号処理の高速化を図ることができ、さらに高圧縮率を実現できる。特に、画像データのように、周期的に同じ値のデータが繰り返す可能性が多いデータには、非常に有効である。
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または形態を取ることができる。例えば、本発明は、プリンタ、FAX、MFP(マルチファンクションプリンタ)またはディスプレイ等の画像形成装置、またはそれらのドライバに適用してもよいし、データ圧縮(符号化)/解凍(復号)ソフトウェアまたはデータ圧縮(符号化)・解凍(復号)ハードウェアとして適用してもよい。
第1の実施形態におけるデータ圧縮装置の構成概念図である。 第1の実施形態におけるデータ圧縮方法の原理を示す。 第1の実施形態における出力データバッファ4へ出力された圧縮データ(符号化データ)のフォーマットを示す。 第1の実施形態における圧縮(符号化)処理のフローを示す。 第2の実施形態におけるデータ復号装置の構成概念図である。 第2の実施形態における復号処理のフローを示す。 従来におけるユニバーサル型Lempel−Ziv符号の符号器の原理図を示す。 従来におけるLZSS符号化で用いるバッファ構成図である。 従来におけるLZSS符号による符号化の処理フローを示す。 従来におけるLZSS符号化の符号化データの出力型式を示す。 従来におけるLZSS符号による復号化の処理フローを示す。 従来の多階調画像印刷装置において、ディザリングによりRGBデータをハーフトーン処理してデータ圧縮する説明図である。 従来における1バイトデータ単位で表した符号化データを示す。 図13の符号化データフォーマットを用いて、図12の画像データ(105C)を符号化する場合の例を示す。
符号の説明
1 データ圧縮装置
2 入力データバッファ
3 圧縮手段
4 出力データバッファ
5 ずらし量設定手段
21 Pバッファ
22 Qバッファ
23 ずらし格納領域
24 符号化データ履歴格納領域
31 データ復号装置
32 入力データバッファ
33 復号手段
34 出力データバッファ
35 ずらし量取得手段

Claims (1)

  1. 入力データを辞書型符号化方式により符号化して圧縮するデータ圧縮装置において、
    未符号化データが格納される未符号化データ格納領域と、該未符号化データ格納領域中の前記未符号化データが符号化されて符号化済みデータの履歴が先入れ先出し式で格納される符号化データ履歴格納領域であって、かつ前記符号化済データのうち前記未符号化データ格納領域の先頭位置にある前記未符号化データから連続するデータ列と最長一致する該符号化済データの部分列を検索するための検索範囲である検索領域が含まれる該符号化データ履歴格納領域と、を有する符号化用入力データバッファと、
    前記検索領域と前記未符号化データ格納領域とが隣接する状態から、該未符号化データ格納領域に対して該検索領域を所定量ずらし、該検索領域内で前記検索を行って検索された該符号化済データの部分列の一致開始位置及び一致長で指定して符号化し、該符号化済み入力データを前記符号化データ履歴格納領域に移して新たな符号化済みデータとし、次の未符号化データを符号化する圧縮手段と、
    前記未符号化データに対して施されているデータ処理の規則性に基づいて、前記検索領域と前記未符号化データ格納領域とが隣接する状態から、該未符号化データ格納領域に対して該検索領域を前記所定量ずらすためのずらし量を設定するずらし量設定手段とを備え
    前記ずらし量設定手段は、前記未符号化データに対して施されているデータ処理がディザリングである場合、ディザパターンの周期に基づいて、前記ずらし量を設定することを特徴とするデータ圧縮装置。
JP2007027844A 2007-02-07 2007-02-07 データ圧縮装置とその復号装置、それらの方法、及びプログラム Expired - Fee Related JP4760727B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007027844A JP4760727B2 (ja) 2007-02-07 2007-02-07 データ圧縮装置とその復号装置、それらの方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007027844A JP4760727B2 (ja) 2007-02-07 2007-02-07 データ圧縮装置とその復号装置、それらの方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2008193567A JP2008193567A (ja) 2008-08-21
JP4760727B2 true JP4760727B2 (ja) 2011-08-31

Family

ID=39753200

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007027844A Expired - Fee Related JP4760727B2 (ja) 2007-02-07 2007-02-07 データ圧縮装置とその復号装置、それらの方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP4760727B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5218015B2 (ja) * 2008-12-17 2013-06-26 カシオ電子工業株式会社 データ伸長装置
JP5251799B2 (ja) * 2009-09-15 2013-07-31 株式会社リコー データ処理装置およびデータ処理方法
JP5454105B2 (ja) * 2009-11-26 2014-03-26 株式会社リコー データ処理装置およびデータ処理方法
JP2012129778A (ja) * 2010-12-15 2012-07-05 Ricoh Co Ltd 画像処理装置および画像処理方法
JP2012134659A (ja) * 2010-12-20 2012-07-12 Ricoh Co Ltd 画像処理装置および画像処理方法
JP2012134929A (ja) * 2010-12-24 2012-07-12 Ricoh Co Ltd 画像処理装置および画像処理方法
US8848250B2 (en) * 2012-10-23 2014-09-30 Kyocera Document Solutions Inc. Compression of halftoned digital images
CN116506629B (zh) * 2023-06-27 2023-08-25 上海伯镭智能科技有限公司 用于矿山无人驾驶矿车协同控制的路况数据压缩方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2823917B2 (ja) * 1990-01-12 1998-11-11 富士通株式会社 データ圧縮方式
JP4479530B2 (ja) * 2004-12-28 2010-06-09 カシオ電子工業株式会社 データ圧縮装置、及びデータ復元装置

Also Published As

Publication number Publication date
JP2008193567A (ja) 2008-08-21

Similar Documents

Publication Publication Date Title
JP4760727B2 (ja) データ圧縮装置とその復号装置、それらの方法、及びプログラム
US6653954B2 (en) System and method for efficient data compression
US7365658B2 (en) Method and apparatus for lossless run-length data encoding
JP4479530B2 (ja) データ圧縮装置、及びデータ復元装置
US6038346A (en) Runs of adaptive pixel patterns (RAPP) for lossless image compression
US7791513B2 (en) Adaptive combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems
US7786907B2 (en) Combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems
US7043077B2 (en) System and method for efficient compression of raster image data
JP2010136417A (ja) データ圧縮装置、及びデータ復元装置
US7068398B2 (en) System and method for efficient tile generation from complex raster data
Khandwani et al. A survey of lossless image compression techniques
Mathpal et al. A research paper on lossless data compression techniques
KR100532275B1 (ko) 이미지 압축방법
US6947606B2 (en) Skim encoding method for compression of a two dimensional array of data
Chudasama et al. Survey of image compression method lossless approach
JP3952116B2 (ja) 画像圧縮装置及び方法
JP4093200B2 (ja) データ圧縮方法及びプログラムならびにデータ復元方法及び装置
Fute et al. An approach to data compression and aggregation in wireless sensor networks
US20220172403A1 (en) Electronic shelf label managing server, display device and controlling method thereof
JP2612343B2 (ja) データ圧縮方式
JP4008428B2 (ja) 画像圧縮方法
EP0494038A2 (en) Run-length encoding in extensible character sets
JPH0818981A (ja) データ圧縮・伸長方式
JP6821184B2 (ja) 画像復号化装置
JP2798767B2 (ja) 画像データ圧縮方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110308

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110418

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110523

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140617

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4760727

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees