(57)【特許請求の範囲】
【請求項１】
ＬＺＳＳ形式の方式によるデータ圧縮および／またはデータ伸長方法において、
第１の最大長をもつリテラルシーケンスのための第１の制御コードと、
圧縮すべきリテラルシーケンスへの逆向き参照に対するポインタのための第２の制御コードとを用い、該逆向き参照は第２の最大長をもち、コピーすべきリテラルシーケンスは第３の最大長をもち、
前記第１の最大長の決定にあたり、長さ制限のない制御コードにより実行されるＬＺＳＳ方式により符号化されたパターンデータセット内におけるリテラルシーケンスの長さの頻度分布を用いることを特徴とする、
データ圧縮および／またはデータ伸長方法。
【請求項２】
前記第２の最大長の決定にあたり、長さ制限のないＬＺＳＳ方式により求められた圧縮データセット内におけるポインタの長さの頻度分布を用いる、請求項１記載の方法。
【請求項３】
前記第３の最大長の決定にあたり、長さ制限のないＬＺＳＳ方式により求められたパターンデータセットの圧縮データセット内におけるコピーすべきリテラルシーケンスの長さの頻度分布を用いる、請求項１または２記載の方法。
【請求項４】
ＬＺＳＳ方式を実行するために第１の制御コードの第１の集合と第２の制御コードの第２の集合を用いる、請求項１から３のいずれか１項記載の方法。
【請求項５】
前記第１の集合は決められた値範囲内のリテラルシーケンスのための第１の制御コードをそれぞれ有する、請求項４記載の方法。
【請求項６】
第１の制御コードおよび第２の制御コードを、該当する値領域内のリテラルシーケンスの出現頻度もしくは逆向き参照の出現頻度に従いハフマン法に基づき符号化する、請求項５記載の方法。
【請求項７】
前記第２の集合はポインタの値範囲のための制御コードとコピーすべきリテラルシーケンスの値範囲を有する、請求項４、５または６記載の方法。
【請求項８】
第２の制御コードはハフマン符号化されている、請求項７記載の方法。
【請求項９】
ポインタの値範囲をバイトごとまたは１つのバイト長の倍数に分割する、請求項７または８記載の方法。
【請求項１０】
第１および第２の制御コードならびにリテラルを、互いに分離された２つの圧縮結果セクションに格納し、第３の制御コードを分離の識別に用いる、請求項１から９のいずれか１項記載の方法。
【請求項１１】
請求項１から１０のいずれか１項記載の方法に従い圧縮されたキャラクタストリングの伸長方法において、
制御コードとリテラルを第３の制御コードにより分離するステップと、
前記制御コードを第１のメモリセクションに記憶するステップと、
前記リテラルを第２のメモリセクションに記憶するステップと、
第２のメモリ内にあるコピーすべきリテラルシーケンスをアクセスし、該コピーすべきリテラルシーケンスを第３のメモリに格納するステップ、
を有することを特徴とする、伸長方法。
【請求項１２】
コンピュータプログラムが電子システムにおいて実行されたとき、請求項１から１１のいずれか１項記載の方法を実施するプログラム手段が設けられている、コンピュータ読み取り可能な記録媒体。
【請求項１３】
コンピュータプログラムが電子システムにおいて実行されたとき、請求項１から１１のいずれか１項記載の方法を実施する手段として機能させるためのプログラム。
【請求項１４】
請求項１から１１のいずれか１項記載の方法を実施する手段が設けられている電子システム。
【請求項１５】
制御コードを格納するための第１のメモリ領域（１０）と、リテラルシーケンスを格納するための第２のメモリ領域（１１）と、コピーされたリテラルシーケンスを格納するための第３のメモリ領域（１２）が設けられている、請求項１４記載の電子システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＬＺＳＳ形式の方式によるデータ圧縮およびデータ伸長方法、該方法を実施するためのコンピュータプログラム製品と電子システムたとえばナビゲーションシステムに関する。
【０００２】
【従来の技術】
ＬＺＳＳ形式の手法は US-A--487 6541 ならびに TC.Bell の "Better OPM/L Text Compression, "IEEE Trans. On Communications", Vol. COM-34, No.12. Dec. より知られている。
【０００３】
ＬＺＳＳ法は Lempel Ziv 法の発展形態である。
【０００４】
ＬＺＳＳ法を使用した場合、特定の長さをもつ１つのデータウィンドウ内で直前に伝送されたキャラクタのうち、次に伝送すべきキャラクタと一致するキャラクタストリングがサーチされる。このようなキャラクタストリングが見つかれば、それは後ろ向き参照ないしは逆向き参照と置き換えられる。
【０００５】
相応の符号化のために２つの異なる制御コードが用いられる。制御コード”Ｌ”によって、複数の「実際の」キャラクタいわゆるリテラルが次に伝送されることが表される。これに対し制御コード”Ｃ”によって、すでに伝送されたキャラクタからキャラクタストリングをコピーせよということが表される：
Ｆ（ｓ）    −同じキャラクタストリングについてサーチするデータウィンドウであり、その際、このウィンドウには入力データ中の現在の読み出し位置の前にｓ個のキャラクタが含まれている。
【０００６】
Ｌ（ｎ）    −あとでｎ個のリテラルつまり長さｎのリテラルシーケンスが伝送されることを表す制御コードである。
【０００７】
Ｃ（ｐ，ｎ）    −コピーすべき先行のリテラルシーケンスを識別するための制御コードであり、つまりｐ個のキャラクタだけ戻り、そこからｎ個のキャラクタをコピーすることを表す。
【０００８】
図１には、従来技術から公知のＬＺＳＳ方式によるキャラクタストリング１の符号化に関する一例が示されている。符号化の結果は図１のキャラクタストリング２であり、この場合、太字で示されたキャラクタがリテラルである。
【０００９】
さらに従来技術によればＬＺＳＳ法について様々な変形が知られており、たとえば適応型算術符号化を伴うＬＺＳＳや適応型ハフマン符号化を伴うＬＺＳＳなどが知られている。それらの概観については、Proseminar の "Redundanz", 講演５、Maximilian Hrabowski (http://goethe.ira.uka.de/seminare/redundanz/vortrag05/#LZSS) に記載されている。さらにＬＺＳＳ法については、http://ttrip1.fh-worms.de/sem/ws95 96/kompressionsalgorithmen/node19.html および http://ttrip1.fh-worms.de/sem/ws95 96/kompressionsalgorithmen/node20.html に示されている。
【００１０】
US-A-5 502 439 から、ＬＺＳＳ法によるバイナリデータ圧縮法が知られている。この場合、ＬＺＳＳ法実行時に生成されるいわゆるフラグビットを一時的に記憶するために、ランダムアクセスメモリ内でバッファが用いられる。さらに US-A-5 701 125, US-A-5 673 042, US-A-5 867 114 からＬＺＳＳ形式によるその他の手法が知られている。
【００１１】
【発明が解決しようとする課題】
本発明の課題は、ＬＺＳＳ形式の方法を改善しかつそれに応じて改善されたコンピュータ製品ならびに電子システムを提供することにある。
【００１２】
【課題を解決するための手段】
本発明によればこの課題は、第１の最大長をもつリテラルシーケンスのための第１の制御コードと、圧縮すべきリテラルシーケンスへの逆向き参照に対するポインタのための第２の制御コードとを用い、該逆向き参照は第２の最大長をもち、コピーすべきリテラルシーケンスは第３の最大長をもち、前記第１の最大長の決定にあたり、長さ制限のない制御コードにより実行されるＬＺＳＳ方式により符号化されたパターンデータセット内におけるリテラルシーケンスの長さの頻度分布を用いることを特徴とする、データ圧縮および／またはデータ伸長方法、コンピュータで読み出し可能な媒体またはコンピュータネットワークを介してロード可能なファイルにおけるコンピュータプログラム製品ならびに電子システムたとえばナビゲーションシステムによって解決される。従属請求項には有利な実施形態が示されている。
【００１３】
【発明の実施の形態】
ＬＺＳＳ形式の本発明による方法によって、良好な圧縮レートとともにきわめて高速なデータ伸長が実現される。このため本発明の１つの有利な実施形態によれば、ＬＺＳＳ方式を実行するための制御コードをリテラルシーケンスの種々の長さ、コピーすべきリテラルシーケンスの長さ、ならびに逆向き参照の長さの出現頻度に依存して決定する。
【００１４】
さらに別の有利な実施形態によればそれぞれ制御コードの集合が形成され、それらの制御コード自体をさらに圧縮を行うためたとえばハフマン符号化することができる。
【００１５】
本発明の別の実施形態によれば逆向き参照はバイトフレームごとにだけ行われ、その際、バイトフレームは使用されるデータバスの幅もしくは使用されるプロセッサの幅により設定されている。これにより伸長時の処理速度はさらに上昇する。同様にこれにより圧縮レートも高まる。
【００１６】
格別有利であるのは本発明による方法を電子システムたとえばナビゲーションシステムに適用することである。公知のナビゲーションシステムの場合には一般に、ナビゲーションデータベースを記憶するためにＣＤが用いられる。できるかぎり多くのナビゲーションデータをＣＤに取り込む目的で有利であるのは、ナビゲーションデータを本発明による方法に従い圧縮することである。この場合、データ圧縮速度は実質的にさして重要ではない。その理由は、データ圧縮は一度だけしか行われず、動作中は行われないからである。
【００１７】
これに対しナビゲーションシステムの実際の使用のために伸長速度は非常に重要である。その理由は、ルートプラニングおよび位置特定を行う目的でナビゲーションシステム動作時に常にナビゲーションデータを伸長しなければならないからである。この点においても本発明による方法は格別に有利である。それというのも非常に高速なデータ伸長を実現することができるからである。
【００１８】
次に、図面を参照しながら有利な実施例に基づき本発明について詳しく説明する。
【００１９】
【実施例】
図２に示されている方法は、本発明による方法の実施形態で適用するための制御コードを求めるために用いられる。この目的でステップ２０においてまずはじめにパターンデータセットが入力され、これに対しステップ２１においてそれ自体公知のＬＺＳＳ法により符号化が行われる。パターンデータセットとして典型的なデータセットまたは実際のデータセットを用いることができる。
【００２０】
ステップ２２において、ステップ２１の実行により得られた圧縮結果に対し統計的解析が行われる。このためにたとえば、圧縮結果中に現れるリテラルシーケンスにおける種々の長さの頻度分布が調べられ、さらに後ろ向き参照つまり逆向き参照の長さおよびステップ２１の適用によりコピーされたリテラルシーケンスの長さの頻度分布も求められる。
【００２１】
伸長速度を最適化するため、ついで最大長が求められる。このためまずはじめにステップ２３においてリテラルシーケンスの長さに対し上限Ｓ１ が求められ、それによりステップ２１の圧縮結果中に含まれているリテラルのＸ％がＳ１ 以下の長さをもつことになる。この場合、Ｘ％をたとえば９５％とすることができる。
【００２２】
相応にステップ２４において逆向き参照の長さに対し上限Ｓ２ が求められ、それにより逆向き参照のＹ％が上限Ｓ２ 以下の長さをもつことになる。この場合もＹ％を９５％とすることができる。
【００２３】
ついでステップ２５において、ステップ２１の圧縮結果のうちコピーされたリテラルの長さについても上限Ｓ３ が求められ、それによりコピーされたリテラルシーケンスのＺ％が上限Ｓ３ 以下の長さをもつことになる。ここでもＺ％を９５％とすることができる。
【００２４】
ステップ２６において種々の長さの符号化にそれぞれ必要とされるビット数が求められ、つまりリテラルシーケンスのＳ１ の種々の長さを符号化するためのビット数Ｂ１ と、逆向き参照のＳ２ の種々の長さを符号化するためのビット数Ｂ２ と、コピーすべきリテラルシーケンスのＳ３ の種々の長さを符号化するためのビット数Ｂ３ が求められる。
【００２５】
ステップ２６の結果に基づきステップ２７において制御コードが決定される。ＬとＣの制御コードの区別は最初のビットポジションにより行われ、この実施例では制御コードＬについて０が、制御コードＣについて１が用いられる。
【００２６】
制御コードＬにおいて、これに続いて長さｎの後続のリテラルシーケンスを符号化するためにＢ１ 個のビットポジションＸがおかれる。また、制御コードＣにおいては先頭の１に続いてまずはじめに、種々の長さの逆向き参照を符号化するためにＢ２ 個のビットポジションＸがおかれ、ついでコピーすべきリテラルシーケンスの種々のキャラクタ長を符号化するためにＢ３ 個のビットポジションＹがおかれる。
【００２７】
この場合、パターンデータセットのためにたとえば以下の値が求められた：
Ｓ１ ＝１２８，Ｓ２ ＝４０９６，Ｓ３ ＝３２。その結果、Ｂ１ ＝７，Ｂ２ ＝１２，Ｂ３ ＝５となる。
【００２８】
図３のテーブルには、データのパーセンテージが高ければ可能な制御コードのうち少ない部分しか使われないことが示されている。
【００２９】
このパターンデータセットを調べると、長さ１のリテラルシーケンスは現れた制御キャラクタＬのうち５０％の割合であった。また、長さ２〜８の長さのリテラルシーケンスは２５％の割合であり、８よりも大きく上限Ｓ１ までのリテラルシーケンスは２５％であった。
【００３０】
相応に、１〜８の長さであるコピーすべきリテラルシーケンスを伴う逆向き参照は制御コードＣのうち７０％の割合である。さらに１〜３２のポジションのポインタｐの長さを伴う逆向き参照は制御コードＣのうち５０％の割合であり、３３〜５１２のポジションの長さの逆向き参照は２５％の割合であり、５１２よりも大きく上限までの長さの逆向き参照は２５％の割合である。
【００３１】
相応に図４に示されているように、制御コードＬとＣから成る２つの異なる集合が形成される。制御コードＬについてはこれは、それぞれ１，２〜９および１０〜２６５までのリテラルシーケンスの長さ範囲についてコードＬ１ ，Ｌ２ ，Ｌ３ である。この場合、制御コードＬ１，Ｌ２，Ｌ３ のためにそれぞれ必要とされるビットＢ１ の個数は０，３もしくは８である。ここで考察している実施例の場合、制御コードＬ１ は００１として符号化され、制御コードＬ２ は０１０として、制御コードＬ３ は０１１として符号化され、したがってこの事例では１つの制御コードの符号化のための個々の長さはそれぞれ３ｂｉｔである。
【００３２】
さらに図４には制御コードＣのための符号化について示されている。考察中の実施例の場合、図３の逆向き参照の配分に従い６つの制御コードＣ１ 〜Ｃ６ が形成される。この場合、制御コードＣ１ は１００１として符号化され、制御コードＣ２ は１０１０として符号化される、という具合にして符号化が行われる。
【００３３】
制御コードＣの各々の符号化のために用いられるビット数は一様に４であるが、択一的に制御コードＬとＣの符号化をたとえばハフマン法に従って行うことができ、その場合にはある特定のコードの出現確率は図３のテーブルに従い考慮される。
【００３４】
テーブル３を用いてコードの個数とそのサイズが求められた後、出現したコード全体における個々のコードの頻度が求められ、その頻度に応じてハフマン符号が与えられる。
【００３５】
リテラルコードがすべてのコードの４０％になり、短いキャラクタストリングをもつコピーコードがすべてのコピーコードの７０％になるならば、テーブル３を用いると以下の配分となる：
【００３６】
【表１】
0004191438.tif 000002
【００３７】
この場合、それぞれ異なるコード長が生じ、頻度の最も高いコードに対しては最も短い符号化が行われる。考察中の実施例ではこれはコードＣ１である。
【００３８】
制御コードＣ１ は、２〜３３の値の範囲内でポインタをもつ逆向き参照のために２〜５のキャラクタの長さのリテラルシーケンスに適用される。ここで留意しておきたいのは、逆向き参照が行われるのは逆向き参照の長さが少なくとも２つのキャラクタであり、かつ逆向き参照されるコピーすべきリテラルシーケンスの長さが少なくとも２である場合だけである。したがってポインタの値範囲を符号化するためのビット数は５になり、コピーすべきリテラルシーケンスの長さの値範囲２〜５を符号化するためのビット数は２ｂｉｔである。制御コードＣ２ 〜Ｃ６ についても図４のテーブル中に相応の対応関係が示されている。
【００３９】
圧縮すべきシーケンスにおいてキャラクタが１つのバイトパターン内たとえば２ｂｙｔｅまたは４ｂｙｔｅの幅である１つのバイトパターン内におかれているならば、データ圧縮をいっそう最適化することができ、その場合に実際に現れるポインタ長だけが制御コードＣにマッピングされる。たとえば２バイトパターンにおけるデータに対し制御コードＣ１ 内においてポインタ長の符号化のためにビット数を、５ｂｉｔから４ｂｉｔに低減することができる。その理由は、奇数の逆向き参照は定義によって現れる可能性がないからである。４ｂｙｔｅ長のフレームであれば、相応にさらに１ｂｉｔの低減を達成することができる。１つのバイトフレーム内のデータの存在をアライメントとも称する。データのアライメントは相応に逆向き参照に伝達される。
【００４０】
図５には、図４の制御コードを用い本発明の方法に従いシーケンス１（図１参照）を符号化する様子が示されている。これによればその結果として圧縮結果３が生じる。
【００４１】
圧縮結果３における欠点は、圧縮結果３中に含まれているリテラルシーケンスがビット指向の命令つまりビットを優先した命令の符号化ゆえにビット境界のところで整列されておらず、それゆえ相応にシフトしなければならないことである。
【００４２】
この欠点を取り除くため、制御命令とリテラルシーケンスが符号化時にまず最初に２つのデータ流に分離される。この場合、リテラルシーケンスのデータ流はバイト指向である。
【００４３】
両方のデータ流が完全に得られた後、それらのデータ流を再び単一のデータ流にまとめることができ、そこにおいて両方のデータ流がたとえば互いにつなげられる。両方のデータ流の分離は、つなぎ合わせにより生じたデータ流において別の制御コードにより識別される。これはたとえば結果として生じたデータ流の始端におくことができ、これによりそこから各データ流間の分離を参照することができる。
【００４４】
図６には、図５の圧縮結果３を符号化しなおす相応の一例が示されている。まずはじめ、圧縮結果３が制御コードから成るデータ流４とリテラルシーケンスから成るデータ流５に分けられる。
【００４５】
データ流４と５をつなぎ合わせた結果、データ流６が生じる。その先頭にはポインタＺ（ｎ）がおかれ、これはデータ流５の最初のキャラクタを指す。
【００４６】
図７にはナビゲーションシステム７のブロック図が示されており、これにはＣＤ−ＲＯＭプレーヤ８が設けられている。ナビゲーションシステム７はさらにマイクロプロセッサ９ならびにメモリ領域１０，１１，１２を有している。ＣＤ−ＲＯＭプレーヤ８のＣＤ−ＲＯＭには、本発明による方法に従い圧縮されたナビゲーションデータが存在している。
【００４７】
この種のナビゲーションデータのシーケンスはナビゲーションシステムによりＣＤ−ＲＯＭプレーヤ８から取り出され、ナビゲーションシステム７に伝送される。図６のデータ流に相応するデータ流を受信すると、マイクロプロセッサ９は受信データ流を制御コードから成る第１のデータ流とリテラルシーケンスから成る第２のデータ流とに分割し、その際、先頭におかれるポインタＺ（ｎ）が用いられる。
【００４８】
制御コードデータシーケンスはメモリ領域１０に格納され、リテラルシーケンスはメモリ領域１１に格納される。この場合、デコーディングのためにマイクロプロセッサ９は、メモリ領域１０内の制御コードだけを処理してその際にメモリ領域１１内のリテラルシーケンスにアクセスしなければならない。ついで制御コードの実行後に求められた圧縮結果に従い、シフト演算を行う必要なく相前後してメモリ領域１２に格納される。それゆえナビゲーションシステム７において非常に高速なデコーディングを実現することができ、走行中にたとえばルート変更などに対し非常に高速に応答することができる。
【００４９】
圧縮にあたり、コピーすべきリテラルシーケンスの長さよりも長いポインタの長さの逆向き参照だけを許可するようにすれば、圧縮をさらに加速することができる。たとえば後方参照Ｃ４（１７，２０）はＣ４（１７，１７）Ｃ４（１７，３）に分けられる。これによりプロセッサのパフォーマンスが節約されることになる。
【００５０】
圧縮すべきデータに特別な構造が含まれている場合、さらに別の補足的な手法および場合によっては別の制御コードによって、圧縮データレートもしくは伸長時間をさらに改善することができる：
−いくつかのデータ構造には同じキャラクタから成る長いシーケンスの現れる領域が存在し、そのようなシーケンスは付加的に事前に ランレングス符号化（RUN-LENGTH-ENCODING）法によって符号化することができる。
【００５１】
−制御コードシーケンスが何度も相前後して繰り返し現れることが判明したならば、それらを反復命令により符号化することができる。この利点は、相応の制御コードシーケンスを１度だけ符号化すればよいことである。
【図面の簡単な説明】
【図１】従来技術によるキャラクタシーケンスの符号化の様子を示す図である。
【図２】本発明による方法の実施形態を示すフローチャートである。
【図３】１つのパターンデータセット内のリテラルシーケンスおよび逆向き参照の長さのパーセント配分を示す図である。
【図４】制御コードの集合を求めるための実施形態を示す図である。
【図５】図４による制御コードを用いたキャラクタストリングの符号化を示す図である。
【図６】別の制御コードを用いて図５の符号化されたキャラクタストリングを再符号化する様子を示す図である。
【図７】本発明による電子システムのブロック図を示す図である。
【符号の説明】
７  ナビゲーションシステム
８  ＣＤ−ＲＯＭプレーヤ
９  マイクロプロセッサ
１０，１１，１２  メモリ領域
【図１】
0004191438.tif 000003
【図２】
0004191438.tif 000004
【図３】
0004191438.tif 000005
【図４】
0004191438.tif 000006
【図５】
0004191438.tif 000007
【図６】
0004191438.tif 000008
【図７】
0004191438.tif 000009