Predictor 12
Predictor 12は、PDFストリームで使用されるPNG予測アルゴリズムであり、圧縮フィルタを適用する前にデータを前処理することで圧縮効率を向上させます。
Predictor 12は、PDFストリームで使用されるPNG予測アルゴリズムであり、圧縮フィルタを適用する前にデータを前処理することで圧縮効率を向上させます。 ( Citation: N.A., 2020 (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) で定義されているように、これはストリームデータに適用できる複数の予測関数の1つであり、データ構造内の冗長性パターンを活用します。この予測子は、PDF文書内の画像データやエンコードされたストリームを扱う際に特に重要です。
Predictor 12は、具体的にはPNG(Portable Network Graphics)仕様から借用された「Paeth」予測アルゴリズムです。基本的な水平差分を使用するシンプルな予測子(Predictor 2)やTIFF予測方式とは異なり、Predictor 12はより高度なアルゴリズムを実装しています。このアルゴリズムは、3つの隣接ピクセル(左、上、左上)を調べて現在のピクセルの値を予測します。予測子は、これら3つの隣接ピクセルのうちどれが予測値に最も近いかを計算し、それを実際の予測に使用します。この前処理ステップは、データを変換して通常は類似した値の長い連続を生成し、Flate(DEFLATE)圧縮などのアルゴリズムでより効率的に圧縮できるようにします。
PDFにおけるPNG予測子は、Predictor 12を含めて10~15の番号が付けられており、PNGフィルタタイプ0~5に対応しています。Predictor 12は特にPNGの「Paeth予測子」フィルタ方式に対応しており、複数の方向にグラデーションやパターンが存在する特定のタイプの画像データに特に効果的です。
PDF生成、操作、最適化に携わる開発者にとって、Predictor 12を理解することが重要な理由はいくつかあります。
圧縮効率: 適切な予測子を選択することで、特に画像データや構造化されたバイナリコンテンツを含む文書のファイルサイズを大幅に削減できます。Predictor 12は、複雑な画像データに対して、よりシンプルな予測子よりも優れた圧縮を提供することがよくあります。
パフォーマンスの考慮事項: Predictor 12は特定のデータタイプに対してより良い圧縮を提供しますが、シンプルな予測子と比較して、エンコードとデコードの両方でより多くの計算オーバーヘッドが必要です。開発者は、ファイルサイズの削減と処理時間の要件とのバランスを取る必要があります。
互換性と実装: PDFストリームを作成または処理する際、開発者は予測アルゴリズムを正しく実装し、ストリームのDecodeParmsディクショナリでそれを指定する必要があります。実装が正しくないと、データの破損やストリームのデコード失敗につながる可能性があります。
Predictor 12は行ごとに動作し、データをサンプルの2次元配列として扱います。ストリーム内の各バイト(最初の行の後)について、アルゴリズムは次のように動作します。
- 3つの参照サンプルを特定: 現在の位置の直左(a)、直上(b)、斜め左上(c)のサンプルを特定
- 初期推定値を計算: p = a + b - c を計算
- 最も近い一致を決定: |p - a|、|p - b|、|p - c|の絶対差を計算し、差が最小のサンプル(a、b、またはc)を予測子として選択
- 差分を格納: 実際にエンコードされる値は、現在のサンプルと予測値との差分
PDFストリームでは、予測子はストリームのフィルタに関連付けられたDecodeParmsディクショナリで指定されます。デコーダは、ストリームを読み取る際にこのプロセスを逆転させ、同じアルゴリズムを使用して予測された差分から元のデータを再構築する必要があります。予測子は、実際の圧縮フィルタ(通常はFlateDecode)が適用される前に動作し、より効率的に圧縮できるデータパターンを作成します。
- FlateDecode – PDFストリームで使用される主要な圧縮フィルタで、予測関数と組み合わせて使用されることが多い
- DecodeParms – 予測子の値を含む、ストリームをデコードするためのパラメータを指定するディクショナリ
- Stream objects – 圧縮のために予測アルゴリズムを使用する可能性のある連続データを含むPDFオブジェクト
- PNG filters – PNG画像フォーマット仕様から派生した予測アルゴリズムファミリー(PDFではpredictor 10~15)
- LZW compression – 予測アルゴリズムと組み合わせることができる代替圧縮方式
- (N.A.) (2020)
- (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html
