JP2012124679A - 符号化データを復号する装置及び方法 - Google Patents
符号化データを復号する装置及び方法 Download PDFInfo
- Publication number
- JP2012124679A JP2012124679A JP2010272970A JP2010272970A JP2012124679A JP 2012124679 A JP2012124679 A JP 2012124679A JP 2010272970 A JP2010272970 A JP 2010272970A JP 2010272970 A JP2010272970 A JP 2010272970A JP 2012124679 A JP2012124679 A JP 2012124679A
- Authority
- JP
- Japan
- Prior art keywords
- bit
- bit length
- order
- symbols
- length
- 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
Images
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/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4031—Fixed length to variable length coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
-
- 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
-
- 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/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- 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/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【解決手段】ハフマンテーブル復号回路において、ビット長が入力されるごとに、カウンタ32が、そのビット長に対応する文字コードをData In信号として出力し、ポインタテーブル33が、そのビット長に対応する記号の数及びポインタを出力し、加算回路34が、それらを加算した結果をInsert Address信号として出力する。これにより、インサート機能付シフトメモリ回路31は、Insert Address信号のアドレスより前のアドレスにある文字コードは動かさず、Insert Address信号のアドレスにData In信号の文字コードを格納し、Insert Address信号のアドレス以降のアドレスにある文字コードは後ろにシフトする。
【選択図】図11
Description
そのため、ハフマン符号化では、各文字に割り当てた符号を保持するハフマンテーブルを作成し、圧縮データに付加しておく。そして、圧縮データの復号は、このハフマンテーブルを参照して行う。
具体的には、deflate圧縮では、ハフマンテーブルにおいて、各文字に割り当てた符号を保持するのではなく、各文字に割り当てた符号の長さ(ビット長)を保持する。同じビット長のグループの中での符号の割り振り方を、ASCIIコード順(対象がアルファベットであればアルファベット順)と定義することにより、ビット長から一意に符号を決定することが可能である。例えば、A,C,Dに割り当てられたビット長が何れも「3」であった場合、Aの符号が「100」と決まれば、C,Dは、それぞれ順番に「1」を加算することにより、「101」、「110」と決定することができる。
特許文献1では、まず復号に際し最初に取り込むべき符号ビット数を復号化テーブルに書き込み、次に符号の木の“根”を着目節点とし、その着目節点の“子”が“葉(終端節点)”か中間節点かを判定し、“葉”ならばそれに対応する事象値を返すような復号終了命令を復号化テーブルに書き込み、中間節点ならば復号に際し次にアクセスすべきアドレス及び取り出すべき符号ビット数を返すような復号継続命令を復号化テーブルに書き込んでその“子”を新たな着目節点とみなして再帰的に以上の動作を繰り返す。
特許文献2では、符号データ取込部が、外部から供給される符号のビット列を取り込み、一定のビット長の符号データを形成し、ハフマン復号用ルックアップテーブルが、符号データ取込部により形成される符号データを受けて、その符号データの上位ビットの符号に対応する復号データとその符号のビット長を出力するハフマン復号化回路において、符号データ取込部が、ハフマン復号用ルックアップテーブルから出力されるビット長のビットだけ上位のデータを捨てて、代わりに新たに外部から供給されるデータを取り込み、一定のビット長の符号データを形成する。
しかしながら、このソーティングの処理は、符号の数だけ繰り返し行わなければならない。そのため、符号の数が多い場合には処理時間が増大してしまう。
尚、特許文献1、2の技術は、各文字にビット長を割り当てたハフマンテーブルを作成し、ビット長に基づいて各文字を復号する場合のこのような問題点に着目したものではない。
また、複数のビット長は、記号に関する所定の順序で入力され、第2の生成部は、特定のビット長の入力の順番に応じて、特定のビット長に対応する記号を決定する、ものであってよい。
更に、記録部は、特定のビット長の入力に応じて、特定のビット長と異なる各ビット長に対応する記号の数は変更せずに、特定のビット長と同じビット長に対応する記号の数を増加させる、ものであってよい。
[deflate圧縮におけるハフマンテーブルの圧縮方法]
図1は、本実施の形態で用いるハフマンテーブルの具体例について、その圧縮方法を示した図である。
図において、太矢印の左側は圧縮前のハフマンテーブルを、太矢印の右側は圧縮後のハフマンテーブルを示す。即ち、圧縮前のハフマンテーブルでは、各文字に対して符号を割り当てているが、圧縮後のハフマンテーブルでは、各文字に対して、符号の代わりに符号のビット長を割り当てている。具体的には、Eに対して、「00」の代わりに「2」を割り当て、A,B,D,Iに対して、「010」、「011」、「100」、「101」の代わりに「3」を割り当て、F,Hに対して、「1100」、「1101」の代わりに「4」を割り当て、C,G,J,Kに対して、「11100」、「11101」、「11110」、「11111」の代わりに「5」を割り当てている。尚、一般には、文字列に対して符号やビット長を割り当てることも可能であるが、本実施の形態では、文字に対して符号やビット長を割り当てるものとして説明する。
図2は、本実施の形態におけるハフマン復号装置の構成例を示した図である。
このハフマン復号装置としては、例えば、圧縮されたデータを解凍しウイルスチェック等を行って再び圧縮する処理をすばやく行うことが要求されるルータ等の通信機器が例示されるが、PC(Personal Computer)等の一般的なコンピュータであってもよい。
図示するように、ハフマン復号装置は、ハフマンテーブル復号回路100と、ハフマンテーブル分離回路200と、ハフマン復号回路300とを含む。
尚、本実施の形態では、「文字」と称しているが、これは記号の一例として用いているに過ぎず、数字や、文字及び数字以外の記号(狭義の記号)にも本発明は適用可能である。但し、以下では、簡略化のため、文字、特にアルファベットを例にとり説明する。
使用回数算出回路10は、圧縮ハフマンテーブルデータが入力されると、各ビット長の使用回数(ビット長ごとのアルファベットの数)を算出すると共に、アルファベットごとのビット長を格納する圧縮ハフマンテーブルを作成する。
符号算出回路20は、使用回数算出回路10により算出された各ビット長の使用回数に基づいて、ビット長ごとに使用される最小符号及び最大符号を格納する符号テーブルを作成する。
復号用データ算出回路30は、圧縮ハフマンテーブルデータに基づいて、復号用ハフマンテーブルデータを算出すると共に、符号算出回路20により作成された符号テーブルに基づいて、復号に用いられる符号テーブルのデータ(以下、「復号用符号テーブルデータ」という)を算出する。
(使用回数算出回路10)
図3は、一般的な使用回数算出回路10について示した図である。
図には、使用回数算出回路10に対して、圧縮ハフマンテーブルデータ「3,3,5,3,2,4,5,4,3,5,5」が入力されていることが示されている。この場合、圧縮ハフマンテーブルデータにおける1つのビット長が1クロックで入力されるものとする。すると、セレクタ11が、入力されたビット長ごとに、そのビット長に対応するbl_count[M]にその時点で格納されていた数を取り出す。そして、カウンタ12が、取り出された数に「1」を加算した数を元のbl_count[M]に格納する。
これにより、入力されたビット長ごとに、その使用回数がbl_count[M]に格納される。図の例では、全てのデータが入力された時点で、bl_count[2]、bl_count[3]、bl_count[4]、bl_count[5]に「1」、「4」、「2」、「4」が格納される。
尚、bl_count[M]に格納された値は、同じビット長に対応する記号の数の一例である。また、本実施の形態では、記号の数を記録する記録部の一例として、使用回数算出回路10を設けている。
図4は、圧縮ハフマンテーブルの一例を示した図である。
図示するように、圧縮ハフマンテーブルは、アルファベットとビット長とを対応付けたものであり、入力された圧縮ハフマンテーブルデータを入力順に記録することにより作成される。圧縮ハフマンテーブルデータにおいて、複数のビット長は、各ビット長が割り当てられたアルファベットの順に並んでいるので、圧縮ハフマンテーブルにおいても、アルファベットの順に対応するビット長が並んでいる。
図5は、一般的な符号算出回路20について説明するための図である。
上述したように、使用回数算出回路10の処理で、図3のbl_count[M]及び図4の圧縮ハフマンテーブルが作成される。
次に、符号算出回路20は、各ビット長の最小符号code_minを、bl_count[M]に基づいて割り振る。また、各ビット長の最大符号code_maxも決定する。
具体的には、(a)に示す式により、code_minが決定される。尚、この式は、RFC1951に定義されており、bl_count[M]に基づいて、符号長を最も短くする割り振りが可能なように最適化されたものである。詳細は省略するが、「code = (code + bl_count[bits-1]) << 1」の計算を行えばよい。
また、code_max[M]は、「code_min[M] + bl_count[M] - 1」により求めることができる。
本実施の形態で用いる例では、各ビット長の最小符号code_min[M]及び最大符号code_max[M]は(c)の符号テーブルに示したようになる。この場合、最大ビット長をBとすると、処理時間はO(B)となる。この例では、B=5(clock)であるが、RFC1951において、最大のビット長は「15」と定義されているため、最大値は、B=15(clock)である。
符号算出回路20の処理の結果を参照すると、ハフマン復号回路300に入力される圧縮後データに含まれる符号のビット長が分かるので、図4の圧縮ハフマンテーブルから、各アルファベットに割り当てられた符号を求めることは可能である。但し、図4の圧縮ハフマンテーブルは、ビット長ごとに整理されていないため、検索するためには扱い難い。そこで、復号用データ算出回路30は、図4の圧縮ハフマンテーブルをビット長順に、ビット長が同じときはASCIIコード順にソーティングを行う。
図において、太矢印の左側は圧縮ハフマンテーブルを、太矢印の右側はソート後の圧縮ハフマンテーブル(復号用ハフマンテーブル)を示す。
図示するように、復号用ハフマンテーブルも、圧縮ハフマンテーブルと同様、アルファベットとビット長とを対応付けたものである。但し、復号用ハフマンテーブルは、圧縮ハフマンテーブルをビット長の順にソーティングして得られたものなので、復号用ハフマンテーブルにおいて、複数のアルファベットは、対応するビット長の順に並んでいる。
尚、図では、各ビット長の先頭を表すために、各アルファベットの情報が格納されたアドレスも示している。
このようにソーティングを行い、アルファベットをビット長の順に並べた復号用ハフマンテーブルを別途作成しておけば、検索が容易になる。具体的には、入力された圧縮後データにおける符号からcode_minを引くことにより、アルファベットを簡単に検索することができる。
図7は、このようにポインタを追加した符号テーブル(以下、「復号用符号テーブル」という)を示したものである。
図6右側の復号用ハフマンテーブルと図7の復号用符号テーブルとからハフマンテーブルを復号するには、復号用ハフマンテーブルのビット長ごとに、復号用符号テーブルのそのビット長に対応するcode_minからcode_maxまでの符号を順番に割り当てていけばよい。
まず、使用回数算出回路10は、ハフマンテーブルのデータをそのまま流せば完了する。ところが、全てのデータを流し終えた後、符号算出回路20で最大15クロック、復号用データ算出回路30で最大286クロックかかるため、合計で301クロック後でなければ、ハフマンテーブルの復号が完了しない。
圧縮ハフマンテーブルから復号用ハフマンテーブルを生成し、この復号用ハフマンテーブルを用いて圧縮データを復号し、この圧縮データの復号と並行して、次の復号用ハフマンテーブルを生成する、というパイプライン処理をスムーズに行うことができれば、圧縮データの解凍もスムーズに行うことができる。しかしながら、全てのデータを流し終えた後、復号用ハフマンテーブルを得るまでに最大301クロックもかかっていたのでは、パイプライン処理はスムーズに行えない。即ち、復号用データ算出回路30の処理が、パイプライン処理を行う上でボトルネックとなっている。
本実施の形態は、復号用データ算出回路30の処理を高速化する。復号用データ算出回路30におけるハフマンテーブルは、ハフマン復号を効率よく行うために必要である。そのために、ビット長のグループごとに予めソーティングしたテーブルとして作成しておく必要がある。一般的な復号用データ算出回路30は、まず図6左側のアルファベット順の圧縮ハフマンテーブルを作成し、次にソーティングを行い、図6右側の復号用ハフマンテーブルを作成する。しかしながら、このようなソーティング処理には最低286クロックが必要となる。
これに対して、本実施の形態では、ダイレクトにソーティングされたテーブルを作成する。そのために、インサート機能付シフトメモリ回路(レジスタ)を使用する。
このインサート機能付シフトメモリ回路31は、通常のメモリと同様に任意のアドレスに読み書きできるだけでなく、書き込んだアドレス以降の内容をシフトできるという特徴を有する。例えば、インサート機能付シフトメモリ回路31が16バイトであるとすると、10番地のアドレスにデータを書き込むのと同時に、それまで10番地から14番地に記憶されていた内容を11番地から15番地にシフトして書き込むことができる。因みに、15番地に記憶されていた内容はシフトアウトされて消去される。
図示するように、インサート機能付シフトメモリ回路31は、図6右側のソーティングされたハフマンテーブル(復号用ハフマンテーブル)として使用される。また、各ビット長が割り当てられたアルファベットの数を格納するNum部と、各ビット長に対応する文字コードが最初に格納されているアドレスを格納するPointer部とからなるポインタテーブルを用意しておく。
Num部には、ビット長「1」、「2」、「3」、「4」、「5」に対して、各ビット長に割り当てられたアルファベットの数「0」、「1」、「3」、「1」、「1」が格納されている。
Pointer部には、ビット長「1」、「2」、「3」、「4」、「5」に対して、各ビット長に割り当てられたアルファベットの復号用ハフマンテーブルにおける格納アドレス「0」、「0」、「1」、「4」、「5」が格納されている。
図10−1及び図10−2は、このような手順の例を示した図である。ここでも、A,B,C,D,E,Fに対するビット長として「3,3,5,3,2,4」が入力された場合の復号を例にとって説明する。
まず、リセット直後はどちらのテーブルも空の状態である。
次に、Aに対するビット長として「3」が入力されたとする。すると、(a)に示すように、復号用ハフマンテーブルの0番値にAの文字コードが格納される。このとき、ポインタテーブルでは、Num部の3ビット長に対する値が「1」となり、Pointer部の4ビット長、5ビット長に対する値が「1」となる。
図11は、本実施の形態における復号用データ算出回路30について示した図である。
図示するように、入力されたビット長の列は、カウンタ32へ入力される。これにより、カウンタ32は、ASCIIコードの最小値である0を起点として、1つビット長が入力されるごとにカウントし、カウントした結果(つまり、ASCIIコード)をData In信号として、インサート機能付シフトメモリ回路31に供給する。
一方で、入力されたビット長の列は、ポインタテーブル33へも入力される。このポインタテーブル33については後で詳しく述べるが、このポインタテーブル33からPointer信号及びNum信号が出力されると、加算回路34がこれらの信号の値を加算し、加算した結果をInsert Address信号としてインサート機能付シフトメモリ回路31に供給する。
これにより、インサート機能付シフトメモリ回路31は、図8を参照して述べたような動作を行い、入力されたビット長に対応する文字コードを、ビット長の順にソーティングした状態でフリップフロップ42−1,42−2,…に保持する。
図12は、本実施の形態におけるPointer部の回路の一例を示した図である。尚、ここでは、入力されるビット長の最大値が「15」である場合の回路を示しているが、入力されるビット長の最大値はこれに限らない。
この回路において、セレクタ51−Mは、Pointer[M]が保持する値、及び、Pointer[M]が保持する値にインクリメンタ52−Mによって「1」が加算された値のうち、何れかを選択する。この何れを選択すべきかを指示するのがデコーダ53であり、デコーダ53は、入力されたビット長に応じた15ビットの信号を出力する。ここで、この15ビットの信号は、入力されたビット長をKとすると、1ビット目からKビット目までが「0」であり、その他が「1」である信号である。例えば、入力されたビット長が1であれば、「011111111111111」であり、入力されたビット長が2であれば、「001111111111111」であり、入力されたビット長が15であれば、「000000000000000」である。そして、この15ビットのうち、Kビット目の信号が、セレクタ51−Kに供給される。1ビット目の信号は、入力されたビット長に関わらず「0」となるので、図ではデコーダからの出力線のみ示したが、これは設けなくてもよい。このような構成により、入力されたビット長がKの場合、M≦Kであれば、Pointer[M]はカウントアップされず、M>Kであれば、Pointer[M]はカウントアップされる。尚、Pointer[M]の初期値は、図示するように「0」である。
また、入力されたビット長は、セレクタ54にも出力され、セレクタ54は、入力されたビット長に対応するPointer[M]をPointer信号として加算回路34(図11参照)に出力する。
図13は、本実施の形態におけるNum部の回路の一例を示した図である。尚、ここでも、入力されるビット長の最大値が「15」である場合の回路を示しているが、入力されるビット長の最大値はこれに限らない。
この回路において、セレクタ56−Mは、Num[M]が保持する値、及び、セレクタ59(後述)から出力された値にインクリメンタ57によって「1」が加算された値のうち、何れかを選択する。この何れを選択すべきかを指示するのがデコーダ58であり、デコーダ58は、入力されたビット長に応じた15ビットの信号を出力する。ここで、この15ビットの信号は、入力されたビット長をKとすると、Kビット目が「1」であり、その他が「0」である信号である。例えば、入力されたビット長が1であれば、「100000000000000」であり、入力されたビット長が2であれば、「010000000000000」であり、入力されたビット長が15であれば、「000000000000001」である。そして、この15ビットのうち、Kビット目の信号が、セレクタ56−Kに供給される。このような構成により、入力されたビット長がKの場合、M=Kであれば、Num[M]はカウントアップされ、M≠Kであれば、Num[M]はカウントアップされない。尚、Num[M]の初期値は、図示するように「0」である。
また、入力されたビット長は、セレクタ59にも出力され、セレクタ59は、入力されたビット長に対応するNum[M]をNum信号として加算回路34(図11参照)に出力する。
図14は、このときの動作の流れを示したフローチャートである。尚、この動作の流れは、上記のように復号用データ算出回路30の処理の後に符号算出回路20の処理を行う構成を前提としている。
図示するように、本実施の形態におけるハフマン復号装置では、ハフマンテーブル分離回路200が、圧縮ハフマンテーブルデータと圧縮後データとからなるデータを受信すると、これらを分離する(ステップ101)。
その結果、未処理のビット長があると判定された場合、復号用データ算出回路30は、この未処理のビット長を取り込み、ビット長の入力順をカウンタ32によって文字コードに変換することにより、Data In信号を求める(ステップ103)。
次に、復号用データ算出回路30は、ポインタテーブル33において、取り込んだビット長よりも長いビット長に対応するPointer[M]に「1」を加算し(ステップ104)、取り込んだビット長に対応するNum[M]に「1」を加算する(ステップ105)。そして、取り込んだビット長に対応するPointer[M]及びNum[M]を加算回路34によって加算することにより、Insert Address信号を求める(ステップ106)。
これにより、復号用データ算出回路30は、Data In信号で指定された文字コードを、インサート機能付シフトメモリ回路31のInsert Address信号で指定されたアドレスに挿入する(ステップ107)。
尚、本実施の形態では、「ビット長の順」といった場合、ビット長が短い順を意味するものとしたが、ビット長が長い順を意味するものとしても、ビット長に関するその他の順序を意味するものとしてもよい。即ち、「ビット長の順」は、より一般的には「ビット長に関する所定の順序」と捉えることができる。
また、本実施の形態において、ビット長の入力順序は対応する文字のASCIIコード順としたが、この入力順序も、より一般的に「記号に関する所定の順序」と捉えてよい。
Claims (7)
- 複数の記号の各記号を複数のビット列の当該各記号に対応するビット列に置き換えることで符号化した符号化データを復号するための復号用情報を生成する回路であって、
前記複数の記号の各記号に対応するビット列のビット長からなる複数のビット長を定義した定義情報に基づいて、当該複数のビット長の同じビット長に対応する記号の数を記録する記録部と、
前記記録部により記録された前記記号の数に基づいて、前記複数のビット列をビット長に関する所定の順序であるビット長順序で並べるためのビット列情報を前記復号用情報として生成する第1の生成部と、
前記定義情報で定義された前記複数のビット長のうちの特定のビット長の入力に応じて、当該特定のビット長に対応する記号を、当該複数のビット長のうちの当該特定のビット長以前に入力された少なくとも1つのビット長を前記ビット長順序で並べたときの当該特定のビット長の順番に挿入することにより、前記複数の記号を当該ビット長順序で並べた記号情報を前記復号用情報として生成する第2の生成部と
を含む、回路。 - 前記第1の生成部は、前記複数のビット長の各ビット長を有するビット列の基準となる基準ビット列からなる複数の基準ビット列を前記ビット列情報として生成し、
前記第2の生成部は、前記特定のビット長の入力に応じて、前記複数のビット長のうちの当該特定のビット長以前に入力された少なくとも1つのビット長のうち、前記ビット長順序で当該特定のビット長より前にある各ビット長及び当該特定のビット長と同じビット長を有する基準ビット列の順番は変更せずに、前記ビット長順序で当該特定のビット長より後ろにある各ビット長を有する基準ビット列の順番を後ろにずらすことにより、前記複数の基準ビット列の各基準ビット列に対応する記号の前記記号情報における順番を示す順番情報を前記復号用情報として更に生成する、請求項1の回路。 - 前記複数のビット長は、記号に関する所定の順序で入力され、
前記第2の生成部は、前記特定のビット長の入力の順番に応じて、当該特定のビット長に対応する記号を決定する、請求項1又は請求項2の回路。 - 前記記録部は、前記特定のビット長の入力に応じて、当該特定のビット長と異なる各ビット長に対応する記号の数は変更せずに、当該特定のビット長と同じビット長に対応する記号の数を増加させる、請求項1乃至請求項3の何れかの回路。
- 複数の記号の各記号を複数のビット列の当該各記号に対応するビット列に置き換えるハフマン符号化を行ったハフマン符号化データを復号するための復号用情報を、当該各記号に対応するビット列のビット長からなる複数のビット長を記号のコード順に並べて定義したハフマンテーブルに基づいて生成する回路であって、
前記ハフマンテーブルで定義された前記複数のビット長のうちの特定のビット長の入力に応じて、当該特定のビット長と異なる各ビット長に対応する記号の数は変更せずに、当該特定のビット長と同じビット長に対応する記号の数を増加させることにより、当該複数のビット長の同じビット長に対応する記号の数を記録する記録部と、
前記記録部により記録された前記記号の数に基づいて、前記複数のビット長の各ビット長を有する最小ビット列からなる複数の最小ビット列を前記復号用情報として生成する第1の生成部と、
前記ハフマンテーブルで定義された前記複数のビット長のうちの特定のビット長の入力に応じて、当該特定のビット長に対応する記号を、当該複数のビット長のうちの当該特定のビット長以前に入力された少なくとも1つのビット長をビット長が短い順でビット長が同じときは対応する記号のコード順に並べたときの当該特定のビット長の順番に挿入することにより、前記複数の記号を対応するビット長が短い順でビット長が同じときは記号のコード順に並べた記号情報を前記復号用情報として生成し、かつ、当該複数のビット長のうちの当該特定のビット長以前に入力された少なくとも1つのビット長のうち、当該特定のビット長以下の各ビット長を有する最小ビット列の順番は変更せずに、当該特定のビット長より大きい各ビット長を有する最小ビット列の順番を後ろにずらすことにより、前記複数の最小ビット列の各最小ビット列に対応する記号の当該記号情報における順番を示す順番情報を前記復号用情報として生成する第2の生成部と
を含む、回路。 - 複数の記号の各記号を複数のビット列の当該各記号に対応するビット列に置き換えることで符号化した符号化データを復号する装置であって、
前記複数の記号の各記号に対応するビット列のビット長からなる複数のビット長を定義した定義情報が付加された前記符号化データから、当該定義情報を抽出する抽出部と、
前記抽出部により抽出された前記定義情報に基づいて、前記複数のビット長の同じビット長に対応する記号の数を記録する記録部と、
前記記録部により記録された前記記号の数に基づいて、前記複数のビット列をビット長に関する所定の順序であるビット長順序で並べるためのビット列情報を生成する第1の生成部と、
前記抽出部により抽出された前記定義情報で定義された前記複数のビット長のうちの特定のビット長の入力に応じて、当該特定のビット長に対応する記号を、当該複数のビット長のうちの当該特定のビット長以前に入力された少なくとも1つのビット長を前記ビット長順序で並べたときの当該特定のビット長の順番に挿入することにより、前記複数の記号を当該ビット長順序で並べた記号情報を生成する第2の生成部と、
前記符号化データに含まれるビット列を、前記第1の生成部により生成された前記ビット列情報と、前記第2の生成部により生成された前記記号情報とに基づいて、当該ビット列に対応する記号に変換する変換部と
を含む、装置。 - 複数の記号の各記号を複数のビット列の当該各記号に対応するビット列に置き換えることで符号化した符号化データを復号する方法であって、
前記複数の記号の各記号に対応するビット列のビット長からなる複数のビット長を定義した定義情報が付加された前記符号化データから、当該定義情報を抽出するステップと、
抽出された前記定義情報に基づいて、前記複数のビット長の同じビット長に対応する記号の数を記録するステップと、
記録された前記記号の数に基づいて、前記複数のビット列をビット長に関する所定の順序であるビット長順序で並べるためのビット列情報を生成するステップと、
抽出された前記定義情報で定義された前記複数のビット長のうちの特定のビット長の入力に応じて、当該特定のビット長に対応する記号を、当該複数のビット長のうちの当該特定のビット長以前に入力された少なくとも1つのビット長を前記ビット長順序で並べたときの当該特定のビット長の順番に挿入することにより、前記複数の記号を当該ビット長順序で並べた記号情報を生成するステップと、
前記符号化データに含まれるビット列を、前記ビット列情報と前記記号情報とに基づいて、当該ビット列に対応する記号に変換するステップと
を含む、方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010272970A JP5656593B2 (ja) | 2010-12-07 | 2010-12-07 | 符号化データを復号する装置及び方法 |
US13/313,772 US8542137B2 (en) | 2010-12-07 | 2011-12-07 | Decoding encoded data |
US13/669,612 US8947272B2 (en) | 2010-12-07 | 2012-11-06 | Decoding encoded data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010272970A JP5656593B2 (ja) | 2010-12-07 | 2010-12-07 | 符号化データを復号する装置及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012124679A true JP2012124679A (ja) | 2012-06-28 |
JP5656593B2 JP5656593B2 (ja) | 2015-01-21 |
Family
ID=46161731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010272970A Expired - Fee Related JP5656593B2 (ja) | 2010-12-07 | 2010-12-07 | 符号化データを復号する装置及び方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US8542137B2 (ja) |
JP (1) | JP5656593B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107682018A (zh) * | 2017-09-28 | 2018-02-09 | 西安万像电子科技有限公司 | 解码方法及装置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5656593B2 (ja) * | 2010-12-07 | 2015-01-21 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 符号化データを復号する装置及び方法 |
CN103186363B (zh) * | 2013-03-26 | 2015-09-30 | 北京经纬恒润科技有限公司 | 一种数值编辑方法及系统 |
CN107797541B (zh) * | 2016-08-29 | 2020-11-10 | 河北百亚信息科技有限公司 | 基于智能家居环境中ZigBee固件升级的镜像文件轻便解压算法 |
US10270464B1 (en) | 2018-03-30 | 2019-04-23 | Intel Corporation | Method and apparatus for high performance compression and decompression |
CN114500670B (zh) * | 2022-02-28 | 2024-04-05 | 北京京东振世信息技术有限公司 | 一种编码压缩方法、解码方法及装置 |
CN115658628B (zh) * | 2022-12-19 | 2023-03-21 | 武汉惠强新能源材料科技有限公司 | 用于mes系统的生产数据智能管理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0250667B2 (ja) * | 1984-09-27 | 1990-11-05 | Mitsubishi Electric Corp | |
JP2001044849A (ja) * | 1999-07-27 | 2001-02-16 | Canon Inc | 復号化装置及び方法 |
JP2001084707A (ja) * | 1999-09-10 | 2001-03-30 | Toshiba Corp | 可変長符号の復号方法、復号装置及び可変長符号の復号プログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP2010258532A (ja) * | 2009-04-21 | 2010-11-11 | Internatl Business Mach Corp <Ibm> | ビット長を符号に変換する回路及び方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07170197A (ja) | 1993-12-13 | 1995-07-04 | Ricoh Co Ltd | 可変長符号の復号化テーブル自動生成方法 |
JP3397431B2 (ja) * | 1994-03-16 | 2003-04-14 | 富士通株式会社 | データ圧縮方法および装置ならびにデータ復元方法および装置 |
JPH08167855A (ja) | 1994-12-15 | 1996-06-25 | Fuji Film Micro Device Kk | ハフマン復号化回路 |
JP5656593B2 (ja) * | 2010-12-07 | 2015-01-21 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 符号化データを復号する装置及び方法 |
-
2010
- 2010-12-07 JP JP2010272970A patent/JP5656593B2/ja not_active Expired - Fee Related
-
2011
- 2011-12-07 US US13/313,772 patent/US8542137B2/en not_active Expired - Fee Related
-
2012
- 2012-11-06 US US13/669,612 patent/US8947272B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0250667B2 (ja) * | 1984-09-27 | 1990-11-05 | Mitsubishi Electric Corp | |
JP2001044849A (ja) * | 1999-07-27 | 2001-02-16 | Canon Inc | 復号化装置及び方法 |
JP2001084707A (ja) * | 1999-09-10 | 2001-03-30 | Toshiba Corp | 可変長符号の復号方法、復号装置及び可変長符号の復号プログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP2010258532A (ja) * | 2009-04-21 | 2010-11-11 | Internatl Business Mach Corp <Ibm> | ビット長を符号に変換する回路及び方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107682018A (zh) * | 2017-09-28 | 2018-02-09 | 西安万像电子科技有限公司 | 解码方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20120139763A1 (en) | 2012-06-07 |
JP5656593B2 (ja) | 2015-01-21 |
US8542137B2 (en) | 2013-09-24 |
US8947272B2 (en) | 2015-02-03 |
US20130063287A1 (en) | 2013-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5656593B2 (ja) | 符号化データを復号する装置及び方法 | |
KR100894002B1 (ko) | 선택적 압축과 복원 및 압축 데이터에 대한 데이터 포맷을위한 장치 및 방법 | |
KR101049699B1 (ko) | 데이터의 압축방법 | |
JP3278297B2 (ja) | データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置 | |
US4814746A (en) | Data compression method | |
JP5895545B2 (ja) | プログラム、圧縮ファイル生成方法、圧縮符号伸張方法、情報処理装置、および記録媒体 | |
CN100576753C (zh) | 静态赫夫曼解码的系统和方法 | |
US10547324B2 (en) | Data compression coding method, apparatus therefor, and program therefor | |
JP3778087B2 (ja) | データ符号化装置及びデータ復号装置 | |
US9094039B2 (en) | Efficient deflate decompression | |
CN104579360B (zh) | 一种数据处理的方法和设备 | |
JP6681313B2 (ja) | データを符号化するための方法、コンピュータ・プログラムおよびシステム | |
EP0127815B1 (en) | Data compression method | |
Reznik | Coding of sets of words | |
JP4758494B2 (ja) | ビット長を符号に変換する回路及び方法 | |
Mathpal et al. | A research paper on lossless data compression techniques | |
WO2007108395A1 (ja) | 可変長符号の復号装置および復号方法 | |
US20090083267A1 (en) | Method and System for Compressing Data | |
JPH0764765A (ja) | データ圧縮装置及びデータ復元装置 | |
JP4953145B2 (ja) | 文字列データ圧縮装置及びその方法並びに文字列データ復元装置及びその方法 | |
JP5149454B1 (ja) | Ykm形式圧縮プログラムを記録した記録媒体 | |
Zia et al. | Two-level dictionary-based text compression scheme | |
Pannirselvam et al. | A Comparative Analysis on Different Techniques in Text Compression | |
JP5857978B2 (ja) | 符号化装置、復号装置、符号化・復号システム、及びプログラム | |
Choe | Data Compression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130904 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140715 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140918 |
|
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: 20141111 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20141111 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141125 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5656593 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |