JP2011091577A - 符号化装置および方法 - Google Patents

符号化装置および方法 Download PDF

Info

Publication number
JP2011091577A
JP2011091577A JP2009242770A JP2009242770A JP2011091577A JP 2011091577 A JP2011091577 A JP 2011091577A JP 2009242770 A JP2009242770 A JP 2009242770A JP 2009242770 A JP2009242770 A JP 2009242770A JP 2011091577 A JP2011091577 A JP 2011091577A
Authority
JP
Japan
Prior art keywords
data
encoding
unit
control information
valid
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
Application number
JP2009242770A
Other languages
English (en)
Inventor
Takahiro Fukuhara
隆浩 福原
Katsutoshi Ando
勝俊 安藤
Koji Hara
耕司 原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2009242770A priority Critical patent/JP2011091577A/ja
Priority to US12/924,905 priority patent/US20110091119A1/en
Publication of JP2011091577A publication Critical patent/JP2011091577A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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/436Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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/423Methods 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 characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • H04N19/64Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission
    • H04N19/647Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission using significance based coding, e.g. Embedded Zerotrees of Wavelets [EZW] or Set Partitioning in Hierarchical Trees [SPIHT]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

【課題】符号化をより高速に行うことができるようにする。
【解決手段】レジスタ展開部151は、ビットモデリング部111から出力されたデータ群をレジスタに展開する。データ統合部152は、レジスタに展開された入力データを、バッファ部153に保持されているバッファデータと統合する。データ統合部152は、バッファデータを読み出し、データ統合部152は、入力データをバッファ部153に保持させる。整列部154は、読みだされたデータを並び替え、有効なデータと無効なデータを分離する。MQ符号化実行部155は、有効なデータに対して確率推定テーブル156を参照しながらMQ符号化を施す。本発明は、例えば、画像符号化装置に適用することができる。
【選択図】図8

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には、固定小数点型ウェーブレット変換器と、整数型ウェーブレット変換器の両方を備え、可逆変換および非可逆変換の両方を行うことができ、画質や圧縮率の選択の自由度を高め得るような画像符号化装置が記載されている。
特許3906630号
しかしながら、JPEG2000の場合、その計算負荷がJPEGに比べて圧倒的に大きくなる恐れがあった。特に可逆圧縮の場合にはすべての係数データを欠損なく圧縮することから、膨大な時間を要する恐れがあった。
JPEG2000符号化技術の中でも、1番計算負荷が大きいものが、EBCOT(Embedded Block Coding with Optimized Truncation)と呼ばれるエントロピ符号化部である。これはビットプレーン展開されたバイナリデータを1ピクセル単位にモデリングしながら算術符号化する技術を用いている。従って、逐次処理を行う上、上位のビットプレーンの結果が下位のビットプレーンの結果に影響する「依存性」が存在するため、コードブロック内部の並列化が困難とされてきた。従って、大きな解像度の画像のエンコードや可逆圧縮の場合には、如何にしてJPEG2000の計算負荷、特にEBCOTの高速化を実現できるかが、鍵であった。
EBCOTの内部構造は、ビットモデリング部とMQ符号化部とに分かれる。ビットモデリングでは、ウェーブレット変換係数または量子化係数をビットプレーン展開して、矩形のコードブロック単位に、符号化パスと呼ばれる3つのエンコード単位に符号化が行われる。各符号化パスでは、必要に応じて所定のパラメータ群がMQ符号化部に出力される。MQ符号化部は、そのパラメータ群を用いて符号語を生成する。
EBCOTの高速化のためには、このビットモデリング部およびMQ符号化部における計算負荷の低減が必要であった。
本発明は、このような状況に鑑みて提案されたものであり、符号化をより高速に行うことができるようにすることを目的とする。
本発明の一側面は、画像データをウェーブレット変換して得られるサブバンド毎の係数データに対して符号化のビットモデリングを行うビットモデリング手段と、前記ビットモデリング手段により得られる、シンボル、コンテキスト、および制御情報よりなる複数のデータセットを入力データとしてレジスタに展開する展開手段と、前記展開手段により展開された前記入力データをバッファデータとして保持する保持手段と、前記展開手段により展開されている前記入力データの中の前記制御情報が有効な前記データセットと、前記保持手段に保持されている前記バッファデータの中の前記制御情報が有効な前記データセットとを統合する統合手段と、前記統合手段により統合された前記制御情報が有効な前記データセットを符号化する符号化手段とを備える符号化装置である。
前記統合手段は、前記バッファデータの中の前記制御情報が無効なデータセットを検出し、前記入力データの中の前記制御情報が有効なデータセットのうち、前記バッファデータにおいて検出された前記データセットと同じ位置のデータセットを、前記バッファデータの同じ位置に移動させることにより、前記制御情報が有効な前記データセットの統合を行うことができる。
前記統合手段により前記データセットが統合された後、前記入力データに前記制御情報が有効な前記データセットが含まれる場合、前記保持手段から前記バッファデータを読み出す読み出し手段をさらに備え、前記符号化手段は、前記読み出し手段により読み出された前記バッファデータの中の前記制御情報が有効な前記データセットを符号化し、前記保持手段は、前記読み出し手段により前記バッファデータが読み出された後、前記レジスタに展開されている前記入力データを新たなバッファデータとして保持することができる。
前記読み出し手段により前記保持手段から読み出された前記バッファデータを並べ替え、前記制御情報が有効な前記データセットをまとめる整列手段をさらに備え、前記符号化手段は、前記整列手段により並べ替えられてまとめられた前記制御情報が有効な前記データセットを符号化することができる。
前記符号化手段は、前記統合手段により統合された前記制御情報が有効な、互いに異なる前記データセットに対する複数の符号化を並列に行うことができる。
前記展開手段は、複数のコードブロックのそれぞれの、互いに同じ位置のサンプルに対応する前記データセットを前記入力データとして前記レジスタに展開することができる。
複数の前記コードブロックを、互いに同一の特徴を有する所定数のコードブロック毎にグループ分けするグループ分け手段をさらに備え、前記展開手段は、前記グループ分け手段により生成されたグループ毎に、グループ内の各コードブロックの互いに同じ位置のサンプルに対応する前記データセットを前記入力データとして前記レジスタに展開することができる。
前記グループ分け手段は、前記コードブロックの水平サイズおよび垂直サイズ、前記コードブロックにおいて用いられる符号化パスの数を示す符号化パス数、並びに、前記コードブロックが属するサブバンドタイプを含む、前記コードブロックの特徴を示すパラメータに基づいて、前記コードブロックのグループ分けを行うことができる。
前記ビットモデリング手段は、CUパス、SPパス、またはMRパスのいずれかの符号化パスにより符号化を行うことを選択し、選択した符号化パスにより所定の演算を行うことができる。
前記制御情報は、前記CUパスから送出されたものであって、ランレングス符号化結果が0になる有効・無効情報、ランレングス符号化の結果が1になる有効・無効情報、CU符号化を行うか否かの有効・無効情報、更にSign符号化を行うか否かの有効・無効情報、のいずれかであるようにすることができる。
前記制御情報は、前記SPパスから送出されたものであって、SP符号化を行うか否かの有効・無効情報、Sign符号化を行うか否かの有効・無効情報、のいずれかであるようにすることができる。
前記制御情報は、前記MRパスから送出されたものであって、MR符号化を行うか否かの有効・無効情報であるようにすることができる。
本発明の一側面は、また、画像データをウェーブレット変換して得られるサブバンド毎の係数データに対して符号化のビットモデリングを行い、前記ビットモデリングにより得られる、シンボル、コンテキスト、および制御情報よりなる複数のデータセットを入力データとしてレジスタに展開し、前記レジスタに展開された前記入力データをバッファデータとして保持部に保持し、前記レジスタに展開されている前記入力データの中の前記制御情報が有効な前記データセットと、前記保持部に保持されている前記バッファデータの中の前記制御情報が有効な前記データセットとを統合し、統合された前記制御情報が有効な前記データセットを符号化する符号化方法である。
本発明の一側面においては、画像データをウェーブレット変換して得られるサブバンド毎の係数データに対して符号化のビットモデリングが行われ、ビットモデリングにより得られる、シンボル、コンテキスト、および制御情報よりなる複数のデータセットが入力データとしてレジスタに展開され、レジスタに展開された入力データがバッファデータとして保持部に保持され、レジスタに展開されている入力データの中の制御情報が有効なデータセットと、保持部に保持されているバッファデータの中の制御情報が有効なデータセットとが統合され、統合された制御情報が有効なデータセットが符号化される。
本発明によれば、画像を符号化することができる。特に、より高速に画像を符号化することができる。
本発明を適用した画像符号化装置の主な構成例を示すブロック図である。 サブバンドの構成例を示す図である。 ビットプレーンの例を説明する図である。 各サブバンド中のコードブロックの例を示す図である。 符号化パスの例を説明する図である。 係数の走査の例を説明する図である。 符号化パスについて説明する図である。 図1のEBCOTの詳細な構成例を示すブロック図である。 ビットモデリングとMQ符号化との関係を説明する図である。 符号化処理の流れの例を説明するフローチャートである。 ビットモデリング処理の流れの例を説明するフローチャートである。 CUパス処理の流れの例を説明するフローチャートである。 CUパス処理の流れの例を説明する、図12に続くフローチャートである。 CUパス処理の実際に動作が発生する処理の例について説明するフローチャートである。 CUパス処理の実際に動作が発生する処理の、他のについて説明するフローチャートである。 CUパス処理の実際に動作が発生する処理の、さらに他のについて説明するフローチャートである。 SPパス処理の流れの例を説明するフローチャートである。 MRパス処理の流れの例を説明するフローチャートである。 MQ符号化処理の流れの例を説明するフローチャートである。 データ群のレジスタへの展開の様子を説明する図である。 データ群のレジスタへの展開の様子を説明する図である。 レジスタに展開されたデータ群の構成例を説明する図である。 統合の様子の例を説明する図である。 統合の様子の例を説明する図である。 データ群の並び替えの様子を説明する図である。 本発明を適用した画像符号化装置の他の構成例を示すブロック図である。 コードブロックのグループ化の様子の例を説明する図である。 MQ符号化の並列処理の様子の例を説明する図である。 MQ符号化処理の流れの、他の例を説明するフローチャートである。 MQ符号化処理の流れの他の例を説明する、図29に続くフローチャートである。 本発明を適用するハードウェアの例を示す図である。 本発明を適用したパーソナルコンピュータの構成例を示すブロック図である。
以下、発明を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
1.第1の実施の形態(画像符号化装置)
2.第2の実施の形態(画像符号化装置)
3.第3の実施の形態(パーソナルコンピュータ)
<1.第1の実施の形態>
[画像符号化装置の構成]
図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は、制御情報が有効なシンボルやコンテキストを統合することにより、有効なデータのみを効率よくMQ符号化する。これにより、画像符号化装置100は、EBCOTの高速化、すなわち、JPEG2000の計算負荷の軽減を実現することができる。
図1に示されるように、画像符号化装置100は、ウェーブレット変換部101、量子化部102、ビットプレーン展開部103、コードブロック化部104、EBCOT105、および符号化コードストリーム生成部106を有する。
ウェーブレット変換部101は、通常、低域フィルタと高域フィルタから構成されるフィルタバンクによって実現される。また、デジタルフィルタは通常複数タップ長のインパルス応答(フィルタ係数)を有するので、ウェーブレット変換部101は、フィルタリングが行えるだけの入力画像を予めバッファリングするバッファを有する。
ウェーブレット変換部101は、入力された画像データ(矢印121)を、フィルタリングに最低限必要なデータ量以上取得する。ウェーブレット変換部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に供給する(矢印122)。
量子化部102は、供給された係数データ(ウェーブレット係数)を量子化する。量子化部102は、得られた係数データ(量子化係数)を、ビットプレーン展開部103に供給する(矢印123)。なお、JPEG2000の規格では、可逆圧縮の場合、量子化処理は省略される。その場合、ウェーブレット変換部101より出力された係数データ(ウェーブレット係数)は、ビットプレーン展開部103に供給される(矢印124)。
ビットプレーン展開部103は、供給された係数データを、ビットの位毎のビットプレーンに展開する。
ビットプレーンは、所定の数のウェーブレット係数よりなる係数群(例えば後述するコードブロック)を、1ビット毎、つまり位毎に分割(スライス)したものである。つまり、ビットプレーンは、それぞれが複数ビットのビット深度を持つ複数のデータの、互いに同一の位のビット(係数ビット)の集合である。したがって、展開されるビットプレーン数は、各係数のビット深度に依存する。
図3にその具体例を示す。図3の左図は縦4個、横4個の計16個の係数を示している。この16個の係数のうち、絶対値が最大のものは13で、2進数で1101と表現される。ビットプレーン展開部103は、このような係数群を、絶対値を示す4枚のビットプレーン(絶対値のビットプレーン)と、符号を示す1枚のビットプレーン(符号のビットプレーン)に展開する。つまり、図3中左の係数群は、図3中右に示されるように、4枚の絶対値のビットプレーンと1枚の符号のビットプレーンに展開される。ここで、絶対値のビットプレーンの要素はすべて0か1の値をとる。また、符号を示すビットプレーンの要素は、係数の値が正であることを示す値、係数の値が0であることを示す値、または係数の値がマイナスを示す値のいずれかをとる。
なお、このようにビットプレーンとされる係数群における係数の数は任意である。以下においては、処理単位を統一することで各部における処理を容易にするために、ビットプレーン展開部103が、係数をコードブロック毎にビットプレーン展開するものとして説明する。
図1に戻り、ビットプレーン展開部103は、このように展開したビットプレーンを、係数の最上位ビット(MSB:Most Significant Bit)から最下位ビット(LSB:Less Significant Bit)に向かう順に、コードブロック化部104に供給する。つまり、ビットプレーン展開部103は、ビット深度の上位側から下位側に向かう順に、展開したビットプレーンをコードブロック化部104に供給する(矢印125)。
コードブロック化部104は、供給された各ビットプレーンの係数データを、予め定められた所定の大きさの矩形の、エントロピ符号化の処理単位であるコードブロックに分割する。JPEG2000の規格上の定義によって、コードブロックの縦・横サイズはどのサブバンドにおいても一定である。但し画像(サブバンド)の両端や上端・下端などでは、同じサイズのコードブロックが取れないケースも多々ある。
図4は、図2を参照して説明した各サブバンド中のコードブロックの位置関係を示したものである。例えば64×64画素程度のサイズのコードブロックが、分割後のすべてのサブバンド中に生成される。例えば、最も分割レベルが小さい3HHのサブバンドの大きさが例えば640×320画素であるとすると、64×64画素のコードブロックは合計50個存在することになる。後段の各処理部は、このコードブロック毎に処理を行う。もちろん、このコードブロックのサイズ(画素数)は任意である。
図1に戻り、コードブロック化部104は、ビットプレーン展開された係数データをコードブロック毎にEBCOT105に供給する(矢印126)。
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
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という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符号化する。
(3)Cleanup Pass(CUパス):
ビットプレーンを符号化する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値算術符号である。
図7は、横軸がコードブロック(CB0乃至CBn:n+1個のCodeblock)、縦軸がビットプレーンを示している。MSBのビットプレーンから連続する、係数が全て0のビットプレーンをゼロビットプレーンと称し、それ以外のビットプレーンを有効ビットプレーンと称する。更に、図7のZero.Bitsは、ゼロビットプレーン数、一方、エンコード以前に定義される最大ビット深度(LSB乃至MSB)をMax.Bitsと定義する。
従って、1つのコードブロックにおいて用いられる符号化パスの数を示す符号化パス数(num_pass)は、以下の式(1)のように算出される。
num_pass=(Max.Bits−Zero.Bits)×3−2 ・・・(1)
図1に示されるように、EBCOT105は、ビットモデリングを行うビットモデリング部111と、算術符号化を行うMQ符号化部112とを有する。ビットモデリング部111は、ビットモデリングを行うと、制御情報、シンボル、およびコンテキスト等の情報をMQ符号化部112に供給する(矢印127)。MQ符号化部112は、供給されたデータ群を用いてMQ符号化を行う。MQ符号化部112は、MQ符号化により生成された符号化データを符号化コードストリーム生成部106に供給する(矢印128)。
符号化コードストリーム生成部106は、EBCOT105(MQ符号化部112)から供給された符号化データを整列し、1つのコードストリームとして出力する(矢印129)。
図8は、図1のEBCOT105の詳細な構成例を示すブロック図である。
図8に示されるように、EBCOT105のビットモデリング部111は、選択部141、CUパス部142、SPパス部143、MRパス部144、および切り替え部145を有する。
選択部141は、コードブロック化部104から供給される係数データ(矢印171)の供給先を、CUパス部142乃至MRパス部144の中から1つ選択し、その選択した先に係数データを供給する。
例えば、選択部141は、CUパス部142を選択した場合、そのCUパス部142に係数データを供給する(矢印172)。また、例えば、選択部141は、SPパス部143を選択した場合、そのSPパス部143に係数データを供給する(矢印173)。さらに、例えば、選択部141は、MRパス部144を選択した場合、そのMRパス部144に係数データを供給する(矢印174)。
CUパス部142乃至MRパス部144は、それぞれの符号化パスにより係数データに対して所定の演算を行い、符号化する。CUパス部142乃至MRパス部144は、それぞれ、演算結果として、制御情報、シンボル、およびコンテキスト等のデータ群を切り替え部145に供給する(矢印175乃至矢印177)。
切り替え部145は、入力される符号化パスを適宜切り替え、CUパス部142乃至MRパス部144から供給されるデータ群を、MQ符号化部112のレジスタ展開部151に供給する(矢印178)。
つまり、各符号化パスからは、後述の(有効・無効を示す制御情報、シンボル、コンテキスト)のデータセットが出力され、レジスタ展開部151に、選択データとして供給される。
図9に示されるように、一般的なJPEG2000の場合、MQ符号化部112は、ビットモデリング部111から送出されるシンボルX(0または1)とコンテキスト(符号化パスによって取る値が異なる(0乃至18))を一対で取得し、これらを基にしてMQ符号化を行う。
図8に戻り、EBCOT105のMQ符号化部112は、レジスタ展開部151、データ統合部152、バッファ部153、整列部154、MQ符号化実行部155、および確率推定テーブルを有する。
レジスタ展開部151は、供給されたデータセット群をデータ統合部152に供給し(矢印179)、レジスタに展開する。データ統合部152は、レジスタに展開されたデータを、バッファ部153に保持されているデータと統合する(矢印180および矢印181)。
バッファ部153は、過去にレジスタに展開されたデータセット群を保持する。また、上述したように行われるデータの統合結果を保持する(保持しているデータセット群が、データの統合により適宜更新される)。後述するように、レジスタの有効なデータをバッファ部153のデータに全て統合できない場合、データ統合部152は、バッファ部153からデータセット群を読み出し(矢印181)、整列部154に供給する(矢印182)。また、データ統合部152は、バッファ部153からデータセット群を読み出した後、レジスタに展開されているデータセット群をバッファ部153に保持させる(矢印180)。
整列部154は、供給されたデータセット群を並び替え、制御情報が有効なデータと無効なデータを分離する(有効なデータをまとめる)。整列部154は、有効なデータをMQ符号化実行部155に供給する(矢印183)。
MQ符号化実行部155は、供給されたデータに対して、通常のJPEG2000で規定された確率推定テーブル156を参照しながら(矢印184)MQ符号化を施すことで、符号化データを生成する。MQ符号化実行部155は、生成した符号化データを符号化コードストリーム生成部106に供給する(矢印185)。
[処理の流れ]
次に、このような画像符号化装置100により実行される符号化処理の流れの例を図10のフローチャートを参照して説明する。
符号化処理が開始されると、ウェーブレット変換部101は、ステップS101において、1ピクチャ分の画像データをウェーブレット変換する。ステップS102において、量子化部102は、ステップS101において生成された係数データを量子化する。なお、可逆符号化の場合、このステップS102の処理は省略される。
ステップS103において、ビットプレーン展開部103は、係数データをビットプレーン展開する。ステップS104において、コードブロック化部104は、係数データをコードブロック化する。
ステップS105において、EBCOT105のビットモデリング部111は、ビットモデリング処理を実行する。ステップS106において、EBCOT105のMQ符号化部112は、MQ符号化処理を行う。
ステップS107において、符号化コードストリーム生成部106は、EBCOT105において生成された符号化データを整列してコードストリームを生成し、出力する。ステップS107の処理が終了すると、符号化処理が終了される。
なお、この符号化処理は、ピクチャ毎に行われる。
次に、図11のフローチャートを参照して、図10のステップS105において行われるビットモデリング処理の詳細な流れの例について説明する。
ビットモデリング処理が開始されると、ステップS121において、選択部141は、符号化パスを選択する。ステップS122において、選択部141は、CUパスを選択したか否かを判定する。
CUパスを選択したと判定された場合、ステップS123に進む。ステップS123において、CUパス部142は、CUパスにより符号化を行うCUパス処理を実行する。CUパス処理が終了すると、ステップS127に進む。
また、ステップS122において、CUパスを選択していないと判定された場合、ステップS124に進む。ステップS124において、選択部141は、SPパスを選択したか否かを判定する。
SPパスを選択したと判定された場合、ステップS125に進む。ステップS125において、SPパス部143は、SPパスにより符号化を行うSPパス処理を実行する。SPパス処理が終了すると、ステップS127に進む。
また、ステップS124において、SPパスを選択していないと判定された場合、ステップS126に進む。ステップS126において、MRパス部144は、MRパスにより符号化を行うMRパス処理を実行する。MRパス処理が終了すると、ステップS127に進む。
ステップS127において、ビットモデリング部111は、ビットモデリング処理を終了するか否かを判定する。未処理の係数データが存在し、ビットモデリング処理を終了しないと判定された場合、ステップS121に戻り、それ以降の処理が繰り返される。また、ステップS127において、ピクチャ内の全ての係数データを処理したと判定された場合、ビットモデリング処理を終了し、図10のステップS105に戻り、ステップS106以降の処理を実行する。
次に、図11のステップS123において実行されるCUパス処理の流れの例を、図12および図13のフローチャートを参照して説明する。なお、スプライトの横サイズを64、縦サイズを4とする。また、図12および図13において、点線矢印は、データの依存関係を示す。
CUパスでは、スプライト内の縦方向の係数群(図6の例の場合、4係数)が上から下方向の順番に走査されながら、この係数群(4係数)毎に以下の計算(ステップS141乃至ステップS148)が行われる。
ステップS141において、CUパス部142は、ランレングス符号化(RLC(Run length coding))の結果が0である計算を行う。この計算が成功した場合、計算結果は0xFF(以下、FFと称する)となる。また、この計算が失敗した場合、計算結果は0x00(以下00と称する)となる。これらの計算結果は、ステップS145の処理に影響を与える。
ステップS141の処理が終了するとステップS142に進む。ステップS142において、CUパス部142は、ランレングス符号化(RLC(Run length coding))の結果が1である計算を行う。この計算が成功した場合、計算結果はFFとなる。また、この計算が失敗した場合、計算結果は00となる。これらの計算結果は、ステップS146乃至ステップS148の処理に影響を与える。
ステップS142の処理が終了するとステップS143に進む。ステップS143において、CUパス部142は、1番目のUNIFORMエンコードの計算を行う。エンコード対象は0または1である。この計算結果は、ステップS147の処理に影響を与える。
ステップS143の処理が終了するとステップS144に進む。ステップS144において、CUパス部142は、2番目のUNIFORMエンコードの計算を行う。エンコード対象は0または1である。この計算結果は、ステップS148の処理に影響を与える。
CUパスの処理において、ステップS141における、RLCの処理を実行するか否かが最初の分岐点である。ただし、図12に示されるように、本発明においては、RLCの結果が1である計算と0である計算のいずれも行う。そしてその結果(FFまたは00)を見ることで、MQ符号化部112は、実際にRLCが有効であったか否かを自動的に判別することができる。
ステップS144の処理が終了するとステップS145に進む。CUパス部142は、MQ符号化部112にデータ(制御情報、シンボル、およびコンテキスト等)を供給することにより、ステップS145において、RLCコンテキストで値0をMQ符号化させ、ステップS146において、RLCコンテキストで値1をMQ符号化させる。
また、CUパス部142は、MQ符号化部112にデータ(制御情報、シンボル、およびコンテキスト等)を供給することにより、ステップS147において、UNIFORMコンテキストで1回目のMQ符号化を行わせ、ステップS148において、UNIFORMコンテキストで2回目のMQ符号化を行わせる。
図12のステップS148の処理が終了すると、図13のステップS161に進む。CUパスでは、上述した係数群(4係数)内の各係数に対して以下の計算(ステップS161乃至ステップS166)が行われる。
ステップS161において、CUパス部142は、CUエンコードを行うか否かの計算を行う。例えば、CUエンコードを行う場合、計算結果はFFとなり、CUエンコードを行わない場合、計算結果は00となる。この計算結果は、ステップS163のMQ符号化に用いられる。
ステップS161の処理が終了するとステップS162に進む。ステップS162において、CUパス部142は、Significanceコンテキストの計算を行う。CUパス部142は、MQ符号化部112にデータ(制御情報、シンボル、およびコンテキスト等)を供給することにより、ステップS163において、SignificanceコンテキストでSymbolをMQ符号化させる。
ステップS163の処理が終了するとステップS164に進む。ステップS164において、CUパス部142は、Signエンコードするか否かの計算を行う。例えば、Signエンコードを行う場合、計算結果はFFとなり、Signエンコードを行わない場合、計算結果は00となる。この計算結果は、ステップS166のMQ符号化に用いられる。
ステップS164の処理が終了するとステップS165に進む。ステップS165において、CUパス部142は、Signコンテキストの計算を行う。CUパス部142は、MQ符号化部112にデータ(制御情報、シンボル、およびコンテキスト等)を供給することにより、ステップS166において、SignコンテキストでSignをMQ符号化させる。
ステップS167において、CUパス部142は、処理対象の係数群(4係数)内の全ての係数を処理したか否かを判定する。未処理の係数が存在すると判定された場合、ステップS161に戻り、それ以降の処理を繰り返す。
また、ステップS167において、処理対象の係数群(4係数)内の全ての係数が処理されたと判定された場合、ステップS168に進む。ステップS168において、CUパス部142は、処理対象ビットプレーンの全てのスプライトの全係数を処理したか否かを判定する。未処理の係数が存在すると判定された場合、図12のステップS141に戻り、それ以降の処理を繰り返す。
また、図13のステップS168において、全ての係数を処理したと判定された場合、CUパス処理が終了され、図11のステップS123に戻り、ステップS127以降の処理が行われる。
以上のCUパス処理において、例えば、RLCの結果が1である計算を行って(ステップS142)、その結果出力される符号がFFの場合、その計算が有効であったことを示している。尚、この場合には、RLCの結果が0である計算を行っても(ステップS141)、その計算結果は00(無効)であることは自明である。(結果が1と0は背反なため)。
また、以上のRLCの結果が1である計算が有効だった場合、UNIFORMエンコードの計算が2回に渡って実行されるが、いずれの場合でもエンコード対象は0または1である。また、以上の2つのケース以外のケースとしてRLCを一切行わないモードも存在する。
以下に3つのケースについて、図11のステップS141乃至ステップS148の各処理の実行の様子を説明する。
最初に、図14を参照し、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になったサンプルに対して、RLCコンテキストを用いて、この0という値をMQ符号化させる。この時にMQ符号化部112に入力されるデータは、上記のRLCコンテキスト、シンボル(0)、および制御情報(FF)の3つである。
次に、図15を参照し、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)、符号語を出力する。
以上のように、このケース2の場合、RLCの結果が1になったサンプルに対して、RLCコンテキストを用いて、この1という値をMQ符号化させる。またこの時には、1番目と2番目のUNIFORMエンコードも同時に行うので、各々UNIFORMコンテキストを用いて、0または1の値をMQ符号化させる。従って、このケース2では、3つのMQ符号化を動作させ、MQ符号化部112に入力されるデータは、上記のRLCコンテキスト、シンボル(1)、および制御情報(FF)であるか、1番目のUNIFORMコンテキスト、シンボル(0または1)、および制御情報(FF)であるか、2番目のUNIFORMコンテキスト、シンボル(0または1)、および制御情報(FF)である。
次に、図16を参照し、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)、符号語は発生しない。
以上のように、RLCが行われない場合、ステップS141乃至ステップS148の各処理が行われるが、実際に符号語を発生する処理は存在しない。これは、従来のCUパス処理においてRLCを行わない場合と同様である。
なお、付言するに、EBCOT105は、上述したように、各係数に対する処理(図13のステップS161乃至ステップS166)において、全く条件分岐が発生していない。これにより、EBCOT105は、従来の方法よりも高速に符号化を行うことができる。
また、CUエンコードを行うか否かの計算結果がFFだった場合、Significanceコンテキストを用いて、そのサンプルのシンボルがMQ符号化される。同様に、Signエンコードするか否かの結果がFFだった場合、Signコンテキストを用いて、そのサンプルのシンボルがMQ符号化される。
以上のように、図8のビットモデリング部111でCUパスが選択された場合、ストライプに対しては上記のケース1乃至ケース3のいずれか1つのデータ群(コンテキスト、シンボル、制御情報)がレジスタに展開され、サンプル毎に対しては上記のSignificance及びSignの情報(コンテキスト、シンボル、制御情報)が、レジスタに展開される。
次に、図11のステップS125において実行されるSPパス処理の流れの例を、図17のフローチャートを参照して説明する。なお、点線矢印は、データの依存関係を示す。
SPパス処理が開始されると、ステップS181において、SPパス部143は、SPエンコードを行うか否かの計算を行う。例えば、SPエンコードを行う場合、計算結果はFFとなり、SPエンコードを行わない場合、計算結果は00となる。この計算結果は、ステップS183のMQ符号化に用いられる。
ステップS181の処理が終了するとステップS182に進む。ステップS182において、SPパス部143は、Significanceコンテキストの計算を行う。ステップS183において、SPパス部143は、MQ符号化部112にデータ(制御情報、シンボル、およびコンテキスト等)を供給することにより、SignificanceコンテキストでSymbolをMQ符号化させる。
ステップS183の処理が終了するとステップS184に進む。ステップS184において、SPパス部143は、係数が1であるか否かの計算を行う。例えば、係数が1である場合、計算結果はFFとなり、係数が0である場合、計算結果は00となる。この計算結果は、ステップS186のMQ符号化に用いられる。
ステップS184の処理が終了するとステップS185に進む。ステップS185において、SPパス部143は、Signコンテキストの計算を行う。ステップS186において、SPパス部143は、MQ符号化部112にデータ(制御情報、シンボル、およびコンテキスト等)を供給することにより、SignコンテキストでSignをMQ符号化する。
ステップS187において、SPパス部143は、処理対象の係数群(4係数)内の全ての係数を処理したか否かを判定する。未処理の係数が存在すると判定された場合、ステップS181に戻り、それ以降の処理を繰り返す。
また、ステップS187において、処理対象の係数群(4係数)内の全ての係数が処理されたと判定された場合、ステップS188に進む。ステップS188において、SPパス部143は、処理対象ビットプレーンの全てのスプライトの全係数を処理したか否かを判定する。未処理の係数が存在すると判定された場合、ステップS181に戻り、それ以降の処理を繰り返す。
また、ステップS188において、全ての係数を処理したと判定された場合、SPパス処理が終了され、図11のステップS125に戻り、ステップS127以降の処理が行われる。
このSPパス処理の場合も、CUパスの場合と同様に、各係数に対する処理(図17のステップS181乃至ステップS186)において、全く条件分岐が発生していない。これにより、EBCOT105は、従来の方法よりも高速に符号化を行うことができる。
また、SPエンコードするか否かの計算結果がFFだった場合、Significanceコンテキストを用いて、そのサンプルのシンボルがMQ符号化される。同様に、Signエンコードするか否かの計算結果がFFだった場合、Signコンテキストを用いて、そのサンプルのシンボルがMQ符号化される。
以上のように、図8のビットモデリング部111においてSPパスが選択された場合、ストライプに対しては、符号発生は無く、サンプル毎に対しては上記のSignificance及びSignの情報(コンテキスト、シンボル、制御情報)が、レジスタに展開される。
次に、図11のステップS126において実行されるMRパス処理の流れの例を、図18のフローチャートを参照して説明する。なお、点線矢印は、データの依存関係を示す。
MRパス処理が開始されると、ステップS201において、MRパス部144は、MRエンコードを行うか否かの計算を行う。例えば、MRエンコードを行う場合、計算結果はFFとなり、MRエンコードを行わない場合、計算結果は00となる。この計算結果は、ステップS203のMQ符号化に用いられる。
ステップS201の処理が終了するとステップS202に進む。ステップS202において、MRパス部144は、MRコンテキストの計算を行う。ステップS203において、SPパス部143は、MQ符号化部112にデータ(制御情報、シンボル、およびコンテキスト等)を供給することにより、MRコンテキストでSymbolをMQ符号化させる。
ステップS203の処理が終了するとステップS204に進む。ステップS204において、MRパス部144は、処理対象の係数群(4係数)内の全ての係数を処理したか否かを判定する。未処理の係数が存在すると判定された場合、ステップS201に戻り、それ以降の処理を繰り返す。
また、ステップS204において、処理対象の係数群(4係数)内の全ての係数が処理されたと判定された場合、ステップS205に進む。ステップS205において、MRパス部144は、処理対象ビットプレーンの全てのスプライトの全係数を処理したか否かを判定する。未処理の係数が存在すると判定された場合、ステップS201に戻り、それ以降の処理を繰り返す。
また、ステップS205において、全ての係数を処理したと判定された場合、MRパス処理が終了され、図11のステップS126に戻り、ステップS127以降の処理が行われる。
このMRパス処理の場合も、CUパスやSPパスの場合と同様に、各係数に対する処理(図18のステップS201乃至ステップS203)において、全く条件分岐が発生していない。これにより、EBCOT105は、従来の方法よりも高速に符号化を行うことができる。
また、MRエンコードするか否かの計算結果がFFだった場合、MRコンテキストを用いて、そのサンプルのシンボルがMQ符号化される。
以上のように、図8のビットモデリング部111でMRパスが選択された場合、ストライプに対して符号発生は無く、サンプル毎に対して上記のMRのデータ(コンテキスト、シンボル、制御情報)がレジスタに展開される。
次に、以上のような各符号化パスの処理に対応して図10のステップS106において実行されるMQ符号化処理の流れの例を、図19のフローチャートを参照して説明する。必要に応じて、図20乃至図25を参照して説明する。
図8のMQ符号化部112は、MQ符号化処理を実行することにより、例えば、図12のステップS145乃至ステップS148、図13のステップS163およびステップS166、図17のステップS183およびステップS186、並びに、図18のステップS203の各処理により供給されるデータセット(制御情報、シンボル、およびコンテキスト等)に対するMQ符号化を行う。
MQ符号化処理が開始されると、レジスタ展開部151は、ステップS221において、ビットモデリング部111から供給される、あるコードブロックのあるサンプルのシンボル、コンテキスト、および制御情報等のデータセットを取得する。
ステップS222において、レジスタ展開部151は、予め定められている所定数(N個(Nは自然数))のコードブロックの全てのサンプル(係数)についてデータセットを取得したか否かを判定する。所定数(N個)のコードブロック分のデータセットを取得していないと判定された場合、ステップS221に戻り、それ以降の処理を繰り返す。
ステップS222において、所定数(N個)のコードブロックの全てのサンプルについてデータセットを取得したと判定された場合、ステップS223に進む。
ステップS223において、レジスタ展開部151は、データ群を取得した所定数のコードブロックのそれぞれから、処理対象サンプルのシンボル、コンテキスト、および制御情報のデータセットを取得し、それらをレジスタに展開する。このレジスタに展開されたデータセット群を入力データと称する。
図20は、そのデータセット群のレジスタへの展開の様子を説明する図である。図20に示される例の場合、Codeblock0乃至Codeblock15の16個のコードブロックについてデータセット群が取得され、下段のレジスタに展開される。
図20の例の場合、ビットプレーン毎に、各コードブロックの互いに同じ位置のサンプルのデータセット群が読み出され、レジスタに配置される。例えば、Sign bitplaneにおいては、codeblock0から左上のサンプルのデータセット201−1が読み出され、codeblock1から左上のサンプルのデータセット201−2が読み出され、codeblock3乃至codeblock14においても同様にデータセットの読み出しが行われ、codeblock15から左上のサンプルのデータセット201−16が読み出される。それらのデータセット201−1乃至データセット201−16は、レジスタに並べて配置される。
そして、後述するように、そのレジスタの入力データが処理されると、次に、codeblock0から、右隣のサンプルのデータセット202−1が読み出され、codeblock1からも右隣のサンプルのデータセット202−2が読み出され、codeblock3乃至codeblock14においても同様に右隣のサンプルのデータセットの読み出しが行われ、codeblock15からも右隣のサンプルのデータセット202−16が読み出される。それらのデータセット202−1乃至データセット202−16は、データセット201−1乃至データセット201−16と同様にレジスタに並べて配置される。
この入力データも、データセット201−1乃至データセット201−16の場合と同様に処理される。つまり、例えば、図21に示されるように、CB0乃至CB15の16個の各コードブロックにおいて、サンプルX、サンプルY、サンプル0、サンプル0、・・・・のように、各サンプルが互いに同順に処理される。
図22は、レジスタに展開された入力データの様子の例を説明する図である。
図22に示されるように、レジスタには、16個のコードブロックの互いに同位置のサンプルのシンボル、コンテキスト、および制御情報が配置されている。したがって、コードブロックの数をN個(Nは自然数)とし、1つのデータを1バイトとすると、レジスタ長は、(3×N)バイトとなり、非常に小さいものである。
図19に戻り、以上のように入力データがレジスタに展開されると、ステップS224において、データ統合部152は、レジスタに展開された入力データ中の、制御情報が有効なデータをバッファ部153に保持されているデータ群(バッファデータ)に統合する。
ここで、MQ符号化の従来の問題点について述べる。通常MQ符号化で制御情報が無効なシンボル、コンテキストのデータをエンコードすると符号語を発生しない。従って、図22の例の場合、16個のデータの内、13個の無効データはエンコードが無駄になる。従って、無効のデータを予め除去しておくか、エンコードの対象から外しておけば効率的である。
そこで、まずデータ統合部152は、入力データとバッファデータを統合することにより、有効なデータを集約する(有効なデータの密度を高める)。
図23に、そのデータの統合の様子の例を示す。図23において、図中中央の矢印より上の段が、レジスタに展開された時の入力データとバッファデータの状態を示している。
この上の段において、データ統合部152は、まずバッファデータの中で制御情報が無効(00)であるデータを探し、同位置の入力データで制御情報が有効(FF)であるデータを検出する。図23の例の場合、左端から数えて4番目、7番目、および13番目の3つのサンプルがこれに該当する。
そして、データ統合部152は、これらの位置の入力データのシンボル、コンテキストのデータを、バッファデータに移動する(統合する)。図23において図中中央の矢印より下の段が、データ統合後の入力データとバッファデータの状態を示している。
図23の下の段に示されるように、移動が行われた位置のバッファデータには、上の段において入力データに存在していた、制御情報が有効(FF)であるデータが配置される。
その結果、移動が行われた位置の入力データは空になる。つまり、制御情報が無効(00)であるデータとなる。図23の例の場合、入力データの16個のサンプルの制御情報は、全て無効となる。したがって、この入力データをMQ符号化する必要が無くなり、破棄することができる。つまり、以上のデータの統合により、MQ符号化実行部155は、1回分のMQ符号化処理を省略することができ、MQ符号化の計算負荷が軽減させ、より効率よくMQ符号化を行うことができる。
なお、実際には、次にレジスタに展開された入力データに対しても同様にバッファデータとの統合が行われる。つまり、データ統合部152は、可能な限りデータを統合するので、MQ符号化実行部155は、さらにMQ符号化の効率を向上させることができる。
図19に戻り、ステップS225において、データ統合部152は、入力データの中に制御情報が有効であるデータが存在するか否かを判定する。存在すると判定された場合、ステップS226に進む。
ステップS226において、データ統合部152は、バッファ部153からバッファデータを読み出す。
図24の例の場合、データ統合後にも入力データに制御情報が有効であるデータが存在する。図24において、上から1段目の入力データと、上から2段目のバッファデータが、統合前の状態を示し、上から3段目の入力データと、上から4段目のバッファデータが、統合後の状態を示している。
データ統合前の状態において、入力データにおいては、4番目、7番目、および13番目のサンプルの制御情報が有効であるが、バッファデータの13番目のサンプルの制御情報は無効であるので、この位置については、図23の場合と同様に、データの統合が可能である。
これに対して、バッファデータの4番目と7番目のサンプルの制御情報が有効であるので、その位置の入力データとバッファデータを統合することはできない。
したがって、データ統合後の状態においても、入力データの4番目と7番目の制御情報は有効(FF)のままであり、この入力データを破棄することはできない。
したがって、この場合、データ統合部152は、このバッファデータを読み出し、MQ符号化させる。そして、データ統合部152は、図24の一番下の段に示されるように、入力データをバッファ部153に保持させ、新たなバッファデータとする。次にレジスタに展開される入力データは、このバッファデータと統合される。
図19に戻り、ステップS227において、整列部154は、バッファ部153から読みだされたバッファデータの並び替えを行い、制御情報が有効なデータをまとめる。
図25は、このデータの整列の様子の例を説明する図である。図25の上の段が、バッファ部153から読みだされた時の状態を示している。整列部154は、入力されたこのようなデータにおいて、図25の下の段に示されるように、制御情報が有効であるサンプルのデータを例えば左によせてまとめる(制御情報が有効なデータと無効なデータを分離する)。
このとき、図25に示されるように、順序が並び替えられたデータ群には、制御情報が有効であるデータの数を示す有効データ数の情報が付加される。さらに、実際には、コードストリームにする際に並び替えた順序を元に戻す必要があるので、制御情報が有効であるデータの元の位置(番地)の情報も管理される。
図19に戻り、ステップS228において、MQ符号化実行部155は、その制御情報が有効な各データについて、そのコンテキストでそのシンボルをMQ符号化する。
図25の例の場合、MQ符号化実行部155は、左から有効データ数分のデータ群をMQ符号化すればよい。このようにすることにより、MQ符号化実行部155は、制御情報が無効であるデータの符号化を適切に省略することができ、より効率よくMQ符号化を行うことができる。
図19に戻り、ステップS229において、データ統合部152は、レジスタの入力データを、バッファ部153に供給し、保持させる。ステップS229の処理を終了すると、ステップS230に進む。また、ステップS226において、入力データの中に、制御情報が有効なデータが存在しないと判定された場合、ステップS230に進む。
ステップS230において、レジスタ展開部151は、取得した所定数のコードブロックについて、未処理のサンプルが存在するか否かを判定する。未処理のサンプルが存在すると判定された場合、ステップS223に戻り、それ以降の処理を繰り返す。
また、ステップS230において、未処理のサンプルが存在しないと判定された場合、ステップS231に進む。ステップS231において、レジスタ展開部151は、ピクチャ内に未処理のコードブロックが存在するか否かを判定する。未処理のコードブロックが存在すると判定された場合、ステップS221に戻り、それ以降の処理を繰り返す。
また、ステップS231において、未処理のコードブロックが存在しないと判定された場合、MQ符号化処理を終了し、図10のステップS106に戻り、ステップS107以降の処理を行う。
以上のように、データ統合部152がデータを統合して制御情報が有効であるデータを集め、さらに、整列部154が、データの並び替えを行い、制御情報が有効であるデータをまとめることにより、MQ符号化実行部155は、制御情報が無効であるデータのMQ符号化を省略することができ、より効率よくMQ符号化を行うことができる。
これにより、画像符号化装置100は、より高速に符号化を行うことができる。
なお、バッファ部153が保持するバッファデータの数は任意である。つまり、バッファデータを複数設けるようにしてもよい。このようにすることにより、入力データのバッファデータへの統合がより容易になる。
例えば、図24の例のように、入力データに、バッファデータと統合することができなかった、制御情報が有効であるデータが存在する場合であっても、他のバッファデータとの統合ができる可能性がある。
当然、バッファデータの数を増大させると、その可能性は高くなる。ただし、バッファデータの数を増大させるとバッファ部153の容量が増大する。つまり、バッファデータの最適な数は、制御情報が有効なデータの集約率と、例えばコスト等とのトレードオフによって決定される。
<2.第2の実施の形態>
[画像符号化装置の構成]
以上においては、MQ符号化実行部155が、バッファ部153から読みだされた、制御情報が有効である各データをMQ符号化するように説明したが、さらに高速に符号化処理を行うことができるように、この複数のサンプルに対するMQ符号化を並列に実行することができるようにしてもよい。
ただし、ピクチャ内には、様々なタイプのコードブロックが存在するので、予め類似したコードブロック同士を集めておき、それらを一気にエンコードする方が効率的である。
図26は、本発明を適用したEBCOT105の他の構成例を示すブロック図である。図26に示されるEBCOT105は、基本的に図8の場合と同様の構成を有するが、図8のMQ符号化部112の代わりに、MQ符号化部312を有する。
MQ符号化部312は、MQ符号化部112と同様に、MQ符号化処理を行うが、MQ符号化部112の場合と異なり、互いに異なるサンプルのデータ群に対する複数のMQ符号化を並列に実行する。
MQ符号化部312は、基本的にMQ符号化部112と同様の構成を有するが、整列部154の代わりに整列部324を有し、MQ符号化実行部125の代わりに並列MQ符号化実行部325を有し、さらに、並列演算用データ生成部321を有する。
並列演算用データ生成部321は、並列に演算(MQ符号化)することができるように、コードブロック群を、コードブロックの特徴を表すパラメータによってグループ分けし、そのグループ毎に各コードブロックのデータ群をレジスタ展開部151に供給する。
つまり、上述したように、レジスタ展開部151には複数のコードブロックのデータ群が入力されるが、並列演算用データ生成部321は、その複数のコードブロックを、そのパラメータ(特徴)が互いに同一のコードブロックとするように制御する。
並列演算用データ生成部321は、ビットモデリング部111から供給される(矢印332)データ群を保持し、そのデータ群をコードブロック毎にグループ分けし、そのグループ毎にデータ群をレジスタ展開部151に供給する(矢印333)。
このパラメータとしては、コードブロックの特徴を表すものであればどのようなものであってもよいが、例えば、コードブロックの水平サイズ(h_size)、コードブロックの垂直サイズ(v_size)、サブバンドタイプ(LL,HL,LH.HH)、および、後述するように算出される符号化パス数(num_pass)を含むようにしてもよい。符号化パス数(num_pass)は、例えば、上述した式(1)のように算出される。もちろん、これら以外のものがパラメータに含まれていてもよい。
図27Aに示される例のように、ピクチャ内のコードブロックのサイズ(水平サイズおよび垂直サイズ)は全てが同一ではない。上述したように、コードブロック化は基本的に同一のサイズ(基本サイズ)とするように行われるが、画像(サブバンド)の両端や上端・下端等において、その基本サイズを確保できない場合がある。このような部分のコードブロックのサイズは、基本サイズより小さいものとなる。
また、上述したように、コードブロック化は係数データに対して行われるので、ピクチャ内の各コードブロックが属するサブバンドは全てが同一ではない。さらに、各コードブロックのゼロビットプレーン数(有効ビットプレーン数)は互いに独立しているので、符号化パス数もコードブロック毎に異なる可能性がある。
並列演算用データ生成部321は、ピクチャ内の各コードブロックのパラメータの値を比較し、図27Bに示されるように、全ての値が同一となるコードブロックをグループ化する。
図27Bにおいて、グループ361乃至グループ364は、それぞれ、このようにパラメータによって分類されたコードブロック群である。換言すれば、各グループにおいて、全てのコードブロックの全パラメータの値は、互いに同一である。
並列演算用データ生成部321は、各グループが最大16個のコードブロックにより形成されるように、パラメータによって分けたグループを、適宜分割する。図27Cの例に示されるグループ371乃至グループ376は、図27Bの各グループを、コードブロック数が最大16個となるように、さらに分割したものの中の一部である。例えば、図27Cのグループ371乃至グループ373は、図27Bのグループ361をさらに分割したものであり、図27Cのグループ374およびグループ375は、図27Bのグループ362をさらに分割したものである。図27Cのグループ376は、図27Bのグループ364に対応するが、グループ364に属するコードブロックの数が16以下であるので、グループ364と同じコードブロック数である。
なお、グループ内のコードブロック数が16個に満たない場合、並列演算用データ生成部321は、ダミーデータ(例えばゼロ値)を補充することで対応する(コードブロック数を疑似的に16個にする)。
レジスタ展開部151は、このグループ毎にコードブロックを蓄積し、そのデータ群をレジスタに展開する。このとき、同一グループに属するコードブロックのパラメータ(横サイズ、縦サイズ、符号化パス数(有効ビットプレーン数)、およびサブバンドタイプ)の値は、すべて互いに一致している。したがって、各コードブロックは、最も並列化が容易なデータ構造になっており、レジスタに展開される各サンプル(各データ群)は、互いに同一の方法でMQ符号化することができる。なお、1グループのコードブロック数は任意である。
図26に戻り、レジスタ展開部151、データ統合部152、およびバッファ部153は、図8の場合と同様に動作する。また、整列部324も図8の整列部154と基本的に同様に動作し、データの並び替えを行い、制御情報が有効であるデータをまとめる。
図26に示されるように、並列MQ符号化実行部325は、MQ符号化実行部155−1乃至MQ符号化実行部155−4を有する。MQ符号化実行部155−1乃至MQ符号化実行部155−4は、それぞれ、図8のMQ符号化実行部155と同様の処理部であり、同様に動作する。つまり、並列MQ符号化実行部325は、最大4並列にMQ符号化を行うことができる。
整列部324は、制御情報が有効であるデータを、MQ符号化実行部155−1乃至MQ符号化実行部155−4に分配する(矢印338乃至矢印341)。
MQ符号化実行部155−1乃至MQ符号化実行部155−4は、それぞれ、供給されたデータに対して、確率推定テーブル156を参照しながら(矢印342)MQ符号化を行う。MQ符号化実行部155−1乃至MQ符号化実行部155−4は、それぞれ、生成した符号語を符号化コードストリーム生成部106に供給する(矢印343乃至矢印346)。
つまり、図28に示されるように、並び替えられたデータ群は、点線で示されるように、4個ずつ並列にMQ符号化される。つまり、MQ符号化部312は、より高速にMQ符号化を行うことができる。しかも、原則、有効なMQ符号化しか行わないので、無駄が省ける効果がある。
なお、このMQ符号化の並列数は任意である。
[処理の流れ]
以上のようなMQ符号化処理の流れの例を図29および図30のフローチャートを参照して説明する。この処理は、図19のフローチャートを参照して説明したMQ符号化処理に対応する。
MQ符号化処理が開始されると、ステップS301において、並列演算用データ生成部321は、ビットモデリング部111から供給される、あるコードブロックのあるサンプルのシンボル、コンテキスト、および制御情報等のデータ群を取得する。
ステップS302において、並列演算用データ生成部321は、ピクチャ内の全てのコードブロックのデータ群を全て取得したか否かを判定する。取得していないと判定された場合、ステップS301に戻り、それ以降の処理を繰り返す。
ステップS302において、全てのコードブロックの全てのサンプルについてデータ群を取得したと判定された場合、ステップS303に進む。
ステップS303において、並列演算用データ生成部321は、各コードブロックのパラメータに基づいて、コードブロックのグループ分けを行う。ステップS304において、並列演算用データ生成部321は、未処理のグループの中から処理対象を選択する。
ステップS305において、並列演算用データ生成部321は、処理対象グループにコードブロックが予め定められた所定数(M個(Mは自然数))存在するか否かを判定する。存在する場合、ステップS307に進む。また、存在しない場合、ステップS306に進む。ステップS306において、並列演算用データ生成部321は、その処理対象グループに、所定数(M個)に不足するコードブロック数分のダミーデータ(例えば、全て0のデータ)を追加する。ステップS306の処理を終了するとステップS307に進む。
ステップS307において、レジスタ展開部151は、処理対象グループの各コードブロックの処理対象サンプルのシンボル、コンテキスト、および制御情報をレジスタに展開する。このレジスタに展開されたデータ群を入力データと称する。
ステップS308において、データ統合部152は、レジスタに展開された入力データ中の、制御情報が有効なデータをバッファ部153に保持されているデータ群(バッファデータ)に統合する。ステップS308の処理を終了すると図30のステップS321に進む。
ステップS321において、データ統合部152は、統合後の入力データの中に制御情報が有効であるデータが存在するか否かを判定する。存在すると判定された場合、ステップS322に進む。ステップS322において、データ統合部152は、バッファ部153からバッファデータを読み出す。
ステップS323において、整列部324は、バッファ部153から読みだされたバッファデータの並び替えを行い、制御情報が有効なデータをまとめる。ステップS324において、並列MQ符号化実行部325は、制御情報が有効な各データを並列にMQ符号化する。
ステップS325において、データ統合部152は、レジスタの入力データを、バッファ部153に供給し、保持させる。ステップS325の処理を終了すると、ステップS326に進む。また、ステップS321において、入力データの中に、制御情報が有効なデータが存在しないと判定された場合、ステップS326に進む。
ステップS326において、レジスタ展開部151は、処理対象グループに属するコードブロックについて、未処理のサンプルが存在するか否かを判定する。未処理のサンプルが存在すると判定された場合、図29のステップS307に戻り、それ以降の処理を繰り返す。
また、図30のステップS326において、未処理のサンプルが存在しないと判定された場合、ステップS327に進む。ステップS327において、並列演算用データ生成部321は、ピクチャ内に未処理のグループが存在するか否かを判定する。未処理のグループが存在すると判定された場合、図29のステップS304に戻り、それ以降の処理を繰り返す。
また、図30のステップS327において、未処理のグループが存在しないと判定された場合、MQ符号化処理を終了し、図10のステップS106に戻り、ステップS107以降の処理を行う。
以上のように、MQ符号化部312は、複数のMQ符号化を並列に実行することができ、MQ符号化部112の場合よりもさらに効率よくMQ符号化を行うことができる。これにより、画像符号化装置100は、より高速に符号化を行うことができる。しかも、原則、有効なMQ符号化しか行わないので、無駄が省ける効果がある。
[適用例]
なお、データを展開するレジスタのレジスタ長は任意である。一般的に、コンピュータやハードウェアのデータレジスタ長は最初の設計の段階で決まっている。つまり、レジスタ長は、ハードウェアの仕様に依存する場合が多い。図31は、画像符号化装置を適用するハードウェアの構成例を示す図である。
図31に示される構成は、CBE(Cell Broadband Engine)と称されるプロセッサの中に8個存在するサブプロセッサであるSPE(Synergistic Processing Elements)の構成である。図27に示されるように、SPEにおいては、256KBのLocal Store(キャッシュメモリ)に対して、128ビット単位の読み出しや書き込み(Read/Write)が可能な構成になっている。つまり、これはレジスタ長が128ビットであることに対応している。
なお、図26に示されるMQ符号化部312において、レジスタにデータを展開するコードブロック数Nと、並列MQ符号化実行部325の実行可能な並列数(並列MQ符号化実行部325が有するMQ符号化実行部155の数)Mは、それぞれ任意であり、互いに異なる値であってもよいし、互いに同じ値であってもよい(NおよびMは自然数)。
また、ビットモデリング部111において、ビットモデリングを並列化するようにしてもよい。その場合、図27を参照して説明したMQ符号化の並列化の場合と同様に、パラメータが互いに同一の複数のコードブロックを所定数毎にグループ化することにより、適切かつ容易に並列化を実現することができる。
ビットモデリングを並列化する場合、その並列化したそれぞれについてMQ符号化を行う場合、各MQ符号化部を、図8のMQ符号化部112のように実現してもよいし、図26のMQ符号化部312のように実現するようにしてもよい。ビットモデリングの並列化とMQ符号化の並列化を互いに独立して実現するようにしてももちろんよい。
<3.第3の実施の形態>
[パーソナルコンピュータ]
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。この場合、例えば、図32に示されるようなパーソナルコンピュータとして構成されるようにしてもよい。
図32において、パーソナルコンピュータ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にインストールされる。
上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
この記録媒体は、例えば、図32に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(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符号化部, 141 選択部, 142 CUパス部, 143 SPパス部, 144 MRパス部, 145 切り替え部, 151 レジスタ展開部, 152 データ統合部, 153 バッファ部, 154 整列部, 155 MQ符号化実行部, 156 確率推定テーブル, 312 MQ符号化部, 321 並列演算用データ生成部, 324 整列部, 325 並列MQ符号化実行部

Claims (13)

  1. 画像データをウェーブレット変換して得られるサブバンド毎の係数データに対して符号化のビットモデリングを行うビットモデリング手段と、
    前記ビットモデリング手段により得られる、シンボル、コンテキスト、および制御情報よりなる複数のデータセットを入力データとしてレジスタに展開する展開手段と、
    前記展開手段により展開された前記入力データをバッファデータとして保持する保持手段と、
    前記展開手段により展開されている前記入力データの中の前記制御情報が有効な前記データセットと、前記保持手段に保持されている前記バッファデータの中の前記制御情報が有効な前記データセットとを統合する統合手段と、
    前記統合手段により統合された前記制御情報が有効な前記データセットを符号化する符号化手段と
    を備える符号化装置。
  2. 前記統合手段は、前記バッファデータの中の前記制御情報が無効なデータセットを検出し、前記入力データの中の前記制御情報が有効なデータセットのうち、前記バッファデータにおいて検出された前記データセットと同じ位置のデータセットを、前記バッファデータの同じ位置に移動させることにより、前記制御情報が有効な前記データセットの統合を行う
    請求項1に記載の符号化装置。
  3. 前記統合手段により前記データセットが統合された後、前記入力データに前記制御情報が有効な前記データセットが含まれる場合、前記保持手段から前記バッファデータを読み出す読み出し手段をさらに備え、
    前記符号化手段は、前記読み出し手段により読み出された前記バッファデータの中の前記制御情報が有効な前記データセットを符号化し、
    前記保持手段は、前記読み出し手段により前記バッファデータが読み出された後、前記レジスタに展開されている前記入力データを新たなバッファデータとして保持する
    請求項1に記載の符号化装置。
  4. 前記読み出し手段により前記保持手段から読み出された前記バッファデータを並べ替え、前記制御情報が有効な前記データセットをまとめる整列手段をさらに備え、
    前記符号化手段は、前記整列手段により並べ替えられてまとめられた前記制御情報が有効な前記データセットを符号化する
    請求項3に記載の符号化装置。
  5. 前記符号化手段は、前記統合手段により統合された前記制御情報が有効な、互いに異なる前記データセットに対する複数の符号化を並列に行う
    請求項1に記載の符号化装置。
  6. 前記展開手段は、複数のコードブロックのそれぞれの、互いに同じ位置のサンプルに対応する前記データセットを前記入力データとして前記レジスタに展開する
    請求項1に記載の符号化装置。
  7. 複数の前記コードブロックを、互いに同一の特徴を有する所定数のコードブロック毎にグループ分けするグループ分け手段をさらに備え、
    前記展開手段は、前記グループ分け手段により生成されたグループ毎に、グループ内の各コードブロックの互いに同じ位置のサンプルに対応する前記データセットを前記入力データとして前記レジスタに展開する
    請求項1に記載の符号化装置。
  8. 前記グループ分け手段は、前記コードブロックの水平サイズおよび垂直サイズ、前記コードブロックにおいて用いられる符号化パスの数を示す符号化パス数、並びに、前記コードブロックが属するサブバンドタイプを含む、前記コードブロックの特徴を示すパラメータに基づいて、前記コードブロックのグループ分けを行う
    請求項7に記載の符号化装置。
  9. 前記ビットモデリング手段は、CUパス、SPパス、またはMRパスのいずれかの符号化パスにより符号化を行うことを選択し、選択した符号化パスにより所定の演算を行う
    請求項1に記載の符号化装置。
  10. 前記制御情報は、前記CUパスから送出されたものであって、ランレングス符号化結果が0になる有効・無効情報、ランレングス符号化の結果が1になる有効・無効情報、CU符号化を行うか否かの有効・無効情報、更にSign符号化を行うか否かの有効・無効情報、のいずれかである
    請求項9に記載の符号化装置。
  11. 前記制御情報は、前記SPパスから送出されたものであって、SP符号化を行うか否かの有効・無効情報、Sign符号化を行うか否かの有効・無効情報、のいずれかである
    請求項9に記載の符号化装置。
  12. 前記制御情報は、前記MRパスから送出されたものであって、MR符号化を行うか否かの有効・無効情報である
    請求項9に記載の符号化装置。
  13. 画像データをウェーブレット変換して得られるサブバンド毎の係数データに対して符号化のビットモデリングを行い、
    前記ビットモデリングにより得られる、シンボル、コンテキスト、および制御情報よりなる複数のデータセットを入力データとしてレジスタに展開し、
    前記レジスタに展開された前記入力データをバッファデータとして保持部に保持し、
    前記レジスタに展開されている前記入力データの中の前記制御情報が有効な前記データセットと、前記保持部に保持されている前記バッファデータの中の前記制御情報が有効な前記データセットとを統合し、
    統合された前記制御情報が有効な前記データセットを符号化する
    符号化方法。
JP2009242770A 2009-10-21 2009-10-21 符号化装置および方法 Withdrawn JP2011091577A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009242770A JP2011091577A (ja) 2009-10-21 2009-10-21 符号化装置および方法
US12/924,905 US20110091119A1 (en) 2009-10-21 2010-10-07 Coding apparatus and coding method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009242770A JP2011091577A (ja) 2009-10-21 2009-10-21 符号化装置および方法

Publications (1)

Publication Number Publication Date
JP2011091577A true JP2011091577A (ja) 2011-05-06

Family

ID=43879335

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009242770A Withdrawn JP2011091577A (ja) 2009-10-21 2009-10-21 符号化装置および方法

Country Status (2)

Country Link
US (1) US20110091119A1 (ja)
JP (1) JP2011091577A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BRPI0817770B1 (pt) * 2007-10-16 2020-11-10 Interdigital Madison Patent Holdings métodos e aparelhos para a remoção de artefatos para a escalabilidade de profundidade em bits

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5842033A (en) * 1992-06-30 1998-11-24 Discovision Associates Padding apparatus for passing an arbitrary number of bits through a buffer in a pipeline system
JP3906630B2 (ja) * 2000-08-08 2007-04-18 ソニー株式会社 画像符号化装置及び方法並びに画像復号装置及び方法

Also Published As

Publication number Publication date
US20110091119A1 (en) 2011-04-21

Similar Documents

Publication Publication Date Title
Schwartz et al. Implementation of compression with reversible embedded wavelets
KR101129655B1 (ko) 압축비가 높고 최소의 자원을 필요로 하는 고속 코덱
JP2011091576A (ja) 符号化装置および方法
WO2001076255A1 (en) Video encoding method using a wavelet transform
JP2011091575A (ja) 符号化装置および方法
JPH11163733A (ja) 符号化方法および装置
Descampe et al. A flexible hardware JPEG 2000 decoder for digital cinema
JP5966345B2 (ja) 画像処理装置および方法
JP2004505520A (ja) ウェーブレット分解を用いたビデオ符号化方法
Chew et al. Very low-memory wavelet compression architecture using strip-based processing for implementation in wireless sensor networks
JP4514169B2 (ja) デジタル信号変換装置及び方法
JP2013243477A (ja) 画像処理装置および方法、並びに、プログラム
JP5966347B2 (ja) 画像処理装置および方法
US9521431B2 (en) Method and a system for wavelet based processing
CN1809169A (zh) 对画面进行无损直流分量编码的方法和设备
JP2011091577A (ja) 符号化装置および方法
Saidani et al. An efficient hardware implementation of parallel EBCOT algorithm for JPEG 2000
JP5966346B2 (ja) 画像処理装置および方法
US8249375B2 (en) Information processing apparatus and method
JP2010245855A (ja) 情報処理装置および方法
Auli-Llinas et al. J2K: introducing a novel JPEG2000 coder
Zhang et al. EBCOT coprocessing architecture for JPEG2000
JP4111761B2 (ja) 画像処理装置
JP2010213059A (ja) 画像符号化装置及び画像符号化方法
JP2007049485A (ja) 離散ウェーブレット変換装置及び方法、並びにプログラム及び記録媒体

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