JP2006295631A - 可変長符号の復号装置 - Google Patents

可変長符号の復号装置 Download PDF

Info

Publication number
JP2006295631A
JP2006295631A JP2005114819A JP2005114819A JP2006295631A JP 2006295631 A JP2006295631 A JP 2006295631A JP 2005114819 A JP2005114819 A JP 2005114819A JP 2005114819 A JP2005114819 A JP 2005114819A JP 2006295631 A JP2006295631 A JP 2006295631A
Authority
JP
Japan
Prior art keywords
code
length
bit
extension
codeword
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
JP2005114819A
Other languages
English (en)
Other versions
JP4519701B2 (ja
Inventor
Tomohiro Kimura
智広 木村
Mitsuyoshi Suzuki
光義 鈴木
Hiroshi Ito
浩 伊藤
Ryosuke Fujii
亮介 藤井
Koichi Umakai
浩一 馬養
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2005114819A priority Critical patent/JP4519701B2/ja
Publication of JP2006295631A publication Critical patent/JP2006295631A/ja
Application granted granted Critical
Publication of JP4519701B2 publication Critical patent/JP4519701B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Processing (AREA)

Abstract

【課題】 符号語を高速に特定する。
【解決手段】 テーブル拡張器100は標準テーブルから補助テーブル部102の補助テーブルと拡張テーブル部101の拡張テーブルを生成し、拡張アドレス生成部104は復号レジスタ103に保持されているは符号ビット列の最上位の特定ビットの位置を示す位置情報を検出し、補助テーブルから参照ビット数と基準位置を入手し、拡張テーブルのアドレスを生成する。拡張テーブル部101はアドレスに基づき符号語長、付加ビット数、ランレングスを出力する。
【選択図】 図1

Description

この発明は可変長符号を復号する可変長符号の復号装置に関するものである。
画像や音声等データを効率良く通信や蓄積を行うために、データの符号化は不可欠な技術となっている。現在、多種多様な符号化方法が提案されているが、符号化方法の一例としてハフマン符号化方法がある。ハフマン符号化は、符号の割り当て単位である符号語の長さが固定でない可変長符号化方式である。可変長符号の復号装置では、符号を解析し構成する符号語単位に順次読み出すことによりデータを復元する。よって、可変長による符号語の解析の負荷や複雑さが復号速度に大きく影響している。
従来の可変長符号を復号する復号方法として代表的な3つの方法を示す。
第1の復号方法は、可変長符号の先頭ビットから1ビットずつ順次読み出して、一致する符号語を2進木により探索していく方法であり、2進木で1ビットずつ最悪で可変長符号語の最大長の回数の比較に処理時間がかるという欠点がある。また、第2の復号方法は、可変長符号語をビット数と共にテーブル化し、テーブルを順次比較する方法であり、最悪で符号語の最後までテーブルを比較するので処理時間がかかるという欠点がある。さらに、第3の復号方法は、定義された可変長符号語の最大長の符号ビット列を参照し、アドレスとして符号長についても符号語と同時に特定するテーブルを生成し検索する方法であり、可変長符号語の最大長がアドレス空間となるテーブルが必要となり、アクセスまでの時間は短くなるが大容量のメモリが必要となるという欠点がある。
これらの代表的な3つの復号方法のもつ欠点を解消するために、長所を組み合わせた復号方法が提案されている。
第1の従来例.
第1の復号方法と第2の復号方法を組み合わせた方法として、例えば、特許文献1に示すように、符号語長に基づいて所定の範囲毎に複数のグループに符号語を分類し、例えば最大符号語長16ビットで8ビットまでの第1グループ、9ビットから12ビットの第2グループ、13ビット以上の第3グループに分類した場合、最大3回のテーブル参照で目的の符号語を特定する。
第2の従来例.
また、例えば、特許文献2に示すように、同一符号語長の中における最大値を保持し、最大符号語長まで各符号語長の範囲の符号値を参照して該最大値と比較し、任意の符号長における最大値とその符号長の符号ビット列の参照値を比較すると、最大値以下の参照値となるとき、その符号長以下(等しい又は短い)の符号語であると判定できるので、その中の最大の符号語長を目的の符号語長とする。
第3の従来例.
さらに、例えば、特許文献3に示すように、最大符号語長の符号ビット列を所定のビット数ずつ複数の段階に区切り、各段階で固定長のアドレスとしてテーブルを参照し、符号長算出パラメータ、復号値算出パラメータ、最終段階を除いて表アドレスの3つを順次得る。最終的に、各段階の符号長算出パラメータを加算して符号語長、また、復号値算出パラメータを加算して復号値を得る。
特開平7−107303号公報(段落番号0010、図1) 特開平9−246989号公報(段落番号0043、図6) 特開2000−307433号公報(特許第3533339号公報)(段落番号0042〜0047、図2)
従来の可変長符号の復号装置は以上のように構成され、上記特許文献1では、それぞれのグループのテーブルに実質256アドレス分が必要であり、3つのグループに分類する場合、最大3回で目的の符号語を見つけられるが、合計3倍の(256×3)アドレス分のテーブルサイズが必要となるという課題があった。
また、上記特許文献2では、符号語長の判定に各符号語長の中における最大値と各符号語長に相当する符号ビット列の比較器と、全比較結果を得て入力としたプライオリティエンコーダが必要となり、ハードウェア規模又はソフトウェア処理負荷が増大するという課題があった。
さらに、上記特許文献3では、分岐のない直列処理で全段階のパラメータが揃わないと符号番号が演算できず符号語を高速に特定できないという課題があった。
この発明は上記のような課題を解決するためになされたもので、復号過程で可変長の符号語を効率的に特定する際に、通常のテーブルをより参照しやすく再構成しても、拡張されたテーブルと追加分の補助テーブルの合計サイズを元のテーブルサイズから最小限の増加に抑えることができる可変長符号の復号装置を得ることを目的とする。
また、符号語長の判定毎に各符号語長の符号語最大値と各符号語長に相当する符号ビット列を比較した結果を必要としないため、符号語最大値を保持するレジスタと比較器を不要にし、ハードウェア規模又はソフトウェア処理負荷の増大を抑えることができる可変長符号の復号装置を得ることを目的とする。
さらに、パラメータが揃うまで待つことなく、かつアドレスを最小限のテーブル参照と演算で実現して、符号語を高速に特定することができる可変長符号の復号装置を得ることを目的とする。
この発明に係る可変長符号の復号装置は、可変長の符号語を定義した標準テーブルを入力し、符号語の中で値が変化する最上位の特定ビットの位置を示す位置情報に基づいて各符号語を符号語長の昇順に分類し、同一分類中で上記特定ビットから最大符号語長までのビット数を参照ビット数として定義した参照ビット数テーブルと、各分類において、それ以前の分類までの累積符号語数を基準位置として定義した基準位置テーブルとを補助テーブルとして生成し、上記標準テーブルから、各分類において、各符号語の符号語長と最大符号語長との差に基づき拡張した、各符号語のハフマン符号語長を示すハフマン符号語長テーブルを含む拡張テーブルを生成するテーブル拡張手段と、与えられた復号すべき可変長符号を少なくとも全符号語に対する最大符号語長の符号ビット列を参照できるように保持する符号保持手段と、該符号保持手段に保持されている符号ビット列を参照し、値が変化する最上位の特定ビットの位置を示す位置情報を検出し、検出した位置情報により後述の補助テーブル参照手段から参照ビット数と基準位置を入手し、上記拡張テーブルのアドレスを生成する拡張アドレス生成手段と、上記テーブル拡張手段により生成された補助テーブルを管理し、上記拡張アドレス生成手段からの位置情報により上記参照ビット数テーブルと上記基準位置テーブルから参照ビット数と基準位置を出力する補助テーブル参照手段と、上記テーブル拡張手段により生成された拡張テーブルを管理し、上記拡張アドレス生成手段により生成されたアドレスに基づき上記ハフマン符号語長テーブルよりハフマン符号語長を出力する拡張テーブル参照手段と、該拡張テーブル参照手段により出力されたハフマン符号語長に基づき上記符号保持手段に保持されている符号ビット列をシフトして更新するよう指示する符号更新手段とを備えたものである。
この発明により、符号語を高速に特定することができ、従来の高速化手法で必要とされたテーブルサイズより小さくすることができ、ハードウェア規模又はソフトウェア処理負荷の増大を抑えることができるという効果が得られる。
実施の形態1.
以下の実施の形態では、画像や音声等のデータを効率良く通信し、あるいは蓄積するために、可変長符号化方式の符号の割り当て単位である符号語の長さを特定できるように、より効率良く参照しやすくテーブルを再構成する拡張手順と、その拡張されたテーブルを使用して復号処理する高速化手順について説明する。
図1はこの発明の実施の形態1による可変長符号の復号装置の概略構成を示すブロック図である。この可変長符号の復号装置は、テーブル拡張器(テーブル拡張手段)100、拡張テーブル部(拡張テーブル参照手段)101、補助テーブル部(補助テーブル参照手段)102、復号レジスタ(符号保持手段)103、拡張アドレス生成部(拡張アドレス生成手段)104、シフト数選択器(符号更新手段)105、付加ビット抽出器(付加ビット抽出手段)106、係数復元器(データ復元手段)107及びDC係数バッファ(復号値保持手段)108を備えている。
図2はこの発明の実施の形態1による可変長符号の復号装置の詳細構成を示すブロック図であり、図1と同一符号の構成は同一の構成を示している。図2に示すように、拡張テーブル部101は、ハフマン符号語長テーブル110、付加ビット数テーブル111及びランレングステーブル112を備えている。また、補助テーブル部102は基準位置テーブル120及び参照ビット数テーブル121を備えている。さらに、拡張アドレス生成部104は零位置検出部130、オフセット抽出器131及び加算器132を備えている。
拡張テーブル部101が備える拡張されたテーブルであるハフマン符号語長テーブル110、付加ビット数テーブル111及びランレングステーブル112は、例えば後述のハフマンテーブルの定義セグメントから得られるテーブルに冗長性を持たせて拡張したものであり、ハフマン符号語長、付加ビット数及びランレングスといった項目については同一構成をとる。
ここでは、最も代表的な可変長符号化方式であるハフマン符号化を採用している国際標準符号化JPEG(Joint Photographic Experts Group)方式の可変長符号の復号装置への実装例として説明する。JPEG方式では、DCT(Discrete Cosine Transform)変換が採用されており、(8×8)のDCTブロック係数に対して符号語を割り当てる。
図3はDCTブロックとジグザグスキャンを示す図である。例えば、図3に示すDCTブロックにおいて、量子化を経た非ゼロ係数とゼロ係数をジグザグスキャン順に符号化され、(0,0)のDC係数とその他のAC係数の非ゼロ係数で符号語が出力される。途中で、ゼロ係数が16個に達したところで符号語が出力され、また、後続のAC係数に非ゼロ係数がなくなったところでも符号語が出力される。
図4は図3の例に基づいた係数列の符号語出力単位を示す図であり、図3の破線丸印の部分で係数列が区切られている。
画像中のDCTブロックはインターバルという単位で分割され、インターバルの最初で符号器及び復号器を初期化する。インターバル内の第1番目のDCTブロックのDC係数を除き、後続のDCTブロックのDC係数は直前のDCTブロックのDC係数との差分値(以下、DC差分値という)が符号化される。
図5はDCTブロックの符号語構成を示す図である。図5に示すDC係数については、DC係数又はDC差分値を表現するのに必要なビット数(一般にカテゴリというが、以下、付加ビット数という)が符号語として出力され、その後にその付加ビット数で示されるビット値(以下、付加ビットという)を出力することでDC係数を表現する。また、図5に示すAC係数については、ゼロ係数の連続数(ランレングス)とその直後の非ゼロ係数の付加ビット数で決まる符号語が出力され、その後にその非ゼロ係数の付加ビット数で示されるビット値(以下、付加ビットという)を出力することでAC係数列を表現する。
図6はJPEG勧告書の付属書Kに記載される輝度成分のDC係数の符号語テーブルの一例を示す図である。
図7はJPEG勧告書の付属書Kに記載される色差成分のAC係数の符号語テーブルの一例を示す図である。ゼロ係数のランレングスは0から15まで、付加ビット数は0から10までが使用され、ランレングスと付加ビット数の組単位で符号語が割り当てられている。付加ビット数0の係数値は0であり、ランレングス15と合わせて16個のAC係数となり、ゼロランレングス(ZRL:Zero Run Length)といわれる。また、付加ビット数0、ランレングス0は、以降のAC係数に非ゼロ係数が存在しないことを示すブロック終了(EOB:End Of Block)といわれる。
図8はハフマンテーブルの定義セグメント例を示す図であり、図7のJPEG勧告書の付属書Kに記載される色差成分のAC係数の符号語テーブルの一例である。JPEG方式では、この図8の形式でハフマンテーブルが表現される。図中の各項目上段の数値は情報フィールドの各ビットサイズ、中段の数値は16進(h)で表現されており、下段の“DHT”はハフマンテーブルの定義であることを示し、“Lh”は後続のデータサイズを示す。また、“Tc”はテーブルクラスを示し、0がDC係数用、1がAC係数用を示す。“Th”はハフマンテーブル識別子を示し、JPEG勧告書の付属書Kでは、0が輝度成分、1が色差成分を示す。図8の下段において、“L1”から“L16”の数値はハフマン符号長CL(以下、符号語長という。)を意味し、テーブル中に存在するそのサイズの符号語の数を示す。ここでは、L1=00hなので、符号語長は2以上であり、“V2,1”から“V2,L2”は符号語長2の1番目からL2番目の符号語の情報を示す。符号語長1から16の符号語の総数は、ΣLi(i=1〜16)個となる。その上位4ビットはランレングス“RL”、下位4ビットは付加ビット数“VL”を示す。ここで、符号語テーブルがDC係数用であれば、ランレングスは用いないので、全ての符号語でRL=0とされる。
テーブルに定義された全符号語のうち、nビットの符号語長の符号語は2進数順に連続する。0を初期値として、(n+1)ビットの第1番目の符号語は、nビットの最終符号語の値に1を加えて2倍した値として与えられる。
図9はハフマン符号語長CLと付加ビット数VLを示す図である。この実施の形態1では、図9に示すように、符号ビット列から符号語を解析するために、上位から最初の特定ビット‘0’の位置情報Posの同一符号語に対して、その中の最大長の符号語を区別するために必要な特定ビット‘0’以降の参照ビット数Refの符号ビット列をアドレスとして、符号語長CLを特定すると共に、符号語直後の付加ビット数VL、さらにAC係数ではランレングスRLを参照するまでを説明する。基本的に(特定ビットまでのビット数(Pos+1))+(参照ビット数Ref)=(ハフマン符号語長CL)となる符号語に対してはテーブル拡張を必要としないが、(特定ビットまでのビット数(Pos+1))+(参照ビット数Ref)>(ハフマン符号語長CL)となる例外部分の符号語に対してはテーブルを最初に拡張しておく。なお、符号ビット列を一度に参照する最大ビット数は、テーブルに定義される符号語に関連付けられたCL又はVLの各最大値のいずれかより大きい値となる。
次に動作について説明する。
テーブルの拡張手順と係数の復号手順の詳細は後述するものとし、図1に示す拡張テーブルを使用する可変長符号の復号装置のブロック構成図に基づいて復号処理の動作を説明する。
以下では、復号処理を準備段階と実処理段階に分けて説明する。準備段階ではテーブル拡張処理を行う。係数を復元する実処理段階では、符号語の処理と、付加ビットがあるときには付加ビットの処理を行う。
<テーブル拡張処理の動作概要>
まず、テーブル拡張の動作について説明する。
図1において、テーブル拡張部100は、標準サイズの標準テーブルTablesを入力し、拡張テーブル部101のデータと、その拡張テーブルへのアドレスを生成するための補助テーブル部102のデータとを出力する。
テーブル拡張器100は、図8で与えられるような復号すべき可変長符号Codeに先立って与えられる可変長の符号語を定義した標準テーブルTablesを入力し、図9に示されるような符号語の中で値が変化する最上位の特定ビット(ここでは‘0’)の位置を示す位置情報Posに基づいて各符号語を符号語長の昇順に分類し、同一分類中で特定ビットから最大符号語長までのビット数を参照ビット数Refとして定義した参照ビット数テーブル121と、各分類において、それ以前の分類までの累積符号語数を基準位置Baseとして定義した基準位置テーブル120とを補助テーブルとして生成し、入力した標準テーブルから、各分類において、各符号語の符号語長と最大符号語長との差に基づき拡張した、各符号語のハフマン符号語長CLを示すハフマン符号語長テーブル110と、各符号語の付加ビット数VLを示す付加ビット数テーブル111と、各符号語のゼロ係数のランレングスRLを示すランレングステーブル112と含む拡張テーブルを生成する。ここで、位置情報Posは、符号語の最上位ビットおよび復号レジスタの最上位ビットから下位へ0,1,2,・・・とゼロから始まる値である。
<符号語の処理の動作概要>
符号語の処理としては、復号レジスタ103は、最大符号語長の符号を保持して符号ビット列Cregを参照可能にし、また通知されたビット数分シフトすることで、復号処理済の上位ビット値をレジスタ外に掃き出すと共に新しい未処理の可変長符号Codeをレジスタ下位から取り入れて符号ビット列Cregの更新を行う。拡張アドレス生成部104は、符号語及び符号語長が特定できていない状態で、符号ビット列Cregを参照し、上位から最初のビット‘0’の位置情報Posを補助テーブル部102に出力して基準位置Baseと参照ビット数Refを得て、拡張テーブルへのアドレスAddressを拡張テーブル部101へ出力する。拡張テーブル部101は、ハフマン符号語長テーブル110と付加ビット数テーブル111とランレングステーブル112から、アドレスAddressで指定されたハフマン符号語長CLと付加ビット数VLとランレングスRLを出力する。シフト数選択器105は、ハフマン符号語長CL及び付加ビット数VLを入力して、符号語の処理が終了した時点で復号レジスタ103を符号語長CLビット分シフトするように更新を復号レジスタ103に通知する。
拡張アドレス生成部104の詳細動作を説明する。零位置検出器130は、復号レジスタ103の符号ビット列Cregを参照して、最上位から最初のビット‘0’の位置情報Posを出力する。基準位置テーブル120と参照ビット数テーブル121は、位置情報Posをアドレスとして、それぞれ基準位置Baseと参照ビット数Refを出力する。オフセット抽出器131は、復号レジスタ103の符号ビット列Cregを参照して、位置情報Pos以降の参照ビット数Refの符号ビット値をオフセットOffsetとして出力する。加算器132は、基準位置BaseとオフセットOffsetを加えて、拡張テーブルへのアドレスAddressを出力する。
また、拡張テーブル部101の詳細動作を説明する。拡張テーブル部101は、ハフマン符号語長テーブル110と付加ビット数テーブル111とランレングステーブル112から、入力したアドレスAddressに基づき、ハフマン符号語長CLと付加ビット数VLとランレングスRLを出力する。
ここで、シフト数選択器105は、ハフマン符号語長CLをシフト数Shiftとして出力し復号レジスタ103へ更新を通知する。復号レジスタ103は、ハフマン符号語長CLが通知されたシフト数Shift分だけ符号ビット列Cregを更新し、符号語の処理から付加ビットの処理へ移る。
<付加ビットの処理の動作概要>
付加ビットの処理としては、付加ビット抽出器106は、復号レジスタ103の符号ビット列Cregを参照して、上位の付加ビット数VLの符号ビット値を付加ビットAddbitとして出力する。係数復元器107は、DC係数又はランレングスRL個のゼロ係数と非ゼロ係数のAC係数をDCT係数Coeffとして順次復元して出力する。DC係数バッファ108は、復元されたDC係数値を次のDCTブロックのDC係数の復元まで保持して参照可能とし、直前のDCTブロックのDC係数PreDCとして出力する。
係数復元器107において、復元すべき係数がDC係数のとき、図6で示される直前のDCTブロックのDC係数値との差分値が、付加ビット数VLとその付加ビットAddbitから復元され、DC係数バッファ108に保持された直前のDCTブロックのDC係数PreDCと差分値からDC係数を復号する。また、復元すべき係数がAC係数のとき、ランレングスRL(復元すべき復号単位数)からRL個のゼロ係数と、付加ビット数VLと付加ビットAddbitから非ゼロ係数を復号する。
ここで、シフト数選択器105は、シフト数Shiftとして付加ビット数VLを出力して復号レジスタ103へ更新を通知する。復号レジスタ103は、付加ビット数VLが通知されたシフト数Shift分だけ符号ビットを更新し、付加ビットの処理から符号語の処理へ移る。
このように、この実施の形態1では、符号語の処理と付加ビットの処理を交互に実行し、DCTブロック内の係数を全て復号する。
図1及び図2において、図示された信号DC/ACは、復号するDCT係数がDC係数かAC係数かを示すものとする。図中、信号線は記載していないが、拡張テーブル部101のハフマン符号語長テーブル110、付加ビット数テーブル111及びランレングステーブル112、補助テーブル部102の基準位置テーブル120及び参照ビット数テーブル121は、輝度信号と色差信号の2種で区別して適宜切り替えるものとする。また、復号する成分が輝度信号Yか、色差信号Cb、Crの3種の信号について対応する3組の復号レジスタ103、DC係数バッファ108を切り替える。ただし、この切り替えはJPEG方式を例に説明したものであり、輝度や2つの色差信号のテーブル共通化、独立化を図ることは可能である。
ここで、DC係数バッファ108は、JPEG方式に沿い、DC係数の差分を求めてDPCM(Differential Pulse Code Modulation)符号化するため、直前のDCTブロックのDC係数の保存が必要とされるが、DPCM符号化を適用しない他の符号化方式では必要とされないこともある。この場合、拡張テーブルと補助テーブルの切り替えは適宜行い、DC係数において差分を適用せず復号を行えば良い。
<テーブル拡張処理の詳細処理フロー>
図10はハフマンテーブルの拡張処理フローを示す図であり、図11は拡張テーブルの出力処理フローを示す図である。
テーブル拡張器100のテーブル拡張処理の詳細を図10及び図11に基づいて説明する。以下の説明では、図8のように定義される“L1”から“L16”を配列L[0]からL[15]、“V1,1”から“V16,L16”を配列V[0]からV[(ΣLi)−1]として参照し、テーブルを拡張するものとする。補助テーブルである基準位置テーブル120を配列Base_Table、参照ビット数テーブル121を配列Ref_Tableとし、配列サイズを16とする。拡張テーブルであるハフマン符号語長テーブル110を配列CL_Table、付加ビット数テーブル111を配列VL_Table、ランレングステーブル112を配列RL_Tableとし、ここでは配列サイズを256としているが、さらに十分な配列サイズを確保しておいても構わない。
ハフマンテーブルの拡張処理を行うHuffman_Extention処理フローについて、図10に基づいて説明する。
図10において、ステップST101〜ST103は基準位置テーブルBase_Table、参照ビット数テーブルRef_Tableの初期化処理を示し、ステップST104〜ST107は、拡張されたハフマン符号語長テーブルCL_Table、拡張された付加ビット数テーブルVL_Table、拡張されたランレングステーブルRL_Tableの初期化処理を示す。
ステップST108〜ST112は初期化処理を示し、Uは配列Lの指標、Vは配列Vの指標、VVは配列(テーブル)CL_Table、VL_Table,RL_Tableの指標、Posは配列(テーブル)Base_Table、Ref_Tableの指標を示す。変数Lは(U+1)ビット[図6でL[u]=L(uは指標)=L(u+1)(u+1は符号長)の未拡張の符号語の残数を示す。
ステップST113〜ST116は未拡張の符号語を残している符号語長の探索処理を示し、ステップST115はテーブル拡張終了判定処理を示している。
ステップST117〜ST131は上位ビットから(Pos+1)ビット目に初めてビット‘0’が出現する符号語の探索処理を示し、変数Sは分類開始時の指標Uの保存を示し、変数LSはSの未拡張の符号語の残数の保存を示し、変数Tは同一Pos値を持つ拡張後の符号語の総数を示す。変数Rは変数Tの最大値を示し、越える場合はステップST128で次のPosへ変数Lに保存して持ち越す。変数Eは分類終了時の指標Uの保存を示し、変数LEは変数Eの未拡張の符号語の残数の保存を示す。ステップST121はBase_Tableの出力設定処理を示し、Base=VVは分類開始時点である。また、ステップST131はRef_Tableの出力設定処理を示し、Ref=E−Posは分類終了時点である。
ステップST132は拡張テーブルの出力処理を示し、ステップST133はPosの更新処理を示し、ステップST134はテーブルの拡張終了判定処理を示す。
図10のステップST101〜ST103において、配列Base_Table及び配列Ref_Tableのnについて、ステップST102〜ST103で、n=0を初期値とし、n=n+1と1を加算しながらn=15になるまで繰り返す。同様に、ステップST104〜ST107において、配列CL_Table、配列VL_Table及び配列RL_Tableのnについて、ステップST105〜ST107で、n=0を初期値とし、n=n+1と1を加算しながらn=255になるまで繰り返す。ここで、n=255はテーブル配列の最大サイズであり、必要なサイズに調整すれば良い。
ステップST108において、配列Lへの参照アドレスU(ハフマン符号語長)を0に初期化する。ステップST109において、配列Vへの参照アドレスVを0に初期化する。ステップST110において、配列CL_Table、配列VL_Table及び配列RL_Tableへの参照アドレスVVを0に初期化する。ステップST111において、符号語のビット列の最上位から最初のビット‘0’の位置情報Posを0に初期化する。ステップST112において、同一Posの符号語数LをL[U](U=0)に初期化する。
ステップST113において、現ハフマン符号語長U、現Pos値の未処理の符号語数Lが0か否かを判定する。Lが0ならば、ステップST114おいてUに1を加え、ステップST115でUが16未満であれば、ステップST116において、LをL[U]に更新し、ステップST113において、Lが0でなくなるまでステップST113からステップST116を繰り返し、ステップST115でUが16になるとテーブル拡張処理を終了する。
ステップST113でLが0でなくなると、ステップST117において、現Pos値の開始ハフマン符号語長SにUを設定する。ステップST118において、現ハフマン符号語長U、現Pos値の未処理の符号語数LをLSに保存する。ステップST120において、現Pos値の符号語数Tを0に初期化する。ステップST121において、現Pos値をアドレスとしてBase_Table[Pos]にVVを設定する。
ステップST122において、現ハフマン符号語長Uと現Pos値の差U−Posから現Pos値の総符号語数Rに(1<<(U−Pos))を設定する。演算子“<<”は上位方向へのシフトを示し、1ビットシフトで2倍となる。ステップST123において、現Pos値の符号語数Tに現Pos値の未処理の符号語数Lを加える。ステップST124においてTとRを比較する。TがRに満たないとき、ステップST125において、Tを1ビットシフトして2倍にする。ステップST126において、現ハフマン符号語長Uに1を加えて更新する。ステップST127において、現Pos値の未処理の符号語数LにL[U]を設定する。ステップST122からステップST127までを、途中ステップST124でTがR以上になるまで繰り返す。
ステップST124でTがR以上になると、ステップST128において、(T−R)をLに設定する。ステップST129において、現Pos値の終了ハフマン符号語長EにUを設定する。ステップST130において、現ハフマン符号語長U、現Pos値の未処理の符号語数LをLEに保存する。ステップST131において、現Pos値をアドレスとしてRef_Table[Pos]に現Pos値の終了ハフマン符号語長Eと現Pos値との差(E−Pos)を設定する。
ステップST132において、これらテーブル拡張のための変数値をもって、Table_Output処理を実行し、現Pos値に関する拡張テーブルを出力する。ステップST133において、Pos値に1を加えて更新する。ステップST134において、更新したPos値が16未満であればステップST113からの処理を繰り返して継続し、16になればテーブル拡張処理を終了する。
次に、図10のステップST132で実装される拡張テーブルを出力するTable_Output処理フローについて、図11に基づいて説明する。
この拡張テーブルの出力処理は分類単位で実行される。図11において、Mは符号語長を示し、EXは符号語1つ当りの拡張(倍数)を示し、LLは終了指標Eの拡張対象の符号語数を示す。
ステップST211〜ST217はPosでU=Sである符号語の拡張処理を示し、LS個の符号語について処理が行われる。ステップST212〜ST216は符号語1つ当りのEX倍の拡張処理を示し、ステップST213〜ST215はCL_Table、VL_Table、RL_Tableの出力設定処理を示す。
ステップST223〜ST229はPosでS<U(=M)<Eである符号語の拡張処理を示し、L[M]個の符号語について処理が行われる。ステップST224〜ST228は符号語1つ当りのEX倍の拡張処理を示し、ステップST225〜ST227はCL_Table、VL_Table、RL_Tableの出力設定処理を示す。
ステップST204〜ST209はPosでU=Eである符号語の拡張処理を示し、LL個の符号語について1つ当りの1倍の拡張処理を示し、ステップST205〜ST207はCL_Table、VL_Table、RL_Tableの出力設定処理を示す。
図11のステップST201において、現Pos値の開始ハフマン符号語長Sが配列Lへのアドレスとして0基準であるため、ハフマン符号語長Mに(S+1)を設定する。ステップST202において、SとEを比較する。
まず、ステップST202でSとEが等しいとき、ステップST203において、出力符号語数LLに(LS−LE)を設定する。ステップST204において、ステップST205からステップST209によって、拡張テーブルへVV、VをアドレスとしてLL個の符号語1つにつき1回ずつ出力する。ステップST205において、CL_Table[VV]にハフマン符号語長Mを設定する。ステップST206において、VL_Table[VV]にV[VV]の下位4ビットの付加ビット長を設定する。ステップST207において、RL_Table[VV]にV[VV]の上位4ビットのランレングスを設定する。ステップST208において、ステップST204のループに対して標準テーブルへのアドレスV、ステップST209において、拡張テーブルへのアドレスVVにそれぞれ1を加えて更新する。
一方、ステップST202でSがEより小さいとき、ステップS210において、符号語当たりの拡張数EXに(1<<(E−S))を設定する。ステップST211において、ステップST212からステップST217によって、拡張テーブルへVV、VをアドレスとしてLS個の符号語1つにつきEX回ずつ出力する。ステップST212において、ステップST213からステップST216によって、EX回の符号語出力を行う。ステップST213において、CL_Table[VV]にハフマン符号語長Mを設定する。ステップST214において、VL_Table[VV]にV[VV]の下位4ビットの付加ビット長を設定する。ステップST215において、RL_Table[VV]にV[VV]の上位4ビットのランレングスを設定する。ステップST216において、ステップST212からのループに対して拡張テーブルへのアドレスVVに1を加えて更新する。ステップST217において、ステップST211からのループに対して標準テーブルへのアドレスVに1を加えて更新する。
ステップST218において、MとEを比較する。MとEが等しいとき、ステップST219において、Mに1を加えて更新する。ステップS220において、LLに(L[E]−LE)を設定する。この後、先に示したステップST204以降の処理を行う。
また、ステップST218でMがEより小さいとき、ステップST221において、Mに1を加えて更新する。ステップS222において、EXを(EX>>1)に更新する。演算子“>>”は下位方向へのシフトを示し、1ビットシフトで1/2倍となる。
ステップST223において、ステップST224からステップST229によって、拡張テーブルへVV、VをアドレスとしてL[M]個の符号語1つにつきEX回ずつ出力する。ステップST224において、ステップST225からステップST228によって、EX回の符号語出力を行う。ステップST225において、CL_Table[VV]にハフマン符号語長Mを設定する。ステップST226において、VL_Table[VV]にV[VV]の下位4ビットの付加ビット長を設定する。ステップST227において、RL_Table[VV]にV[VV]の上位4ビットのランレングスを設定する。ステップST228において、ステップST224からのループに対して拡張テーブルへのアドレスVVに1を加えて更新する。ステップST229において、ステップST223からのループに対して標準テーブルへのアドレスVに1を加えて更新する。ステップST218からステップST229までを、ステップST218でMがEと等しくなるまで繰り返す。
図12は、これらのテーブル拡張処理により、JPEG勧告書の付属書Kに記載される色差成分のAC係数の符号語テーブルの一例を示す図である。図において、左側のテーブルが標準テーブルで、右側のテーブルが補助テーブルと拡張テーブルであり、‘*’が実際の符号語長より余分に参照しなければならないビットを示しており、‘0’,‘1’のどちらでも構わないため、ビット当たり2倍の拡張となることをオフセットOffsetが示している。図12に示すように、標準テーブルにおける162個の符号語が、拡張テーブルでは181個に拡張されている。同様に、JPEG勧告書の付属書Kに記載されるテーブルの拡張前後を比較すると、図12では示されていないが、輝度成分のDC係数用テーブルの符号語12が13で1.08倍、AC係数用テーブル符号語162が177で1.09倍、色差成分のDC係数用テーブル12が12で1.00倍、先に説明したAC係数用テーブル符号語162が181で1.12倍となっており、この場合、CL、VL、RLのテーブルは8ビット(256)のアドレス空間で足りている。また、補助テーブルについては、PosをアドレスとするBase、Refのテーブルともにサイズは16である。
例えば、図12において、補助テーブルとして、参照ビット数テーブル(Ref)は最大値6で3ビット、基準位置テーブル(Base)は8ビットをアドレスPosに対して16ビット変数又は32ビット変数にパッキングして一度に参照し、分割して使用できるようにしても構わない。同様に、拡張テーブルとして、ハフマン符号語長テーブル(CL)は最大値16(5ビット)、付加ビット数テーブル(VL)は最大値10(4ビット)、ランレングステーブル(RL)は最大値15(4ビット)を16ビット変数又は32ビット変数にパッキングしても構わない。また、必要最小限のビット数で自由にパッキングしたテーブルを設計できるのであれば、16ビット、32ビットに限ることもない。
<復号処理の詳細処理フロー>
図13はDCTブロックの復号処理フローを示す図である。
復号処理の詳細を図13に基づいて説明する。DC係数、AC係数で区別するため、補助テーブルRef_Table、Base_Table、拡張テーブルCL_Table、VL_Table、RL_Tableの名前の先頭に“DC_”、“AC_”を付けておく。輝度信号、色差信号は、テーブルが適宜選択されるものとする。
ステップST301からステップST304はDCTブロックのハフマン復号を行うHuffman_Decoding_DCT処理を示している。
ステップST301では、処理について括弧( )で囲んでいるのはインターバルの最初のDCTブロックか否かを判定し、最初のDCTブロックときのみ実行することを示しており、DC係数バッファ108が直前のDCTブロックのDC係数PreDCを0にクリアして初期化する。ステップST302において、復号装置の全体を管理制御する管理制御部(図示せず)はDCT係数番号Numを0に初期化する。ステップST303において、管理制御部は復号処理対象のDCTブロックの係数配列をクリアして0に初期化する。ステップST304において、復号レジスタ103及びシフト数選択器105は復号レジスタ103を符号ビット列Cregで満たして初期化する。
ステップST305からステップST317はDC係数復号処理を示している。
DC係数の復号処理として、まず、符号語を処理するために、ステップST305において、零位置検出器130は符号ビット列Cregの最上位のビット‘0’の位置を位置情報Posに設定する。ステップST306において、参照ビット数テーブル121は、位置情報Posに基づき、補助テーブルRef_Tableから参照ビット数Refを設定し、ステップST307において、基準位置テーブル120は、位置情報Posに基づき、Base_Tableから基準位置Baseを設定する。ステップST308において、オフセット抽出器131は符号ビット列Creg上で位置情報Posが示すビット‘0’以降の参照ビット数Refの符号ビットを参照してオフセットOffsetに設定する。ステップST309において、加算器132は、BaseとOffsetを加え、拡張テーブルへのアドレスAddressに設定する。
ステップST310において、ハフマン符号語長テーブル110は、アドレスAddressに基づき、拡張テーブルCL_Tableからハフマン符号語長CLを設定し、ステップST311において、付加ビット数テーブル111は、アドレスAddressに基づき、VL_Tableから付加ビット数VLを設定する。ステップST312において、復号レジスタ103及びシフト数選択器105は、符号ビット列Creg上位から読み取ったハフマン符号語長CLビット分の符号ビットを更新する。
次に、付加ビットを処理するために、ステップST313において、付加ビット抽出器106は、符号ビット列Creg上位から付加ビット数VLビット分の符号ビットを参照して付加ビットAddbitに設定する。ステップST314において、係数復元器107は、参照された付加ビットAddbitとDC係数バッファ108に保存された直前のDCTブロックのDC係数PreDCから、図1及び図2では係数Coeffと示されたDC係数を復元し、DCT係数の配列に格納する。ステップST315において、復元されたDC係数をDC係数バッファ108のPreDCに保存する。ステップST316において、管理制御部は復号するDCT係数番号Numを1進める。ステップST317において、復号レジスタ103及びシフト数選択器105は、符号ビット列Creg上位から読み取った付加ビット数VLビット分の符号ビットを更新する。
ステップST318からステップST333はAC係数復号処理を示している。
AC係数の復号処理として、まず符号語を処理するために、ステップST318からステップST322において、上記ステップST305からステップST309までと同様に、拡張テーブルへのアドレスAddressが設定される。ステップST323において、ハフマン符号語長テーブル110は、アドレスAddressに基づき、拡張テーブルCL_Tableからハフマン符号語長CLを設定し、ステップST324において、付加ビット数テーブル111は、アドレスAddressに基づき、VL_Tableから付加ビット数VLを設定し、ステップST325において、ランレングステーブル112は、アドレスAddressに基づき、RL_TableからランレングスRLを設定する。ステップST326において、復号レジスタ103及びシフト数選択器105は符号ビット列Creg上位から読み取った符号語数CLビット分の符号ビットを更新する。
ステップST327において、管理制御部は、処理された符号語の付加ビット数VL、ランレングスRL共に0であるEOBであれば、DCTブロックの復号処理を完了させる。処理された符号語がEOBでなければ、付加ビットを処理する前に、ステップST328において、管理制御部は復号するDCT係数番号NumをランレングスRLだけ進める。付加ビットの処理として、ステップST329において、付加ビット抽出器106は符号ビット列Creg上位から付加ビット数VLビット分の符号ビットを参照して付加ビットAddbitに設定する。ステップST330において、係数復元器107は、参照された付加ビットAddbitから、図1及び図2では係数Coeffと示されたAC係数を復元し、DCT係数の配列に格納する。
ステップST331において、管理制御部は復号するDCT係数番号Numを1進める。ステップST332において、復号レジスタ103及びシフト数選択器105は、符号ビット列Creg上位から読み取った付加ビット数VLビット分の符号ビットを更新する。ステップST333において、管理制御部は次に処理すべきDCT係数番号Numが64未満であれば、ステップST318からステップST332のAC係数の復号処理を繰り返し行わせる。
ここで、ステップST308及びステップST321における参照ビット数Ref、ステップST313及びステップST329における付加ビット数VLが0のとき、設定すべきオフセットOffsetあるいは付加ビットAddbitは0として扱う。また、ステップST327において処理された符号語がEOBであったときの復号処理の完了や、また、ステップST328でランレングスRL分の加算でゼロ係数のランの処理を済ますことができるのは、ステップST303でDCTブロックの係数を予め0に初期化しているためで、初期化をせずに復号処理を行う場合には、DCTブロック内の残りの係数を0に設定して終了するか、ランレングス分の係数を0に適時設定することが必要となる。
図13の復号処理フローにおいて、零位置検出器130の動作に相当するステップST305及びステップST318における復号レジスタ103の符号ビット列Cregの最上位のビット‘0’の位置情報Posの設定方法について説明する。これらは、プライオリティエンコーダを適用して最上位のビット‘0’を探索することに相当するが、装置規模の制約などにより適用できないときの処理例を示す。
例えば、図14は零位置検出器130が保持する8ビットの数値0から255における最上位のビット‘0’の位置情報PosのテーブルPos_Tableを示す図である。定数のテーブルであるためテーブル拡張器100を介して設定される必要はない。まず、復号レジスタ103の上位8ビットBHに基づき、参照された位置情報Posが8未満ならば確定とする。8であれば、さらに下位8ビットBLに基づき、ここで参照された位置情報Posと先の上位8ビットBHで参照された位置情報Posの和を最終的な位置情報Posとして確定する。テーブルサイズに制約がなければ、最大符号語長16ビットを一度に参照できるようにしても良いし、制約があればより細かく短いビット長でテーブルを設計しても構わない。
また、オフセット抽出器131の動作に相当するステップST308及びステップST321のオフセットOffset抽出方法について説明する。オフセット抽出器131には、復号レジスタ103の符号ビット列Cregの値、その最上位のビット‘0’位置情報Pos、参照ビット数Refが入力され、オフセットOffsetが出力される。例えば、Creg値を(Pos+1)ビット上位方向にシフトし、その後、復号レジスタ長16と参照ビット数Refの差(16−Ref)ビット下位方向にシフトした値をオフセットOffsetとすることができる。上位方向のシフトでは、空いた下位ビットには0が入ってくるものとする。また、下位方向のシフトでは、空いた上位ビットには0が入ってくるものとする。上記上位方向へのシフト処理は、Creg値で不要な上位ビットをクリアするために、下位方向へのシフト処理に先立って適用している。
また、他のオフセット値の抽出例としては、Creg値を(16−(Pos+1)−R
ef)ビット下位方向にシフトしてから(Pos+1)ビットの有効ビット参照用のマスクをかけて得る構成であってもよい。
同様に、付加ビット抽出器106については、符号レジスタ103の符号ビット列Cregが符号語数CLビットのシフト後に更新されているため、最上位ビットから付加ビットAddbitを抽出すれば良く、上位方向のシフトなしに、(16−VL)ビット下位方向にシフトした値を付加ビットAddbitとすることができる。
この実施の形態1では、拡張を行うテーブルの各項目であるハフマン符号語長CL、付加ビット数VL、ランレングスRLはそれぞれ独立したテーブルとして説明したが、少なくともそれぞれの最大値が収まるフィールドを設けた1つのテーブル要素としてパッキングしておき、拡張アドレスから本来の各項目をもつテーブル要素を一度に参照した後、対応フィールドに適宜分解して各項目の値を決定するようなテーブル構成を採って実現しても構わない。
以上のように、この実施の形態1によれば、標準テーブルTablesを拡張した拡張テーブルを適用して復号処理を行い、拡張アドレス生成部104による位置情報Posの参照、補助テーブル部102による基準位置Base及び参照ビット数Refの参照、拡張テーブル部101によるハフマン符号語長CL、付加ビット数VL及びランレングスRLの参照が符号語長によらず一定の手順で行えるため、各テーブルへのアクセス回数がばらつくことなく、従来の1ビットずつ参照範囲を拡大して符号語判定を行いながらハフマン符号語長CL,付加ビット数VL及びランレングスRLを参照するよりも符号語を高速に特定することができるという効果が得られる。
また、この実施の形態1によれば、標準テーブルTablesの他に冗長性を持った拡張テーブルと補助テーブルが必要になるが、従来のように(256×3)アドレス分のテーブルサイズより小さくすることができ、元の標準テーブルのテーブルサイズから最小限の増加に抑えることができるという効果が得られる。
さらに、この実施の形態1によれば、ハフマン符号語長の判定毎に各ハフマン符号語長の符号語最大値と各ハフマン符号語長に相当する符号ビット列を比較した結果を必要としないため、符号語最大値を保持するレジスタと比較器を不要にし、ハードウェア規模又はソフトウェア処理負荷の増大を抑えることができるという効果が得られる。
実施の形態2.
上記実施の形態1では、復号レジスタ103の符号ビット列Cregは、シフト数選択器105により図9に示すハフマン符号語長CL、付加ビット数VLの2回に分けて更新を行っていた。この実施の形態2では、復号レジスタ103の符号ビット列Cregを、特定ビットまでのビット数(Pos+1)、ハフマン符号語長CLまでの残りのビット数(CL−(Pos+1))、付加ビット数VLの3回に分けて更新する場合について説明する。
図15はこの発明の実施の形態2による可変長符号の復号装置の詳細構成を示すブロック図である。図15では、実施の形態1の図2に対して、零位置検出器130から出力された位置情報Posをシフト数選択器105に入力し、零位置検出器130からオフセット抽出器131への位置情報Posの入力を省略している点が異なっており、その他の構成は同じである。
次に動作について説明する。
ここでは、実施の形態1との動作の相違を説明する。
シフト数選択器105は、復号レジスタ103の符号ビット列Cregを1回目の特定ビットまでのビット数(Pos+1)シフトして更新させることで、参照ビットを符号ビット列Cregの最上位ビットから抽出可能とする。オフセット抽出器131は、復号レジスタ103の符号ビット列Cregを参照し、符号ビット列Cregの最上位ビットから参照ビット数Refの符号ビット値をオフセットOffsetとして出力する。上記実施の形態1と同様にハフマン符号語長CL等を得た後、シフト数選択器105は、復号レジスタ103の符号ビット列Cregを2回目のハフマン符号語長CLまでの残りのビット数(CL−(Pos+1))シフトして更新させることで符号語長分のシフトを完了させた後、上記実施の形態1と同様に3回目の付加ビット数VLシフトして更新させる。
図16はDCTブロックの復号処理フローにおけるDC係数復号処理及びAC係数復号処理を示す図であり、上記実施の形態1の図13に示すDC係数復号処理及びAC係数復号処理に相当する。
図16のDC係数復号処理では、図13におけるステップST308をステップST341,ST342に置き換え、また、ステップST312をステップST343に置き換えている。ステップST341では、位置情報Posで見つけた復号レジスタ103の最上位のビット‘0’までの(Pos+1)ビットを更新しており、ステップST342では、Refビットの参照ビットを復号レジスタ103の最上位ビットからOffsetを得られるようになる。ステップST343において、図13のステップST312ではCLビット更新していたところ、ここではすでにステップST341で(Pos+1)ビットの更新をしているので、残りの(CL−(Pos+1))ビットの更新を行う。
図16のAC係数復号処理では、図13におけるステップST321をステップST351,ST352に置き換え、また、ステップST326をステップST353に置き換えている。ステップST351では、位置情報Posで見つけた復号レジスタ103の最上位のビット‘0’までの(Pos+1)ビットを更新しており、ステップST352では、Refビットの参照ビットを復号レジスタ103の最上位ビットからOffsetを得られるようになる。ステップST353において、図13のステップST326ではCLビット更新していたところ、ここではすでにステップST351で(Pos+1)ビットの更新をしているので、残りの(CL−(Pos+1))ビットの更新を行う。
この実施の形態2に示される可変長符号の復号装置では、オフセット抽出器131の動作は、復号レジスタ103の符号ビット列Cregの最上位ビットから指定ビット数の符号ビットを抽出する付加ビット抽出器106の動作と基本的に同一となる。よって、参照ビット数Refと付加ビット数VL、オフセットOffsetと付加ビットAddbitは、復号処理フロー上、同時に参照されないため、それぞれ切替器を設けることで適宜切り替えれば、オフセット抽出器131と付加ビット抽出器106の共通化を図ることも可能となる。
以上のように、この実施の形態2によれば上記実施の形態1と同様の効果が得られる。
実施の形態3.
上記実施の形態1では、復号レジスタ103の符号ビット列Cregは、シフト数選択器105により図9に示すハフマン符号語長CL、付加ビット数VLの2回に分けて更新を行っていた。この実施の形態3では、復号レジスタ103の符号ビット列Cregを、ハフマン符号語長CLと付加ビット数VLをまとめて、(CL+VL)の1回のみで更新する場合について説明する。
図17はこの発明の実施の形態3による可変長符号の復号装置の詳細構成を示すブロック図である。図17では、上記実施の形態1の図2と比較して、付加ビット抽出器106にハフマン符号語長テーブル110から出力されたハフマン符号語長CLを入力に加え、復号レジスタ103は、最大付加ビット数より大きい値をとる最大符号語長に等しい16ビットではなく、さらに最大付加ビット数10ビットを加えた26ビットとし、実施の形態1と同様に符号ビットが満たすように更新され保持される点が異なっており、その他の構成は図2と同じである。
次に動作について説明する。
ここでは、上記実施の形態1との動作の相違を説明する。
まず、符号語長CLの処理については、上記実施の形態1と同様に拡張テーブルの出力が得られるまで処理を行う。付加ビット抽出器106は、復号レジスタ103の最上位のハフマン符号語長CLビット以降の付加ビット数VLビットの符号ビットを付加ビットAddbitとして出力した後、上記実施の形態1と同様に付加ビットを処理する。シフト数選択器105は、符号語及び付加ビットの処理が終了しているため、復号レジスタ103の符号ビット列Cregをハフマン符号語長CLと付加ビット数VLの和(CL+VL)ビットシフトして更新させる。
図18はDCTブロックの復号処理フローにおけるDC係数復号処理及びAC係数復号処理を示す図であり、上記実施の形態1の図13に示すDC係数復号処理及びAC係数復号処理に相当する。
図18のDC係数復号処理では、図13におけるステップST312を削除し、図13におけるステップST313をステップST361に置き換え、また、ステップST317をステップST362に置き換えている。ステップST361において、図13のステップST312ではCLビット更新していたところ、ここでは更新を行っていないので、復号レジスタ103の上位CLビット以降のVLビットを付加ビットとして設定する。ステップST362において、図13のステップST312で行っていたCLビット更新と併せて、(CL+VL)ビットの更新を行う。
図18のAC係数復号処理では、図13におけるステップST326を削除し、図13におけるステップST329をステップST371に置き換え、また、ステップST332をステップST372に置き換えている。ステップST371において、図13のステップST326ではCLビット更新していたところ、ここでは更新を行っていないので、復号レジスタ103の上位CLビット以降のVLビットを付加ビットとして設定する。ステップST372において、図13のステップST326で行っていたCLビット更新と併せて、(CL+VL)ビットの更新を行う。ここで、ステップST327でEOBと判定されたときには、図13のステップST326で行っていたCLビットの更新がされていないため、ステップST373でCLビットの更新を行う。
この実施の形態3に示される可変長符号の復号装置では、付加ビット抽出器106の動作は、復号レジスタ103の符号ビット列Cregの最上位ビットから第1指定ビット数以降の第2指定ビット数の符号ビットを抽出するオフセット抽出器131の動作と基本的に同一となる。よって、位置情報Posとハフマン符号語長CL、参照ビット数Refと付加ビット数VL、オフセットOffsetと付加ビットAddbitは、復号処理フロー上、同時に参照されないため、それぞれ切替器を設けることで適宜切り替えれば、付加ビット抽出器106とオフセット抽出器131の共通化を図ることも可能となる。
以上のように、この実施の形態3によれば上記実施の形態1と同様の効果が得られる。
上記実施の形態1から上記実施の形態3に示される可変長符号の復号装置は、例としてJPEG方式に沿って応用形態の一例を示したもので、同一構成でJPEG方式以外の他の可変長符号化方式を適用した応用形態についても実現可能である。また、ハフマン符号語と付加ビットが基本的に交互に並べられた符号形式を対象に説明したが、付加ビットがなく、ハフマン符号語のみが並ぶ符号形式であっても構わない。さらに、全ての係数を、DC係数のように直前復号値との差分として復号し、あるいは差分を用いずAC係数のように復号する構成であっても構わない。さらに、可変長符号語がハフマン符号で設計されていなくても構わない。さらに、対象データは、画像だけに限らず、音声等にも適用することが可能である。
さらに、上記実施の形態1から上記実施の形態3に示される可変長符号の復号装置は、専用装置であっても、汎用計算機等に実装された装置であっても構わない。さらに、装置に読み取り専用で固定的又は書換え可能で保守できる形態で実装されたものであっても、移動可能で可読な媒体やチップ上に蓄積され読み取ることで実行されても構わない。さらに、磁気的、電気的等、接触、非接触及び変調等による記録方式の差によらず、有効であることは言及するまでもない。
この発明の実施の形態1による可変長符号の復号装置の概略構成を示すブロック図である。 この発明の実施の形態1による可変長符号の復号装置の詳細構成を示すブロック図である。 DCTブロックとジグザグスキャンを示す図である。 係数列の符号語出力単位を示す図である。 DCTブロックの符号語構成を示す図である。 輝度成分のDC係数の符号語テーブルの一例を示す図である。 色差成分のAC係数の符号語テーブルの一例を示す図である。 ハフマンテーブルの定義セグメント例を示す図である。 ハフマン符号語長と付加ビット数を示す図である。 この発明の実施の形態1による可変長符号の復号装置のハフマンテーブルの拡張処理フローを示す図である。 この発明の実施の形態1による可変長符号の復号装置の拡張テーブルの出力処理フローを示す図である。 この発明の実施の形態1による可変長符号の復号装置における色差成分のAC係数の符号語テーブルの一例を示す図である。 この発明の実施の形態1による可変長符号の復号装置のDCTブロックの復号処理フローを示す図である。 この発明の実施の形態1による可変長符号の復号装置における8ビット値の最上位ビット‘0’の位置情報テーブルを示す図である。 この発明の実施の形態2による可変長符号の復号装置の詳細構成を示すブロック図である。 この発明の実施の形態2による可変長符号の復号装置のDCTブロックの復号処理フローにおけるDC係数復号処理及びAC係数復号処理を示す図を示す図である。 この発明の実施の形態3による可変長符号の復号装置の詳細構成を示すブロック図である。 この発明の実施の形態3による可変長符号の復号装置のDCTブロックの復号処理フローにおけるDC係数復号処理及びAC係数復号処理を示す図を示す図である。
符号の説明
100 テーブル拡張器、101 拡張テーブル部、102 補助テーブル部、103 復号レジスタ、104 拡張アドレス生成部、105 シフト数選択器、106 付加ビット抽出器、107 係数復元器、108 DC係数バッファ、110 ハフマン符号語長テーブル、111 付加ビット数テーブル、112 ランレングステーブル、120 基準位置テーブル、121 参照ビット数テーブル、130 零位置検出部、131 オフセット抽出器、132 加算器132。

Claims (7)

  1. 可変長の符号語を定義した標準テーブルを入力し、符号語の中で値が変化する最上位の特定ビットの位置を示す位置情報に基づいて各符号語を符号語長の昇順に分類し、同一分類中で上記特定ビットから最大符号語長までのビット数を参照ビット数として定義した参照ビット数テーブルと、各分類において、それ以前の分類までの累積符号語数を基準位置として定義した基準位置テーブルとを補助テーブルとして生成し、上記標準テーブルから、各分類において、各符号語の符号語長と最大符号語長との差に基づき拡張した、各符号語のハフマン符号語長を示すハフマン符号語長テーブルを含む拡張テーブルを生成するテーブル拡張手段と、
    与えられた復号すべき可変長符号を少なくとも全符号語に対する最大符号語長の符号ビット列を参照できるように保持する符号保持手段と、
    該符号保持手段に保持されている符号ビット列を参照し、値が変化する最上位の特定ビットの位置を示す位置情報を検出し、検出した位置情報により後述の補助テーブル参照手段から参照ビット数と基準位置を入手し、上記拡張テーブルのアドレスを生成する拡張アドレス生成手段と、
    上記テーブル拡張手段により生成された補助テーブルを管理し、上記拡張アドレス生成手段からの位置情報により上記参照ビット数テーブルと上記基準位置テーブルから参照ビット数と基準位置を出力する補助テーブル参照手段と、
    上記テーブル拡張手段により生成された拡張テーブルを管理し、上記拡張アドレス生成手段により生成されたアドレスに基づき上記ハフマン符号語長テーブルよりハフマン符号語長を出力する拡張テーブル参照手段と、
    該拡張テーブル参照手段により出力されたハフマン符号語長に基づき上記符号保持手段に保持されている符号ビット列をシフトして更新するよう指示する符号更新手段とを備えた可変長符号の復号装置。
  2. 上記テーブル拡張手段は拡張テーブルとして各符号語の付加ビット数を示す付加ビット数テーブルを生成し、
    上記拡張テーブル参照手段は上記拡張アドレス生成手段により生成されたアドレスに基づき上記付加ビット数テーブルより付加ビット数を出力し、
    上記符号更新手段は上記拡張テーブル参照手段より出力されたハフマン符号語長と付加ビット数に基づき上記符号保持手段に保持されている符号ビット列をシフトして更新するよう指示することを特徴とする請求項1記載の可変長符号の復号装置。
  3. 上記符号保持手段に保持されている更新されている符号ビット列を参照し、上記拡張テーブル参照手段により出力された付加ビット数の符号ビット値を付加ビットとして抽出する付加ビット抽出手段と、
    上記拡張テーブル参照手段により出力された付加ビット数と上記付加ビット抽出手段により抽出された付加ビットに基づき、復号値を復元するデータ復元手段とを備えたことを特徴とする請求項2記載の可変長符号の復号装置。
  4. 上記テーブル拡張手段は拡張テーブルとして各符号語のゼロ係数のランレングスを示すランレングステーブルを生成し、
    上記拡張テーブル参照手段は上記拡張アドレス生成手段により生成されたアドレスに基づき上記ランレングステーブルよりゼロ係数のランレングスを出力し、
    上記データ復元手段は、上記拡張テーブル参照手段により出力された付加ビット数及びゼロ係数のランレングスと、上記付加ビット抽出手段により抽出された付加ビットに基づき復号値を復元することを特徴とする請求項3記載の可変長符号の復号装置。
  5. 上記符号更新手段は上記拡張テーブル参照手段より出力されたハフマン符号語長及び付加ビット数に基づき、上記符号保持手段に保持されている符号ビット列の更新を、ハフマン符号語長と付加ビット数に分けて指示することを特徴とする請求項2記載の可変長符号の復号装置。
  6. 上記符号更新手段は上記拡張テーブル参照手段より出力されたハフマン符号語長及び付加ビット数、並びに拡張アドレス生成手段により検出された位置情報に基づき、上記符号保持手段に保持されている符号ビット列の更新を、特定ビットまでのビット数とハフマン符号語長までの残りのビット数と付加ビット数の更新に分けて指示することを特徴とする請求項2記載の可変長符号の復号装置。
  7. 上記符号更新手段は上記拡張テーブル参照手段より出力されたハフマン符号語長及び付加ビット数に基づき、上記符号保持手段に保持されている符号ビット列の更新を、ハフマン符号語長と付加ビット数をまとめて指示することを特徴とする請求項2記載の可変長符号の復号装置。
JP2005114819A 2005-04-12 2005-04-12 可変長符号の復号装置 Expired - Fee Related JP4519701B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005114819A JP4519701B2 (ja) 2005-04-12 2005-04-12 可変長符号の復号装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005114819A JP4519701B2 (ja) 2005-04-12 2005-04-12 可変長符号の復号装置

Publications (2)

Publication Number Publication Date
JP2006295631A true JP2006295631A (ja) 2006-10-26
JP4519701B2 JP4519701B2 (ja) 2010-08-04

Family

ID=37415704

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005114819A Expired - Fee Related JP4519701B2 (ja) 2005-04-12 2005-04-12 可変長符号の復号装置

Country Status (1)

Country Link
JP (1) JP4519701B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101998122A (zh) * 2010-12-13 2011-03-30 山东大学 Jpeg图像中范式霍夫曼的硬件解码方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06152988A (ja) * 1992-11-02 1994-05-31 Sharp Corp 可変長符号の復号化装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06152988A (ja) * 1992-11-02 1994-05-31 Sharp Corp 可変長符号の復号化装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101998122A (zh) * 2010-12-13 2011-03-30 山东大学 Jpeg图像中范式霍夫曼的硬件解码方法及装置

Also Published As

Publication number Publication date
JP4519701B2 (ja) 2010-08-04

Similar Documents

Publication Publication Date Title
KR100527891B1 (ko) 허프만 디코딩을 수행하는 방법
US5883975A (en) Compression and decompression methods on two-dimensional image data
EP0471518B1 (en) Data compression method and apparatus
US6215906B1 (en) Data compression and restoration system for encoding an input character on the basis of a conditional appearance rate obtained in relation to an immediately preceding character string
US5208593A (en) Method and structure for decoding Huffman codes using leading ones detection
US20010054973A1 (en) Variable length decoder
JPH0879092A (ja) データを圧縮及び圧縮解除するための方法及び装置
EP0914009A2 (en) Method and apparatus for start code detection in a compressed bitstream
JP2007037115A (ja) デジタルデータを符号化する方法、データセグメントのストリームを符号化する方法、エンコーダ、データのソースを符号化するためのパラレルエンコーダ、符号化データのソースを復号するためのパラレルデコーダ、コード化データを復号する方法、磁気テープドライブ、およびデータのストリームを符号化する方法
JP2006092725A (ja) 圧縮システム及び方法
JP2007537642A (ja) Xmlデータの構造化されたブロック単位の圧縮及び解凍方法及び装置
US8849051B2 (en) Decoding variable length codes in JPEG applications
US20010012398A1 (en) Multi-color image encoding apparatus and method, multi-color image decoding apparatus and method
JP4519701B2 (ja) 可変長符号の復号装置
US6404362B1 (en) Method and apparatus for reducing the time required for decompressing compressed data
JP2003111021A (ja) 符号化画像データ復号装置、方法およびプログラム
JP2003324611A (ja) 画像処理装置及び画像処理方法
JPH10190476A (ja) データ圧縮方法及びその装置
JPH0884260A (ja) 2次元画像データの圧縮方式および伸長方式
JPH07135471A (ja) データ圧縮装置およびデータ伸張装置
JPH07336696A (ja) 2次元画像データの圧縮方式および伸長方式
JP2004253889A (ja) 画像処理装置及び方法
WO2023172156A1 (en) Method of data optimization for lossless compression, data compression, and decompression apparatus
JPH0846793A (ja) 2次元画像データの圧縮方式および伸長方式
US20040258316A1 (en) Method of digital image data compression and decompression

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20071009

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080220

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080723

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100402

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: 20100511

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: 20100519

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

Free format text: PAYMENT UNTIL: 20130528

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees