JP4328358B2 - 情報圧縮符号化装置、その復号化装置、これらの方法、およびこれらのプログラムとその記録媒体 - Google Patents

情報圧縮符号化装置、その復号化装置、これらの方法、およびこれらのプログラムとその記録媒体 Download PDF

Info

Publication number
JP4328358B2
JP4328358B2 JP2006546744A JP2006546744A JP4328358B2 JP 4328358 B2 JP4328358 B2 JP 4328358B2 JP 2006546744 A JP2006546744 A JP 2006546744A JP 2006546744 A JP2006546744 A JP 2006546744A JP 4328358 B2 JP4328358 B2 JP 4328358B2
Authority
JP
Japan
Prior art keywords
information
unit
signal
input
code
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.)
Active
Application number
JP2006546744A
Other languages
English (en)
Other versions
JPWO2006062142A1 (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2006062142A1 publication Critical patent/JPWO2006062142A1/ja
Application granted granted Critical
Publication of JP4328358B2 publication Critical patent/JP4328358B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

この発明は、LZ等の辞書を用いて情報を圧縮符号化する装置、その復号化装置、これらの方法およびプログラムとその記録媒体に関する。
近年、文字列データ、音響信号データや画像情報データを、通信路により伝送する場合や情報記録媒体に記録する場合に、情報圧縮符号化を用いてデータの情報量を減らすことが行われている。
一定数の単位のビットを1文字と見て、文字列の繰り返しをモデルとして情報圧縮を行う符号化方法がある(例えば非特許文献1参照)。このような符号化方法にはLZ77、LZ88、LZW等の方法がある(例えば非特許文献1、非特許文献2参照)。
文字列の繰り返しをモデルとする情報圧縮符号化方法は、テキスト文書等の圧縮符号化のみならず、モデム信号、画像信号の符号化方法としても利用されている。
図1AにLZ77法による文字列の情報圧縮符号化装置の例を、図1Bにその復号化装置の例を示す。LZ77法の符号化装置では、辞書登録部12は、入力端子11からの入力文字列を、辞書部13に一定量保持しておく。一致探索部14は、新たに入力された文字列と辞書部13内の過去の文字列とを比較する。符号生成部15は、一定の文字数以上で、最も長く一致する文字列(最長一致文字列)の辞書部(バッファ)13上の位置(インデックス)と、その一致した長さと、入力文字列中の最長一致文字の次の1文字(不一致文字)とを、符号として出力端子16へ出力する。また、符号生成部15は、最長一致文字列の長さが一定の文字数未満であった場合には、不一致をあらわす符号、例えばバッファ上の位置(インデックス)0及び一致した長さ0の符号とその一致長が一定文字数未満の入力文字列の先頭の1文字とを出力する。
辞書部13は、例えば図1Cに示すように、その一端に先読みバッファ17が接続され、全体としてスライドバッファが構成されている。先読みバッファ17の一端、図では右端から入力文字列が順次格納され、先読みバッファ17が満杯になると、先読みバッファ17の左端から文字列に対する一致探索処理が開始される。符号が出力されると、最長一致文字列の長さの文字又は1文字が辞書部13の左端から廃棄され、辞書部13の右端に最後に符号化された文字列又は1文字が格納される。また、その分先読みバッファ17の右端に入力文字列が格納される。
LZ77法の復号化装置では、符号解析部22は、入力端子21からの入力符号が不一致をあらわす符号であるか否かの判別を行う。不一致をあらわす符号でなければ、符号解析部22は、入力文字列を位置情報(インデックス)と、一致連続長と、不一致の1文字(不一致文字)とに分離する。文字列取得部23は、位置情報と一致連続長に基づき辞書部24から対応する文字列を取り出す。また、文字列合成部25は、辞書部24から取り出された文字列と不一致文字を合成し、復号文字列として出力端子26に出力する。さらに、辞書登録部27は、復号文字列を辞書部24に格納する。辞書部24は、スライドバッファであり、文字列が図1A中の辞書部13と相対的に同一状態で保持される。
符号解析部22は、不一致をあらわす符号が入力された場合には、これに続く不一致文字をそのまま出力すると共に辞書部24に格納する。
LZ77を改良した符号化方法にLZSS、ZIP等がある。ZIP等ではLZ77で得られた符号出力を、さらにエントロピー符号化の一種であるハフマン符号化で圧縮する
図2Aに代表的なLZ78方法を用いた文字列の情報圧縮符号化装置の例を、図2Bにその復号化装置の例をそれぞれ示す。LZ78符号化では、辞書部31が空の状態から処理を開始する。一致探索部32は、入力端子11から新たに入力された文字列と、辞書部31に登録された文字列とを比較する。符号生成部33は、最も長く一致する最長一致文字列に対応した辞書部31のインデックスと、次の一致しなかった入力1文字に対応するインデックスとを組にし、符号として出力端子16に出力する。また、辞書登録部34は、符号を出力する毎に、前記最長一致文字列に次の1文字を加えた文字列を、辞書部31に新たに登録していく。辞書部31は、スライドバッファではなく、固定である。図2Aの符号化装置は、入力された文字が辞書部31になかった場合には、不一致をあらわす特殊なインデックスと、1文字をそのまま符号として出力する。
図2Bに示すLZ78復号化装置では、辞書部941は符号化に用いた辞書部31の初期状態と同じ初期状態である。つまり辞書部941は、空の状態から処理を開始する。符号解析部942は、入力符号を最長一致文字列のインデックスと続く1文字の不一致文字インデックスとに分離する。文字列取得部943は、インデックスを用いて辞書部941から一致文字列と不一致文字を取り出す。文字列合成部25は、取り出された一致文字列と不一致文字とを合成することで文字列を復号し、出力端子26に出力する。この際、辞書登録部944は、最長一致文字列に不一致文字の1文字を加えた文字列を、符号化装置が行ったのと同じ方法で、辞書部941に新たに登録する。このようにして復号化装置の辞書部941の内部状態と、符号化装置の辞書部31の内部状態とを同一に保つ。
LZ78符号化では、辞書部31,941は木構造で構成されている。辞書内に入力文字列と等しい要素が登録されているかどうかを探索する際に、ハッシュ関数で文字列を圧縮するなどして探索を高速化する方法も知られている。
LZWの符号化装置を図3Aに、その復号化装置を図3Bにそれぞれ示す。LZWの符号化装置の辞書部35には、限られた数の初期文字(データ)が予め登録されている。一致探索部36は、入力された文字列と辞書部35に登録されている文字列とを比較する。そして、一致探索部36は、最も長く一致する最長一致文字列と、その文字列に対応した辞書部35内のインデックスを、符号生成部37に出力する。符号生成部37は、辞書部35内のインデックスを符号として出力端子16から出力する。また、符号生成部37は、最長一致文字列を辞書登録部38に出力する。その文字列の先頭文字Cが、直前バッファ38a内に一時的に保持されている直前の最長一致文字列の最後に付けられて、辞書部35に登録される。つまり前回符号化した文字列と、今回符号化した文字列の先頭文字Cとが1つの連続文字列として、辞書部35に登録されることになる。
次に図3Bの復号化装置について説明する。符号解析部946は、端子21からの入力符号から、最長一致文字列のインデックスを順次取り出す。文字列取得部947は、取り出されたインデックスと対応した文字列を、辞書部945から読み出す。文字列合成部948は、辞書部945から読み出された文字列を、復号文字列として出力端子26へ出力する。同時に、辞書登録部949は、今回復号された文字列の先頭文字Cを、直前バッファ949a内の前回復号された文字列の後に付け、辞書部945に登録する。
一方、音響信号データ(ディジタルサンプル値列)向けの歪を許す圧縮符号化方法としてMP3、AAC、TwinVQ等がある。画像情報データ(サンプル値)向けの圧縮符号化方法としてJPEG等がある。歪を許さない可逆な符号化(ロスレス符号化)技術もある(例えば非特許文献3参照)。更に編集加工が容易な浮動小数点形式のデータの可逆圧縮も重要である。特に浮動小数点形式オーディオ信号を、整数列と、その残り(差分)部分の仮数部中の非ゼロとなり得るビットのみに分け、それぞれ符号化して圧縮効率を向上
させたものがある(例えば非特許文献4参照)。
元のサンプル列の各サンプルs0(i)に、ゲインとして実数Gを共通に掛け合わせて得られたサンプルs1(i)は、s1(i)=s0(i)×Gとなる。この実数Gを掛け合わせて得られたサンプルs1(i)を、2進表現やIEEE−754形式の2進浮動小数点表現で表現し、これらディジタルサンプル列を符号化することがよくある。IEEE−754として標準化されている浮動小数点形式は、図4に示すように32ビットであり、上位ビットから極性1ビット、指数部8ビット、仮数部23ビットで構成される。極性をS、指数部8ビットで表す値を10進数でE、仮数部の2進数をMとすると、この浮動小数点形式の数値を絶対値表現2進数で表わすと式(1)となる。
IEEE−754によれば、E=2−1=127と決められており、式(1)中のE−E
−127≦E−E≦128
の範囲の任意の値を取ることができる。ただし、E−E=127の場合は全て“0”、E−E=128の場合は全て“1”と定義されている。 E−E=nは式(1)で表される値の整数部分の桁数(ビット数)から1を減算した値、即ち、最上位の“1”より下位ビット数を表わしている。
Nelson, Gailly(荻原、山口訳)「データ圧縮ハンドブック改定第2版」第7章〜第9章 D. Salomon"Data Compression", pp.101-162(Chapter3) Hans, M.and Schafer, R.W.:Lossless Compression of Digital Audio, IEEE Signal Processing Magazine,Vol.18,No.4,pp.21-32(2001) Dai Yang, and Takehiro Moriya:Lossless Compression for Audio Data in the IEEE Floating-Point Format, AES Convention Paper 5987, AES 115th Convention, New York, NY, USA, 2003 OCTOBER 10-13
文字列の繰り返しをモデルとする情報圧縮符号化方法では、基本としているモデルの特性から、同様の文字の組み合わせが繰り返し出現するような場合に圧縮率が向上する。
オーディオ信号のディジタルサンプル値、画像信号のディジタルサンプル値、心電波ディジタルサンプル値、地震波ディジタルサンプル値などの計測信号のディジタルサンプル値、線形予測分析の残差信号のディジタル値、その他のディジタル数値などのディジタル情報についてもLZなどの辞書を用いて圧縮符号化することが考えられる。しかし、現実には、同様の組み合せ(ディジタル値)の出現する場合が比較的少なく、所望の圧縮率を得ることができない場合が多かった。
この発明はこの問題を解決する情報圧縮符号化装置、その復号化装置、これらの方法、これらのプログラム及びその記録媒体を提供することを目的とする。
この発明によれば、一定ビット数の処理単位で表現された情報を、LZ等の辞書を用いる情報圧縮符号化方法において、有効なビット桁数(以下有効桁長という)が既知の入力情報と辞書に登録されている情報と比較し、入力情報中の前記有効桁長のビットが、全て一致すれば、その登録情報のインデックスを入力情報の符号の少くとも一部として出力する。
2進表現された情報、“0”と“1”の2値の配列で表現された情報の情報集合をよくみてみると、各情報中にはその2値の一方に片寄りがある場合が比較的多いことに気付いた。従来は入力情報が辞書の登録情報とが完全に一致しているものを探索していた。しかし、この発明では片寄りのある情報中の重要な部分つまり入力情報を構成するビットのうち、少なくとも有効桁に相当する部分のビットが辞書中の登録情報と一致するものを探し、一致したそのインデックスが符号出力とされる。したがって、探索により同一インデックスが見い出される場合が多く、つまり同一インデックスの符号が出力される場合が多くなり、それだけ従来より圧縮率が高くなる。
以下にこの発明の実施を図面を参照して説明するが、図面中の対応する部分は同一参照番号を付けて重複説明を省略する。
[実施例1]
符号化構成
入力情報(データ)の有効ビット桁数が知られている情報を符号化する場合について説明する。入力情報としては各種のものが考えられ、入力情報は、一般には文字ではない。しかし、本発明は、図1〜図3に示した従来技術と同様に辞書を用いて符号化するものである。そこで、理解し易さの観点から、以下の説明では、符号化の対象である入力情報のビット列を複数ビットごと(例えば8ビットごと)にまとめたものを文字と表現する。また、この実施では有効桁情報としてマスクデータが用いられる場合を例とする。例えば、入力文字(処理単位情報)C1(i)が、01010101であり、そのマスクデータM1(i)は11110000である。マスクデータM1中の“1”は文字ビット列中の対応桁が有効であり、“0”は対応桁が有効でない又は無視してもよいことを表わす。つまりこの例では文字C1(i)中の上位4ビット0101は有効であるが、下位4ビット0101は有効でない又は無視してもよいことを表わしている。
実施1の機能構成を図5に示す。端子41からは、入力文字C1(i)を先頭とする入力文字列C1(i+0)〜C1(i+k)が1文字ずつ逐次入力される。また、端子41からは、入力文字列C1(i+0)〜C1(i+k)に対応したマスクデータ列(有効桁情報)M1(i+0)〜M1(i+k)が1文字分ずつ逐次入力される。ここでkは0から1ずつ増加する正整数である。
辞書部43には、各インデックスに対して文字列が登録されている。この例では各インデックスjに対して、K個の文字からなる文字列D(j)(0)〜D(j)(K−1)が登録されている。辞書のインデックスjに対応する格納領域に登録された文字列を構成する各文字は、kを0≦k≦K−1とするとき、D(j)(k)と表現する。文字列を、D(j)(k)[k:0≦k≦K−1]またはD(j)(k)[k:0≦k<K]と表現する。
一致探索部42は、有効桁情報列M1(i+0)〜M1(i+K−1)を考慮した上で、入力文字列C1(i+0)〜C1(i+K−1)と、辞書部43のj番目のインデックスに登録されている文字列D(j)(0)〜D(j)(K−1)とを、先頭の文字から比較する。具体的には、一致探索部42は、k番目の文字C1(k)とD(j)(k)の有効桁情報M1(i+k)の構成ビットのうち1となっているビットに対応するビットが一致していれば、一致すると判断する。一致すると判断した場合は、kを1ずつ増加させながら有効桁部分が入力文字列と完全に一致する辞書部に登録されている文字列のうち、最長のものの辞書インデックスjを探索する。そして、探索の結果、得られたインデックスjが出力端子44に圧縮符号の少なくとも一部として出力される。
以下に文字とそのマスクデータとの論理積をマスク処理として少なくとも有効桁部分が一致する辞書登録文字を探索する場合の実施例の詳細を示す。
入力文字C1(i+k)と有効桁情報M1(i+k)が、kを0から1ずつ増加させながらマスク計算部42aに逐次入力される。マスク計算部42aは、C1(i+k)とM1(i+k)とのビットごとの論理積C1(i+k)&M1(i+k)を計算する。
また、有効桁情報M1(i+k)は、マスク計算部48にも入力される。マスク計算部48は、辞書部43のj番目のインデックスに登録された文字列D(j)(k)[k:0≦k<K]中の文字D(j)(k)とM1(i+k)とのビットごとの論理積D(j)(k)&M1(i+k)を計算する。
以下では、文字C1(i)をその有効桁情報M1(i)でマスク処理した結果C1(i)&M1(i)をマスク文字という。また、同様に、文字D(j)(i)を対応する有効桁情報M1(i)でマスク処理した結果D()()&M1(i)もマスク文字という。
情報一致判定部42bは、マスク計算部42aからの各マスク文字と、マスク計算部48よりの各マスク文字とを、k=0からkを1ずつ増加させながら逐次比較する。そして、C1(i+k)&M1(i+k)とD(j)(k)&M1(i+k)が、k=0〜K−1の全てで一致した場合に、情報一致判定部42bは、辞書インデックスjに登録された文字列と入力文字列が一致したと判定する。
これは、C1(i+k)とD(j)(k)の一致判定を行う際に、有効桁情報M1(i+k)の構成ビットのうち、1となって有効であるとされるビットが少なくとも一致して
いればこれら2つの文字が一致したと判定することに相当する。
たとえば、C1(i+k)が、01010101であり、そのマスクデータM1(i+k)が11110000、D(j)(k)が01011010であるとき、C1(i+k)&M1(i+k)は01010000となり、D(j)(k)&M1(i+k)も01010000となる。これによってマスク文字C1(i+k)&M1(i+k)とマスク文字D(j)(k)&M1(i+k)は一致したと判定される。すなわち、C1(i+k)とD(j)(k)は少なくとも有効桁に相当する部分のビットが一致したことになる。
ここで辞書部43には過去に入力された文字列を符号化して出力された文字列が登録されている。
たとえば、x文字数だけ過去に入力されたK文字の文字列をC1(i−x+k)[k:0≦k≦K−1]とする。マスク計算部42aから出力された文字列はC1(i−x+k)&M1(i−x+k)[k:0≦k≦K−1]とあらわされる。この場合、辞書部43のインデックスjにx文字数だけ過去の文字列が登録されているとすれば、登録された文字列を構成する各文字は次式であらわされる。
D(j)(k)=C1(i−x+k)&M1(i−x+k)
上式を用いれば、情報一致判定部42bでの文字列比較は、C1(i+k)&M1(i+k)とC1(i−x+k)&M1(i−x+k)&M1(i+k)が0≦k≦K−1で全て一致するもののうちKが最長のものに対応するインデックスjを求めることに帰着する。
一致探索部42は、文字列の一致長が所定数以上であり、且つ、入力文字列と一致する文字数が最も長いものと対応する辞書インデックスを、少なくとも入力文字列に対する圧縮符号の一部として出力する。具体的には、辞書インデックスのみを出力する場合(マスクLZW法という)、辞書インデックスと、不一致と判定された最初の1文字(不一致文字という)をそのマスクデータでマスクしたマスク不一致文字C1(i+K)&M1(i+K)とを出力する場合(マスクLZ78法という)、更に辞書インデックスと連続一致文字長とマスク不一致文字C1(i+K)&M1(i+K)とを出力する場合(マスクLZ77法という)がある。更にマスクLZ77法及びマスクLZ78法の場合は、前記した一致探索での文字列の一致長が、所定数に達しないときには、そのことを示す符号と、その文字列の先頭の1文字のマスク不一致文字C1(i)&M1(i)とが出力される。情報一致判定部42bの判定結果に基づいて、符号生成部49は、前述した各符号化方法に応じた符号を端子44へ出力する。
情報一致判定部42b及び符号生成部49は、例えば図1A中の一致探索部14及び符号生成部15、図2A中の一致探索部32及び符号生成部33、図3A中の一致探索部36及び符号生成部37とそれぞれ対応している。異なる点は、情報一致判定部42b及び符号生成部49は、2つの文字の有効桁だけを比較して一致の判定を行うことである。同様に、LZ法の前記以外の方法に、この発明を適用しても良い。その場合には、適用する対応符号化方法により処理は異なり、辞書部43の機能構成、辞書に保持される内容、インデックスの出力等も対応する符号化方法により異なる。しかし、いずれの場合にも有効桁情報によって有効とされるビットが少なくとも一致すれば文字が一致したとして、最長の一致文字列を探索することは共通する。また、復号化の時にも、有効桁情報を使い、文字列の文字数と各文字の中の有効なビットを判別することは共通する。そして、それぞれの符号化方法に応じて復号化する。以下、この対応する符号化方法を例えばマスクLZ77法、マスクLZ78法、マスクLZW法、一般的にマスクLZ符号化方法という。
復号部45は、符号生成部49から出力された符号を文字列に復号化する。辞書登録部46は、復号化された最長一致文字列に、最長一致文字列の最後の文字C1(i+K−1)の次のマスク文字(マスク不一致文字)C1(i+K)&M1(i+K)を加え
たK+1文字の文字列を生成する。そして、辞書登録部46は、辞書部43中の現在文字列が登録されている最大のインデックスよりも1つ大きなインデックスに、生成した文字列を登録する。なお、この復号文字列の各文字は
D(j)(k)[k:0≦k<K]であり、すなわち(C1(i−x+k)&M1(i−x+k))[k:0≦k<K]である。よって、辞書インデックスjmax に登録される新たな文字列は
(C1(i−x+k)&M1(i−x+k))[k:0≦k<K]の末尾にC1(i+K)&M1(i+K)を加えたものとなる。
マスクLZ77及びマスクLZ78の場合は、復号部45に一致長が所定値以下を表わす符号が入力されると、そのマスク不一致文字C1(i)&M1(i)がそのまま辞書登録部46へ入力され、そのマスク不一致文字が、辞書部43中の現在文字が登録されている最大インデックスよりも1つ大きなインデックスに登録される。なお、マスクLZ77及びマスクLZ78の場合は、符号化開始時は、辞書部43には、文字はなにも登録されていないが、マスクLZWの場合は、符号化開始時は、辞書部43には、全ての1文字が登録されている。復号部45及び辞書登録部46の機能構成及び処理は後で説明する。
また、有効桁情報は必要に応じて有効桁符号化部170で符号化し、有効桁符号として端子171より出力される。有効桁符号化部170では複数の文字に対する各有効桁情報をまとめて圧縮符号化して、符号化効果を高める。
符号化処理
実施例1の符号化処理手順の例を図6に示す。ステップS1では、文字(処理単位情報)C1(i+k)とその有効桁情報M1(i+k)が一致探索部42に入力される(通常、プログラムの実行により符号化装置内又は外部の記憶部から取り込まれる。)。制御部47は、全ての入力文字のステップS3〜S6の処理が完了したかを調べる(ステップS2)。完了していなければ、入力文字中の最初の未処理の文字C1(i)とM1(i)に処理ポインタiを移動させる(ステップS3)。マスク計算部42aは、C1(i+k)&M1(i+k)を計算する。情報一致判定部42bは、C1(i+k)&M1(i+k)[k:0≦k]と一致するマスク文字列を、マスク計算部48を介して辞書部45から探索する。そして、最も長く一致する文字列D(j)(k)&M1(i+k)[k:0≦k≦K−1]と対応するインデックス(最長一致インデックス)jmaxを求める(ステップS4)。
この探索は例えば図7に示すサブルーチンにより実行する(その説明は後で行う)。求めたインデックスjmaxと対応する文字列を復号する。その復号された文字列に次の不一致1文字C1又は次の復号先頭1文字Cを付加した文字列を、対応するマスクデータでマスクし、マスク文字列を生成する。そして、そのマスク文字列を辞書部43に登録する(ステップS5)。マスクLZWの場合は、符号生成部49は、最長一致インデックスjmaxを出力する。マスクLZ78の場合は、符号生成部49は、最長一致インデックスjmaxと次のマスク不一致文字C1(i+Kmax )&M1(i+Kmax )とを出力する。マスクLZ77の場合は、符号生成部49は、最長一致インデックスjmaxと、一致文字長Kmaxと、次のマスク不一致文字C1(i+Kmax )&M1(i+Kmax )とを出力する(ステップS6)。そして、ステップS2に戻る。ステップS2で全ての文字に対する処理が完了していれば、この入力文字列の符号化処理は終了する。ここでKmax は辞書のjmax番目のインデックスに登録されている文字列の長さ(文字数)であり、一致文字長(最長一致した文字列の文字数)を表す。
マスクLZ77とマスクLZ78の場合には、ステップS4で一致文字長が所定に達しないときは、ステップS5でその入力文字列の先頭文字C1(i)をマスクデータM1(i)でマスクしたものを、現在文字が登録されている最大インデックスの次のインデック
スに登録する。また、ステップS6ではそのマスク不一致文字C1(i)&M1(i)を、一致文字長が所定値より少ないことを表わす符号(不一致インデックスという)と共に出力する。
この例では、入力文字C1(i)に対し、マスクデータM(i)で有効桁長以外のビットをマスクするマスク処理は、辞書探索の際にステップS4で行っているが、図6に破線で示すように文字、有効桁情報入力されたステップ1の直後に、全ての入力文字に対して一括してマスク処理を行うこととしても良い(ステップS7)。また、C1(i)とC1(i)&M1(i)が必ず等しくなることがあらかじめ判っている場合には、C1(i)をM1(i)でマスクする処理は省略しても良い。
上述から理解されるように、ステップS3でのポインタiの移動は、一致長が所定値以上の場合はiからi+kmax +1となり、マスクLZ77およびマスクLZ78では一致長が所定値以下の場合はi+1となる。マスクLZWでは所定長は、辞書部43に1つのインデックスに初期登録された文字数であり、一致長が所定値に達しない場合は生じない。
図5中に示す制御部47がレジスタ47aにポインタiを保持し、その制御と、そのポインタに基づく、C1(i),M1(i)の取込み、各部を動作させるための制御を行う。
探索処理
図7を参照して図6のステップS4での辞書探索処理の具体例を説明する。情報一致判定部42bは、まず辞書インデックスjを0に、最長一致文字数(長)kmax を0に、最長一致文字長kmax が得られたインデックスjmax を0にそれぞれ初期化する(ステップR1)。次に現探索インデックスjが辞書部43内のインデックスの最大値J以上になったかを調べる(ステップR2)。J以上でなければ、一致文字数kを0に初期化する(ステップR3)。辞書部43内のj番目のインデックスに登録されている文字列中のk番目の文字D(j)(k−1)と入力文字列のk番目の文字C1(i+k−1)とが、有効桁に対応するビットで一致するか否かを調べる。この例では、辞書部43のインデックスjに登録されたk番目の文字D(j)(k−1)と入力文字列のk番目の文字C1(i+k−1)を、マスクデータM1(i+k−1)を用いて比較する。具体的には、まず辞書文字D(j)(k−1)とマスクデータM1(i+k−1)とのビットごとの論理積をとる(ステップR10)。その後、インデックスjのk番目のマスク辞書文字D(j)(k−1)&M1(i+k−1)と、ポインタiのk番目のマスク入力文字C1(i+k−1)&M1(i+k−1)とが等しいか否かを調べる。(ここで、マスク入力文字C1(i+k−1)&M1(i+k−1)を計算する処理は、ステップR10で行うこととしても良いし、図6中に破線で示したステップS7で事前に計算しておいても良い。)
両マスク文字が一致するかを確認する(ステップR4)。一致する場合は、kに1を加えてステップR10に戻る(ステップR5)。ステップR4で両者が一致しなければ、一致文字数kが現在の最長一致文字長kmax より大きいか否かを調べる(ステップR6)。kの方が大きければ最長インデックスjmax を、現在のインデックスjに更新し、最長一致文字長kmax を、現在のkに更新する(ステップR7)。ステップR6でkの方が大きくない場合またはステップR7の処理が終わった場合には、辞書インデックスjに1を加えてステップR2に戻る(ステップR8)。このようにして各インデックスjの登録マスク文字列と入力マスク文字列とを、マスクをかけた状態で比較し、不一致文字が生じるまで一文字ずつ順次調べる。そして、ステップR2でjがインデックスの最大値J以上になると、その時の最長一致文字数kmax が得られた時のインデックスjmax を出力する(ステップR9)。この辞書探索処理は、マスクLZ77、マスクLZ78、マスクLZWのいずれに対しても同様に行うことができる。
max が所定値以上の場合は、圧縮符号化装置から出力される符号は、マスクLZ77及びマスクLZ78では最長一致インデックスjmax と、一致文字長kmax(マスクLZ78ではkmax は省略される。)と、その時の処理ポインタiの入力文字列中の最初に不一致となった1文字C1(i+kmax)(一般にC1と表わす)とそのマスクデータM1(i+kmax )(一般にM1と表わす)とのビットごとの論理積(C1&M1)である。また、kmax が所定値より小さい場合は、圧縮符号化装置から出力される符号は、不一致を表わすインデックス(例えば背景技術中での説明ではインデックスが0、一致文字数が0:以下不一致インデックスという。)と、その処理ポインタiの先頭入力文字C1(i)(不一致入力1文字C1という。)とそのマスクデータM1(i)との論理積(C1(i)&M1(i))(マスク不一致文字という。)である。
従って図5中に示すように、図1A中の符号生成部15、図2A中の符号生成部33と対応する符号生成部49が設けられる。マスクLZWの場合はjmax のみが出力される。図7に示した処理が可能のために、例えば図5の情報一致判定部42bには、前記パラメータj、kmax ,jmax ,kがそれぞれ格納されるレジスタ42b,42b,42b,42bが設けられ、ステップR2,R4及びR6の判定を行う判定部42bが設けられ、処理手順を制御する制御部42bが設けられる。この制御部42bは制御部47で兼用してもよい。
実施例1では、辞書部43内の登録文字(情報)と入力文字との比較は、文字と辞書登録文字とを、共にマスクした状態で一致するかを調べている。したがって、マスクされている部分に不一致のビットが存在していても、両文字は一致したと判定され、結果として文字列も一致と処理される。このため、最長一致インデックス(jmax )が出力される回数が従来方法より多くなり、出力符号の圧縮率を向上させることができる。このように、マスク文字の一致C1(i+k)&M1(i+k)=D(j)(k)&M1(i+k)を検出する処理は、全ての方式で同じである。そして、マスクLZWでは、一致文字数が最大のインデックスjmax を符号として出力する。一致文字数が所定数より多ければ、マスクLZ78では、jmax とC1&M1を符号として出力する。マスクLZ77では、jmaxとkmaxとC1&M1を符号として出力する。また、一致文字数が所定数より少なければ、マスクLZ77とマスクLZ78では、一致文字数が所定数より少ないことを表わすインデックスとC1(i)&M1(i)を符号として出力する。
LZ77の場合は、出力符号を復号部45で復号して辞書部43に登録する。一致文字数が所定以上の場合には、辞書部43には、符号出力された最長一致インデックスjmaxに対応する文字列D(jmax)(0)〜D(jmax)(kmax−1)にマスク不一致文字C1(i+kmax)&M1(i+kmax)を付加した文字列が、スライド辞書の最も新しい文字列の格納位置に登録される。一致文字数が所定数より少ない場合には、辞書部43には、マスク文字C1(i)&M1(i)が、スライド辞書の最も新しい文字列の格納位置に登録される。
LZ78、LZWの場合は、符号出力された最長一致インデックスjmax に対応する文字列D(jmax )(0)〜D(jmax )(kmax −1)にマスク不一致文字C1(i+kmax )&M1(i+kmax )を付加した文字列が、辞書部43のインデックスJの位置に登録される。登録の後、Jは1増加される。
復号化構成1
実施例1の復号化装置を説明する。図8に、マスクLZ77、マスクLZ78に適用される復号化装置を示す。この構成は、図5に示した符号化装置中の復号部45として用いることもできる。
符号解析部52は、入力端子51からの入力符号を、最長一致インデックスjmax と、
一致文字長kmax (マスクLZ78では省略されている)と、マスク不一致文字(C1&M1)とに分離する。インデックスjmax と一致文字長kmax が情報取得部53に入力される。マスクLZ77の場合は、情報取得部53は、辞書部54のインデックスjmax の位置から、一致文字長kmax 分の文字列D(jmax )(k)[k:0≦k<kmax ]を取り出す。マスクLZ78の場合は、情報取得部53は、辞書部54のインデックスjmax に登録されているkmax 文字の文字列D(jmax )(k)[k:0≦k<kmax ]を取り出す。そして、マスク計算部152と連結部153に渡す。マスク計算部152は、インデックスjmax を復号して得た文字列のk番目の文字と有効桁情報M1(i+k−1)との論理積演算によって、文字列(D(jmax )(k)&M1(i+k))[k:0≦k<kmax ]を生成し、文字列合成部55に入力する。文字列合成部55は、入力された文字列の最後に、符号解析部52からのマスク不一致文字(C1&M1)を連結して、出力端子56へ復号文字列として出力する。また、連結部153は、情報取得部53から渡された文字列D(jmax )(k)[k:0≦k<kmax ]に、符号解析部52からのマスク不一致文字(C1&M1)を連結して辞書登録部57に渡す。辞書登録部57は、連結部153から入力された文字列を辞書部54に登録する(辞書に登録する文字列D(jmax )(k)[k:0≦k<kmax ]にはマスクをかけない。)。符号解析部52から一致文字長が所定値より小さいことを示す符号(不一致インデックス)が検出された場合は、入力されたマスク不一致文字C1&M1を、復号文字として出力端子56へ出力すると共に辞書登録部57を用いて辞書部54に登録する。この登録処理は、図1B中の辞書登録部27と同じである。なお有効桁符号が入力される場合は、その有効桁符号は有効桁復号化部156で、有効桁情報群を復号する。そして、その有効桁情報群から、文字D(jmax )(k)と対応する有効桁情報M1(i+k)を順次マスクデータ生成部151に入力する。
復号化処理1
図8に示した機能構成の処理手順例を、図9を参照して説明する。符号解析部52が符号を受信する(ステップS11)。制御部157は、全ての符号に対するステップS13〜S19の処理が完了したかを調べる(ステップS12)。完了していなければ、処理ポインタiを移動する(ステップS13)。制御部157は、そのポインタiが指す未処理の入力された符号B1(i)中のインデックスが、不一致インデックスか否かを判定する(ステップS14)。不一致インデックスでなければ、情報取得部53は、そのインデックスjmax が示す辞書部54中のインデックスjmax に登録されている文字列を取得する(ステップS15)。マスクLZ77の場合は、インデックスが示す位置から、未処理の入力された符号B1(i)中の一致文字長kmax 分の文字列を取得する。マスクLZ78の場合は、インデックスに対応する位置に登録されているkmax文字の文字列を取得する。
取得した文字列に、有効桁情報M1(i+k−1)を論理積演算して、文字列(D(jmax )(k)&M1(i+k))[k:0≦k<kmax]を生成する(ステップS16)。このマスク文字列にマスク不一致1文字を連結して復号文字列として出力する(ステップS17)。
また、ステップS15で取得した文字列(マスクをかけていない文字列)D(jmax )(k)[k:0≦k<kmax ]に、マスク不一致1文字を連結して辞書部54に登録してステップS12に戻る(ステップS18)。
ステップS14で不一致インデックスであると判定されると、符号解析部52で分離されたマスク不一致1文字を復号文字として出力する。さらにそのマスク不一致1文字を辞書部54に登録してステップS12に戻る(ステップS19)。ステップS12で全ての符号に対する処理が完了したらその入力符号列に対する処理を終了する。図8中の制御部157は各部を順次動作させ、また処理パラメータiが格納されるレジスタ157a、
ステップS12、S19の各判定を行う判定部157bを備えている。
復号化構成2
実施例1でのマスクLZWに対する復号化装置の例を図10に示す。この場合は入力端子51に入力される文字(処理単位情報)列はインデックスjmax のみである。情報取得部53は、辞書部58中に登録されているそのインデックスjmaxに対応する文字列D(jmax )(k)[k:0≦k<kmax ]を取り出す。マスクデータ生成部151は、それぞれの文字D(jmax )(k)に対応した有効桁情報M1(i+k)を生成する。マスク計算部152は、有効桁情報M1(i+k)と対応文字D(jmax )(k)との論理演算を行って文字列(D(jmax )(k)&M1(i+k))[k:0≦k<kmax ]を生成し、復号文字列として出力端子56に出力する。有効桁情報が有効桁符号として端子51’に入力された場合は、図中に破線で示すように、有効桁復号化部156で復号化して有効桁情報を得る。
また、情報取得部53で取得した文字列は、辞書登録部59にも入力される。新たな文字列が復号化され出力されると、辞書登録部59は、直前バッファ59aに一時的に保持されている直前に辞書部から取り出された文字列D(jmax ’)(k)[k:0≦k<kmax’ ]の後に、新たに復号化された(辞書部から取り出された)文字列の先頭文字C=D(jmax )(0)を連結して辞書部58に登録する。そして、辞書登録部59は、復号文字列D(jmax )(k)[k:0≦k<kmax ]を直前バッファ59aに一時的に保持する。
復号化処理2
このマスクLZWの復号化処理手順の例を図11に示す。まず、情報取得部53は、符号入力を取り込む(ステップS11)。制御部157は、全符号のステップS13〜S19の処理が完了したかを調べる(ステップS12)。完了していなければ処理ポインタiを移動させる(ステップS13)。ステップS11〜S13までは、図9に示した場合と同じである。マスクLZWでは、次に情報取得部53は、符号B1(i)のインデックスjmax に対応する文字列D(jmax )(k)[k:0≦k<kmax ]を辞書部58から取り出す。辞書登録部59は、直前バッファ59aに一時的に文字列D(jmax )(k)[k:0≦k<kmax ]を保持する(ステップS17)。それぞれの文字D(jmax )(k)に対応した有効桁情報M1(i+k)とD(jmax )(k)との論理積演算によって文字列(D(jmax )(k)&M1(i+k))[k:0≦k<kmax ]を生成し、復号文字列として出力端子56から出力する(ステップS18)。
新たな文字列が復号化され出力されると、辞書登録部59は、直前バッファ59aに一時的に保持していた直前に辞書部から取り出された文字列D(jmax’)(k)[k:0≦k<kmax’]の後に、新たに復号化された(辞書部から取り出された)文字列の先頭文字C=D(jmax )(0)を連結して、辞書部58に登録する。そして、辞書登録部59は、復号文字列D(jmax )(k)[k:0≦k<kmax]を直前バッファ59aに一時的に保持してステップS12に戻る(ステップS19)。
以上述べたことから理解されるように、実施例1の復号化装置は、従来のLZ77,LZ78,LZWの各方式に対する復号化装置と、辞書部の構成、マスク計算を行う部分および辞書に登録する内容が異なる。
[実施例1変形]
以下に実施例1の各種変形例を説明する。
先に述べた実施例1の説明に用いた具体例を以下実施例A−3という。この実施例A−3では、マスクLZ77、マスクLZ78の場合は、図5中に示したように、入力文字列および辞書に登録された文字列の双方にマスクM1(i+k)をかけた状態で文字列の一
致判定を行う。また、マスク計算部42aが、不一致文字C1を、そのマスクデータM1によりマスク処理したマスク不一致文字C1&M1、つまり不一致文字中の有効でない桁(ビット)部分は固定値(前記例では“0”であるが“1”でもよい)としたものの情報を求める。そして、最長一致した文字列を示す辞書インデックスjmax と、マスク不一致文字C1&M1とを符号として出力する。復号部45は、辞書部43の辞書インデックスjmax に対応する文字列D(jmax )(k)[k:0≦k<kmax ]を取り出す。また、辞書登録部46が、マスク不一致文字C1&M1を連結した文字列を辞書部43に登録する。
辞書探索では、C1(i+k)&M1(i+k)=D(j)(k)&M1(i+k)、[k:0≦k<K]となる最長のKを与える辞書インデックスjを探した。ここで、D(j)(k)に登録されている内容はx文字数だけ過去に入力された文字列である。したがって、その文字列を構成する各文字は前述したようにD(j)(k)=C1(i−x+k)&M1(i−x+k)とあらわすこともできる。
すなわち、辞書探索とは、C1(i+k)&M1(i+k)=C1(i−x+k)&M1(i−x+k)&M1(i+k)、[k:0≦k<K]となる最長のKを与える辞書インデックスjを探索することに相当する。
また、復号側では、文字列D(jmax )(k)&M1(i+k)[k:0≦k<kmax ]にマスク不一致文字C1&M1を連結した文字列を出力する。
以下にこの実施例A−3に対する変形実施例を、主として実施例A−3と異なる点について説明する。
実施例A−1
この実施例A−1では、入力文字列および辞書に登録された文字列の双方にマスクM1(i+k)をかけた状態で文字列の一致判定を行う。そして、最長一致した辞書インデックスjmax と、マスクをかけない不一致文字C1そのものの情報を符号として出力する。このため図5中に破線141で示すように文字C1(i+k)も符号生成部49に入力される。そして、符号生成部49は、文字C1(i+k)を不一致文字C1として出力する(A−3ではマスク不一致文字C1&M1を出力)。
復号部45は、辞書部43から辞書インデックスjmax に対応する文字列D(jmax )(k)[k:0≦k<kmax ]を取り出す。辞書登録部46は、不一致文字C1そのものを連結した文字列を、辞書部43に登録する。したがって、辞書部43にはマスク処理されていない文字列が登録されることになる。
つまり、辞書探索では、C1(i+k)&M1(i+k)=D(j)(k)&M1(i+k)、[k:0≦k<K]となる最長のKを与える辞書インデックスjを探す。ここで、D(j)(k)に登録されている内容はx文字だけ過去に入力された文字列に対応する文字列であり、その文字列の各文字はD(j)(k)=C1(i−x+k)とあらわすこともできる。
すなわち、辞書探索とは、C1(i+k)&M1(i+k)=C1(i−x+k)&M1(i+k)、[k:0≦k<K]となる最長のKを与える辞書インデックスjを探索することに相当する。
また、復号側では、マスク計算部152の出力ではなく図8に破線157′で示すように辞書部54から取得した文字列D(jmax )(k)[k:0≦k<kmax ]に、図8中に括弧書きで示すように符号解析部52から取り出した不一致文字C1を連結した文字列を出力する。
この実施例A−1では、辞書部43内に登録される文字はマスクされていない。しかし、入力文字列と辞書に記録された文字列(辞書文字列)とは、共にマスクをかけた状態で
比較され、一致長が最も長い辞書文字列が選択される。このため、最長一致インデックスjmax が複数得られる場合がある。この場合、同一のjmax を得る辞書文字列の中で、入力文字列との距離(例えば数値の場合、両数値の差)が最も小さい辞書文字列を選択する。これは、入力文字列に最も近い辞書文字列を選択することである。
例えば、図7中のステップR6において、kがkmax より大きくないと判定されると、図12Aに示すように、kがkmax と等しいかを調べる(ステップR12)。等しければ、その時の入力文字列C1(i+n)[n:0≦n≦k−1]と辞書文字列D(j)(n)[n:0≦n≦k−1]との距離を計算する。そして、その距離をjmax と対応させて記憶部に格納し、ステップR8へ移る(ステップR13)。ステップR12でkがkmax と等しくなければ、ステップR8へ移る。これらの機能構成として、例えば図12Bに示すように、図5中の情報一致判定部42bと符号生成部49との間に評価部42cを設ける。評価部42cは、ステップR12を実行する判定部42C、ステップR13を実行する距離計算部42C、各jmax と距離との対応を記憶する記憶部42C、記憶部42C中の複数のjmax の中で距離が最も短かいものを選択する選択部42Cが設けられる。なお、図7中のステップR7のjmax 更新は、記憶部42C中のjmax に対しても行われる。
実施例A−1の説明は、マスクLZ77またはマスクLZ78の場合である。マスクLZWの場合は、図10中のマスク計算部152及び図11中のステップS18でのマスク処理は不要となる。
実施例A−1′
実施例A−1では、復号側は、マスク処理することなくD(jmax )(k)[k:0≦k<kmax ]とC1を出力した。実施例A−1′では、マスク計算部158(図8中に破線で示す。)が、符号解析部52よりの不一致文字C1(図8中に括弧書きで示す。)に、マスクデータM1でマスク処理したマスク不一致文字C1&M1を計算する。文字列合成部55は、マスク計算部152からのマスク文字列D(jmax )(k)&M1(i+k)[k:0≦k<kmax ]に、マスク計算部158からのマスク不一致文字C1&M1を連結した文字列を出力する。
なお、マスクLZWの場合は、図10及び図11を参照した実施例A−3の処理と同様である。
実施例A−2
実施例A−3と異なる点は、図5の破線142で示すように、辞書部43から取り出した文字D(j)(k)を情報一致判定部42bに直接入力する。つまり、マスク計算部48を用いない。辞書部43に登録された文字列は、実施例A−3と同様に、マスクされたものである。従って情報一致判定部42bでは、C1(i+k)&M1(i+k)=D(j)(k)が成立すると両文字が一致したと判定する。
復号化側では、図8の破線157′で示すように、情報取得部53が取得したマスク文字列が、マスク計算部152を介することなく文字列合成部55に入力される。
実施例A−4
実施例A−4は、入力文字C1(i+k)と辞書文字D(j)(k)との有効桁長の短い方に合わせて一致するインデックスを探索する点が実施例A−3と異なる。
辞書部43は、図13Aに示すように、マスクされていない文字列D(j)(k)[k:0≦k<K]が格納される文字部43aと、各文字列の各文字の有効桁情報(例えばマスクデータM(j)(k)[k:0≦k<K])が格納されている有効桁部43bとを有する。マスク計算部48′には、入力文字C1(i+k)のマスクデータM1(i+k)と、辞書部43から辞書文字D(j)(k)に対応するマスクデータM(j)(k
)とが入力される。マスク計算部48′は、一致判定に用いるマスクデータM’を、入力されたマスクデータのビットごとの論理積によって計算する。すなわち、マスク計算部48′は、M’(k)=M1(i+k)&M(j)(k)を計算する。また、マスク計算部42aはマスク入力文字C1(i+k)&M’(k)を、マスク計算部48′はD(j)(k)&M’(k)をそれぞれ計算する。そして、C1(i+k)&M’(j)(k)とD(i)&M’(k)とが、情報一致判定部42bに入力される。
符号出力としては、最長一致した文字列の辞書インデックスjmax (マスクLZ77の場合は、さらに一致長kmax )は、同様に出力される。しかし、不一致となった文字C1は、マスクされたものではなく、不一致文字C1自体が出力される。
入力文字C1(i+k)の有効桁長が辞書文字D(j)(k)の有効桁長より長い場合は、更に次のデータをも出力する必要がある。例えば図5中の符号生成部49内に処理部49aを設ける。処理部49aの機能構成を図13Bに示す。比較部49bは、マスクデータを2進数値と見なした時のM1(i+k)とM’(k)とを構成するビットごとに比較する。ここで、M1(i+k)が1、且つ、M’(k)が0となるビットがある場合には、入力文字C1(i+k)のそのビットに対応する情報を、別に出力する必要がある。そこで、演算部49cは、M1(i+k)とM’(k)とのビットごとの排他的論理和を演算する。その演算結果M’’(k)>0となった場合には、演算部49dは、M’’(k)の1となったビットに対応する入力文字C1(i+k)のビットを取り出し、結果を出力する。
このようにしてC1(i+k)中の有効桁(ビット)であるが、D(j)(k)中の対応する桁(ビット)が有効桁でない部分のビットが、jmax、不一致文字C1と共に出力される。
マスクLZW方法の場合は、符号出力の際に図13Bと対応する処理が行われるが、不一致1文字C1は出力されない。
復号化装置では、図8中に括弧書きで示し、かつ1点鎖線で示すように、情報取得部53から取り出された文字列D(jmax )(k)[k:0≦k<k]の各kに対して、M1(i+k)とM(jmax)(k)を用いてビットを補ってから出力すべきビットを算出する。すなわち、比較部154は、M1(i+k)^(M1(i+k)&M(jmax)(k))>0となるkを求める。そして、求めたkに対して、M1(i+k)^(M1(i+k)&M(jmax)(k))で1となっているビットに対応する情報を符号解析部52から取り出す。演算部155は、M1(i+k)^(M1(i+k)&M(jmax)(k))で1となっているビットを、符号解析部52から取り出したビット情報と置き換える。そうして得られたマスク情報がM1’(i+k)としてマスクデータ生成部151に入力される。そして、マスク計算部152は、マスク処理によって出力すべき文字列を復元する。即ち(D(jmax )(k)&M(jmax )(k)&M1(i+k))|M1’(i+k)が計算される。なお、A^BはAとBのビットごとの排他的論理和を表す。A|BはAとBの論理和を表す。
また、上記の処理によって得られた文字列に、マスクされない不一致文字C1が文字列合成部55で合成されることになる。
辞書部への登録は、情報取得部53で取得された文字列D(jmax)(k)[k:0≦k<k]とその有効桁情報M(jmax)(k)[k:0≦k<k]及び不一致文字C1とその有効桁情報M1となる。
実施例A−4′
実施例A−4′では、不一致文字C1に対しそのマスクデータM1でマスクして出力する。その他は実施例A−4と同様である。
実施例A−5
実施例A−5は、実施例A−4との違いのみを説明する。辞書部43には文字D(j)(k)ではなく、そのマスクした文字D(j)(k)&M(j)(k)が登録される点、符号化出力中の不一致文字C1がマスク文字C1&M1として出力される点が異なる。復号化装置は実施例A−4と同じである。
実施例A−1〜A−3では、例えばマスクLZ77を例とすると、辞書部43には、図14Aに示すように、辞書部43に最後に入力された所定量の文字列が登録されている。図14Aでは、辞書部43は、構成するスライドバッファと繋がった先読みバッファ65を有する。バッファ65の文字部65aに次に符号化されるべき文字を先頭とする文字列が格納される。また先読みバッファ65内の各文字C1(i+k)の有効桁情報(この例ではマスクデータM1(i+k))が有効桁部65bに格納される。
実施例A−4〜A−5では、図14Bに示すように、辞書部43は、図14A中の辞書部43と同一内容を登録する文字部43aと、文字部43aに登録されている各文字D(j)(k)の有効桁情報(この例ではマスクデータM(j)(k))を格納する有効桁部43bを有する。先読みバッファ65は、実施例A−1〜A−3の場合と同様である。なおマスクLZ78、マスクLZWの場合は、辞書部43はスライドバッファではなく固定バッファとなる。
実施例A−1,A−1′,A−2,A−3,A−4,A−4′,A−5の順で、辞書登録文字との一致が得られ易い。従って、同じインデックスjmax が出力される回数が多くなり、圧縮効率が向上する。しかし、インデックスjmax の探索処理が多くなる。また実施例A−4,A−4′,A−5では、M1(i+k)^(M1(i+k)&M(j)(k))>0の場合には、入力文字は有効桁のみに意味があるが、辞書文字としては有効桁でないビット(列)も出力することになる。したがって、圧縮効率が低下する。従って、信号の性質により探索処理数(時間)や、圧縮効率を考慮して、いずれの実施例を用いるかを選択すればよい。
[実施例2]
実施例2は、音声や音楽などのオーディオ信号、画像信号、各種計測信号、線形予測誤差信号などのディジタル値のサンプル列の圧縮符号化、復号化に実施例1に示した方法、装置を適用したものである。実施例1では各入力文字(情報)は一定のビット長であり、かつその有効桁情報が既知であることを前提とした。本実施例では、オーディオ信号などのディジタル値のサンプル列を、実施例1を適用できるように、所定ビット数の文字(情報)からなる処理情報列の単位に変換する処理について主に説明する。
まず、そのような変換を行う理由を説明する。前記サンプル列の各サンプルの各ビット長は様々であり、一定ビット長の文字(情報)の文字列(単位処理情報列)ではない場合がある。そこで、次のような変換方法が考えられる。
各サンプルを構成するビットを、1ビット単位に分解し、順に並べたビット列に変換する。そして、処理の単位となる1文字長(たとえば4ビット)ごとに切り出す。切り出した1文字長の文字列の繰り返しを、情報圧縮符号化装置の入力とする。
オーディオ信号などの波形信号のサンプル列は、本来、隣接するサンプル間の相関(冗長性)や、1サンプル内での相関(冗長性)などが大きいという性質を持っている。しかし、前記のような変換方法では、元のサンプル列が有していた性質が損なわれる場合が多い。
本発明は、サンプル間及び/又はサンプル内の相関(冗長性)も情報列の圧縮に有効に利用するために、サンプル列を相関(冗長性)が保持されるように単位処理情報列に変換する。まず、サンプル列を単位処理情報(文字)に変換した具体例を示す。
単位処理情報変換例1(可変長サンプル)
図15Aに可変長、つまりサンプルごとに語長(ビット数)が異なる場合の入力サンプル列の例を示す。入力サンプル列(s1,s2,…)中の各サンプルの語長(ビット数)Lが可変長の場合、このままでは単位処理情報のビット数が一定(固定文字サイズ)であることが必要なので、実施例1のマスクLZ符号方法を適用することができない。そこで、例えばマスクLZ法の単位処理情報の語長(ビット数)Nを、入力サンプルの最大語長(ビット数)LS max以上にとって単位処理情報とする。
図15Bは、各入力サンプルをLSB(最下位ビット)側に整列し、単位処理情報へ変換した例を示す図である。各入力サンプルs1,s2,…は、LSB側に整列され、有効桁よりもMSB側にはダミービット(例えば0)を付加して語長(ビット数)を拡張される。このようにして、各入力サンプルを、同一ビット数(単位処理情報のビット数N)に揃える。
図15Cは、各入力サンプルをMSB(最上位ビット)側に整列し、単位処理情報へ変換した例を示す図である。各入力サンプルs1,s2,…は、MSB側に整列され、有効桁よりもLSB側にはダミービット(例えば0)を付加して語長(ビット数)を拡張される。このようにして、各入力サンプルを、同一ビット数(単位処理情報のビット数N)に揃える。
入力サンプルの最大語長LS maxよりも短い語長(ビット数)をマスクLZ法の単位処理情報のビット数(1文字のサイズ)として変換を行ってもよい。図15Dは、各入力サンプルをLSB(最下位ビット)側に整列し、単位処理情報(1文字)のビット数(語長)Nずつに切り出した例である。この例では、各入力サンプルs1,s2,…をLSB側に整列し、LSB側からMSB側に向かってマスクLZ処理の1単位処理情報(1文字)のビット数(語長)Nずつ切り出して単位処理情報(1文字)に分割する。この際、入力サンプルの語長Lが単位処理情報の語長Nの整数倍でない場合には、余りのビットが生じる。この余りのビットには、MSB側に単位語長Nになるまでダミービット(例えば0)を付加して単位処理情報に変換する。サンプルs1のビット長Lは、Nより大で2Nより小さい。そこで、最初のNビットを切り出し、残りのビットのMSB側にダミービットを付加することで、ビット数がNの単位処理情報とする。なお、単位語長Nの整数倍よりもMSB側へのダミービット付加は行わない。このように切り出された単位処理情報(文字)は、最初のサンプルs1のLSB側からMSB側、次のサンプルs2のLSB側からMSB側のように整列される。図15Dでは、単位処理情報の整列順に、番号1、2、3、…、12を付けてある。この例では2文字(単位処理情報)目、5文字(単位処理情報)目、12文字(単位処理情報)目にダミービットが付加されている。なお、辞書登録文字(単位処理情報)との探索比較を行う際にはダミービット部分はマスクされる。
図15Eは、各入力サンプルをMSB(最上位ビット)側に整列し、単位処理情報(1文字)のビット数(語長)Nずつに切り出した例である。この例では、各入力サンプルs1,s2,…をMSB側に整列し、MSB側からLSB側に向かって単位処理情報(1文字)の語長Nずつ切り出して1文字(単位処理情報)に分割する。この際、入力サンプルの語長Lが単位処理情報の語長Nの整数倍でない場合には、余りのビットが生じる。この余りのビットには、LSB側に単位処理情報の語長Nになるまでダミービットを付加する。単位語長Nの整数倍よりもLSB側へのダミービット付加は行わない。各文字(単位処理情報)は、最初のサンプルs1のMSB側からLSB側、次のサンプルs2のMSB側からLSB側のように整列される。図15Eでは、単位処理情報の整列順に、番号1、2、3、…、12を付けてある。図中で2文字目、5文字目、12文字目、にダミービットが付加されている。なお、辞書登録文字との比較を行う際には、ダミービット部分はマスクされる。
図15F、図15Gは、入力サンプルの最大語長(ビット数)LS maxよりも小さい単位語長Nを用いる場合の別の変換例である。
図15Fでは、各入力サンプルs1,s2,…をLSB(最下位ビット)側に整列し、有効桁よりもMSB側にはダミービット(例えば0)を付加して語長(ビット数)を拡張する。拡張に際しては、ビット数が入力サンプルの最大語長(ビット数)LS max以上、且つ単位語長Nの整数倍になるようにダミービットを付与する。次に、LSB側からMSB側に向かってマスクLZ処理の単位処理情報(1文字)のビット数(語長)Nずつ切り出して単位処理情報(1文字)に分割する。
図15Gでは、各入力サンプルs1,s2,…をMSB(最上位ビット)側に整列し、有効桁よりもLSB側には固定値例えば0のダミービットを付加して語長(ビット数)を拡張する。拡張に際しては、ビット数が入力サンプルの最大語長(ビット数)LS max以上、且つ単位語長Nの整数倍になるようにダミービットを付与する。次に、MSB側からLSB側に向かってマスクLZ処理の単位処理情報(1文字)のビット数(語長)Nずつ切り出して単位処理情報(1文字)に分割する。
単位処理情報変換例2(長い一定語長)
図16Aに、各入力サンプルが一定の大きな語長(ビット長)Lであり、且つ、各サンプルの有効桁数Lが語長Lに比べて短い場合のマスクLZ方法の単位処理情報(1文字)の変換例示す。マスクLZ方法の単位処理情報(1文字)のビット数Nを、入力サンプルの語長Lと同じ長さに取る。次に、図16Bに示すようにサンプル内の有効なビットをLSB側に揃えて、ダミービット(例えば0)を設定する。なお、図16Cに示すように、サンプルs1,s2,…内の有効なビットをMSB側に揃えて、誤差を許容する部分にダミービット(例えば0)を設定してもよい。
図16Dに、各入力サンプルの有効なビットをLSB側に揃え、サンプル語長Lよりも短いビット数の単位処理情報のビット数Nごとに、サンプルから有効なビットの部分を切り出す方法を示す。この方法では、まず、各入力サンプルs1,s2,…の有効なビットをLSB側に揃える。そして、サンプル語長Lよりも短いビット数の単位処理情報のビット数(1文字のサイズ)Nごとに、サンプルs1から有効なビットの部分を切り出す。切り出しに際しては、切り出された有効なビットの部分のビット数が、単位処理情報のビット数Nより少なくなった場合は、ビット数がNになるまでダミービットを加える。その後は、サンプルs1に対する切り出しを中止する。そして、サンプルs2から、有用なビットの部分をNビット数ごとに切り出す(有効桁部分より上位ビットに対し、誤差を許容することはあり得ないからである)。切り出した単位処理情報(1文字)に対する番号付けは、最初のサンプルから順に、そのLSB側からMSB側に向って行う。
図16Eに、各入力サンプルの有効なビットをMSB側に揃え、サンプル語長Lよりも短いビット数の単位処理情報のビット数Nごとに、サンプルから有効なビットの部分を切り出す方法を示す。この方法では、まず、各サンプルの有効桁部分をMSB側に揃える。そして、最初のサンプルのMSB側からLSB側に順次単位処理のビット数(1文字サイズ)Nごとに切り出す。この場合は、1サンプルに対する有効桁部分の切り出しが終っても、誤差を許容する部分を全てマスクするため、その全サンプル長Lに対し、切り出しを行う。そして、有効桁でない部分はダミービットを付加する。ダミービットの部分にも単位処理情報(1文字)に対する番号付けを行う。図16Dの例では、図15Fと同様に、ダミービットを加える際に、有効桁以上の単位処理情報語長Nの整数倍、かつ付加するダミービットのビット数が最小となるように処理を行っている。なお、最大語を超えるまでダミービットのみの文字(単位処理情報)を追加するようにすることもできる。
単位処理変換構成及び処理手順
ディジタル値のサンプル列を、マスクLZ方法により圧縮符号化する機能構成例を図17に、サンプル列を単位処理情報列に変換する処理手順の例を図18に示す。
入力端子71よりサンプル列が、入力端子71よりサンプル毎の有効桁情報IEDが、記憶部72に入力される(ステップS21)。制御部76は、全てのサンプルに対するステップS23〜S33の処理が完了したかを調べる(ステップS22)。完了していなければ、片寄せ部73は、未処理サンプル中の初めの1サンプルと、そのサンプルのビット長Lと、そのサンプルと対応する有効桁情報IEDを、記憶部72から取り出す(ステップS23)。片寄せ部73は、取り出されたサンプル列を、図15、図16で説明したようにMSB側又はLSB側に片寄せし、バッファに保持する(ステップS24)。図16に示したように、サンプルの語長Lが固定の場合は、有効桁部分を片寄せする。例えば、有効桁数とIEDと最長(固定)ビット長Lとに応じて、サンプルをシフト処理することにより片寄せが行われる。
制御部76は、サンプル処理長Lをサンプルのビット長Lに初期設定する(ステップS25)。そして、サンプルビット長Lが0よりも大きいかを調べる(ステップS26)。Lが0よりも大きければ、Lが単位処理ビット数(1文字サイズ)N以上か否かが調べられる(ステップS27)。N≧Lの場合は、図15B、15C、16B及び16Cに対応する処理となり、N<Lの場合は図15D、15E、16D及び16Eに対応する処理となる。
ステップS27で、L≧Nと判断されると、単位ビット分離部74は、片寄せ側(LSB側に片寄せた場合はLSB側、MSB側に片寄せた場合はMSB側)から単位処理情報の所定ビット数(1文字サイズ)Nを、ビット長Lのサンプルから取り出し、1文字(単位処理情報)として出力する(ステップS28)。マスクデータ生成部75は、出力された1文字に対応するマスクデータM1(i)を生成する(ステップS29)。この場合は、マスクデータ生成部75中の生成部75aで各桁(ビット)が“1”のマスクデータのM1(i)を出力する。その後、サンプルビット長Lから文字サイズNが減算され、Lが更新されてステップS26に戻る(ステップS30)。
ステップS27でN<Lと判定されると、単位ビット分離部74は、片寄せ側からLビットを取り出す。ダミー付与部74aは、N−Lビット分(1文字サイズNに対する不足分)のダミービットを、取り出されたLビットの片寄せ側と反対側に付与し、1文字(単位処理情報)として出力する(ステップS31)。つまりサンプルをLSB側に片寄せた場合は、ダミービットは取り出されたLビットのMSB側に付与される。マスクデータ生成部75は、出力される1文字に対するマスクデータM1(i)を生成する(ステップS32)。この場合は、生成部75bは、有効桁のLビットに対応する各ビットは“1”、N−L個のダミービットに対応する各ビットは“0”のマスクデータM1(i)が出力される。次にサンプルビット長Lは、0に更新されてステップS26に戻る(ステップS33)。
ステップS26でサンプル処理長Lが0より大きくないと判定されると、ステップS22に戻る。ステップS22で全サンプルに対するステップS23からS33の処理が完了すれば、この単位処理列への変換処理は終了する。
なおステップS31において、L=Nの場合はN−L=0となりダミービットの付与は行われない。図17中の制御部76は、サンプル列などの取り込み、記憶部72から所要なサンプルの取り出しなどを行うと共に、各部を順次動作させる。制御部76内には、その制御に必要なパラメータとしてのサンプルビット長Lの格納部76a、有効桁情報IEDの格納部76b、文字サイズNの格納部76c、更にステップS22、S26、
S27における各判定を行う判定部76d、N−Lなどの演算を行う演算部76eなどが設けられている。Nは単位ビット分離部74内に格納してもよい。このようにしてサンプル列が単位処理情報列(文字列)に変換される。
この文字列と、各文字に対応するマスクデータM1(i)の列とが、実施例1で説明したマスクLZ符号化部78に入力される。そして、前述したように符号化処理がされて、符号が出力端子44に出力される。更に必要に応じて、例えば1024などの所定個数のサンプルによる区間(いわゆるフレーム)ごとに、有効桁情報IEDを表わす符号が、端子171から出力される。
サンプル列変換構成及び処理手順
入力符号を復号化し、その復号化した情報を、図17の入力サンプル列に変換するための機能構成を図19に示す。また、文字列(単位処理情報列)をサンプル列に変換する処理手順の例を図20に示す。
入力端子51からの入力符号が、マスクLZ復号化部81に入力される。また、必要に応じて入力端子82からのサンプルごとの有効桁情報が、マスクデータ変換部83で文字(単位処理情報)ごとのマスクデータに変換されて、マスクLZ復号化部81に入力される。端子82からの有効桁情報は、例えばフレームごとに入力される。マスクLZ復号化部81は、実施例A−1〜A−5で述べた各種の復号化装置が用いられる。マスクデータ変換部83の代わりに、図10中の端子51’の入力に相当する有効桁情報又は有効桁符号が入力されることもある。
マスクLZ復号化部81が復号化した文字列(単位処理情報列)は、端子56からサンプル列変換部84に入力される(ステップS41)。制御部88は、全ての文字(単位処理情報)に対する変換処理が完了しているか確認する(ステップS42)。完了していなければ、制御部88は、復号化後の先頭サンプルの語長(ビット長)Lを取得する(ステップS43)。単位ビット結合部87は、内部にLビットのメモリ部87aを確保する。また、単位ビット結合部87は、復元ビット数Lを0に初期化する(ステップS44)。
制御部88は、LがLより小さいか否かを調べる(ステップS45)。Lが小さければ、単位ビット結合部87は、未処理の文字列から初めの1文字C3(i)を取り出す(ステップS46)。復元ビット数Lと1文字のビット数Nが加算され、その加算結果がサンプル語長L以上か否かが判定される(ステップS47)。L以上でなければ、取り出したC3(i)がメモリ部87aの一端側から、書き込まれていない部分に、順次書き込まれる(ステップS49)。つまり、サンプル列を単位処理情報列に変換する際に、LSB(又はMSB)側から順次行った場合は、メモリ部87aへの書き込みもLSB(又はMSB)側から行い、LSB(又はMSB)側から格納済みのLビット以後にC3(i)が格納される。
ステップS49の後に、L+Nを新たな復元ビット数Lとし、ステップS45に戻る(ステップS50)。
ステップS47の加算値がサンプル語長L以上であればL−Lが計算される(ステップS51)。マスク文字C3(i)中のLSB(又はMSB)側から書き込まれていない部分に(L−L)ビットが書き込まれてステップS42に戻る(ステップS52)。なおサンプルビット長Lを超えたN−(L−L)ビットは破棄される。破棄の方法には様々な方法がありうる。例えば、最初にN−(L−L)ビットを捨て、残ったビットを書き込んでいく方法、N−(L−L)ビットも復元用メモリに書き込み、その後でビットシフト等によって破棄する方法などである。
また、ステップS45で復元ビット数Lがサンプルビット長Lをより小でなければ、ステップS42に戻る。ステップS42で全ての文字に対する処理が完了すればサンプル列への変換は終了する。
図19中の制御部88は、各処理に必要なパラメータL,N,Lなどが格納されるレジスタ88a,88b,88c,x+Lの加算などを行う演算部88d,ステップS42,S45,S48などの判定を行う判定部88eなどを備え、文字列の取り込み、先頭サンプルビット長L、メモリ部87aの確保などの各種処理、各部を順次動作させる。
図20のステップS52の処理では、Lを超えるN−(L−L)を破棄するが、このビットが符号化時にダミービットとして付与されたビットに対応する場合には、図19のマスクLZ復号化部81は、出力された文字列にマスク処理を行う必要が無い。すなわち図8中に破線157′で示したように、情報取得部53からの出力は、マスク計算部152での処理を行わないで、文字列合成部55に出力される。そして、文字列合成部55は、符号解析部52から入力されたマスク不一致文字と、情報取得部53からの文字列を連結して復号文字列として出力する。また、破線159で示すように、この出力された文字列を辞書登録部57で辞書に登録する。
このような構成とすることによって、図19中のマスクLZ復号化部81での処理を簡略化出来る。
同様に、図10の有効桁復号化部156の出力を、図19のマスクデータ生成部85への入力とすることもできる。この場合、図10のマスクデータ生成部151、マスク計算部152を省略できる。具体的には、図10に破線で示すように、情報取得部53からの出力を復号文字列として出力する。そして、有効桁情報を端子56’に出力する。この出力が図19の端子56’に入力され、マスクデータ変換部83の処理も不要となる。
[実施例3]
実施例3は、浮動小数点形式サンプル列の符号化、復号化、特に非特許文献4に示す符号化、復号化にこの発明を適用したものである。
符号化側
図21にその符号化装置の例を、図22にその処理例をそれぞれ示す。入力端子91から、IEEE−754規格の浮動小数点形式サンプル列が入力される。整数誤差分離部92は、各サンプルを例えば24ビット、16ビットなどの所定ビット数の整数信号Yと、その整数信号と入力サンプルとの差分信号Zとに分離する(ステップS61)。入力サンプル列(例えばIEEE−754規格の32ビット浮動少数点形式のオーディオ信号)は、小数点以下の端数を含む浮動小数点形式信号である。整数化部93は、各サンプルから、極性を加味した2の補数表現の整数形式信号Yを生成する。差分生成部94は、浮動小数点形式に変換した信号Yと入力サンプルとの差分を出力する。差分信号Zは、入力サンプルの仮数部の下位(23−n)ビットからなる。桁計算部93aは、整数形式信号Yの桁数nを計数し、差分信号Zの有効桁情報として出力する(ステップS62)。ここで、非特許文献4に記載されている方法を用いて、2≦|Y|<2(n+1)となるように整数形式信号Yの有効桁数nを決定する。非特許文献4では、整数形式信号のサンプルをMとして2(n−1)≦|M|<2(n)のとき仮数部の上位n−1ビットが0となるとされている。これは、本発明での、2≦|Y|<2(n+1)のとき仮数部の上位nビットが0となることと等価である。なお、|Y|=0のときには、後に実施例5で示すように、入力された符号小数点信号の32ビット全てを差分信号Zとしてもよい。
差分生成部94からの差分信号は、入力浮動小数点形式サンプルの23ビット仮数部の上位側の常に0となるnビットが除かれた(23−n)ビットの可変長サンプルである。整数形式信号Yと差分信号Zとに変換した例を図23に示す。整数形式信号Yは最長ビッ
ト数が例えば24ビットであり、差分信号Zはビット数Lが最長で23ビット、最小で1ビットの可変長信号である。
図21の単位処理列変換部95は、可変長の差分信号Zを、図17と同じ構成、図18と同じ処理手順で所定ビット数の文字列(単位処理情報列)に変換する(ステップS63)。整数形式信号Yの桁数nから、差分信号Zの有効桁数(23−n)ビットが得られるから、nは有効桁数情報ともいえる。マスクLZ方法の1文字(単位処理情報)のビット数Nは、L=23ビットとして図16B又は図16Cに示した文字列、あるいは1文字のビット数Nを例えば8ビットとして図16D又は図16Eに示した変換形式としてもよい。 図16Bに示した変換形式を適用すると、マスクデータM1(i)の上位のnビットがダミービット、すなわち有効桁ではないことを示すビットとなる。また、差分信号Zに対するマスクデータM1(i)の生成は、整数桁数nに基づき生成することができる。差分信号Zは、最小でも1ビットであるため、マスクデータは最低でも1ビットの“1”をもつことになる。差分信号Zの有効桁の最大長は、23ビットである。しかし、全ての差分信号Zで、24ビットになるように(例えば図16Eに示したように)1ビットのダミービット“0”を付加して文字列に変換すれば、文字サイズNを8ビットとした場合には、差分信号ZをN=8単位で変換できる。同様に差分信号Zに図15Eに示した変換形式を適用してもよい。
マスクLZ符号化部96は、単位処理列変換部95で変換した文字列を、符号化する(ステップS64)。このマスクLZ符号化の具体的数値例として、実施例A−3のマスクLZWを適用した場合を説明する。辞書部43(図5)には、8ビットで表現可能な全ての組合せをあらかじめ初期値として設定する。
辞書部43のインデックスに用いる情報量は、初期状態では、たとえば9ビットとする。文字又は文字列が、辞書部43にインデックスごとに登録される。9ビットで表現可能な最大文字列の数に達した場合には、インデックスの表現に用いるビット数を1ビットずつ増加させていくようにする。インデックスに用いるビット数の最大は、たとえば16ビットとする。
入力文字列C(i+k)および有効桁情報(マスクデータ)M(i+k)を順に入力し、辞書部43に登録された文字列の中で最長の一致文字列を探索する。この探索は、図7中のステップR10〜R6で行う。符号生成部49は、探索によって得られた最長に一致する文字列の辞書インデックスjmaxを、符号として出力する。入力された文字をC1(i+k)、その有効桁情報(マスクデータ)をM1(i+k)とし(kを0から次第に増加させる)、辞書部43に登録されたj番目(インデックス)の文字列の長さをKとし、その文字列をD(j)(k)[k:0≦k<K]で表わすとする。この場合、一致判定は、kが0からK−1までの全ての(k)について、C1(i+k)&M1(i+k)=D(j)(k)&M1(i+k)が成り立つような、最長のkを有する辞書部インデックスjmax を求める処理である。
符号を出力するごとに、直前に出力した符号と対応する文字列D(jmax’)(k)[k:0≦k<kmax’]に、今回出力した符号と対応する文字列の先頭の一文字D(jmax
)(0)をM1(i+0)でマスク処理したマスク先頭文字D(jmax )(0)&M1(i+0)を加えた文字列を新たに辞書登録する。このようにして次第に長い文字列が辞書部に登録され、より長い文字列との一致を探索することが可能となる。
整数形式信号Yは、整数符号化部97で圧縮符号化される(ステップS64)。この圧縮符号化は、整数値としての波形値の相関などを利用して、可逆圧縮法により効率よく圧縮符号化することができる。合成部98は、整数形式信号の符号Cと、マスクLZ符号化部96からの差分信号Zに対する符号化符号Cとを合成する。そして、合成部98は、合成された符号を、サンプルごとあるいはフレームごとに、符号化符号として出力する(ステップS65)。
復号化側
図21に対応する復号化装置の機能構成を図24に、その処理手順の例を図25にそれぞれ示す。分離部102は、入力端子101からの符号C及び符号Cの組を、符号Cと符号Cに分離する(ステップS71)。整数復号化部103は、符号Cを、整数形式信号Yに復号する(ステップS72)。浮動小数点化部104は、整数形式信号Yを、浮動小数点形式信号に変換する(ステップS73)。
符号Cは、マスクLZ復号化部105に入力される。桁計算部103aは、整数復号化部103で復号された整数形式信号Yの桁数nを計数し、桁数nを有効桁情報としてマスクLZ復号化部105に出力する(ステップS74)。また、点線で示したように、マスクデータ変換部106を整数復号化部103とマスクLZ復号化部105との間に備えても良い。この場合は、有効桁情報nはマスクデータ変換部106に入力される。マスクデータ変換部106は、(23−n)ビットを各サンプルの有効桁とし、文字(単位処理情報)ごとのマスクデータを生成して、マスクLZ復号化部105に出力する。ここで、整数形式信号Yの有効桁数nは、符号化時の処理と同じ方法で決定される。すなわち、2≦|Y|<2(n+1)となるようにnを決定する。
マスクLZ復号化部105は、図10及び図11に示した構成及び処理を行う復号化装置と同じである。マスクLZ復号化部105は、符号Cを、単位処理情報列にマスクLZ復号化する(ステップS75)。マスクLZ復号化部105で復号化された文字(単位処理情報)列は、サンプル列変換部107に入力される。サンプル列変換部107は、図19のサンプル列変換部84と同様の構成である。サンプル列変換部107は、マスクLZ復号化部105で復号化された文字列を、有効桁情報を用いてマスク処理する。マスク処理の後、ダミービットを除去して文字列を差分信号Zに変換する(ステップS76)。この差分信号Zは各サンプルとも0以外になり得る(23−n)ビットで構成される。組立部107aは、差分信号Zを、浮動小数点の23ビット仮数部信号に変換する(ステップS77)。合成部108は、仮数部とされた差分符号Zと、復号された整数形式信号Yの浮動小数点信号とを合成して、原浮動小数点信号サンプルを出力する(ステップS78)。
本実施例では、差分信号Zとして0以外の値となり得る可変長ビット列に対し、マスクLZ符号化、復号化を行った。しかし、23ビットの仮数部のままの差分信号Zに対し、マスクLZ符号化、復号化を行ってもよい。この場合は、サンプル長は固定語長となる。
[実施例4]
例えば、ユニバーサル符号化方法で符号化する場合に、入力サンプル列を共通の乗数で除算した結果を符号化すると圧縮率を高めることができる。本実施例は、この共通乗数で除算して符号化する方法に、この発明を適用したものである。共通乗数の除算を行うと圧縮率を向上できることをまず簡単に説明する。
入力信号サンプル列がx(1),x(2),x(3)であり、図26Aに示すように10進数表現でx(1)=250、x(2)=50、x(3)=350の場合、その2進数表現はそれぞれ、「0」と「1」が比較的ランダムに配列されている。
サンプルx(1),x(2),x(3)を共通の数A=1.5625で割算すると、その商信号y(1),y(2),y(3)は、図26Bに示すようにそれぞれ10進数表現でy(1)=160、y(2)=32、y(3)=224となる。
商信号y(1),y(2),y(3)の2進数表現は、それぞれ図26Cに示すように、「0」が連続して存在する部分が多い配列となる。従って、y(1),y(2),y(3)を、高い圧縮率で符号化できる。ただし、乗算Aも送出する必要がある。しかし、サ
ンプル数が多く、かつ、大部分が高圧縮が可能な商信号にできる場合は、全体としての圧縮符号量を大きく減少させることができる。
図27に、IEEE−754浮動小数点数のサンプル列に適用した例を示す。10進数表現の数値478.4,95.68,669.76の浮動小数点表現は、図27Aに示すように、仮数部の23ビットの「1」、「0」の配列は、どれもかなりランダムである。しかし、これらを共通乗数2.99で割算すると、その商信号は、図27Bに示すように、10進数表現が160,32,224にそれぞれなる。浮動小数点表現での仮数部の23ビットの「1」、「0」の配列では、「0」が非常に多くなる。従って、図27Aのまま圧縮符号化するよりも、著しく高い圧縮率で符号化することができる。
符号化側
図28を参照して実施例4の符号化側を説明する。
入力端子201からの入力信号X=(x(1),x(2),…)はディジタル化されたサンプル列であり、これが入力されると(ステップS81)、区間(フレーム)分割部202で所定数N個(例えば1024個)のサンプル列に分割され、図に示していないが一旦記憶部に記憶される(ステップS82)。サンプル列としては、音響信号の場合は、24ビットの量子化ビット数で量子化された整数サンプル列や32ビット単精度浮動小数点形式サンプル列などが考えられる。カラー画像信号の場合は各色情報要素に分解してラスタ走査したピクセル情報のディジタル化されたサンプル列である。
分割区間ごとの入力信号としてのサンプルx(i)(i=0,1,…,N−1)の集合は、1フレームごとに乗数推定部203に渡される。乗数推定部203は、全てのサンプルx(i)(i=0,1,…,N)に対して、共通の乗数Aを推定する(ステップS83)。例えば、全てのサンプルx(i)が共通の値99.0で割り切れる場合には、共通の乗数A=99.0とする。この共通の乗数Aを推定する方法としては、複数種類の方法が考えられる。例えば、近似共通ファクタ(ACF:Approximate Common Factor)の有理近似を用いる。ここでは、適切な乗数Aが与えられるものとする。
乗数推定部203で決定された乗数Aは、除算処理部204、乗算部205、乗数符号化部206に渡される。
除算処理部204では、乗数推定部203より渡された乗数Aと、N個のサンプルx(i)を入力とし、N個の商信号y(i)=x(i)/Aを算出する(ステップS84)。このとき、y(i)は整数形式、浮動小数点形式、固定小数点形式のいずれでもよい。その決められた表現形式に変換するときに、切り捨、切り上げ、四捨五入、nearest tie to
even(ニアレストタイツウイーブン)などの丸め処理を行ってもよい。
例えば、x(i)を倍精度の浮動小数点数、ここでは64ビットの浮動小数点数に変換して乗数Aで除算する。得られた倍精度の商を、最も近い単精度(32ビット)の浮動小数点数に丸めて商信号y(i)とする。
除算処理部204で得られたN個の商信号列Y=(y(0),y(1),…,y(N−1))は、商信号符号化部207と、この例では乗算部205に渡される。
乗算部205では、乗数推定部203から渡された乗数Aを、除算処理部204から渡されたN個の商信号列Yの各信号y(i)にそれぞれ乗算して、復元されたN個のサンプルx’(0),x’(1),…,x’(N−1)を得る(ステップS85)。
このとき、復元サンプルx’(i)は32ビットの浮動小数点表現で表現可能な値の範囲に丸められる。例えば、y(i)とAを掛け合わせた結果を倍精度(64ビット)の浮動小数点数として保持し、得られた倍精度の乗算結果を、最も近い単精度(32ビット)の浮動小数点数に丸めてx’(i)とする。得られたサンプル列X’=(x’(0),x
’(1),…,x’(N−1))は、誤差算出部208に渡される。
誤差算出部208は、入力信号から取り出したN個のサンプルx(0),x(1),…,x(N−1)それぞれから乗算部205から渡されたN個の復元サンプルx’(0),x’(1),…,x’(N−1)を差し引いて、N個の差分信号z(0),z(1),…,z(N−1)から成る差分信号列Z=(z(0),z(1),…,z(N−1))を得る(ステップS86)。この差分信号の算出は減算を用いる代わりに、x(i)とx’(i)の32ビットをそのままビット単位の排他的論理和演算(xor)を行ってもよい。要するにx(i)とx’(i)との差分演算を行えばよい。
この誤差算出部208からの差分信号列Zは、有効桁生成部209及び単位処理列変換部211に入力される。有効桁生成部209は、入力されたN個の差分信号z(0),z(1),…,z(N−1)中の最も上位側に“1”があるビット位置(桁)を求める。つまりフレーム内の最大ビット長を、有効桁情報として求める(ステップS87)。そして、この有効桁情報が単位処理列変換部211に入力される。単位処理列変換部211は、例えば図17に示した機能構成と同じであり、図18に示した処理手順により、差分信号列を、所定ビット数の文字列(単位処理情報列)に変換する。そして、単位処理列変換部211は、図15B〜図15G、図16B〜図16Eのいずれかに示す文字列(単位処理情報列)に変換された文字列と有効桁情報を、マスクLZ符号化部96に出力する(ステップS88)。
商信号符号化部207は、除算処理部204からの商信号列Yを、圧縮符号化して、商符号Cを出力する。圧縮符号化の方法としては、線形予測符号化方法などの波形値の相関を利用した高圧縮率の可逆圧縮符号化方法(例えば非特許文献3参照)やその他の非可逆の圧縮符号化法(MPEG4、AAC、TwinVQなど)がある。マスクLZ符号化部96は、単位処理列変換部211からの文字列を圧縮符号化し、単位処理符号Cとして出力する。このマスクLZ符号化部96では、先に述べたマスクLZ77、マスクLZ78、マスクLZWなどのマスクLZ符号化が行われる。有効桁符号化部212は、フレーム内の最長ビット長を表わす有効桁情報を、有効桁符号Cに可逆符号化する。乗数符号化部206は、乗数Aを可逆符号化し、乗数符号Cとして出力する(ステップS89)。合成部98は、商信号符号C、単位処理符号C、有効桁符号C、乗数符号Cをフレームごとに1組の符号Cとして出力する(ステップS90)。商信号の符号化は、ステップS84の後であればいつでもよく、乗数Aの符号化はステップS83の後であればいつでもよく、有効桁情報の符号化もステップS87の後であればよい。
復号化側
図30にこの実施4の復号化装置の機能構成例を、図31にその処理手順の例を示す。
分離部102は、端子221からの符号化データCを、商信号符号C、単位処理符号C、有効桁符号C、乗数符号Cに分離する(ステップS91)。商信号復号化部222は、商信号符号Cを、商信号符号化部207の符号化方法と対応する復号化方法によりN個の商信号y(0),y(1),…,y(N−1)に復号する(ステップS92)。乗数復号化部223は、乗数符号Cを復号する(ステップS93)。乗算部224は、復号化された乗数Aを復号されたN個の商信号y(0),y(1),…,y(N−1)にそれぞれ掛算する(ステップS94)。有効桁復号化部225は、有効桁符号Cを可逆復号し、有効桁情報(フレーム内で最長のビット長を示す情報)を生成する(ステップS95)。マスクLZ復号化部105は、前記の有効桁情報を用いて、単位処理符号Cを文字列に復号化する(ステップS96)。サンプル列変換部211は、マスクLZ復号化部105で復号化された文字列を、サンプル列の差分信号z(0),z(1),…,z(N−1)に変換する(ステップS97)。加算部226は、差分信号z(0),z(1),…,z(N−1)を、乗算部224の出力に対してそれぞれ加算する(ステップS
98)。フレーム連結部227は、加算部226からの出力信号x(0),x(1),…,x(N−1)を連結し、復号信号として出力する(ステップS99)。y(i)とAとの掛算信号Ay(i)を求める処理と、差分信号サンプルz(i)を求める処理はいずれを先に行ってもよい。有効桁符号Cや乗数符号Cは、前フレームと同一の場合は、そのことを示す少ないビット数の符号を出力することにしてもよい。商信号符号化部207として非可逆圧縮符号化が使用される場合は、図28中に破線で示すように、商信号符号Cを復号化部213で復号し、その復号信号を除算処理部204の出力信号y(i)の代わりに乗算部205に入力すればよい。
[実施例5]
共通乗数で除算して圧縮符号化する方法と、非特許文献4に示す浮動小数点信号の符号化方法に、この発明の方法を適用した実施例5を説明する。
符号化側
図32に機能構成例を、図33に処理手順の例をそれぞれ示す。
実施例4と同じように、区間分割部202は、入力信号x(i)を取込み(ステップS81)、フレーム分割して記憶部に記憶する(ステップS82)。乗数推定部203は、乗数Aを推定する(ステップS83)。除算処理部204は、乗数Aで入力信号x(i)を除算処理し、有効桁以内に丸める(ステップS84)。なお、乗数Aが1のとき、除算処理部204での除算処理を省略してもよい。この例では、判定処理部231内の判定部231aは、除算処理結果の単精度浮動小数点数が、無限大の値や、非正規化数、数値として表すことができないNaNという特殊数値であるか否かを判定する(ステップS110)。以下、無限大の値、非正規化数、数値として表すことができないNaNを総称して「特殊数値」いう。ステップS110の判定が特殊数値であれば、スイッチ231bが除算処理部204側から0信号源231c側に切替えられ、0信号が整数化部93へ供給される(ステップS111)。ステップS110の判定が特殊数値でなければ、ステップS84の除算処理結果が整数化部93へ入力される。
整数化部93は、判定処理部231からの入力信号から整数形式信号y(i)を生成する(ステップS112)。浮動小数点化部232は、整数形式信号y(i)を浮動小数点信号に変換する(ステップS113)。乗数部205は、この浮動小数点信号に乗数Aを乗算し、掛算結果を丸め処理する(ステップS114)。ここで、特殊数値であると判定される場合や、y(i)=0で乗算結果が0となる場合には、入力信号(サンプル)x(i)の32ビットが誤差算出部208をそのまま通過して 単位処理列変換部95に入力される。なお、乗数Aが1のとき、ステップS114の乗算処理を省略してもよい。また、ステップS113とS114を破線で囲んだように、ステップS113とステップS114とを、整数信号y(i)に浮動小数点の乗数Aを乗算することで一度に行ってもよい。
一方、乗数判定部233は、乗数Aが1であるか否かを判定する(ステップS115)。A=1であれば、スイッチ234は、差分生成部94に接続され、入力信号x(i)が差分生成部94に入力される。整数化部93の桁数計算部93aは、整数形式信号y(i)の桁数nを計数し、有効桁情報を生成する。この有効桁情報nも差分生成部94に入力される(ステップS116)。差分生成部94は、実施例3の符号化装置と同じように、入力信号(サンプル)x(i)の仮数部の下位(23−n)ビットからなる差分信号z(i)を生成する(ステップS117)。なお、差分信号z(i)は可変長サンプルである。ここで、x(i)が特殊数値の場合や、y(i)=0となる場合には、入力信号(サンプル)x(i)の32ビットが単位処理列変換部95に入力される。ステップS115で、乗数Aが1でなければ、スイッチ234は誤差算出部208に接続される。誤差算出部208は、入力信号x(i)と乗算部205の出力信号との差分信号z(i)を生成する(ステップS118)。
単位処理列変換部95は、誤差算出部208からの差分信号z(i)または差分生成部94からの差分信号z(i)を受け取り、単位処理情報列に変換する(ステップS63)。整数符号化部97は、整数形式信号y(i)を整数符号Cに符号化する。マスクLZ符号化部96は、単位処理情報列を単位処理符号CにマスクLZ符号化する。乗数符号化部206は、乗数Aを乗数符号Cに符号化する(ステップS119)。合成部98は、符号C,C,Cを合成し、フレームごとに出力する(ステップS65)。
判定部231aでx(i)が特殊数値であると判定されると、y(i)=0とされる。したがって、その入力信号(サンプル)x(i)の32ビットは、誤差算出部208を通過して単位処理列変換部95に入力される。乗数判定部233でA=1でないと判定されると、誤差算出部208からその入力信号(サンプル)x(i)の仮数部の23ビットが単位処理列変換部95に入力され、A=1と判定されると、差分生成部94からその入力信号(サンプル)x(i)の仮数部中の下位(23−n)ビットが単位処理列変換部95に入力される。単位処理列変換部95は、図15A〜図15Gで説明したように、このような可変長サンプルを単位処理情報列に変換することができる。また最大サンプル長が32ビットとなる場合も、同様に単位処理情報列に変換することができる。
ここで、図35のように、単位処理列変換部95の直前に、最上位ビット桁判定部235を用いることとしても良い。最上位ビット桁判定部235は、当該処理区間の入力サンプル列(差分信号z(i)もしくは差分生成部94よりの差分信号z(i))の0でない最上位ビット桁を判定し、単位処理列変換部95、および、最上位桁符号化部237に最上位桁(ビット)情報LS maxとして出力する。最上位桁符号化部237では、0でない最上位桁(ビット)の情報を符号化して合成部98に出力する。
単位処理列変換部95は、信号の最上位桁(ビット)情報LS maxを用いて、入力された信号(差分信号z(i)もしくは差分生成部94よりの差分信号z(i))を、単位処理列に変換する。
また、処理区間内で、整数形式信号y(i)の値が0のサンプルと0でないサンプルを分け、それぞれを連続してマスクLZ符号化部に入力されるようにサンプルの順序を整列するようにしても良い。例えば図35Bに示すように、処理する方法がある。差分生成部94もしくは誤差計算部208からの処理区間(フレーム)の最初の入力サンプルを選択する(ステップS131)。そのサンプルが、y(i)が0となるサンプルか、それ以外のサンプルかを判定する(ステップS132)。ここで、y(i)が0となるサンプルとは、符号化するビット有効桁が32ビットとなるサンプルに相当する。また、それ以外のサンプルとは、符号化するビット有効桁が32ビット未満のサンプルに相当する。ステップS132がYesであれば、単位処理情報列に変換する(ステップS133)。次に、処理区間の最終サンプルに対するステップS132とS133を行ったかを判定する(ステップS134)。最終サンプルに対する処理が終わっていなければ、次のサンプルを選択してステップS132に戻る(ステップS135)。ステップS132で、y(i)が0でないサンプルと判定されると、ステップS134に移る。ステップS134で、最終サンプルに対する処理が終了したと判定されると、その区間の未処理サンプル、つまりy(i)が0とならない差分信号をまとめて単位処理情報列に変換する(ステップS136)。
最上位桁(ビット)情報は、符号化するビット有効桁が32ビットのサンプル集合と、32ビット未満のサンプル集合に対してそれぞれ判定するようにしてもよい。
復号化側
図34にこの実施例5の機能構成例を示す。その処理手順は図31に示したものとほぼ同様である。ただし、商信号符号Cは整数符号Cと対応している。
分離部102は、入力された符号Cを整数符号C、単位処理符号C、乗数符号C
に分離する。整数復号化部103は、整数符号Cを整数形式信号y(i)に復号化する。整数復号化部103から、整数形式信号y(i)の桁数n及びy(i)=0の場合にはそのことを示す情報が、有効桁情報として、マスクデータ変換部106に入力される。マスクデータ変換部106は、有効桁情報を、単位処理情報ごとのマスクデータを変換する。つまりA=1の場合、各サンプルについて(23−n)ビットと対応するマスクデータが、またy(i)=0の場合はそのサンプルについて32ビットと対応するマスクデータがマスクLZ復号化部105に入力される。マスクLZ復号化部105は、単位処理情報CをマスクLZ復号化して、単位処理情報列を生成する。乗数復号化部223は、乗数符号Cを乗数Aに復号化する。乗数Aが1でない場合は、マスクデータ生成部236は、仮数部の23ビットと対応するマスクデータを生成し、マスクLZ復号化部105に入力する。
浮動小数点化部104は、復号化された整数形式信号y(i)を浮動小数点信号に変換する。乗算部224は、浮動小数点化部104の出力に乗数Aを乗算する。サンプル列変換部107は、マスクLZ復号化部105からの単位処理情報列を、サンプル列つまり差分信号z(i)に変換する。加算部226は、差分信号z(i)を乗算部224の出力に加算し、その出力がフレーム連結部227に入力される。なお、(23−n)ビットのサンプルの場合、サンプル列変換部107では、図24中の対応する部分と同様に、その上位にn個の0が連結されて23ビットの仮数部に組立てられる。復号化整数形式信号y(i)が0の場合は、サンプル列変換部107から32ビットの浮動小数点信号(サンプル)が出力され、これがフレーム連結部227に入力されることになる。
なお、図32に破線で示すように、判定処理部231を区間分割部202の直後に挿入してもよい。特殊数値は例外的なものであり、特殊数値を含まない浮動小数点信号に対しては、図32中の破線238のように、除算処理部204の出力側を整数化部93に直接接続してもよい。
[変形実施
ここで、マスクLZ符号化部の符号化結果のサイズが、単位処理列変換部95に入力されたサイズよりも大きい場合には、マスクLZ符号化を行わないことを示す情報とともに元のデータをそのまま合成部98に出力することも出来る。
この場合には、区間分割部で分割された各区間に対してマスクLZを用いた場合と、用いない場合のデータのサイズを比較し、サイズが小さくなるほうを選択符号と共に出力する。
各区間の符号化を開始する際に、マスクLZ符号化部内の内部状態を保存しておく。圧縮後にサイズが小さくならない場合には、次の区間のマスクLZ符号化処理を行う前にマスクLZ符号化部の内部状態を保存しておいた状態に復帰する。これによって符号化側と復号化側の内部状態の同期を保つことが出来る。
次に、サンプルごとに有効桁が異なる入力信号の符号化に適用した実施例を説明する。
たとえば、音響信号の符号化では、聴覚心理モデル等を用いて、人間の聴覚特性から歪の知覚されにくい部分には大きな歪を許すような符号化方式がある。この許容される歪の量をもとに、値の有効桁情報が与えられるものとする。たとえば、図16Aに示したように、入力されるサンプル列の語長は一定で、たとえば31ビットとする。図17中に示した単位処理変換部79で、マスクLZ符号化部78での処理に適した形になるように語長割当処理し、有効桁情報を元にマスクデータを設定する。
ここでは、図16Eに示した文字列変換を例にとり、1文字の語長を8ビットとした場合とする。図16Eに示したように、入力された信号列は、有効桁の情報を元に、LSB側に揃えられ、マスクLZ方法の処理単位である8ビットごとに切り取って文字列として
並べられる。この際、入力信号列の語長が1文字の語長の整数倍(今の例では8の倍数)になっていない場合は、8ビットの倍数になるように、MSB側に値“0”のダミービットが追加される。
また、有効桁を表すマスクデータが作成される。マスクデータは、有効ビット部は“1”、歪を許すビット部およびダミービット部は“0”となるように設定する。入力信号から切り出されたi番目の文字をC1(i)、対応するマスクデータをM1(i)とすれば、この文字列、マスクデータ列を入力として図5に示した実施例1(実施例1の変形を含む)の圧縮符号化方法を適用することが可能となる。
以下、実施例A−1(マスク−LZ77)を適用した場合の具体例を示す。
先読みを256文字(8ビット)、辞書部43(図14A)のバッファサイズを65536文字(16ビット)とする。
これによって位置情報(インデックス)は、16ビット、最大一致長は8ビットで表されることとなる。なお、これらは一例であり、既知の方法を用いてさらに効率的に処理することも可能である。たとえば、この発明の有効性を損なうことなくLZ77のかわりにLZSSを適用することもできる。
先読みバッファ65(図14A)中の入力文字列C1(i)、および有効桁情報(マスクデータ)M1(i)と、辞書部43(スライドバッファ)に登録された文字列の中で、最長の一致文字列を探索する。探索によって得られた辞書中の最長一致文字列に対応するインデックスと、一致長、一致しなかった先読みバッファ中の次の1文字C1とを、符号として出力する。
先読みバッファ中の文字列をC1(i+k)、有効桁情報をM1(i+k)[k=0,1,2,・・・]とし、辞書部(スライドバッファ)に登録されたj番目の位置から始まる文字列をD(j)(k)、有効桁をM(j)(k)で表し、辞書のj番目の位置から始まる文字列と、先読みバッファ内の文字列の一致長をkmaxとすれば、一致判定では、k=0からk=kmax−1までの全てのkについて、C1(i+k)&M1(i+k)=D(j)(k)&M(j)(k)が成り立つような、最長のkmaxを有する辞書中の位置jを求めることになる。
実施例A−1の代わりに、実施例A−4を用いた場合には、k=0からk=kmax−1までの全てのkについて、C1(i+k)&M1(i+k)&M(j)(k)=D(j)(k)&M(j)(k)&M1(i+k)が成り立つような、最長のkmaxを有する辞書中の要素jを求めることとなる。
次に、符号を出力するごとに、一致した文字列と続く不一致1文字を先読みバッファから削除し、一致文字と続く不一致1文字を辞書部43に登録する。辞書部43中の最も古い文字列は破棄される。
実施例A−1において、一致した文字列C1(i+k)とM1(i+k)[k:0≦k<kmax]を辞書部43(スライドバッファ)に登録する場合に、非可逆な例では、一致した先読みバッファにあるkmax文字のC1(i+k),M1(i+k)をコピーするのではなく、一致して符号として出力したD(jmax)(k)と、C1(i+k)の有効桁情報M1(i+k)とを組にして辞書部43に追加する。次いで、最長一致した文字列の次の1文字C1(i+k)(=C1)とM1(i+k)(=M1)を先読みバッファ65に追加する。つまり図14A中に破線で示すように、辞書部43にマスクデータM(i)が格納されるマスク部43cも設けられる。
先読みバッファ65には、削除されたのと同数の新たな入力文字列と、対応する有効桁情報が読み込まれる。
復号化処理を以下に示す。
復号化処理は、符号化処理で行ったそれぞれの処理について、対応する逆の操作を行う。
図8で既に説明したように、復号化装置では符号列と、有効桁情報を入力として受取る。有効桁情報は、マスクデータ生成部151によってマスクデータ(M1(i)列)に変換される。
こうして得られた符号と、有効桁マスクデータが、マスクLZ復号化装置に入力される。
マスクLZ復号化装置は、符号入力と、有効桁情報(マスクデータ)を用いて元の文字列を復元する。こうして得られた文字列は図19中のサンプル列変換部84により元の語長31ビットの信号列に復元される。
上述では入力文字(単位処理情報)は数値情報を前提とした。従って有効桁は一般に上位桁程重要なものである。有効でない、あるいは無視してもよい桁(ビット)はLSB側である。またダミービットも、LSB側に片寄せした場合も、そのサンプルの有効桁の最上位ビット以上で、1文字サイズを満たすに必要な連続したものとなった。一方、例えば一般の文字においても、その構成ビットのある特定ビットの1〜複数が変化しても情報列の全体には、ほとんど影響を与えない場合がある。この場合は、有効桁やダミービットは連続しない。1文字のビット列の途中のビット(桁)を有効でない桁としてこの発明を適用することができる。この場合、文字列をサンプル列に変換する際に、図19中に破線で示すように文字ごとの有効桁情報から、マスクデータ生成部85でマスクデータを生成する。そして、選択部86は、単位ビット結合部87に入力する文字列中の各文字から、対応するマスクデータの“1”の桁(ビット)のビットのみを選択すればよい。有効桁情報はマスクLZ復号化部81又は外部から与えられる。
ハッシュを用いた高速な探索処理
図6のステップS4の辞書探索処理にハッシュを用いて高速化する具体例を説明する。図7に示した方法では、辞書インデックスjを0から最大値まで変化させ、辞書に登録された全ての文字列を入力文字列と比較する。マスク処理をしない従来のLZ符号化方法では、ハッシュ関数処理を用いて探索を高速化する方法が知られている。しかし、マスクLZでは、同一の辞書登録文字が、複数の入力文字と一致するかどうかを、マスクに依存して探索する必要があるため、既知のハッシュ関数処理手法をそのまま適用することは出来ない。
ここでは、辞書部に文字列を登録する際に、有効桁を考慮したハッシュ関数処理を用いて探索を高速化する方法をマスクLZWに適用した例を示す。
入力文字列が辞書部に登録された内容と一致した文字列を、D(j)(k)[k:0≦k<K]とし、続く不一致文字C1(i+K)を連結した文字列を新たに辞書部のインデックスJ+1に登録する場合を考える。既知のハッシュ関数処理法では、例えばjとC1(i+K)とをキーとしてハッシュ値を算出し、辞書部内のハッシュテーブルの対応する場所にJ登録する。
これに対して、この発明では、例えば図36に示すように辞書部361内にハッシュテーブル362を互いに異なるマスクの数だけ用意する。そして、ハッシュ関数演算部363は、jとC1(i+K)&Mとをキーとするハッシュ値を算出する。切替部364でマスクデータMに対応したハッシュテーブルに切替え、文字列を登録する。ここで、Mはマスクビットが互いに異なるマスクデータで、1文字の処理単位が8ビットの場合で、LSB側に揃えて探索する場合にはMは00000001から11111111までの8種類である。
探索を行う場合には、M(i+k)で1が立っている数をキーとしてハッシュテーブル
を1つ選択し、選択されたハッシュテーブル362をjとC1(i+K)&M(i+k)とをキーとして探索する。
有効桁情報としては、例えば有効桁の最上位ビットと最下位ビットの2つの位置情報を用いてもよい。この場合は例えば比較すべき2つの文字に対し、その一方のビット位置と対応する各ビットが一致するかを調べ、一致すれば次の各ビットが一致するかを調べる。全部一致であればその2文字は一致しているとし、途中で不一致が生じれば、その2文字は不一致とすればよい。
上述した符号化装置、復号化装置は、それぞれコンピュータにより機能させることもできる。この場合はコンピュータに、目的とする装置(各種実施例で図に示した機能構成を持つ装置)として機能させるためのプログラム、又はその処理手順(各実施例で示したもの)の各過程をコンピュータに実行させるためのプログラムを、CD−ROM、磁気ディスク、半導体記録装置等の記録媒体から、あるいは通信回線を介してそのコンピュータ内にダウンロードし、そのプログラムを実行させればよい。
[本発明により可変長サンプルを高い圧縮率で符号化できる理由]
以下に、なぜ本発明によれば、音声や音楽などのオーディオ信号、画像信号、各種計測信号、線形予測誤差信号などのディジタル値のサンプル列を、高い圧縮率で符号化できる単位処理情報列に変換できるかを説明する。図37Aに、各サンプルのビット数が異なるサンプル列の例(または、有効ビット数が異なるサンプル列の有効ビット部分の例)を示す。このサンプル列を4ビットごとの文字列に変換する場合で検討する。図37Bに、単純に4ビットごとに1文字として文字列に変換した例(従来の方法)を示す。図37Cに、ダミービットを使い、異なるサンプルのビットが1つの文字に含まれないように文字列に変換した例(本発明の方法)を示す。
まず、本発明の文字列への変換方法によって、高い圧縮率での圧縮符号化が期待できることを示す。
ビット数が可変のサンプル列を文字列(この例では4ビットで1文字)に変換する場合、単純に入力されたビット列を4ビットごとに区切ると、図37Bに示した文字列(y(1),・・・)となる。このように区切ると、例えばy(5)は、サンプルx(1)の最後(LSB側)の2ビットとサンプルx(2)の最初(MSB側)の2ビットから構成される。
一方、一般的にオーディオ信号、その他の波形信号などの時系列信号をサンプリングして得られたディジタルのサンプル列は、各サンプル間の相関が大きく、各々のサンプルやサンプルの塊が類似していることが多い。ところが、上記のように異なるサンプルのLSB側とMSB側のビットから構成される文字を含む文字列に変換してしまうと、各々のサンプルやサンプルの塊が持つ類似性を変換後の文字列にも持たせることができない。したがって、図37Bに示したような単純な変換では、高い圧縮率での符号化が期待できない文字列となってしまう。
そこで、本発明では、図37Cに示したように、サンプルをまたがった文字列への変換を行わない。本発明では、各サンプルが単位ビット数(この例では4ビット)の整数倍となるまでダミービットを付加する。そして、単位ビットごとに区切ることで文字列に変換する。このように可変長のサンプル列を一定長の文字列に変換すれば、各々のサンプルやサンプルの塊が持つ類似性を変換後の文字列にも持たせることができる。したがって、時系列信号に基づくディジタルサンプル列を、高い圧縮率で圧縮符号化できる。
次に、本発明のマスク処理によって、圧縮率が向上することを示す。
サンプルごとに有効桁が異なる時系列信号のサンプル列の場合、互いのサンプルの有効
桁は異なるが、同一の部分を含んでいるサンプルは多い。しかし、従来の完全に一致する文字を検索する符号化の方法を、有効桁部分のみやダミービットを含んだ文字に対して用いようとすると、完全に一致する文字列が見つからない場合が多い。図37Bの文字列では、連続する複数の文字同士で一致する文字列は存在しない。本発明では、図37Cの文字列のy(7),y(8),y(9)を過去の文字列と比較する場合、y(9)の後の3ビットにはマスク処理が行われる。つまり、y(9)の後の3ビット分は比較されない(異なっていても良い)。したがって、y(7),y(8),y(9)とy(3),y(4),y(5)とは一致すると判断される。このように、ダミービットとマスク処理とを用いることで、有効桁は異なるが同一の部分が含まれる文字列を同一のものとすることができるため、過去に発生した文字列と同じ文字列が発生する確率が高くなる。したがって、時系列信号に基づくディジタルサンプル列の圧縮効率を高めることができる。
[実験例]
本発明の効果を示すために、図38Aと図38Bに、浮動小数点信号の圧縮率を比較した実験の結果を示す。入力信号は、信号1(96kHzサンプリング、量子化ビット数24ビット)、信号2(96kHzサンプリング、量子化ビット数24ビット)、信号3(48kHzサンプリング、量子化ビット数24ビット)の浮動小数点信号である。本発明の方法では、図37Cに示すように、図15Eに相当する整列を行い、8ビットずつを1文字として実施例3の方法で圧縮した。従来法では、実施例3で誤差信号Zを符号化する際に、本発明の代わりに図37Bに示すように有効なビットを直列につないで8ビットずつを1文字として従来のLZ符号化で符号化した。なお、元の入力信号のサイズをx、圧縮後のサイズをyとすると、従来の圧縮率は、(y/x)×100としている。図38A、図38Bから、本発明により高い圧縮率が得られることが分かる。
図1Aは従来のLZ77符号化装置の機能構成を示すブロック図。図1Bはその復号化装置の機能構成を示すブロック図。図1Cは辞書部及び先読みバッファが連続したスライドバッファで構成されている状態を示す図。 図2Aは従来のLZ78符号化装置の機能構成を示すブロック図。図2Bはその復号化装置の機能構成を示すブロック図。 図3Aは従来のLZW符号化装置の機能構成を示すブロック図。図3Bはその復号化装置の機能構成を示すブロック図。 IEEE−754浮動小数点列を示す図。 実施例1(実施例A−3)の符号化装置の機能構成例を示すブロック図。 実施例1(実施例A−3)の符号化装置の処理手順の例を示す流れ図。 図6中のステップS4の具体的処理手順の例を示す流れ図。 実施例1(実施例A−3)のマスクLZ77及びマスクLZ78の復号化装置の機能構成例を示すブロック図。 実施例1(実施例A−3)のマスクLZ77及びマスクLZ78の復号化装置の処理手順の例を示す流れ図。 実施例1(実施例A−3)のマスクLZWの復号化装置の機能構成例を示すブロック図。 実施例1(実施例A−3)のマスクLZWの復号化装置の処理手順の例を示す流れ図。 図12Aは実施例A−1の処理手順の一部を示す流れ図。図12Bは実施例A−1の評価部42cの機能構成例を示すブロック図。 図13Aは実施例A−4のマスクLZWにおける辞書部43及びマスク計算部48′の例を示すブロック図。図13Bは実施例A−4のマスクLZWにおける符号生成部49の一部の具体的機能構成例を示すブロック図。 図14Aは、実施例A−1乃至A−3におけるマスクLZ77の辞書部43と先読みバッファ65及び有効桁情報バッファとの関係例を示す図。図14Bは、実施例A−4及びA−5におけるマスクLZ77の辞書部と先読みバッファと有効桁情報バッファとの関係例を示す図。 図15Aは、可変長サンプルごとにビット数が異なる場合の入力サンプル列の例を示す図。図15Bは、各入力サンプルをLSB側に整列し、単位処理情報へ変換した例を示す図。図15Cは、各入力サンプルをMSB側に整列し、単位処理情報へ変換した例を示す図。図15Dは、各入力サンプルをLSB側に整列し、単位処理情報のビット数Nずつに切り出した例を示す図。図15Eは、各入力サンプルをMSB側に整列し、単位処理情報のビット数Nずつに切り出した例を示す図。図15Fは、各入力サンプルをLSB側に整列し、有効桁よりもMSB側にはダミービットを付加してビット数を拡張する例を示す図。図15Gは、各入力サンプルをMSB側に整列し、有効桁よりもLSB側にはダミービットを付加してビット数を拡張する例を示す図。 図16Aは、各入力サンプルが一定の大きなビット長であり、且つ、各サンプルの有効桁数がビット長に比べて短い場合の、マスクLZ方法の単位処理情報の変換例を示す図。図16Bは、サンプル内の有効なビットをLSB側に揃えて、ダミービットのマスクを設定する例を示す図。図16Cは、サンプル内の有効なビットをMSB側に揃えて、誤差を許容する部分にダミービットのマスクを設定する例を示す図。図16Dは、各入力サンプルの有効なビットをLSB側に揃え、サンプル語長よりも短いビット数の単位処理情報のビット数ごとに、サンプルから有効なビットの部分を切り出す方法を示す図。図16Eは、各入力サンプルの有効なビットをMSB側に揃え、サンプル語長よりも短いビット数の単位処理情報のビット数ごとに、サンプルから有効なビットの部分を切り出す方法を示す図。 実施例2の符号化装置の機能構成例を示すブロック図。 実施例2の単位処理列変換部79の処理手順の例を示す流れ図。 実施例2の復号化装置の機能構成例を示すブロック図。 実施例2のサンプル列変換部84の処理手順の例を示す流れ図。 実施例3の符号化装置の機能構成例を示すブロック図。 実施例3の符号化装置の処理手順の例を示す流れ図。 各種サンプルの整数形式信号とその差分信号の関係例を示す図。 実施例3の復号化装置の機能構成例を示すブロック図。 実施例3の復号化装置の処理手順の例を示す流れ図。 複数の二進表現数に対し共通の乗数で割算することにより符号化効率をあげるように変換する具体的数値例を示す図。 複数の浮動小数点数に対し共通の乗数で割算することにより符号化効率をあげるように変換する具体的数値例を示す図。 実施例4の符号化装置の機能構成例を示すブロック図。 実施例4の符号化装置の処理手順の例を示す流れ図。 実施例4の復号化装置の機能構成例を示すブロック図。 実施例4の復号化装置の処理手順の例を示す流れ図。 実施例5の符号化装置の機能構成例を示すブロック図。 実施例5の符号化装置の処理手順の例を示す流れ図。 実施例5の復号化装置の機能構成例を示すブロック図。 図35Aは、単位処理情報列の符号化部を変形した部分の機能構成例を示すブロック図。図35Bは、単位処理列変換の一部を変形した手順例を示す流れ図。 最長一致文字探索にハッシュ関数処理を適用した機能構成の一部を示すブロック図。 図37Aは、各サンプルのビット数が異なるサンプル列の例を示す図。図37Bは、単純に4ビットごとに1文字として文字列に変換した例を示す図。図37Cは、ダミービットを使い、サンプル間の相関を維持して文字列に変換した例を示す図。 図38Aは、浮動小数点信号を従来法と本発明の方法で圧縮した場合の圧縮結果を示す図。図38Bは、浮動小数点信号の圧縮率を比較する図。

Claims (23)

  1. 一定ビット数の処理単位で表現された情報(以下、「単位処理情報」という。)の列に対応する、辞書部に登録された単位処理情報(以下、「辞書情報」という。)の列を探索して入力情報を圧縮符号化する情報圧縮符号化方法において
    前記入力情報から生成された単位処理情報列中の、入力情報の有効な桁に対応する有効なビットを、辞書情報の対応するビットと比較し、前記有効なビットと対応するビットとの全てが一致すれば、前記単位処理情報と辞書情報とが一致していると判定する一致判定ステップと
    前記入力情報から生成された単位処理情報の列と一致していると判断できる辞書情報の列のうち最長の辞書情報の列を探索し、当該最長の辞書情報の列のインデックスを求める探索ステップと
    前記インデックスまたは前記インデックスに対応する符号を出力する出力ステップと
    を有する情報圧縮符号化方法。
  2. 請求項1記載の情報圧縮符号化方法において、
    前記インデックスが示す単位処理情報の列を含む単位処理情報の列を、辞書部に登録する辞書登録ステップ
    も有する情報圧縮符号化方法。
  3. 請求項2記載の情報圧縮符号化方法において、
    前記辞書登録ステップでは、登録された単位処理情報の量が、所定の量よりも多くなった場合には、最も前に登録された単位処理情報から削除する
    ことを特徴とする情報圧縮符号化方法。
  4. 請求項1記載の情報圧縮符号化方法において、
    入力情報がサンプル列であり、
    サンプルごとに、サンプル中の有効な桁を構成するビット群を前記処理単位ごとに分割して前記単位処理情報を生成する単位処理情報生成ステップも有し、
    前記単位処理情報生成ステップでは、分割によってサンプルのビットが余った場合もしくはサンプルのビットが処理単位に満たない場合には、余ったビットもしくは処理単位に満たないサンプルのビットにダミービットを追加して単位処理情報とし、追加したダミービット部分は有効なビットではないとする
    ことを特徴とする情報圧縮符号化方法。
  5. 請求項4記載の情報圧縮符号化方法において、
    入力信号が浮動小数点形式であり、
    入力信号を整数形式信号と差分信号とに分離する分離ステップと、
    前記整数形式信号を圧縮符号化する整数形式符号化ステップ
    も有し、
    前記差分信号の列をサンプル列で構成される入力情報として、前記単位処理情報生成ステップ、前記一致判定ステップ、および前記探索ステップを行い、
    前記出力ステップでは、前記インデックスに加えて、前記整数形式符号化ステップで圧縮符号化された符号も出力する
    ことを特徴とする情報圧縮符号化方法。
  6. 請求項5記載の情報圧縮符号化方法において、
    前記分離ステップで分離された前記差分信号が、前記整数形式信号が0の場合の差分信号であるかを判定するステップと、
    前記判定で整数形式信号が0の場合の差分信号であると判定されると、当該差分信号により、第1の差分信号列を生成するステップと、
    前記判定で整数形式信号が0でない場合の差分信号であると判定されると、当該差分信号により、第2の差分信号列を生成するステップ
    も有し、
    前記第1の差分信号列と第2の差分信号列とを連結したものを前記サンプル列で構成される入力情報とする
    ことを特徴とする情報圧縮符号化方法。
  7. 請求項4記載の情報圧縮符号化方法において、
    所定の複数の入力信号により構成される分割区間ごとの入力信号列を、共通の乗数、その乗数で各入力信号を除算処理した商信号の列、その残りの差分信号の列とに分解する分解ステップと、
    前記商信号の列を圧縮符号化して出力する商信号符号化ステップと、
    前記乗数を符号化して出力する乗数符号化ステップ
    も有し、
    前記差分信号の列をサンプル列で構成される入力情報として、前記単位処理情報生成ステップ、前記一致判定ステップ、前記探索ステップ、および前記出力ステップを行う
    ことを特徴とする情報圧縮符号化方法。
  8. 請求項7記載の情報圧縮符号化方法において、
    前記分解ステップで得られた前記差分信号の列を構成する差分信号が、前記商信号が0の場合の差分信号であるかを判定するステップと、
    前記判定で商信号が0の場合の差分信号であると判定されると、当該差分信号により、第1の差分信号列を生成するステップと、
    前記判定で商信号が0でない場合の差分信号であると判定されると、当該差分信号により、第2の差分信号列を生成するステップ
    も有し、
    前記第1の差分信号列と第2の差分信号列とを連結したものを前記サンプル列で構成される入力情報とする
    ことを特徴とする情報圧縮符号化方法。
  9. 請求項4記載の情報圧縮符号化方法において、
    所定の複数の浮動小数点入力信号により構成される分割区間ごとの浮動小数点入力信号列を、共通の乗数、その乗数で各浮動小数点入力信号を除算処理した信号の列とに分解する分解ステップと、
    前記除算処理した信号を、整数形式信号に変換する整数化ステップと、
    前記整数形式信号に前記乗数を乗算した浮動小数点信号を求める乗算ステップと、
    前記乗算ステップで得られた浮動小数点信号と前記浮動小数点入力信号との差分信号を求める差分信号算出ステップと、
    前記整数形式信号の列を圧縮符号化して出力する整数形式信号符号化ステップと、
    前記乗数を符号化して出力する乗数符号化ステップ
    も有し、
    前記差分信号の仮数部の列をサンプル列で構成される入力情報として、前記単位処理情報生成ステップ、前記一致判定ステップ、前記探索ステップ、および前記出力ステップを行う
    ことを特徴とする情報圧縮符号化方法。
  10. 請求項4記載の情報圧縮符号化方法において、
    所定の複数の浮動小数点入力信号により構成される分割区間ごとの浮動小数点入力信号列を、共通の乗数、その乗数で各浮動小数点入力信号を除算処理した信号の列とに分解する分解ステップと、
    前記除算処理した信号を、整数形式信号に変換する整数化ステップと、
    前記整数形式信号に前記乗数を乗算した浮動小数点信号を求める乗算ステップと、
    前記整数形式信号の列を圧縮符号化して出力する整数形式信号符号化ステップと、
    前記乗数を符号化して出力する乗数符号化ステップ
    も有し、
    前記乗数が1であり、かつ前記整数形式信号が0でない場合は、
    前記整数形式信号の有効桁数nにより定まる前記浮動小数点入力信号の仮数部の下位(前記浮動小数点入力信号の仮数部の桁数−n)ビットを有効なビットとして含むビット群の列を、サンプル列で構成される入力情報として、前記単位処理情報生成ステップ、前記一致判定ステップ、前記探索ステップ、および前記出力ステップを行い、
    前記乗数が1ではなく、かつ前記整数形式信号が0でない場合は、
    前記乗算ステップで得られた乗算済の浮動小数点信号と前記浮動小数点入力信号との差分信号を求める差分信号算出ステップも有し、
    前記差分信号算出ステップで得た差分信号の仮数部の列をサンプル列で構成される入力信号として、前記単位処理情報生成ステップ、前記一致判定ステップ、前記探索ステップ、および前記出力ステップを行い、
    前記整数形式信号が0の場合は、
    前記浮動小数点入力信号の列を、サンプル列で構成される入力信号として、前記単位処理情報生成ステップ、前記一致判定ステップ、前記探索ステップ、および前記出力ステップを行う
    ことを特徴とする情報圧縮符号化方法。
  11. 一定ビット数の処理単位で表現された情報(以下、「単位処理情報」という。)の列が登録されている辞書部のインデックスの、いずれか1つのインデックスを含む入力符号を復号化して、復号情報を得る情報復号化方法において、
    前記入力符号に含まれる情報から、前記単位処理情報ごとの有効なビットを示す情報(以下、「有効桁情報」という。)を求める有効桁情報取得ステップと、
    前記入力符号に含まれるインデックスから、辞書部に登録されている単位処理情報の列を取得する単位処理情報列取得ステップと、
    前記有効桁情報を用いて、前記取得された単位処理情報列中の有効部分を特定して復号情報を得るマスク処理ステップと
    を有する情報復号化方法。
  12. 一定ビット数の処理単位で表現された情報(以下、「単位処理情報」という。)の列が登録されている辞書部のインデックスの、いずれか1つのインデックスを含む入力符号を復号化して、復号情報を得る情報復号化方法において、
    前記入力符号に含まれる情報から、前記単位処理情報ごとの有効なビットを示す情報(以下、「有効桁情報」という。)を求める有効桁情報取得ステップと、
    前記入力符号に含まれるインデックスから、辞書部に登録されている単位処理情報の列を取得する単位処理情報列取得ステップと、
    前記有効桁情報を用いて、前記取得された1つまたは複数の単位処理情報列に含まれる1つまたは複数の単位処理情報の有効なビットを結合したものを復号信号とする結合ステップと
    を有する情報復号化方法。
  13. 請求項12記載の情報復号化方法において、
    入力符号を整数符号と差分符号とに分離する分離ステップと、
    前記整数符号を復号して整数形式信号を生成する整数形式信号復号ステップと、
    前記整数形式信号を浮動小数点形式信号に変換する浮動小数点化ステップと、
    前記浮動小数点形式信号の仮数部と前記結合ステップの出力とを合成したものに、仮数部を置き換えた前記浮動小数点形式信号を復号信号とする合成ステップ
    も有し、
    前記有効桁情報取得ステップおよび前記単位処理情報列取得ステップは、前記差分符号に含まれる情報またはインデックスを処理の対象とする
    ことを特徴とする情報復号化方法。
  14. 請求項12記載の情報復号化方法において、
    入力符号を商符号と乗数符号と差分符号とに分離する分離ステップと、
    前記商符号を復号化して商信号を求める商復号化ステップと、
    前記乗数符号を復号化して乗数を求める乗数復号化ステップと、
    前記乗数を前記商信号に乗算する乗算ステップと、
    前記乗算ステップの出力と前記結合ステップの出力とを加算したものを復号信号とする加算ステップ
    も有し、
    前記有効桁情報取得ステップおよび前記単位処理情報列取得ステップは、前記差分符号に含まれる情報またはインデックスを処理の対象とする
    ことを特徴とする情報復号化方法。
  15. 請求項12記載の情報復号化方法において
    入力符号を整数符号と乗数符号と差分符号とに分離する分離部ステップと、
    前記整数符号を復号化して整数信号を求める整数信号復号化ステップと、
    前記乗数符号を復号化して乗数を求める乗数復号化ステップと、
    前記乗数が1であるか否かを判定する乗数判定ステップ
    も有し、
    前記単位処理情報列取得ステップは、差分符号に含まれるインデックスを処理の対象とするものであり、
    前記乗数が1であり、かつ前記整数信号が0でない場合は、
    前記有効桁情報取得ステップは、前記整数信号の有効桁数nを有効桁情報として求めるものであり、
    前記結合ステップで得られた復号信号を前記有効桁情報に基づく仮数部の下位(出力信号の仮数部の桁数−n)ビット部分とした浮動小数点形式信号を出力するステップも有し、
    前記乗数が1ではなく、かつ前記整数信号が0でない場合は、
    前記整数信号に前記乗数を乗算する乗算ステップと、
    前記乗算ステップの出力と前記結合ステップで得られた復号信号とを加算したものを出力信号とする加算ステップも有し、
    前記整数信号が0の場合は、
    前記結合ステップで得られた復号信号を仮数部とした浮動小数点形式信号を出力信号とするステップも有する
    ことを特徴とする情報復号化方法。
  16. 一定ビット数の処理単位で表現された情報(以下、「単位処理情報」という。)の列に対応する、辞書部に登録された単位処理情報(以下、「辞書情報」という。)の列を探索して入力情報を圧縮符号化する情報圧縮符号化装置において
    前記入力情報から生成された単位処理情報列中の、入力情報の有効な桁に対応する有効なビットを、辞書情報の対応するビットと比較し、前記有効なビットと対応するビットとの全てが一致すれば、前記単位処理情報と辞書情報とが一致していると判定する一致判定部と
    前記入力情報から生成された単位処理情報の列と一致していると判断できる辞書情報の列のうち最長の辞書情報の列を探索し、当該最長の辞書情報の列のインデックスを求める探索部と
    前記インデックスを出力する出力部と
    を備える情報圧縮符号化装置。
  17. 請求項16記載の情報圧縮符号化装置において、
    入力情報がサンプル列であり、
    サンプルごとに、サンプル中の有効な桁を構成するビット群を前記処理単位ごとに分割して前記単位処理情報を生成する単位処理情報生成部も備え、
    前記単位処理情報生成部では、分割によってサンプルのビットが余った場合もしくはサンプルのビットが処理単位に満たない場合には、余ったビットもしくは処理単位に満たないサンプルのビットにダミービットを追加して単位処理情報とし、追加したダミービット部分は有効なビットではないとする
    ことを特徴とする情報圧縮符号化装置。
  18. 一定ビット数の処理単位で表現された情報(以下、「単位処理情報」という。)の列が登録されている辞書部のインデックスの、いずれか1つのインデックスを含む入力符号を復号化して、復号情報を得る情報復号化装置において、
    前記入力符号に含まれる情報から、前記単位処理情報ごとの有効なビットを示す情報(以下、「有効桁情報」という。)を求める有効桁情報取得部と、
    前記入力符号に含まれるインデックスから、辞書部に登録されている単位処理情報の列を取得する単位処理情報列取得部と、
    前記有効桁情報を用いて、前記取得された1つまたは複数の単位処理情報列に含まれる1つまたは複数の単位処理情報の有効なビットを結合したものを復号信号とする結合部と
    を備える情報復号化装置。
  19. 請求項18記載の情報復号化装置において、
    入力符号を整数符号と差分符号とに分離する分離部と、
    前記整数符号を復号して整数形式信号を生成する整数形式信号復号部と、
    前記整数形式信号を浮動小数点形式信号に変換する浮動小数点化部と、
    前記浮動小数点形式信号の仮数部と前記結合ステップの出力とを合成したものに、仮数部を置き換えた前記浮動小数点形式信号を復号信号とする合成部
    も備え、
    前記有効桁情報取得部および前記単位処理情報列取得部は、前記差分符号に含まれる情報またはインデックスを処理の対象とする
    ことを特徴とする情報復号化装置。
  20. 請求項18記載の情報復号化装置において、
    入力符号を商符号と乗数符号と差分符号とに分離する分離部と、
    前記商符号を復号化して商信号を求める商復号化部と、
    前記乗数符号を復号化して乗数を求める乗数復号化部と、
    前記乗数を前記商信号に乗算する乗算部と、
    前記乗算部の出力と前記結合部の出力を加算したものを復号信号とする加算部
    も有し、
    前記有効桁情報取得部および前記単位処理情報列取得部は、前記差分符号に含まれる情報またはインデックスを処理の対象とする
    ことを特徴とする情報復号化装置。
  21. 請求項16記載の情報圧縮符号化装置において、
    複数のハッシュテーブルと、
    k文字の長さの単位処理情報が辞書に登録されている場合に、不一致文字を追加する際に登録されている辞書のインデックスと、不一致文字をハッシュキーとしてハッシュテーブルに登録する切替部と
    を有し、
    前記探索部は、1つの辞書登録に対して、最長一致文字の次の1文字の有効桁情報を変化させ、有効桁情報に応じてハッシュテーブルを選択して登録を行っておき、探索の際に有効桁情報に対応するハッシュテーブルを用いて探索を行う
    ことを特徴とする情報圧縮符号化装置。
  22. 請求項1、11、12のいずれかに記載した方法の各過程をコンピュータに実行させるためのプログラム。
  23. 請求項1、11、12のいずれかに記載した方法の各過程をコンピュータに実行させるプログラムを記録したコンピュータ読取可能な記録媒体。
JP2006546744A 2004-12-07 2005-12-07 情報圧縮符号化装置、その復号化装置、これらの方法、およびこれらのプログラムとその記録媒体 Active JP4328358B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2004354742 2004-12-07
JP2004354742 2004-12-07
PCT/JP2005/022495 WO2006062142A1 (ja) 2004-12-07 2005-12-07 情報圧縮符号化装置、その復号化装置、これらの方法、およびこれらのプログラムとその記録媒体

Publications (2)

Publication Number Publication Date
JPWO2006062142A1 JPWO2006062142A1 (ja) 2008-06-12
JP4328358B2 true JP4328358B2 (ja) 2009-09-09

Family

ID=36577967

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006546744A Active JP4328358B2 (ja) 2004-12-07 2005-12-07 情報圧縮符号化装置、その復号化装置、これらの方法、およびこれらのプログラムとその記録媒体

Country Status (5)

Country Link
US (1) US7667630B2 (ja)
EP (2) EP1821414B1 (ja)
JP (1) JP4328358B2 (ja)
CN (1) CN101069354B (ja)
WO (1) WO2006062142A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101906036B1 (ko) * 2017-02-08 2018-10-08 국방과학연구소 Lz78 압축 데이터의 오류 검출 방법 및 이를 이용한 인코더

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101822063A (zh) * 2007-08-16 2010-09-01 诺基亚公司 用于编码和解码图像的方法和装置
US7940280B2 (en) * 2007-12-06 2011-05-10 Seiko Epson Corporation System and method for color format conversion in a graphics environment
US7688233B2 (en) * 2008-02-07 2010-03-30 Red Hat, Inc. Compression for deflate algorithm
US8514107B2 (en) * 2009-04-09 2013-08-20 Thomson Licensing Method and device for encoding and decoding of symbol sequences wherein each symbol may have one out of three or more possible symbol values
EP2360926A1 (en) * 2010-01-19 2011-08-24 Fraunhofer-Gesellschaft zur Förderung der Angewandten Forschung e.V. Image encoder and image decoder
US8325623B1 (en) * 2010-02-16 2012-12-04 Google Inc. System and method for reducing latency during data transmissions over a network
CN101969362B (zh) * 2010-09-30 2014-09-10 中兴通讯股份有限公司 掩码生成方法、列表压缩编码方式的选择方法及相应装置
JP5842357B2 (ja) * 2011-03-25 2016-01-13 富士ゼロックス株式会社 画像処理装置及び画像処理プログラム
US10515643B2 (en) * 2011-04-05 2019-12-24 Nippon Telegraph And Telephone Corporation Encoding method, decoding method, encoder, decoder, program, and recording medium
US9165563B2 (en) * 2012-03-19 2015-10-20 Casio Computer Co., Ltd. Coding device, coding method, decoding device, decoding method, and storage medium
WO2013190690A1 (ja) * 2012-06-21 2013-12-27 三菱電機株式会社 符号化装置、復号装置、符号化方法、符号化プログラム、復号方法および復号プログラム
JP6032292B2 (ja) 2012-12-19 2016-11-24 富士通株式会社 圧縮プログラム、圧縮装置、伸張プログラムおよび伸張装置
US9087070B2 (en) * 2013-01-31 2015-07-21 Yahoo! Inc. System and method for applying an efficient data compression scheme to URL parameters
WO2014147672A1 (ja) * 2013-03-22 2014-09-25 富士通株式会社 圧縮装置、圧縮方法、辞書生成装置、辞書生成方法、伸長装置、伸長方法、伸長プログラムおよび情報処理システム
CN104113344B (zh) * 2013-04-16 2017-04-12 晨星半导体股份有限公司 解压缩电路与相关的压缩方法与解压缩方法
CN103425739B (zh) * 2013-07-09 2016-09-14 国云科技股份有限公司 一种字符串匹配方法
US9252807B2 (en) * 2013-10-21 2016-02-02 Globalfoundries Inc. Efficient one-pass cache-aware compression
JP6319740B2 (ja) * 2014-03-25 2018-05-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データ圧縮を高速化する方法、並びに、データ圧縮を高速化するためのコンピュータ、及びそのコンピュータ・プログラム
CN104159108B (zh) * 2014-08-11 2017-08-11 浙江大学 基于自适应预测和改进变长编码的心电信号实时无损压缩方法及装置
JP6540308B2 (ja) * 2015-07-13 2019-07-10 富士通株式会社 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
JP7003443B2 (ja) * 2017-05-16 2022-01-20 富士通株式会社 符号化プログラム、符号化装置および符号化方法
US10476519B2 (en) * 2017-10-30 2019-11-12 AtomBeam Technologies Inc. System and method for high-speed transfer of small data sets
US11687241B2 (en) * 2017-10-30 2023-06-27 AtomBeam Technologies Inc. System and method for data compaction utilizing mismatch probability estimation
US11232076B2 (en) 2017-10-30 2022-01-25 AtomBeam Technologies, Inc System and methods for bandwidth-efficient cryptographic data transfer
US10509771B2 (en) * 2017-10-30 2019-12-17 AtomBeam Technologies Inc. System and method for data storage, transfer, synchronization, and security using recursive encoding
US10680645B2 (en) * 2017-10-30 2020-06-09 AtomBeam Technologies Inc. System and method for data storage, transfer, synchronization, and security using codeword probability estimation
US12039164B2 (en) 2017-10-30 2024-07-16 AtomBeam Technologies Inc. System and method for personal health monitor data compaction using multiple encoding algorithms
US11385794B2 (en) * 2017-10-30 2022-07-12 AtomBeam Technologies Inc. System and method for data compaction and security using multiple encoding algorithms
US10224957B1 (en) * 2017-11-27 2019-03-05 Intel Corporation Hash-based data matching enhanced with backward matching for data compression
CN109199374A (zh) * 2018-10-15 2019-01-15 烟台羿中医疗科技有限公司 一种多导联心电数据记录装置及方法
KR102185668B1 (ko) * 2019-01-30 2020-12-02 스노우 주식회사 이미지 파일의 픽셀 변환을 통한 압축율 향상 방법 및 시스템
US11184021B2 (en) 2019-03-15 2021-11-23 Samsung Electronics Co., Ltd. Using predicates in conditional transcoder for column store
TWI825305B (zh) * 2019-04-16 2023-12-11 南韓商三星電子股份有限公司 轉換編碼器及進行轉換編碼的方法及製品
JP7305609B2 (ja) 2020-12-16 2023-07-10 株式会社日立製作所 受信したデータを処理する装置
CN112866196B (zh) * 2020-12-30 2022-05-13 中国人民解放军国防科技大学 一种短波数字信号解译还原方法
CN116911321B (zh) * 2023-06-21 2024-05-14 三峡高科信息技术有限责任公司 一种前端自动翻译字典值的方法及组件
CN116594572B (zh) * 2023-07-17 2023-09-19 北京四维纵横数据技术有限公司 浮点数流式数据压缩方法、装置、计算机设备及介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0682370B2 (ja) * 1987-05-26 1994-10-19 シャープ株式会社 文字処理装置
DE69124701T2 (de) * 1990-09-19 1997-07-31 Philips Electronics N.V., Eindhoven Bildinformationsaufzeichnungsverfahren, aufzeichnungsträger und bildwiedergewinnungs- und wiederbageanordnung zum lesen des aufzeichnungsträgers
JPH05127866A (ja) * 1991-11-01 1993-05-25 Fujitsu Ltd 画像データ圧縮方式
JPH05252049A (ja) * 1992-03-05 1993-09-28 Fujitsu Ltd データ圧縮処理方式及びデータ復元処理方式
JP3442105B2 (ja) * 1993-06-23 2003-09-02 富士通株式会社 データ圧縮および復元方式
EP0718980A1 (en) * 1994-12-20 1996-06-26 International Business Machines Corporation Data compression method of individual sequences of strings of a data stream based on a dictionary and device for performing the same
JPH0936747A (ja) * 1995-07-18 1997-02-07 Toshiba Corp データ圧縮方法及びデータ圧縮装置
JPH10190476A (ja) * 1996-12-27 1998-07-21 Canon Inc データ圧縮方法及びその装置
US7233619B1 (en) * 1998-12-21 2007-06-19 Roman Kendyl A Variable general purpose compression for video images (ZLN)
DE10140993A1 (de) * 2001-08-21 2003-03-20 Deutsche Telekom Ag Verfahren zur Kompression von Daten

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101906036B1 (ko) * 2017-02-08 2018-10-08 국방과학연구소 Lz78 압축 데이터의 오류 검출 방법 및 이를 이용한 인코더

Also Published As

Publication number Publication date
US20090002207A1 (en) 2009-01-01
WO2006062142A1 (ja) 2006-06-15
EP1821414A4 (en) 2008-07-23
EP2487798B1 (en) 2016-08-10
EP1821414A1 (en) 2007-08-22
EP2487798A1 (en) 2012-08-15
CN101069354A (zh) 2007-11-07
US7667630B2 (en) 2010-02-23
EP1821414B1 (en) 2016-06-22
CN101069354B (zh) 2010-04-14
JPWO2006062142A1 (ja) 2008-06-12

Similar Documents

Publication Publication Date Title
JP4328358B2 (ja) 情報圧縮符号化装置、その復号化装置、これらの方法、およびこれらのプログラムとその記録媒体
US7408481B2 (en) Information encoding method, decoding method, common multiplier estimating method, and apparatus, program, and recording medium using these methods
EP1638209B1 (en) Lossless coding method for digital signal in floating-point, decoding method, apparatus therefor, and programs therefor
CN108768403B (zh) 基于lzw的无损数据压缩、解压方法及lzw编码器、解码器
US10666287B2 (en) Coding method, decoding method, coder, and decoder
WO2019153700A1 (zh) 编解码方法、装置及编解码设备
EP2053749B1 (en) Encoding method and apparatus, and program
US8510105B2 (en) Compression and decompression of data vectors
WO2005025072A1 (ja) 浮動小数点信号可逆符号化方法、復号化方法、及びそれらの装置、プログラム及びその記録媒体
KR100771401B1 (ko) 프로그래머블 프로세서에서 mpeg-2 또는 mpeg-4aac 오디오 복호 알고리즘을 처리하기 위한 연산 회로및 연산 방법
JP3241788B2 (ja) データ圧縮方式
WO2015029224A1 (ja) データ圧縮装置、方法およびプログラム
JP4093193B2 (ja) データ圧縮方法及びプログラムならびにデータ復元方法及び装置
WO2011003233A1 (zh) 编码方法、装置与***、解码方法、装置与***
JP2005286371A (ja) データ圧縮方法及びプログラムならびにデータ復元方法及び装置
JPH0990989A (ja) 変換符号化方法および変換復号化方法
JP2006211243A (ja) ディジタル信号符号化装置,ディジタル信号符号化方法
Sugiura et al. Shape Control of Discrete Generalized Gaussian Distributions for Frequency-Domain Audio Coding
JPH03209923A (ja) データ圧縮方式
JPS6356020A (ja) 圧縮復号化装置
Agulhari et al. Lossless compression applied to sequences of bits
JP2006270821A (ja) 符号化装置及び符号化方法

Legal Events

Date Code Title Description
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: 20090602

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090612

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

Free format text: PAYMENT UNTIL: 20120619

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4328358

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130619

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20140619

Year of fee payment: 5

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350