JBIG2

JBIG2は、Joint Bi-level Image Experts Group(JBIG)によって開発された二値画像のpreserve=1標準である。可逆圧縮と非可逆圧縮の両方に適応している。
JBIGからのプレスリリースによると、可逆圧縮モードでは、JBIG2は通常、Group 4 compressionより3-5倍、それ以前の二値画像圧縮標準であるJBIGより2-4倍小さいファイルを生成する。JBIG2は2000年にITU-T勧告 T.88、2001年にISO/IEC 14492として国際規格化された。

**機能**
理想的には、JBIG2エンコーダは、入力ページをテキストの領域、ハーフトーン画像の領域、その他のデータの領域に分割する。テキストでもハーフトーンでもない領域は、一般的には、MQコーダと呼ばれるコンテキスト依存の算術符号アルゴリズムを使用して圧縮される。テキスト領域は、次のように圧縮される。領域の前景ピクセルは、シンボルにグループ化される。次に、一般的には、コンテキスト依存算術符号を使用してシンボルの辞書が作成されて符号化され、領域は、どのシンボルがどこに現れるかを記述することによって符号化される。通常、シンボルはテキストの文字に対応するが、これは圧縮メソッドでは必要ない。非可逆圧縮の場合、類似の記号間の差異（例えば、同じ文字のわずかに異なる印影）は無視することができる。可逆圧縮の場合、この差は、別のものをテンプレートとして使用して1つの類似する記号を圧縮することによって考慮される。ハーフトーン画像は、ハーフトーンを生成するために使用されるグレースケール画像を再構成し、この画像をハーフトーンパターンの辞書と共に送信することによって圧縮することができる。全体として、JBIG2がテキストを圧縮するために使用するアルゴリズムは、DjVuファイル形式で二値画像を符号化するために使用されるJB2圧縮方式と非常に似ている。
PDFファイルのバージョン1.4以降には、JBIG2圧縮データが含まれている可能性がある。JBIG2用のオープンソースデコーダには、jbig2dec、Javaベースのjbig2-imageioや、xpdfバージョン2.00以降で使用されているデコーダがある。 オープンソースのエンコーダはjbig2encである。

**技術的な詳細**
一般的に二値画像は、主として同じ形状が繰り返し現れる大量のテキストおよびハーフトーンデータからなる。二値画像は、テキスト、ハーフトーン、およびジェネリック領域の3つの領域に分割される。各領域は別々の方式で符号化される。符号化方法論は以下の節で説明する。

**テキスト画像データ**
テキストの符号化は、人間の視覚的解釈の性質に基づいている。人間は、二値画像内の同じ文字の2つのインスタンスの違いを、たとえそれが画素ごとに正確に一致していなかったとしても、区別することはできない。従って、同じ文字の各出現のビットマップを個別に符号化する代わりに、1つの代表的な文字インスタンスのビットマップのみを符号化する必要がある。各文字のインスタンスについて、その文字のコード化されたインスタンスが「記号辞書」に格納される。テキスト画像データには、パターンマッチング・置換法(PM&S: pattern matching and substitution)とソフトパターンマッチング法(SPM: soft pattern matching)という2つの符号化方法がある。これらの方法については、以下のサブセクションで説明する。
パターンマッチング・置換法
画像セグメンテーションと一致検索を実行した後、一致が存在する場合、辞書内の対応する代表ビットマップのインデックスとページ上の文字の位置をコード化する。位置は、通常、以前にコード化された別の文字からの相対位置である。一致するものが見つからない場合、セグメント化されたピクセルブロックは直接コーディングされ、辞書に追加される。PM&S法は顕著な圧縮を達成することができるが、画像解像度が低い場合には、処理中に置換エラーが生じる可能性がある。
ソフトパターンマッチング法
辞書へのポインタおよび文字の位置情報に加えて、画像内の元の文字を再構成するために重要な情報であるため、詳細化データ(refinement data)も必要となる。詳細化データの導入により、文字置換エラーが非常に起こりにくくなる可能性がある。詳細化データは、現在の所望の文字インスタンスを含み、これは、辞書内の現在の文字および一致する文字の両方のピクセルを用いて符号化される。現在の文字インスタンスが一致した文字と高度に相関することが知られているので、現在のピクセルの予測はより正確である。

**ハーフトーン**
ハーフトーン画像は、2つの方法で圧縮できる。1つ目の方法は、コンテキスト依存算術符号アルゴリズムに類似しており、隣接ピクセル間の相関を得るためにテンプレートピクセルを適応的に配置する。2つ目の方法は、画像がグレースケールに戻されるように、ハーフトーン画像に対してデスクリーニングが実行される。変換されたグレースケール値は、ハーフトーンビットマップ辞書に含まれる固定サイズの小さなビットマップパターンのインデックスとして使用される。これにより、デコーダは、互いに隣接するインデックス付き辞書ビットマップパターンを提示することによって、ハーフトーン画像をうまくレンダリングすることが可能になる。

**算術エントロピー符号**
テキスト、ハーフトーン、ジェネリックの3つの領域タイプは全て、算術符号を使用することができる。JBIG2では特にMQコーダーを使用する。

**特許**
JBIG2の特許はIBMと三菱電機が所有している。要求することで、無料でライセンスを利用することができる。JBIGとJBIG2の特許は同じではない。

**短所**
JBIG2圧縮は、非可逆モードで使用すると、破損として認識できないような形でテキストを変更してしまう可能性がある。これは、圧縮アーティファクトが単純にぼかしとなって明白になる他のアルゴリズムとは対照的である。JBIG2は類似したシンボルを一致させようとするので、例えば、数字の「6」と「8」が置き換えられることがある。
2013年、ゼロックスのWorkcentre複写機やプリンタで、さまざまな文字の置換（「6」と「8」の置き換えなど）の発生が報告された。それにより、スキャンされた（OCRされていない）文書に印刷された数字が変更されている可能性がある。これは工事の青写真やいくつかの数表で実証されている。医療処方箋などの書類におけるそのような置換エラーの潜在的な影響についても軽く言及された。David Krieselとゼロックスがこれを調査した。
その後、ゼロックスはこれが長年にわたるソフトウェアの欠陥であることを認めた。工場出荷時の設定ではないことを示唆する最初の声明は間違っていた。この問題に包括的に対処するパッチは8月後半に公開されたが、影響を受ける機器の回収や強制アップデートは行われなかった。それ以前にスキャンされた文書には、潜在的にエラーが含まれており、その真実性を実証することが困難である。その後、ドイツとスイスの監督官は（2015年に）アーカイブ文書にJBIG2符号化を使用することを禁止した。

**注釈・出典**

**外部リンク**
 A JBIG2 Primer- T.88: Lossy/lossless coding of bi-level images- STDU Viewer - freeware viewer for JBIG2 files and some another formats- OpenSource Java JBIG2 image decoder from IDRsolutions