JP2012124679A - 符号化データを復号する装置及び方法 - Google Patents

符号化データを復号する装置及び方法 Download PDF

Info

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
Application number
JP2010272970A
Other languages
English (en)
Other versions
JP5656593B2 (ja
Inventor
Nobuyasu Tanaka
伸宜 田中
Kiyoshi Takemura
潔 竹村
Makoto Ogawa
誠 小川
Tadayuki Okada
忠幸 岡田
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2010272970A priority Critical patent/JP5656593B2/ja
Priority to US13/313,772 priority patent/US8542137B2/en
Publication of JP2012124679A publication Critical patent/JP2012124679A/ja
Priority to US13/669,612 priority patent/US8947272B2/en
Application granted granted Critical
Publication of JP5656593B2 publication Critical patent/JP5656593B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • 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
    • 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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • 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/46Conversion 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圧縮(RFC1951)は、現在コンピュータで広く用いられているデータ圧縮形式であるZLIB(RFC1950)、GZIP(RFC1952)のベースとなる圧縮方法であり、ハフマン符号化という符号化技術を用いてデータを圧縮する。ハフマン符号化では、データ内に繰り返し現れるバイト単位の文字に、出現頻度に応じて可変長の符号を割り当てる。この際、出現頻度の高い文字には短いビット長の符号を、出現頻度の低い文字には長いビット長の符号を割り当てることで、より効率的な符号化を行う。
そのため、ハフマン符号化では、各文字に割り当てた符号を保持するハフマンテーブルを作成し、圧縮データに付加しておく。そして、圧縮データの復号は、このハフマンテーブルを参照して行う。
ところが、このように圧縮データにハフマンテーブルを付加する場合、このハフマンテーブルのサイズが大きいと圧縮率が悪くなってしまう。それを改善するため、deflate圧縮(RFC1951)では、このハフマンテーブル自体も圧縮する。
具体的には、deflate圧縮では、ハフマンテーブルにおいて、各文字に割り当てた符号を保持するのではなく、各文字に割り当てた符号の長さ(ビット長)を保持する。同じビット長のグループの中での符号の割り振り方を、ASCIIコード順(対象がアルファベットであればアルファベット順)と定義することにより、ビット長から一意に符号を決定することが可能である。例えば、A,C,Dに割り当てられたビット長が何れも「3」であった場合、Aの符号が「100」と決まれば、C,Dは、それぞれ順番に「1」を加算することにより、「101」、「110」と決定することができる。
ここで、ハフマンテーブルを用いて符号化されたデータの復号に関する技術としては、従来、幾つかの提案がなされている(例えば、特許文献1、2参照)。
特許文献1では、まず復号に際し最初に取り込むべき符号ビット数を復号化テーブルに書き込み、次に符号の木の“根”を着目節点とし、その着目節点の“子”が“葉(終端節点)”か中間節点かを判定し、“葉”ならばそれに対応する事象値を返すような復号終了命令を復号化テーブルに書き込み、中間節点ならば復号に際し次にアクセスすべきアドレス及び取り出すべき符号ビット数を返すような復号継続命令を復号化テーブルに書き込んでその“子”を新たな着目節点とみなして再帰的に以上の動作を繰り返す。
特許文献2では、符号データ取込部が、外部から供給される符号のビット列を取り込み、一定のビット長の符号データを形成し、ハフマン復号用ルックアップテーブルが、符号データ取込部により形成される符号データを受けて、その符号データの上位ビットの符号に対応する復号データとその符号のビット長を出力するハフマン復号化回路において、符号データ取込部が、ハフマン復号用ルックアップテーブルから出力されるビット長のビットだけ上位のデータを捨てて、代わりに新たに外部から供給されるデータを取り込み、一定のビット長の符号データを形成する。
特開平7−170197号公報 特開平8−167855号公報
ところで、上記のような方法で圧縮したハフマンテーブルを用いて圧縮データを復号するには、(1)ビット長の切り出し、(2)切り出されたビット長からの符号の復元、という手順を踏む必要がある。ここで、手順(2)を高速に行うためには、予めハフマンテーブルをビットごとにソーティングしておくことが必要である。
しかしながら、このソーティングの処理は、符号の数だけ繰り返し行わなければならない。そのため、符号の数が多い場合には処理時間が増大してしまう。
尚、特許文献1、2の技術は、各文字にビット長を割り当てたハフマンテーブルを作成し、ビット長に基づいて各文字を復号する場合のこのような問題点に着目したものではない。
本発明の目的は、複数の記号のそれぞれをビット列に置き換えることで符号化した符号化データを復号する際の処理時間を短縮することにある。
かかる目的のもと、本発明は、複数の記号の各記号を複数のビット列の各記号に対応するビット列に置き換えることで符号化した符号化データを復号するための復号用情報を生成する回路であって、複数の記号の各記号に対応するビット列のビット長からなる複数のビット長を定義した定義情報に基づいて、複数のビット長の同じビット長に対応する記号の数を記録する記録部と、記録部により記録された記号の数に基づいて、複数のビット列をビット長に関する所定の順序であるビット長順序で並べるためのビット列情報を復号用情報として生成する第1の生成部と、定義情報で定義された複数のビット長のうちの特定のビット長の入力に応じて、特定のビット長に対応する記号を、複数のビット長のうちの特定のビット長以前に入力された少なくとも1つのビット長をビット長順序で並べたときの特定のビット長の順番に挿入することにより、複数の記号をビット長順序で並べた記号情報を復号用情報として生成する第2の生成部とを含む、回路を提供する。
ここで、第1の生成部は、複数のビット長の各ビット長を有するビット列の基準となる基準ビット列からなる複数の基準ビット列をビット列情報として生成し、第2の生成部は、特定のビット長の入力に応じて、複数のビット長のうちの特定のビット長以前に入力された少なくとも1つのビット長のうち、ビット長順序で特定のビット長より前にある各ビット長及び特定のビット長と同じビット長を有する基準ビット列の順番は変更せずに、ビット長順序で特定のビット長より後ろにある各ビット長を有する基準ビット列の順番を後ろにずらすことにより、複数の基準ビット列の各基準ビット列に対応する記号の記号情報における順番を示す順番情報を復号用情報として更に生成する、ものであってよい。
また、複数のビット長は、記号に関する所定の順序で入力され、第2の生成部は、特定のビット長の入力の順番に応じて、特定のビット長に対応する記号を決定する、ものであってよい。
更に、記録部は、特定のビット長の入力に応じて、特定のビット長と異なる各ビット長に対応する記号の数は変更せずに、特定のビット長と同じビット長に対応する記号の数を増加させる、ものであってよい。
また、本発明は、複数の記号の各記号を複数のビット列の各記号に対応するビット列に置き換えるハフマン符号化を行ったハフマン符号化データを復号するための復号用情報を、各記号に対応するビット列のビット長からなる複数のビット長を記号のコード順に並べて定義したハフマンテーブルに基づいて生成する回路であって、ハフマンテーブルで定義された複数のビット長のうちの特定のビット長の入力に応じて、特定のビット長と異なる各ビット長に対応する記号の数は変更せずに、特定のビット長と同じビット長に対応する記号の数を増加させることにより、複数のビット長の同じビット長に対応する記号の数を記録する記録部と、記録部により記録された記号の数に基づいて、複数のビット長の各ビット長を有する最小ビット列からなる複数の最小ビット列を復号用情報として生成する第1の生成部と、ハフマンテーブルで定義された複数のビット長のうちの特定のビット長の入力に応じて、特定のビット長に対応する記号を、複数のビット長のうちの特定のビット長以前に入力された少なくとも1つのビット長をビット長が短い順でビット長が同じときは対応する記号のコード順に並べたときの特定のビット長の順番に挿入することにより、複数の記号を対応するビット長が短い順でビット長が同じときは記号のコード順に並べた記号情報を復号用情報として生成し、かつ、複数のビット長のうちの特定のビット長以前に入力された少なくとも1つのビット長のうち、特定のビット長以下の各ビット長を有する最小ビット列の順番は変更せずに、特定のビット長より大きい各ビット長を有する最小ビット列の順番を後ろにずらすことにより、複数の最小ビット列の各最小ビット列に対応する記号の記号情報における順番を示す順番情報を復号用情報として生成する第2の生成部とを含む、回路も提供する。
更に、本発明は、複数の記号の各記号を複数のビット列の各記号に対応するビット列に置き換えることで符号化した符号化データを復号する装置であって、複数の記号の各記号に対応するビット列のビット長からなる複数のビット長を定義した定義情報が付加された符号化データから、定義情報を抽出する抽出部と、抽出部により抽出された定義情報に基づいて、複数のビット長の同じビット長に対応する記号の数を記録する記録部と、記録部により記録された記号の数に基づいて、複数のビット列をビット長に関する所定の順序であるビット長順序で並べるためのビット列情報を生成する第1の生成部と、抽出部により抽出された定義情報で定義された複数のビット長のうちの特定のビット長の入力に応じて、特定のビット長に対応する記号を、複数のビット長のうちの特定のビット長以前に入力された少なくとも1つのビット長をビット長順序で並べたときの特定のビット長の順番に挿入することにより、複数の記号をビット長順序で並べた記号情報を生成する第2の生成部と、符号化データに含まれるビット列を、第1の生成部により生成されたビット列情報と、第2の生成部により生成された記号情報とに基づいて、ビット列に対応する記号に変換する変換部とを含む、装置も提供する。
更にまた、本発明は、複数の記号の各記号を複数のビット列の各記号に対応するビット列に置き換えることで符号化した符号化データを復号する方法であって、複数の記号の各記号に対応するビット列のビット長からなる複数のビット長を定義した定義情報が付加された符号化データから、定義情報を抽出するステップと、抽出された定義情報に基づいて、複数のビット長の同じビット長に対応する記号の数を記録するステップと、記録された記号の数に基づいて、複数のビット列をビット長に関する所定の順序であるビット長順序で並べるためのビット列情報を生成するステップと、抽出された定義情報で定義された複数のビット長のうちの特定のビット長の入力に応じて、特定のビット長に対応する記号を、複数のビット長のうちの特定のビット長以前に入力された少なくとも1つのビット長をビット長順序で並べたときの特定のビット長の順番に挿入することにより、複数の記号をビット長順序で並べた記号情報を生成するステップと、符号化データに含まれるビット列を、ビット列情報と記号情報とに基づいて、ビット列に対応する記号に変換するステップとを含む、方法も提供する。
本発明によれば、複数の記号のそれぞれをビット列に置き換えることで符号化した符号化データを復号する際の処理時間を短縮することができる。
ハフマンテーブルの圧縮について示した図である。 本発明の実施の形態が適用されるハフマン復号装置の構成例を示した図である。 一般的なハフマンテーブル復号回路の使用回数算出回路の構成例を示した図である。 一般的なハフマンテーブル復号回路の使用回数算出回路で作成される圧縮ハフマンテーブルの例を示した図である。 一般的なハフマンテーブル復号回路の符号算出回路の構成例等を示した図である。 一般的なハフマンテーブル復号回路の復号用データ算出回路におけるソーティング処理について示した図である。 一般的なハフマンテーブル復号回路の復号用データ算出回路で作成される復号用符号テーブルの例を示した図である。 本発明の実施の形態におけるハフマンテーブル復号回路の復号用データ算出回路で用いるインサート機能付シフトメモリ回路について示した図である。 本発明の実施の形態におけるハフマンテーブル復号回路の復号用データ算出回路におけるポインタテーブル及び復号用ハフマンテーブルについて示した図である。 本発明の実施の形態におけるハフマンテーブル復号回路の復号用データ算出回路におけるポインタテーブル及び復号用ハフマンテーブルの更新例を示した図である。 本発明の実施の形態におけるハフマンテーブル復号回路の復号用データ算出回路におけるポインタテーブル及び復号用ハフマンテーブルの更新例を示した図である。 本発明の実施の形態におけるハフマンテーブル復号回路の復号用データ算出回路の構成例を示した図である。 本発明の実施の形態におけるハフマンテーブル復号回路の復号用データ算出回路におけるポインタテーブルのPointer部の構成例を示した図である。 本発明の実施の形態におけるハフマンテーブル復号回路の復号用データ算出回路におけるポインタテーブルのNum部の構成例を示した図である。 本発明の実施の形態におけるハフマン復号装置の動作例を示したフローチャートである。
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
[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とを含む。
このうち、ハフマンテーブル復号回路100は、圧縮後のハフマンテーブルのデータ(以下、「圧縮ハフマンテーブルデータ」という)がハフマンテーブル分離回路200から入力されると、この圧縮ハフマンテーブルデータに基づいて、復号に用いるハフマンテーブルデータ(以下、「復号用ハフマンテーブルデータ」という)等を生成し、ハフマン復号回路300に出力するものである。ここで、圧縮ハフマンテーブルデータとは、図1に示した圧縮後のハフマンテーブルに含まれるビット長のみを並べたデータをいう。但し、ビット長の並び順は、ハフマンテーブルにおいて文字がASCIIコード順に並べられている場合の順番であるとする。また、復号用ハフマンテーブルデータとは、図1に示した圧縮後のハフマンテーブルを、復号に用いるために変換して得られるテーブルのデータをいう。
尚、本実施の形態では、「文字」と称しているが、これは記号の一例として用いているに過ぎず、数字や、文字及び数字以外の記号(狭義の記号)にも本発明は適用可能である。但し、以下では、簡略化のため、文字、特にアルファベットを例にとり説明する。
図示するように、本実施の形態におけるハフマンテーブル復号回路100は、使用回数算出回路10と、符号算出回路20と、復号用データ算出回路30とを有する。
使用回数算出回路10は、圧縮ハフマンテーブルデータが入力されると、各ビット長の使用回数(ビット長ごとのアルファベットの数)を算出すると共に、アルファベットごとのビット長を格納する圧縮ハフマンテーブルを作成する。
符号算出回路20は、使用回数算出回路10により算出された各ビット長の使用回数に基づいて、ビット長ごとに使用される最小符号及び最大符号を格納する符号テーブルを作成する。
復号用データ算出回路30は、圧縮ハフマンテーブルデータに基づいて、復号用ハフマンテーブルデータを算出すると共に、符号算出回路20により作成された符号テーブルに基づいて、復号に用いられる符号テーブルのデータ(以下、「復号用符号テーブルデータ」という)を算出する。
また、ハフマンテーブル分離回路200は、圧縮ハフマンテーブルデータと、データに含まれる文字をその文字に割り当てられた符号に置き換えることによって圧縮した圧縮後データとを結合した結合データを受信すると、この結合データを圧縮ハフマンテーブルデータと圧縮後データとに分離し、前者はハフマンテーブル復号回路100に、後者はハフマン復号回路300にそれぞれ出力する。本実施の形態では、複数のビット長を定義した定義情報の一例として、圧縮ハフマンテーブルデータを用いており、記号をビット列に置き換えることで符号化した符号化データの一例として、圧縮後データを用いている。また、定義情報を抽出する抽出部の一例として、ハフマンテーブル分離回路200を設けている。
更に、ハフマン復号回路300は、ハフマンテーブル分離回路200から入力された圧縮後データに含まれる符号を、ハフマンテーブル復号回路100から入力された復号用ハフマンテーブルデータ及び復号用符号テーブルデータに基づいて決定される文字に置き換えることによって圧縮前データに戻し、出力する。本実施の形態では、ビット列を記号に変換する変換部の一例として、ハフマン復号回路300を設けている。
以下、ハフマンテーブル復号回路100の3つの回路の詳細な動作について説明するが、まず、これらの3つの回路の一般的な動作を「一般的なハフマンテーブルの復号方法」として説明し、次に、これらの3つの回路の本実施の形態における動作を「本実施の形態におけるハフマンテーブルの復号方法」として説明する。尚、以降の説明では、図1の例に従い、圧縮ハフマンテーブルデータ「3,3,5,3,2,4,5,4,3,5,5」がハフマンテーブル復号回路100に入力されるものとする。また、RFC1951では、文字は最大286個定義されており、ビット長は最大15まで定義されているが、本実施の形態では、説明の簡略化のため、文字はアルファベット11文字のみを示し、ビット長は最大5ビットまでを示す。
[一般的なハフマンテーブルの復号方法]
(使用回数算出回路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を設けている。
また、図3には示していないが、一般的な使用回数算出回路10は、ビット長ごとにアルファベットの数を数える一方で、アルファベットごとのビット長を記録した圧縮ハフマンテーブルを作成する。
図4は、圧縮ハフマンテーブルの一例を示した図である。
図示するように、圧縮ハフマンテーブルは、アルファベットとビット長とを対応付けたものであり、入力された圧縮ハフマンテーブルデータを入力順に記録することにより作成される。圧縮ハフマンテーブルデータにおいて、複数のビット長は、各ビット長が割り当てられたアルファベットの順に並んでいるので、圧縮ハフマンテーブルにおいても、アルファベットの順に対応するビット長が並んでいる。
(符号算出回路20)
図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_minを算出する回路は、(b)に示すように、加算回路21とシフト回路22とフリップフロップ23とセレクタ24とを組み合わせることにより簡単に構成できる。つまり、M=1の段階では、セレクタ24が、code「0」を選択し、加算回路21が、これとbl_count[0]を加算し、シフト回路22がその結果を左に1ビットシフトし、フリップフロップ23がその結果を保持し、保持された結果がcode_min[1]として出力される。次に、M=2の段階では、セレクタ24が、フリップフロップ23に保持された結果を選択し、加算回路21が、これとbl_count[1]を加算し、シフト回路22がその結果を左に1ビットシフトし、フリップフロップ23がその結果を保持し、保持された結果がcode_min[2]として出力される。このように、bl_count[M−1]を順次投入して、code_min[M]が順次出力される回路になっている。
また、code_max[M]は、「code_min[M] + bl_count[M] - 1」により求めることができる。
これにより、符号算出回路20は、最小符号code_min及び最大符号code_maxをビット長に対応付けた符号テーブルを作成する。
本実施の形態で用いる例では、各ビット長の最小符号code_min[M]及び最大符号code_max[M]は(c)の符号テーブルに示したようになる。この場合、最大ビット長をBとすると、処理時間はO(B)となる。この例では、B=5(clock)であるが、RFC1951において、最大のビット長は「15」と定義されているため、最大値は、B=15(clock)である。
尚、code_min[M]に格納された値、つまり、最小符号は、各ビット長を有するビット列の基準となる基準ビット列、各ビット長を有する最小ビット列の一例であり、符号テーブルは、ビット列情報、復号用情報の一例である。また、本実施の形態では、ビット列情報を生成する第1の生成部の一例として、符号算出回路20を設けている。
(復号用データ算出回路30)
符号算出回路20の処理の結果を参照すると、ハフマン復号回路300に入力される圧縮後データに含まれる符号のビット長が分かるので、図4の圧縮ハフマンテーブルから、各アルファベットに割り当てられた符号を求めることは可能である。但し、図4の圧縮ハフマンテーブルは、ビット長ごとに整理されていないため、検索するためには扱い難い。そこで、復号用データ算出回路30は、図4の圧縮ハフマンテーブルをビット長順に、ビット長が同じときはASCIIコード順にソーティングを行う。
図6は、このようなソーティングについて示した図である。
図において、太矢印の左側は圧縮ハフマンテーブルを、太矢印の右側はソート後の圧縮ハフマンテーブル(復号用ハフマンテーブル)を示す。
図示するように、復号用ハフマンテーブルも、圧縮ハフマンテーブルと同様、アルファベットとビット長とを対応付けたものである。但し、復号用ハフマンテーブルは、圧縮ハフマンテーブルをビット長の順にソーティングして得られたものなので、復号用ハフマンテーブルにおいて、複数のアルファベットは、対応するビット長の順に並んでいる。
尚、図では、各ビット長の先頭を表すために、各アルファベットの情報が格納されたアドレスも示している。
このようにソーティングを行い、アルファベットをビット長の順に並べた復号用ハフマンテーブルを別途作成しておけば、検索が容易になる。具体的には、入力された圧縮後データにおける符号からcode_minを引くことにより、アルファベットを簡単に検索することができる。
また、復号用データ算出回路30は、図5(c)の符号テーブルに対して、図6右側の復号用ハフマンテーブルにおける各ビット長の先頭を示すポインタを追加しておく。
図7は、このようにポインタを追加した符号テーブル(以下、「復号用符号テーブル」という)を示したものである。
図6右側の復号用ハフマンテーブルと図7の復号用符号テーブルとからハフマンテーブルを復号するには、復号用ハフマンテーブルのビット長ごとに、復号用符号テーブルのそのビット長に対応するcode_minからcode_maxまでの符号を順番に割り当てていけばよい。
ところで、この一般的なハフマンテーブルの復元方法では、図6のソーティング処理及び図7のポインタ追加処理が逐次処理になってしまうため、復号用データ算出回路30の処理にアルファベットの個数分のクロック数が必要となる。この例では、種々の工夫を行ったとしても最低11クロック必要となる。また、記号は全部で286個なので、全ての記号を処理する場合は、最低286クロック必要となる。これが必要なクロック数の最大値である。
ここで、この一般的なハフマンテーブルの復号方法のスループットを考える。
まず、使用回数算出回路10は、ハフマンテーブルのデータをそのまま流せば完了する。ところが、全てのデータを流し終えた後、符号算出回路20で最大15クロック、復号用データ算出回路30で最大286クロックかかるため、合計で301クロック後でなければ、ハフマンテーブルの復号が完了しない。
圧縮ハフマンテーブルから復号用ハフマンテーブルを生成し、この復号用ハフマンテーブルを用いて圧縮データを復号し、この圧縮データの復号と並行して、次の復号用ハフマンテーブルを生成する、というパイプライン処理をスムーズに行うことができれば、圧縮データの解凍もスムーズに行うことができる。しかしながら、全てのデータを流し終えた後、復号用ハフマンテーブルを得るまでに最大301クロックもかかっていたのでは、パイプライン処理はスムーズに行えない。即ち、復号用データ算出回路30の処理が、パイプライン処理を行う上でボトルネックとなっている。
[本実施の形態におけるハフマンテーブルの復号方法]
本実施の形態は、復号用データ算出回路30の処理を高速化する。復号用データ算出回路30におけるハフマンテーブルは、ハフマン復号を効率よく行うために必要である。そのために、ビット長のグループごとに予めソーティングしたテーブルとして作成しておく必要がある。一般的な復号用データ算出回路30は、まず図6左側のアルファベット順の圧縮ハフマンテーブルを作成し、次にソーティングを行い、図6右側の復号用ハフマンテーブルを作成する。しかしながら、このようなソーティング処理には最低286クロックが必要となる。
これに対して、本実施の形態では、ダイレクトにソーティングされたテーブルを作成する。そのために、インサート機能付シフトメモリ回路(レジスタ)を使用する。
図8は、インサート機能付シフトメモリ回路31について示した図である。
このインサート機能付シフトメモリ回路31は、通常のメモリと同様に任意のアドレスに読み書きできるだけでなく、書き込んだアドレス以降の内容をシフトできるという特徴を有する。例えば、インサート機能付シフトメモリ回路31が16バイトであるとすると、10番地のアドレスにデータを書き込むのと同時に、それまで10番地から14番地に記憶されていた内容を11番地から15番地にシフトして書き込むことができる。因みに、15番地に記憶されていた内容はシフトアウトされて消去される。
具体的には、N番地のセレクタ41−Nは、Data Inから入力された文字コード、(N−1)番地のフリップフロップ42−(N−1)に保持された文字コード、N番地のフリップフロップ42−Nに保持された文字コードのうちの何れかを選択し、N番地のフリップフロップ42−Nに保持させる。このとき、セレクタ41−Nが何れの文字コードを選択すべきかを指示するのがアドレスデコーダ43であり、Insert Addressから入力されたアドレスがK番地であれば、セレクタ41−N(N=1,2,…,K−1)に対して、N番地のフリップフロップ42−Nに保持された文字コードを選択するように指示する信号を、セレクタ41−N(N=K)に対して、Data Inから入力された文字コードを選択するように指示する信号を、セレクタ41−N(N=K+1,K+2,…)に対して、(N−1)番地のフリップフロップ42−(N−1)に保持された文字コードを選択するように指示する信号を、それぞれ出力する。
図9は、インサート機能付シフトメモリ回路31を復号用ハフマンテーブルに使用する方法を示した図である。
図示するように、インサート機能付シフトメモリ回路31は、図6右側のソーティングされたハフマンテーブル(復号用ハフマンテーブル)として使用される。また、各ビット長が割り当てられたアルファベットの数を格納するNum部と、各ビット長に対応する文字コードが最初に格納されているアドレスを格納するPointer部とからなるポインタテーブルを用意しておく。
ここでは、入力された圧縮ハフマンテーブルデータ「3,3,5,3,2,4,5,4,3,5,5」のうち、AからFに対応する「3,3,5,3,2,4」を例にとって説明する。
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」となる。
次に、Bに対するビット長として同じ「3」が入力されたとする。すると、同じビット長なので、(b)に示すように、復号用ハフマンテーブルのAの文字コードが格納された番地の次の番地にBの文字コードが格納される。このとき、ポインタテーブルでは、Num部の3ビット長に対する値が「2」となり、Pointer部の4ビット長、5ビット長に対する値が「2」となる。
次に、Cに対するビット長として「5」が入力されたとする。すると、5ビット長の方が3ビット長よりも長いので、(c)に示すように、復号用ハフマンテーブルの3ビット長に対する文字コードが格納されている後、つまり2番地にCの文字コードが格納される。このとき、ポインタテーブルでは、Num部の5ビット長に対する値が「1」となるが、5ビット長よりも長いビット長はないので、Pointer部は更新されない。
次に、Dに対するビット長として「3」が入力されたとする。すると、(d)に示すように、復号用ハフマンテーブルの5ビット長に対するCの文字コードが格納された場所(2番地)の直前に挿入される形でDの文字コードが書き込まれる。そして、5ビット長に対するCの文字コードは3番地にシフトされる。このとき、ポインタテーブルでは、Num部の3ビット長に対する値が「3」となり、Pointer部の4ビット長、5ビット長に対する値が「3」となる。
次に、Eに対するビット長として「2」が入力されたとする。すると、復号用ハフマンテーブルの3ビット長に対する文字コードが格納された場所よりも前に格納する必要があるため、(e)に示すように、0番地にEの文字コードが格納される。そして、これまで0番地以降に格納されていたデータは順次シフトされ、1番地以降に書き込まれる。このとき、ポインタテーブルでは、Num部の2ビット長に対する値が「1」となり、Pointer部の3ビット長以上のビット長に対する値が1カウントアップされる。
次に、Fに対するビット長として「4」が入力されたとする。すると、(f)に示すように、復号用ハフマンテーブルの3ビット長と4ビット長の間に割り込む形で4番地にFの文字コードが挿入される。そして、5ビット長以降のビット長に対する文字コードは順次シフトされる。このとき、ポインタテーブルでは、Num部の4ビット長に対する値が「1」となり、Pointer部の5ビット長に対する値が1カウントアップされる。
このように、本実施の形態では、インサート機能付シフトメモリ回路31を使うことにより、リアルタイムにソーティングされたハフマンテーブルを作成することができる。これにより、今まで最低286クロックかかっていたソーティング処理が必要なくなり、高速に処理することが可能となる。
以下、このような動作を実現する復号用データ算出回路30についてより詳細に説明する。
図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,…に保持する。
次に、ポインタテーブル33のうちPointer部の回路について説明する。
図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参照)に出力する。
次いで、ポインタテーブル33のうちNum部の回路について説明する。
図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参照)に出力する。
尚、復号用ハフマンテーブルは、記号情報、復号用情報の一例であり、ポインタテーブル33のPointer部は、順番情報、復号用情報の一例である。また、本実施の形態では、記号情報、更には順番情報を生成する第2の生成部の一例として、復号用データ算出回路30を設けている。
尚、本実施の形態における復号用データ算出回路30では、ビット長ごとのアルファベットの数を記録するNum部をポインタテーブルに設けたが、これはあくまで一例であり、Num部を設けない構成も考えられる。例えば、ビット長ごとのアルファベットの有無を記録するEnable部を設けてもよい。この場合、Mビット長に対するアルファベットの数はPointer[M]とPointer[M+1]の差分によって知ることができる。
また、本実施の形態におけるハフマンテーブル復号回路100では、入力された圧縮ハフマンテーブルデータを、使用回数算出回路10、符号算出回路20、復号用データ算出回路30がこの順に処理することにより、復号用ハフマンテーブルデータ及び復号用符号テーブルを作成したが、これには限らない。例えば、復号用データ算出回路30が、入力された圧縮ハフマンテーブルデータに基づいて、ビット長ごとのアルファベットの数を算出する構成(Num部)を有していれば、使用回数算出回路10を設ける必要はない。但し、その場合は、ビット長ごとのアルファベットの数を用いる符号算出回路20の処理は、復号用データ算出回路30の処理の後に行うことになる。具体的には、符号算出回路20は、bl_count[M]の代わりにNum[M]を用いて、code_min[M]及びcode_max[M]を算出することになる。
最後に、本実施の形態におけるハフマン復号装置の動作の流れについて説明する。
図14は、このときの動作の流れを示したフローチャートである。尚、この動作の流れは、上記のように復号用データ算出回路30の処理の後に符号算出回路20の処理を行う構成を前提としている。
図示するように、本実施の形態におけるハフマン復号装置では、ハフマンテーブル分離回路200が、圧縮ハフマンテーブルデータと圧縮後データとからなるデータを受信すると、これらを分離する(ステップ101)。
次に、ハフマンテーブル復号回路100では、復号用データ算出回路30が、圧縮ハフマンテーブルデータの中に未処理のビット長があるかどうかを判定する(ステップ102)。
その結果、未処理のビット長があると判定された場合、復号用データ算出回路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)。
一方、未処理のビット長がないと判定された場合、ステップ103〜107の処理により、復号用ハフマンテーブルの作成は完了している。そこで、符号算出回路20は、Num[M]に基づいて、各ビット長に対するcode_min[M]及びcode_max[M]を算出することにより、復号用符号テーブルとして符号テーブルを作成する(ステップ108)。
その後、ハフマン復号回路300が、復号用ハフマンテーブルデータ及び符号テーブルデータを用いて、圧縮後データに含まれる符号を、その符号が割り当てられた文字に置き換えることにより、圧縮前データを生成する(ステップ109)。
以上により、本実施の形態についての説明を終了する。
尚、本実施の形態では、「ビット長の順」といった場合、ビット長が短い順を意味するものとしたが、ビット長が長い順を意味するものとしても、ビット長に関するその他の順序を意味するものとしてもよい。即ち、「ビット長の順」は、より一般的には「ビット長に関する所定の順序」と捉えることができる。
また、本実施の形態において、ビット長の入力順序は対応する文字のASCIIコード順としたが、この入力順序も、より一般的に「記号に関する所定の順序」と捉えてよい。
更に、本実施の形態では、1つのビット長に対し、複数の符号を用いることを前提としたため、復号用ハフマンテーブルにおける各ビット長の先頭アドレスを指し示すポインタをポインタテーブルに設けたが、このような構成には限らない。例えば、1つのビット長に対し、1つの符号のみを用いることを前提とすると、復号用ハフマンテーブルにおける記号の格納順がビット長を示すので、ポインタをポインタテーブルに設けない構成も考えられる。
以上述べたように、本実施の形態では、(1)ビット長の切り出し、(2)切り出されたビット長からの符号の復元、の2つの手順のうち、手順(2)におけるハフマンテーブルのソーティング処理をリアルタイムで行うようにした。具体的には、インサート機能付シフトメモリ回路を用いることにより、圧縮ハフマンテーブルデータの入力と並行してそのソーティング処理を行うようにした。これにより、圧縮ハフマンテーブルの最後のデータが入力されたときにはソーティングされたハフマンテーブルが完成しており、圧縮ハフマンテーブルの入力後にソーティング処理を行う方法に比べて、高速に処理できるようになった。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
100…ハフマンテーブル復号回路、10…使用回数算出回路、20…符号算出回路、30…復号用データ算出回路、200…ハフマンテーブル分離回路、300…ハフマン復号回路

