.jp2
JPEG 2000
![]() | |
![]() オリジナルのJPEGフォーマットとJPEG 2000との比較 | |
拡張子 | .jp2, .jpg2,.jpc,.jph,.j2c, .j2k, .jpf, .jpx, .jpm, .mj2,.jph |
---|---|
MIMEタイプ | image/jp2, image/jp2, image/jpx, video/mj2, image/jpm,image/jph |
開発者 | Joint Photographic Experts Group |
種別 | 画像ファイルフォーマット |
国際標準 | ISO/IEC 15444 |
オープン フォーマット | はい。 |
JPEG 2000(ジェイペグにせん)は、静止画像圧縮技術及び同技術を用いた画像フォーマットの呼称である。ISOとITUの共同組織であるJoint Photographic Experts Groupによって、国際標準化が進められており、ISO/IECの規格書15444およびITU-Tの勧告書Rec.T.800シリーズとして出版されている。
JPEG2000と詰めて書かずに、JPEG 2000と書くのが正式な表記である。JPEG 2000では、JPEGを上回る圧縮効率とスケーラビリティなどの機能を付加することを目的に規格策定作業が進められた[1][2]。なお、国際標準の規格書/勧告書で規定されているのは、JPEG 2000のコードストリームをデコードするための手順である。したがって、エンコーダの仕様については何も定められていない。どのように実装されたとしても、エンコーダに要求されるのは、標準によって規定された手順でデコードできるコードストリームを出力することである。
技術の概要
JPEG 2000では、JPEGと同様、入力画像に対して周波数変換を施し、その変換係数に対して量子化、エントロピー符号化を適用することで画像の持つデータ量を圧縮する。JPEGとの要素技術における主な相違点は、以下の通り。
- 周波数変換に離散コサイン変換ではなく、離散ウェーブレット変換 (Discrete Wavelet Transform:DWT)を用いること
- エントロピー符号にハフマン符号ではなく、算術符号を用いること
- 可逆符号化(ロスレス)と非可逆(ロッシー)符号化を同一の方式にて実現可能であること
JPEG 2000は、一つの圧縮画像を様々な解像度やビットレート等で利用できるというスケーラビリティ機能を有しているが、これは特に、量子化された変換係数から圧縮されたビットストリームを生成する役割を担うEBCOT(Embedded Block Coding with Optimized Truncation[3])アルゴリズムの持つ、高い符号化効率、圧縮後のレート制御(Post Compression Rate Distortion Optimization:PCRD-opt)などの特長に依るところが大きい。
Part
2020年6月現在、JPEG 2000はPart1からPart16までが標準化されている[4]。
ITU-T側で出版されている勧告書のうち、無料で入手可能なものには参照を付した。
Part | 内容 | ISO/IEC IS | ITU-
T Rec. |
---|---|---|---|
1 | 基本方式, 基本ファイルフォーマット .jp2 | 15444-1 | T.800 |
2 | 拡張 | 15444-2 | T.801 |
3 | Motion JPEG 2000, 動画像向けファイルフォーマット .mj2 | 15444-3 | T.802 |
4 | 適合性試験 | 15444-4 | T.803[5] |
5 | 参照ソフトウェア | 15444-5 | T.804[6] |
6 | 複合画像(文字と写真等が混在した画像)向けファイルフォーマット .jpm | 15444-6 | T.805[7] |
7 | |||
8 | Secure JPEG 2000, JPEG 2000画像のためのセキュリティサービス (JPSEC) | 15444-8 | T.807[8] |
9 | 双方向通信のためのツール, API, JPIPプロトコル | 15444-9 | T.808[9] |
10 | 3次元画像データのための拡張 | 15444-10 | T.809[10] |
11 | ワイヤレス通信のための誤り検出・訂正符号化 (JPWL) | 15444-11 | T.810[11] |
12 | |||
13 | エントリレベルエンコーダ | 15444-13 | T.812[12] |
14 | XMLによるファイルフォーマットあるいはコードストリームの記述法 (JPXML) | 15444-14 | T.813[13] |
15 | 高スループットブロック符号化, High Throughput JPEG 2000 (HTJ2K), .jph | 15444-15 | T.814 |
16 | JPEG 2000画像のHEIF(ISO/IEC 23008-12)へのカプセル化 | 15444-16 | T.815 |
コードストリーム構造
JPEG 2000のコードストリーム構造の例を以下の図に示す。図内の用語のうち、タイルパート・レイヤ・DWTレベル・コンポーネント・プリシンクト・パケットヘッダ・サブバンドについては後述する。

基本的には、SOC(Start of Codestream)マーカから始まるバイナリデータであり、その終端はEOC(End of Codestream)である。
SOCマーカの直後からメインヘッダが格納されており、各種符号化パラメータに関する情報がここに記録されている。メインヘッダの直後より、タイルパートが格納される。各タイルパートはタイルパートヘッダから始まる。タイルパートヘッダの直後より、そのタイルパートに含まれる圧縮データが格納される。
この圧縮データは、プログレッション順序に基づいて格納される。プログレッション順序とは、レイヤ(ある画質あるいはビットレートに対応する圧縮データの集合)、DWTレベル(DWTの分解レベルに対応する圧縮データの集合)、コンポーネント(色コンポーネント成分に対応する圧縮データの集合)、プリシンクト(DWT係数内の部分空間に対応する圧縮データの集合)の4つの要素のうち、優先的にデコードする要素の階層構造を意味する。コードストリームが取り得るプログレッション順序については後述する。
符号化手順
下図は、JPEG 2000 Part 1の符号化手順のブロック図である。なお、本符号化手順は参考例であり、規格化されたものではないことに注意されたい。以下では、Part 1エンコーダにおける各ブロックの処理内容について述べる。以後、ここでは非可逆符号化をロッシーモード、可逆符号化をロスレスモードと呼ぶ。

