(57)【要約】【目的】文書（英語、日本語）に関しての圧縮展開は完全可逆でなければならない。画像、音声に関しては人間の分解能とくらべて冗長であるデータを取り除いてカオスの圧縮展開テーブルを用いて圧縮展開を行なう。【構成】デジタルファイルの冗長を取り除きながら、０の多い、１の少ないコードに置き換える前処理を行ない、Ｇ１エントロピーを下げる。前処理のＧ１エントロピーの分だけカオスの圧縮テーブルで圧縮する。暗号鍵はＧ１エントロピーに影響しないコードの配列の入れ替えを順列で定義して行なう。【選択図】　　　　なし【特許請求の範囲】
【請求項１】
デジタルファイルの冗長を取り除き、Ｇ１エントロピー（−Ｐ（０）ｌｏｇ２Ｐ（０）−Ｐ（１）ｌｏｇ２Ｐ（１））を下げる前処理を行ない、ロジスティック写像を同相変換量子化した有理数または整数のタイムシリーズに包含されるカオス圧縮展開テーブルを用いて圧縮と展開を実行することを特徴とするデジタルファイルの圧縮展開方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
コンピュータがメモリの中に保存しているデジタルファイルは、文書（英語、日本語）、画像、音声などのデータである。これらを圧縮暗号コード化して安全に保管したいというニーズは多い。文書は完全可逆でなければならない。画像や音声は、人間がみたり聞いたりする能力に限界があるため、必ずしも可逆であることが要求されない。見たり聞いたりできる分解能より冗長であるデータは取り除くことが許される。
【０００２】
【従来の技術】
ロジスティック写像Ｘｔ＋１＝４Ｘｔ（１−Ｘｔ），Ｘｔ＝Ｘｔ＋１がリャプノフ指数λ＝Ｉｎ２：０．６９３・・・のカオスを生成することは知られている。同相変換量子化Ｙｔ，ｎ＝［２／πａｒｃｓｉｎ（√Ｘｔ）２ｎ］（ｎは量子化分解能、［］は小数点以下切り捨てる）したタイムシリーズＹｔ，ｎには圧縮と膨張がひそんでいる。整数Ｙｔ，ｎだけででなく、「］を実行する前の有理数をも含めて、タイムシリーズを考えた方がよい。入力コードをたとえば６ビット、量子化分解能ｎ＝６に相当する長さに限れば、すべての組合せに対する出力コードをあらかじめ計算してしまい、テーブル化しておくことができる。このテーブルをカオスの圧縮展開テーブルと言うことにする。
【０００３】
カオスの圧縮展開テーブルを、デジタルファイルの可逆的圧縮展開に有効に作用させるためには、デジタルファイルから冗長性を取り除き、かつ、Ｇ１エントロピー（−Ｐ（０）ｌｏｇ２Ｐ（０）−Ｐ（１）ｌｏｇ２Ｐ（１））をさげておく必要がある。カオスの圧縮展開テーブルを繰り返し使用して圧縮した圧縮コードのＧ１エントロピーはＧ１＝０．９９９・・・となる。なお、Ｐ（０）はデジタルファイルの総ビット数に対する０であるビットのわりあいであり、Ｐ（１）は総ビット数に対する１であるビットのわりあいである。
【０００４】
カオスの圧縮展開テーブルの役割りは、冗長性を取り除きＧ１エントロピーを下げるという前処理をほどこしたデジタルファイルから、逐次０であるビットを取り除き、１であるビットをできるだけ増殖させないで、全体のデータ量を減少させることである。前処理後のデジタルファイルは多数の０であるビットの中に１であるビットがまばらに存在している。したがって、そのＧ１エントロピーは小さい。
【０００５】
【発明が解決しようとする課題】
前処理として冗長を取り除き、Ｇ１エントロピーをさげることを、英文の前処理をとおして具体的に説明する。英文文書はデジタルコンピュータのキーボードからアルファベット大文字、小文字、記号を逐次入力して作成され、８ビットアスキーコードでメモリに記録される。アルファベット大文字、小文字は各２６文字である。それに数字や若干の記号を加えても６４種類以下であるから、６ビットコード６４種類であらわすことができる。１文字あたり２ビットが冗長であることは明らかである。
【０００６】
学術論文等においては、アルファベットにいろいろな記号が付加されている場合がある。一般生活に用いられている英文は６ビットコードで十分であり、余分な記号等に対する処理は別に例外処理として対応することができる。
英文には、英語に特有のルールもある。英文の文頭は大文字とし、終止符で１つの文は終了し、スペースキーを１つか２つ打つ。スーペスキーのあとは大文字がくる。したがって、前処理の１つの機能として文頭の大文字は小文字に置き換える処理を入れてもよい。Ｇ１エントロピーを下げる効果がある。
【０００７】
英文のアスキーコードの頻度分布を調べる。頻度の最上位にはスペースがきて、次にはｅ，ｏ，ｎ…と小文字があらわれ、改行キー、終止符などの記号、大文字、数字等があらわれる。頻度の優先の順に６ビットコードの０の多いコードを割り当てる。最上位のスペースには（００００００）が優先して割り当てられる。こうすることにより、原文のデータ量の７５％に圧縮（冗長のとりのぞき）し、かつ、Ｇ１エントロピーを、平均してＧ１＝０．８０…程度に下げることに成功することが英文に対する前処理である。
【０００８】
カオスの圧縮展開テーブルは、英文に関しては１回だけ使われ、Ｇ１エントロピーの分だけ圧縮される。したがって、合計の圧縮率は０．７５×０．８０＝０．６０（６０％）となる。この値はもちろん平均的な例の場合である。なお、文頭の大文字をすべて小文字にすると、圧縮率は約２％向上する。
【０００９】
英文をアスキーコード１文字単位で冗長をとりのぞき、かつ、Ｇ１エントロピーを下げる例は、大変わかり易い。２文字単位、１６ビットコードでの分布を調べると、その組合せは５００種類以下で、それらを９ビットコードであらわすことができる。８ビットコードの場合と同じように９ビットコードの割り当てを行なうと、Ｇ１エントロピーは０．９０…となる。なお、原文のＧ１エントロピーはＧ１＝０．９８…と大きく、乱数のＧ１＝０．９９９９…に近い。結果として、平均して５０％への圧縮が実現できる。
【００１０】
前処理テーブルの頻度分布をみると、その順位を入れ替えても、１の数に変化がない、すなわちＧ１エントロピーに影響しないコードが複数存在している。そこで、コードの入れ替えに順列を用いて定義することができる。この順列は暗号鍵として作用する。すなわち、本案では圧縮暗号化が実現されている。順列を用いた暗号鍵の設定は、カオスの圧縮展開テーブルにも定義できる。両者を組み合わせて暗号鍵としてもよい。
【００１１】
【課題を解決するための手段】
英文は完全可逆でなければならない。一方、画像の圧縮暗号化においては、冗長の意味が英文の場合とは異なってくる。人間の目の分解能を越して微細なデータを所有していても、それを出力してプリンタやＣＲＴ上にあらあわしたとき、人間が違いを識別できなければ、そこまでは間引きをして冗長を取り除いてよい。コンピュータで取り扱われる画像データは６４０×４８０×８×３（Ｒ，Ｇ，Ｂ）とあらわされる。６４０×４８０はビットマップのセルは数である。×８は、デコーダを通した８ビットコードの強度のデータである。×３（Ｒ，Ｇ，Ｂ）は、赤、緑、青の３原色に分解されていることを示している。８ビットコードの強度データは、デコーダを通る前は２５６の階調値データである。画像データが光センサーを通しＡＤ変換でデジタル化して採取されるときは、２５６ビット階調値のデータである。また、画像データがＣＲＴに表示される、あるいはプリンタで出力されるデータも階調値になおされている。本来、画像データは６４０×４８０×２５６×３（Ｒ，Ｇ，Ｂ）である。８ビットコードは階調値を１／３２に圧縮したデータであるとも言うことができる。
【００１２】
画像階調値データから冗長を取り除き、Ｇ１エントロピーを下げる前処理には、さまざまな手法が工夫できる。６４０×４８０ビットマップセルの階調値データは、近傍のデータとの相関が強い。逆に、１セルの孤立したデータはノイズである可能性が高い。セルの階調値のデータを見たとき、ビットマップ上でも左右、上下はきわめて類似した、重なり合ったデータである。２５６階調のデータのもち方も冗長である。１つのセルデータに注目したとき、最上位の１である１ビットだけをのこし、下位ビットを０にしても等価である。１セルのビット数が２５６ビットであることも、きまっているから、上位か下位のどちらの０を省略してもよい。近傍の相関をみて間引きをしてもよい。これらが、画像データに対する前処理である。
【００１３】
前処理を終えたとき、デジタルファイルは１本のラインデータとなっている。Ｇ１エントロピーがＧ１＝０．０６０…となっていたとしよう。これに６ビットブロックのカオスの圧縮展開テーブルを繰り返し適用する。１回ごとにＧ１エントロピーは向上し、５回圧縮を繰り返したとき、Ｇ１＝０．９９９…となり、それ以上繰り返すと、逆に膨張する。英文は１回のみの圧縮で、Ｇ１エントロピーの分だけ正確に圧縮するのに対し、画像は複数回の圧縮を繰り返して圧縮コードを得る。圧縮を繰り返すたびに１であるビットは増殖し、リャプノフ指数λ＝Ｉｎ２＝０．６９３…にもとづく発散がさけられない。したがって、Ｇ１エントロピーが予測する圧縮コードのデータ量よりは、実際の圧縮コードは膨張している。６ビットブロックのカオスの圧縮展開テーブルを５回もちいたとき、Ｇ１エントロピーが予測する値の約１．５〜１．６倍に膨張している。
【００１４】
画像データ、６４０×４８０×８×３（Ｒ，Ｇ，Ｂ）を６４０×４８０×２４とみなして、カラー表示２４ビットの冗長を取り除くこともできる。Ｒ，Ｇ，Ｂのそれぞれについて８ビットコードの分布を見ると、２５６種類のすべてがあらわされていて、分布のかたよりも小さい。これに対してＲ，Ｇ，Ｂと並べた２４ビットコードにおける８ビットコードの組合せは２０万通り以下である。すなわち、２４ビットを１８ビットに置き換えることができる。１８／２４（７５％）の前処理が可能であることを意味している。赤が濃くぬられているところは、青も緑も濃くぬられている。赤が薄くぬられているところは、青も緑も薄くぬられていることを意味している。Ｇ１エントロピーは画像の絵の性質によって異なるがＧ１＝０．８〜０．９である。すなわち。８０％〜９０％の完全可逆圧縮が可能である。
【００１５】
画像データ、６４０×４８０×８×３（Ｒ，Ｇ，Ｂ）を２５６階調値データ６４０×４８０×２５６×３（Ｒ，Ｇ，Ｂ）に展開する。隣あう層間のＥＸＯＲをとる、すなわち差分のデータをもとめると、等高線に沿った差分が１として表現される。このとき、１枚のビットマップはほとんどが０の中に１がばらまかれたファイルになっている。Ｇ１エントロピーは十分に小さい。複数枚の差分のデータを重ね合わせて束ねてもよい。階調値を変更してしまうと、可逆的ではなくなるが、補間やスムージングによりかなりの復元が可能である。
【００１６】
デジタルファイルが冗長であるかどうかの判断をエントロピーを用いて行なうことができる。英文や日本語は８ビットコードで特長づけられている。また画像データや音声データも８ビットや１６ビットデータとして採取されている。そういうデータに関しては重なりのないＧ８エントロピーやＧ１６エントロピーを求めるとよい。Ｇ８エントロピーはその最大値がＧ８＝７．９９９…である。日本語の重なりのないＧ８エントロピーはＧ８＝３．４…であるのに対し、英語はＧ８＝４．６と大きい。このようにエントロピーの値を見ることにより、前処理ができるかどうか判断できる。
【００１７】
【作用】
日本語も英語と同様に、圧縮展開は完全に可逆的でなければならない。日本語の入力もコンピュータのキーボードからローマ字またはひらがなで入力され、必要な漢字変換が行なわれる。１６ビットコード、シフトＪＩＳが用いられ、８ビットＪＩＳが用いられることはない。しかし、シフトＪＩＳとＪＩＳは相互に変換可能なため、日本語を８ビットとして扱う、英文アスキーコードとの比較の実験をすることはできる。ＪＩＳコードは９１種類が定義されている。９１種類は７ビットコードであらわすことができる。１ビット冗長である。ＪＩＳコードの頻度を調べ、最も頻度の高いコードを（０００００００）でおきかえ、順次０の多い１の少ない７ビットコードを割り当てる。こうすることによりＧ１エントロピーをＧ１＝０．７００…ぐらいまで下げることができる。標準的な日本語（小学校高学年国語教科書）に関し約６０％へ圧縮が可能になる。
【００１８】
１６ビット、シフトＪＩＳの日本語に関しては、冗長を取り除き、Ｇ１エントロピーを下げ、カオスの圧縮展開テーブルを１回だけＧ１の分の圧縮をすることで、４５％〜５５％への圧縮が可能になる。１６ビットのシフトＪＩＳコードの種類はひらがな、カタカナ、漢字（第一水準３０００文字）、数字、アルファベットをカバーできるためには、１２ビットコード４０９６種類以内でよい。したがって、頻度の多い順に並べた１６ビットシフトＪＩＳコードを１２ビットコードに置き換える前処理テーブルを用意する。前処理終了後のデジタルファイルのラインデータは、適当なブロックサイズのカオスの圧縮展開テーブルで圧縮され、圧縮コードが生成される。逆の過程をたどることにより、圧縮コードは可逆的に原文に復帰する。
【００１９】
音声のコンピュータへの取り込みは、ＷＡＶファイルフォーマットに従っている。Ｌ（左）とＲ（右）のステレオ採取した１６ビットの時系列データである。サンプリングの周波数は４４ＫＨｚまたは６６ＫＨｚである。この場合の１６ビットコードも、画像の場合と同様にＡＤ変換器のデコーダを通した１６ビットコードである。アナログ信号が６５５３６の階調値データに量子化されたあとデコードされている。
【００２０】
音声は、画像よりもノイズをふくんで採取されたデータであることに間違いない。取り除くべき冗長の第１はノイズである。音声データを観測すると、下位４ビットがノイズであることは明白である。下位４ビットを切り捨てて、上位１２ビットを４０９６階調値に変換して、画像の場合と同様のデータ変換を行ない冗長を取り除く。
【００２１】
Ｒ信号とＬ信号は分離しておく方がよい。１本おきに時間軸上で間引きをしてよい。サンプリングレートはこのような間引きをしても、音質に影響がないように設定されている。
【００２２】
【実施例】
英文６／８（８ビットアスキーを６ビットに置き換える）は、平均６０％の圧縮ができ、圧縮も展開も２ＭＢ／Ｓと高速である。日本語７／８（ＪＩＳ）もほとんど同じ性能を示す。きれいな英文（たとえば童話など）は、文頭の大文字を小文字になおしたファイルは圧縮率が３％向上し、５７％の圧縮展開ができる。専門性の高い英語に対しては、専門性を反映した前処理デーブルを用意した方がよい。日本語については、このような傾向はさらに顕著にあらわれる。
【００２３】
英文に関しても、日本語に関しても、１６ビットコード（英語は２文字、日本語はシフトＪＩＳ）でより冗長性を取り除くことに成功する。英文９／１６は童話などに関しては４５％への圧縮も可能である。一方、日本語１２／１６は、小学校低学年の国語の教科書では４５％への圧縮もできるが、専門性が高まると、とたんに圧縮率は５０％台へと落ちる。処理速度は４００〜５００ＫＢ／Ｓとなる。
【００２４】
文字が完全可逆を要求されるのに対し、画像と音声は対象となるファイルの性質に応じて、圧縮率が様々に影響を受ける。しかし、本案は画像も音声も階調値のビットマップに完全展開し、前処理として冗長性を取り除き、かつ、Ｇ１エントロピーを下げ、そのあとのラインデータをカオスの圧縮展開テーブルで繰り返し圧縮して圧縮コードを得た。英文、日本語と画像、音声という性格の異なるデジタルファイルを統一したアルゴリズムで圧縮展開に成功した。
【００２５】
英文や日本語の圧縮展開は完全にコンピュータのプログラムにまかせることができる。画像や音声の前処理は非可逆であり、人の識別能力からみた冗長を取り除こうとしている。画を見て、あるいは一度演奏される音の流れを聞いて人間が前処理のパラメータを決めた方がよい、うまく圧縮できるという例が多い。デジタルファイルは０と１の配列であるビットラインデータにすぎないが、画像と音声はサンプリング（セルサイズ、周波数）に強く依存している。
【００２６】
どのようなデジタルファイルを持ってきても、自由自在に圧縮展開ができ、しかも完全可逆であることが理想と考えられる。しかし、本案の発明は、カテゴリー別にしか前処理ができないことを示している。Ｇ１エントロピーはデジタルファイル圧縮のすぐれたメジャー（指標）となっている。
乱数が圧縮できれば、それは乱数ではない。乱数のＧ１エントロピーはＧ１＝０．９９９９９９…（６　ｎｉｎｅ以上）である。本案のカオスの圧縮展開テーブルによる圧縮は、圧縮を繰り返すたびにＧ１エントロピーが増大し、Ｇ１＝０．９９…となったときに、圧縮は終了する。
理想的にＧ１エントロピーの分だけ圧縮できているのは、英文と日本語の場合だけである。これはカオスの圧縮展開テーブルを１回だけ用いた圧縮でうまく収束するからである。
画像や音声の場合、ほとんどが０であるビットの中に１が少しだけばらまかれていたファイルを、カオスの圧縮展開テーブルで繰り返し圧縮する。０を取り除くと同時に１であるビットは、より多く１を含むビット列に置き換えられる。展開を保証するためには仕方がないことである。０のビット列が収縮するのに対し、１を含むビット列が増殖する。その増殖はリャプノフ指数にもとづく発散のため、防ぐことができない。ここにデジタルファイル圧縮の限界が存在している。
【発明の効果】
【００２７】
文書（英文、日本語）の完全可逆圧縮に成功している。暗号鍵を順列で与えることのできる、圧縮暗号化である。Ｇ１エントロピーが予測するとおりの圧縮率が求められている。８ビットブロックと１６ビットブロックの具体的実施例を示したが、前者は２ＭＢ／Ｓ、後者は４００〜５００ＫＢ／Ｓと高速である。
【００２８】
画像と音声は階調値データのビットマップに展開された。冗長を取り除いたとき、そのファイルはカオスの圧縮展開テーブルで繰り返し圧縮できる小さいＧ１エントロピーを与える。階調値の展開データに対し、約１％台への圧縮が実現されている。８ビットにデコードしたデータに対し、約５０％の圧縮が実現されている。