JPWO2006062142A1 - 情報圧縮符号化装置、その復号化装置、これらの方法、およびこれらのプログラムとその記録媒体 - Google Patents
情報圧縮符号化装置、その復号化装置、これらの方法、およびこれらのプログラムとその記録媒体 Download PDFInfo
- Publication number
- JPWO2006062142A1 JPWO2006062142A1 JP2006546744A JP2006546744A JPWO2006062142A1 JP WO2006062142 A1 JPWO2006062142 A1 JP WO2006062142A1 JP 2006546744 A JP2006546744 A JP 2006546744A JP 2006546744 A JP2006546744 A JP 2006546744A JP WO2006062142 A1 JPWO2006062142 A1 JP WO2006062142A1
- Authority
- JP
- Japan
- Prior art keywords
- unit
- information
- signal
- input
- character
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/91—Entropy 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)
Abstract
Description
一定数の単位のビットを1文字と見て、文字列の繰り返しをモデルとして情報圧縮を行う符号化方法がある(例えば非特許文献1参照)。このような符号化方法にはLZ77、LZ88、LZW等の方法がある(例えば非特許文献1、非特許文献2参照)。
文字列の繰り返しをモデルとする情報圧縮符号化方法は、テキスト文書等の圧縮符号化のみならず、モデム信号、画像信号の符号化方法としても利用されている。
LZ77を改良した符号化方法にLZSS、ZIP等がある。ZIP等ではLZ77で得られた符号出力を、さらにエントロピー符号化の一種であるハフマン符号化で圧縮する。
LZWの符号化装置を図3Aに、その復号化装置を図3Bにそれぞれ示す。LZWの符号化装置の辞書部35には、限られた数の初期文字(データ)が予め登録されている。一致探索部36は、入力された文字列と辞書部35に登録されている文字列とを比較する。そして、一致探索部36は、最も長く一致する最長一致文字列と、その文字列に対応した辞書部35内のインデックスを、符号生成部37に出力する。符号生成部37は、辞書部35内のインデックスを符号として出力端子16から出力する。また、符号生成部37は、最長一致文字列を辞書登録部38に出力する。その文字列の先頭文字CFが、直前バッファ38a内に一時的に保持されている直前の最長一致文字列の最後に付けられて、辞書部35に登録される。つまり前回符号化した文字列と、今回符号化した文字列の先頭文字CFとが1つの連続文字列として、辞書部35に登録されることになる。
−127≦E−E0≦128
の範囲の任意の値を取ることができる。ただし、E−E0=127の場合は全て“0”、E−E0=128の場合は全て“1”と定義されている。 E−E0=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などの辞書を用いて圧縮符号化することが考えられる。しかし、現実には、同様の組み合せ(ディジタル値)の出現する場合が比較的少なく、所望の圧縮率を得ることができない場合が多かった。
[実施例1]
符号化構成
入力情報(データ)の有効ビット桁数が知られている情報を符号化する場合について説明する。入力情報としては各種のものが考えられ、入力情報は、一般には文字ではない。しかし、本発明は、図1〜図3に示した従来技術と同様に辞書を用いて符号化するものである。そこで、理解し易さの観点から、以下の説明では、符号化の対象である入力情報のビット列を複数ビットごと(例えば8ビットごと)にまとめたものを文字と表現する。また、この実施形態では有効桁情報としてマスクデータが用いられる場合を例とする。例えば、入力文字(処理単位情報)C1(i)が、01010101であり、そのマスクデータM1(i)は11110000である。マスクデータM1中の“1”は文字ビット列中の対応桁が有効であり、“0”は対応桁が有効でない又は無視してもよいことを表わす。つまりこの例では文字C1(i)中の上位4ビット0101は有効であるが、下位4ビット0101は有効でない又は無視してもよいことを表わしている。
辞書部43には、各インデックスに対して文字列が登録されている。この例では各インデックスjに対して、Kj個の文字からなる文字列D(j)(0)〜D(j)(Kj−1)が登録されている。辞書のインデックスjに対応する格納領域に登録された文字列を構成する各文字は、kを0≦k≦Kj−1とするとき、D(j)(k)と表現する。文字列を、D(j)(k)[k:0≦k≦Kj−1]またはD(j)(k)[k:0≦k<Kj]と表現する。
入力文字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<Kj]中の文字D(j)(k)とM1(i+k)とのビットごとの論理積D(j)(k)&M1(i+k)を計算する。
情報一致判定部42bは、マスク計算部42aからの各マスク文字と、マスク計算部48よりの各マスク文字とを、k=0からkを1ずつ増加させながら逐次比較する。そして、C1(i+k)&M1(i+k)とD(j)(k)&M1(i+k)が、k=0〜Kj−1の全てで一致した場合に、情報一致判定部42bは、辞書インデックスjに登録された文字列と入力文字列が一致したと判定する。
たとえば、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)は少なくとも有効桁に相当する部分のビットが一致したことになる。
たとえば、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にxj文字数だけ過去の文字列が登録されているとすれば、登録された文字列を構成する各文字は次式であらわされる。
上式を用いれば、情報一致判定部42bでの文字列比較は、C1(i+k)&M1(i+k)とC1(i−xj+k)&M1(i−xj+k)&M1(i+k)が0≦k≦Kj−1で全て一致するもののうちKjが最長のものに対応するインデックスjを求めることに帰着する。
一致探索部42は、文字列の一致長が所定数以上であり、且つ、入力文字列と一致する文字数が最も長いものと対応する辞書インデックスを、少なくとも入力文字列に対する圧縮符号の一部として出力する。具体的には、辞書インデックスのみを出力する場合(マスクLZW法という)、辞書インデックスと、不一致と判定された最初の1文字(不一致文字という)をそのマスクデータでマスクしたマスク不一致文字C1(i+Kj)&M1(i+Kj)とを出力する場合(マスクLZ78法という)、更に辞書インデックスと連続一致文字長とマスク不一致文字C1(i+Kj)&M1(i+Kj)とを出力する場合(マスクLZ77法という)がある。更にマスクLZ77法及びマスクLZ78法の場合は、前記した一致探索での文字列の一致長が、所定数に達しないときには、そのことを示す符号と、その文字列の先頭の1文字のマスク不一致文字C1(i)&M1(i)とが出力される。情報一致判定部42bの判定結果に基づいて、符号生成部49は、前述した各符号化方法に応じた符号を端子44へ出力する。
D(j)(k)[k:0≦k<Kj]であり、すなわち(C1(i−xj+k)&M1(i−xj+k))[k:0≦k<Kj]である。よって、辞書インデックスjmax に登録される新たな文字列は
(C1(i−xj+k)&M1(i−xj+k))[k:0≦k<Kj]の末尾にC1(i+Kj)&M1(i+Kj)を加えたものとなる。
また、有効桁情報は必要に応じて有効桁符号化部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≦Kj−1]と対応するインデックス(最長一致インデックス)jmaxを求める(ステップS4)。
図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で事前に計算しておいても良い。)
LZ78、LZWの場合は、符号出力された最長一致インデックスjmax に対応する文字列D(jmax )(0)〜D(jmax )(kmax −1)に不一致1文字C1(i+kmax )&M1(i+kmax )を付加した文字列が、辞書部43のインデックスJの位置に登録される。登録の後、Jは1増加される。
実施例1の復号化装置を説明する。図8に、マスクLZ77、マスクLZ78に適用される復号化装置を示す。この構成は、図5に示した符号化装置中の復号部45として用いることもできる。
符号解析部52は、入力端子51からの入力符号を、最長一致インデックスjmax と、一致文字長kmax (マスクLZ78では省略されている)と、マスク不一致1文字(C1D&M1D)とに分離する。インデックス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からのマスク不一致文字(C1D&M1D)を連結して、出力端子56へ復号文字列として出力する。また、連結部153は、情報取得部53から渡された文字列D(jmax )(k)[k:0≦k<kmax ]に、符号解析部52からのマスク不一致文字(C1D&M1D)を連結して辞書登録部57に渡す。辞書登録部57は、連結部153から入力された文字列を辞書部54に登録する(辞書に登録する文字列D(jmax )(k)[k:0≦k<kmax ]にはマスクをかけない。)。符号解析部52から一致文字長が所定値より小さいことを示す符号(不一致インデックス)が検出された場合は、入力されたマスク不一致一文字C1D&M1Dを、復号文字として出力端子56へ出力すると共に辞書登録部57を用いて辞書部54に登録する。この登録処理は、図1B中の辞書登録部27と同じである。なお有効桁符号が入力される場合は、その有効桁符号は有効桁復号化部156で、有効桁情報群を復号する。そして、その有効桁情報群から、文字D(jmax )(k)と対応する有効桁情報M1(i+k)を順次マスクデータ生成部151に入力する。
図8に示した機能構成の処理手順例を、図9を参照して説明する。符号解析部52が符号を受信する(ステップS11)。制御部157は、全ての符号に対するステップS13〜S19の処理が完了したかを調べる(ステップS12)。完了していなければ、処理ポインタiCを移動する(ステップS13)。制御部157は、そのポインタiCが指す未処理の入力された符号B1(iC)中のインデックスが、不一致インデックスか否かを判定する(ステップS14)。不一致インデックスでなければ、情報取得部53は、そのインデックスjmax が示す辞書部54中のインデックスjmax に登録されている文字列を取得する(ステップS15)。マスクLZ77の場合は、インデックスが示す位置から、未処理の入力された符号B1(iC)中の一致文字長kmax 分の文字列を取得する。マスクLZ78の場合は、インデックスに対応する位置に登録されているkmax文字の文字列を取得する。
また、ステップS15で取得した文字列(マスクをかけていない文字列)D(jmax )(k)[k:0≦k<kmax ]に、マスク不一致1文字を連結して辞書部54に登録してステップS12に戻る(ステップS18)。
実施例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で復号化して有効桁情報を得る。
このマスクLZWの復号化処理手順の例を図11に示す。まず、情報取得部53は、符号入力を取り込む(ステップS11)。制御部157は、全符号のステップS13〜S19の処理が完了したかを調べる(ステップS12)。完了していなければ処理ポインタiCを移動させる(ステップS13)。ステップS11〜S13までは、図9に示した場合と同じである。マスクLZWでは、次に情報取得部53は、符号B1(iC)のインデックス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)。
以上述べたことから理解されるように、実施例1の復号化装置は、従来のLZ77,LZ78,LZWの各方式に対する復号化装置と、辞書部の構成、マスク計算を行う部分および辞書に登録する内容が異なる。
以下に実施例1の各種変形例を説明する。
先に述べた実施例1の説明に用いた具体例を以下実施例A−3という。この実施例A−3では、マスクLZ77、マスクLZ78の場合は、図5中に示したように、入力文字列および辞書に登録された文字列の双方にマスクM1(i+k)をかけた状態で文字列の一致判定を行う。また、マスク計算部42aが、不一致文字C1Dを、そのマスクデータM1Dによりマスク処理したマスク不一致文字C1D&M1D、つまり不一致文字中の有効でない桁(ビット)部分は固定値(前記例では“0”であるが“1”でもよい)としたものの情報を求める。そして、最長一致した文字列を示す辞書インデックスjmax と、マスク不一致文字C1D&M1Dとを符号として出力する。復号部45は、辞書部43の辞書インデックスjmax に対応する文字列D(jmax )(k)[k:0≦k<kmax ]を取り出す。また、辞書登録部46が、マスク不一致文字C1D&M1Dを連結した文字列を辞書部43に登録する。
すなわち、辞書探索とは、C1(i+k)&M1(i+k)=C1(i−xj+k)&M1(i−xj+k)&M1(i+k)、[k:0≦k<Kj]となる最長のKjを与える辞書インデックスjを探索することに相当する。
また、復号側では、文字列D(jmax )(k)&M1(i+k)[k:0≦k<kmax ]にマスク不一致文字C1D&M1Dを連結した文字列を出力する。
以下にこの実施例A−3に対する変形実施例を、主として実施例A−3と異なる点について説明する。
この実施例A−1では、入力文字列および辞書に登録された文字列の双方にマスクM1(i+k)をかけた状態で文字列の一致判定を行う。そして、最長一致した辞書インデックスjmax と、マスクをかけない不一致文字C1Dそのものの情報を符号として出力する。このため図5中に破線141で示すように文字C1(i+k)も符号生成部49に入力される。そして、符号生成部49は、文字C1(i+k)を不一致文字C1Dとして出力する(A−3ではマスク不一致文字C1D&M1Dを出力)。
つまり、辞書探索では、C1(i+k)&M1(i+k)=D(j)(k)&M1(i+k)、[k:0≦k<Kj]となる最長のKjを与える辞書インデックスjを探す。ここで、D(j)(k)に登録されている内容はxj文字だけ過去に入力された文字列に対応する文字列であり、その文字列の各文字はD(j)(k)=C1(i−xj+k)とあらわすこともできる。
また、復号側では、マスク計算部152の出力ではなく図8に破線157′で示すように辞書部54から取得した文字列D(jmax )(k)[k:0≦k<kmax ]に、図8中に括弧書きで示すように符号解析部52から取り出した不一致文字C1Dを連結した文字列を出力する。
実施例A−1では、復号側は、マスク処理することなくD(jmax )(k)[k:0≦k<kmax ]とC1Dを出力した。実施例A−1′では、マスク計算部158(図8中に破線で示す。)が、符号解析部52よりの不一致文字C1D(図8中に括弧書きで示す。)に、マスクデータM1Dでマスク処理したマスク不一致文字C1D&M1Dを計算する。文字列合成部55は、マスク計算部152からのマスク文字列D(jmax )(k)&M1(i+k)[k:0≦k<kmax ]に、マスク計算部158からのマスク不一致文字C1D&M1Dを連結した文字列を出力する。
なお、マスクLZWの場合は、図10及び図11を参照した実施例A−3の処理と同様である。
実施例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は、入力文字C1(i+k)と辞書文字D(j)(k)との有効桁長の短い方に合わせて一致するインデックスを探索する点が実施例A−3と異なる。
辞書部43は、図13Aに示すように、マスクされていない文字列D(j)(k)[k:0≦k<Kj]が格納される文字部43aと、各文字列の各文字の有効桁情報(例えばマスクデータMD(j)(k)[k:0≦k<Kj])が格納されている有効桁部43bとを有する。マスク計算部48′には、入力文字C1(i+k)のマスクデータM1(i+k)と、辞書部43から辞書文字D(j)(k)に対応するマスクデータMD(j)(k)とが入力される。マスク計算部48′は、一致判定に用いるマスクデータM’を、入力されたマスクデータのビットごとの論理積によって計算する。すなわち、マスク計算部48′は、M’(k)=M1(i+k)&MD(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に入力される。
入力文字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)のビットを取り出し、結果を出力する。
マスクLZW方法の場合は、符号出力の際に図13Bと対応する処理が行われるが、不一致1文字C1Dは出力されない。
復号化装置では、図8中に括弧書きで示し、かつ1点鎖線で示すように、情報取得部53から取り出された文字列D(jmax )(k)[k:0≦k<kj]の各kに対して、M1(i+k)とMD(jmax)(k)を用いてビットを補ってから出力すべきビットを算出する。すなわち、比較部154は、M1(i+k)^(M1(i+k)&MD(jmax)(k))>0となるkを求める。そして、求めたkに対して、M1(i+k)^(M1(i+k)&MD(jmax)(k))で1となっているビットに対応する情報を符号解析部52から取り出す。演算部155は、M1(i+k)^(M1(i+k)&MD(jmax)(k))で1となっているビットを、符号解析部52から取り出したビット情報と置き換える。そうして得られたマスク情報がM1’(i+k)としてマスクデータ生成部151に入力される。そして、マスク計算部152は、マスク処理によって出力すべき文字列を復元する。即ち(D(jmax )(k)&MD(jmax )(k)&M1(i+k))|M1’(i+k)が計算される。なお、A^BはAとBのビットごとの排他的論理和を表す。A|BはAとBの論理和を表す。
辞書部への登録は、情報取得部53で取得された文字列D(jmax)(k)[k:0≦k<kj]とその有効桁情報M(jmax)(k)[k:0≦k<kj]及び不一致文字C1Dとその有効桁情報M1Dとなる。
実施例A−4′では、不一致1文字C1Dに対しそのマスクデータM1Dでマスクして出力する。その他は実施例A−4と同様である。
実施例A−5は、実施例A−4との違いのみを説明する。辞書部43には文字D(j)(k)ではなく、そのマスクした文字D(j)(k)&MD(j)(k)が登録される点、符号化出力中の不一致文字C1Dがマスク文字C1D&M1Dとして出力される点が異なる。復号化装置は実施例A−4と同じである。
実施例A−4〜A−5では、図14Bに示すように、辞書部43は、図14A中の辞書部43と同一内容を登録する文字部43aと、文字部43aに登録されている各文字D(j)(k)の有効桁情報(この例ではマスクデータMD(j)(k))を格納する有効桁部43bを有する。先読みバッファ65は、実施例A−1〜A−3の場合と同様である。なおマスクLZ78、マスクLZWの場合は、辞書部43はスライドバッファではなく固定バッファとなる。
実施例2は、音声や音楽などのオーディオ信号、画像信号、各種計測信号、線形予測誤差信号などのディジタル値のサンプル列の圧縮符号化、復号化に実施例1に示した方法、装置を適用したものである。実施例1では各入力文字(情報)は一定のビット長であり、かつその有効桁情報が既知であることを前提とした。本実施例では、オーディオ信号などのディジタル値のサンプル列を、実施例1を適用できるように、所定ビット数の文字(情報)からなる処理情報列の単位に変換する処理について主に説明する。
各サンプルを構成するビットを、1ビット単位に分解し、順に並べたビット列に変換する。そして、処理の単位となる1文字長(たとえば4ビット)ごとに切り出す。切り出した1文字長の文字列の繰り返しを、情報圧縮符号化装置の入力とする。
オーディオ信号などの波形信号のサンプル列は、本来、隣接するサンプル間の相関(冗長性)や、1サンプル内での相関(冗長性)などが大きいという性質を持っている。しかし、前記のような変換方法では、元のサンプル列が有していた性質が損なわれる場合が多い。
本発明は、サンプル間及び/又はサンプル内の相関(冗長性)も情報列の圧縮に有効に利用するために、サンプル列を相関(冗長性)が保持されるように単位処理情報列に変換する。まず、サンプル列を単位処理情報(文字)に変換した具体例を示す。
図15Aに可変長、つまりサンプルごとに語長(ビット数)が異なる場合の入力サンプル列の例を示す。入力サンプル列(s1,s2,…)中の各サンプルの語長(ビット数)LSが可変長の場合、このままでは単位処理情報のビット数が一定(固定文字サイズ)であることが必要なので、実施例1のマスクLZ符号方法を適用することができない。そこで、例えばマスクLZ法の単位処理情報の語長(ビット数)NCを、入力サンプルの最大語長(ビット数)LS max以上にとって単位処理情報とする。
図15Cは、各入力サンプルをMSB(最上位ビット)側に整列し、単位処理情報へ変換した例を示す図である。各入力サンプルs1,s2,…は、MSB側に整列され、有効桁よりもLSB側にはダミービット(例えば0)を付加して語長(ビット数)を拡張される。このようにして、各入力サンプルを、同一ビット数(単位処理情報のビット数NC)に揃える。
図15Fでは、各入力サンプルs1,s2,…をLSB(最下位ビット)側に整列し、有効桁よりもMSB側にはダミービット(例えば0)を付加して語長(ビット数)を拡張する。拡張に際しては、ビット数が入力サンプルの最大語長(ビット数)LS max以上、且つ単位語長NCの整数倍になるようにダミービットを付与する。次に、LSB側からMSB側に向かってマスクLZ処理の単位処理情報(1文字)のビット数(語長)NCずつ切り出して単位処理情報(1文字)に分割する。
図16Aに、各入力サンプルが一定の大きな語長(ビット長)LSであり、且つ、各サンプルの有効桁数LEが語長LSに比べて短い場合のマスクLZ方法の単位処理情報(1文字)の変換例示す。マスクLZ方法の単位処理情報(1文字)のビット数NCを、入力サンプルの語長LSと同じ長さに取る。次に、図16Bに示すようにサンプル内の有効なビットをLSB側に揃えて、ダミービット(例えば0)のマスクを設定する。なお、図16Cに示すように、サンプルs1,s2,…内の有効なビットをMSB側に揃えて、誤差を許容する部分にダミービット(例えば0)のマスクを設定してもよい。
ディジタル値のサンプル列を、マスクLZ方法により圧縮符号化する機能構成例を図17に、サンプル列を単位処理情報列に変換する処理手順の例を図18に示す。
入力端子71Sよりサンプル列が、入力端子71Mよりサンプル毎の有効桁情報IEDが、記憶部72に入力される(ステップS21)。制御部76は、全てのサンプルに対するステップS23〜S33の処理が完了したかを調べる(ステップS22)。完了していなければ、片寄せ部73は、未処理サンプル中の初めの1サンプルと、そのサンプルのビット長LSと、そのサンプルと対応する有効桁情報IEDを、記憶部72から取り出す(ステップS23)。片寄せ部73は、取り出されたサンプル列を、図15、図16で説明したようにMSB側又はLSB側に片寄せし、バッファに保持する(ステップS24)。図16に示したように、サンプルの語長LSが固定の場合は、有効桁部分を片寄せする。例えば、有効桁数とIEDと最長(固定)ビット長LSとに応じて、サンプルをシフト処理することにより片寄せが行われる。
なおステップS31において、L=NCの場合はNC−L=0となりダミービットの付与は行われない。図17中の制御部76は、サンプル列などの取り込み、記憶部72から所要なサンプルの取り出しなどを行うと共に、各部を順次動作させる。制御部76内には、その制御に必要なパラメータとしてのサンプルビット長Lの格納部76a、有効桁情報IEDの格納部76b、文字サイズNCの格納部76c、更にステップS22、S26、S27における各判定を行う判定部76d、NC−Lなどの演算を行う演算部76eなどが設けられている。NCは単位ビット分離部74内に格納してもよい。このようにしてサンプル列が単位処理情報列(文字列)に変換される。
入力符号を復号化し、その復号化した情報を、図17の入力サンプル列に変換するための機能構成を図19に示す。また、文字列(単位処理情報列)をサンプル列に変換する処理手順の例を図20に示す。
入力端子51からの入力符号が、マスクLZ復号化部81に入力される。また、必要に応じて入力端子82からのサンプルごとの有効桁情報が、マスクデータ変換部83で文字(単位処理情報)ごとのマスクデータに変換されて、マスクLZ復号化部81に入力される。端子82からの有効桁情報は、例えばフレームごとに入力される。マスクLZ復号化部81は、実施例A−1〜A−5で述べた各種の復号化装置が用いられる。マスクデータ変換部83の代わりに、図10中の端子51’の入力に相当する有効桁情報又は有効桁符号が入力されることもある。
ステップS47の加算値がサンプル語長LS以上であればLS−LDが計算される(ステップS51)。マスク文字C3(i)中のLSB(又はMSB)側から書き込まれていない部分に(LS−LD)ビットが書き込まれてステップS42に戻る(ステップS52)。なおサンプルビット長LSを超えたNC−(LS−LD)ビットは破棄される。破棄の方法には様々な方法がありうる。例えば、最初にNC−(LS−LD)ビットを捨て、残ったビットを書き込んでいく方法、NC−(LS−LD)ビットも復元用メモリに書き込み、その後でビットシフト等によって破棄する方法などである。
図19中の制御部88は、各処理に必要なパラメータLS,NC,LDなどが格納されるレジスタ88a,88b,88c,xC+LDの加算などを行う演算部88d,ステップS42,S45,S48などの判定を行う判定部88eなどを備え、文字列の取り込み、先頭サンプルビット長LS、メモリ部87aの確保などの各種処理、各部を順次動作させる。
同様に、図10の有効桁復号化部156の出力を、図19のマスクデータ生成部85への入力とすることもできる。この場合、図10のマスクデータ生成部151、マスク計算部152を省略できる。具体的には、図10に破線で示すように、情報取得部53からの出力を復号文字列として出力する。そして、有効桁情報を端子56’に出力する。この出力が図19の端子56’に入力され、マスクデータ変換部83の処理も不要となる。
実施例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に記載されている方法を用いて、2n≦|Y|<2(n+1)となるように整数形式信号Yの有効桁数nを決定する。非特許文献4では、整数形式信号のサンプルをMとして2(n−1)≦|M|<2(n)のとき仮数部の上位n−1ビットが0となるとされている。これは、本発明での、2n≦|Y|<2(n+1)のとき仮数部の上位nビットが0となることと等価である。なお、|Y|=0のときには、後に実施例5で示すように、入力された符号小数点信号の32ビット全てを差分信号Zとしてもよい。
図21の単位処理列変換部95は、可変長の差分信号Zを、図17と同じ構成、図18と同じ処理手順で所定ビット数の文字列(単位処理情報列)に変換する(ステップS63)。整数形式信号Yの桁数nから、差分信号Zの有効桁数(23−n)ビットが得られるから、nは有効桁数情報ともいえる。マスクLZ方法の1文字(単位処理情報)のビット数NCは、LE=23ビットとして図16B又は図16Cに示した文字列、あるいは1文字のビット数NCを例えば8ビットとして図16D又は図16Eに示した変換形式としてもよい。 図16Bに示した変換形式を適用すると、マスクデータM1(i)の上位のnビットがダミービット、すなわち有効桁ではないことを示すビットとなる。また、差分信号Zに対するマスクデータM1(i)の生成は、整数桁数nに基づき生成することができる。差分信号Zは、最小でも1ビットであるため、マスクデータは最低でも1ビットの“1”をもつことになる。差分信号Zの有効桁の最大長は、23ビットである。しかし、全ての差分信号Zで、24ビットになるように(例えば図16Eに示したように)1ビットのダミービット“0”を付加して文字列に変換すれば、文字サイズNCを8ビットとした場合には、差分信号ZをNC=8単位で変換できる。同様に差分信号Zに図15Eに示した変換形式を適用してもよい。
辞書部43のインデックスに用いる情報量は、初期状態では、たとえば9ビットとする。文字又は文字列が、辞書部43にインデックスごとに登録される。9ビットで表現可能な最大文字列の数に達した場合には、インデックスの表現に用いるビット数を1ビットずつ増加させていくようにする。インデックスに用いるビット数の最大は、たとえば16ビットとする。
整数形式信号Yは、整数符号化部97で圧縮符号化される(ステップS64)。この圧縮符号化は、整数値としての波形値の相関などを利用して、可逆圧縮法により効率よく圧縮符号化することができる。合成部98は、整数形式信号の符号CYと、マスクLZ符号化部96からの差分信号Zに対する符号化符号CZとを合成する。そして、合成部98は、合成された符号を、サンプルごとあるいはフレームごとに、符号化符号として出力する(ステップS65)。
図21に対応する復号化装置の機能構成を図24に、その処理手順の例を図25にそれぞれ示す。分離部102は、入力端子101からの符号CY及び符号CZの組を、符号CYと符号CZに分離する(ステップS71)。整数復号化部103は、符号CYを、整数形式信号Yに復号する(ステップS72)。浮動小数点化部104は、整数形式信号Yを、浮動小数点形式信号に変換する(ステップS73)。
例えば、ユニバーサル符号化方法で符号化する場合に、入力サンプル列を共通の乗数で除算した結果を符号化すると圧縮率を高めることができる。本実施例は、この共通乗数で除算して符号化する方法に、この発明を適用したものである。共通乗数の除算を行うと圧縮率を向上できることをまず簡単に説明する。
入力信号サンプル列がx(1),x(2),x(3)であり、図26Aに示すように10進数表現でx(1)=250、x(2)=50、x(3)=350の場合、その2進数表現はそれぞれ、「0」と「1」が比較的ランダムに配列されている。
商信号y(1),y(2),y(3)の2進数表現は、それぞれ図26Cに示すように、「0」が連続して存在する部分が多い配列となる。従って、y(1),y(2),y(3)を、高い圧縮率で符号化できる。ただし、乗算Aも送出する必要がある。しかし、サンプル数が多く、かつ、大部分が高圧縮が可能な商信号にできる場合は、全体としての圧縮符号化量を大きく減少させることができる。
図28を参照して実施例4の符号化側を説明する。
入力端子201からの入力信号X=(x(1),x(2),…)はディジタル化されたサンプル列であり、これが入力されると(ステップS81)、区間(フレーム)分割部202で所定数N個(例えば1024個)のサンプル列に分割され、図に示していないが一旦記憶部に記憶される(ステップS82)。サンプル列としては、音響信号の場合は、24ビットの量子化ビット数で量子化された整数サンプル列や32bit単精度浮動小数点形式サンプル列などが考えられる。カラー画像信号の場合は各色情報要素に分解してラスタ走査したピクセル情報のディジタル化されたサンプル列である。
除算処理部204では、乗数推定部203より渡された乗数Aと、N個のサンプルx(i)を入力とし、N個の商信号y(i)=x(i)/Aを算出する(ステップS84)。このとき、y(i)は整数形式、浮動小数点形式、固定小数点形式のいずれでもよい。その決められた表現形式に変換するときに、切り捨、切り上げ、四捨五入、nearest tie to even(ニアレストタイツウイーブン)などの丸め処理を行ってもよい。
除算処理部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)。
誤差算出部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)との差分演算を行えばよい。
図30にこの実施形態4の復号化装置の機能構成例を、図31にその処理手順の例を示す。
分離部102は、端子221からの符号化データCxを、商信号符号CY、単位処理符号CZ、有効桁符号Cd、乗数符号CAに分離する(ステップS91)。商信号復号化部222は、商信号符号CYを、商信号符号化部207の符号化方法と対応する復号化方法によりN個の商信号y(0),y(1),…,y(N−1)に復号する(ステップS92)。乗数復号化部223は、乗数符号CAを復号する(ステップS93)。乗算部224は、復号化された乗数Aを復号されたN個の商信号y(0),y(1),…,y(N−1)にそれぞれ掛算する(ステップS94)。有効桁復号化部225は、有効桁符号Cdを可逆復号し、有効桁情報(フレーム内で最長のビット長を示す情報)を生成する(ステップS95)。マスクLZ復号化部105は、前記の有効桁情報を用いて、単位処理符号CZを文字列に復号化する(ステップS96)。サンプル列変換部211は、マスクLZ復号化部105で復号化された文字列を、サンプル列の差分信号z(0),z(1),…,z(N−1)に変換する(ステップS97)。加算部226は、差分信号z(0),z(1),…,z(N−1)を、乗算部224の出力に対してそれぞれ加算する(ステップS98)。フレーム連結部227は、加算部226からの出力信号x(0),x(1),…,x(N−1)を連結し、復号信号として出力する(ステップS99)。y(i)とAとの掛算信号Ay(i)を求める処理と、差分信号サンプルz(i)を求める処理はいずれを先に行ってもよい。有効桁符号Cdや乗数符号CAは、前フレームと同一の場合は、そのことを示す少ないビット数の符号を出力することにしてもよい。商信号符号化部207として非可逆圧縮符号化が使用される場合は、図28中に破線で示すように、商信号符号CYを復号化部213で復号し、その復号信号を除算処理部204の出力信号y(i)の代わりに乗算部205に入力すればよい。
共通乗数で除算して圧縮符号化する方法と、非特許文献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へ入力される。
単位処理列変換部95は、信号の最上位桁(ビット)情報LS maxを用いて、入力された信号(差分信号zd(i)もしくは差分生成部94よりの差分信号ze(i))を、単位処理列に変換する。
復号化側
図34にこの実施例5の機能構成例を示す。その処理手順は図31に示したものとほぼ同様である。ただし、商信号符号CYは整数符号CYと対応している。
分離部102は、入力された符号CXを整数符号CY、単位処理符号CZ、乗数符号CAに分離する。整数復号化部103は、整数符号CYを整数形式信号y(i)に復号化する。整数復号化部103から、整数形式信号y(i)の桁数n及びy(i)=0の場合にはそのことを示す情報が、有効桁情報として、マスクデータ変換部106に入力される。マスクデータ変換部106は、有効桁情報を、単位処理情報ごとのマスクデータを変換する。つまりA=1の場合、各サンプルについて(23−n)ビットと対応するマスクデータが、またy(i)=0の場合はそのサンプルについて32ビットと対応するマスクデータがマスクLZ復号化部105に入力される。マスクLZ復号化部105は、単位処理情報CZをマスクLZ復号化して、単位処理情報列を生成する。乗数復号化部223は、乗数符号CAを乗数Aに復号化する。乗数Aが1でない場合は、マスクデータ生成部236は、仮数部の23ビットと対応するマスクデータを生成し、マスクLZ復号化部105に入力する。
[変形実施形態]
ここで、マスクLZ符号化部の符号化結果のサイズが、単位処理列変換部95に入力されたサイズよりも大きい場合には、マスクLZ符号化を行わないことを示す情報とともに元のデータをそのまま合成部98に出力することも出来る。
各区間の符号化を開始する際に、マスクLZ符号化部内の内部状態を保存しておく。圧縮後にサイズが小さくならない場合には、次の区間のマスクLZ符号化処理を行う前にマスクLZ符号化部の内部状態を保存しておいた状態に復帰する。これによって符号化側と復号化側の内部状態の同期を保つことが出来る。
たとえば、音響信号の符号化では、聴覚心理モデル等を用いて、人間の聴覚特性から歪の知覚されにくい部分には大きな歪を許すような符号化方式がある。この許容される歪の量をもとに、値の有効桁情報が与えられるものとする。たとえば、図16Aに示したように、入力されるサンプル列の語長は一定で、たとえば31ビットとする。図17中に示した単位処理変換部79で、マスクLZ符号化部78での処理に適した形になるように語長割当処理し、有効桁情報を元にマスクデータを設定する。
また、有効桁を表すマスクデータが作成される。マスクデータは、有効ビット部は“1”、歪を許すビット部およびダミービット部は“0”となるように設定する。入力信号から切り出されたi番目の文字をC1(i)、対応するマスクデータをM1(i)とすれば、この文字列、マスクデータ列を入力として図5に示した実施例1(実施例1の変形を含む)の圧縮符号化方法を適用することが可能となる。
先読みを256文字(8ビット)、辞書部43(図14A)のバッファサイズを65536文字(16ビット)とする。
これによって位置情報(インデックス)は、16ビット、最大一致長は8ビットで表されることとなる。なお、これらは一例であり、既知の方法を用いてさらに効率的に処理することも可能である。たとえば、この発明の有効性を損なうことなくLZ77のかわりにLZSSを適用することもできる。
先読みバッファ中の文字列を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を求めることになる。
次に、符号を出力するごとに、一致した文字列と続く不一致1文字を先読みバッファから削除し、一致文字と続く不一致1文字を辞書部43に登録する。辞書部43中の最も古い文字列は破棄される。
復号化処理を以下に示す。
復号化処理は、符号化処理で行ったそれぞれの処理について、対応する逆の操作を行う。
図8で既に説明したように、復号化装置では符号列と、有効桁情報を入力として受取る。有効桁情報は、マスクデータ生成部151によってマスクデータ(M1(i)列)に変換される。
マスクLZ復号化装置は、符号入力と、有効桁情報(マスクデータ)を用いて元の文字列を復元する。こうして得られた文字列は図19中のサンプル列変換部84により元の語長31ビットの信号列に復元される。
上述では入力文字(単位処理情報)は数値情報を前提とした。従って有効桁は一般に上位桁程重要なものである。有効でない、あるいは無視してもよい桁(ビット)はLSB側である。またダミービットも、LSB側に片寄せした場合も、そのサンプルの有効桁の最上位ビット以上で、1文字サイズを満たすに必要な連続したものとなった。一方、例えば一般の文字においても、その構成ビットのある特定ビットの1〜複数が変化しても情報列の全体には、ほとんど影響を与えない場合がある。この場合は、有効桁やダミービットは連続しない。1文字のビット列の途中のビット(桁)を有効でない桁としてこの発明を適用することができる。この場合、文字列をサンプル列に変換する際に、図19中に破線で示すように文字ごとの有効桁情報から、マスクデータ生成部85でマスクデータを生成する。そして、選択部86は、単位ビット結合部87に入力する文字列中の各文字から、対応するマスクデータの“1”の桁(ビット)のビットのみを選択すればよい。有効桁情報はマスクLZ復号化部81又は外部から与えられる。
図6のステップS4の辞書探索処理にハッシュを用いて高速化する具体例を説明する。図7に示した方法では、辞書インデックスjを0から最大値まで変化させ、辞書に登録された全ての文字列を入力文字列と比較する。マスク処理をしない従来のLZ符号化方法では、ハッシュ関数処理を用いて探索を高速化する方法が知られている。しかし、マスクLZでは、同一の辞書登録文字が、複数の入力文字と一致するかどうかを、マスクに依存して探索する必要があるため、既知のハッシュ関数処理手法をそのまま適用することは出来ない。
入力文字列が辞書部に登録された内容と一致した文字列を、D(j)(k)[k:0≦k<Kj]とし、続く不一致文字C1(i+Kj)を連結した文字列を新たに辞書部のインデックスJ+1に登録する場合を考える。既知のハッシュ関数処理法では、例えばjとC1(i+Kj)とをキーとしてハッシュ値を算出し、辞書部内のハッシュテーブルの対応する場所にJ登録する。
有効桁情報としては、例えば有効桁の最上位ビットと最下位ビットの2つの位置情報を用いてもよい。この場合は例えば比較すべき2つの文字に対し、その一方のビット位置と対応する各ビットが一致するかを調べ、一致すれば次の各ビットが一致するかを調べる。全部一致であればその2文字は一致しているとし、途中で不一致が生じれば、その2文字は不一致とすればよい。
以下に、なぜ本発明によれば、音声や音楽などのオーディオ信号、画像信号、各種計測信号、線形予測誤差信号などのディジタル値のサンプル列を、高い圧縮率で符号化できる単位処理情報列に変換できるかを説明する。図37Aに、各サンプルのビット数が異なるサンプル列の例(または、有効ビット数が異なるサンプル列の有効ビット部分の例)を示す。このサンプル列を4ビットごとの文字列に変換する場合で検討する。図37Bに、単純に4ビットごとに1文字として文字列に変換した例(従来の方法)を示す。図37Cに、ダミービットを使い、異なるサンプルのビットが1つの文字に含まれないように文字列に変換した例(本発明の方法)を示す。
ビット数が可変のサンプル列を文字列(この例では4ビットで1文字)に変換する場合、単純に入力されたビット列を4ビットごとに区切ると、図37Bに示した文字列(y(1),・・・)となる。このように区切ると、例えばy(5)は、サンプルx(1)の最後(LSB側)の2ビットとサンプルx(2)の最初(MSB側)の2ビットから構成される。
次に、本発明のマスク処理によって、圧縮率が向上することを示す。
[実験例]
本発明の効果を示すために、図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から、本発明により高い圧縮率が得られることが分かる。
一定数の単位のビットを1文字と見て、文字列の繰り返しをモデルとして情報圧縮を行う符号化方法がある(例えば非特許文献1参照)。このような符号化方法にはLZ77、LZ88、LZW等の方法がある(例えば非特許文献1、非特許文献2参照)。
文字列の繰り返しをモデルとする情報圧縮符号化方法は、テキスト文書等の圧縮符号化のみならず、モデム信号、画像信号の符号化方法としても利用されている。
LZ77を改良した符号化方法にLZSS、ZIP等がある。ZIP等ではLZ77で得られた符号出力を、さらにエントロピー符号化の一種であるハフマン符号化で圧縮する
。
LZWの符号化装置を図3Aに、その復号化装置を図3Bにそれぞれ示す。LZWの符号化装置の辞書部35には、限られた数の初期文字(データ)が予め登録されている。一致探索部36は、入力された文字列と辞書部35に登録されている文字列とを比較する。そして、一致探索部36は、最も長く一致する最長一致文字列と、その文字列に対応した辞書部35内のインデックスを、符号生成部37に出力する。符号生成部37は、辞書部35内のインデックスを符号として出力端子16から出力する。また、符号生成部37は、最長一致文字列を辞書登録部38に出力する。その文字列の先頭文字CFが、直前バッファ38a内に一時的に保持されている直前の最長一致文字列の最後に付けられて、辞書部35に登録される。つまり前回符号化した文字列と、今回符号化した文字列の先頭文字CFとが1つの連続文字列として、辞書部35に登録されることになる。
させたものがある(例えば非特許文献4参照)。
−127≦E−E0≦128
の範囲の任意の値を取ることができる。ただし、E−E0=127の場合は全て“0”、E−E0=128の場合は全て“1”と定義されている。 E−E0=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などの辞書を用いて圧縮符号化することが考えられる。しかし、現実には、同様の組み合せ(ディジタル値)の出現する場合が比較的少なく、所望の圧縮率を得ることができない場合が多かった。
[実施例1]
符号化構成
入力情報(データ)の有効ビット桁数が知られている情報を符号化する場合について説明する。入力情報としては各種のものが考えられ、入力情報は、一般には文字ではない。しかし、本発明は、図1〜図3に示した従来技術と同様に辞書を用いて符号化するものである。そこで、理解し易さの観点から、以下の説明では、符号化の対象である入力情報のビット列を複数ビットごと(例えば8ビットごと)にまとめたものを文字と表現する。また、この実施例では有効桁情報としてマスクデータが用いられる場合を例とする。例えば、入力文字(処理単位情報)C1(i)が、01010101であり、そのマスクデータM1(i)は11110000である。マスクデータM1中の“1”は文字ビット列中の対応桁が有効であり、“0”は対応桁が有効でない又は無視してもよいことを表わす。つまりこの例では文字C1(i)中の上位4ビット0101は有効であるが、下位4ビット0101は有効でない又は無視してもよいことを表わしている。
辞書部43には、各インデックスに対して文字列が登録されている。この例では各インデックスjに対して、Kj個の文字からなる文字列D(j)(0)〜D(j)(Kj−1)が登録されている。辞書のインデックスjに対応する格納領域に登録された文字列を構成する各文字は、kを0≦k≦Kj−1とするとき、D(j)(k)と表現する。文字列を、D(j)(k)[k:0≦k≦Kj−1]またはD(j)(k)[k:0≦k<Kj]と表現する。
入力文字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<Kj]中の文字D(j)(k)とM1(i+k)とのビットごとの論理積D(j)(k)&M1(i+k)を計算する。
情報一致判定部42bは、マスク計算部42aからの各マスク文字と、マスク計算部48よりの各マスク文字とを、k=0からkを1ずつ増加させながら逐次比較する。そして、C1(i+k)&M1(i+k)とD(j)(k)&M1(i+k)が、k=0〜Kj−1の全てで一致した場合に、情報一致判定部42bは、辞書インデックスjに登録された文字列と入力文字列が一致したと判定する。
いればこれら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)は少なくとも有効桁に相当する部分のビットが一致したことになる。
たとえば、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にxj文字数だけ過去の文字列が登録されているとすれば、登録された文字列を構成する各文字は次式であらわされる。
上式を用いれば、情報一致判定部42bでの文字列比較は、C1(i+k)&M1(i+k)とC1(i−xj+k)&M1(i−xj+k)&M1(i+k)が0≦k≦Kj−1で全て一致するもののうちKjが最長のものに対応するインデックスjを求めることに帰着する。
一致探索部42は、文字列の一致長が所定数以上であり、且つ、入力文字列と一致する文字数が最も長いものと対応する辞書インデックスを、少なくとも入力文字列に対する圧縮符号の一部として出力する。具体的には、辞書インデックスのみを出力する場合(マスクLZW法という)、辞書インデックスと、不一致と判定された最初の1文字(不一致文字という)をそのマスクデータでマスクしたマスク不一致文字C1(i+Kj)&M1(i+Kj)とを出力する場合(マスクLZ78法という)、更に辞書インデックスと連続一致文字長とマスク不一致文字C1(i+Kj)&M1(i+Kj)とを出力する場合(マスクLZ77法という)がある。更にマスクLZ77法及びマスクLZ78法の場合は、前記した一致探索での文字列の一致長が、所定数に達しないときには、そのことを示す符号と、その文字列の先頭の1文字のマスク不一致文字C1(i)&M1(i)とが出力される。情報一致判定部42bの判定結果に基づいて、符号生成部49は、前述した各符号化方法に応じた符号を端子44へ出力する。
たKj+1文字の文字列を生成する。そして、辞書登録部46は、辞書部43中の現在文字列が登録されている最大のインデックスよりも1つ大きなインデックスに、生成した文字列を登録する。なお、この復号文字列の各文字は
D(j)(k)[k:0≦k<Kj]であり、すなわち(C1(i−xj+k)&M1(i−xj+k))[k:0≦k<Kj]である。よって、辞書インデックスjmax に登録される新たな文字列は
(C1(i−xj+k)&M1(i−xj+k))[k:0≦k<Kj]の末尾にC1(i+Kj)&M1(i+Kj)を加えたものとなる。
また、有効桁情報は必要に応じて有効桁符号化部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≦Kj−1]と対応するインデックス(最長一致インデックス)jmaxを求める(ステップS4)。
スに登録する。また、ステップS6ではそのマスク不一致文字C1(i)&M1(i)を、一致文字長が所定値より少ないことを表わす符号(不一致インデックスという)と共に出力する。
図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で事前に計算しておいても良い。)
LZ78、LZWの場合は、符号出力された最長一致インデックスjmax に対応する文字列D(jmax )(0)〜D(jmax )(kmax −1)にマスク不一致文字C1(i+kmax )&M1(i+kmax )を付加した文字列が、辞書部43のインデックスJの位置に登録される。登録の後、Jは1増加される。
実施例1の復号化装置を説明する。図8に、マスクLZ77、マスクLZ78に適用される復号化装置を示す。この構成は、図5に示した符号化装置中の復号部45として用いることもできる。
符号解析部52は、入力端子51からの入力符号を、最長一致インデックスjmax と、
一致文字長kmax (マスクLZ78では省略されている)と、マスク不一致文字(C1D&M1D)とに分離する。インデックス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からのマスク不一致文字(C1D&M1D)を連結して、出力端子56へ復号文字列として出力する。また、連結部153は、情報取得部53から渡された文字列D(jmax )(k)[k:0≦k<kmax ]に、符号解析部52からのマスク不一致文字(C1D&M1D)を連結して辞書登録部57に渡す。辞書登録部57は、連結部153から入力された文字列を辞書部54に登録する(辞書に登録する文字列D(jmax )(k)[k:0≦k<kmax ]にはマスクをかけない。)。符号解析部52から一致文字長が所定値より小さいことを示す符号(不一致インデックス)が検出された場合は、入力されたマスク不一致文字C1D&M1Dを、復号文字として出力端子56へ出力すると共に辞書登録部57を用いて辞書部54に登録する。この登録処理は、図1B中の辞書登録部27と同じである。なお有効桁符号が入力される場合は、その有効桁符号は有効桁復号化部156で、有効桁情報群を復号する。そして、その有効桁情報群から、文字D(jmax )(k)と対応する有効桁情報M1(i+k)を順次マスクデータ生成部151に入力する。
図8に示した機能構成の処理手順例を、図9を参照して説明する。符号解析部52が符号を受信する(ステップS11)。制御部157は、全ての符号に対するステップS13〜S19の処理が完了したかを調べる(ステップS12)。完了していなければ、処理ポインタiCを移動する(ステップS13)。制御部157は、そのポインタiCが指す未処理の入力された符号B1(iC)中のインデックスが、不一致インデックスか否かを判定する(ステップS14)。不一致インデックスでなければ、情報取得部53は、そのインデックスjmax が示す辞書部54中のインデックスjmax に登録されている文字列を取得する(ステップS15)。マスクLZ77の場合は、インデックスが示す位置から、未処理の入力された符号B1(iC)中の一致文字長kmax 分の文字列を取得する。マスクLZ78の場合は、インデックスに対応する位置に登録されているkmax文字の文字列を取得する。
また、ステップS15で取得した文字列(マスクをかけていない文字列)D(jmax )(k)[k:0≦k<kmax ]に、マスク不一致の1文字を連結して辞書部54に登録してステップS12に戻る(ステップS18)。
ステップS12、S19の各判定を行う判定部157bを備えている。
実施例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で復号化して有効桁情報を得る。
このマスクLZWの復号化処理手順の例を図11に示す。まず、情報取得部53は、符号入力を取り込む(ステップS11)。制御部157は、全符号のステップS13〜S19の処理が完了したかを調べる(ステップS12)。完了していなければ処理ポインタiCを移動させる(ステップS13)。ステップS11〜S13までは、図9に示した場合と同じである。マスクLZWでは、次に情報取得部53は、符号B1(iC)のインデックス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)。
以上述べたことから理解されるように、実施例1の復号化装置は、従来のLZ77,LZ78,LZWの各方式に対する復号化装置と、辞書部の構成、マスク計算を行う部分および辞書に登録する内容が異なる。
以下に実施例1の各種変形例を説明する。
先に述べた実施例1の説明に用いた具体例を以下実施例A−3という。この実施例A−3では、マスクLZ77、マスクLZ78の場合は、図5中に示したように、入力文字列および辞書に登録された文字列の双方にマスクM1(i+k)をかけた状態で文字列の一
致判定を行う。また、マスク計算部42aが、不一致文字C1Dを、そのマスクデータM1Dによりマスク処理したマスク不一致文字C1D&M1D、つまり不一致文字中の有効でない桁(ビット)部分は固定値(前記例では“0”であるが“1”でもよい)としたものの情報を求める。そして、最長一致した文字列を示す辞書インデックスjmax と、マスク不一致文字C1D&M1Dとを符号として出力する。復号部45は、辞書部43の辞書インデックスjmax に対応する文字列D(jmax )(k)[k:0≦k<kmax ]を取り出す。また、辞書登録部46が、マスク不一致文字C1D&M1Dを連結した文字列を辞書部43に登録する。
すなわち、辞書探索とは、C1(i+k)&M1(i+k)=C1(i−xj+k)&M1(i−xj+k)&M1(i+k)、[k:0≦k<Kj]となる最長のKjを与える辞書インデックスjを探索することに相当する。
また、復号側では、文字列D(jmax )(k)&M1(i+k)[k:0≦k<kmax ]にマスク不一致文字C1D&M1Dを連結した文字列を出力する。
以下にこの実施例A−3に対する変形実施例を、主として実施例A−3と異なる点について説明する。
この実施例A−1では、入力文字列および辞書に登録された文字列の双方にマスクM1(i+k)をかけた状態で文字列の一致判定を行う。そして、最長一致した辞書インデックスjmax と、マスクをかけない不一致文字C1Dそのものの情報を符号として出力する。このため図5中に破線141で示すように文字C1(i+k)も符号生成部49に入力される。そして、符号生成部49は、文字C1(i+k)を不一致文字C1Dとして出力する(A−3ではマスク不一致文字C1D&M1Dを出力)。
つまり、辞書探索では、C1(i+k)&M1(i+k)=D(j)(k)&M1(i+k)、[k:0≦k<Kj]となる最長のKjを与える辞書インデックスjを探す。ここで、D(j)(k)に登録されている内容はxj文字だけ過去に入力された文字列に対応する文字列であり、その文字列の各文字はD(j)(k)=C1(i−xj+k)とあらわすこともできる。
また、復号側では、マスク計算部152の出力ではなく図8に破線157′で示すように辞書部54から取得した文字列D(jmax )(k)[k:0≦k<kmax ]に、図8中に括弧書きで示すように符号解析部52から取り出した不一致文字C1Dを連結した文字列を出力する。
比較され、一致長が最も長い辞書文字列が選択される。このため、最長一致インデックスjmax が複数得られる場合がある。この場合、同一のjmax を得る辞書文字列の中で、入力文字列との距離(例えば数値の場合、両数値の差)が最も小さい辞書文字列を選択する。これは、入力文字列に最も近い辞書文字列を選択することである。
実施例A−1では、復号側は、マスク処理することなくD(jmax )(k)[k:0≦k<kmax ]とC1Dを出力した。実施例A−1′では、マスク計算部158(図8中に破線で示す。)が、符号解析部52よりの不一致文字C1D(図8中に括弧書きで示す。)に、マスクデータM1Dでマスク処理したマスク不一致文字C1D&M1Dを計算する。文字列合成部55は、マスク計算部152からのマスク文字列D(jmax )(k)&M1(i+k)[k:0≦k<kmax ]に、マスク計算部158からのマスク不一致文字C1D&M1Dを連結した文字列を出力する。
なお、マスクLZWの場合は、図10及び図11を参照した実施例A−3の処理と同様である。
実施例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は、入力文字C1(i+k)と辞書文字D(j)(k)との有効桁長の短い方に合わせて一致するインデックスを探索する点が実施例A−3と異なる。
辞書部43は、図13Aに示すように、マスクされていない文字列D(j)(k)[k:0≦k<Kj]が格納される文字部43aと、各文字列の各文字の有効桁情報(例えばマスクデータMD(j)(k)[k:0≦k<Kj])が格納されている有効桁部43bとを有する。マスク計算部48′には、入力文字C1(i+k)のマスクデータM1(i+k)と、辞書部43から辞書文字D(j)(k)に対応するマスクデータMD(j)(k
)とが入力される。マスク計算部48′は、一致判定に用いるマスクデータM’を、入力されたマスクデータのビットごとの論理積によって計算する。すなわち、マスク計算部48′は、M’(k)=M1(i+k)&MD(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に入力される。
入力文字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)のビットを取り出し、結果を出力する。
マスクLZW方法の場合は、符号出力の際に図13Bと対応する処理が行われるが、不一致1文字C1Dは出力されない。
復号化装置では、図8中に括弧書きで示し、かつ1点鎖線で示すように、情報取得部53から取り出された文字列D(jmax )(k)[k:0≦k<kj]の各kに対して、M1(i+k)とMD(jmax)(k)を用いてビットを補ってから出力すべきビットを算出する。すなわち、比較部154は、M1(i+k)^(M1(i+k)&MD(jmax)(k))>0となるkを求める。そして、求めたkに対して、M1(i+k)^(M1(i+k)&MD(jmax)(k))で1となっているビットに対応する情報を符号解析部52から取り出す。演算部155は、M1(i+k)^(M1(i+k)&MD(jmax)(k))で1となっているビットを、符号解析部52から取り出したビット情報と置き換える。そうして得られたマスク情報がM1’(i+k)としてマスクデータ生成部151に入力される。そして、マスク計算部152は、マスク処理によって出力すべき文字列を復元する。即ち(D(jmax )(k)&MD(jmax )(k)&M1(i+k))|M1’(i+k)が計算される。なお、A^BはAとBのビットごとの排他的論理和を表す。A|BはAとBの論理和を表す。
辞書部への登録は、情報取得部53で取得された文字列D(jmax)(k)[k:0≦k<kj]とその有効桁情報M(jmax)(k)[k:0≦k<kj]及び不一致文字C1Dとその有効桁情報M1Dとなる。
実施例A−4′では、不一致文字C1Dに対しそのマスクデータM1Dでマスクして出力する。その他は実施例A−4と同様である。
実施例A−5は、実施例A−4との違いのみを説明する。辞書部43には文字D(j)(k)ではなく、そのマスクした文字D(j)(k)&MD(j)(k)が登録される点、符号化出力中の不一致文字C1Dがマスク文字C1D&M1Dとして出力される点が異なる。復号化装置は実施例A−4と同じである。
実施例A−4〜A−5では、図14Bに示すように、辞書部43は、図14A中の辞書部43と同一内容を登録する文字部43aと、文字部43aに登録されている各文字D(j)(k)の有効桁情報(この例ではマスクデータMD(j)(k))を格納する有効桁部43bを有する。先読みバッファ65は、実施例A−1〜A−3の場合と同様である。なおマスクLZ78、マスクLZWの場合は、辞書部43はスライドバッファではなく固定バッファとなる。
実施例2は、音声や音楽などのオーディオ信号、画像信号、各種計測信号、線形予測誤差信号などのディジタル値のサンプル列の圧縮符号化、復号化に実施例1に示した方法、装置を適用したものである。実施例1では各入力文字(情報)は一定のビット長であり、かつその有効桁情報が既知であることを前提とした。本実施例では、オーディオ信号などのディジタル値のサンプル列を、実施例1を適用できるように、所定ビット数の文字(情報)からなる処理情報列の単位に変換する処理について主に説明する。
各サンプルを構成するビットを、1ビット単位に分解し、順に並べたビット列に変換する。そして、処理の単位となる1文字長(たとえば4ビット)ごとに切り出す。切り出した1文字長の文字列の繰り返しを、情報圧縮符号化装置の入力とする。
オーディオ信号などの波形信号のサンプル列は、本来、隣接するサンプル間の相関(冗長性)や、1サンプル内での相関(冗長性)などが大きいという性質を持っている。しかし、前記のような変換方法では、元のサンプル列が有していた性質が損なわれる場合が多い。
本発明は、サンプル間及び/又はサンプル内の相関(冗長性)も情報列の圧縮に有効に利用するために、サンプル列を相関(冗長性)が保持されるように単位処理情報列に変換する。まず、サンプル列を単位処理情報(文字)に変換した具体例を示す。
図15Aに可変長、つまりサンプルごとに語長(ビット数)が異なる場合の入力サンプル列の例を示す。入力サンプル列(s1,s2,…)中の各サンプルの語長(ビット数)LSが可変長の場合、このままでは単位処理情報のビット数が一定(固定文字サイズ)であることが必要なので、実施例1のマスクLZ符号方法を適用することができない。そこで、例えばマスクLZ法の単位処理情報の語長(ビット数)NCを、入力サンプルの最大語長(ビット数)LS max以上にとって単位処理情報とする。
図15Cは、各入力サンプルをMSB(最上位ビット)側に整列し、単位処理情報へ変換した例を示す図である。各入力サンプルs1,s2,…は、MSB側に整列され、有効桁よりもLSB側にはダミービット(例えば0)を付加して語長(ビット数)を拡張される。このようにして、各入力サンプルを、同一ビット数(単位処理情報のビット数NC)に揃える。
図15Fでは、各入力サンプルs1,s2,…をLSB(最下位ビット)側に整列し、有効桁よりもMSB側にはダミービット(例えば0)を付加して語長(ビット数)を拡張する。拡張に際しては、ビット数が入力サンプルの最大語長(ビット数)LS max以上、且つ単位語長NCの整数倍になるようにダミービットを付与する。次に、LSB側からMSB側に向かってマスクLZ処理の単位処理情報(1文字)のビット数(語長)NCずつ切り出して単位処理情報(1文字)に分割する。
図16Aに、各入力サンプルが一定の大きな語長(ビット長)LSであり、且つ、各サンプルの有効桁数LEが語長LSに比べて短い場合のマスクLZ方法の単位処理情報(1文字)の変換例示す。マスクLZ方法の単位処理情報(1文字)のビット数NCを、入力サンプルの語長LSと同じ長さに取る。次に、図16Bに示すようにサンプル内の有効なビットをLSB側に揃えて、ダミービット(例えば0)を設定する。なお、図16Cに示すように、サンプルs1,s2,…内の有効なビットをMSB側に揃えて、誤差を許容する部分にダミービット(例えば0)を設定してもよい。
ディジタル値のサンプル列を、マスクLZ方法により圧縮符号化する機能構成例を図17に、サンプル列を単位処理情報列に変換する処理手順の例を図18に示す。
入力端子71Sよりサンプル列が、入力端子71Mよりサンプル毎の有効桁情報IEDが、記憶部72に入力される(ステップS21)。制御部76は、全てのサンプルに対するステップS23〜S33の処理が完了したかを調べる(ステップS22)。完了していなければ、片寄せ部73は、未処理サンプル中の初めの1サンプルと、そのサンプルのビット長LSと、そのサンプルと対応する有効桁情報IEDを、記憶部72から取り出す(ステップS23)。片寄せ部73は、取り出されたサンプル列を、図15、図16で説明したようにMSB側又はLSB側に片寄せし、バッファに保持する(ステップS24)。図16に示したように、サンプルの語長LSが固定の場合は、有効桁部分を片寄せする。例えば、有効桁数とIEDと最長(固定)ビット長LSとに応じて、サンプルをシフト処理することにより片寄せが行われる。
なおステップS31において、L=NCの場合はNC−L=0となりダミービットの付与は行われない。図17中の制御部76は、サンプル列などの取り込み、記憶部72から所要なサンプルの取り出しなどを行うと共に、各部を順次動作させる。制御部76内には、その制御に必要なパラメータとしてのサンプルビット長Lの格納部76a、有効桁情報IEDの格納部76b、文字サイズNCの格納部76c、更にステップS22、S26、
S27における各判定を行う判定部76d、NC−Lなどの演算を行う演算部76eなどが設けられている。NCは単位ビット分離部74内に格納してもよい。このようにしてサンプル列が単位処理情報列(文字列)に変換される。
入力符号を復号化し、その復号化した情報を、図17の入力サンプル列に変換するための機能構成を図19に示す。また、文字列(単位処理情報列)をサンプル列に変換する処理手順の例を図20に示す。
入力端子51からの入力符号が、マスクLZ復号化部81に入力される。また、必要に応じて入力端子82からのサンプルごとの有効桁情報が、マスクデータ変換部83で文字(単位処理情報)ごとのマスクデータに変換されて、マスクLZ復号化部81に入力される。端子82からの有効桁情報は、例えばフレームごとに入力される。マスクLZ復号化部81は、実施例A−1〜A−5で述べた各種の復号化装置が用いられる。マスクデータ変換部83の代わりに、図10中の端子51’の入力に相当する有効桁情報又は有効桁符号が入力されることもある。
ステップS47の加算値がサンプル語長LS以上であればLS−LDが計算される(ステップS51)。マスク文字C3(i)中のLSB(又はMSB)側から書き込まれていない部分に(LS−LD)ビットが書き込まれてステップS42に戻る(ステップS52)。なおサンプルビット長LSを超えたNC−(LS−LD)ビットは破棄される。破棄の方法には様々な方法がありうる。例えば、最初にNC−(LS−LD)ビットを捨て、残ったビットを書き込んでいく方法、NC−(LS−LD)ビットも復元用メモリに書き込み、その後でビットシフト等によって破棄する方法などである。
図19中の制御部88は、各処理に必要なパラメータLS,NC,LDなどが格納されるレジスタ88a,88b,88c,xC+LDの加算などを行う演算部88d,ステップS42,S45,S48などの判定を行う判定部88eなどを備え、文字列の取り込み、先頭サンプルビット長LS、メモリ部87aの確保などの各種処理、各部を順次動作させる。
同様に、図10の有効桁復号化部156の出力を、図19のマスクデータ生成部85への入力とすることもできる。この場合、図10のマスクデータ生成部151、マスク計算部152を省略できる。具体的には、図10に破線で示すように、情報取得部53からの出力を復号文字列として出力する。そして、有効桁情報を端子56’に出力する。この出力が図19の端子56’に入力され、マスクデータ変換部83の処理も不要となる。
実施例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に記載されている方法を用いて、2n≦|Y|<2(n+1)となるように整数形式信号Yの有効桁数nを決定する。非特許文献4では、整数形式信号のサンプルをMとして2(n−1)≦|M|<2(n)のとき仮数部の上位n−1ビットが0となるとされている。これは、本発明での、2n≦|Y|<2(n+1)のとき仮数部の上位nビットが0となることと等価である。なお、|Y|=0のときには、後に実施例5で示すように、入力された符号小数点信号の32ビット全てを差分信号Zとしてもよい。
ト数が例えば24ビットであり、差分信号Zはビット数LIが最長で23ビット、最小で1ビットの可変長信号である。
図21の単位処理列変換部95は、可変長の差分信号Zを、図17と同じ構成、図18と同じ処理手順で所定ビット数の文字列(単位処理情報列)に変換する(ステップS63)。整数形式信号Yの桁数nから、差分信号Zの有効桁数(23−n)ビットが得られるから、nは有効桁数情報ともいえる。マスクLZ方法の1文字(単位処理情報)のビット数NCは、LE=23ビットとして図16B又は図16Cに示した文字列、あるいは1文字のビット数NCを例えば8ビットとして図16D又は図16Eに示した変換形式としてもよい。 図16Bに示した変換形式を適用すると、マスクデータM1(i)の上位のnビットがダミービット、すなわち有効桁ではないことを示すビットとなる。また、差分信号Zに対するマスクデータM1(i)の生成は、整数桁数nに基づき生成することができる。差分信号Zは、最小でも1ビットであるため、マスクデータは最低でも1ビットの“1”をもつことになる。差分信号Zの有効桁の最大長は、23ビットである。しかし、全ての差分信号Zで、24ビットになるように(例えば図16Eに示したように)1ビットのダミービット“0”を付加して文字列に変換すれば、文字サイズNCを8ビットとした場合には、差分信号ZをNC=8単位で変換できる。同様に差分信号Zに図15Eに示した変換形式を適用してもよい。
辞書部43のインデックスに用いる情報量は、初期状態では、たとえば9ビットとする。文字又は文字列が、辞書部43にインデックスごとに登録される。9ビットで表現可能な最大文字列の数に達した場合には、インデックスの表現に用いるビット数を1ビットずつ増加させていくようにする。インデックスに用いるビット数の最大は、たとえば16ビットとする。
)(0)をM1(i+0)でマスク処理したマスク先頭文字D(jmax )(0)&M1(i+0)を加えた文字列を新たに辞書登録する。このようにして次第に長い文字列が辞書部に登録され、より長い文字列との一致を探索することが可能となる。
整数形式信号Yは、整数符号化部97で圧縮符号化される(ステップS64)。この圧縮符号化は、整数値としての波形値の相関などを利用して、可逆圧縮法により効率よく圧縮符号化することができる。合成部98は、整数形式信号の符号CYと、マスクLZ符号化部96からの差分信号Zに対する符号化符号CZとを合成する。そして、合成部98は、合成された符号を、サンプルごとあるいはフレームごとに、符号化符号として出力する(ステップS65)。
図21に対応する復号化装置の機能構成を図24に、その処理手順の例を図25にそれぞれ示す。分離部102は、入力端子101からの符号CY及び符号CZの組を、符号CYと符号CZに分離する(ステップS71)。整数復号化部103は、符号CYを、整数形式信号Yに復号する(ステップS72)。浮動小数点化部104は、整数形式信号Yを、浮動小数点形式信号に変換する(ステップS73)。
例えば、ユニバーサル符号化方法で符号化する場合に、入力サンプル列を共通の乗数で除算した結果を符号化すると圧縮率を高めることができる。本実施例は、この共通乗数で除算して符号化する方法に、この発明を適用したものである。共通乗数の除算を行うと圧縮率を向上できることをまず簡単に説明する。
入力信号サンプル列がx(1),x(2),x(3)であり、図26Aに示すように10進数表現でx(1)=250、x(2)=50、x(3)=350の場合、その2進数表現はそれぞれ、「0」と「1」が比較的ランダムに配列されている。
商信号y(1),y(2),y(3)の2進数表現は、それぞれ図26Cに示すように、「0」が連続して存在する部分が多い配列となる。従って、y(1),y(2),y(3)を、高い圧縮率で符号化できる。ただし、乗算Aも送出する必要がある。しかし、サ
ンプル数が多く、かつ、大部分が高圧縮が可能な商信号にできる場合は、全体としての圧縮符号量を大きく減少させることができる。
図28を参照して実施例4の符号化側を説明する。
入力端子201からの入力信号X=(x(1),x(2),…)はディジタル化されたサンプル列であり、これが入力されると(ステップS81)、区間(フレーム)分割部202で所定数N個(例えば1024個)のサンプル列に分割され、図に示していないが一旦記憶部に記憶される(ステップS82)。サンプル列としては、音響信号の場合は、24ビットの量子化ビット数で量子化された整数サンプル列や32ビット単精度浮動小数点形式サンプル列などが考えられる。カラー画像信号の場合は各色情報要素に分解してラスタ走査したピクセル情報のディジタル化されたサンプル列である。
除算処理部204では、乗数推定部203より渡された乗数Aと、N個のサンプルx(i)を入力とし、N個の商信号y(i)=x(i)/Aを算出する(ステップS84)。このとき、y(i)は整数形式、浮動小数点形式、固定小数点形式のいずれでもよい。その決められた表現形式に変換するときに、切り捨、切り上げ、四捨五入、nearest tie to
even(ニアレストタイツウイーブン)などの丸め処理を行ってもよい。
除算処理部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)。
’(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)との差分演算を行えばよい。
図30にこの実施例4の復号化装置の機能構成例を、図31にその処理手順の例を示す。
分離部102は、端子221からの符号化データCxを、商信号符号CY、単位処理符号CZ、有効桁符号Cd、乗数符号CAに分離する(ステップS91)。商信号復号化部222は、商信号符号CYを、商信号符号化部207の符号化方法と対応する復号化方法によりN個の商信号y(0),y(1),…,y(N−1)に復号する(ステップS92)。乗数復号化部223は、乗数符号CAを復号する(ステップS93)。乗算部224は、復号化された乗数Aを復号されたN個の商信号y(0),y(1),…,y(N−1)にそれぞれ掛算する(ステップS94)。有効桁復号化部225は、有効桁符号Cdを可逆復号し、有効桁情報(フレーム内で最長のビット長を示す情報)を生成する(ステップS95)。マスクLZ復号化部105は、前記の有効桁情報を用いて、単位処理符号CZを文字列に復号化する(ステップ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)を求める処理はいずれを先に行ってもよい。有効桁符号Cdや乗数符号CAは、前フレームと同一の場合は、そのことを示す少ないビット数の符号を出力することにしてもよい。商信号符号化部207として非可逆圧縮符号化が使用される場合は、図28中に破線で示すように、商信号符号CYを復号化部213で復号し、その復号信号を除算処理部204の出力信号y(i)の代わりに乗算部205に入力すればよい。
共通乗数で除算して圧縮符号化する方法と、非特許文献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へ入力される。
単位処理列変換部95は、信号の最上位桁(ビット)情報LS maxを用いて、入力された信号(差分信号zd(i)もしくは差分生成部94よりの差分信号ze(i))を、単位処理列に変換する。
復号化側
図34にこの実施例5の機能構成例を示す。その処理手順は図31に示したものとほぼ同様である。ただし、商信号符号CYは整数符号CYと対応している。
分離部102は、入力された符号CXを整数符号CY、単位処理符号CZ、乗数符号C
Aに分離する。整数復号化部103は、整数符号CYを整数形式信号y(i)に復号化する。整数復号化部103から、整数形式信号y(i)の桁数n及びy(i)=0の場合にはそのことを示す情報が、有効桁情報として、マスクデータ変換部106に入力される。マスクデータ変換部106は、有効桁情報を、単位処理情報ごとのマスクデータを変換する。つまりA=1の場合、各サンプルについて(23−n)ビットと対応するマスクデータが、またy(i)=0の場合はそのサンプルについて32ビットと対応するマスクデータがマスクLZ復号化部105に入力される。マスクLZ復号化部105は、単位処理情報CZをマスクLZ復号化して、単位処理情報列を生成する。乗数復号化部223は、乗数符号CAを乗数Aに復号化する。乗数Aが1でない場合は、マスクデータ生成部236は、仮数部の23ビットと対応するマスクデータを生成し、マスクLZ復号化部105に入力する。
[変形実施例]
ここで、マスクLZ符号化部の符号化結果のサイズが、単位処理列変換部95に入力されたサイズよりも大きい場合には、マスクLZ符号化を行わないことを示す情報とともに元のデータをそのまま合成部98に出力することも出来る。
各区間の符号化を開始する際に、マスクLZ符号化部内の内部状態を保存しておく。圧縮後にサイズが小さくならない場合には、次の区間のマスクLZ符号化処理を行う前にマスクLZ符号化部の内部状態を保存しておいた状態に復帰する。これによって符号化側と復号化側の内部状態の同期を保つことが出来る。
たとえば、音響信号の符号化では、聴覚心理モデル等を用いて、人間の聴覚特性から歪の知覚されにくい部分には大きな歪を許すような符号化方式がある。この許容される歪の量をもとに、値の有効桁情報が与えられるものとする。たとえば、図16Aに示したように、入力されるサンプル列の語長は一定で、たとえば31ビットとする。図17中に示した単位処理変換部79で、マスクLZ符号化部78での処理に適した形になるように語長割当処理し、有効桁情報を元にマスクデータを設定する。
並べられる。この際、入力信号列の語長が1文字の語長の整数倍(今の例では8の倍数)になっていない場合は、8ビットの倍数になるように、MSB側に値“0”のダミービットが追加される。
また、有効桁を表すマスクデータが作成される。マスクデータは、有効ビット部は“1”、歪を許すビット部およびダミービット部は“0”となるように設定する。入力信号から切り出されたi番目の文字をC1(i)、対応するマスクデータをM1(i)とすれば、この文字列、マスクデータ列を入力として図5に示した実施例1(実施例1の変形を含む)の圧縮符号化方法を適用することが可能となる。
先読みを256文字(8ビット)、辞書部43(図14A)のバッファサイズを65536文字(16ビット)とする。
これによって位置情報(インデックス)は、16ビット、最大一致長は8ビットで表されることとなる。なお、これらは一例であり、既知の方法を用いてさらに効率的に処理することも可能である。たとえば、この発明の有効性を損なうことなくLZ77のかわりにLZSSを適用することもできる。
先読みバッファ中の文字列を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を求めることになる。
次に、符号を出力するごとに、一致した文字列と続く不一致1文字を先読みバッファから削除し、一致文字と続く不一致1文字を辞書部43に登録する。辞書部43中の最も古い文字列は破棄される。
復号化処理を以下に示す。
復号化処理は、符号化処理で行ったそれぞれの処理について、対応する逆の操作を行う。
図8で既に説明したように、復号化装置では符号列と、有効桁情報を入力として受取る。有効桁情報は、マスクデータ生成部151によってマスクデータ(M1(i)列)に変換される。
マスクLZ復号化装置は、符号入力と、有効桁情報(マスクデータ)を用いて元の文字列を復元する。こうして得られた文字列は図19中のサンプル列変換部84により元の語長31ビットの信号列に復元される。
上述では入力文字(単位処理情報)は数値情報を前提とした。従って有効桁は一般に上位桁程重要なものである。有効でない、あるいは無視してもよい桁(ビット)はLSB側である。またダミービットも、LSB側に片寄せした場合も、そのサンプルの有効桁の最上位ビット以上で、1文字サイズを満たすに必要な連続したものとなった。一方、例えば一般の文字においても、その構成ビットのある特定ビットの1〜複数が変化しても情報列の全体には、ほとんど影響を与えない場合がある。この場合は、有効桁やダミービットは連続しない。1文字のビット列の途中のビット(桁)を有効でない桁としてこの発明を適用することができる。この場合、文字列をサンプル列に変換する際に、図19中に破線で示すように文字ごとの有効桁情報から、マスクデータ生成部85でマスクデータを生成する。そして、選択部86は、単位ビット結合部87に入力する文字列中の各文字から、対応するマスクデータの“1”の桁(ビット)のビットのみを選択すればよい。有効桁情報はマスクLZ復号化部81又は外部から与えられる。
図6のステップS4の辞書探索処理にハッシュを用いて高速化する具体例を説明する。図7に示した方法では、辞書インデックスjを0から最大値まで変化させ、辞書に登録された全ての文字列を入力文字列と比較する。マスク処理をしない従来のLZ符号化方法では、ハッシュ関数処理を用いて探索を高速化する方法が知られている。しかし、マスクLZでは、同一の辞書登録文字が、複数の入力文字と一致するかどうかを、マスクに依存して探索する必要があるため、既知のハッシュ関数処理手法をそのまま適用することは出来ない。
入力文字列が辞書部に登録された内容と一致した文字列を、D(j)(k)[k:0≦k<Kj]とし、続く不一致文字C1(i+Kj)を連結した文字列を新たに辞書部のインデックスJ+1に登録する場合を考える。既知のハッシュ関数処理法では、例えばjとC1(i+Kj)とをキーとしてハッシュ値を算出し、辞書部内のハッシュテーブルの対応する場所にJ登録する。
を1つ選択し、選択されたハッシュテーブル362をjとC1(i+Kj)&M(i+k)とをキーとして探索する。
有効桁情報としては、例えば有効桁の最上位ビットと最下位ビットの2つの位置情報を用いてもよい。この場合は例えば比較すべき2つの文字に対し、その一方のビット位置と対応する各ビットが一致するかを調べ、一致すれば次の各ビットが一致するかを調べる。全部一致であればその2文字は一致しているとし、途中で不一致が生じれば、その2文字は不一致とすればよい。
以下に、なぜ本発明によれば、音声や音楽などのオーディオ信号、画像信号、各種計測信号、線形予測誤差信号などのディジタル値のサンプル列を、高い圧縮率で符号化できる単位処理情報列に変換できるかを説明する。図37Aに、各サンプルのビット数が異なるサンプル列の例(または、有効ビット数が異なるサンプル列の有効ビット部分の例)を示す。このサンプル列を4ビットごとの文字列に変換する場合で検討する。図37Bに、単純に4ビットごとに1文字として文字列に変換した例(従来の方法)を示す。図37Cに、ダミービットを使い、異なるサンプルのビットが1つの文字に含まれないように文字列に変換した例(本発明の方法)を示す。
ビット数が可変のサンプル列を文字列(この例では4ビットで1文字)に変換する場合、単純に入力されたビット列を4ビットごとに区切ると、図37Bに示した文字列(y(1),・・・)となる。このように区切ると、例えばy(5)は、サンプルx(1)の最後(LSB側)の2ビットとサンプルx(2)の最初(MSB側)の2ビットから構成される。
次に、本発明のマスク処理によって、圧縮率が向上することを示す。
桁は異なるが、同一の部分を含んでいるサンプルは多い。しかし、従来の完全に一致する文字を検索する符号化の方法を、有効桁部分のみやダミービットを含んだ文字に対して用いようとすると、完全に一致する文字列が見つからない場合が多い。図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から、本発明により高い圧縮率が得られることが分かる。
Claims (23)
- 一定ビット数の処理単位で表現された情報(以下、「単位処理情報」という。)の列に対応する、辞書部に登録された単位処理情報(以下、「辞書情報」という。)の列を探索して入力情報を圧縮符号化する情報圧縮符号化方法において、
前記入力情報は有効な桁が既知の情報であり、
前記入力情報から生成された単位処理情報列中の、入力情報の有効な桁に対応する有効なビットを、辞書情報の対応するビットと比較し、前記有効なビットと対応するビットとの全てが一致すれば、前記単位処理情報と辞書情報とが一致していると判定する一致判定ステップと
前記入力情報から生成された単位処理情報の列と一致していると判断できる辞書情報の列のうち最長の辞書情報の列を探索し、当該最長の辞書情報の列のインデックスを求める探索ステップと
前記インデックスまたは前記インデックスに対応する符号を出力する出力ステップと
を有する情報圧縮符号化方法。 - 請求項1記載の情報圧縮符号化方法において、
前記インデックスが示す単位処理情報の列を含む単位処理情報の列を、辞書部に登録する辞書登録ステップ
も有する情報圧縮符号化方法。 - 請求項2記載の情報圧縮符号化方法において、
前記辞書登録ステップでは、登録された単位処理情報の量が、所定の量よりも多くなった場合には、最も前に登録された単位処理情報から削除する
ことを特徴とする情報圧縮符号化方法。 - 請求項1記載の情報圧縮符号化方法において、
入力情報がサンプル列であり、
サンプルごとに、サンプル中の有効な桁を構成するビット群を前記処理単位ごとに分割して前記単位処理情報を生成する単位処理情報生成ステップも有し、
前記単位処理情報生成ステップでは、分割によってサンプルのビットが余った場合もしくはサンプルのビットが処理単位に満たない場合には、余ったビットもしくは処理単位に満たないサンプルのビットにダミービットを追加して単位処理情報とし、追加したダミービット部分は有効なビットではないとする
ことを特徴とする情報圧縮符号化方法。 - 請求項4記載の情報圧縮符号化方法において、
入力信号が浮動小数点形式であり、
入力信号を整数形式信号と差分信号とに分離する分離ステップと、
前記整数形式信号を圧縮符号化する整数形式符号化ステップ
も有し、
前記差分信号の列をサンプル列で構成される入力情報として、前記単位処理情報生成ステップ、前記一致判定ステップ、および前記探索ステップを行い、
前記出力ステップでは、前記インデックスに加えて、前記整数形式符号化ステップで圧縮符号化された符号も出力する
ことを特徴とする情報圧縮符号化方法。 - 請求項5記載の情報圧縮符号化方法において、
前記分離ステップで分離された前記差分信号が、前記整数形式信号が0の場合の差分信号であるかを判定するステップと、
前記判定で整数形式信号が0の場合の差分信号であると判定されると、当該差分信号により、第1の差分信号列を生成するステップと、
前記判定で整数形式信号が0でない場合の差分信号であると判定されると、当該差分信号により、第2の差分信号列を生成するステップ
も有し、
前記第1の差分信号列と第2の差分信号列とを連結したものを前記サンプル列で構成される入力情報とする
ことを特徴とする情報圧縮符号化方法。 - 請求項4記載の情報圧縮符号化方法において、
所定の複数の入力信号により構成される分割区間ごとの入力信号列を、共通の乗数、その乗数で各入力信号を除算処理した商信号の列、その残りの差分信号の列とに分解する分解ステップと、
前記商信号の列を圧縮符号化して出力する商信号符号化ステップと、
前記乗数を符号化して出力する乗数符号化ステップ
も有し、
前記差分信号の列をサンプル列で構成される入力情報として、前記単位処理情報生成ステップ、前記一致判定ステップ、前記探索ステップ、および前記出力ステップを行う
ことを特徴とする情報圧縮符号化方法。 - 請求項7記載の情報圧縮符号化方法において、
前記分解ステップで得られた前記差分信号の列を構成する差分信号が、前記商信号が0の場合の差分信号であるかを判定するステップと、
前記判定で商信号が0の場合の差分信号であると判定されると、当該差分信号により、第1の差分信号列を生成するステップと、
前記判定で商信号が0でない場合の差分信号であると判定されると、当該差分信号により、第2の差分信号列を生成するステップ
も有し、
前記第1の差分信号列と第2の差分信号列とを連結したものを前記サンプル列で構成される入力情報とする
ことを特徴とする情報圧縮符号化方法。 - 請求項4記載の情報圧縮符号化方法において、
所定の複数の浮動小数点入力信号により構成される分割区間ごとの浮動小数点入力信号列を、共通の乗数、その乗数で各浮動小数点入力信号を除算処理した信号の列とに分解する分解ステップと、
前記除算処理した信号を、整数形式信号に変換する整数化ステップと、
前記整数形式信号に前記乗数を乗算した浮動小数点信号を求める乗算ステップと、
前記乗算ステップで得られた浮動小数点信号と前記浮動小数点入力信号との差分信号を求める差分信号算出ステップと、
前記整数形式信号の列を圧縮符号化して出力する整数形式信号符号化ステップと、
前記乗数を符号化して出力する乗数符号化ステップ
も有し、
前記差分信号の仮数部の列をサンプル列で構成される入力情報として、前記単位処理情報生成ステップ、前記一致判定ステップ、前記探索ステップ、および前記出力ステップを行う
ことを特徴とする情報圧縮符号化方法。 - 請求項4記載の情報圧縮符号化方法において、
所定の複数の浮動小数点入力信号により構成される分割区間ごとの浮動小数点入力信号列を、共通の乗数、その乗数で各浮動小数点入力信号を除算処理した信号の列とに分解する分解ステップと、
前記除算処理した信号を、整数形式信号に変換する整数化ステップと、
前記整数形式信号を、浮動小数点信号に変換する浮動小数点化ステップと、
前記浮動小数点化ステップで得られた浮動小数点信号に前記乗数を乗算する乗算ステップと、
前記整数形式信号の列を圧縮符号化して出力する整数形式信号符号化ステップと、
前記乗数を符号化して出力する乗数符号化ステップ
も有し、
前記乗数が1であり、かつ前記整数形式信号が0でない場合は、
前記整数形式信号の有効桁数nにより定まる前記浮動小数点入力信号の仮数部の下位(前記浮動小数点入力信号の仮数部の桁数−n)ビットを有効なビットとして含むビット群の列を、サンプル列で構成される入力情報として、前記単位処理情報生成ステップ、前記一致判定ステップ、前記探索ステップ、および前記出力ステップを行い、
前記乗数が1ではなく、かつ前記整数形式信号が0でない場合は、
前記乗算ステップで得られた乗算済の浮動小数点信号と前記浮動小数点入力信号との差分信号を求める差分信号算出ステップも有し、
前記差分信号算出ステップで得た差分信号の仮数部の列をサンプル列で構成される入力信号として、前記単位処理情報生成ステップ、前記一致判定ステップ、前記探索ステップ、および前記出力ステップを行い、
前記整数形式信号が0の場合は、
前記浮動小数点入力信号の列を、サンプル列で構成される入力信号として、前記単位処理情報生成ステップ、前記一致判定ステップ、前記探索ステップ、および前記出力ステップを行う
ことを特徴とする情報圧縮符号化方法。 - 一定ビット数の処理単位で表現された情報(以下、「単位処理情報」という。)の列が登録されている辞書部のインデックスの、いずれか1つのインデックスを含む入力符号を復号化して、復号情報を得る情報復号化方法において、
前記入力符号に含まれる情報から、前記単位処理情報ごとの有効なビットを示す情報(以下、「有効桁情報」という。)を求める有効桁情報取得ステップと、
前記入力符号に含まれるインデックスから、辞書部に登録されている単位処理情報の列を取得する単位処理情報列取得ステップと、
前記有効桁情報を用いて、前記取得された単位処理情報列中の有効部分を特定して復号情報を得るマスク処理ステップと
を有する情報復号化方法。 - 一定ビット数の処理単位で表現された情報(以下、「単位処理情報」という。)の列が登録されている辞書部のインデックスの、いずれか1つのインデックスを含む入力符号を復号化して、復号情報を得る情報復号化方法において、
前記入力符号に含まれる情報から、前記単位処理情報ごとの有効なビットを示す情報(以下、「有効桁情報」という。)を求める有効桁情報取得ステップと、
前記入力符号に含まれるインデックスから、辞書部に登録されている単位処理情報の列を取得する単位処理情報列取得ステップと、
前記有効桁情報を用いて、前記取得された1つまたは複数の単位処理情報列に含まれる1つまたは複数の単位処理情報の有効なビットを結合したものを復号信号とする結合ステップと
を有する情報復号化方法。 - 請求項12記載の情報復号化方法において、
入力符号を整数符号と差分符号とに分離する分離ステップと、
前記整数符号を復号して整数形式信号を生成する整数形式信号復号ステップと、
前記整数形式信号を浮動小数点形式信号に変換する浮動小数点化ステップと、
前記浮動小数点形式信号の仮数部と前記結合ステップの出力とを合成したものに、仮数部を置き換えた前記浮動小数点形式信号を復号信号とする合成ステップ
も有し、
前記有効桁情報取得ステップおよび前記単位処理情報列取得ステップは、前記差分符号に含まれる情報またはインデックスを処理の対象とする
ことを特徴とする情報復号化方法。 - 請求項12記載の情報復号化方法において、
入力符号を商符号と乗数符号と差分符号とに分離する分離ステップと、
前記商符号を復号化して商信号を求める商復号化ステップと、
前記乗数符号を復号化して乗数を求める乗数復号化ステップと、
前記乗数を前記商信号に乗算する乗算ステップと、
前記乗算ステップの出力と前記結合ステップの出力とを加算したものを復号信号とする加算ステップ
も有し、
前記有効桁情報取得ステップおよび前記単位処理情報列取得ステップは、前記差分符号に含まれる情報またはインデックスを処理の対象とする
ことを特徴とする情報復号化方法。 - 請求項12記載の情報復号化方法において
入力符号を整数符号と乗数符号と差分符号とに分離する分離部ステップと、
前記整数符号を復号化して整数信号を求める整数信号復号化ステップと、
前記乗数符号を復号化して乗数を求める乗数復号化ステップと、
前記乗数が1であるか否かを判定する乗数判定ステップ
も有し、
前記単位処理情報列取得ステップは、差分符号に含まれるインデックスを処理の対象とするものであり、
前記乗数が1であり、かつ前記整数信号が0でない場合は、
前記有効桁情報取得ステップは、前記整数信号の有効桁数nを有効桁情報として求めるものであり、
前記結合ステップで得られた復号信号を前記有効桁情報に基づく仮数部の下位(出力信号の仮数部の桁数−n)ビット部分とした浮動小数点形式信号を出力するステップも有し、
前記乗数が1ではなく、かつ前記整数信号が0でない場合は、
前記整数信号に前記乗数を乗算する乗算ステップと、
前記乗算ステップの出力と前記結合ステップで得られた復号信号とを加算したものを出力信号とする加算ステップも有し、
前記整数信号が0の場合は、
前記結合ステップで得られた復号信号を仮数部とした浮動小数点形式信号を出力信号とするステップも有する
ことを特徴とする情報復号化方法。 - 一定ビット数の処理単位で表現された情報(以下、「単位処理情報」という。)の列に対応する、辞書部に登録された単位処理情報(以下、「辞書情報」という。)の列を探索して入力情報を圧縮符号化する情報圧縮符号化装置において、
前記入力情報は有効な桁が既知の情報であり、
前記入力情報から生成された単位処理情報列中の、入力情報の有効な桁に対応する有効なビットを、辞書情報の対応するビットと比較し、前記有効なビットと対応するビットとの全てが一致すれば、前記単位処理情報と辞書情報とが一致していると判定する一致判定部と
前記入力情報から生成された単位処理情報の列と一致していると判断できる辞書情報の列のうち最長の辞書情報の列を探索し、当該最長の辞書情報の列のインデックスを求める探索部と
前記インデックスを出力する出力部と
を備える情報圧縮符号化装置。 - 請求項16記載の情報圧縮符号化装置において、
入力情報がサンプル列であり、
サンプルごとに、サンプル中の有効な桁を構成するビット群を前記処理単位ごとに分割して前記単位処理情報を生成する単位処理情報生成部も備え、
前記単位処理情報生成部では、分割によってサンプルのビットが余った場合もしくはサンプルのビットが処理単位に満たない場合には、余ったビットもしくは処理単位に満たないサンプルのビットにダミービットを追加して単位処理情報とし、追加したダミービット部分は有効なビットではないとする
ことを特徴とする情報圧縮符号化装置。 - 一定ビット数の処理単位で表現された情報(以下、「単位処理情報」という。)の列が登録されている辞書部のインデックスの、いずれか1つのインデックスを含む入力符号を復号化して、復号情報を得る情報復号化装置において、
前記入力符号に含まれる情報から、前記単位処理情報ごとの有効なビットを示す情報(以下、「有効桁情報」という。)を求める有効桁情報取得部と、
前記入力符号に含まれるインデックスから、辞書部に登録されている単位処理情報の列を取得する単位処理情報列取得部と、
前記有効桁情報を用いて、前記取得された1つまたは複数の単位処理情報列に含まれる1つまたは複数の単位処理情報の有効なビットを結合したものを復号信号とする結合部と
を備える情報復号化装置。 - 請求項18記載の情報復号化装置において、
入力符号を整数符号と差分符号とに分離する分離部と、
前記整数符号を復号して整数形式信号を生成する整数形式信号復号部と、
前記整数形式信号を浮動小数点形式信号に変換する浮動小数点化部と、
前記浮動小数点形式信号の仮数部と前記結合ステップの出力とを合成したものに、仮数部を置き換えた前記浮動小数点形式信号を復号信号とする合成部
も備え、
前記有効桁情報取得部および前記単位処理情報列取得部は、前記差分符号に含まれる情報またはインデックスを処理の対象とする
ことを特徴とする情報復号化装置。 - 請求項18記載の情報復号化装置において、
入力符号を商符号と乗数符号と差分符号とに分離する分離部と、
前記商符号を復号化して商信号を求める商復号化部と、
前記乗数符号を復号化して乗数を求める乗数復号化部と、
前記乗数を前記商信号に乗算する乗算部と、
前記乗算部の出力と前記結合部の出力を加算したものを復号信号とする加算部
も有し、
前記有効桁情報取得部および前記単位処理情報列取得部は、前記差分符号に含まれる情報またはインデックスを処理の対象とする
ことを特徴とする情報復号化装置。 - 請求項16記載の情報圧縮符号化装置において、
複数のハッシュテーブルと、
k文字の長さの単位処理情報が辞書に登録されている場合に、不一致文字を追加する際に登録されている辞書のインデックスと、不一致文字をハッシュキーとしてハッシュテーブルに登録する切替部と
を有し、
前記探索部は、1つの辞書登録に対して、最長一致文字の次の1文字の有効桁情報を変化させ、有効桁情報に応じてハッシュテーブルを選択して登録を行っておき、探索の際に有効桁情報に対応するハッシュテーブルを用いて探索を行う
ことを特徴とする情報圧縮符号化装置。 - 請求項1、11、12のいずれかに記載した方法の各過程をコンピュータに実行させるためのプログラム。
- 請求項1、11、12のいずれかに記載した方法の各過程をコンピュータに実行させるプログラムを記録したコンピュータ読取可能な記録媒体。
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 true JPWO2006062142A1 (ja) | 2008-06-12 |
JP4328358B2 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) | EP2487798B1 (ja) |
JP (1) | JP4328358B2 (ja) |
CN (1) | CN101069354B (ja) |
WO (1) | WO2006062142A1 (ja) |
Families Citing this family (38)
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 |
CN102388404B (zh) * | 2009-04-09 | 2014-01-01 | 汤姆森特许公司 | 编码和解码每个码元可具有三个或更多可能码元值中的一个码元值的码元序列的方法和装置 |
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 | 富士ゼロックス株式会社 | 画像処理装置及び画像処理プログラム |
WO2012137617A1 (ja) * | 2011-04-05 | 2012-10-11 | 日本電信電話株式会社 | 符号化方法、復号方法、符号化装置、復号装置、プログラム、記録媒体 |
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 | 三菱電機株式会社 | 符号化装置、復号装置、符号化方法、符号化プログラム、復号方法および復号プログラム |
WO2014097359A1 (ja) | 2012-12-19 | 2014-06-26 | 富士通株式会社 | 圧縮プログラム、圧縮方法、圧縮装置およびシステム |
US9087070B2 (en) * | 2013-01-31 | 2015-07-21 | Yahoo! Inc. | System and method for applying an efficient data compression scheme to URL parameters |
AU2013382911A1 (en) * | 2013-03-22 | 2015-10-15 | Fujitsu Limited | Compression device, compression method, dictionary generation device, dictionary generation method, expansion device, expansion method, expansion program, and information processing system |
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 | 富士通株式会社 | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置 |
KR101906036B1 (ko) * | 2017-02-08 | 2018-10-08 | 국방과학연구소 | Lz78 압축 데이터의 오류 검출 방법 및 이를 이용한 인코더 |
JP7003443B2 (ja) * | 2017-05-16 | 2022-01-20 | 富士通株式会社 | 符号化プログラム、符号化装置および符号化方法 |
US12039164B2 (en) | 2017-10-30 | 2024-07-16 | AtomBeam Technologies Inc. | System and method for personal health monitor data compaction using multiple encoding algorithms |
US11232076B2 (en) | 2017-10-30 | 2022-01-25 | AtomBeam Technologies, Inc | System and methods for bandwidth-efficient cryptographic data transfer |
US11385794B2 (en) * | 2017-10-30 | 2022-07-12 | AtomBeam Technologies Inc. | System and method for data compaction and security using multiple encoding algorithms |
US11687241B2 (en) * | 2017-10-30 | 2023-06-27 | AtomBeam Technologies Inc. | System and method for data compaction utilizing mismatch probability estimation |
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 |
US10476519B2 (en) * | 2017-10-30 | 2019-11-12 | AtomBeam Technologies Inc. | System and method for high-speed transfer of small data sets |
US10509771B2 (en) * | 2017-10-30 | 2019-12-17 | AtomBeam Technologies Inc. | System and method for data storage, transfer, synchronization, and security using recursive encoding |
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0682370B2 (ja) * | 1987-05-26 | 1994-10-19 | シャープ株式会社 | 文字処理装置 |
MY109855A (en) * | 1990-09-19 | 1997-09-30 | Koninklijke Philips Electronics Nv | Method of recording picture information, record carrier and picture retrieval and reproduction device for reading the record carrier |
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 |
-
2005
- 2005-12-07 JP JP2006546744A patent/JP4328358B2/ja active Active
- 2005-12-07 WO PCT/JP2005/022495 patent/WO2006062142A1/ja active Application Filing
- 2005-12-07 EP EP12162402.7A patent/EP2487798B1/en active Active
- 2005-12-07 US US11/720,671 patent/US7667630B2/en active Active
- 2005-12-07 CN CN2005800412227A patent/CN101069354B/zh active Active
- 2005-12-07 EP EP05814486.6A patent/EP1821414B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP2487798B1 (en) | 2016-08-10 |
EP1821414B1 (en) | 2016-06-22 |
JP4328358B2 (ja) | 2009-09-09 |
EP2487798A1 (en) | 2012-08-15 |
EP1821414A4 (en) | 2008-07-23 |
CN101069354B (zh) | 2010-04-14 |
WO2006062142A1 (ja) | 2006-06-15 |
EP1821414A1 (en) | 2007-08-22 |
US20090002207A1 (en) | 2009-01-01 |
CN101069354A (zh) | 2007-11-07 |
US7667630B2 (en) | 2010-02-23 |
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 | |
US20070139235A1 (en) | Floating point signal reversible encoding method, decoding method, device thereof, program, and recording medium thereof | |
WO2002103685A1 (fr) | Appareil et procede de codage, appareil et procede de decodage et programme | |
KR100771401B1 (ko) | 프로그래머블 프로세서에서 mpeg-2 또는 mpeg-4aac 오디오 복호 알고리즘을 처리하기 위한 연산 회로및 연산 방법 | |
JP4093193B2 (ja) | データ圧縮方法及びプログラムならびにデータ復元方法及び装置 | |
Atwal et al. | Fast Lempel Ziv (LZ'78) Algorithm Using Codebook Hashing | |
WO2011003233A1 (zh) | 编码方法、装置与***、解码方法、装置与*** | |
JPH0990989A (ja) | 変換符号化方法および変換復号化方法 | |
JP2004120623A (ja) | 符号化装置、符号化方法、復号装置及び復号方法 | |
Sugiura et al. | Shape Control of Discrete Generalized Gaussian Distributions for Frequency-Domain Audio Coding | |
JPH03209923A (ja) | データ圧縮方式 | |
JPS6356020A (ja) | 圧縮復号化装置 | |
KR100322702B1 (ko) | 스펙트럼피크패턴을이용한음성신호의양자화및복호화방법 | |
Tabus et al. | Using context dependent distributions for coding prediction residuals of companded audio signals | |
Agulhari et al. | Lossless compression applied to sequences of bits |
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 |