入力画像
規格上サポートされる入力画像のサイズ・ビット深度・色コンポーネント数などを以下にまとめる。各値は、実際にはエンコーダ・デコーダの実装上の制約を受ける。
- サイズ:
順方向2次元DWTの例 各々のDWTレベルにおいて、下図に示すようにプリシンクトと呼ばれる矩形領域が定義される。
JPEG 2000におけるプリシンクト プリシンクトのサイズは2のべき乗の整数でなければならず、最大で
コードブロック分割の例 コードブロックのサイズは、水平・垂直方向それぞれのサイズが4以上1024以下、面積が4096以下の条件を満たす2のべき乗の整数から自由に選ぶことができる。一般に64x64や、32x32のサイズが用いられることが多い。メインヘッダに記録されるコードブロックのサイズは一つであるが、実際のコードブロックサイズは画像サイズやDWTレベル数、プリシンクトサイズなどの様々なパラメータによって決定され、かならずしも全てのコードブロックで同一とはならない。コードブロック内の量子化されたDWT係数は、符号絶対値表現(符号付数値表現)で表される2進数として表現され、以後の処理はビットプレーンごとに進められる。
EBCOTにおけるビットプレーン 上図は、EBCOTにおけるビットプレーンの概念を示している。なお、図中の
EBCOTにおける係数ビットのスキャンパターン 最上位ビットプレーンをスキャンする際には、上位のビットプレーンに関する情報が得られないため、必ずCleanupパスとして処理される。最上位のすぐ次のビットプレーンからは、SP→MR→CUの順に属する符号化パスが決定される。
符号化パスの決定には、現在の係数ビットと、その周辺8近傍の係数ビットの状態が用いられる。係数ビットは"1"か"0"の値をとるが、それぞれ"有意"および"非有意"状態とみなされる。
SPパスは自身が非有意かつ周辺にすでに有意となった係数ビット存在する係数ビットが属する。このとき、現在の係数ビットは非有意から有意の状態へと更新される。
MRパスは、上位ビットプレーンですでに有意となっている係数ビットが属する。
CUパスは、SPパスにもMRパスにも属さない係数ビットが属する。
なお、それぞれの符号化パスは、さらにその周辺係数ビットの有意状態の情報に、コンテクスト(CX)と呼ばれるラベルが付けられる。規格で規定されたコンテクストの数は19である。
MQ符号化
概要
SP、MR、CUの各符号化パスに属する係数ビットは、そのコンテクストCXの値と共に2値算術符号化器であるMQ-coderへと送られ、算術符号化される。MQ-coderは、各コンテクストごとに独立した確率遷移テーブルを持つ。この確率遷移テーブルのエントリ数は46である。
MQ-coderは、係数ビットの正負を表す符号ビットと、値ビットから計算されるディシジョンビットDと、CXを入力として、出力ビットを計算する。符号ビットが入力されるのは、初めて有意となる係数ビットが符号化されるときに限られる。MQ-coder内には5つのレジスタが存在し、そのうちの出力ビットを蓄えているレジスタ上でバイト境界に達すると、バイトストリームとして1バイトが新たに出力される。この際、デコーダにとって重要なマーカとなるFF90h〜の値がバイトストリーム内に出現するのを回避するため、直前のバイト出力がFFhであった場合には、レジスタ内における次のバイト境界の先頭1ビットをスキップし、データを書き込まないようにする処理が追加される。これはビットスタッフィングと呼ばれる。
終端処理
コードブロック内の全ての係数ビットを符号化した後でも、通常、MQ-coder内のレジスタにはバイト境界に満たない符号語が残っているため、終端処理によって全ての係数ビットをデコードするのに必要な長さの符号語を出力する。
符号化モード
MQ-coderには、符号化モードとして、以下の6つのモードがオプションとして用意されている。
- Selective arithmetic coding bypass:
- 最上位から数えて5つ目のビットプレーン以降のSPおよびMRパスに属する係数ビットをRAWデータのまま符号語とするモード。CUパスは常に算術符号化される。
- Reset context probabilities on coding pass boundaries
- 各符号化パスの符号化開始時に各コンテクストごとの確率遷移テーブルを初期状態にリセットするモード。
- Termination on each coding pass
- 各符号化パスの符号化終了時に終端処理を呼び出すモード。
- Vertically causal context
- コンテクストの値を求める際のウインドウが、ひとつ下のstripeにまたがれないように制約を与えるモード。
- Predictable termination
- 終端処理を規定された方法で行うモード。
- Segmentation symbol
- エラー耐性機能のために、CUパス符号化終了時に特別なシンボルを挿入し符号語に加えるモード。
レート制御(オプション)
レート歪み最適化(Rate-Distortion Optimization)
EBCOTでは、MQ符号化後のバイトストリームに対して、符号化パスを最小単位として符号切り捨てを行うことで圧縮後のレート歪最適化(PCRD-opt)を行うことが可能である。レート制御については、エンコーダにおける処理であるため規定された技術はないが、一般的に以下の処理によって実現されることが多い。
コードブロック
- Selective arithmetic coding bypass:
JP-2
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/01 02:17 UTC 版)
JP-1同様第2次世界大戦中に制定された米軍のジェット燃料である。JP-1より高い析出点に緩和することで製造を容易にすることを目的とした実験燃料。
※この「JP-2」の解説は、「ジェット燃料」の解説の一部です。
「JP-2」を含む「ジェット燃料」の記事については、「ジェット燃料」の概要を参照ください。
- JP2のページへのリンク