JPEG 2000
この一連の手順はラグランジュの未定乗数法を用いることで実現できる。
レイヤ(Layer)生成
また、上述のレート制御処理は、コードストリームのプログレッション順序の構成要素の一つであるレイヤを形成するためにも用いられる。レイヤとは、SNR(Signal-to-Noise Ratio, SNR)スケーラビリティを実現するための概念である。
レイヤを用いたSNRスケーラビリティとは。最上位レイヤから最下位レイヤにデコード処理が進むにしたがって、段階的にデコード画像の画質が向上する(SNRが向上する)機能を意味する。レート制御処理によって、各コードブロックの符号化パスがどの程度画質に寄与するかが予測できるため、この情報を用いてレイヤを生成する。具体的には、各コードブロックにおいて、どのレイヤに符号化パスがいくつ属するかをレート制御によって得られる情報をもとに決定する。このレイヤごとのパス数は、パケットヘッダ生成アルゴリズムによってパケットヘッダに記録される。
JPEG 2000では、2分割フィルタバンクに基づく分離型2次元DWTが採用されている。分離型2次元DWTは、1次元に対する処理を、水平・垂直方向に施すことによって2次元の変換係数を得る手法である。Part 1では、ロッシーモード用とロスレスモード用の2つのDWTが定義されている。それぞれのDWTは、リフティングと呼ばれる構成法を取ることによって実現される。リフティング構成を取る理由は、数学的に可逆な変換が、変換係数の精度を有限(例えば整数)にしたとしても実現できることにある。下図は、3レベルの2次元DWTの実行例である。水平方向・垂直方向の各次元で、ローパスおよびハイパスフィルタがかけられるため、1レベルのDWTによって、4つのサブバンド(LL:水平垂直ローパス、HL:水平ハイパス、垂直ハイパス、LH:水平ローパス、垂直ハイパス、HH:水平垂直ハイパス)が生成される。各レベルでは、LLサブバンドを次々に分解していくオクターブ分割が実行される。Part 1で許されるDWTレベル数は0〜32と規定されている。
各々のDWTレベルにおいて、下図に示すようにプリシンクトと呼ばれる矩形領域が定義される。
プリシンクトのサイズは2のべき乗の整数でなければならず、最大で 2 15 × 2 15 {\displaystyle 2^{15}\times 2^{15}} のサイズを取ることができる。同一番号のプリシンクトは画像の部分領域を構成するDWT係数と考えることができ、後述するパケットおよびプログレッション順序の構成要素となる。
デジタルシネマ、公文書や芸術作品のアーカイブ、医療用画像の圧縮、業務用途の画像配信システム、監視カメラ、PDFファイル内の画像フォーマットなどでは既に広く使われている。高い圧縮効率や豊富な機能を備えていることから、発表当初はコンシューマ向け分野でも急激に普及することが期待されたが、JPEGと比較すると計算負荷が高くバッテリー消費が激しいことや、またスループットを稼げず連写速度の向上が難しいことから、デジタルカメラ用途での採用は進んでいない。
Part 15(High Throughput JPEG 2000)では、EBCOTの弱点であった計算負荷の高さとそれに起因する低スループットおよびバッテリー消費量の問題を解決するべく、新しいブロック符号化アルゴリズムが標準化された。若干の圧縮効率の低下と引き換えに、10倍以上のスループット向上が達成されている。また、決して並列化向きのアルゴリズムではなかったEBCOTとは異なり、GPUなどによる並列化を強く意識したアルゴリズムとなっており、並列化によるスループットのさらなる向上が期待できる。
Part 1では、スカラー量子化のみがサポートされている。Part 2ではTCQ(Trellis Coded Quantization)と呼ばれる量子化方法も使用可能である。
サブバンド b {\displaystyle b} のDWT変換係数を x b {\displaystyle x_{b}} 、ステップサイズを Δ b {\displaystyle \Delta _{b}} とおくと、スカラー量子化後の変換係数 Q ( x b ) {\displaystyle Q(x_{b})} は次式で表される。
Q ( x b ) = s i g n ( x b ) ⌊ | x b | Δ b ⌋ {\displaystyle Q(x_{b})=sign(x_{b})\left\lfloor {\frac {|x_{b}|}{\Delta _{b}}}\right\rfloor }
ロスレスモードでは、量子化による情報の損失は許されないため、 Δ b = 1 {\displaystyle \Delta _{b}=1} で固定である。ロッシーモードにおけるステップサイズは、各DWTレベル、各サブバンドごとに異なる値を指定できる。