Claims (7)

  1. 複数の記号の各記号を複数のビット列の当該各記号に対応するビット列に置き換えることで符号化した符号化データを復号するための復号用情報を生成する回路であって、
    前記複数の記号の各記号に対応するビット列のビット長からなる複数のビット長を定義した定義情報に基づいて、当該複数のビット長の同じビット長に対応する記号の数を記録する記録部と、
    前記記録部により記録された前記記号の数に基づいて、前記複数のビット列をビット長に関する所定の順序であるビット長順序で並べるためのビット列情報を前記復号用情報として生成する第1の生成部と、
    前記定義情報で定義された前記複数のビット長のうちの特定のビット長の入力に応じて、当該特定のビット長に対応する記号を、当該複数のビット長のうちの当該特定のビット長以前に入力された少なくとも1つのビット長を前記ビット長順序で並べたときの当該特定のビット長の順番に挿入することにより、前記複数の記号を当該ビット長順序で並べた記号情報を前記復号用情報として生成する第2の生成部と
    を含む、回路。
  2. 前記第1の生成部は、前記複数のビット長の各ビット長を有するビット列の基準となる基準ビット列からなる複数の基準ビット列を前記ビット列情報として生成し、
    前記第2の生成部は、前記特定のビット長の入力に応じて、前記複数のビット長のうちの当該特定のビット長以前に入力された少なくとも1つのビット長のうち、前記ビット長順序で当該特定のビット長より前にある各ビット長及び当該特定のビット長と同じビット長を有する基準ビット列の順番は変更せずに、前記ビット長順序で当該特定のビット長より後ろにある各ビット長を有する基準ビット列の順番を後ろにずらすことにより、前記複数の基準ビット列の各基準ビット列に対応する記号の前記記号情報における順番を示す順番情報を前記復号用情報として更に生成する、請求項1の回路。
  3. 前記複数のビット長は、記号に関する所定の順序で入力され、
    前記第2の生成部は、前記特定のビット長の入力の順番に応じて、当該特定のビット長に対応する記号を決定する、請求項1又は請求項2の回路。
  4. 前記記録部は、前記特定のビット長の入力に応じて、当該特定のビット長と異なる各ビット長に対応する記号の数は変更せずに、当該特定のビット長と同じビット長に対応する記号の数を増加させる、請求項1乃至請求項3の何れかの回路。
  5. 複数の記号の各記号を複数のビット列の当該各記号に対応するビット列に置き換えるハフマン符号化を行ったハフマン符号化データを復号するための復号用情報を、当該各記号に対応するビット列のビット長からなる複数のビット長を記号のコード順に並べて定義したハフマンテーブルに基づいて生成する回路であって、
    前記ハフマンテーブルで定義された前記複数のビット長のうちの特定のビット長の入力に応じて、当該特定のビット長と異なる各ビット長に対応する記号の数は変更せずに、当該特定のビット長と同じビット長に対応する記号の数を増加させることにより、当該複数のビット長の同じビット長に対応する記号の数を記録する記録部と、
    前記記録部により記録された前記記号の数に基づいて、前記複数のビット長の各ビット長を有する最小ビット列からなる複数の最小ビット列を前記復号用情報として生成する第1の生成部と、
    前記ハフマンテーブルで定義された前記複数のビット長のうちの特定のビット長の入力に応じて、当該特定のビット長に対応する記号を、当該複数のビット長のうちの当該特定のビット長以前に入力された少なくとも1つのビット長をビット長が短い順でビット長が同じときは対応する記号のコード順に並べたときの当該特定のビット長の順番に挿入することにより、前記複数の記号を対応するビット長が短い順でビット長が同じときは記号のコード順に並べた記号情報を前記復号用情報として生成し、かつ、当該複数のビット長のうちの当該特定のビット長以前に入力された少なくとも1つのビット長のうち、当該特定のビット長以下の各ビット長を有する最小ビット列の順番は変更せずに、当該特定のビット長より大きい各ビット長を有する最小ビット列の順番を後ろにずらすことにより、前記複数の最小ビット列の各最小ビット列に対応する記号の当該記号情報における順番を示す順番情報を前記復号用情報として生成する第2の生成部と
    を含む、回路。
  6. 複数の記号の各記号を複数のビット列の当該各記号に対応するビット列に置き換えることで符号化した符号化データを復号する装置であって、
    前記複数の記号の各記号に対応するビット列のビット長からなる複数のビット長を定義した定義情報が付加された前記符号化データから、当該定義情報を抽出する抽出部と、
    前記抽出部により抽出された前記定義情報に基づいて、前記複数のビット長の同じビット長に対応する記号の数を記録する記録部と、
    前記記録部により記録された前記記号の数に基づいて、前記複数のビット列をビット長に関する所定の順序であるビット長順序で並べるためのビット列情報を生成する第1の生成部と、
    前記抽出部により抽出された前記定義情報で定義された前記複数のビット長のうちの特定のビット長の入力に応じて、当該特定のビット長に対応する記号を、当該複数のビット長のうちの当該特定のビット長以前に入力された少なくとも1つのビット長を前記ビット長順序で並べたときの当該特定のビット長の順番に挿入することにより、前記複数の記号を当該ビット長順序で並べた記号情報を生成する第2の生成部と、
    前記符号化データに含まれるビット列を、前記第1の生成部により生成された前記ビット列情報と、前記第2の生成部により生成された前記記号情報とに基づいて、当該ビット列に対応する記号に変換する変換部と
    を含む、装置。
  7. 複数の記号の各記号を複数のビット列の当該各記号に対応するビット列に置き換えることで符号化した符号化データを復号する方法であって、
    前記複数の記号の各記号に対応するビット列のビット長からなる複数のビット長を定義した定義情報が付加された前記符号化データから、当該定義情報を抽出するステップと、
    抽出された前記定義情報に基づいて、前記複数のビット長の同じビット長に対応する記号の数を記録するステップと、
    記録された前記記号の数に基づいて、前記複数のビット列をビット長に関する所定の順序であるビット長順序で並べるためのビット列情報を生成するステップと、
    抽出された前記定義情報で定義された前記複数のビット長のうちの特定のビット長の入力に応じて、当該特定のビット長に対応する記号を、当該複数のビット長のうちの当該特定のビット長以前に入力された少なくとも1つのビット長を前記ビット長順序で並べたときの当該特定のビット長の順番に挿入することにより、前記複数の記号を当該ビット長順序で並べた記号情報を生成するステップと、
    前記符号化データに含まれるビット列を、前記ビット列情報と前記記号情報とに基づいて、当該ビット列に対応する記号に変換するステップと
    を含む、方法。
JP2010272970A 2010-12-07 2010-12-07 符号化データを復号する装置及び方法 Expired - Fee Related JP5656593B2 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107682018A (zh) * 2017-09-28 2018-02-09 西安万像电子科技有限公司 解码方法及装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 符号化データを復号する装置及び方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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