JP2011091576A - 符号化装置および方法 - Google Patents
符号化装置および方法 Download PDFInfo
- Publication number
- JP2011091576A JP2011091576A JP2009242769A JP2009242769A JP2011091576A JP 2011091576 A JP2011091576 A JP 2011091576A JP 2009242769 A JP2009242769 A JP 2009242769A JP 2009242769 A JP2009242769 A JP 2009242769A JP 2011091576 A JP2011091576 A JP 2011091576A
- Authority
- JP
- Japan
- Prior art keywords
- encoding
- state
- coefficient data
- calculation
- pass
- 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.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/63—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】符号化をより高速に行うことができるようにする。
【解決手段】CUパス部124は、ステップS141においてRLCの結果が0である計算を行い、ステップS142においてRLCの結果が1である計算を行い、ステップS143において1番目のUNIFORMエンコードの計算を行い、ステップS144において2番目のUNIFORMエンコードの計算を行う。MQ符号化部112は、ステップS145においてRLCコンテキストで値0をMQ符号化し、ステップS146においてRLCコンテキストで値1をMQ符号化し、ステップS147においてUNIFORMコンテキストで1回目のMQ符号化を行い、ステップS148においてUNIFORMコンテキストで2回目のMQ符号化を行う。本発明は、例えば、画像符号化装置に適用することができる。
【選択図】図11
【解決手段】CUパス部124は、ステップS141においてRLCの結果が0である計算を行い、ステップS142においてRLCの結果が1である計算を行い、ステップS143において1番目のUNIFORMエンコードの計算を行い、ステップS144において2番目のUNIFORMエンコードの計算を行う。MQ符号化部112は、ステップS145においてRLCコンテキストで値0をMQ符号化し、ステップS146においてRLCコンテキストで値1をMQ符号化し、ステップS147においてUNIFORMコンテキストで1回目のMQ符号化を行い、ステップS148においてUNIFORMコンテキストで2回目のMQ符号化を行う。本発明は、例えば、画像符号化装置に適用することができる。
【選択図】図11
Description
本発明は、符号化装置および方法に関し、特に、より高速に符号化を行うことができるようにした符号化装置および方法に関する。
2000年にISO/IEC(International Organization for Standardization / International Electrotechnical Commission)で標準化されたJPEG(Joint Photographic Experts Group)2000は、高圧縮率、可逆と非可逆圧縮対応、スケラビリティ(解像度・画質など)、およびエラー耐性等の多くの機能を持った技術として、JPEGの代替技術としての期待が高まっている。
2004年にはデジタルシネマの標準規格(DCI(Digital Cinema Initiative))によって、標準コーデックとしてJPEG2000 Part-1が選ばれた。これによってデジタルシネマの映像撮影から、画像編集、画像配信まで、すべてJPEG2000で統一することが可能になった。
また、医用画像や衛星写真画像などはオリジナルのまま保存が必須である。さらに、最近の一眼レフデジタルカメラでは、CCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)のイメージセンサから取得したRAWデータまたはRGBデータを、非圧縮のままメモリカードに保存できるものが多い。
しかしながら、マスタ画像を非圧縮とすることは、画像としてのデータ欠損をなくすことが出来る点で有利であるが、データサイズが巨大になる点で不利である。そのため、デジタルシネマ以外の、例えば以上のような、画質を重要とする用途でも、JPEG2000可逆圧縮によって圧縮・伸長されるニーズが今後高まる。
特許文献1には、固定小数点型ウェーブレット変換器と、整数型ウェーブレット変換器の両方を備え、可逆変換および非可逆変換の両方を行うことができ、画質や圧縮率の選択の自由度を高め得るような画像符号化装置が記載されている。
しかしながら、JPEG2000の場合、その計算負荷がJPEGに比べて圧倒的に大きくなる恐れがあった。特に可逆圧縮の場合にはすべての係数データを欠損なく圧縮することから、膨大な時間を要する恐れがあった。
JPEG2000符号化技術の中でも、1番計算負荷が大きいものが、EBCOT(Embedded Block Coding with Optimized Truncation)と呼ばれるエントロピ符号化部である。これはビットプレーン展開されたバイナリデータを1ピクセル単位にモデリングしながら算術符号化する技術を用いている。従って、逐次処理を行う上、上位のビットプレーンの結果が下位のビットプレーンの結果に影響する「依存性」が存在するため、コードブロック内部の並列化が困難とされてきた。従って、大きな解像度の画像のエンコードや可逆圧縮の場合には、如何にしてJPEG2000の計算負荷、特にEBCOTの高速化を実現できるかが、鍵であった。
本発明は、このような状況に鑑みて提案されたものであり、符号化をより高速に行うことができるようにすることを目的とする。
本発明の一側面は、画像データをサブバンド毎の係数データに変換するウェーブレット変換手段と、前記ウェーブレット変換手段により生成された前記係数データの前記サブバンドの領域をコードブロックに分割するコードブロック化手段と、処理対象の係数データに隣接する周囲のバイナリ係数データの値および状態に応じて、処理対象の係数データの状態を遷移させる状態遷移手段と、前記状態遷移手段により遷移された前記係数データの状態に従って、符号化パスを選択する選択手段と、前記選択手段により選択された符号化パスに従って、前記コードブロック化手段により生成されたコードブロック毎に、前記係数データを符号化する符号化手段とを備える符号化装置である。
前記係数データの状態は、係数の正負符号(Sign)、状態変数1(State-0)、状態変数2(State-1)、および有効(Sig)の4つの変数によって定義されるようにすることができる。
前記係数データの状態は、状態変数1(State-0)、状態変数2(State-1)、および有効(Sig)の3つの変数と、前記係数データの7つの状態との対応関係を示すテーブル情報に基づいて、前記3つの変数の値から求められるようにすることができる。
前記7つの状態のうち、第1の状態は、CUパスで符号化される状態であり、第2の状態は、無効なサンプルとされる状態であり、第3の状態は、周囲に有意なサンプルがあり、且つ現在のビットプレーンで未符号化時にはCUパスで符号化される状態であり、第4の状態は、周囲に有意なサンプルがあり、SPパスで符号化される状態であり、第5の状態は、有意であり、且つ既に現在のビットプレーンはSPパスで符号化済みの状態であり、第6の状態は、有意であり、MRパスで符号化され、次のMRパスが1回目である状態であり、第7の状態は、有意であり、MRパスで符号化され、次のMRパスが2回目である状態であるようにすることができる。
前記状態遷移手段は、処理対象の係数データの状態が前記第1の状態であって、前記CUパスで周囲の係数データのいずれかが有意になった場合、前記第3の状態に遷移させることができる。
前記状態遷移手段は、処理対象の係数データが前記第1の状態であって、前記CUパスで有意になった場合、前記第5の状態に遷移させることができる。
前記状態遷移手段は、処理対象の係数データが前記第3の状態であって、前記SPパスで符号化する場合、前記第4の状態に遷移させることができる。
前記状態遷移手段は、処理対象の係数データが前記第3の状態であって、前記CUパスで有意になった場合、前記第5の状態に遷移させることができる。
前記状態遷移手段は、処理対象の係数データが前記第5の状態であって、1つのビットプレーンの符号化がすべて終了した場合、前記第6の状態に遷移させることができる。
前記状態遷移手段は、処理対象の係数データが前記第6の状態であって、1つのビットプレーンの符号化がすべて終了した場合、前記第7の状態に遷移させることができる。
前記状態遷移手段により遷移された、処理対象のコードブロック内の各係数データの状態を保持する保持手段をさらに備え、前記選択手段は、前記保持手段により保持される前記係数データの状態に従って、符号化パスを選択することができる。
前記符号化手段は、前記選択手段により選択された符号化パスに従って、前記係数データに対して所定の演算を行う演算手段と、前記演算手段による演算結果を用いて算術符号化を行う算術符号化手段とを備えることができる。
前記演算手段は、前記選択手段によりCUパスが選択された場合、前記係数データに対して所定の演算を行うCUパス演算手段と、前記選択手段によりSPパスが選択された場合、前記係数データに対して所定の演算を行うSPパス演算手段と、前記選択手段によりMRパスが選択された場合、前記係数データに対して所定の演算を行うMRパス演算手段とを備えることができる。
前記CUパス演算手段は、前記コードブロックの4つの係数データに対して、ランレングス符号化の結果が0になる計算と、ランレングス符号化の結果が1になる計算の両方を実行し、前記算術符号化手段は、前記ランレングス符号化のコンテキストを用いて、値0の係数データをMQ符号化し、さらに、値1の係数データをMQ符号化することができる。
前記CUパス演算手段は、前記コードブロックの4つの係数データに対して、UNIFORMエンコード符号化を2回行い、前記算術符号化手段は、その2回各々に対して、UNIFORMのコンテキストを用いて、係数0または1をMQ符号化することができる。
前記CUパス演算手段は、前記コードブロックの係数データ毎に、CUエンコードを実行するか否かの計算を行い、前記算術符号化手段は、前記計算の結果に従って、Significanceコンテキストを用いてMQ符号化することができる。
前記CUパス演算手段は、前記コードブロックの係数データ毎に、Signエンコードを実行するか否かの計算を行い、前記算術符号化手段は、前記計算の結果に従ってSignコンテキストを用いてMQ符号化することができる。
前記SPパス演算手段は、前記係数データの値が1か否かの計算を行い、前記算術符号化手段は、前記計算の結果に従ってSignコンテキストを用いてMQ符号化することができる。
前記MRパス演算手段は、MRエンコードを実行するか否かの計算を行い、前記算術符号化手段は、前記計算の結果に従ってMRコンテキストを用いてMQ符号化することができる。
本発明の一側面は、また、画像データをサブバンド毎の係数データに変換し、変換された前記係数データの前記サブバンドの領域をコードブロックに分割し、分割された前記コードブロック毎に、処理対象の係数データに隣接する周囲のバイナリ係数データの値および状態に応じて、処理対象の前記係数データの状態を遷移させ、遷移された前記係数データの状態に従って、符号化パスを選択し、選択された符号化パスに従って、生成されたコードブロック毎に、前記係数データを符号化する符号化方法である。
本発明の一側面においては、画像データがサブバンド毎の係数データに変換され、変換された係数データのサブバンドの領域がコードブロックに分割され、分割されたコードブロック毎に、処理対象の係数データに隣接する周囲のバイナリ係数データの値および状態に応じて、処理対象の係数データの状態が遷移され、遷移された係数データの状態に従って、符号化パスが選択され、選択された符号化パスに従って、生成されたコードブロック毎に、係数データが符号化される。
本発明によれば、画像を符号化することができる。特に、より高速に画像を符号化することができる。
以下、発明を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
1.第1の実施の形態(画像符号化装置)
2.第2の実施の形態(画像符号化装置)
3.第3の実施の形態(パーソナルコンピュータ)
1.第1の実施の形態(画像符号化装置)
2.第2の実施の形態(画像符号化装置)
3.第3の実施の形態(パーソナルコンピュータ)
<1.第1の実施の形態>
[画像符号化装置の構成]
図1は、本発明を適用した画像符号化装置の一実施の形態の構成を表している。図1に示される画像符号化装置100は、画像データをJPEG(Joint Photographic Experts Group)2000の方式で、可逆または非可逆に、符号化する符号化装置である。
[画像符号化装置の構成]
図1は、本発明を適用した画像符号化装置の一実施の形態の構成を表している。図1に示される画像符号化装置100は、画像データをJPEG(Joint Photographic Experts Group)2000の方式で、可逆または非可逆に、符号化する符号化装置である。
画像符号化装置100は、画像データをウェーブレット変換し、得られた係数を、コードブロック毎にビットプレーンに展開し、ビットプレーン毎にエントロピ符号化する。
画像符号化装置100は、特にJPEG2000規格で定められたEBCOT(Embedded Coding with Optimized Truncation)と呼ばれるエントロピ符号化を行う(参考文献:IS0/IEC 15444-1, Information technology-JPEG 2000, Part 1:Core coding system)。
このEBCOT(Embedded Block Coding with Optimized Truncation)と呼ばれるエントロピ符号化は、ビットプレーン展開されたバイナリデータを1ピクセル単位にモデリングしながら算術符号化する技術である。
従来、この処理は、逐次処理を行う上、上位のビットプレーンの結果が下位のビットプレーンの結果に影響する「依存性」が存在するため、コードブロック内部の並列化が困難とされてきた。つまり、大きな解像度の画像のエンコードや可逆圧縮の場合、如何にしてJPEG2000の計算負荷、特にEBCOTの高速化を実現できるかが、鍵であった。
そこで、画像符号化装置100は、EBCOTにおいて、ビットモデリング結果に関わらず、MQ符号化(算術符号化)を実行するようにすることにより、符号化パス内での条件分岐の削除を実現する。より具体的には、画像符号化装置100は、コードブロック内の係数が持つ状態の遷移を新たに定義することで、従来、処理速度のネックになっていた条件分岐を不要にした。これにより、画像符号化装置100は、EBCOTの高速化、すなわち、JPEG2000の計算負荷の軽減を実現することができる。
図1に示されるように、画像符号化装置100は、ウェーブレット変換部101、量子化部102、コードブロック化部103、ビットプレーン展開部104、EBCOT105、および符号化コードストリーム生成部106を有する。
ウェーブレット変換部101は、通常、低域フィルタと高域フィルタから構成されるフィルタバンクによって実現される。また、デジタルフィルタは通常複数タップ長のインパルス応答(フィルタ係数)を有するので、ウェーブレット変換部101は、フィルタリングが行えるだけの入力画像を予めバッファリングするバッファを有する。
ウェーブレット変換部101は、入力された画像データ(矢印131)を、フィルタリングに最低限必要なデータ量以上取得する。ウェーブレット変換部101は、その画像データに対して、例えば5×3ウェーブレット変換フィルタを用いてフィルタリングを行い、ウェーブレット係数を生成する。なお、ウェーブレット変換部101は、画像の垂直方向および水平方向のそれぞれに対して、画像データを低域成分と高域成分に分離するフィルタリングを行う。
そして、ウェーブレット変換部101は、このようなフィルタリング処理を、図2に示されるように、垂直方向および水平方向の両方において低域成分として分離されたサブバンドに対して再帰的に所定回数繰り返す。これは、画像のエネルギーの多くが低域成分に集中しているからである。
図2は、分割レベル数3のウェーブレット変換処理により生成されるサブバンドの構成例を示す図である。この場合、ウェーブレット変換部101は、まず、画像全体をフィルタリングし、サブバンド3LL(図示せず)、3HL、3LH、および3HHを生成する。次に、ウェーブレット変換部101は、生成されたサブバンド3LLに対して再度フィルタリングを行い、2LL(図示せず)、2HL、2LH、および2HHを生成する。さらに、ウェーブレット変換部101は、生成されたサブバンド2LLに対して再度フィルタリングを行い、1LL、1HL、1LH、および1HHを生成する。
なお、ウェーブレット変換の分割レベル数は任意である。
図1に戻り、ウェーブレット変換部101は、フィルタリングにより得られた係数データ(ウェーブレット係数)を、サブバンド毎に、量子化部102に供給する(矢印132)。
量子化部102は、供給された係数データ(ウェーブレット係数)を量子化する。量子化部102は、得られた係数データ(量子化係数)を、コードブロック化部103に供給する(矢印133)。なお、JPEG2000の規格では、可逆圧縮の場合、量子化処理は省略される。その場合、ウェーブレット変換部101より出力された係数データ(ウェーブレット係数)は、コードブロック化部103に供給される(矢印134)。
コードブロック化部103は、供給された係数データを、予め定められた所定の大きさの矩形の、エントロピ符号化の処理単位であるコードブロックに分割する。JPEG2000の規格上の定義によって、コードブロックの縦・横サイズはどのサブバンドにおいても一定である。但し画像(サブバンド)の両端や上端・下端などでは、同じサイズのコードブロックが取れないケースも多々ある。
図3は、図2を参照して説明した各サブバンド中のコードブロックの位置関係を示したものである。例えば64×64画素程度のサイズのコードブロックが、分割後のすべてのサブバンド中に生成される。例えば、最も分割レベルが小さい3HHのサブバンドの大きさが例えば640×320画素であるとすると、64×64画素のコードブロックは合計50個存在することになる。後段の各処理部は、このコードブロック毎に処理を行う。もちろん、このコードブロックのサイズ(画素数)は任意である。
図1に戻り、コードブロック化部103は、係数データをコードブロック毎にビットプレーン展開部104に供給する(矢印135)。
ビットプレーン展開部104は、供給されたコードブロック毎の係数データを、ビットの位毎のビットプレーンに展開する。
ビットプレーンは、所定の数のウェーブレット係数よりなる係数群(例えばコードブロック)を、1ビット毎、つまり位毎に分割(スライス)したものである。つまり、ビットプレーンは、それぞれが複数ビットのビット深度を持つ複数のデータの、互いに同一の位のビット(係数ビット)の集合である。したがって、展開されるビットプレーン数は、各係数のビット深度に依存する。
図4にその具体例を示す。図4の左図は縦4個、横4個の計16個の係数を示している。この16個の係数のうち、絶対値が最大のものは13で、2進数で1101と表現される。ビットプレーン展開部104は、このような係数群を、絶対値を示す4枚のビットプレーン(絶対値のビットプレーン)と、符号を示す1枚のビットプレーン(符号のビットプレーン)に展開する。つまり、図4中左の係数群は、図4中右に示されるように、4枚の絶対値のビットプレーンと1枚の符号のビットプレーンに展開される。ここで、絶対値のビットプレーンの要素はすべて0か1の値をとる。また、符号を示すビットプレーンの要素は、係数の値が正であることを示す値、係数の値が0であることを示す値、または係数の値がマイナスを示す値のいずれかをとる。
なお、このようにビットプレーンとされる係数群における係数の数は任意である。以下においては、処理単位を統一することで各部における処理を容易にするために、ビットプレーン展開部104が、係数をコードブロック毎にビットプレーン展開するものとして説明する。
図1に戻り、ビットプレーン展開部104は、このように展開したビットプレーンを、係数の最上位ビット(MSB:Most Significant Bit)から最下位ビット(LSB:Less Significant Bit)に向かう順に、EBCOT105に供給する。つまり、ビットプレーン展開部104は、ビット深度の上位側から下位側に向かう順に、展開したビットプレーンをEBCOT105に供給する(矢印136)。
EBCOT105は、所定の大きさのブロック毎にそのブロック内の係数の統計量を測定しながら符号化を行う。EBCOT105は、量子化係数をコードブロック単位に、エントロピ符号化する。各コードブロックは、最上位ビット(MSB)から最下位ビット(LSB)方向にビットプレーン毎に独立して符号化される。コードブロックの縦横のサイズは4から256までの2のべき乗で、通常使用される大きさは、32x32、64x64、または128x32等がある。量子化係数値がnビットの符号付き2進数で表されていて、bit 0からbit n-1がLSBからMSBまでのそれぞれのビットを表すとする。残りの1ビットは符号である。コードブロックの符号化は、MSB側のビットプレーンから順番に、次の3種類の符号化パスによって行われる。
(1)Significant Propagation Pass
(2)Magnitude Refinement Pass
(3)Cleanup Pass
(2)Magnitude Refinement Pass
(3)Cleanup Pass
3つの符号化パスの用いられる順序は、図5で示される。最初にBit-plane(n-1)(MSB)がCleanup Passによって符号化される。続いて順次LSB側に向かい、各ビットプレーンの符号化が、3つの符号化パスをSignificant Propagation Pass、Magnitude Refinement Pass、Cleanup Passの順序で用いて行われる。
ただし、実際にはMSB側から何番目のビットプレーンで初めて1が出てくるかをヘッダに書き、MSB側から連続するオール0のビットプレーン(ゼロビットプレーンと呼ぶ)は符号化しない。この順序で3種類の符号化パスを繰返し用いて符号化し、任意のビットプレーンの、任意の符号化パス迄で符号化を打ち切ることにより、符号量と画質のトレードオフを取る(レート制御を行う)。
次に、係数の走査(スキャニング)について図6を用いて説明する。コードブロックは高さ4個の係数毎にスプライト(sprite)に分けられる。スプライトの幅はコードブロックの幅に等しい。スキャン順とは、1個のコードブロック内の、すべての係数をたどる順番で、コードブロック中では上のスプライトから下のスプライトへの順序、スプライトの中では、左の列から右の列へ向かっての順序、列の中では上から下へという順序である。各符号化パスにおいてコードブロック中のすべての係数が、このスキャン順で処理される。
以下、3つの符号化パスについて述べる。以下はいずれもJPEG-2000規格書(参考文献:IS0/IEC 15444-1, Information technology-JPEG 2000, Part 1:Core coding system)に記述されている内容である。
(1)Significance Propagation Pass(SPパス):
あるビットプレーンを符号化するSignificance Propagation Passでは、8近傍の少なくとも1つの係数が有意(significant)であるようなnon-significant係数のビットプレーンの値を算術符号化する。その符号化したビットプレーンの値が1である場合は、符号が+であるか、−であるかを続けてMQ符号化する。
あるビットプレーンを符号化するSignificance Propagation Passでは、8近傍の少なくとも1つの係数が有意(significant)であるようなnon-significant係数のビットプレーンの値を算術符号化する。その符号化したビットプレーンの値が1である場合は、符号が+であるか、−であるかを続けてMQ符号化する。
ここでsignificanceというJPEG2000特有の用語について説明する。significanceとは、各係数に対して符号化器が持つ状態で、significanceの初期値はnon-significantを表す0、その係数で1が符号化されたときにsignificantを表す1に変化し、以降常に1であり続けるものである。従って、significanceとは有効桁の情報を既に符号化したか否かを示すフラグとも言える。あるビットプレーンでsignificantになれば、以降のビットプレーンではsignificantになったままである。
(2)Magnitude Refinement Pass(MRパス):
ビットプレーンを符号化するMagnitude Refinement Passでは、ビットプレーンを符号化する Significance Propagation Passで、且つ符号化していないsignificantな係数のビットプレーンの値をMQ符号化する。
ビットプレーンを符号化するMagnitude Refinement Passでは、ビットプレーンを符号化する Significance Propagation Passで、且つ符号化していないsignificantな係数のビットプレーンの値をMQ符号化する。
(3)Cleanup Pass(CUパス):
ビットプレーンを符号化するCleanup Passでは、ビットプレーンを符号化するSignificance Passで、且つ符号化していないnon-significantな係数のビットプレーンの値をMQ符号化する。その符号化したビットプレーンの値が1である場合は符号が+であるか−であるか(Sign情報)を続けてMQ符号化する。
ビットプレーンを符号化するCleanup Passでは、ビットプレーンを符号化するSignificance Passで、且つ符号化していないnon-significantな係数のビットプレーンの値をMQ符号化する。その符号化したビットプレーンの値が1である場合は符号が+であるか−であるか(Sign情報)を続けてMQ符号化する。
尚、以上の3つの符号化パスでのMQ符号化では、ケースに応じて、ZC(Zero Coding)、RLC(Run-Length Coding)、SC(Sign Coding)、およびMR(Magnitude Refinement)が使い分けられる。ここでMQ符号化と呼ばれる算術符号が用いられる。MQ符号化は、JBIG2(参考文献:ISO/IEC FDIS 14492, “Lossy/Lossless Coding of Bi-level Images”, March 2000)で規定された学習型の2値算術符号である。
つまり、図1に示されるように、EBCOT105は、ビットモデリングを行うビットモデリング部111と、算術符号化を行うMQ符号化部112とを有する。
ビットモデリング部111は、状態遷移生成部121、状態遷移テーブル122、選択部123、CUパス(Cleanup Pass)部124、SPパス(Significant Propagation Pass)部125、およびMRパス(Magnitude Refinement Pass)部126を有する。
本発明では、ビットモデリング部111においてビットモデリングを行う際に必須となる、係数の持つ状態の遷移を効率的に実行することにより、EBCOTを高速に実行させる。
EBCOTのビットモデリングには、以下の特徴がある。
(1)コードブロックの各係数は、必ず「状態」を保持する。
(2)その「状態」は、係数がどの符号化パスで、どの様にエンコードされるかを規定する。
(3)その「状態」はエンコード中に、周囲の係数や周囲の「状態」によって遷移する。
(1)コードブロックの各係数は、必ず「状態」を保持する。
(2)その「状態」は、係数がどの符号化パスで、どの様にエンコードされるかを規定する。
(3)その「状態」はエンコード中に、周囲の係数や周囲の「状態」によって遷移する。
ビットモデリング部111は、各係数の持つ「状態」を定義するために、以下の4つのパラメータを設ける。
1.正負符号(Sign)
2.状態変数1(Status-0)
3.状態変数2(Status-1)
4.有効(Sig)
1.正負符号(Sign)
2.状態変数1(Status-0)
3.状態変数2(Status-1)
4.有効(Sig)
なお、このうち、正負符号(Sign)の変数は省略することができる。図7は、このパラメータの内の正負符号を除く3つの変数に対して、7つの状態を定義したものである(正負符号が不要な理由は、図4で示した様に、正負符号を表すSignビットプレーンは別にエンコードされるためである)。
従来のEBCOTの場合、CUパス、SPパス、MRパスの3つしか存在しないが、ビットモデリング部111は、各符号化パスに遷移する前の段階も定義する。各状態の意味は図7に示されるテーブルの通りである。
状態1:CUパスでエンコードする。
状態2:無効なサンプルである。
状態3:周囲に有意なサンプルがあり、且つ現在のビットプレーンで未エンコード時にはCUパスでエンコードする。
状態4:周囲に有意なサンプルがあり、SPパスでエンコードする。
状態5:有意であり、且つ既に現在のビットプレーンはSPパスでエンコード済みである。
状態6:有意であり、MRパスでエンコードする。次のMRパスは1回目である。
状態7:有意であり、MRパスでエンコードする。次のMRパスは2回目である。
状態2:無効なサンプルである。
状態3:周囲に有意なサンプルがあり、且つ現在のビットプレーンで未エンコード時にはCUパスでエンコードする。
状態4:周囲に有意なサンプルがあり、SPパスでエンコードする。
状態5:有意であり、且つ既に現在のビットプレーンはSPパスでエンコード済みである。
状態6:有意であり、MRパスでエンコードする。次のMRパスは1回目である。
状態7:有意であり、MRパスでエンコードする。次のMRパスは2回目である。
CUパスでの符号化は従来の場合と基本的に同様であるが、SPパスは、CUパスからSPパスに移行する前段階のPreSPと、SPパスを実行する2つの状態に分割されている。また、MRパスは、MRパス以前でMRパスを行わないPreMRの他、MRパスを実行する内、1回目と2回目以降とで、MR1stとMR2ndとに分割されている。このように、ビットモデリング部111は、従来の3つの符号化パスを細分化して、各状態間の状態遷移を定義している。
図1に戻り、状態遷移生成部121は、このテーブルを用いることにより、上述した3つの変数の値から、係数データの状態を求めることができる。
状態遷移生成部121は、各係数の状態を保持するとともに、その状態の遷移を管理する。例えば、状態遷移生成部121は、状態遷移テーブル122を参照しながら、処理対象の係数に隣接する周囲のバイナリ係数値とその状態等の各種条件に応じて、処理対象の係数や周囲の係数の状態を遷移させる(矢印137および矢印138)。状態遷移の条件と遷移内容は、状態遷移テーブル122として、例えば図8に示されるように、予め定義されている。
つまり、状態遷移は、以下のように行われる。
(1)CUパスにて周囲の係数のいずれかが有意になった場合、CUからPreSPに遷移する。
(2)CUパスにてその注目係数が有意になった場合、CUからPreMRに遷移する。
(3)SPパスにてエンコードの直前において、PreSPからSPに遷移する。
(4)CUパスにて有意になった場合、PreSPからPreMRに遷移する。
(5)SPパスにて有意になった場合、SPからPreMRに遷移する。
(6)1つのビットプレーンのエンコードが終了すると、PreMRからMR1stに遷移する。
(7)1つのビットプレーンのエンコードが終了すると、MR1stからMR2ndに遷移する。
(1)CUパスにて周囲の係数のいずれかが有意になった場合、CUからPreSPに遷移する。
(2)CUパスにてその注目係数が有意になった場合、CUからPreMRに遷移する。
(3)SPパスにてエンコードの直前において、PreSPからSPに遷移する。
(4)CUパスにて有意になった場合、PreSPからPreMRに遷移する。
(5)SPパスにて有意になった場合、SPからPreMRに遷移する。
(6)1つのビットプレーンのエンコードが終了すると、PreMRからMR1stに遷移する。
(7)1つのビットプレーンのエンコードが終了すると、MR1stからMR2ndに遷移する。
図1に戻り、状態遷移生成部121は、以上のような状態遷移の発生に関する情報を、係数データ等とともに、選択部123に供給する(矢印139)。
選択部123は、状態遷移の有無やその内容に応じて、状態遷移生成部121に接続される端子123Aの接続先を、端子123B−1乃至端子123B−3の中からいずれか1つ選択する(端子123Aを選択した端子123Bに接続する)。
端子123B−1は、CUパス部124に接続され、端子123B−2は、SPパス部125に接続され、端子123B−3は、MRパス部126に接続される。つまり、選択部123は、状態遷移生成部121の接続先を、CUパス部124、SPパス部125、およびMRパス部126の中から選択する。係数データは、選択された符号化パスに供給される。
CUパス部124は、係数データ等が供給されると(矢印140)、それらを用いてCUパスによってコンテキストやラベルの決定を行う。CUパス部124は、生成したコンテキストやラベル等の情報をMQ符号化部112に供給する(矢印143)。
SPパス部125は、係数データ等が供給されると(矢印141)、それらを用いてSPパスによってコンテキストやラベルの決定を行う。SPパス部125は、生成したコンテキストやラベル等の情報をMQ符号化部112に供給する(矢印144)。
MRパス部126は、係数データ等が供給されると(矢印142)、それらを用いてMRパスによってコンテキストやラベルの決定を行う。MRパス部126は、生成したコンテキストやラベル等の情報をMQ符号化部112に供給する(矢印145)。
MQ符号化部112は、ビットモデリング部111の各符号化パス(CUパス部124、SPパス部125、およびMRパス部126)より供給される、コンテキストやラベル等の情報に基づいてMQ符号化を行う。このときMQ符号化部112は、各符号化パスにおける計算結果に関わらず、MQ符号化を行う。
MQ符号化部112は、算術符号化結果を符号化コードストリーム生成部106に供給する(矢印146)。
符号化コードストリーム生成部106は、EBCOT105(MQ符号化部112)から供給された符号化データを整列し、1つのコードストリームとして出力する(矢印147)。
[処理の流れ]
次に、このような画像符号化装置100により実行される符号化処理の流れの例を図9のフローチャートを参照して説明する。
次に、このような画像符号化装置100により実行される符号化処理の流れの例を図9のフローチャートを参照して説明する。
符号化処理が開始されると、ウェーブレット変換部101は、ステップS101において、1ピクチャ分の画像データをウェーブレット変換する。ステップS102において、量子化部102は、ステップS101において生成された係数データを量子化する。なお、可逆符号化の場合、このステップS102の処理は省略される。
ステップS103において、コードブロック化部103は、係数データをコードブロック化する。ステップS104において、ビットプレーン展開部104は、係数データをビットプレーン展開する。
ステップS105において、EBCOT105は、EBCOT処理を実行し、係数データを符号化する。
ステップS106において、符号化コードストリーム生成部106は、EBCOT105において生成された符号化データを整列してコードストリームを生成し、出力する。ステップS106の処理が終了すると、符号化処理が終了される。
なお、この符号化処理は、ピクチャ毎に行われる。
次に、図10のフローチャートを参照して、図9のステップS105において行われるEBCOT処理の詳細について説明する。
EBCOT処理が開始されると、状態遷移生成部121は、ステップS121において、コードブロックの係数の状態を初期化する。ステップS122において、選択部123は、状態や係数に応じてパスを選択する。ステップS123において、選択部123は、CUパスを選択したか否かを判定する。
CUパスを選択したと判定された場合、ステップS124に進む。ステップS124において、CUパス部124およびMQ符号化部112は、CUパスにより符号化を行うCUパス処理を実行する。CUパス処理が終了すると、ステップS128に進む。
また、ステップS123において、CUパスを選択していないと判定された場合、ステップS125に進む。ステップS125において、選択部123は、SPパスを選択したか否かを判定する。
SPパスを選択したと判定された場合、ステップS126に進む。ステップS126において、SPパス部125およびMQ符号化部112は、SPパスにより符号化を行うSPパス処理を実行する。SPパス処理が終了すると、ステップS128に進む。
また、ステップS125において、SPパスを選択していないと判定された場合、ステップS127に進む。ステップS127において、MRパス部126およびMQ符号化部112は、MRパスにより符号化を行うMRパス処理を実行する。MRパス処理が終了すると、ステップS128に進む。
ステップS128において、EBCOT105は、EBCOT処理を終了するか否かを判定する。未処理の係数データが存在し、EBCOT処理を終了しないと判定された場合、ステップS122に戻り、それ以降の処理が繰り返される。また、ステップS128において、ピクチャ内の全ての係数データを処理したと判定された場合、EBCOT処理を終了し、図9のステップS105に戻り、ステップS106以降の処理を実行する。
次に、図10のステップS124において実行されるCUパス処理の流れの例を、図11および図12のフローチャートを参照して説明する。なお、スプライトの横サイズを64、縦サイズを4とする。また、図11および図12において、点線矢印は、データの依存関係を示す。
CUパスでは、スプライト内の縦方向の係数群(図6の例の場合、4係数)が上から下方向の順番に走査されながら、この係数群(4係数)毎に以下の計算(ステップS141乃至ステップS148)が行われる。
ステップS141において、CUパス部124は、ランレングス符号化(RLC(Run length coding))の結果が0である計算を行う。この計算が成功した場合、計算結果はFFとなる。また、この計算が失敗した場合、計算結果は00となる。これらの計算結果は、ステップS145の処理に影響を与える。
ステップS141の処理が終了するとステップS142に進む。ステップS142において、CUパス部124は、ランレングス符号化(RLC(Run length coding))の結果が1である計算を行う。この計算が成功した場合、計算結果はFFとなる。また、この計算が失敗した場合、計算結果は00となる。これらの計算結果は、ステップS146乃至ステップS148の処理に影響を与える。
ステップS142の処理が終了するとステップS143に進む。ステップS143において、CUパス部124は、1番目のUNIFORMエンコードの計算を行う。エンコード対象は0または1である。この計算結果は、ステップS147の処理に影響を与える。
ステップS143の処理が終了するとステップS144に進む。ステップS144において、CUパス部124は、2番目のUNIFORMエンコードの計算を行う。エンコード対象は0または1である。この計算結果は、ステップS148の処理に影響を与える。
CUパスの処理において、ステップS141における、RLCの処理を実行するか否かが最初の分岐点である。ただし、図11に示されるように、本発明においては、RLCの結果が1である計算と0である計算のいずれも行う。そしてその結果(FFまたは00)を見ることで、MQ符号化部112は、実際にRLCが有効であったか否かを自動的に判別することができる。
ステップS144の処理が終了するとステップS145に進む。MQ符号化部112は、ステップS145において、RLCコンテキストで値0をMQ符号化し、ステップS146において、RLCコンテキストで値1をMQ符号化する。
また、MQ符号化部112は、ステップS147において、UNIFORMコンテキストで1回目のMQ符号化を行い、ステップS148において、UNIFORMコンテキストで2回目のMQ符号化を行う。
図11のステップS148の処理が終了すると、図12のステップS161に進む。CUパスでは、上述した係数群(4係数)内の各係数に対して以下の計算(ステップS161乃至ステップS167)が行われる。
ステップS161において、CUパス部124は、CUエンコードを行うか否かの計算を行う。例えば、CUエンコードを行う場合、計算結果はFFとなり、CUエンコードを行わない場合、計算結果は00となる。この計算結果は、ステップS163のMQ符号化に用いられる。
ステップS161の処理が終了するとステップS162に進む。ステップS162において、CUパス部124は、Significanceコンテキストの計算を行う。ステップS163において、MQ符号化部112は、SignificanceコンテキストでSymbolをMQ符号化する。
ステップS163の処理が終了するとステップS164に進む。ステップS164において、CUパス部124は、Signエンコードするか否かの計算を行う。例えば、Signエンコードを行う場合、計算結果はFFとなり、Signエンコードを行わない場合、計算結果は00となる。この計算結果は、ステップS166のMQ符号化に用いられる。また、この計算結果は、ステップS167の状態の更新にも用いられる。
ステップS164の処理が終了するとステップS165に進む。ステップS165において、CUパス部124は、Signコンテキストの計算を行う。ステップS166において、MQ符号化部112は、SignコンテキストでSignをMQ符号化する。
ステップS167において、状態遷移生成部121は、Signエンコードするか否かの計算結果に基づいて、周囲8係数の状態をPreSPに更新し、現在の係数の状態をPreMRに更新する。具体的には、周囲8係数の内のどれかの係数が1になり、且つ周囲の係数がPreSPに書き換えられた場合、現在の係数がCUからPreSPに遷移する。また、現在の係数が1になり、且つ現在の係数がPreMRに書き換えられた場合、現在の係数がCUからPreMRに遷移する。
ステップS168において、CUパス部124は、処理対象の係数群(4係数)内の全ての係数を処理したか否かを判定する。未処理の係数が存在すると判定された場合、ステップS161に戻り、それ以降の処理を繰り返す。
また、ステップS168において、処理対象の係数群(4係数)内の全ての係数が処理されたと判定された場合、ステップS169に進む。ステップS169において、CUパス部124は、処理対象ビットプレーンの全てのスプライトの全係数を処理したか否かを判定する。未処理の係数が存在すると判定された場合、図11のステップS141に戻り、それ以降の処理を繰り返す。
また、図12のステップS169において、全ての係数を処理したと判定された場合、ステップS170に進む。CUパスは、図5に示される様に、必ず1つのビットプレーンの最後に行われる。したがって、CUパス処理の最後のステップS170において、状態遷移生成部121は、全ての係数について、MR1stからMR2ndに、PreMRからMR1stに、それぞれ状態を更新する。
ステップS170の処理が終了すると、CUパス処理が終了され、図10のステップS124に戻り、ステップS128以降の処理が行われる。
以上のCUパス処理において、例えば、RLCの結果が1である計算を行って(ステップS142)、その結果出力される符号がFFの場合、その計算が有効であったことを示している。尚、この場合には、RLCの結果が0である計算を行っても(ステップS141)、その計算結果は00(無効)であることは自明である。(結果が1と0は背反なため)。
また、以上のRLCの結果が1である計算が有効だった場合、UNIFORMエンコードの計算が2回に渡って実行されるが、いずれの場合でもエンコード対象は0または1である。また、以上の2つのケース以外のケースとしてRLCを一切行わないモードも存在する。
以下に3つのケースについて、図11のステップS141乃至ステップS148の各処理の実行の様子を説明する。
最初に、図13を参照し、RLCの結果が0の場合の、実際に動作が発生する処理について説明する。
≪ケース1(RLCの結果が0の場合≫
(1)RLCの結果が0である計算を実行する(ステップS141)と、その結果はFFになる。
(2)RLCの結果が1である計算を実行する(ステップS142)と、その結果は00になる。
(3)1番目のUNIFORMエンコードの計算を実行しても(ステップS143)、その符号語は発生しない。
(4)2番目のUNIFORMエンコードの計算を実行しても(ステップS144)、その符号語は発生しない。
(5)RLCコンテキストで値0をMQ符号化して(ステップS145)、符号語を出力する。
(6)RLCコンテキストで値1をMQ符号化しても(ステップS146)、符号語は発生しない。
(7)UNIFORMコンテキストでMQ符号化を行っても(1番目)(ステップS147)、符号語は発生しない。
(8)UNIFORMコンテキストでMQ符号化を行っても(2番目)(ステップS148)、符号語は発生しない。
(1)RLCの結果が0である計算を実行する(ステップS141)と、その結果はFFになる。
(2)RLCの結果が1である計算を実行する(ステップS142)と、その結果は00になる。
(3)1番目のUNIFORMエンコードの計算を実行しても(ステップS143)、その符号語は発生しない。
(4)2番目のUNIFORMエンコードの計算を実行しても(ステップS144)、その符号語は発生しない。
(5)RLCコンテキストで値0をMQ符号化して(ステップS145)、符号語を出力する。
(6)RLCコンテキストで値1をMQ符号化しても(ステップS146)、符号語は発生しない。
(7)UNIFORMコンテキストでMQ符号化を行っても(1番目)(ステップS147)、符号語は発生しない。
(8)UNIFORMコンテキストでMQ符号化を行っても(2番目)(ステップS148)、符号語は発生しない。
以上のように、RLCの結果が0の場合、ステップS141乃至ステップS148の各処理が行われるが、実際に符号語を発生するのは、(5)(ステップS145の処理)だけである。
次に、図14を参照し、RLCの結果が1の場合の、実際に動作が発生する処理について説明する。
≪ケース2(RLCの結果が1の場合)≫
(1)RLCの結果が0である計算を実行する(ステップS141)と、その結果は00になる。
(2)RLCの結果が1である計算を実行する(ステップS142)と、その結果はFFになる。
(3)1番目のUNIFORMエンコードの計算を実行して(ステップS143)、符号語を発生させる。
(4)2番目のUNIFORMエンコードの計算を実行して(ステップS144)、符号語を発生させる。
(5)RLCコンテキストで値0をMQ符号化しても(ステップS145)、符号語は発生しない。
(6)RLCコンテキストで値1をMQ符号化して(ステップS146)、符号語を出力する。
(7)UNIFORMコンテキストでMQ符号化を行って(1番目)(ステップS147)、符号語を出力する。
(8)UNIFORMコンテキストでMQ符号化を行って(2番目)(ステップS148)、符号語を出力する。
(1)RLCの結果が0である計算を実行する(ステップS141)と、その結果は00になる。
(2)RLCの結果が1である計算を実行する(ステップS142)と、その結果はFFになる。
(3)1番目のUNIFORMエンコードの計算を実行して(ステップS143)、符号語を発生させる。
(4)2番目のUNIFORMエンコードの計算を実行して(ステップS144)、符号語を発生させる。
(5)RLCコンテキストで値0をMQ符号化しても(ステップS145)、符号語は発生しない。
(6)RLCコンテキストで値1をMQ符号化して(ステップS146)、符号語を出力する。
(7)UNIFORMコンテキストでMQ符号化を行って(1番目)(ステップS147)、符号語を出力する。
(8)UNIFORMコンテキストでMQ符号化を行って(2番目)(ステップS148)、符号語を出力する。
以上のように、RLCの結果が1の場合、ステップS141乃至ステップS148の各処理が行われるが、実際に符号語を発生するのは、(3)(ステップS143)、(4)(ステップS144)、(6)(ステップS146)、(7)(ステップS147)、および(8)(ステップS148)である。
次に、図15を参照し、RLCを行わない場合の、実際に動作が発生する処理について説明する。
≪ケース3(RLCを行わない場合)≫
(1)RLCの結果が0である計算を実行する(ステップS141)と、その結果は00になる。
(2)RLCの結果が1である計算を実行する(ステップS142)と、その結果は00になる。
(3)1番目のUNIFORMエンコードの計算を実行しても(ステップS143)、符号語は発生しない。
(4)2番目のUNIFORMエンコードの計算を実行しても(ステップS144)、符号語は発生しない。
(5)RLCコンテキストで値0をMQ符号化しても(ステップS145)、符号語は発生しない。
(6)RLCコンテキストで値1をMQ符号化しても(ステップS146)、符号語は発生しない。
(7)UNIFORMコンテキストでMQ符号化を行っても(1番目)(ステップS147)、符号語は発生しない。
(8)UNIFORMコンテキストでMQ符号化を行っても(2番目)(ステップS148)、符号語は発生しない。
(1)RLCの結果が0である計算を実行する(ステップS141)と、その結果は00になる。
(2)RLCの結果が1である計算を実行する(ステップS142)と、その結果は00になる。
(3)1番目のUNIFORMエンコードの計算を実行しても(ステップS143)、符号語は発生しない。
(4)2番目のUNIFORMエンコードの計算を実行しても(ステップS144)、符号語は発生しない。
(5)RLCコンテキストで値0をMQ符号化しても(ステップS145)、符号語は発生しない。
(6)RLCコンテキストで値1をMQ符号化しても(ステップS146)、符号語は発生しない。
(7)UNIFORMコンテキストでMQ符号化を行っても(1番目)(ステップS147)、符号語は発生しない。
(8)UNIFORMコンテキストでMQ符号化を行っても(2番目)(ステップS148)、符号語は発生しない。
以上のように、RLCが行われない場合、ステップS141乃至ステップS148の各処理が行われるが、実際に符号語を発生する処理は存在しない。これは、後述の従来のCUパス処理においてRLCを行わない場合と同様である。
以上において重要な事は、本発明ではMQ符号化を、ビットモデリングの計算結果に関係なく実行している点である。MQ符号化は、例えばある計算結果がFFの場合、実際の有効な符号語を出力するが、その計算結果が00の場合、符号語を出力しない。EBCOT105は、このMQ符号化の特徴を巧みに利用することで条件判定を不要としている。
これに対して従来のCUパス処理の流れは、図16のフローチャートに示されるようになる。
つまり、スプライト内の縦方向の係数群(4係数)に対する処理は、ステップS181乃至ステップS186に示されるように行われる。したがって、RLCを実行するか否か(ステップS181)と、4係数は全て0か否か(ステップS182)の2か所で条件分岐が発生する。
コンピュータシステムでは、条件分岐(if then else)が発生すると、キャッシュのミスヒットやペナルティが発生して、速度の急激な低下を余儀なくされることは、よく知られている事実である。JPEG2000のEBCOTの処理負荷が重く、高速化が困難とされてきた最大の原因の1つが、このような条件分岐の多さである。
これに対して、EBCOT105は、上述したように、スプライト内の縦方向の係数群(4係数)に対する処理(図11のステップS141乃至ステップS148)において、全く条件分岐が発生していない。これにより、EBCOT105は、従来の方法よりも高速に符号化を行うことができる。
なお、付言するに、従来の方法の場合、その後の係数単位のループ処理(図16のステップS187乃至ステップS193)においても、CUエンコードを行うか否かの条件分岐(ステップS187)と、係数が1であるか否かの条件分岐(ステップS190)が存在している。これらの2つの条件分岐は、スプライト内の縦方向の係数群(4係数)の各係数に対して行われる。したがって、これらの条件分岐によるオーバヘッドは、上述したステップS181およびステップS182における条件分岐によるオーバヘッドよりも、さらに大きいものとなる。
これに対して、EBCOT105は、上述したように、各係数に対する処理(図12のステップS161乃至ステップS167)において、全く条件分岐が発生していない。これにより、EBCOT105は、従来の方法よりも高速に符号化を行うことができる。
次に、図10のステップS126において実行されるSPパス処理の流れの例を、図17のフローチャートを参照して説明する。なお、点線矢印は、データの依存関係を示す。
SPパス処理が開始されると、ステップS211において、状態遷移生成部121は、現係数の状態をPreSPからSPに遷移する。ステップS212において、SPパス部125は、SPエンコードを行うか否かの計算を行う。例えば、SPエンコードを行う場合、計算結果はFFとなり、SPエンコードを行わない場合、計算結果は00となる。この計算結果は、ステップS214のMQ符号化に用いられる。
ステップS212の処理が終了するとステップS213に進む。ステップS213において、SPパス部125は、Significanceコンテキストの計算を行う。ステップS214において、MQ符号化部112は、SignificanceコンテキストでSymbolをMQ符号化する。
ステップS214の処理が終了するとステップS215に進む。ステップS215において、SPパス部125は、係数が1であるか否かの計算を行う。例えば、係数が1である場合、計算結果はFFとなり、係数が0である場合、計算結果は00となる。この計算結果は、ステップS217のMQ符号化に用いられる。また、この計算結果は、ステップS218の状態の更新にも用いられる。
ステップS215の処理が終了するとステップS216に進む。ステップS216において、SPパス部125は、Signコンテキストの計算を行う。ステップS217において、MQ符号化部112は、SignコンテキストでSignをMQ符号化する。
ステップS218において、状態遷移生成部121は、係数が1かどうかの計算結果に基づいて、周囲8係数の状態をPreSPに更新し、現在の係数の状態をPreMRに更新する。具体的には、周囲8係数の内のどれかの係数が1になり、且つ周囲の係数がPreSPに書き換えられた場合、現在の係数がCUからPreSPに遷移する。また、現在の係数が1になり、且つ現在の係数がPreMRに書き換えられた場合、現在の係数がCUからPreMRに遷移する。
ステップS219において、SPパス部125は、処理対象の係数群(4係数)内の全ての係数を処理したか否かを判定する。未処理の係数が存在すると判定された場合、ステップS211に戻り、それ以降の処理を繰り返す。
また、ステップS219において、処理対象の係数群(4係数)内の全ての係数が処理されたと判定された場合、ステップS220に進む。ステップS220において、SPパス部125は、処理対象ビットプレーンの全てのスプライトの全係数を処理したか否かを判定する。未処理の係数が存在すると判定された場合、ステップS211に戻り、それ以降の処理を繰り返す。
また、ステップS220において、全ての係数を処理したと判定された場合、SPパス処理が終了され、図10のステップS126に戻り、ステップS128以降の処理が行われる。
このSPパス処理の場合も、CUパスの場合と同様に、MQ符号化が、ビットモデリングの計算結果に関係なく実行される。EBCOT105は、MQ符号化の特徴を巧みに利用することにより、SPパス処理においても条件判定を不要としている。
これに対して従来のSPパス処理の流れは、図18のフローチャートに示されるようになる。
つまり、SPエンコードを行うか否かの条件分岐(ステップS241)と、係数が1であるか否かの条件分岐(ステップS244)が存在している。これらの2つの条件分岐は、スプライト内の縦方向の係数群(4係数)の各係数に対して行われる。したがって、これらの条件分岐によるオーバヘッドによって速度が大幅に低下する恐れがある。
これに対して、EBCOT105は、上述したように、各係数に対する処理(図17のステップS211乃至ステップS218)において、全く条件分岐が発生していない。これにより、EBCOT105は、従来の方法よりも高速に符号化を行うことができる。
次に、図10のステップS127において実行されるMRパス処理の流れの例を、図19のフローチャートを参照して説明する。なお、点線矢印は、データの依存関係を示す。
MRパス処理が開始されると、ステップS261において、MRパス部126は、MRエンコードを行うか否かの計算を行う。例えば、MRエンコードを行う場合、計算結果はFFとなり、MRエンコードを行わない場合、計算結果は00となる。この計算結果は、ステップS263のMQ符号化に用いられる。
ステップS261の処理が終了するとステップS262に進む。ステップS262において、MRパス部126は、MRコンテキストの計算を行う。ステップS263において、MQ符号化部112は、MRコンテキストでSymbolをMQ符号化する。
ステップS263の処理が終了するとステップS264に進む。ステップS264において、MRパス部126は、処理対象の係数群(4係数)内の全ての係数を処理したか否かを判定する。未処理の係数が存在すると判定された場合、ステップS261に戻り、それ以降の処理を繰り返す。
また、ステップS264において、処理対象の係数群(4係数)内の全ての係数が処理されたと判定された場合、ステップS265に進む。ステップS265において、MRパス部126は、処理対象ビットプレーンの全てのスプライトの全係数を処理したか否かを判定する。未処理の係数が存在すると判定された場合、ステップS261に戻り、それ以降の処理を繰り返す。
また、ステップS265において、全ての係数を処理したと判定された場合、MRパス処理が終了され、図10のステップS127に戻り、ステップS128以降の処理が行われる。
このMRパス処理の場合も、CUパスやSPパスの場合と同様に、MQ符号化が、ビットモデリングの計算結果に関係なく実行される。EBCOT105は、MQ符号化の特徴を巧みに利用することにより、MRパス処理においても条件判定を不要としている。
これに対して従来のMRパス処理の流れは、図20のフローチャートに示されるようになる。
つまり、MRエンコードを行うか否かの条件分岐(ステップS281)が存在している。この条件分岐は、スプライト内の縦方向の係数群(4係数)の各係数に対して行われる。したがって、この条件分岐によるオーバヘッドによって速度が大幅に低下する恐れがある。
これに対して、EBCOT105は、上述したように、各係数に対する処理(図19のステップS261乃至ステップS263)において、全く条件分岐が発生していない。これにより、EBCOT105は、従来の方法よりも高速に符号化を行うことができる。
以上のように、EBCOT105は、コードブロック内の係数が持つ状態の遷移を新たに定義することで、これまでEBCOTエンコードで大きな問題点とされてきた係数単位の条件分岐を、事前に求めた計算結果に基づく処理によって完全に不要とすることができる。したがって、画像符号化装置100は、より高速に符号化処理を行うことができる。
<2.第2の実施の形態>
[画像符号化装置の構成]
なお、さらに高速に符号化処理を行うことができるように、複数のコードブロックに対するEBCOTを並列に実行することができるようにしてもよい。
[画像符号化装置の構成]
なお、さらに高速に符号化処理を行うことができるように、複数のコードブロックに対するEBCOTを並列に実行することができるようにしてもよい。
図21は、本発明を適用した画像符号化装置の他の構成例を示すブロック図である。図21に示される画像符号化装置200は、基本的に図1の画像符号化装置100と同様に、画像データをJPEG2000の方式で、可逆または非可逆に、符号化する符号化装置である。
ただし、画像符号化装置200は、複数のコードブロックに対するEBCOTを並列に実行する。
従来、このEBCOTは、逐次処理を行う上、上位のビットプレーンの結果が下位のビットプレーンの結果に影響する「依存性」が存在するため、コードブロック内部の並列化が困難とされてきた。つまり、大きな解像度の画像のエンコードや可逆圧縮の場合、如何にしてJPEG2000の計算負荷、特にEBCOTの高速化を実現できるかが、鍵であった。
そこで、画像符号化装置200は、コードブロックを適切にグループ化して並列演算用係数データを生成し、複数のEBCOTを並列に実行する。これにより、画像符号化装置200は、EBCOTの高速化、すなわち、JPEG2000の計算負荷の軽減を実現することができる。
図21に示されるように、画像符号化装置200は、基本的に図1の画像符号化装置100と同様の構成を有する。すなわち、画像符号化装置200は、図1のウェーブレット変換部101と同様のウェーブレット変換部201、図1の量子化部102と同様の量子化部202、図1のコードブロック化部103と同様のコードブロック化部203、図1のビットプレーン展開部104と同様のビットプレーン展開部204を有する。
ただし、画像符号化装置200は、図1のEBCOT105の代わりにEBCOT208を有し、図1の符号化コードストリーム生成部106の代わりに符号化コードストリーム生成部209を有する。
さらに、画像符号化装置200は、パラメータ生成部205、グループ分け部206、および並列演算用係数データ生成部207を有する。
ウェーブレット変換部201は、入力された画像データ(矢印221)を、例えば5×3ウェーブレット変換フィルタを用いてフィルタリングを行い、ウェーブレット係数を生成する。ウェーブレット変換部201は、フィルタリングにより得られた係数データ(ウェーブレット係数)を、サブバンド毎に、量子化部202に供給する(矢印222)。
量子化部202は、供給された係数データ(ウェーブレット係数)を量子化する。量子化部202は、得られた係数データ(量子化係数)を、コードブロック化部203に供給する(矢印223)。なお、可逆圧縮の場合、量子化処理は省略され、ウェーブレット変換部201より出力された係数データ(ウェーブレット係数)は、コードブロック化部203に供給される(矢印224)。
コードブロック化部203は、供給された係数データを、予め定められた所定の大きさの矩形の、エントロピ符号化の処理単位であるコードブロックに分割する。コードブロック化部203は、係数データをコードブロック毎にビットプレーン展開部204に供給する(矢印225)。また、コードブロック化部203は、各コードブロックに関する情報をパラメータ生成部205に供給する(矢印226)。
ビットプレーン展開部204は、供給されたコードブロック毎の係数データを、ビットの位毎のビットプレーンに展開する。ビットプレーン展開部204は、展開したビットプレーンを、係数の最上位ビット(MSB:Most Significant Bit)から最下位ビット(LSB:Less Significant Bit)に向かう順に、並列演算用係数データ生成部207に供給する。つまり、ビットプレーン展開部204は、ビット深度の上位側から下位側に向かう順に、展開したビットプレーンを並列演算用係数データ生成部207に供給する(矢印230)。また、ビットプレーン展開部204は、このようにビットプレーン展開についての情報をパラメータ生成部205に供給する(矢印227)。
パラメータ生成部205は、コードブロック化部203およびビットプレーン展開部204から供給される情報に基づいて、各コードブロックの特徴を表すパラメータを生成する。
このパラメータとしては、コードブロックの特徴を表すものであればどのようなものであってもよいが、例えば、コードブロックの水平サイズ(h_size)、コードブロックの垂直サイズ(v_size)、サブバンドタイプ(LL,HL,LH.HH)、および、後述するように算出される符号化パス数(num_pass)を含むようにしてもよい。もちろん、これら以外のものがパラメータに含まれていてもよい。
これらのパラメータがどのコードブロックに対応するものであるかは、任意の方法で示されている。例えば、コードブロックの識別情報(コードブロック番号等)により関連付けられるようにしてもよい。
図22は、横軸がコードブロック(CB0乃至CBn:n+1個のCodeblock)、縦軸がビットプレーンを示している。MSBのビットプレーンから連続する、係数が全て0のビットプレーンをゼロビットプレーンと称し、それ以外のビットプレーンを有効ビットプレーンと称する。更に、図22のZero.Bitsは、ゼロビットプレーン数、一方、エンコード以前に定義される最大ビット深度(LSB乃至MSB)をMax.Bitsと定義する。
従って、1つのコードブロックにおいて用いられる符号化パスの数を示す符号化パス数(num_pass)は、以下の式(1)のように算出される。
num_pass=(Max.Bits−Zero.Bits)×3−2 ・・・(1)
図21に戻り、パラメータ生成部205は、以上のように生成したパラメータをグループ分け部206に供給する(矢印228)。
グループ分け部206は、パラメータ生成部205から供給されるパラメータに基づいて、コードブロックのグループ分けを行う。グループ分け部206は、1ピクチャ分のコードブロックについてパラメータを取得する。
図23Aに示される例のように、ピクチャ内のコードブロックのサイズ(水平サイズおよび垂直サイズ)は全てが同一ではない。上述したように、コードブロック化は基本的に同一のサイズ(基本サイズ)とするように行われるが、画像(サブバンド)の両端や上端・下端等において、その基本サイズを確保できない場合がある。このような部分のコードブロックのサイズは、基本サイズより小さいものとなる。
また、上述したように、コードブロック化は係数データに対して行われるので、ピクチャ内の各コードブロックが属するサブバンドは全てが同一ではない。さらに、各コードブロックのゼロビットプレーン数(有効ビットプレーン数)は互いに独立しているので、符号化パス数もコードブロック毎に異なる可能性がある。
グループ分け部206は、ピクチャ内の各コードブロックのパラメータの値を比較し、図23Bに示されるように、全ての値が同一となるコードブロックをグループ化する。
図23Bにおいて、グループ301乃至グループ304は、それぞれ、このようにパラメータによって分類されたコードブロック群である。換言すれば、各グループにおいて、全てのコードブロックの全パラメータの値は、互いに同一である。
グループ分け部206は、各グループが最大16個のコードブロックにより形成されるように、パラメータによって分けたグループを、適宜分割する。図23Cの例に示されるグループ311乃至グループ316は、図23Bの各グループを、コードブロック数が最大16個となるように、さらに分割したものの中の一部である。例えば、図23Cのグループ311乃至グループ313は、図23Bのグループ301をさらに分割したものであり、図23Cのグループ314およびグループ315は、図23Bのグループ302をさらに分割したものである。図23Cのグループ316は、図23Bのグループ304に対応するが、グループ304に属するコードブロックの数が16以下であるので、グループ304と同じコードブロック数である。
図21に戻り、グループ分け部206は、そのグループ分けの情報を、パラメータ等の各コードブロックの情報とともに、並列演算用係数データ生成部207に供給する(矢印229)。
並列演算用係数データ生成部207は、グループ内のコードブロックを並列に演算(エントロピ符号化)することができるように、グループ毎に各コードブロックの係数データを並び替えて並列演算用係数データを生成する。
並列演算用係数データ生成部207は、ビットプレーン展開部204から係数データを取得すると、それをメモリ(図示せず)に保持する。並列演算用係数データ生成部207は、1ピクチャ分の係数データを取得すると(保持すると)、グループ分け部206によるグループ分けに従って、処理対象グループに属する各コードブロックの互いに同位置の係数データを、上から下、左から右の順番に読み出して、メモリ内のレジスタに配置する。並列演算用係数データ生成部207は、この係数データの読み出しを各ビットプレーンについて行う。
図24は、サイズが64×64のコードブロックのグループから、並列演算用係数データを生成する様子の例を示している。図24において、上段のcodeblock0乃至codeblock15は、処理対象グループに属する16個のコードブロックを示している。下段はレジスタに配置された(並び替えられた)係数データを示す。
図24に示されるように、ビットプレーン毎に、各コードブロックの互いに同位置の係数データが8ビット(幅8×高さ1×1ビット)ずつ読み出され、レジスタに配置される。例えば、Sign bitplaneにおいては、codeblock0から8ビットの係数データ321−1が読み出され、codeblock1から8ビットの係数データ321−2が読み出され、codeblock3乃至codeblock14においても同様に読み出しが行われ、codeblock15から8ビットの係数データ321−16が読み出される。それらの係数データ321−1乃至係数データ321−16は、レジスタに並べて配置される。つまり、128ビット(幅128×高さ1×1ビット)の並列演算用係数データとなる(レジスタのサイズは128ビット以上である)。
後述するように、そのレジスタの並列演算用係数データが、各8ビットの係数データ毎に並列化されて符号化されると、次に、codeblock0から次の8ビットの係数データ322−1が読み出され、codeblock1からも次の8ビットの係数データ322−2が読み出され、codeblock3乃至codeblock14においても同様に次の8ビットの係数データの読み出しが行われ、codeblock15からも次の8ビットの係数データ322−16が読み出される。それらの係数データ322−1乃至係数データ322−16は、係数データ321−1乃至係数データ321−16と同様に、レジスタに並べて配置される。つまり、128ビット(幅128×高さ1×1ビット)の並列演算用係数データとなる。
この並列演算用係数データも、各8ビットの係数データ毎に並列化されて符号化される。このような処理が、コードブロック内の全ての係数データに対して行われる。
このとき、同一グループ内のコードブロックは、パラメータ(横サイズ、縦サイズ、符号化パス数(有効ビットプレーン数)、およびサブバンドタイプ)の値がすべて一致している。すなわち、codeblock0乃至codeblock15のそれぞれのサンプル数(64×64=4,096個)やMSB乃至LSBのビットプレーン数等が全て互いに同一である。
つまり、同一グループ内の各コードブロックは、互いに同一の方法で符号化することができるデータ構造になっている。換言すれば、各コードブロックは、最も並列化が容易なデータ構造になっている。
また、互いにデータ構造が同一であるので、上述した並び替えにより、容易に、各コードブロックの係数データを、不足や余り無く並列化するように並び替えることができる。
なお、グループ内のコードブロック数が16個に満たない場合、並列演算用係数データ生成部207は、ダミーデータ(例えばゼロ値)を補充することで対応する(コードブロック数を疑似的に16個にする)。
図21に戻り、並列演算用係数データ生成部207は、並列演算用係数データをEBCOT208に供給する。EBCOT208は、係数データに対してビットモデリングを行い、係数のビットプレーンを算術符号化する。
ただし、EBCOT208は、EBCOT208−1乃至EBCOT208−16を有する。EBCOT208−1乃至EBCOT208−16は、それぞれ、係数データに対してビットモデリングを行い、係数のビットプレーンを算術符号化する。すなわち、EBCOT208は、最大16並列でエントロピ符号化を行う。
なお、EBCOT208−1乃至EBCOT208−16は、それぞれ、図1のEBCOT105と同様の構成を有し、同様にEBCOTを行う。つまり、EBCOT208−1乃至EBCOT208−16は、それぞれ、コードブロック内の係数が持つ状態の遷移を新たに定義することで、これまでEBCOTエンコードで大きな問題点とされてきた係数単位の条件分岐を、事前に求めた計算結果に基づく処理によって完全に不要とすることができる。つまり、EBCOT208−1乃至EBCOT208−16は、それぞれ、より高速にEBCOTを行うことができる。
並列演算用係数データ生成部207は、レジスタの並列演算用係数データを、8ビットずつ、すなわち、各コードブロックから読み出した係数データを、EBCOT208−1乃至EBCOT208−16に供給する(矢印231−1乃至矢印231−16)。
EBCOT208−1乃至EBCOT208−16は、互いに並列に、供給された係数データを符号化し、符号化データを生成する。
図25は、図24の128ビットレジスタ内の係数を、1度に16並列動作させる様子を図示したものである。図中、8ピクセルで区切られたバイナリ値を左端から1ビットずつシフトしながら右端まで処理する。
従来の場合、
手順1:CB0のX→Y→・・・・0
手順2:CB1のX→Y→・・・・0
手順3:CB2のX→Y→・・・・0
・・・・・・・・・・・・・
手順15:CB14のX→Y→・・・・0
手順16:CB15のX→Y→・・・・0
という順番に符号化が行われていた。したがって、手順1乃至手順16に示されるように、16個のコードブロック×8ビット分の時間が必要であった。
手順1:CB0のX→Y→・・・・0
手順2:CB1のX→Y→・・・・0
手順3:CB2のX→Y→・・・・0
・・・・・・・・・・・・・
手順15:CB14のX→Y→・・・・0
手順16:CB15のX→Y→・・・・0
という順番に符号化が行われていた。したがって、手順1乃至手順16に示されるように、16個のコードブロック×8ビット分の時間が必要であった。
これに対して本発明の場合、16個のコードブロックの同一位置にある係数を1度に(並列に)符号化する。
つまり、本発明の場合、
手順1:CB0、CB1、CB2、・・・・・・CB14、CB15のX
手順2:CB0、CB1、CB2、・・・・・・CB14、CB15のY
手順3:CB0、CB1、CB2、・・・・・・CB14、CB15の0
手順4:CB0、CB1、CB2、・・・・・・CB14、CB15の0
手順5:CB0、CB1、CB2、・・・・・・CB14、CB15の0
手順6:CB0、CB1、CB2、・・・・・・CB14、CB15の0
手順7:CB0、CB1、CB2、・・・・・・CB14、CB15の0
手順8:CB0、CB1、CB2、・・・・・・CB14、CB15の0
という順番に符号化が行われる。従って、EBCOT208は、手順1乃至手順8の8ビット分の時間で符号化を行うことができる。つまり、EBCOT208は、従来よりも高速に符号化を行うことができる。
手順1:CB0、CB1、CB2、・・・・・・CB14、CB15のX
手順2:CB0、CB1、CB2、・・・・・・CB14、CB15のY
手順3:CB0、CB1、CB2、・・・・・・CB14、CB15の0
手順4:CB0、CB1、CB2、・・・・・・CB14、CB15の0
手順5:CB0、CB1、CB2、・・・・・・CB14、CB15の0
手順6:CB0、CB1、CB2、・・・・・・CB14、CB15の0
手順7:CB0、CB1、CB2、・・・・・・CB14、CB15の0
手順8:CB0、CB1、CB2、・・・・・・CB14、CB15の0
という順番に符号化が行われる。従って、EBCOT208は、手順1乃至手順8の8ビット分の時間で符号化を行うことができる。つまり、EBCOT208は、従来よりも高速に符号化を行うことができる。
なお、上述したように、EBCOT208−1乃至EBCOT208−16は、それぞれ、条件分岐を省略することができるので、並列化された各処理の処理時間を短縮するとともに、各処理の処理時間の差を低減させることができる。これによりEBCOT208は、さらに、高速に符号化を行うことができる。
図21に戻り、EBCOT208−1乃至EBCOT208−16は、生成した符号化データを符号化コードストリーム生成部209に供給する(矢印232−1乃至矢印232−16)。
符号化コードストリーム生成部209は、EBCOT208−1乃至EBCOT208−16から供給された符号化データを、従来の場合の符号化データの並びと同様の並び順に並べ替え、1つのコードストリームとして出力する(矢印233)。
上述したように、従来の場合、ビットプレーン展開された係数データの各コードブロックが順番に符号化される。符号化コードストリーム生成部209は、このような手順で符号化されて生成された係数データと同じ並び順になるように、各符号化データの順序を並び替える。
この符号化データの並び替えは、例えば、EBCOT208−1乃至EBCOT208−16により生成された各符号化データをメモリに一旦保持し、従来の符号化の順で読み出すことにより行われる。
なお、並列演算用係数データ生成部207によりダミーデータが挿入されてから、符号化が行われた場合、符号化コードストリーム生成部209は、そのダミーデータに対応する符号化データは削除する(コードストリームには含めない)。
[処理の流れ]
以上のような符号化処理の流れの例を図26のフローチャートを参照して説明する。
以上のような符号化処理の流れの例を図26のフローチャートを参照して説明する。
符号化処理が開始されると、ウェーブレット変換部201は、ステップS301において、1ピクチャ分の画像データをウェーブレット変換する。ステップS302において、量子化部202は、ステップS301において生成された係数データを量子化する。なお、可逆符号化の場合、このステップS202の処理は省略される。
ステップS303において、コードブロック化部203は、係数データをコードブロック化する。ステップS304において、ビットプレーン展開部204は、係数データをビットプレーン展開する。
ステップS305において、パラメータ生成部205は、各コードブロックのパラメータ(例えば、h_size,v_size,num_pass、およびsub_type)を生成する。ステップS306において、グループ分け部206は、パラメータに基づいて、各コードブロックのグループ分けを行う。上述したように、グループ分け部206は、パラメータの値が全て一致する最大16個のコードブロックを集めて1つのグループとする。
ステップS307において、並列演算用係数データ生成部207は、ステップS306において生成された各グループの中の未処理のグループから、処理対象のグループを選択する。
ステップS308において、並列演算用係数データ生成部207は、処理対象グループにコードブロックが16個存在するか否かを判定する。存在すると判定された場合、ステップS310に進む。
また、ステップS308において、処理対象グループにコードブロックが16個存在しないと判定された場合、ステップS309に進む。ステップS309において、並列演算用係数データ生成部207は、16個に不足する数分のコードブロックのダミーデータを追加する。並列演算用係数データ生成部207は、例えば、全ての係数値が0のコードブロックをダミーデータとして処理対象グループのコードブロックに追加する。
ステップS309の処理により、処理対象グループのコードブロック数がダミーデータも含めて16個になると、ステップS310に進む。
ステップS310において、並列演算用係数データ生成部207は、処理対象グループの各コードブロックの係数データを用いて並列演算用係数データを生成する。ステップS311において、EBCOT208は、その並列演算用係数データを用いて16並列でエントロピ符号化を行う。
ステップS312において、並列演算用係数データ生成部207は、未処理のグループが存在するか否かを判定する。存在すると判定された場合、ステップS307に戻り、それ以降の処理を繰り返す。また、ステップS312において、ピクチャ内の全てのグループを処理したと判定された場合、ステップS313に進む。
ステップS313において、符号化コードストリーム生成部209は、EBCOT208において生成された符号化データを並び替え、コードストリームを生成し、出力する。ステップS313の処理が終了すると、符号化処理が終了される。
なお、この符号化処理は、ピクチャ毎に行われる。
以上の様に、画像符号化装置200は、各コードブロックの特徴を表すパラメータに基づいて、複数のコードブロックを並列にエントロピ符号化するとともに、符号化における条件分岐を省略する。これにより、画像符号化装置200は、符号化処理の計算負荷をより大きく軽減することができ、より高速に符号化を行うことができる。
[適用例]
なお、以上において、レジスタ長を128ビットとして説明したが、レジスタ長は任意である。また、EBCOTの並列数を16として説明したが、これに限らず、いくつであってもよい。当然、並列数が増えるほど、符号化処理はより高速になる。
なお、以上において、レジスタ長を128ビットとして説明したが、レジスタ長は任意である。また、EBCOTの並列数を16として説明したが、これに限らず、いくつであってもよい。当然、並列数が増えるほど、符号化処理はより高速になる。
なお、図21において、EBCOT208がEBCOT208−1乃至EBCOT208−16を有するように説明したが、これは、実行可能な処理の並列数が16の場合の構成例である。つまり、EBCOT208の構成は、その並列数によって決まる。例えば、並列数がNの場合、EBCOT208は、EBCOT208−1乃至EBCOT208−Nを有する。
ただし、EBCOTの並列数は、レジスタ長と、その処理単位データ量に依存する。例えば、上述したように、レジスタ長が128ビットで、処理単位が8ビットである場合、並列数は128/8=16となる。つまり、EBCOTの並列数Nは、コンピュータまたはハードウェアのデータレジスタ長Lビットを、データ処理単位のビット長Dビットで除算した値(N=L/D)で表すことができる(N,L、およびDは自然数)。
一般的に、コンピュータやハードウェアのデータレジスタ長は最初の設計の段階で決まっている。つまり、EBCOTの最大並列数は、ハードウェアの仕様に依存する場合が多い。図27は、図21の画像符号化装置200を適用するハードウェアの構成例を示す図である。
図27に示される構成は、CBE(Cell Broadband Engine)と称されるプロセッサの中に8個存在するサブプロセッサであるSPE(Synergistic Processing Elements)の構成である。図27に示されるように、SPEにおいては、256KBのLocal Store(キャッシュメモリ)に対して、128ビット単位の読み出しや書き込み(Read/Write)が可能な構成になっている。つまり、これはレジスタ長が128ビットであることに対応している。
また、この128ビットレジスタに対する読み出しや書き込み(Read/Write)は、8ビット×16並列の他、16ビット×8並列、32ビット×4並列が可能になっている。従って、SPEでは16並列が最大並列度であるが、例えば別のコンピュータシステムまたはハードウェアにおいて、4ビット×32並列、2ビット×64並列が可能であることも考えられる。その場合、符号化処理の更なる高速化が実現可能である。
<3.第3の実施の形態>
[パーソナルコンピュータ]
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。この場合、例えば、図28に示されるようなパーソナルコンピュータとして構成されるようにしてもよい。
[パーソナルコンピュータ]
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。この場合、例えば、図28に示されるようなパーソナルコンピュータとして構成されるようにしてもよい。
図28において、パーソナルコンピュータ500のCPU(Central Processing Unit)501は、ROM(Read Only Memory)502に記憶されているプログラム、または記憶部513からRAM(Random Access Memory)503にロードされたプログラムに従って各種の処理を実行する。RAM503にはまた、CPU501が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU501、ROM502、およびRAM503は、バス504を介して相互に接続されている。このバス504にはまた、入出力インタフェース510も接続されている。
入出力インタフェース510には、キーボード、マウスなどよりなる入力部511、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部512、ハードディスクなどより構成される記憶部513、モデムなどより構成される通信部514が接続されている。通信部514は、インターネットを含むネットワークを介しての通信処理を行う。
入出力インタフェース510にはまた、必要に応じてドライブ515が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア521が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部513にインストールされる。
上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
この記録媒体は、例えば、図28に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc - Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini Disc)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア521により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM502や、記憶部513に含まれるハードディスクなどで構成される。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数のデバイス(装置)により構成される装置全体を表すものである。
また、以上において、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。つまり、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
本発明は、例えば、デジタルシネマ用編集装置、アーカイブシステム、放送局の画像伝送装置、画像データベース、医用画像の記録システム、ネットワークサーバ、ノンリニア編集装置、ゲーム機、テレビ受像機システム、HDDレコーダ、PC上のオーサリング・ツールまたはそのソフトウェア・モジュール等に適用することができる。
100 画像符号化装置, 101 ウェーブレット変換部, 102 量子化部, 103 コードブロック化部, 104 ビットプレーン展開部, 105 EBCOT, 106 符号化コードストリーム生成部, 111 ビットモデリング部, 112 MQ符号化部, 121 状態遷移生成部, 122 状態遷移テーブル, 123 選択部, 124 CUパス部, 125 SPパス部, 126 MRパス部, 200 画像符号化装置, 201 ウェーブレット変換部, 202 量子化部, 203 コードブロック化部, 204 ビットプレーン展開部, 205 パラメータ生成部, 206 グループ分け部, 207 並列演算用係数データ生成部, 208 EBCOT, 209 符号化コードストリーム生成部
Claims (20)
- 画像データをサブバンド毎の係数データに変換するウェーブレット変換手段と、
前記ウェーブレット変換手段により生成された前記係数データの前記サブバンドの領域をコードブロックに分割するコードブロック化手段と、
処理対象の係数データに隣接する周囲のバイナリ係数データの値および状態に応じて、処理対象の係数データの状態を遷移させる状態遷移手段と、
前記状態遷移手段により遷移された前記係数データの状態に従って、符号化パスを選択する選択手段と、
前記選択手段により選択された符号化パスに従って、前記コードブロック化手段により生成されたコードブロック毎に、前記係数データを符号化する符号化手段と
を備える符号化装置。 - 前記係数データの状態は、係数の正負符号(Sign)、状態変数1(State-0)、状態変数2(State-1)、および有効(Sig)の4つの変数によって定義される
請求項1に記載の符号化装置。 - 前記係数データの状態は、状態変数1(State-0)、状態変数2(State-1)、および有効(Sig)の3つの変数と、前記係数データの7つの状態との対応関係を示すテーブル情報に基づいて、前記3つの変数の値から求められる
請求項1に記載の符号化装置。 - 前記7つの状態のうち、第1の状態は、CUパスで符号化される状態であり、第2の状態は、無効なサンプルとされる状態であり、第3の状態は、周囲に有意なサンプルがあり、且つ現在のビットプレーンで未符号化時にはCUパスで符号化される状態であり、第4の状態は、周囲に有意なサンプルがあり、SPパスで符号化される状態であり、第5の状態は、有意であり、且つ既に現在のビットプレーンはSPパスで符号化済みの状態であり、第6の状態は、有意であり、MRパスで符号化され、次のMRパスが1回目である状態であり、第7の状態は、有意であり、MRパスで符号化され、次のMRパスが2回目である状態である
請求項3に記載の符号化装置。 - 前記状態遷移手段は、処理対象の係数データの状態が前記第1の状態であって、前記CUパスで周囲の係数データのいずれかが有意になった場合、前記第3の状態に遷移させる
請求項4に記載の符号化装置。 - 前記状態遷移手段は、処理対象の係数データが前記第1の状態であって、前記CUパスで有意になった場合、前記第5の状態に遷移させる
請求項4に記載の符号化装置。 - 前記状態遷移手段は、処理対象の係数データが前記第3の状態であって、前記SPパスで符号化する場合、前記第4の状態に遷移させる
請求項4に記載の符号化装置。 - 前記状態遷移手段は、処理対象の係数データが前記第3の状態であって、前記CUパスで有意になった場合、前記第5の状態に遷移させる
請求項4に記載の符号化装置。 - 前記状態遷移手段は、処理対象の係数データが前記第5の状態であって、1つのビットプレーンの符号化がすべて終了した場合、前記第6の状態に遷移させる
請求項4に記載の符号化装置。 - 前記状態遷移手段は、処理対象の係数データが前記第6の状態であって、1つのビットプレーンの符号化がすべて終了した場合、前記第7の状態に遷移させる
請求項4に記載の符号化装置。 - 前記状態遷移手段により遷移された、処理対象のコードブロック内の各係数データの状態を保持する保持手段をさらに備え、
前記選択手段は、前記保持手段により保持される前記係数データの状態に従って、符号化パスを選択する
請求項1に記載の符号化装置。 - 前記符号化手段は、
前記選択手段により選択された符号化パスに従って、前記係数データに対して所定の演算を行う演算手段と、
前記演算手段による演算結果を用いて算術符号化を行う算術符号化手段と
を備える請求項1に記載の符号化装置。 - 前記演算手段は、
前記選択手段によりCUパスが選択された場合、前記係数データに対して所定の演算を行うCUパス演算手段と、
前記選択手段によりSPパスが選択された場合、前記係数データに対して所定の演算を行うSPパス演算手段と、
前記選択手段によりMRパスが選択された場合、前記係数データに対して所定の演算を行うMRパス演算手段と
を備える請求項12に記載の符号化装置。 - 前記CUパス演算手段は、前記コードブロックの4つの係数データに対して、ランレングス符号化の結果が0になる計算と、ランレングス符号化の結果が1になる計算の両方を実行し、
前記算術符号化手段は、前記ランレングス符号化のコンテキストを用いて、値0の係数データをMQ符号化し、さらに、値1の係数データをMQ符号化する
請求項13に記載の符号化装置。 - 前記CUパス演算手段は、前記コードブロックの4つの係数データに対して、UNIFORMエンコード符号化を2回行い、
前記算術符号化手段は、その2回各々に対して、UNIFORMのコンテキストを用いて、係数0または1をMQ符号化する
請求項13に記載の符号化装置。 - 前記CUパス演算手段は、前記コードブロックの係数データ毎に、CUエンコードを実行するか否かの計算を行い、
前記算術符号化手段は、前記計算の結果に従って、Significanceコンテキストを用いてMQ符号化する
請求項13に記載の符号化装置。 - 前記CUパス演算手段は、前記コードブロックの係数データ毎に、Signエンコードを実行するか否かの計算を行い、
前記算術符号化手段は、前記計算の結果に従ってSignコンテキストを用いてMQ符号化する
請求項13に記載の符号化装置。 - 前記SPパス演算手段は、前記係数データの値が1か否かの計算を行い、
前記算術符号化手段は、前記計算の結果に従ってSignコンテキストを用いてMQ符号化する
請求項13に記載の符号化装置。 - 前記MRパス演算手段は、MRエンコードを実行するか否かの計算を行い、
前記算術符号化手段は、前記計算の結果に従ってMRコンテキストを用いてMQ符号化する
請求項13に記載の符号化装置。 - 画像データをサブバンド毎の係数データに変換し、
変換された前記係数データの前記サブバンドの領域をコードブロックに分割し、
分割された前記コードブロック毎に、処理対象の係数データに隣接する周囲のバイナリ係数データの値および状態に応じて、処理対象の前記係数データの状態を遷移させ、
遷移された前記係数データの状態に従って、符号化パスを選択し、
選択された符号化パスに従って、生成されたコードブロック毎に、前記係数データを符号化する
符号化方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009242769A JP2011091576A (ja) | 2009-10-21 | 2009-10-21 | 符号化装置および方法 |
US12/924,780 US20110091123A1 (en) | 2009-10-21 | 2010-10-05 | Coding apparatus and coding method |
CN2010105118020A CN102045565A (zh) | 2009-10-21 | 2010-10-14 | 编码装置和编码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009242769A JP2011091576A (ja) | 2009-10-21 | 2009-10-21 | 符号化装置および方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011091576A true JP2011091576A (ja) | 2011-05-06 |
Family
ID=43879337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009242769A Withdrawn JP2011091576A (ja) | 2009-10-21 | 2009-10-21 | 符号化装置および方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20110091123A1 (ja) |
JP (1) | JP2011091576A (ja) |
CN (1) | CN102045565A (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8983213B1 (en) * | 2010-08-30 | 2015-03-17 | Accusoft Corporation | Image coding and decoding methods and apparatus |
US8934725B1 (en) | 2010-08-30 | 2015-01-13 | Accusoft Corporation | Image coding and decoding methods and apparatus |
JP5825965B2 (ja) * | 2011-10-05 | 2015-12-02 | キヤノン株式会社 | ズームレンズ及びそれを有する撮像装置 |
CN102752599B (zh) * | 2012-07-12 | 2014-11-12 | 浙江工商大学 | 一种二维图像小波系数重要性程度的随机计算方法 |
US9813718B2 (en) * | 2013-10-03 | 2017-11-07 | Samsung Display Co., Ltd. | Apparatus and method for compact bit-plane data compression |
CN105846828A (zh) * | 2016-03-23 | 2016-08-10 | 北京裕源大通科技股份有限公司 | Iq数据的压缩和解压缩方法、装置和iq数据的传输方法、系统 |
CN110365346B (zh) | 2019-07-22 | 2021-07-06 | 浙江大华技术股份有限公司 | 一种算术熵编码方法及系统 |
CN112087636B (zh) * | 2020-08-07 | 2022-01-11 | 北京博雅慧视智能技术研究院有限公司 | 一种图像编码的处理方法、装置、存储介质及终端 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835636A (en) * | 1996-05-28 | 1998-11-10 | Lsi Logic Corporation | Method and apparatus for reducing the memory required for decoding bidirectionally predictive-coded frames during pull-down |
JP3906630B2 (ja) * | 2000-08-08 | 2007-04-18 | ソニー株式会社 | 画像符号化装置及び方法並びに画像復号装置及び方法 |
AUPQ982400A0 (en) * | 2000-09-01 | 2000-09-28 | Canon Kabushiki Kaisha | Entropy encoding and decoding |
US7308146B2 (en) * | 2002-09-30 | 2007-12-11 | Canon Kabushiki Kaisha | Digital video compression |
FR2857527B1 (fr) * | 2003-07-11 | 2006-01-06 | Cit Alcatel | Compression contextuelle d'images numeriques |
CN1560916A (zh) * | 2004-02-27 | 2005-01-05 | 清华大学 | 一种用于集成电路设计的静止图像熵编码方法 |
CN1267858C (zh) * | 2004-04-07 | 2006-08-02 | 西安交通大学 | 实时截断的jpeg2000速率控制方法 |
US7352903B2 (en) * | 2004-08-17 | 2008-04-01 | Pegasus Imaging Corporation | Methods and apparatus for implementing JPEG 2000 encoding operations |
US20060039613A1 (en) * | 2004-08-17 | 2006-02-23 | Withers William D | Methods and apparatus for generating and using lists of coefficients to be coded |
JP4745865B2 (ja) * | 2006-02-28 | 2011-08-10 | 富士通セミコンダクター株式会社 | 符号化装置および方法 |
-
2009
- 2009-10-21 JP JP2009242769A patent/JP2011091576A/ja not_active Withdrawn
-
2010
- 2010-10-05 US US12/924,780 patent/US20110091123A1/en not_active Abandoned
- 2010-10-14 CN CN2010105118020A patent/CN102045565A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN102045565A (zh) | 2011-05-04 |
US20110091123A1 (en) | 2011-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2011091576A (ja) | 符号化装置および方法 | |
Lian et al. | Analysis and architecture design of block-coding engine for EBCOT in JPEG 2000 | |
Schwartz et al. | Implementation of compression with reversible embedded wavelets | |
KR101129655B1 (ko) | 압축비가 높고 최소의 자원을 필요로 하는 고속 코덱 | |
JP4025847B2 (ja) | 符号化装置 | |
US8098947B2 (en) | Method and apparatus for processing image data by rearranging wavelet transform data | |
EP1279290A1 (en) | Video encoding method using a wavelet transform | |
JP2011091575A (ja) | 符号化装置および方法 | |
Descampe et al. | A flexible hardware JPEG 2000 decoder for digital cinema | |
JP4443165B2 (ja) | 画像圧縮装置及び画像圧縮方法 | |
JP5966345B2 (ja) | 画像処理装置および方法 | |
JP5950157B2 (ja) | 画像処理装置および方法、並びに、プログラム | |
JP5966347B2 (ja) | 画像処理装置および方法 | |
Hussin et al. | A comparative study on improvement of image compression method using hybrid DCT-DWT techniques with huffman encoding for wireless sensor network application | |
JP5966346B2 (ja) | 画像処理装置および方法 | |
US8249375B2 (en) | Information processing apparatus and method | |
JP2010245855A (ja) | 情報処理装置および方法 | |
JP2011091577A (ja) | 符号化装置および方法 | |
JP4111761B2 (ja) | 画像処理装置 | |
CN1809169A (zh) | 对画面进行无损直流分量编码的方法和设备 | |
Mundy | The study and HDL implementation of the JPEG 2000 MQ coder | |
JP2002223446A (ja) | 画像圧縮装置および画像撮像装置 | |
JP2004080185A (ja) | 画像処理装置、画像処理方法、電子カメラ装置、プログラム、記録媒体 | |
Matela | Designing Image Compression Algorithms for Massively Parallel Processors | |
Rusnak | Design and implementation of arithmetic coder for CUDA platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20130108 |