JP2004254208A - 3モードエスケープ可変長符号化装置および方法 - Google Patents
3モードエスケープ可変長符号化装置および方法 Download PDFInfo
- Publication number
- JP2004254208A JP2004254208A JP2003044575A JP2003044575A JP2004254208A JP 2004254208 A JP2004254208 A JP 2004254208A JP 2003044575 A JP2003044575 A JP 2003044575A JP 2003044575 A JP2003044575 A JP 2003044575A JP 2004254208 A JP2004254208 A JP 2004254208A
- Authority
- JP
- Japan
- Prior art keywords
- key
- mode
- vlc
- hash table
- variable
- 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.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】3モードエスケープ可変長符号化において、可変長符号テーブルの検索を少なくし高速に可変長符号を得る可変長符号化装置および方法を提供すること。
【解決手段】VLCハッシュテーブル204に3モードエスケープ可変長符号に対応したすべてのキーデータを登録し、ハッシュアドレス生成手段203で、キーデータ(RUN ,LEVEL ,LAST)に演算量の少ないハッシュ演算を施して、VLCハッシュテーブル204のアドレスを直接求める。このアドレスを用い、ハッシュテーブル参照手段205で、VLCハッシュテーブル204を参照する。また、キーデータ(RUN ,LEVEL ,LAST)に照合キー演算を施し照合キーを生成し、テーブル内の検査キーと比較するだけで、キーデータに対応するテーブル情報か否かを判定し、モードおよび可変長符号を求める。
【選択図】 図2
【解決手段】VLCハッシュテーブル204に3モードエスケープ可変長符号に対応したすべてのキーデータを登録し、ハッシュアドレス生成手段203で、キーデータ(RUN ,LEVEL ,LAST)に演算量の少ないハッシュ演算を施して、VLCハッシュテーブル204のアドレスを直接求める。このアドレスを用い、ハッシュテーブル参照手段205で、VLCハッシュテーブル204を参照する。また、キーデータ(RUN ,LEVEL ,LAST)に照合キー演算を施し照合キーを生成し、テーブル内の検査キーと比較するだけで、キーデータに対応するテーブル情報か否かを判定し、モードおよび可変長符号を求める。
【選択図】 図2
Description
【0001】
【発明の属する技術分野】
本発明は、データを可変長符号に変換するための可変長符号装置および方法に関し、特に、画像圧縮処理などにおいて、可変長符号テーブルを用いて可変長符号に変換する可変長符号化装置に関するものである。
【0002】
【従来の技術】
画像情報は、非常に情報量が多いので、大量の画像情報をリアルタイムに送信するのは、非常に困難である。そのため、画像データを圧縮して送信し、受信側で伸長するという技術が用いられている。画像データの典型的な圧縮方法として、出現頻度の高いビットパターンに短い符号を割り当て、出現頻度の低いビットパターンには長い符号を割り当てることにより、全体の符号量を短くする可変長符号化方法がある。
【0003】
以下に、画像データの圧縮方法を簡単に説明する。1999年12月に国際規格として勧告された画像符号化標準方式MPEG−4(Moving Picture Experts Group 4 )では、画像データを離散コサイン変換して、周波数成分のデータに変換し、高周波成分に量子化処理を行って値を小さくする。さらに、量子化により、「0」の出現頻度を高くされたデータは、「RUN」データと「LEVEL」データと「LAST」データとに変換される。
【0004】
ここで、「RUN」は、先行するゼロの係数の個数をあらわすものであり、「LEVEL」は、非ゼロの係数の値をあらわすものである。「LAST」は、該非ゼロの係数が最後であるかどうかを示す識別子である。RUNデータとLEVELデータとLASTデータは、(LAST ,RUN ,LEVEL)の組として一意的な符号を割り当てて、可変長符号テーブルを参照することにより可変長符号化を行う。
【0005】
MPEG−4ではさらに、可変長符号のビット効率を高めるために3モードエスケープコーディング(3 mode escape coding )という技術が導入された。3モードエスケープコーディングの実現方法として、例えば、三木弼一 編著「MPEG−4のすべて」(1998年 工業調査会 ISBN4−7693−1167−2) PP.49〜51、第3章 MPEG−4の規格内容(5)可変長符号化に書かれているものが知られている。
【0006】
図8は、MPEG−4勧告書に記載されているイントラマクロブロック(Intra Macroblock:イントラ符号化とは、画面内のみの情報から符号化を行うものであり、時間が前後する他の画面の情報を使用しないものである。マクロブロックとは、1画面を複数に分割し、16画素×16画素からなるブロックのことである)のLASTデータ範囲、RUNデータ範囲、LEVELデータ範囲を示すものである。図9は、MPEG−4勧告書に記載されているイントラマクロブロックの可変長符号テーブルの一部を示すものである。また、図10は、MPEG−4勧告書に記載されているイントラマクロブロックの [LAST ,RUN] ごとのLEVELの最大値「LMAXの」テーブルと、 [LAST ,LEVEL] ごとのRUNの最大値「RMAX」のテーブルを示すものである。
【0007】
図11、図12は、本書に記載されている3モードエスケープコーディングを実現するフローチャートを示すものである。
【0008】
以下、図11、図12を参照しながら、3モードエスケープコーディングの実現方式を説明する。図11に示すように、3モードエスケープコーディングでは、処理を開始すると、(LAST ,RUN ,LEVEL)の組合せを、可変長符号テーブルで検索する(ステップS800)。次に、可変長符号テーブルに有ったか否かを判定し(ステップS801)、テーブルに有りと判断した場合は、通常モードの符号化なので、可変長符号テーブルより求めた可変長符号(VLC)を出力して(ステップS802)、終了する。
【0009】
上記可変長符号テーブルに有るか否かの判定(ステップS801)でテーブルに無い場合は、LMAXテーブルを参照して [LAST ,RUN] におけるLEVELの最大値LMAXを求める(ステップS803)。次に、LEVELは正または負の値を取り得るのでLEVELの絶対値から、LMAXを減算した値に、符号をつけたLEVEL2を求める(ステップS804)。
【0010】
続いて、(LAST ,RUN ,LEVEL2)の組合せで、可変長符号テーブルを検索する(ステップS805)。次に、可変長符号テーブルに有ったか否かを判定し(ステップS806)、テーブルに有りと判断した場合は、ESCモード1の符号化なので、可変長符号テーブルより求めた可変長符号(VLC)にESC1符号(ESC“0”)を付加し出力して(ステップS807)、終了する。
【0011】
上記可変長符号テーブルに有るか否かの判定(ステップS806)でテーブルに無い場合は、RMAXテーブルを参照して [LAST ,LEVELの絶対値] におけるRUNの最大値RMAXを求める(ステップS808)。次に、RUNから(RMAX+1)を減算してRUN2を求める(ステップS809)。
【0012】
続いて、(LAST ,RUN2 ,LEVEL)の組合せで、可変長符号テーブルを検索する(ステップS810)。次に、可変長符号テーブルに有ったか否かを判定し(ステップS811)、テーブルに有りと判断した場合は、ESCモード2の符号化なので、可変長符号テーブルより求めた可変長符号(VLC)にESC2符号(ESC“10”)を付加し出力して(ステップS812)、終了する。
【0013】
上記可変長符号テーブルに有るか否かの判定(ステップS811)でテーブルに無い場合は、固定長符号化(FLC)なので、ESC3符号(ESC“11”)を付加してLAST ,RUN ,LEVELをそれぞれ固定長で出力して(ステップS813)、終了する。
【0014】
したがって、3モードエスケープに対応した可変長符号を生成するために、可変長符号テーブルの検索を、ステップS800、ステップS805、ステップS810と、最大3回も行う必要がある。可変長符号テーブルの検索方法としては、一般的には図13に示すように、5ビットのRUNデータ領域と5ビットのLEVELデータ領域と1ビットのLASTデータ領域からなる(RUN ,LEVEL ,LAST)の11ビットのアドレスを生成し、そのアドレスで可変長符号テーブルをアクセスすることにより、対応する可変長符号データを得る。
【0015】
アドレスうち、RUNデータに5ビット、LEVELデータ領域に5ビット、LASTデータ領域に1ビットが割り当てられているのは、図8に示すように、可変長符号として定義されているデータが、RUNデータの範囲が0〜20であり、LEVELデータの絶対値の範囲が1〜27、LASTデータの範囲が0〜1であり、これらを表現するためには、それぞれ5ビット、5ビット、1ビットが必要なためである。
【0016】
可変長符号に定義されていない、(RUN ,LEVEL ,LAST)に対応する可変長符号テーブルには、未定義であることを示す可変長符号(例えば、全てのビットが“0”)を格納して区別する。可変長符号テーブルは、11ビットのアドレス空間なので2048個のテーブルで実現できるが、そのうち可変長符号が定義されているのは僅か102個であり、ほとんどのアドレスが未定義状態となっている。
【0017】
したがって、メモリ空間をより効率的に使用して、より少ないメモリで可変長符号化処理を行うための方法が、従来から発明されてきた。
【0018】
その代表的な手法のひとつとして、LEVELの値の範囲にしたがって、可変長符号テーブルをアクセスする際のアドレスの構成を変える「可変長符号テーブルおよび可変長符号化装置」がある(例えば、特許文献1参照)。
【0019】
また、他の方法として、RUNとLEVELの絶対値によって、8つのクラスに分類し、クラスごとに可変長符号テーブルのアドレスを生成するビットの割付を変える「可変長符号化装置」がある(例えば、特許文献2参照)。
【0020】
このように、従来の手法として、データ(例えば、LEVEL)の値の範囲によって、RUN ,LEVELをクラスに分類し、クラスごとに可変長符号テーブルのアドレスを生成するビットの割付を変える方法はあった。
【0021】
このような手法では、アドレスを、クラスにより識別されるフラグ領域と、LASTを表す領域と、RUNを表す領域と、LEVELを表す領域により構成し、全体として固定長で可変長符号テーブルのアドレスを生成することによって、テーブルサイズを小さくしている。前記MPEG−4イントラマクロブロックを例にとると、図14に示すように、9種類のクラス(クラスA〜クラスI)に分類し、8ビットのアドレス空間で表現し、256個のテーブルで実現可能である。
【0022】
また、従来までは3モードエスケープコーディングまで拡張して最適化した検索手段は存在していない。可変長符号テーブルの検索を一般的な手法で3モードエスケープに拡張すると、図8に示すように、3モードエスケープを含め可変長符号として定義されているデータが、RUNデータの範囲が0〜41であり、LEVELデータの絶対値の範囲が1〜54、LASTデータの範囲が0〜1であり、これらを表現するためには、それぞれ6ビット、6ビット、1ビットが必要であり、(RUN ,LEVEL ,LAST)の13ビットのアドレスを生成し、そのアドレスで可変長符号テーブルをアクセスすることになる。可変長符号テーブルは、13ビットのアドレス空間なので8192個もの大きなメモリテーブルが必要となる。
【0023】
【特許文献1】
特開平8−79091号公報
【0024】
【特許文献2】
特開平10−191336号公報
【0025】
【発明が解決しようとする課題】
しかしながら、このような従来の可変長符号テーブルの検索では、通常モードの検索(図11のS800)、ESCモード1の検索(図11のS805)、ESCモード2の検索(図12のS810)と順に行うため、ESCモード3の固定長符号化となるケースでは3回も検索を行う必要があり、回路で実現した場合は3回の検索を制御する制御回路が複雑となると共にテーブルアクセスの遅延が発生し、またCPUやDSPなどのプロセッサを用いてソフトウェアで実現した場合は、3回もの検索を行うため処理手順が増大し画像符号化処理の遅延を招くという問題があった。
【0026】
また、可変長符号の定義は、発生頻度の高いものに割り付けているが、図8に示すように、発生可能なデータは262,016種類もあり、そのうち通常モードの可変長符号として定義されているのは僅か102個であり、3モードエスケープを含め(ESC1モード、ESC2モード)可変長符号に定義されているのは262個である。したがって、残りの261,754種類のデータは固定長符号化となる。画像符号化を高画質に行うほど、ESCモードの符号や固定長符号の発生は増大し、画像符号化処理の遅延が発生するというという問題があった。
【0027】
また、大きなメモリテーブルを用いる従来手法では、回路で実現した場合は、高価な高速メモリを大量に必要とする問題点がある。また、CPUやDSPなどのプロセッサを用いてソフトウェアで実現した場合は、高速なオンチップのメモリ量が少なく、可変長符号テーブルを格納することができず、低速なメモリに配置することになるので、高速に可変長符号化することができず、画像符号化処理の遅延が発生するというという問題があった。
【0028】
本発明は、このような従来の問題を解決するためになされたもので、3モードエスケープ可変長符号化において、可変長符号テーブルの検索を1回にすることにより、回路で実現した場合の制御回路を簡単にし、またソフトウェアで実現した場合の処理手順を少なくして少ない演算量で高速に可変長符号を得ること、また可変長符号テーブルのメモリ容量を小さくすることにより、回路で実現する場合は高価な高速メモリの使用を少なくし、またソフトウェアで実現する場合は高速なオンチップメモリに配置することが可能となり高速に可変長符号を得ることができる3モードエスケープ可変長符号化装置および方法を提供するものである。
【0029】
【課題を解決するための手段】
本発明の3モードエスケープ可変長符号化装置は、原データの先行するゼロ係数の個数RUNの値の範囲を検査するRUN検査手段と、原データの非ゼロの係数の値LEVELの値の範囲を検査するLEVEL検査手段と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値と前記RUN値と前記LEVEL値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成手段と、3モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したVLCハッシュテーブルと、前記テーブルアドレスで前記VLCハッシュテーブルを参照するハッシュテーブル参照手段と、前記キーデータに前記VLCハッシュテーブル内の検査キー作成と同様の演算を行い、前記VLCハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成手段と、前記照合キーと前記VLCハッシュテーブルを参照して得られた検査キー部とを比較するキー比較手段と、前記RUN検査手段と前記LEVEL検査手段と前記キー比較手段との結果に基づいて、モードを生成するMODE生成手段と、前記MODE生成手段に生成されたモードと、前記ハッシュテーブル参照手段に参照された前記VLCハッシュテーブルとにしたがって3モードエスケープ可変長符号を生成する3モードエスケープ可変長符号生成手段とを備えたことを特徴とした構成を有している。
【0030】
この構成により、3つのモードに対応した可変長符号情報を格納したVLCハッシュテーブルを参照し、条件により選択されたモードにしたがって3モードエスケープ可変長符号を決定するので、1回のテーブル検索処理で3モードに対応した可変長符号を得ることができる。また、可変長符号テーブルをハッシュテーブルにしたので、キーデータ(RUN ,LEVEL ,LAST)に演算量の少ないハッシュ演算を施して、VLCハッシュテーブルのアドレスを直接求めることができるとともに、テーブルサイズを小さくすることができる。さらに、キーデータ(RUN ,LEVEL ,LAST)より照合キーを生成し、テーブル内の検査キーで比較するだけで、キーデータに対応するテーブル情報か否かを判定することができるので、高速に可変長符号を得ることができる。
【0031】
また、本発明の3モードエスケープ可変長符号化装置は、前記MODE生成手段は、前記RUN検査手段が検査した前記RUNの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴とした構成を有している。
【0032】
また、本発明の3モードエスケープ可変長符号化装置は、前記MODE生成手段は、前記LEVEL検査手段が検査した前記LEVELの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴とした構成を有している。
【0033】
また、本発明の3モードエスケープ可変長符号化装置は、前記MODE生成手段は、前記キー比較手段が比較した前記照合キーと前記検査キーとが異なるとき、前記モードを固定長符号化モードにすることを特徴とした構成を有している。
【0034】
これら構成により、可変長符号が定義されていないキーデータ(RUN ,LEVEL ,LAST)についても、固定長符号を割り当てて高速に符号語を得ることができることとなる。
【0035】
また、本発明の3モードエスケープ可変長符号化装置は、前記VLCハッシュテーブルは、可変長符号が定義されている定義キーデータグループと、この定義キーデータグループ以外の未定義キーデータグループとからなり、前記定義キーデータグループのキーデータは、ハッシュ演算結果によりシノニムが発生せず、キーデータグループ全体の中でハッシュ演算結果によりシノニムが発生して衝突したキーデータ同士の前記検査キーはすべて異なることを特徴とした構成を有している。
【0036】
この構成により、キーデータ(RUN ,LEVEL ,LAST)から計算した照合キーとVLCハッシュテーブルに格納してある検査キーを比較することにより、高速に可変長符号の妥当性をチェックすることができることとなる。
【0037】
また、本発明の3モードエスケープ可変長符号化方法は、原データの先行するゼロ係数の個数RUNの値と、原データの非ゼロの係数の値LEVELの値と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値との組であるキーデータを可変長符号化する3モードエスケープ可変長符号化方法において、前記3モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したVLCハッシュテーブルを準備するVLCハッシュテーブル準備ステップと、原データの先行するゼロ係数の個数RUNの値の範囲を検査するRUN検査ステップと、原データの非ゼロの係数の値LEVELの値の範囲を検査するLEVEL検査ステップと、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値と前記RUN値と前記LEVEL値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成ステップと、前記テーブルアドレスで前記VLCハッシュテーブルを参照するハッシュテーブル参照ステップと、前記キーデータに前記VLCハッシュテーブル内の検査キー作成と同様の演算を行い、前記VLCハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成ステップと、前記照合キーと前記VLCハッシュテーブルを参照して得られた検査キー部とを比較するキー比較ステップと、前記RUN検査ステップと前記LEVEL検査ステップと前記キー比較ステップとの結果に基づいて、モードを生成するMODE生成ステップと、前記MODE生成ステップに生成されたモードと、前記ハッシュテーブル参照ステップに参照された前記VLCハッシュテーブルとにしたがって3モードエスケープ可変長符号を生成する3モードエスケープ可変長符号生成ステップとを備えたことを特徴としている。
【0038】
この方法により、3つのモードに対応した可変長符号情報を格納したVLCハッシュテーブルを参照し、条件により選択されたモードにしたがって3モードエスケープ可変長符号を決定するので、1回のテーブル検索処理で3モードに対応した可変長符号を得ることができる。また、ハッシュテーブルによる可変長符号テーブルを使用するので、キーデータ(RUN ,LEVEL ,LAST)に演算量の少ないハッシュ演算を施して、VLCハッシュテーブルのアドレスを直接求めることができるとともに、テーブルサイズを小さくすることができる。さらに、キーデータ(RUN ,LEVEL ,LAST)より照合キーを生成し、テーブル内の検査キーで比較するだけで、キーデータに対応するテーブル情報か否かを判定することができるので、高速に可変長符号を得ることができる。
【0039】
また、本発明の3モードエスケープ可変長符号化プログラムは、原データの先行するゼロ係数の個数RUNの値と、原データの非ゼロの係数の値LEVELの値と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値との組であるキーデータを可変長符号化する3モードエスケープ可変長符号化プログラムにおいて、前記3モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したVLCハッシュテーブルを準備するVLCハッシュテーブル準備ステップと、原データの先行するゼロ係数の個数RUNの値の範囲を検査するRUN検査ステップと、原データの非ゼロの係数の値LEVELの値の範囲を検査するLEVEL検査ステップと、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値と前記RUN値と前記LEVEL値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成ステップと、前記テーブルアドレスで前記VLCハッシュテーブルを参照するハッシュテーブル参照ステップと、前記キーデータに前記VLCハッシュテーブル内の検査キー作成と同様の演算を行い、前記VLCハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成ステップと、前記照合キーと前記VLCハッシュテーブルを参照して得られた検査キー部とを比較するキー比較ステップと、前記RUN検査ステップと前記LEVEL検査ステップと前記キー比較ステップとの結果に基づいて、モードを生成するMODE生成ステップと、前記MODE生成ステップに生成されたモードと、前記ハッシュテーブル参照ステップに参照された前記VLCハッシュテーブルとにしたがって3モードエスケープ可変長符号を生成する3モードエスケープ可変長符号生成ステップとを備えたことを特徴とするものである。
【0040】
このプログラムにより、3つのモードに対応した可変長符号情報を格納したVLCハッシュテーブルを参照し、条件により選択されたモードにしたがって3モードエスケープ可変長符号を決定するので、1回のテーブル検索処理で3モードに対応した可変長符号を得ることができる。また、ハッシュテーブルによる可変長符号テーブルを使用するので、キーデータ(RUN ,LEVEL ,LAST)に演算量の少ないハッシュ演算を施して、VLCハッシュテーブルのアドレスを直接求めることができるとともに、テーブルサイズを小さくすることができる。さらに、キーデータ(RUN ,LEVEL ,LAST)より照合キーを生成し、テーブル内の検査キーで比較するだけで、キーデータに対応するテーブル情報か否かを判定することができるので、高速に可変長符号を得ることができる。
【0041】
また、本発明の3モードエスケープ可変長符号化プログラムは、前記MODE生成ステップは、前記RUN検査ステップが検査した前記RUNの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴としている。
【0042】
また、本発明の3モードエスケープ可変長符号化プログラムは、前記MODE生成ステップは、前記LEVEL検査ステップが検査した前記LEVELの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴としている。
【0043】
また、本発明の3モードエスケープ可変長符号化プログラムは、前記MODE生成ステップは、前記キー比較ステップが比較した前記照合キーと前記検査キーとが異なるとき、前記モードを固定長符号化モードにすることを特徴としている。
【0044】
これらのプログラムにより、可変長符号が定義されていないキーデータ(RUN ,LEVEL ,LAST)についても、固定長符号を割り当てて高速に符号語を得ることができることとなる。
【0045】
また、本発明の3モードエスケープ可変長符号化プログラムは、前記VLCハッシュテーブルは、可変長符号が定義されている定義キーデータグループと、この定義キーデータグループ以外の未定義キーデータグループとからなり、前記定義キーデータグループのキーデータは、ハッシュ演算結果によりシノニムが発生せず、キーデータグループ全体の中でハッシュ演算結果によりシノニムが発生して衝突したキーデータ同士の前記検査キーはすべて異なることを特徴としている。
【0046】
このプログラムにより、キーデータ(RUN ,LEVEL ,LAST)から計算した照合キーとVLCハッシュテーブルに格納してある検査キーを比較することにより、高速に可変長符号の妥当性をチェックすることができることとなる。
【0047】
また、本発明の3モードエスケープ可変長符号化プログラムを記録した媒体は、原データの先行するゼロ係数の個数RUNの値と、原データの非ゼロの係数の値LEVELの値と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値との組であるキーデータを可変長符号化する3モードエスケープ可変長符号化プログラムを記録した媒体において、前記3モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したVLCハッシュテーブルを準備するVLCハッシュテーブル準備ステップと、原データの先行するゼロ係数の個数RUNの値の範囲を検査するRUN検査ステップと、原データの非ゼロの係数の値LEVELの値の範囲を検査するLEVEL検査ステップと、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値と前記RUN値と前記LEVEL値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成ステップと、前記テーブルアドレスで前記VLCハッシュテーブルを参照するハッシュテーブル参照ステップと、前記キーデータに前記VLCハッシュテーブル内の検査キー作成と同様の演算を行い、前記VLCハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成ステップと、前記照合キーと前記VLCハッシュテーブルを参照して得られた検査キー部とを比較するキー比較ステップと、前記RUN検査ステップと前記LEVEL検査ステップと前記キー比較ステップとの結果に基づいて、モードを生成するMODE生成ステップと、前記MODE生成ステップに生成されたモードと、前記ハッシュテーブル参照ステップに参照された前記VLCハッシュテーブルとにしたがって3モードエスケープ可変長符号を生成する3モードエスケープ可変長符号生成ステップとを備えたことを特徴としている。
【0048】
このことにより、3つのモードに対応した可変長符号情報を格納したVLCハッシュテーブルを参照し、条件により選択されたモードにしたがって3モードエスケープ可変長符号を決定するので、1回のテーブル検索処理で3モードに対応した可変長符号を得ることができる。また、ハッシュテーブルによる可変長符号テーブルを使用するので、キーデータ(RUN ,LEVEL ,LAST)に演算量の少ないハッシュ演算を施して、VLCハッシュテーブルのアドレスを直接求めることができるとともに、テーブルサイズを小さくすることができる。さらに、キーデータ(RUN ,LEVEL ,LAST)より照合キーを生成し、テーブル内の検査キーで比較するだけで、キーデータに対応するテーブル情報か否かを判定することができるので、高速に可変長符号を得ることができる。
【0049】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を用いて説明する。
(第1の実施の形態)
【0050】
図1は、本発明の第1の実施の形態における3モードエスケープ可変長符号化装置の機能ブロック図である。図2は、3モードエスケープ可変長符号テーブル検索手段の機能ブロック図である。
【0051】
図1において、3モードエスケープ可変長符号化装置10は、(LAST, RUN, LEVEL)の組合せから可変長符号VLCとその長さLENとモードMODEを求める3モードエスケープ可変長符号テーブル検索手段100と、ESCモード1の可変長符号を生成するESC1符号生成手段101と、ESCモード2の可変長符号を生成するESC2符号生成手段102と、固定長の符号を生成するFLC符号生成手段103と、4種類のモードのうち1つを選択するセレクタ104を備えている。
【0052】
また、図2において、3モードエスケープ可変長符号テーブル検索手段100は、RUNデータの範囲を検査するRUN検査手段201と、LEVELデータの範囲を検査するLEVEL検査手段202と、(LAST, RUN, LEVEL)をキーとしてハッシュ演算を行い可変長符号テーブルアドレスAを求めるハッシュアドレス生成手段203と、3モードエスケープに対応した全ケースの可変長符号(VLC)の情報を格納したVLCハッシュテーブル204と、前記アドレスAでVLCハッシュテーブル204を参照して検査キーKEYとモードMと可変長符号VLCとその長さLENを求めるハッシュテーブル参照手段205と、(LAST, RUN, LEVEL)から照合キーKを生成する照合キー生成手段206と、前記検査キーKEYと前記照合キーKの一致比較を行うキー比較手段207と、RUN検査手段201の結果とLEVEL検査手段202の結果とキー比較手段207の結果に基づいて前記モードMよりモードMODEを生成するMODE生成手段208を備えている。
【0053】
以上のように構成された3モードエスケープ可変長符号化装置10について、MPEG−4のイントラマクロブロックの可変長符号化を例にとり、その動作を説明する。以下(RUN ,LEVEL ,LAST)の組合せを、キーデータと呼ぶことにする。
【0054】
まず、3モードエスケープ可変長符号化装置10では、3モードエスケープ可変長符号テーブル検索手段100で、キーデータ(RUN ,LEVEL ,LAST)から可変長コードVLCとその長さLENとモードMODEを求める。
【0055】
次に、ESC1符号生成手段101は、前記可変長コードVLCにESCモード1の符号(ESC“0”)を付加する。ESC2符号生成手段102は、前記可変長コードVLCにESCモード2の符号(ESC“10”)を付加する。FLC符号生成手段103は、キーデータ(RUN ,LEVEL ,LAST)にESCモード3の符号(ESC“11”)を付加する。
【0056】
次に、セレクタ104は、前記モードMODEの値により、4種類の符号(VLCそのまま、ESC1符合付VLC、ESC2符号付VLC、FLC符号)のいずれかを選択して出力する。
【0057】
次に、図2を参照して、上記3モードエスケープ可変長符号テーブル検索手段100におけるキーデータ(RUN ,LEVEL ,LAST)から可変長コードVLCとその長さLENとモードMODEを求める動作を説明する。
【0058】
3モードエスケープ可変長符号テーブル検索手段100では、RUN検査手段201で、RUNが定義されているデータ範囲(0〜41)に入っているか否かを検査し、範囲外の場合はNGを出力する。LEVEL検査手順202で、LEVELが定義されているデータ範囲(1〜54)に入っているか否かを検査し、範囲外の場合はNGを出力する。
【0059】
また、ハッシュアドレス生成手段203で、キーデータ(RUN ,LEVEL ,LAST)に後述するハッシュ演算を施し、算出したハッシュ値をVLCハッシュテーブル204のアドレスAとする。VLCハッシュテーブル204は、後述するハッシュテーブルの条件を満足するハッシュ演算式に基づいて生成される。次に、ハッシュテーブル参照手段205で、上記アドレスAによりVLCハッシュテーブル204を参照し、検査キーKEYとモードMと可変長符号VLCとその長さLENを求める。
【0060】
さらに、照合キー生成手段206で、キーデータ(RUN ,LEVEL ,LAST)より照合キーKを生成する。次に、キー比較手段207で、照合キーKとVLCハッシュテーブルを参照して得られた検査キーKEYとの一致比較を行い、不一致の場合はNGを出力する。
【0061】
さらに、MODE生成手段208は、RUN検査手段201のNGとLEVEL検査手段202のNGとキー比較手段207のNGのうち、いずれかがNGの場合にモードMODEを3とする。すべてがNGで無い場合には、モードMをそのままモードMODEとする。
【0062】
次に、ハッシュアドレス生成手段203のハッシュ演算式について、詳細に説明する。
【0063】
ハッシュ演算は、キーの集合から番地の集合への多対1の写像演算であり、キーデータ(RUN ,LEVEL ,LAST)をKとし、VLCハッシュテーブルの大きさをNとすると、アドレスAを求めるハッシュ演算の式は、下記(式1)となる。
A = Hash(K) mod N ・・・ (式1)
【0064】
ハッシュ演算において、異なるキーのハッシュ値が同一になる(衝突する)シノニムの発生を抑えるために、一般的にはテーブルの大きさNを素数とする。しかし、本実施の形態では、演算量を減らすために、テーブルの大きさNを2のべき乗にする。すなわち下記(式2)に示すように、Nの剰余を求める演算を、論理積によるマスク演算で代用し、演算量を低減している。Nが2のべき乗の場合は、(式1)と(式2)は等価である。Andは、ビットごとの論理積である。
A = Hash(K) And (N−1) ・・・ (式2)
【0065】
しかし、テーブルの大きさNが素数でないので、ハッシュ効果が薄れて、シノニムの増大を招く。そこで、本実施の形態では、キーデータを構成するサブキー(RUN ,LEVEL ,LASTのそれぞれ)に対して、個別に演算するハッシュ関数として、下記(式3)を用いる。
A = Hash(K1 ,K2 ,K3) And (N−1) ・・・(式3)
【0066】
このように、3変数のハッシュ演算を行うことにより、ハッシュ効果の薄れを防いでいる。3変数のハッシュ関数としては、周知のハッシュ関数のうち、演算量の少ないものを利用すればよい。
【0067】
次に図3を用いて、3モードエスケープに対応したVLCハッシュテーブル204の構造について、詳細に説明する。
【0068】
ハッシュ関数は、多対1の写像であるので、複数のキーのハッシュ値が同一となるシノニム現象が必ず発生する。例えば、RUN=0〜63、LEVEL=1〜2047、LAST=0〜1の範囲をとるキー全体のグループ500を、テーブルサイズN=1024のVLCハッシュテーブル503に写像させる場合を考えると、262,016種類から1024種類への写像関数となり、シノニムが多発する。しかし、そのうち可変長符号として定義されているキーのグループ501は、僅か262種類であり、262種類から1024種類への写像において、シノニムを発生させないことは明らかに可能である。
【0069】
本実施の形態においては、可変長符号として定義されているキーのグループ501に対して、シノニムの発生しないハッシュ関数を用いる。このハッシュ関数は必ず存在し、具体的な条件に応じて生成することは容易である。また、可変長符号として定義されていないキーのグループ502に対してシノニムを許している。
【0070】
すなわち、可変長符号として定義されているグループ501の任意のキー(A)に対しハッシュ演算したADR−A510と、別の任意のキー(B)に対しハッシュ演算したADR−B520は、必ず異なる。また、可変長符号として定義されていないグループ502の任意のキー(C)に対しハッシュ演算したADR−B520とは、同じになる場合を許している。また、可変長符号が定義されていないグループ502の任意のキー(D)に対しハッシュ演算したADR−C530と、別の任意のキー(E)に対しハッシュ演算したADR−C530とも、同じになる場合を許している。
【0071】
VLCハッシュテーブル503は、可変長符号が定義されているグループ501のキーに対しシノニムの発生しないアドレスADR−A510と、グループ501のキーに対しシノニムが発生しないがグループ502のキーとの間でシノニムが発生するアドレスADR−B520と、グループ502のキーに対しシノニムが発生するアドレスADR−C530と、グループ501およびグループ502にハッシュ演算しても指されることのないアドレスADR−D540から構成される。
【0072】
例えば、このような条件を満たすハッシュ演算の一例を、下記(式4)に示す。
A=(RUN*2 + LEVEL*85 + LAST*64) And (1024−1) ・・・ (式4)
【0073】
なお、ここで示したハッシュ演算式は一例であり、この条件を満たすものであればどんなハッシュ演算式でも良い。
【0074】
このようなハッシュ関数を用いることにより、シノニム発生時の対策を不要としている。すなわち、ハッシュ演算したハッシュ値をアドレスとしてVLCハッシュテーブル503を参照した時に、可変長符号が定義されているグループ501からの写像かどうかを判断しただけで、目的とする可変長符号を得ることができる。その判断を行うのが照合キーである。
【0075】
照合キーは、キーデータ(RUN ,LEVEL ,LAST)に後述する条件を満たす演算を施して求める。
【0076】
VLCハッシュテーブル503に格納する照合キーは、グループ501のキーに対しシノニムの発生しないアドレスADR−A510には、グループ501のキーデータにより生成した照合キーを格納する。グループ501のキーに対しシノニムが発生しないがグループ502のキーとの間でシノニムが発生するアドレスADR−B520には、グループ501のキーデータにより生成した照合キーを格納する。照合キー生成の演算式は、グループ501のキーデータから生成した照合キーとグループ502のキーデータから生成した照合キーとは、ユニークになるものとする。
【0077】
グループ502のキーに対しシノニムが発生するアドレスADR−C530には、シノニムの発生したグループ502のいずれのキーデータより生成した照合キーと一致しない照合キーを格納する。グループ501のキーおよびグループ502のキーにハッシュ演算しても指されることのないアドレスADR−D540には、どんな値のキーを格納してもかまわない。
【0078】
したがって、キーデータ(RUN ,LEVEL ,LAST)より求めた照合キーとVLCハッシュテーブル503のキーが一致すれば、キーデータが可変長符号の定義されているグループ501のキーデータであると判断することができる。
【0079】
例えば、このような条件を満たす照合キー生成演算式の一例を(式5)に示す。
63 − ((RUN And (32−1))*2 + LAST)・・・ (式5)
【0080】
なお、ここで示した照合キー生成演算式は一例であり、この条件を満たすものであればどんな演算式でも良い。
【0081】
図4にVLCハッシュテーブル601の構成例を示す。ここで、ハッシュ演算600は、キーデータ(RUN ,LEVEL ,LAST)から照合キーを求めるものである。
【0082】
図4に示すように、6ビットで検査キーを表し、2ビットで3種類のモード(通常モード、ESCモード1、ESCモード2)を表し、12ビットで可変長符号(VLC)を格納し、4ビットでその長さ(LEN)を格納する。合計24ビットで1つのテーブルを構成して1024個のテーブルとする。また、1024個のテーブルのうち、可変長符号が定義されている(ADR−OK)のは262個であり、残り762個は未定義(ADR−NG)となり、検査キーを比較するためのキー部の6ビットだけがあればよく、残りの18ビットは空き領域となっている。また、3モードエスケープコーディングは、1種類の可変長コードをESC符号で区別することにより、3種類のキーデータの可変長符号として利用しているため、このVLCハッシュテーブル601の可変長符号(VLC)には同じ値が複数箇所に格納されることになる。
【0083】
図5に別のVLCハッシュテーブル602の構成例を示す。この例では、6ビットで検査キーを表し、2ビットで3種類のモード(通常モード、ESCモード1、ESCモード2)を表し、8ビットで可変長符号を格納したポインタを表す。さらに、VLCハッシュテーブル602には前述したように、空き領域が762個もあり、定義する必要のある可変長符号は102個であるので、連続したその空き領域を2個使用して、1つ目の4ビットでその長さ(LEN)、4ビットで可変長符号の上位4ビット(VLC1)を、2つ目の8ビットで可変長符号の下位8ビット(VLC2)を格納する。合計16ビットで1つのテーブルを構成して1024個のテーブルとする。
【0084】
この構成例はほんの一例であり、以上の条件を満たすものであればどんな構成をとっても良い。
【0085】
上記のように、本発明の第1の実施の形態では、3モードエスケープ可変長符号化装置を、3モードエスケープに定義されている全ケースのキーデータ(RUN ,LEVEL ,LAST)に対する可変長符号の情報をVLCハッシュテーブルに登録することにより、1回のテーブル検索で、通常モードまたはESCモード1またはESCモード2の可変長符号を得ることができ、簡単な制御手順で高速に可変長符号を求めることができる。また、可変長符号の検索は、キーデータに演算量の少ないハッシュ演算を施して、VLCハッシュテーブルのアドレスを直接算出することができ、可変長符号の情報を格納したVLCハッシュテーブルに、キーデータに照合キー演算を施して求めた検査キーを格納しておき、キーデータにハッシュ演算を施して求めたテーブルアドレスで、VLCハッシュテーブルをアクセスして検査キーを読み出し、キーデータに照合キー演算を施して求めた照合キーと比較するだけで、該当のキーデータかどうか判断できるので、高速に検索することができる。
(第2の実施の形態)
【0086】
図6に、本発明の第2の実施形態の3モードエスケープ可変長符号化方法のフローチャートを示す。また、図7に、3モードエスケープ可変長符号テーブル検索手順のフローチャートを示す。
【0087】
図6に示すように、3モードエスケープ可変長符号化方法は、(LAST ,RUN ,LEVEL)の組合せから可変長符号VLCとその長さLENとモードMODEを求める3モードエスケープ可変長符号テーブル検索手順(S300)と、モードにより処理手順を分岐させる手順(S301)と、通常モードの可変長符号を出力する手順(S302)と、ESCモード1の可変長符号を生成して出力する手順(S303)と、ESCモード2の可変長符号を生成して出力する手順(S304)と、固定長の符号を生成して出力する手順(S305)から構成されている。
【0088】
また、図7に示すように、3モードエスケープ可変長符号テーブル検索手順は、RUNデータの範囲を検査するRUN検査手順(S401)と、LEVELデータの範囲を検査するLEVEL検査手順(S402)と、(LAST ,RUN ,LEVEL)をキーとしてハッシュ演算を行い可変長符号テーブルアドレスAを求めるハッシュアドレス生成手順(S403)と、前記アドレスAでVLCハッシュテーブルを参照して検査キーKEYとモードMと可変長符号VLCとその長さLENを求めるハッシュテーブル参照手順(S404)と、(LAST ,RUN ,LEVEL)から照合キーKを生成する照合キー生成手順(S405)と、前記検査キーKEYと前記照合キーKの一致比較をするキー比較手順(S406)と、MODE生成手段(S407)から構成されている。
【0089】
以上のような処理手順を有する3モードエスケープ可変長符号化方法について、MPEG−4のイントラマクロブロックの可変長符号化を例に取り、その動作を説明する。以下(RUN ,LEVEL ,LAST)の組合せを、キーデータと呼ぶことにする。
【0090】
図6を参照して、キーデータ(RUN ,LEVEL ,LAST)から3モードエスケープ可変長符号を出力する手順を説明する。
【0091】
まず、3モードエスケープ可変長符号処理では、キーデータ(RUN ,LEVEL ,LAST)から可変長コードVLCと、その長さLENと、モードMODEを求める(ステップS300)。
【0092】
次に、上記処理で求めたモードMODEを判定し(ステップS301)、モードが0の時は、前記可変長コードVLCをそのまま出力する(ステップS302)。また、上記判定(ステップS301)で、モードが1の時は、前記可変長コードVLCにESCモード1の符号(ESC“0”)を付加して出力する(ステップS303)。また、上記判定(ステップS301)で、モードが2の時は、前記可変長コードVLCにESCモード2の符号(ESC“10”)を付加して出力する(ステップS304)。また、上記判定(ステップS301)で、モードが3の時は、前記キーデータ(RUN ,LEVEL ,LAST)にESCモード3の符号(ESC“11”)を付加して出力する(ステップS305)。
【0093】
次に図7を参照して、キーデータ(RUN ,LEVEL ,LAST)から可変長コードVLCとその長さLENとモードMODEを求める手順を説明する。
【0094】
この3モードエスケープVLCテーブル検索処理では、まず、RUNが定義されているデータ範囲(0〜41)に入っているか否かを検査し(ステップS401)、範囲外の場合はNGなので、モードMODEを3に設定して(ステップS407)、終了する。OKの場合は、LEVELが定義されているデータ範囲(1〜54)に入っているか否かを検査し(ステップS402)、範囲外の場合はNGなので、モードMODEを3に設定して(ステップS407)、終了する。OKの場合は、キーデータ(RUN ,LEVEL ,LAST)に後述するハッシュ演算を施し、算出したハッシュ値をVLCハッシュテーブルのアドレスAとする(ステップS403)。
【0095】
次に、このアドレスAによりVLCハッシュテーブルを参照し、検査キーKEYとモードMと可変長コードVLCとその長さLENを求める(ステップS404)。続いて、キーデータ(RUN ,LEVEL ,LAST)に照合キー演算を行い照合キーKを生成する(ステップS405)。そして、前記照合キーKとVLCハッシュテーブルを参照して得られた検査キーKEYの一致比較を行い(ステップS406)、不一致の場合はNGなので、モードMODEを3に設定して(ステップS407)、終了する。OKの場合は、上記で参照して可変長コードにより、求めるべき可変長コードが決定する。
【0096】
なお、本第2の実施の形態における、VLCハッシュテーブル、ハッシュアドレス生成演算式、照合キー生成演算式は、第1の実施の形態と同じものである。
【0097】
上記のように、本発明の第2の実施の形態では、3モードエスケープ可変長符号化方法を、3モードエスケープに定義されている全ケースのキーデータ(RUN ,LEVEL ,LAST)に対する可変長符号の情報をVLCハッシュテーブルに登録することにより、1回のテーブル検索で、通常モードまたはESCモード1またはESCモード2の可変長符号を得ることができ、簡単な制御手順で高速に可変長符号を求めることができる。また、可変長符号の検索は、キーデータに演算量の少ないハッシュ演算を施して、VLCハッシュテーブルのアドレスを直接算出することができ、可変長符号の情報を格納したVLCハッシュテーブルに、キーデータに照合キー演算を施して求めた照合キーを格納しておき、キーデータにハッシュ演算を施して求めたテーブルアドレスで、VLCハッシュテーブルをアクセスしてキー部を読み出し、キーデータに照合キー演算を施して求めた照合キーと比較するだけで、該当のキーデータかどうか判断できるので、高速に検索することができる。
(第3の実施の形態)
【0098】
なお、本発明はプログラムによって実現することも可能である。そのソフトウェアを磁気ディスク等の記録媒体に記録して移送することにより、独立した他のコンピュータ・システムで、このソフトウェアを収めた記録媒体から読み出して、実施することができる。
【0099】
記録媒体としては、磁気ディスクの他に、光ディスク、光磁気ディクス等を用いても同様に行うことができる。また、記録媒体は、これらに限られず、ICカード、ROMカセット等、プログラムを記録できるものであれば、同様に実施することができる。
【0100】
【発明の効果】
以上説明したように、本発明は、3つのモードに対応した可変長符号情報を格納したVLCハッシュテーブルを参照し、条件により選択されたモードにしたがって3モードエスケープ可変長符号を決定することにより、1回のテーブル検索処理で3モードに対応した可変長符号を得ることができる。また、可変長符号テーブルをハッシュテーブルにしたので、キーデータ(RUN ,LEVEL ,LAST)に演算量の少ないハッシュ演算を施して、VLCハッシュテーブルのアドレスを直接求めることができるとともに、テーブルサイズを小さくすることができる。さらに、キーデータ(RUN ,LEVEL ,LAST)より照合キーを生成し、テーブル内の検査キーで比較するだけで、キーデータに対応するテーブル情報か否かを判定することができるので、高速に可変長符号を得ることができるというすぐれた効果を有する3モードエスケープ可変長符号化装置および方法を提供することができるものである。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態における3モードエスケープ可変長符号装置を示す機能ブロック図
【図2】本発明の第1の実施の形態における3モードエスケープ可変長符号テーブル検索手段を示す機能ブロック図
【図3】キーのグループとVLCハッシュテーブルの関係を説明する図
【図4】VLCハッシュテーブルの構成例を示す図
【図5】VLCハッシュテーブルの他の構成例を示す図
【図6】本発明の第2の実施の形態における3モードエスケープ可変長符号方法の処理手順を示すフローチャート
【図7】本発明の第2の実施の形態における3モードエスケープ可変長符号テーブル検索方法の処理手順を示すフローチャート
【図8】MPEG−4 イントラマクロプロックのデータ範囲の説明図
【図9】MPEG−4 イントラマクロプロックの可変長符号を示す図
【図10】MPEG−4 イントラマクロプロックのLMAXとRMAXの説明図
【図11】従来の3モードエスケープ可変長符号化方法の処理手順を示すフローチャート
【図12】従来の3モードエスケープ可変長符号化方法の処理手順を示すフローチャート
【図13】従来の可変長符号テーブルのアクセス方法の説明図
【図14】従来のクラス別け可変長符号テーブルのアクセス方法の説明図
【符号の説明】
10 3モードエスケープ可変長符号化装置
100 3モードエスケープ可変長符号テーブル検索手段
101 ESC1符号生成手段
102 ESC2符号生成手段
103 FLC符号生成手段
104 セレクタ
201 RUN検査手段
202 LEVEL検査手段
203 ハッシュアドレス生成手段
204 VLCハッシュテーブル
205 ハッシュテーブル参照手段
206 照合キー生成手段
207 キー比較手段
208 MODE生成手段
500 キー全体のグループ
501 可変長符号が定義されているグループ
502 可変長符号が定義されていないグループ
503 VLCハッシュテーブル
600 ハッシュ演算
601 VLCハッシュテーブル
602 VLCハッシュテーブル
【発明の属する技術分野】
本発明は、データを可変長符号に変換するための可変長符号装置および方法に関し、特に、画像圧縮処理などにおいて、可変長符号テーブルを用いて可変長符号に変換する可変長符号化装置に関するものである。
【0002】
【従来の技術】
画像情報は、非常に情報量が多いので、大量の画像情報をリアルタイムに送信するのは、非常に困難である。そのため、画像データを圧縮して送信し、受信側で伸長するという技術が用いられている。画像データの典型的な圧縮方法として、出現頻度の高いビットパターンに短い符号を割り当て、出現頻度の低いビットパターンには長い符号を割り当てることにより、全体の符号量を短くする可変長符号化方法がある。
【0003】
以下に、画像データの圧縮方法を簡単に説明する。1999年12月に国際規格として勧告された画像符号化標準方式MPEG−4(Moving Picture Experts Group 4 )では、画像データを離散コサイン変換して、周波数成分のデータに変換し、高周波成分に量子化処理を行って値を小さくする。さらに、量子化により、「0」の出現頻度を高くされたデータは、「RUN」データと「LEVEL」データと「LAST」データとに変換される。
【0004】
ここで、「RUN」は、先行するゼロの係数の個数をあらわすものであり、「LEVEL」は、非ゼロの係数の値をあらわすものである。「LAST」は、該非ゼロの係数が最後であるかどうかを示す識別子である。RUNデータとLEVELデータとLASTデータは、(LAST ,RUN ,LEVEL)の組として一意的な符号を割り当てて、可変長符号テーブルを参照することにより可変長符号化を行う。
【0005】
MPEG−4ではさらに、可変長符号のビット効率を高めるために3モードエスケープコーディング(3 mode escape coding )という技術が導入された。3モードエスケープコーディングの実現方法として、例えば、三木弼一 編著「MPEG−4のすべて」(1998年 工業調査会 ISBN4−7693−1167−2) PP.49〜51、第3章 MPEG−4の規格内容(5)可変長符号化に書かれているものが知られている。
【0006】
図8は、MPEG−4勧告書に記載されているイントラマクロブロック(Intra Macroblock:イントラ符号化とは、画面内のみの情報から符号化を行うものであり、時間が前後する他の画面の情報を使用しないものである。マクロブロックとは、1画面を複数に分割し、16画素×16画素からなるブロックのことである)のLASTデータ範囲、RUNデータ範囲、LEVELデータ範囲を示すものである。図9は、MPEG−4勧告書に記載されているイントラマクロブロックの可変長符号テーブルの一部を示すものである。また、図10は、MPEG−4勧告書に記載されているイントラマクロブロックの [LAST ,RUN] ごとのLEVELの最大値「LMAXの」テーブルと、 [LAST ,LEVEL] ごとのRUNの最大値「RMAX」のテーブルを示すものである。
【0007】
図11、図12は、本書に記載されている3モードエスケープコーディングを実現するフローチャートを示すものである。
【0008】
以下、図11、図12を参照しながら、3モードエスケープコーディングの実現方式を説明する。図11に示すように、3モードエスケープコーディングでは、処理を開始すると、(LAST ,RUN ,LEVEL)の組合せを、可変長符号テーブルで検索する(ステップS800)。次に、可変長符号テーブルに有ったか否かを判定し(ステップS801)、テーブルに有りと判断した場合は、通常モードの符号化なので、可変長符号テーブルより求めた可変長符号(VLC)を出力して(ステップS802)、終了する。
【0009】
上記可変長符号テーブルに有るか否かの判定(ステップS801)でテーブルに無い場合は、LMAXテーブルを参照して [LAST ,RUN] におけるLEVELの最大値LMAXを求める(ステップS803)。次に、LEVELは正または負の値を取り得るのでLEVELの絶対値から、LMAXを減算した値に、符号をつけたLEVEL2を求める(ステップS804)。
【0010】
続いて、(LAST ,RUN ,LEVEL2)の組合せで、可変長符号テーブルを検索する(ステップS805)。次に、可変長符号テーブルに有ったか否かを判定し(ステップS806)、テーブルに有りと判断した場合は、ESCモード1の符号化なので、可変長符号テーブルより求めた可変長符号(VLC)にESC1符号(ESC“0”)を付加し出力して(ステップS807)、終了する。
【0011】
上記可変長符号テーブルに有るか否かの判定(ステップS806)でテーブルに無い場合は、RMAXテーブルを参照して [LAST ,LEVELの絶対値] におけるRUNの最大値RMAXを求める(ステップS808)。次に、RUNから(RMAX+1)を減算してRUN2を求める(ステップS809)。
【0012】
続いて、(LAST ,RUN2 ,LEVEL)の組合せで、可変長符号テーブルを検索する(ステップS810)。次に、可変長符号テーブルに有ったか否かを判定し(ステップS811)、テーブルに有りと判断した場合は、ESCモード2の符号化なので、可変長符号テーブルより求めた可変長符号(VLC)にESC2符号(ESC“10”)を付加し出力して(ステップS812)、終了する。
【0013】
上記可変長符号テーブルに有るか否かの判定(ステップS811)でテーブルに無い場合は、固定長符号化(FLC)なので、ESC3符号(ESC“11”)を付加してLAST ,RUN ,LEVELをそれぞれ固定長で出力して(ステップS813)、終了する。
【0014】
したがって、3モードエスケープに対応した可変長符号を生成するために、可変長符号テーブルの検索を、ステップS800、ステップS805、ステップS810と、最大3回も行う必要がある。可変長符号テーブルの検索方法としては、一般的には図13に示すように、5ビットのRUNデータ領域と5ビットのLEVELデータ領域と1ビットのLASTデータ領域からなる(RUN ,LEVEL ,LAST)の11ビットのアドレスを生成し、そのアドレスで可変長符号テーブルをアクセスすることにより、対応する可変長符号データを得る。
【0015】
アドレスうち、RUNデータに5ビット、LEVELデータ領域に5ビット、LASTデータ領域に1ビットが割り当てられているのは、図8に示すように、可変長符号として定義されているデータが、RUNデータの範囲が0〜20であり、LEVELデータの絶対値の範囲が1〜27、LASTデータの範囲が0〜1であり、これらを表現するためには、それぞれ5ビット、5ビット、1ビットが必要なためである。
【0016】
可変長符号に定義されていない、(RUN ,LEVEL ,LAST)に対応する可変長符号テーブルには、未定義であることを示す可変長符号(例えば、全てのビットが“0”)を格納して区別する。可変長符号テーブルは、11ビットのアドレス空間なので2048個のテーブルで実現できるが、そのうち可変長符号が定義されているのは僅か102個であり、ほとんどのアドレスが未定義状態となっている。
【0017】
したがって、メモリ空間をより効率的に使用して、より少ないメモリで可変長符号化処理を行うための方法が、従来から発明されてきた。
【0018】
その代表的な手法のひとつとして、LEVELの値の範囲にしたがって、可変長符号テーブルをアクセスする際のアドレスの構成を変える「可変長符号テーブルおよび可変長符号化装置」がある(例えば、特許文献1参照)。
【0019】
また、他の方法として、RUNとLEVELの絶対値によって、8つのクラスに分類し、クラスごとに可変長符号テーブルのアドレスを生成するビットの割付を変える「可変長符号化装置」がある(例えば、特許文献2参照)。
【0020】
このように、従来の手法として、データ(例えば、LEVEL)の値の範囲によって、RUN ,LEVELをクラスに分類し、クラスごとに可変長符号テーブルのアドレスを生成するビットの割付を変える方法はあった。
【0021】
このような手法では、アドレスを、クラスにより識別されるフラグ領域と、LASTを表す領域と、RUNを表す領域と、LEVELを表す領域により構成し、全体として固定長で可変長符号テーブルのアドレスを生成することによって、テーブルサイズを小さくしている。前記MPEG−4イントラマクロブロックを例にとると、図14に示すように、9種類のクラス(クラスA〜クラスI)に分類し、8ビットのアドレス空間で表現し、256個のテーブルで実現可能である。
【0022】
また、従来までは3モードエスケープコーディングまで拡張して最適化した検索手段は存在していない。可変長符号テーブルの検索を一般的な手法で3モードエスケープに拡張すると、図8に示すように、3モードエスケープを含め可変長符号として定義されているデータが、RUNデータの範囲が0〜41であり、LEVELデータの絶対値の範囲が1〜54、LASTデータの範囲が0〜1であり、これらを表現するためには、それぞれ6ビット、6ビット、1ビットが必要であり、(RUN ,LEVEL ,LAST)の13ビットのアドレスを生成し、そのアドレスで可変長符号テーブルをアクセスすることになる。可変長符号テーブルは、13ビットのアドレス空間なので8192個もの大きなメモリテーブルが必要となる。
【0023】
【特許文献1】
特開平8−79091号公報
【0024】
【特許文献2】
特開平10−191336号公報
【0025】
【発明が解決しようとする課題】
しかしながら、このような従来の可変長符号テーブルの検索では、通常モードの検索(図11のS800)、ESCモード1の検索(図11のS805)、ESCモード2の検索(図12のS810)と順に行うため、ESCモード3の固定長符号化となるケースでは3回も検索を行う必要があり、回路で実現した場合は3回の検索を制御する制御回路が複雑となると共にテーブルアクセスの遅延が発生し、またCPUやDSPなどのプロセッサを用いてソフトウェアで実現した場合は、3回もの検索を行うため処理手順が増大し画像符号化処理の遅延を招くという問題があった。
【0026】
また、可変長符号の定義は、発生頻度の高いものに割り付けているが、図8に示すように、発生可能なデータは262,016種類もあり、そのうち通常モードの可変長符号として定義されているのは僅か102個であり、3モードエスケープを含め(ESC1モード、ESC2モード)可変長符号に定義されているのは262個である。したがって、残りの261,754種類のデータは固定長符号化となる。画像符号化を高画質に行うほど、ESCモードの符号や固定長符号の発生は増大し、画像符号化処理の遅延が発生するというという問題があった。
【0027】
また、大きなメモリテーブルを用いる従来手法では、回路で実現した場合は、高価な高速メモリを大量に必要とする問題点がある。また、CPUやDSPなどのプロセッサを用いてソフトウェアで実現した場合は、高速なオンチップのメモリ量が少なく、可変長符号テーブルを格納することができず、低速なメモリに配置することになるので、高速に可変長符号化することができず、画像符号化処理の遅延が発生するというという問題があった。
【0028】
本発明は、このような従来の問題を解決するためになされたもので、3モードエスケープ可変長符号化において、可変長符号テーブルの検索を1回にすることにより、回路で実現した場合の制御回路を簡単にし、またソフトウェアで実現した場合の処理手順を少なくして少ない演算量で高速に可変長符号を得ること、また可変長符号テーブルのメモリ容量を小さくすることにより、回路で実現する場合は高価な高速メモリの使用を少なくし、またソフトウェアで実現する場合は高速なオンチップメモリに配置することが可能となり高速に可変長符号を得ることができる3モードエスケープ可変長符号化装置および方法を提供するものである。
【0029】
【課題を解決するための手段】
本発明の3モードエスケープ可変長符号化装置は、原データの先行するゼロ係数の個数RUNの値の範囲を検査するRUN検査手段と、原データの非ゼロの係数の値LEVELの値の範囲を検査するLEVEL検査手段と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値と前記RUN値と前記LEVEL値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成手段と、3モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したVLCハッシュテーブルと、前記テーブルアドレスで前記VLCハッシュテーブルを参照するハッシュテーブル参照手段と、前記キーデータに前記VLCハッシュテーブル内の検査キー作成と同様の演算を行い、前記VLCハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成手段と、前記照合キーと前記VLCハッシュテーブルを参照して得られた検査キー部とを比較するキー比較手段と、前記RUN検査手段と前記LEVEL検査手段と前記キー比較手段との結果に基づいて、モードを生成するMODE生成手段と、前記MODE生成手段に生成されたモードと、前記ハッシュテーブル参照手段に参照された前記VLCハッシュテーブルとにしたがって3モードエスケープ可変長符号を生成する3モードエスケープ可変長符号生成手段とを備えたことを特徴とした構成を有している。
【0030】
この構成により、3つのモードに対応した可変長符号情報を格納したVLCハッシュテーブルを参照し、条件により選択されたモードにしたがって3モードエスケープ可変長符号を決定するので、1回のテーブル検索処理で3モードに対応した可変長符号を得ることができる。また、可変長符号テーブルをハッシュテーブルにしたので、キーデータ(RUN ,LEVEL ,LAST)に演算量の少ないハッシュ演算を施して、VLCハッシュテーブルのアドレスを直接求めることができるとともに、テーブルサイズを小さくすることができる。さらに、キーデータ(RUN ,LEVEL ,LAST)より照合キーを生成し、テーブル内の検査キーで比較するだけで、キーデータに対応するテーブル情報か否かを判定することができるので、高速に可変長符号を得ることができる。
【0031】
また、本発明の3モードエスケープ可変長符号化装置は、前記MODE生成手段は、前記RUN検査手段が検査した前記RUNの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴とした構成を有している。
【0032】
また、本発明の3モードエスケープ可変長符号化装置は、前記MODE生成手段は、前記LEVEL検査手段が検査した前記LEVELの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴とした構成を有している。
【0033】
また、本発明の3モードエスケープ可変長符号化装置は、前記MODE生成手段は、前記キー比較手段が比較した前記照合キーと前記検査キーとが異なるとき、前記モードを固定長符号化モードにすることを特徴とした構成を有している。
【0034】
これら構成により、可変長符号が定義されていないキーデータ(RUN ,LEVEL ,LAST)についても、固定長符号を割り当てて高速に符号語を得ることができることとなる。
【0035】
また、本発明の3モードエスケープ可変長符号化装置は、前記VLCハッシュテーブルは、可変長符号が定義されている定義キーデータグループと、この定義キーデータグループ以外の未定義キーデータグループとからなり、前記定義キーデータグループのキーデータは、ハッシュ演算結果によりシノニムが発生せず、キーデータグループ全体の中でハッシュ演算結果によりシノニムが発生して衝突したキーデータ同士の前記検査キーはすべて異なることを特徴とした構成を有している。
【0036】
この構成により、キーデータ(RUN ,LEVEL ,LAST)から計算した照合キーとVLCハッシュテーブルに格納してある検査キーを比較することにより、高速に可変長符号の妥当性をチェックすることができることとなる。
【0037】
また、本発明の3モードエスケープ可変長符号化方法は、原データの先行するゼロ係数の個数RUNの値と、原データの非ゼロの係数の値LEVELの値と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値との組であるキーデータを可変長符号化する3モードエスケープ可変長符号化方法において、前記3モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したVLCハッシュテーブルを準備するVLCハッシュテーブル準備ステップと、原データの先行するゼロ係数の個数RUNの値の範囲を検査するRUN検査ステップと、原データの非ゼロの係数の値LEVELの値の範囲を検査するLEVEL検査ステップと、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値と前記RUN値と前記LEVEL値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成ステップと、前記テーブルアドレスで前記VLCハッシュテーブルを参照するハッシュテーブル参照ステップと、前記キーデータに前記VLCハッシュテーブル内の検査キー作成と同様の演算を行い、前記VLCハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成ステップと、前記照合キーと前記VLCハッシュテーブルを参照して得られた検査キー部とを比較するキー比較ステップと、前記RUN検査ステップと前記LEVEL検査ステップと前記キー比較ステップとの結果に基づいて、モードを生成するMODE生成ステップと、前記MODE生成ステップに生成されたモードと、前記ハッシュテーブル参照ステップに参照された前記VLCハッシュテーブルとにしたがって3モードエスケープ可変長符号を生成する3モードエスケープ可変長符号生成ステップとを備えたことを特徴としている。
【0038】
この方法により、3つのモードに対応した可変長符号情報を格納したVLCハッシュテーブルを参照し、条件により選択されたモードにしたがって3モードエスケープ可変長符号を決定するので、1回のテーブル検索処理で3モードに対応した可変長符号を得ることができる。また、ハッシュテーブルによる可変長符号テーブルを使用するので、キーデータ(RUN ,LEVEL ,LAST)に演算量の少ないハッシュ演算を施して、VLCハッシュテーブルのアドレスを直接求めることができるとともに、テーブルサイズを小さくすることができる。さらに、キーデータ(RUN ,LEVEL ,LAST)より照合キーを生成し、テーブル内の検査キーで比較するだけで、キーデータに対応するテーブル情報か否かを判定することができるので、高速に可変長符号を得ることができる。
【0039】
また、本発明の3モードエスケープ可変長符号化プログラムは、原データの先行するゼロ係数の個数RUNの値と、原データの非ゼロの係数の値LEVELの値と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値との組であるキーデータを可変長符号化する3モードエスケープ可変長符号化プログラムにおいて、前記3モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したVLCハッシュテーブルを準備するVLCハッシュテーブル準備ステップと、原データの先行するゼロ係数の個数RUNの値の範囲を検査するRUN検査ステップと、原データの非ゼロの係数の値LEVELの値の範囲を検査するLEVEL検査ステップと、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値と前記RUN値と前記LEVEL値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成ステップと、前記テーブルアドレスで前記VLCハッシュテーブルを参照するハッシュテーブル参照ステップと、前記キーデータに前記VLCハッシュテーブル内の検査キー作成と同様の演算を行い、前記VLCハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成ステップと、前記照合キーと前記VLCハッシュテーブルを参照して得られた検査キー部とを比較するキー比較ステップと、前記RUN検査ステップと前記LEVEL検査ステップと前記キー比較ステップとの結果に基づいて、モードを生成するMODE生成ステップと、前記MODE生成ステップに生成されたモードと、前記ハッシュテーブル参照ステップに参照された前記VLCハッシュテーブルとにしたがって3モードエスケープ可変長符号を生成する3モードエスケープ可変長符号生成ステップとを備えたことを特徴とするものである。
【0040】
このプログラムにより、3つのモードに対応した可変長符号情報を格納したVLCハッシュテーブルを参照し、条件により選択されたモードにしたがって3モードエスケープ可変長符号を決定するので、1回のテーブル検索処理で3モードに対応した可変長符号を得ることができる。また、ハッシュテーブルによる可変長符号テーブルを使用するので、キーデータ(RUN ,LEVEL ,LAST)に演算量の少ないハッシュ演算を施して、VLCハッシュテーブルのアドレスを直接求めることができるとともに、テーブルサイズを小さくすることができる。さらに、キーデータ(RUN ,LEVEL ,LAST)より照合キーを生成し、テーブル内の検査キーで比較するだけで、キーデータに対応するテーブル情報か否かを判定することができるので、高速に可変長符号を得ることができる。
【0041】
また、本発明の3モードエスケープ可変長符号化プログラムは、前記MODE生成ステップは、前記RUN検査ステップが検査した前記RUNの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴としている。
【0042】
また、本発明の3モードエスケープ可変長符号化プログラムは、前記MODE生成ステップは、前記LEVEL検査ステップが検査した前記LEVELの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴としている。
【0043】
また、本発明の3モードエスケープ可変長符号化プログラムは、前記MODE生成ステップは、前記キー比較ステップが比較した前記照合キーと前記検査キーとが異なるとき、前記モードを固定長符号化モードにすることを特徴としている。
【0044】
これらのプログラムにより、可変長符号が定義されていないキーデータ(RUN ,LEVEL ,LAST)についても、固定長符号を割り当てて高速に符号語を得ることができることとなる。
【0045】
また、本発明の3モードエスケープ可変長符号化プログラムは、前記VLCハッシュテーブルは、可変長符号が定義されている定義キーデータグループと、この定義キーデータグループ以外の未定義キーデータグループとからなり、前記定義キーデータグループのキーデータは、ハッシュ演算結果によりシノニムが発生せず、キーデータグループ全体の中でハッシュ演算結果によりシノニムが発生して衝突したキーデータ同士の前記検査キーはすべて異なることを特徴としている。
【0046】
このプログラムにより、キーデータ(RUN ,LEVEL ,LAST)から計算した照合キーとVLCハッシュテーブルに格納してある検査キーを比較することにより、高速に可変長符号の妥当性をチェックすることができることとなる。
【0047】
また、本発明の3モードエスケープ可変長符号化プログラムを記録した媒体は、原データの先行するゼロ係数の個数RUNの値と、原データの非ゼロの係数の値LEVELの値と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値との組であるキーデータを可変長符号化する3モードエスケープ可変長符号化プログラムを記録した媒体において、前記3モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したVLCハッシュテーブルを準備するVLCハッシュテーブル準備ステップと、原データの先行するゼロ係数の個数RUNの値の範囲を検査するRUN検査ステップと、原データの非ゼロの係数の値LEVELの値の範囲を検査するLEVEL検査ステップと、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値と前記RUN値と前記LEVEL値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成ステップと、前記テーブルアドレスで前記VLCハッシュテーブルを参照するハッシュテーブル参照ステップと、前記キーデータに前記VLCハッシュテーブル内の検査キー作成と同様の演算を行い、前記VLCハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成ステップと、前記照合キーと前記VLCハッシュテーブルを参照して得られた検査キー部とを比較するキー比較ステップと、前記RUN検査ステップと前記LEVEL検査ステップと前記キー比較ステップとの結果に基づいて、モードを生成するMODE生成ステップと、前記MODE生成ステップに生成されたモードと、前記ハッシュテーブル参照ステップに参照された前記VLCハッシュテーブルとにしたがって3モードエスケープ可変長符号を生成する3モードエスケープ可変長符号生成ステップとを備えたことを特徴としている。
【0048】
このことにより、3つのモードに対応した可変長符号情報を格納したVLCハッシュテーブルを参照し、条件により選択されたモードにしたがって3モードエスケープ可変長符号を決定するので、1回のテーブル検索処理で3モードに対応した可変長符号を得ることができる。また、ハッシュテーブルによる可変長符号テーブルを使用するので、キーデータ(RUN ,LEVEL ,LAST)に演算量の少ないハッシュ演算を施して、VLCハッシュテーブルのアドレスを直接求めることができるとともに、テーブルサイズを小さくすることができる。さらに、キーデータ(RUN ,LEVEL ,LAST)より照合キーを生成し、テーブル内の検査キーで比較するだけで、キーデータに対応するテーブル情報か否かを判定することができるので、高速に可変長符号を得ることができる。
【0049】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を用いて説明する。
(第1の実施の形態)
【0050】
図1は、本発明の第1の実施の形態における3モードエスケープ可変長符号化装置の機能ブロック図である。図2は、3モードエスケープ可変長符号テーブル検索手段の機能ブロック図である。
【0051】
図1において、3モードエスケープ可変長符号化装置10は、(LAST, RUN, LEVEL)の組合せから可変長符号VLCとその長さLENとモードMODEを求める3モードエスケープ可変長符号テーブル検索手段100と、ESCモード1の可変長符号を生成するESC1符号生成手段101と、ESCモード2の可変長符号を生成するESC2符号生成手段102と、固定長の符号を生成するFLC符号生成手段103と、4種類のモードのうち1つを選択するセレクタ104を備えている。
【0052】
また、図2において、3モードエスケープ可変長符号テーブル検索手段100は、RUNデータの範囲を検査するRUN検査手段201と、LEVELデータの範囲を検査するLEVEL検査手段202と、(LAST, RUN, LEVEL)をキーとしてハッシュ演算を行い可変長符号テーブルアドレスAを求めるハッシュアドレス生成手段203と、3モードエスケープに対応した全ケースの可変長符号(VLC)の情報を格納したVLCハッシュテーブル204と、前記アドレスAでVLCハッシュテーブル204を参照して検査キーKEYとモードMと可変長符号VLCとその長さLENを求めるハッシュテーブル参照手段205と、(LAST, RUN, LEVEL)から照合キーKを生成する照合キー生成手段206と、前記検査キーKEYと前記照合キーKの一致比較を行うキー比較手段207と、RUN検査手段201の結果とLEVEL検査手段202の結果とキー比較手段207の結果に基づいて前記モードMよりモードMODEを生成するMODE生成手段208を備えている。
【0053】
以上のように構成された3モードエスケープ可変長符号化装置10について、MPEG−4のイントラマクロブロックの可変長符号化を例にとり、その動作を説明する。以下(RUN ,LEVEL ,LAST)の組合せを、キーデータと呼ぶことにする。
【0054】
まず、3モードエスケープ可変長符号化装置10では、3モードエスケープ可変長符号テーブル検索手段100で、キーデータ(RUN ,LEVEL ,LAST)から可変長コードVLCとその長さLENとモードMODEを求める。
【0055】
次に、ESC1符号生成手段101は、前記可変長コードVLCにESCモード1の符号(ESC“0”)を付加する。ESC2符号生成手段102は、前記可変長コードVLCにESCモード2の符号(ESC“10”)を付加する。FLC符号生成手段103は、キーデータ(RUN ,LEVEL ,LAST)にESCモード3の符号(ESC“11”)を付加する。
【0056】
次に、セレクタ104は、前記モードMODEの値により、4種類の符号(VLCそのまま、ESC1符合付VLC、ESC2符号付VLC、FLC符号)のいずれかを選択して出力する。
【0057】
次に、図2を参照して、上記3モードエスケープ可変長符号テーブル検索手段100におけるキーデータ(RUN ,LEVEL ,LAST)から可変長コードVLCとその長さLENとモードMODEを求める動作を説明する。
【0058】
3モードエスケープ可変長符号テーブル検索手段100では、RUN検査手段201で、RUNが定義されているデータ範囲(0〜41)に入っているか否かを検査し、範囲外の場合はNGを出力する。LEVEL検査手順202で、LEVELが定義されているデータ範囲(1〜54)に入っているか否かを検査し、範囲外の場合はNGを出力する。
【0059】
また、ハッシュアドレス生成手段203で、キーデータ(RUN ,LEVEL ,LAST)に後述するハッシュ演算を施し、算出したハッシュ値をVLCハッシュテーブル204のアドレスAとする。VLCハッシュテーブル204は、後述するハッシュテーブルの条件を満足するハッシュ演算式に基づいて生成される。次に、ハッシュテーブル参照手段205で、上記アドレスAによりVLCハッシュテーブル204を参照し、検査キーKEYとモードMと可変長符号VLCとその長さLENを求める。
【0060】
さらに、照合キー生成手段206で、キーデータ(RUN ,LEVEL ,LAST)より照合キーKを生成する。次に、キー比較手段207で、照合キーKとVLCハッシュテーブルを参照して得られた検査キーKEYとの一致比較を行い、不一致の場合はNGを出力する。
【0061】
さらに、MODE生成手段208は、RUN検査手段201のNGとLEVEL検査手段202のNGとキー比較手段207のNGのうち、いずれかがNGの場合にモードMODEを3とする。すべてがNGで無い場合には、モードMをそのままモードMODEとする。
【0062】
次に、ハッシュアドレス生成手段203のハッシュ演算式について、詳細に説明する。
【0063】
ハッシュ演算は、キーの集合から番地の集合への多対1の写像演算であり、キーデータ(RUN ,LEVEL ,LAST)をKとし、VLCハッシュテーブルの大きさをNとすると、アドレスAを求めるハッシュ演算の式は、下記(式1)となる。
A = Hash(K) mod N ・・・ (式1)
【0064】
ハッシュ演算において、異なるキーのハッシュ値が同一になる(衝突する)シノニムの発生を抑えるために、一般的にはテーブルの大きさNを素数とする。しかし、本実施の形態では、演算量を減らすために、テーブルの大きさNを2のべき乗にする。すなわち下記(式2)に示すように、Nの剰余を求める演算を、論理積によるマスク演算で代用し、演算量を低減している。Nが2のべき乗の場合は、(式1)と(式2)は等価である。Andは、ビットごとの論理積である。
A = Hash(K) And (N−1) ・・・ (式2)
【0065】
しかし、テーブルの大きさNが素数でないので、ハッシュ効果が薄れて、シノニムの増大を招く。そこで、本実施の形態では、キーデータを構成するサブキー(RUN ,LEVEL ,LASTのそれぞれ)に対して、個別に演算するハッシュ関数として、下記(式3)を用いる。
A = Hash(K1 ,K2 ,K3) And (N−1) ・・・(式3)
【0066】
このように、3変数のハッシュ演算を行うことにより、ハッシュ効果の薄れを防いでいる。3変数のハッシュ関数としては、周知のハッシュ関数のうち、演算量の少ないものを利用すればよい。
【0067】
次に図3を用いて、3モードエスケープに対応したVLCハッシュテーブル204の構造について、詳細に説明する。
【0068】
ハッシュ関数は、多対1の写像であるので、複数のキーのハッシュ値が同一となるシノニム現象が必ず発生する。例えば、RUN=0〜63、LEVEL=1〜2047、LAST=0〜1の範囲をとるキー全体のグループ500を、テーブルサイズN=1024のVLCハッシュテーブル503に写像させる場合を考えると、262,016種類から1024種類への写像関数となり、シノニムが多発する。しかし、そのうち可変長符号として定義されているキーのグループ501は、僅か262種類であり、262種類から1024種類への写像において、シノニムを発生させないことは明らかに可能である。
【0069】
本実施の形態においては、可変長符号として定義されているキーのグループ501に対して、シノニムの発生しないハッシュ関数を用いる。このハッシュ関数は必ず存在し、具体的な条件に応じて生成することは容易である。また、可変長符号として定義されていないキーのグループ502に対してシノニムを許している。
【0070】
すなわち、可変長符号として定義されているグループ501の任意のキー(A)に対しハッシュ演算したADR−A510と、別の任意のキー(B)に対しハッシュ演算したADR−B520は、必ず異なる。また、可変長符号として定義されていないグループ502の任意のキー(C)に対しハッシュ演算したADR−B520とは、同じになる場合を許している。また、可変長符号が定義されていないグループ502の任意のキー(D)に対しハッシュ演算したADR−C530と、別の任意のキー(E)に対しハッシュ演算したADR−C530とも、同じになる場合を許している。
【0071】
VLCハッシュテーブル503は、可変長符号が定義されているグループ501のキーに対しシノニムの発生しないアドレスADR−A510と、グループ501のキーに対しシノニムが発生しないがグループ502のキーとの間でシノニムが発生するアドレスADR−B520と、グループ502のキーに対しシノニムが発生するアドレスADR−C530と、グループ501およびグループ502にハッシュ演算しても指されることのないアドレスADR−D540から構成される。
【0072】
例えば、このような条件を満たすハッシュ演算の一例を、下記(式4)に示す。
A=(RUN*2 + LEVEL*85 + LAST*64) And (1024−1) ・・・ (式4)
【0073】
なお、ここで示したハッシュ演算式は一例であり、この条件を満たすものであればどんなハッシュ演算式でも良い。
【0074】
このようなハッシュ関数を用いることにより、シノニム発生時の対策を不要としている。すなわち、ハッシュ演算したハッシュ値をアドレスとしてVLCハッシュテーブル503を参照した時に、可変長符号が定義されているグループ501からの写像かどうかを判断しただけで、目的とする可変長符号を得ることができる。その判断を行うのが照合キーである。
【0075】
照合キーは、キーデータ(RUN ,LEVEL ,LAST)に後述する条件を満たす演算を施して求める。
【0076】
VLCハッシュテーブル503に格納する照合キーは、グループ501のキーに対しシノニムの発生しないアドレスADR−A510には、グループ501のキーデータにより生成した照合キーを格納する。グループ501のキーに対しシノニムが発生しないがグループ502のキーとの間でシノニムが発生するアドレスADR−B520には、グループ501のキーデータにより生成した照合キーを格納する。照合キー生成の演算式は、グループ501のキーデータから生成した照合キーとグループ502のキーデータから生成した照合キーとは、ユニークになるものとする。
【0077】
グループ502のキーに対しシノニムが発生するアドレスADR−C530には、シノニムの発生したグループ502のいずれのキーデータより生成した照合キーと一致しない照合キーを格納する。グループ501のキーおよびグループ502のキーにハッシュ演算しても指されることのないアドレスADR−D540には、どんな値のキーを格納してもかまわない。
【0078】
したがって、キーデータ(RUN ,LEVEL ,LAST)より求めた照合キーとVLCハッシュテーブル503のキーが一致すれば、キーデータが可変長符号の定義されているグループ501のキーデータであると判断することができる。
【0079】
例えば、このような条件を満たす照合キー生成演算式の一例を(式5)に示す。
63 − ((RUN And (32−1))*2 + LAST)・・・ (式5)
【0080】
なお、ここで示した照合キー生成演算式は一例であり、この条件を満たすものであればどんな演算式でも良い。
【0081】
図4にVLCハッシュテーブル601の構成例を示す。ここで、ハッシュ演算600は、キーデータ(RUN ,LEVEL ,LAST)から照合キーを求めるものである。
【0082】
図4に示すように、6ビットで検査キーを表し、2ビットで3種類のモード(通常モード、ESCモード1、ESCモード2)を表し、12ビットで可変長符号(VLC)を格納し、4ビットでその長さ(LEN)を格納する。合計24ビットで1つのテーブルを構成して1024個のテーブルとする。また、1024個のテーブルのうち、可変長符号が定義されている(ADR−OK)のは262個であり、残り762個は未定義(ADR−NG)となり、検査キーを比較するためのキー部の6ビットだけがあればよく、残りの18ビットは空き領域となっている。また、3モードエスケープコーディングは、1種類の可変長コードをESC符号で区別することにより、3種類のキーデータの可変長符号として利用しているため、このVLCハッシュテーブル601の可変長符号(VLC)には同じ値が複数箇所に格納されることになる。
【0083】
図5に別のVLCハッシュテーブル602の構成例を示す。この例では、6ビットで検査キーを表し、2ビットで3種類のモード(通常モード、ESCモード1、ESCモード2)を表し、8ビットで可変長符号を格納したポインタを表す。さらに、VLCハッシュテーブル602には前述したように、空き領域が762個もあり、定義する必要のある可変長符号は102個であるので、連続したその空き領域を2個使用して、1つ目の4ビットでその長さ(LEN)、4ビットで可変長符号の上位4ビット(VLC1)を、2つ目の8ビットで可変長符号の下位8ビット(VLC2)を格納する。合計16ビットで1つのテーブルを構成して1024個のテーブルとする。
【0084】
この構成例はほんの一例であり、以上の条件を満たすものであればどんな構成をとっても良い。
【0085】
上記のように、本発明の第1の実施の形態では、3モードエスケープ可変長符号化装置を、3モードエスケープに定義されている全ケースのキーデータ(RUN ,LEVEL ,LAST)に対する可変長符号の情報をVLCハッシュテーブルに登録することにより、1回のテーブル検索で、通常モードまたはESCモード1またはESCモード2の可変長符号を得ることができ、簡単な制御手順で高速に可変長符号を求めることができる。また、可変長符号の検索は、キーデータに演算量の少ないハッシュ演算を施して、VLCハッシュテーブルのアドレスを直接算出することができ、可変長符号の情報を格納したVLCハッシュテーブルに、キーデータに照合キー演算を施して求めた検査キーを格納しておき、キーデータにハッシュ演算を施して求めたテーブルアドレスで、VLCハッシュテーブルをアクセスして検査キーを読み出し、キーデータに照合キー演算を施して求めた照合キーと比較するだけで、該当のキーデータかどうか判断できるので、高速に検索することができる。
(第2の実施の形態)
【0086】
図6に、本発明の第2の実施形態の3モードエスケープ可変長符号化方法のフローチャートを示す。また、図7に、3モードエスケープ可変長符号テーブル検索手順のフローチャートを示す。
【0087】
図6に示すように、3モードエスケープ可変長符号化方法は、(LAST ,RUN ,LEVEL)の組合せから可変長符号VLCとその長さLENとモードMODEを求める3モードエスケープ可変長符号テーブル検索手順(S300)と、モードにより処理手順を分岐させる手順(S301)と、通常モードの可変長符号を出力する手順(S302)と、ESCモード1の可変長符号を生成して出力する手順(S303)と、ESCモード2の可変長符号を生成して出力する手順(S304)と、固定長の符号を生成して出力する手順(S305)から構成されている。
【0088】
また、図7に示すように、3モードエスケープ可変長符号テーブル検索手順は、RUNデータの範囲を検査するRUN検査手順(S401)と、LEVELデータの範囲を検査するLEVEL検査手順(S402)と、(LAST ,RUN ,LEVEL)をキーとしてハッシュ演算を行い可変長符号テーブルアドレスAを求めるハッシュアドレス生成手順(S403)と、前記アドレスAでVLCハッシュテーブルを参照して検査キーKEYとモードMと可変長符号VLCとその長さLENを求めるハッシュテーブル参照手順(S404)と、(LAST ,RUN ,LEVEL)から照合キーKを生成する照合キー生成手順(S405)と、前記検査キーKEYと前記照合キーKの一致比較をするキー比較手順(S406)と、MODE生成手段(S407)から構成されている。
【0089】
以上のような処理手順を有する3モードエスケープ可変長符号化方法について、MPEG−4のイントラマクロブロックの可変長符号化を例に取り、その動作を説明する。以下(RUN ,LEVEL ,LAST)の組合せを、キーデータと呼ぶことにする。
【0090】
図6を参照して、キーデータ(RUN ,LEVEL ,LAST)から3モードエスケープ可変長符号を出力する手順を説明する。
【0091】
まず、3モードエスケープ可変長符号処理では、キーデータ(RUN ,LEVEL ,LAST)から可変長コードVLCと、その長さLENと、モードMODEを求める(ステップS300)。
【0092】
次に、上記処理で求めたモードMODEを判定し(ステップS301)、モードが0の時は、前記可変長コードVLCをそのまま出力する(ステップS302)。また、上記判定(ステップS301)で、モードが1の時は、前記可変長コードVLCにESCモード1の符号(ESC“0”)を付加して出力する(ステップS303)。また、上記判定(ステップS301)で、モードが2の時は、前記可変長コードVLCにESCモード2の符号(ESC“10”)を付加して出力する(ステップS304)。また、上記判定(ステップS301)で、モードが3の時は、前記キーデータ(RUN ,LEVEL ,LAST)にESCモード3の符号(ESC“11”)を付加して出力する(ステップS305)。
【0093】
次に図7を参照して、キーデータ(RUN ,LEVEL ,LAST)から可変長コードVLCとその長さLENとモードMODEを求める手順を説明する。
【0094】
この3モードエスケープVLCテーブル検索処理では、まず、RUNが定義されているデータ範囲(0〜41)に入っているか否かを検査し(ステップS401)、範囲外の場合はNGなので、モードMODEを3に設定して(ステップS407)、終了する。OKの場合は、LEVELが定義されているデータ範囲(1〜54)に入っているか否かを検査し(ステップS402)、範囲外の場合はNGなので、モードMODEを3に設定して(ステップS407)、終了する。OKの場合は、キーデータ(RUN ,LEVEL ,LAST)に後述するハッシュ演算を施し、算出したハッシュ値をVLCハッシュテーブルのアドレスAとする(ステップS403)。
【0095】
次に、このアドレスAによりVLCハッシュテーブルを参照し、検査キーKEYとモードMと可変長コードVLCとその長さLENを求める(ステップS404)。続いて、キーデータ(RUN ,LEVEL ,LAST)に照合キー演算を行い照合キーKを生成する(ステップS405)。そして、前記照合キーKとVLCハッシュテーブルを参照して得られた検査キーKEYの一致比較を行い(ステップS406)、不一致の場合はNGなので、モードMODEを3に設定して(ステップS407)、終了する。OKの場合は、上記で参照して可変長コードにより、求めるべき可変長コードが決定する。
【0096】
なお、本第2の実施の形態における、VLCハッシュテーブル、ハッシュアドレス生成演算式、照合キー生成演算式は、第1の実施の形態と同じものである。
【0097】
上記のように、本発明の第2の実施の形態では、3モードエスケープ可変長符号化方法を、3モードエスケープに定義されている全ケースのキーデータ(RUN ,LEVEL ,LAST)に対する可変長符号の情報をVLCハッシュテーブルに登録することにより、1回のテーブル検索で、通常モードまたはESCモード1またはESCモード2の可変長符号を得ることができ、簡単な制御手順で高速に可変長符号を求めることができる。また、可変長符号の検索は、キーデータに演算量の少ないハッシュ演算を施して、VLCハッシュテーブルのアドレスを直接算出することができ、可変長符号の情報を格納したVLCハッシュテーブルに、キーデータに照合キー演算を施して求めた照合キーを格納しておき、キーデータにハッシュ演算を施して求めたテーブルアドレスで、VLCハッシュテーブルをアクセスしてキー部を読み出し、キーデータに照合キー演算を施して求めた照合キーと比較するだけで、該当のキーデータかどうか判断できるので、高速に検索することができる。
(第3の実施の形態)
【0098】
なお、本発明はプログラムによって実現することも可能である。そのソフトウェアを磁気ディスク等の記録媒体に記録して移送することにより、独立した他のコンピュータ・システムで、このソフトウェアを収めた記録媒体から読み出して、実施することができる。
【0099】
記録媒体としては、磁気ディスクの他に、光ディスク、光磁気ディクス等を用いても同様に行うことができる。また、記録媒体は、これらに限られず、ICカード、ROMカセット等、プログラムを記録できるものであれば、同様に実施することができる。
【0100】
【発明の効果】
以上説明したように、本発明は、3つのモードに対応した可変長符号情報を格納したVLCハッシュテーブルを参照し、条件により選択されたモードにしたがって3モードエスケープ可変長符号を決定することにより、1回のテーブル検索処理で3モードに対応した可変長符号を得ることができる。また、可変長符号テーブルをハッシュテーブルにしたので、キーデータ(RUN ,LEVEL ,LAST)に演算量の少ないハッシュ演算を施して、VLCハッシュテーブルのアドレスを直接求めることができるとともに、テーブルサイズを小さくすることができる。さらに、キーデータ(RUN ,LEVEL ,LAST)より照合キーを生成し、テーブル内の検査キーで比較するだけで、キーデータに対応するテーブル情報か否かを判定することができるので、高速に可変長符号を得ることができるというすぐれた効果を有する3モードエスケープ可変長符号化装置および方法を提供することができるものである。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態における3モードエスケープ可変長符号装置を示す機能ブロック図
【図2】本発明の第1の実施の形態における3モードエスケープ可変長符号テーブル検索手段を示す機能ブロック図
【図3】キーのグループとVLCハッシュテーブルの関係を説明する図
【図4】VLCハッシュテーブルの構成例を示す図
【図5】VLCハッシュテーブルの他の構成例を示す図
【図6】本発明の第2の実施の形態における3モードエスケープ可変長符号方法の処理手順を示すフローチャート
【図7】本発明の第2の実施の形態における3モードエスケープ可変長符号テーブル検索方法の処理手順を示すフローチャート
【図8】MPEG−4 イントラマクロプロックのデータ範囲の説明図
【図9】MPEG−4 イントラマクロプロックの可変長符号を示す図
【図10】MPEG−4 イントラマクロプロックのLMAXとRMAXの説明図
【図11】従来の3モードエスケープ可変長符号化方法の処理手順を示すフローチャート
【図12】従来の3モードエスケープ可変長符号化方法の処理手順を示すフローチャート
【図13】従来の可変長符号テーブルのアクセス方法の説明図
【図14】従来のクラス別け可変長符号テーブルのアクセス方法の説明図
【符号の説明】
10 3モードエスケープ可変長符号化装置
100 3モードエスケープ可変長符号テーブル検索手段
101 ESC1符号生成手段
102 ESC2符号生成手段
103 FLC符号生成手段
104 セレクタ
201 RUN検査手段
202 LEVEL検査手段
203 ハッシュアドレス生成手段
204 VLCハッシュテーブル
205 ハッシュテーブル参照手段
206 照合キー生成手段
207 キー比較手段
208 MODE生成手段
500 キー全体のグループ
501 可変長符号が定義されているグループ
502 可変長符号が定義されていないグループ
503 VLCハッシュテーブル
600 ハッシュ演算
601 VLCハッシュテーブル
602 VLCハッシュテーブル
Claims (12)
- 原データの先行するゼロ係数の個数RUNの値の範囲を検査するRUN検査手段と、
原データの非ゼロの係数の値LEVELの値の範囲を検査するLEVEL検査手段と、
原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値と前記RUN値と前記LEVEL値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成手段と、
3モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したVLCハッシュテーブルと、
前記テーブルアドレスで前記VLCハッシュテーブルを参照するハッシュテーブル参照手段と、
前記キーデータに前記VLCハッシュテーブル内の検査キー作成と同様の演算を行い、前記VLCハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成手段と、
前記照合キーと前記VLCハッシュテーブルを参照して得られた検査キー部とを比較するキー比較手段と、
前記RUN検査手段と前記LEVEL検査手段と前記キー比較手段との結果に基づいて、モードを生成するMODE生成手段と、
前記MODE生成手段に生成されたモードと、前記ハッシュテーブル参照手段に参照された前記VLCハッシュテーブルとにしたがって3モードエスケープ可変長符号を生成する3モードエスケープ可変長符号生成手段とを備えたことを特徴とする3モードエスケープ可変長符号化装置。 - 前記MODE生成手段は、前記RUN検査手段が検査した前記RUNの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴とする請求項1に記載の3モードエスケープ可変長符号化装置。
- 前記MODE生成手段は、前記LEVEL検査手段が検査した前記LEVELの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴とする請求項1または請求項2に記載の3モードエスケープ可変長符号化装置。
- 前記MODE生成手段は、前記キー比較手段が比較した前記照合キーと前記検査キーとが異なるとき、前記モードを固定長符号化モードにすることを特徴とする請求項1から請求項3のいずれか1項に記載の3モードエスケープ可変長符号化装置。
- 前記VLCハッシュテーブルは、可変長符号が定義されている定義キーデータグループと、この定義キーデータグループ以外の未定義キーデータグループとからなり、前記定義キーデータグループのキーデータは、ハッシュ演算結果によりシノニムが発生せず、キーデータグループ全体の中でハッシュ演算結果によりシノニムが発生して衝突したキーデータ同士の前記検査キーはすべて異なることを特徴とする請求項2から請求項4のいずれか1項に記載の3モードエスケープ可変長符号化装置。
- 原データの先行するゼロ係数の個数RUNの値と、原データの非ゼロの係数の値LEVELの値と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値との組であるキーデータを可変長符号化する3モードエスケープ可変長符号化方法において、
前記3モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したVLCハッシュテーブルを準備するVLCハッシュテーブル準備ステップと、
原データの先行するゼロ係数の個数RUNの値の範囲を検査するRUN検査ステップと、
原データの非ゼロの係数の値LEVELの値の範囲を検査するLEVEL検査ステップと、
原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値と前記RUN値と前記LEVEL値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成ステップと、
前記テーブルアドレスで前記VLCハッシュテーブルを参照するハッシュテーブル参照ステップと、
前記キーデータに前記VLCハッシュテーブル内の検査キー作成と同様の演算を行い、前記VLCハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成ステップと、
前記照合キーと前記VLCハッシュテーブルを参照して得られた検査キー部とを比較するキー比較ステップと、
前記RUN検査ステップと前記LEVEL検査ステップと前記キー比較ステップとの結果に基づいて、モードを生成するMODE生成ステップと、
前記MODE生成ステップに生成されたモードと、前記ハッシュテーブル参照ステップに参照された前記VLCハッシュテーブルとにしたがって3モードエスケープ可変長符号を生成する3モードエスケープ可変長符号生成ステップとを備えたことを特徴とする3モードエスケープ可変長符号化方法。 - 原データの先行するゼロ係数の個数RUNの値と、原データの非ゼロの係数の値LEVELの値と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値との組であるキーデータを可変長符号化する3モードエスケープ可変長符号化プログラムにおいて、
前記3モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したVLCハッシュテーブルを準備するVLCハッシュテーブル準備ステップと、
原データの先行するゼロ係数の個数RUNの値の範囲を検査するRUN検査ステップと、
原データの非ゼロの係数の値LEVELの値の範囲を検査するLEVEL検査ステップと、
原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値と前記RUN値と前記LEVEL値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成ステップと、
前記テーブルアドレスで前記VLCハッシュテーブルを参照するハッシュテーブル参照ステップと、
前記キーデータに前記VLCハッシュテーブル内の検査キー作成と同様の演算を行い、前記VLCハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成ステップと、
前記照合キーと前記VLCハッシュテーブルを参照して得られた検査キー部とを比較するキー比較ステップと、
前記RUN検査ステップと前記LEVEL検査ステップと前記キー比較ステップとの結果に基づいて、モードを生成するMODE生成ステップと、
前記MODE生成ステップに生成されたモードと、前記ハッシュテーブル参照ステップに参照された前記VLCハッシュテーブルとにしたがって3モードエスケープ可変長符号を生成する3モードエスケープ可変長符号生成ステップとを備えたことを特徴とする3モードエスケープ可変長符号化プログラム。 - 前記MODE生成ステップは、前記RUN検査ステップが検査した前記RUNの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴とする請求項7に記載の3モードエスケープ可変長符号化プログラム。
- 前記MODE生成ステップは、前記LEVEL検査ステップが検査した前記LEVELの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴とする請求項7または請求項8に記載の3モードエスケープ可変長符号化プログラム。
- 前記MODE生成ステップは、前記キー比較ステップが比較した前記照合キーと前記検査キーとが異なるとき、前記モードを固定長符号化モードにすることを特徴とする請求項7から請求項9のいずれか1項に記載の3モードエスケープ可変長符号化プログラム。
- 前記VLCハッシュテーブルは、可変長符号が定義されている定義キーデータグループと、この定義キーデータグループ以外の未定義キーデータグループとからなり、前記定義キーデータグループのキーデータは、ハッシュ演算結果によりシノニムが発生せず、キーデータグループ全体の中でハッシュ演算結果によりシノニムが発生して衝突したキーデータ同士の前記検査キーはすべて異なることを特徴とする請求項8から請求項10のいずれか1項に記載の3モードエスケープ可変長符号化プログラム。
- 原データの先行するゼロ係数の個数RUNの値と、原データの非ゼロの係数の値LEVELの値と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値との組であるキーデータを可変長符号化する3モードエスケープ可変長符号化プログラムを記録した媒体において、
前記3モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したVLCハッシュテーブルを準備するVLCハッシュテーブル準備ステップと、
原データの先行するゼロ係数の個数RUNの値の範囲を検査するRUN検査ステップと、
原データの非ゼロの係数の値LEVELの値の範囲を検査するLEVEL検査ステップと、
原データの非ゼロの係数が最後であるかどうかを示す識別子であるLAST値と前記RUN値と前記LEVEL値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成ステップと、
前記テーブルアドレスで前記VLCハッシュテーブルを参照するハッシュテーブル参照ステップと、
前記キーデータに前記VLCハッシュテーブル内の検査キー作成と同様の演算を行い、前記VLCハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成ステップと、
前記照合キーと前記VLCハッシュテーブルを参照して得られた検査キー部とを比較するキー比較ステップと、
前記RUN検査ステップと前記LEVEL検査ステップと前記キー比較ステップとの結果に基づいて、モードを生成するMODE生成ステップと、
前記MODE生成ステップに生成されたモードと、前記ハッシュテーブル参照ステップに参照された前記VLCハッシュテーブルとにしたがって3モードエスケープ可変長符号を生成する3モードエスケープ可変長符号生成ステップとを備えたことを特徴とする3モードエスケープ可変長符号化プログラムを記録した媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003044575A JP2004254208A (ja) | 2003-02-21 | 2003-02-21 | 3モードエスケープ可変長符号化装置および方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003044575A JP2004254208A (ja) | 2003-02-21 | 2003-02-21 | 3モードエスケープ可変長符号化装置および方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004254208A true JP2004254208A (ja) | 2004-09-09 |
Family
ID=33027231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003044575A Pending JP2004254208A (ja) | 2003-02-21 | 2003-02-21 | 3モードエスケープ可変長符号化装置および方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004254208A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006339997A (ja) * | 2005-06-01 | 2006-12-14 | Matsushita Electric Ind Co Ltd | 可変長符号化方式および可変長符号化装置 |
CN113034139A (zh) * | 2021-03-15 | 2021-06-25 | 中国人民大学 | 基于活体生物特征认证的区块链多币钱包及其实现方法 |
-
2003
- 2003-02-21 JP JP2003044575A patent/JP2004254208A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006339997A (ja) * | 2005-06-01 | 2006-12-14 | Matsushita Electric Ind Co Ltd | 可変長符号化方式および可変長符号化装置 |
JP4495034B2 (ja) * | 2005-06-01 | 2010-06-30 | パナソニック株式会社 | 可変長符号化方式および可変長符号化装置 |
CN113034139A (zh) * | 2021-03-15 | 2021-06-25 | 中国人民大学 | 基于活体生物特征认证的区块链多币钱包及其实现方法 |
CN113034139B (zh) * | 2021-03-15 | 2023-12-26 | 中国人民大学 | 基于活体生物特征认证的区块链多币钱包及其实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3332619B2 (ja) | 復号装置およびその方法 | |
US6014095A (en) | Variable length encoding system | |
US7894532B2 (en) | Variable-length encoding apparatus and method | |
US7702013B2 (en) | Method and arrangement for coding transform coefficients in picture and/or video coders and decoders and a corresponding computer program and a corresponding computer-readable storage medium | |
KR100318057B1 (ko) | 화상 복호화 방법 | |
US6587057B2 (en) | High performance memory efficient variable-length coding decoder | |
KR100196840B1 (ko) | 영상복호화시스템에 있어서 비트에러복원장치 | |
US6993202B2 (en) | Decoding apparatus, method, and storage medium for inputting and decoding variable-length coded data | |
JPH0818460A (ja) | ハフマンデコーダー | |
KR20060013021A (ko) | 내용 기반 적응적 이진 산술 복호화 방법 및 장치 | |
KR20100067053A (ko) | 가변장 복호화 장치 및 방법 | |
JPH10322223A (ja) | 可変長符号化回路 | |
Lai et al. | Fast-searching algorithm for vector quantization using projection and triangular inequality | |
US7218677B2 (en) | Variable-length encoding apparatus and method | |
JP2004254208A (ja) | 3モードエスケープ可変長符号化装置および方法 | |
US7256715B1 (en) | Data compression using dummy codes | |
KR20050010918A (ko) | 가변길이 복호화를 위한 방법 및 시스템, 및 코드워드들의지역화를 위한 장치 | |
Shaila et al. | Block encoding of color histogram for content based image retrieval applications | |
JP5033285B2 (ja) | 動画評価を行う方法及びシステム | |
JP4537089B2 (ja) | 可変長復号装置及び方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体 | |
JP2004096692A (ja) | ハッシュによる可変長符号化装置および方法 | |
JP4462360B2 (ja) | 画像圧縮装置および画像伸張装置 | |
US7165086B2 (en) | System, method, and apparatus for division coupled with rounding of signed binary numbers | |
US6889235B2 (en) | Method and apparatus for quantifying the number of identical consecutive digits within a string | |
US20070154102A1 (en) | Image decompression system, method and program |