この規格 プレビューページの目次
※一部、英文及び仏文を自動翻訳した日本語訳を使用しています。
序章
このおすすめ |国際規格は、ISO/IEC JTC1/SC29/WG9 および CCITT SGVIII の合同バイレベル画像専門家グループ (JBIG) によって作成されました。 JBIG 専門家グループは、2 値画像のプログレッシブ エンコーディングの標準を確立するために 1988 年に設立されました。
プログレッシブ エンコーディング システムは、最初に画像の低解像度バージョンの圧縮データを送信し、次に必要に応じて追加の圧縮データを送信することで圧縮画像を送信します。このおすすめ |国際標準は、プログレッシブ、プログレッシブ互換シーケンシャル、およびシングル プログレッション シーケンシャル モードを持つコーディング方法を定義し、必要な低解像度のレンディションを取得する方法を提案します。定義されたコーディングおよび解像度削減アルゴリズムを効果的に使用して、グレースケールおよびカラー画像、ならびに 2 値画像のロスレス コーディングが可能であることがわかっています。
0.1 一般特性
この仕様は、2 値画像 (つまり、白黒画像のように 2 色しか持たない画像) の無損失圧縮符号化の方法を定義します。定義された方法は、グレースケールおよびカラー画像のコーディングにも使用できます。画像の特性に適応するため、画像の種類に対してロバストです。印刷された文字のスキャンされた画像では、観測された圧縮率は、勧告 T.4 (G3) および T.6 (G4) で説明されている MMR 符号化アルゴリズム (それほど複雑ではない) によって達成される圧縮率の 1.1 倍から 1.5 倍でした。印刷された文字のコンピューターで生成された画像では、観測された圧縮率は 5 倍にもなりました。ハーフトーンまたはディザリングによってレンダリングされたグレースケールの画像では、観察された圧縮率は 2 ~ 30 倍でした。
この方法はビット保存です。つまり、勧告 T.4 および T.6 と同様に、歪みがなく、最終的にデコードされた画像は元の画像と同じになります。
このメソッドには、「プログレッシブ」機能もあります。プログレッシブ コーディングされたイメージをデコードする場合、元のイメージの低解像度のレンディションが最初に利用可能になり、その後、より多くのデータがデコードされるにつれて解像度が 2 倍になります。解像度の低減は高解像度レイヤから低解像度レイヤに実行され、復号化は低解像度レイヤから高解像度レイヤに実行されることに注意してください。プログレッシブ シーケンスで送信される最低解像度の画像は、順次符号化された画像です。シングル プログレッション シーケンシャル コーディング アプリケーションでは、これが送信される唯一のイメージです。
プログレッシブ エンコーディングには 2 つの明確な利点があります。 1 つは、それらを使用して、さまざまな解像度機能を備えた出力デバイスを効率的に提供できる 1 つの共通データベースを使用してアプリケーションを設計できることです。特定の出力デバイスの解像度能力への再構築に必要な圧縮画像ファイルのその部分だけを送信し、デコードする必要があります。また、追加の解像度向上が必要な場合、たとえば、すでに CRT 画面にある画像の紙のコピーなど、必要な解像度向上情報のみを送信する必要があります。
プログレッシブ エンコーディングのもう 1 つの利点は、低レートおよび中レートの通信リンクを使用するアプリケーションに対して、主観的に優れた画像ブラウジング (CRT 上で) を提供できることです。低解像度のレンディションがすばやく送信されて表示され、その後、必要に応じて解像度が向上します。解像度向上の各段階は、既に利用可能な画像に基づいています。プログレッシブ エンコーディングを使用すると、ユーザーは画像が構築されているときにその画像をすばやく認識することが容易になり、ユーザーは画像の送信を中断することができます。
Dは、プログレッシブ コーディングによって提供される解像度 (差分レイヤーと呼ばれる) の 2 倍の数を示します。 I Dが最高解像度の画像を表し、ピクセル単位の水平および垂直寸法がX DおよびY Dであるとします。R Dが画像I Dのサンプリング解像度を表すとします。
この仕様は、パラメーターR D 、 X D 、Y D 、またはDにほとんど制限を課していません。最高解像度レイヤーの解像度R Dに 400 または 200 dpi (ドット/インチ) などを選択すると、現在のファクシミリ規格に見合った解像度。 R Dを 600 または 300 dpi として選択すると、プログレッシブ階層が、この仕様の執筆時点で利用可能なレーザー プリンターの解像度とより互換性を持つようになります。
Dは通常、最低解像度が約 10 ~ 25 dpi になるように選択されると予想されます。このような解像度に縮小すると、典型的な 2 値画像は判読できませんが、それでもなお、このような低解像度のレンディションは非常に有用であり、自動生成されたアイコンとして機能します。通常、ページ レイアウトは明らかであり、以前に見た特定のページをより高い解像度で認識できることがよくあります。
前述のように、この仕様は、解像度の倍増の数Dを制限しません。たとえば、ハードコピー ファクシミリの場合のように、プログレッシブ コーディングが役に立たない場合は、0 に設定できます。そうすることで、MMR に対する JBIG の圧縮の利点が保持されます (実際、通常は多少増加します) が、バッファリングの必要がなくなり、アルゴリズムが簡素化されます。シングル プログレッション シーケンシャル JBIG コーディングには、MMR コーディングと同じ潜在的なアプリケーションがあります。シングル プログレッション シーケンシャル エンコーダーで圧縮された画像は、プログレッシブ デコードが可能なデコーダーで読み取ることができます。
あたかもそれ自体が 2 値画像であるかのように、ビットプレーンを個別にコーディングすることにより、グレースケールおよびカラー画像の無損失コーディングにこの仕様を使用することが可能です。グレースケールおよびカラー画像のコーディングに対するこのアプローチは、写真エンコーディング仕様 CCITT Rec. T.81 | の代替として使用できます。ロスレス モードの ISO/IEC 10918-1 (JPEG)予備的な実験結果では、JBIG は、最大 6 ビット/ピクセルのグレースケール イメージの可逆モードで、JPEG よりも圧縮の利点があることが示されています。 6 ~ 8 ビット/ピクセルの圧縮結果は、JBIG と JPEG の両方で同様でした。この仕様は、複数のビット プレーンを持つイメージを提供しますが、グレースケールまたは色強度をビット プレーンにマッピングする方法については推奨しません。実験的に、グレースケール画像の場合、強度のグレーコーディングによるマッピングは、強度の単純な加重バイナリコーディングによるマッピングよりも優れていることがわかっています。
0.2 ストライプとデータ順序
プログレッシブ符号化を、画像が左から右、上から下に最大解像度で符号化される従来の形式の画像符号化と区別する必要がある場合、この古い形式の符号化は「順次」と呼ばれます。プログレッシブ コーディングに対するシーケンシャル コーディングの利点は、ページ (フレーム) バッファーが必要ないことです。プログレッシブ コーディングでは、高解像度の画像をコーディングする際に低解像度の画像が使用されるため、次に高い解像度のページ バッファーが必要です。
最も低い解像度のレイヤーのみで JBIG データ ストリームを作成することが可能であり、これをシングル プログレッション シーケンシャル コーディングと呼ぶことができます。このような符号化では、差分解像度レイヤを参照せずに最大解像度の画像が符号化されます。パラメータD (0.1 で説明) はゼロに設定されます。画像のプログレッシブ エンコーディングでは、最低解像度レイヤが実際にはシングル プログレッション シーケンシャル コーディングでエンコードされることに注意してください。フル解像度の画像がシングル プログレッション シーケンシャル コーディングを使用してエンコードされている場合、画像をプログレッシブにデコードすることはできません。
プログレッシブ互換シーケンシャル モードでのコーディングは、プログレッシブ モードでのコーディングと「互換性がある」と言われます。これは、いずれかのモードで作成(エンコーダ)または読み取り(デコーダ)されたデータ ストリームがまったく同じ情報を運ぶためです。プログレッシブからプログレッシブ互換シーケンシャル エンコーディングへの切り替えで変わるのは、圧縮データの一部がエンコーダによって作成される順序だけです。プログレッシブからプログレッシブ互換シーケンシャル デコーディングへの切り替えで変わるのは、これらの部分がデコーダによって使用される順序だけです。
この互換性は、圧縮前に画像を小さな部分に分割することによって実現されます。これらのパーツは、各解像度の「レイヤー」で画像を「ストライプ」と呼ばれる水平方向の帯に分割することによって作成されます。プログレッシブ互換シーケンシャル コーディングには、"ストライプ" バッファー (ページ バッファーよりもはるかに小さい) と、各解像度レイヤーとビット プレーンの適応型エントロピー コーディングに使用される追加の個別の "状態" メモリが必要です。
フィギュア紹介。図 1 は、3 つの解像度レイヤー、レイヤーごとに 3 つのストライプ、および 1 つのビット プレーンのみがある場合のこのような分解を示しています。テーブル紹介。図 1 は、9 つのストライプを順番に並べる定義済みの方法を示しています。
SEQ ビットによって実行されるプログレッシブ対シーケンシャルの区別に加えて、 HITOLO ビットによって実行される解決順序の区別もあることに注意してください。エンコーダーは高解像度から下に向かって動作するため、最も自然に HITOLO 順序でストライプをエンコードします。デコーダーは低解像度から画像を構築する必要があるため、通常は逆の順序でストライプを処理します。プログレッシブ コード化されたデータをデコーダーに直接送信するエンコーダーをアプリケーションが使用する場合、どちらか一方が順序を反転するためにバッファリングする必要があります。アプリケーションにデータベースが含まれている場合、データベースを (適切な設定で) 使用して順序をバッファリングおよび反転し ( HITOLO を正しく設定することを含む)、エンコーダーおよびデコーダーからこの要件を取り除くことができます。
ストライプの垂直方向のサイズは、通常、イメージ全体のサイズよりもはるかに小さくなります。最下層のストライプあたりのライン数L0は、もう 1 つの自由なパラメーターです。一例として、ストライプが約8mmになるようにL0を選択することができる。このように選択すると、ビジネスレター サイズの用紙の画像のストライプ数Sは約 35 になります。
図 0.1 — 3 つのレイヤー、3 つのストライプ、および 1 つのビット プレーンの特殊なケースでの分解
表 0.1 —可能な 2 値データ順序
ヒトロ | 配列番号 | 注文例 |
---|---|---|
0 | 0 | 0.1.2 3.4.5 6.7.8 |
0 | 1 | 0.3.6 1.4.7 2.5.8 |
1 | 0 | 6,7,8 3,4,5 0,1,2 |
1 | 1 | 6.3.0 7.4.1 8.5.2 |
図 0.2 のように複数のビット プレーンがある場合、12 の定義されたストライプ順序があります。表 0.2 にそれらを示します。以前と同様に、 HITOLO ビットは解決順序の区別を担い、 SEQ ビットはプログレッシブ対シーケンシャルの区別を担います。 ILEAVE ビットが 1 の場合、複数のビット プレーンのインターリーブを示します。 SMID ビットが 1 の場合、6.2.4 の表 11 でより明確に示されているように、ストライプ上のインデックスである 5 が中央にあることを示します。
図 0.2 — 3 つのレイヤー、3 つのストライプ、および 2 つのビット プレーンの特殊なケースでの分解
表 0.2 —考えられるマルチプレーン データ順序
ヒトロ | 配列番号 | アイリーブ | SMID | 注文例 |
---|---|---|---|---|
0 | 0 | 0 | 0 | (00,01,02 06,07,08 12,13,14) (03,04,05 09,10,11 15,16,17) |
0 | 0 | 1 | 0 | (00,01,02 03,04,05) (06,07,08 09,10,11) (12,13,14 15,16,17) |
0 | 0 | 1 | 1 | (00.03 01.04 02.05) (06.09 07.10 08.11) (12.15 13.16 14.17) |
0 | 1 | 0 | 0 | (00,06,12 03,09,15) (01,07,13 04,10,16) (02,08,14 05,11,17) |
0 | 1 | 0 | 1 | (00,06,12 01,07,13 02,08,14) (03,09,15 04,10,16 05,11,17) |
0 | 1 | 1 | 0 | (00.03 06.09 12.15) (01.04 07.10 13.16) (02.05 08.11 14.17) |
1 | 0 | 0 | 0 | (12,13,14 06,07,08 00,01,02) (15,16,17 09,10,11 03,04,05) |
1 | 0 | 1 | 0 | (12,13,14 15,16,17) (06,07,08 09,10,11) (00,01,02 03,04,05) |
1 | 0 | 1 | 1 | (12.15 13.16 14.17) (06.09 07.10 08.11) (00.03 01.04 02.05) |
1 | 1 | 0 | 0 | (12,06,00 15,09,03) (13,07,01 16,10,04) (14,08,02 17,11,05) |
1 | 1 | 0 | 1 | (12,06,00 13,07,01 14,08,02) (15,09,03 16,10,04 17,11,05) |
1 | 1 | 1 | 0 | (12.15 06.09 00.03) (13.16 07.10 01.04) (14.17 08.11 02.05) |
2 つの新しい変数 ILEAVE と SMID に加えて、以前の 2 つの変数 HITOLO と SEQ により、これら 12 の注文すべてに索引を付けることができます。これらの 4 つのバイナリ変数の 16 の可能な組み合わせのうち、残りの 4 つには、関連付けられたストライプ順序がありません。プレーンが 1 つしかない場合、ストライプの順序は ILEAVE と SMID に依存せず、それらの値は重要ではありません。
ビットプレーンpの解像度層dのストライプsの圧縮データC Sd , pは、ストライプ順序とは無関係である。 HITOLO, SEQ, ILEAVE 、および SMID の変化に伴って変化するのは、データがデータ ストリームに連結される順序だけです。これは、前述の互換性機能です。
簡単にするために、この紹介の残りの部分では、ビット プレーンが 1 つしかないと仮定し、ビット プレーンを表す下付き文字pをC s,d,pから削除します。
0.3 エンコーダの機能ブロック
エンコーダは、図 0.3 に示すように分解できます。 (シングル プログレッション シーケンシャル コーディングでは、最低解像度のレイヤー エンコーダーのみが使用されます。)
図 0.3 に示すように、概念的にはD個のアルゴリズム的に同一の差分レイヤー エンコーダーが存在しますが、一部の実装では、1 つの物理差分レイヤー エンコーダーのみを再帰的に使用することを選択する場合があります。
図 0.3 —エンコーダの分解
0.3.1 解像度の削減と差分レイヤー エンコーダー
図 0.3 の解像度低減および差分レイヤ エンコーダ ブロックのそれぞれは、機能が同じであるため、1 つのレイヤでの操作の説明のみが必要です。このような記述には、関係する解像度レイヤーは 2 つだけです。この節の残りの部分を簡単にするために、着信画像を「高解像度」画像と呼び、発信画像を「低解像度」画像と呼びます。ただし、図 0.3 の特定の解像度削減および差分層エンコーダ ブロックの「高」および「低」解像度のイメージは、一般に、システム全体の最高および最低解像度のイメージではないことに注意してください。
図 0.3 の解像度削減および差分層エンコーダ ブロック自体は、図 0.4 に示すようにサブブロックに分解できます。すべてのシステムですべてのサブブロックを使用する必要はありません。信号名の定義については、箇条 4 の表を参照してください。
図 0.4 —解像度の削減と差分レイヤー エンコーダー
この図の処理ブロックの頭字語と、この導入節で説明するその他の処理ブロックの頭字語を表 0.3 に示します。
表 0.3 —処理ブロックの頭字語
頭字語 | 意味 |
---|---|
AAD | A A D |
AAE | A A E |
で | A T |
DP | D P |
mt | M T |
RR | R R |
TPB | T 的な P ( B ) |
TPD | T 的な D ( P ) |
0.3.1.1 解像度の低下
解像度削減 (RR) ブロックは、解像度削減を実行します。このブロックは高解像度のイメージを受け入れ、可能な限り元の半分の行と半分の列を持つ低解像度のイメージを作成します。
特定の画像の解像度を各次元で 2 分の 1 に減らす明白な方法は、行と列を 1 行おきに取得してサブサンプリングすることです。サブサンプリングは単純ですが、特に入力画像が 2 値の場合、主観的な品質の低い画像が作成されます。
テキストと線画を含む 2 値画像の場合、細い線が頻繁に削除されるため、サブサンプリングは不十分です。グレースケールをレンダリングするためのハーフトーンまたは順序付けられたディザリングを含む 2 値画像の場合、特にディザリング期間が 2 のべき乗である場合 (よくあること) は、グレーネスが十分に保持されないため、サブサンプリングは不十分です。
この仕様は、解像度を下げる方法を提案します。この特定の方法は、慎重に設計され、広範囲にテストされ、テキスト、線画、ディザ グレースケール、ハーフトーン グレースケール、誤差拡散グレースケールで優れた結果が得られることがわかっています。
0.3.1.2 差分層の典型的な予測
差分レイヤーの典型的な予測 (TP) ブロックは、ある程度のコーディング ゲインを提供しますが、その主な目的は実装を高速化することです。差分層 TP は単色の領域を探し、コーディング用の特定の現在の高解像度ピクセルがそのような領域にあることがわかった場合、DP, AT, MT, および AAE ブロックで通常行われる処理は必要ありません。テキストまたは線画の画像では、通常、差分レイヤー TP を使用すると、ピクセルの 95% を超えるコーディングを回避できます。グレースケールをレンダリングする 2 値画像では、処理の節約は大幅に小さくなります。
0.3.1.3 決定論的予測
決定論的予測 (DP) ブロックの目的は、コーディング ゲインを提供することです。この仕様の開発に使用された一連のテスト画像では、7% のゲインが得られました。このようなゲインは一般的であると考えられています。
特定の解像度削減アルゴリズムによって画像の解像度が削減されると、符号化される特定の現在の高解像度ピクセルの値が、エンコーダとデコーダの両方に既知のピクセル、つまりすべてのピクセルから推測できる場合があります。現在のピクセルに (ラスターの意味で) 因果関係がある低解像度イメージと高解像度イメージのそれら。これが発生すると、現在のピクセルは決定論的に予測可能であると言われます。 DP ブロックは、そのようなピクセルにフラグを立て、算術コーダーによるそれらのコーディングを禁止します。
DP はテーブル駆動型アルゴリズムです。低解像度画像と原因となる高解像度画像の特定の周囲のピクセルの値を使用してテーブルにインデックスを付け、決定性をチェックし、存在する場合は決定論的予測を取得します。 DP テーブルは、使用される特定の解像度削減方法に大きく依存します。プライベート解像度削減アルゴリズムを使用している場合、エンコーダーが DP テーブルをデコーダーにダウンロードするためのプロビジョニングが行われます。アプリケーションがデフォルトの DP を必要とする場合、デコーダは常にデフォルトの DP テーブルを持つ必要があり、DP テーブルを送信する必要はありません。したがって、提案された解像度削減アルゴリズムが使用される場合、DP テーブルを送信する必要はありません。
0.3.1.4 モデル テンプレート
コーディングされる高解像度ピクセルごとに、モデル テンプレート (MT) ブロックは算術コーダーにコンテキストと呼ばれる整数を提供します。この整数は、原因となる高解像度画像の特定のピクセルの色 (バイナリ レベル)、既に利用可能な低解像度画像の特定のピクセル、およびコード化されているピクセルの空間位相によって決定されます。「空間位相」について説明します。対応する低解像度ピクセルに対する高解像度ピクセルの向き。
算術コーダは、コンテキストごとに、そのコンテキストが与えられたシンボルの条件付き確率の推定値を維持します。この確率推定値が正確で、0 または 1 に近い場合、最大のコーディング ゲインが得られます。したがって、優れたテンプレートには優れた予測値があり、テンプレート内のピクセルの値がわかっている場合、そのピクセルの値はコード化されることは非常に予測可能です。
0.3.1.5 アダプティブ テンプレート
アダプティブ テンプレート (AT) ブロックは、ハーフトーンを使用してグレースケールをレンダリングするイメージで、かなりのコーディング ゲイン (80% もの場合もあります) を提供します。 AT は画像内の周期性を探し、それを見つけるとテンプレートを変更して、この周期性によって現在のピクセルに先行するピクセルがテンプレートに組み込まれるようにします。このようなピクセルは優れた予測値を持っています。
このような変更はまれであり、変更が発生すると、制御シーケンス (図 0.4 で ATMOVE によって象徴的に示されている) が出力データ ストリームに追加されます。したがって、デコーダは、AT の正しい設定を検索するために処理を行う必要はありません。
0.3.1.6 適応算術エンコーダ
適応算術エンコーダー (AAE) ブロックはエントロピー コーダーです。 TP ブロックと DP ブロックの出力を記録して、特定のピクセルをコード化する必要があるかどうかを判断します。そうであると仮定すると、コンテキストに注意し、内部確率推定器を使用して、現在のピクセルが特定の色になる条件付き確率を推定します。多くの場合、ピクセルはコンテキストから非常に予測可能であるため、条件付き確率は 0 または 1 に非常に近くなり、大きなエントロピー コーディング ゲインを実現できます。
各コンテキストの確率推定値を維持することは、重要な統計問題です。非常に正確な見積もりを取得することと、基礎となる統計の変化に迅速に適応するという相反する必要性との間でバランスを取る必要があります。
0.3.2 最低解像度レイヤーエンコーダー
図 0.5 は、最低解像度のレイヤー エンコーダーを示しています。 RR ブロックと DP ブロックは適用できず、PT ブロック、AT ブロック、および MT ブロックは異なるため、入力として使用される低解像度レイヤーがないため、差分レイヤー エンコーダーよりも概念的に単純です。信号名の定義については、箇条 4 の表を参照してください。 (すべてのシステムですべてのサブブロックを使用する必要はありません。)
差分レイヤー TP のような最低解像度レイヤー TP は、主に処理速度を向上させることを目的としています。ただし、2 つのバージョンの TP で使用されるアルゴリズムはまったく異なり、最低解像度レイヤー TP では、差分レイヤー TP の場合ほど高い割合のピクセルをスキップすることはできません。テキストと線画を含む画像では、最低解像度のレイヤー TP を使用すると、約 40% のピクセルをスキップできます。
図 0.5 —最低解像度レイヤーのエンコーダー
0.4 デコーダの機能ブロック
図 0.6, 0.7, および 0.8 は、図 0.3, 0.4, および 0.5 に類似していますが、符号化ではなく復号化を示しています。 RR ブロックと AT ブロックはデコーダに表示されないことに注意してください。信号名の定義については、箇条 4 の表を参照してください。シングル プログレッション シーケンシャル コーディングでは、図 0.6 の最低解像度レイヤー デコーダー ブロックのみが使用されます。図 0.7 と 0.8 のすべてのサブブロックをすべてのシステムで使用する必要はありません。
図 0.6 —デコーダーの分解
図 0.7 —差分層デコーダ
図 0.8 —最低解像度レイヤーのデコーダー
Introduction
This Recommendation | International Standard was prepared by the Joint Bi-level Image experts Group (JBIG) of ISO/IEC JTC1/SC29/WG9 and CCITT SGVIII. The JBIG experts group was formed in 1988 to establish a standard for the progressive encoding of bi-level images.
A progressive encoding system transmits a compressed image by first sending the compressed data for a reduced-resolution version of the image and then enhancing it as needed by transmitting additional compressed data, which builds on that already transmitted. This Recommendation | International Standard defines a coding method having progressive, progressive-compatible sequential, and single-progression sequential modes and suggests a method to obtain any needed low-resolution renditions. It has been found possible to effectively use the defined coding and resolution-reduction algorithms for the lossless coding of greyscale and color images as well as bi-level images.
0.1 General characteristics
This Specification defines a method for lossless compression encoding of a bi-level image (that is, an image that, like a black-and-white image, has only two colors). The defined method can also be used for coding greyscale and color images. Being adaptive to image characteristics, it is robust over image type. On scanned images of printed characters, observed compression ratios have been from 1,1 to 1,5 times as great as those achieved by the MMR encoding algorithm (which is less complex) described in Recommendations T.4 (G3) and T.6 (G4). On computer generated images of printed characters, observed compression ratios have been as much as 5 times as great. On images with greyscale rendered by halftoning or dithering, observed compression ratios have been from 2 to 30 times as great.
The method is bit-preserving, which means that it, like Recommendations T.4 and T.6, is distortionless and that the final decoded image is identical to the original.
The method also has"progressive" capability. When decoding a progressively coded image, a low-resolution rendition of the original image is made available first with subsequent doublings of resolution as more data is decoded. Note that resolution reduction is performed from the higher to lower resolution layers, while decoding is performed from the lower to higher resolution layers. The lowest resolution image sent in a progressive sequence is a sequentially coded image. In a single-progression sequential coding application, this is the only image sent.
Progressive encodings have two distinct benefits. One is that with them it is possible to design an application with one common database that can efficiently serve output devices with widely different resolution capabilities. Only that portion of the compressed image file required for reconstruction to the resolution capability of the particular output device has to be sent and decoded. Also, if additional resolution enhancement is desired, for say, a paper copy of an image already on a CRT screen, only the needed resolution-enhancing information has to be sent.
The other benefit of progressive encodings is that they can provide subjectively superior image browsing (on a CRT) for an application using low-rate and medium-rate communication links. A low-resolution rendition is transmitted and displayed rapidly, and then followed by as much resolution enhancement as desired. Each stage of resolution enhancement builds on the image already available. Progressive encoding can make it easier for a user to quickly recognize the image as it is being built up, which in turn allows the user to interrupt the transmission of the image.
Let D denote the number of doublings in resolution (called differential layers) provided by the progressive coding. Let ID denote the highest resolution image and let its horizontal and vertical dimensions in pixels be XD and YD Let RD denote the sampling resolution of the image ID .
This Specification imposes almost no restrictions on the parameters RD , XD,YD , or D. Choices such as 400 or 200 dpi (dots-per-inch) for the resolution RD of the highest resolution layer result in a hierarchy of resolutions commensurate with current facsimile standards. Choosing RD as 600 or 300 dpi gives a progressive hierarchy more compatible with the laser printer resolutions available as of the writing of this Specification.
It is anticipated that D will typically be chosen so that the lowest resolution is roughly 10 to 25 dpi. Typical bi-level images when reduced to such a resolution are not legible, but nonetheless such low-resolution renditions are still quite useful and function as automatically generated icons. Page layout is usually apparent and recognition of particular pages that have been seen before at higher resolution is often possible.
As mentioned above, this Specification does not restrict the number D of resolution doublings. It can be set to 0 if progressive coding is of no utility, as is the case, for example, in hardcopy facsimile. Doing so retains JBIG's compression advantage over MMR (and in fact usually increases it somewhat), while eliminating the need for any buffering and simplifying the algorithm. Single-progression sequential JBIG coding has potential applications identical to those of MMR coding. Images compressed by a single-progression sequential encoder will be readable by decoders capable of progressive decoding, although only the lowest resolution version of a progressively encoded image will be decodable by a single-progression sequential decoder.
It is possible to use this Specification for the lossless coding of greyscale and color images by coding bit-planes independently as though each were itself a bi-level image. This approach to the coding of greyscale and color images can be used as an alternative to the photographic encoding specification CCITT Rec. T.81 | ISO/IEC 10918-1 (JPEG) in its lossless mode. Preliminary experimental results have shown that JBIG has a compression advantage over JPEG in its lossless mode for greyscale images up to 6 bits-per-pixel. For 6 to 8 bits-per-pixel the compression results have been similar for both JBIG and JPEG. This Specification makes provision for images with more than one bit plane, but makes no recommendation on how to map greyscale or color intensities to bit-planes. Experimentally, it has been found that for greyscale images a mapping via Gray-coding of intensity is superior to a mapping via simple weighted-binary coding of intensity.
0.2 Stripes and data ordering
When it is necessary to distinguish progressive coding from the more traditional form of image coding in which the image is coded at full resolution from left to right and top to bottom, this older form of coding will be referred to as"sequential". The advantage of sequential coding over progressive coding is that no page (frame) buffer is required. Progressive coding does require a page buffer at the next-to-highest resolution because lower resolution images are used in coding higher resolution images.
It is possible to create a JBIG datastream with only a lowest resolution layer and this can be named single-progression sequential coding. In such coding, a full-resolution image is coded without reference to any differential resolution layers. The parameters D (mentioned in 0.1) is set equal to zero. It should be noted that in a progressive encoding of an image, the lowest resolution layer is actually encoded in single-progression sequential coding. If a full-resolution image is encoded using single-progression sequential coding, it will not be possible to decode the image progressively.
Coding in the progressive-compatible sequential mode is said to be"compatible" with coding in the progressive mode because the datastreams created (encoder) or read (decoder) in either mode carry exactly the same information. All that changes with a switch from progressive to progressive-compatible sequential encoding is the order in which parts of the compressed data are created by the encoder. All that changes with a switch from progressive to progressive-compatible sequential decoding is the order in which these parts are used by the decoder.
This compatibility is achieved by breaking an image into smaller parts before compression. These parts are created by dividing the image in each of its resolution"layers" into horizontal bands called"stripes." Progressive-compatible sequential coding does require a"stripe" buffer (much smaller than a page buffer) and additional individual"state" memory used for adaptive entropy coding of each resolution layer and bit plane.
Figure Intro. 1 shows such a decomposition when there are three resolution layers, three stripes per layer, and only one bit plane. Table Intro. 1 shows defined ways to sequence through the nine stripes.
Notice that in addition to the progressive-versus-sequential distinction that is carried by the SEQ bit, there is also a resolution-order distinction that is carried by the HITOLO bit. Encoders work from high resolution downward and so most naturally encode the stripes in HITOLO order. Decoders must build up the image from low resolution and so most naturally process stripes in the opposite order. When an application uses an encoder that sends progressively coded data directly to a decoder, one or the other must buffer to invert the order. When an application includes a database, the database (with appropriate set-up) can be used to buffer and invert the order (including setting HITOLO correctly) thereby removing this requirement from the encoder and decoder.
A stripe has a vertical size that is typically much smaller than that of the entire image. The number L0 of lines per stripe at the lowest layer is another free parameter. As an example, L0 might be chosen so that a stripe is about 8 mm. If such a choice is made, the number S of stripes in an image of a business-letter-sized sheet of paper will be about 35.
Figure 0.1—Decomposition in the special case of 3 layers, 3 stripes, and 1 bit plane
Table 0.1—Possible bi-level data orderings
HITOLO | SEQ | Example order |
---|---|---|
0 | 0 | 0,1,2 3,4,5 6,7,8 |
0 | 1 | 0,3,6 1,4,7 2,5,8 |
1 | 0 | 6,7,8 3,4,5 0,1,2 |
1 | 1 | 6,3,0 7,4,1 8,5,2 |
When there is more than one bit plane, as in Figure 0.2, there are twelve defined stripe orderings. Table 0.2 lists them. As before, the HITOLO bit carries the resolution-order distinction, and the SEQ bit carries the progressive-versus-sequential distinction. When the ILEAVE bit is 1, it indicates the interleaving of multiple bit planes. When the SMID bit is 1, it indicates 5, the index over the stripe, is in the middle as shown more clearly in Table 11 of 6.2.4.
Figure 0.2—Decomposition in the special case of 3 layers, 3 stripes, and 2 bit planes
Table 0.2—Possible multi-plane data orderings
HITOLO | SEQ | ILEAVE | SMID | Example order |
---|---|---|---|---|
0 | 0 | 0 | 0 | (00,01,02 06,07,08 12,13,14) (03,04,05 09,10,11 15,16,17) |
0 | 0 | 1 | 0 | (00,01,02 03,04,05) (06,07,08 09,10,11) (12,13,14 15,16,17) |
0 | 0 | 1 | 1 | (00,03 01,04 02,05) (06,09 07,10 08,11) (12,15 13,16 14,17) |
0 | 1 | 0 | 0 | (00,06,12 03,09,15) (01,07,13 04,10,16) (02,08,14 05,11,17) |
0 | 1 | 0 | 1 | (00,06,12 01,07,13 02,08,14) (03,09,15 04,10,16 05,11,17) |
0 | 1 | 1 | 0 | (00,03 06,09 12,15) (01,04 07,10 13,16) (02,05 08,11 14,17) |
1 | 0 | 0 | 0 | (12,13,14 06,07,08 00,01,02) (15,16,17 09,10,11 03,04,05) |
1 | 0 | 1 | 0 | (12,13,14 15,16,17) (06,07,08 09,10,11) (00,01,02 03,04,05) |
1 | 0 | 1 | 1 | (12,15 13,16 14,17) (06,09 07,10 08,11) (00,03 01,04 02,05) |
1 | 1 | 0 | 0 | (12,06,00 15,09,03) (13,07,01 16,10,04) (14,08,02 17,11,05) |
1 | 1 | 0 | 1 | (12,06,00 13,07,01 14,08,02) (15,09,03 16,10,04 17,11,05) |
1 | 1 | 1 | 0 | (12,15 06,09 00,03) (13,16 07,10 01,04) (14,17 08,11 02,05) |
The two new variables ILEAVE and SMID plus the two earlier variables HITOLO and SEQ make it possible to index all twelve of these orders. The other four of the sixteen possible combinations for these four binary variables have no stripe ordering associated with them. If there is only one plane, stripe order is not dependent on ILEAVE and SMID and their values are inconsequential.
The compressed data CSd, p for stripe s of resolution layer d of bit-plane p is independent of stripe ordering. All that changes as HITOLO, SEQ, ILEAVE and SMID vary is the order in which the data is concatenated onto a datastream. This is the compatibility feature noted earlier.
For simplicity, the remainder of this introduction will assume there is only one bit plane and the subscript p denoting bit plane will be dropped from Cs,d,p.
0.3 Encoder functional blocks
An encoder can be decomposed as shown in Figure 0.3. (In single-progression sequential coding only the lowest-resolution-layer encoder would be used.)
Although conceptually there are D algorithmically identical differential-layer encoders as shown in Figure 0.3, some implementations may choose to recursively use only one physical differential-layer encoder.
Figure 0.3—Decomposition of encoder
0.3.1 Resolution reduction and differential layer encoder
Each of the resolution-reduction-and-differential-layer-encoder blocks of Figure 0.3 is identical in function, hence only a description of the operation at one layer is needed. For such a description there are only two resolution layers involved. For simplicity in the remainder of this subclause, the incoming image will be referred to as the"high-resolution" image and the outgoing image, as the"low-resolution" image. Note though that the"high" and"low" resolution images of any particular resolution-reduction-and-differential-layer-encoder block in Figure 0.3 are not in general the highest and lowest resolution images of the entire system.
A resolution-reduction-and-differential-layer-encoder block of Figure 0.3 can itself be decomposed into sub-blocks as shown in Figure 0.4. Not all sub-blocks need be used in all systems. Refer to the tables in clause 4 for a definition of signal names.
Figure 0.4—Resolution reduction and differential layer encoder
Acronyms for the processing blocks of this figure and some others to be discussed in this introductory clause are given in Table 0.3.
Table 0.3—Acronyms for processing blocks
Acronym | Meaning |
---|---|
AAD | A daptive A rithmetic D ecoder |
AAE | A daptive A rithmetic E ncoder |
AT | A daptive T emplates |
DP | D eterministic P rediction |
mt | M odel T emplates |
RR | R esolution R eduction |
TPB | T ypical P rediction ( B ottom) |
TPD | T ypical P rediction ( D ifferential) |
0.3.1.1 Resolution reduction
The resolution-reduction (RR) block performs resolution reduction. This block accepts a high-resolution image and creates a low-resolution image with, as nearly as possible, half as many rows and half as many columns as the original.
An obvious way to reduce the resolution of a given image by a factor of two in each dimension is to subsample it by taking every other row and every other column. Subsampling is simple, but creates images of poor subjective quality, especially when the input image is bi-level.
For bi-level images containing text and line drawings, subsampling is poor because it frequently deletes thin lines. For bi-level images that contain halftoning or ordered dithering to render greyscale, subsampling is poor because greyness is not well preserved, especially if the dithering period is a power of two, as is frequently the case.
This Specification suggests a resolution reduction method. This particular method has been carefully designed, extensively tested, and found to achieve excellent results for text, line art, dithered greyscale, halftoned greyscale, and error-diffused greyscale.
0.3.1.2 Differential layer typical prediction
The differential-layer typical prediction (TP) block provides some coding gain, but its primary purpose is to speed implementations. Differential-layer TP looks for regions of solid color and when it finds that a given current high-resolution pixel for coding is in such a region, none of the processing normally done in the DP, AT, MT, and AAE blocks is needed. On text or line-art images, differential-layer TP usually makes it possible to avoid coding over 95% of the pixels. On bi-level images rendering greyscale, processing savings are significantly smaller.
0.3.1.3 Deterministic prediction
The purpose of the deterministic-prediction (DP) block is to provide coding gain. On the set of test images used in the development of this Specification it provided a 7% gain, and such a gain is thought to be typical.
When images are reduced in resolution by a particular resolution reduction algorithm, it sometimes happens that the value of a particular current high-resolution pixel to be coded is inferable from the pixels already known to both the encoder and decoder, that is, all the pixels in the low-resolution image and those in the high-resolution image that are causally related (in a raster sense) to the current pixel. When this occurs, the current pixel is said to be deterministically predictable. The DP block flags any such pixels and inhibits their coding by the arithmetic coder.
DP is a table driven algorithm. The values of particular surrounding pixels in the low-resolution image and causal high-resolution image are used to index into a table to check for determinicity and, when it is present, obtain the deterministic prediction. DP tables are highly dependent on the particular resolution reduction method used. Provision is made for an encoder to download DP tables to a decoder if it is using a private resolution reduction algorithm. If an application requires default DP, decoders need to always have the default DP tables and no DP tables need be sent. Hence, if the suggested resolution reduction algorithm is used, no DP table need ever be sent.
0.3.1.4 Model templates
For each high-resolution pixel to be coded, the model-templates (MT) block provides the arithmetic coder with an integer called the context. This integer is determined by the colors (binary levels) of particular pixels in the causal high-resolution image, by particular pixels in the already available low-resolution image, and by the spatial phase of the pixel being coded."Spatial phase" describes the orientation of the high-resolution pixel with respect to its corresponding low-resolution pixel.
The arithmetic coder maintains for each context an estimate of the conditional probability of the symbol given that context. The greatest coding gain is achieved when this probability estimate is both accurate and close to 0 or 1. Thus, good templates have good predictive value so that when the values of the pixels in the template are known, the value of the pixel to be coded is highly predictable.
0.3.1.5 Adaptive templates
The adaptive-templates (AT) block provides substantial coding gain (sometimes as much as 80%) on images rendering greyscale with halftoning. AT looks for periodicity in the image and on finding it changes the template so that the pixel preceding the current pixel by this periodicity is incorporated into the template. Such a pixel has excellent predictive value.
Such changes are infrequent, and when one occurs, a control sequence (indicated symbolically by ATMOVE in Figure 0.4) is added to the output datastream. Hence, decoders need not do any processing to search for the correct setting for AT.
0.3.1.6 Adaptive arithmetic encoder
The adaptive-arithmetic-encoder (AAE) block is an entropy coder. It notes the outputs of the TP and DP blocks to determine if it is even necessary to code a given pixel. Assuming it is, it then notes the context and uses its internal probability estimator to estimate the conditional probability that the current pixel will be a given color. Often the pixel is highly predictable from the context so that the conditional probability is very close to 0 or 1 and a large entropy coding gain can be realized.
Maintaining probability estimates for each of the contexts is a non-trivial statistical problem. A balance must be struck between obtaining extremely accurate estimates and the conflicting need of adapting quickly to changing underlying statistics.
0.3.2 Lowest resolution layer encoder
Figure 0.5 shows a lowest-resolution-layer encoder. It is conceptually simpler than the differential-layer encoder because the RR and DP blocks are not applicable and the PT, AT, and MT blocks are different since there is no lower resolution layer to be used as input. Refer to the tables in clause 4 for a definition of signal names. (Not all sub-blocks need to be used in all systems.)
Lowest-resolution-layer TP like differential-layer TP is primarily intended to speed processing. The algorithms used for the two versions of TP are quite different, however, and it is not possible to skip as high a percentage of pixels with lowest-resolution-layer TP as it is with differential-layer TP. On images with text and line árt, lowest-resolution-layer TP allows skipping about 40% of the pixels.
Figure 0.5—Lowest-resolution-layer encoder
0.4 Decoder functional blocks
Figures 0.6, 0.7 and 0.8 are analogous to Figures 0.3, 0.4 and 0.5 but show decoding rather than encoding. Note that the RR and AT blocks do not appear in the decoder. Refer to the tables in clause 4 for a definition of signal names. In single-progression sequential coding only lowest-resolution-layer-decoder block of Figure 0.6 would be used. Not all sub-blocks in Figures 0.7 and 0.8 need be used in all systems.
Figure 0.6—Decomposition of decoder
Figure 0.7—Differential layer decoder
Figure 0.8—Lowest-resolution-layer decoder