Image dictionary key /Decode
`/Decode`キーは、Image XObjectディクショナリのオプショナルエントリで、レンダリング時に画像のサンプル値をカラーコンポーネント値にマッピングする方法を定義する配列を指定します。
/Decodeキーは、Image XObjectディクショナリのオプショナルエントリで、レンダリング時に画像のサンプル値をカラーコンポーネント値にマッピングする方法を定義する配列を指定します。
(
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
)
によれば、この配列は、画像データ内の最小および最大サンプル値に対応するカラー値の範囲を定義することで、デコード処理を制御します。/Decode配列により、開発者は基になる画像データストリームを変更することなく、色の反転、コントラストの調整、またはカラー範囲の再マッピングを行うことができます。
/Decodeエントリは、Image XObjectディクショナリ内の配列で、数値のペアで構成され、各ペアは画像のカラースペース内の1つのカラーコンポーネントに対応します。n個のカラーコンポーネントを持つ画像の場合、/Decode配列には2n個の数値が[D₀min D₀max D₁min D₁max … Dₙ₋₁min Dₙ₋₁max]の形式で配置されます。各ペアは、デコード後に対応するカラーコンポーネントが取り得る最小値と最大値を定義します。
画像レンダリング時、画像データストリームからのサンプル値(通常は0から2^BitsPerComponent - 1の範囲)は、各デコードペアで指定された範囲に線形補間されます。このマッピングは、カラースペース変換やその他の画像処理の前に発生します。デフォルトのデコード配列は、サンプル値をカラースペースの標準範囲に直接マッピングします(例:DeviceGrayまたはDeviceRGBの各コンポーネントに対して[0 1])。
/Decode配列は、カラースペース変換とは異なり、カラースペースの解釈前に生のサンプル値に対して動作するため、カラー変換プロセスではなく低レベルの調整メカニズムとなります。
/Decode配列の理解は、画像データを再エンコードすることなく画像の外観を制御する必要がある開発者にとって不可欠です。この機能は、いくつかの実用的な利点を提供します。
パフォーマンスの最適化:グレースケール画像の反転やカラー範囲の調整は、画像データを解凍、処理、再圧縮するのではなく、/Decode配列を変更するだけで実現できるため、処理時間を節約し、画像品質を保持できます。
色補正:/Decode配列により、ソース画像を変更することなく、ディスプレイ特性、プリンタキャリブレーション、またはカラースペースの制限に対応するために、実行時にカラー範囲を調整できます。
アクセシビリティ:特定のケースでは、/Decodeの変更による色の反転やコントラスト調整により、視覚障害のあるユーザーのドキュメントアクセシビリティを向上させることができます。
ストレージ効率:1つの画像を、異なる/Decode配列で同じ画像データを参照することにより、複数の方法(通常と反転など)で表示できるため、ファイルサイズを削減できます。
デコード処理は、線形補間式を適用して、各画像サンプル値をカラーコンポーネント値に変換します。コンポーネントあたりnビットのサンプル値sに対して、コンポーネントiのデコード値Dは次のように計算されます。
D = D_imin + (s × (D_imax - D_imin) / (2^n - 1))
ここで、D_iminとD_imaxは、/Decode配列内の対応するペアからの最小値と最大値です。
シナリオ例:
DeviceGrayカラースペースの標準的な8ビットグレースケール画像の場合、デフォルトの/Decode配列は[0 1]です。サンプル値0は黒(0.0)にマッピングされ、サンプル値255は白(1.0)にマッピングされます。
同じグレースケール画像を反転するには、/Decodeを[1 0]に設定します。これにより、サンプル値0は白(1.0)にマッピングされ、サンプル値255は黒(0.0)にマッピングされ、事実上フォトグラフィックネガティブが作成されます。
RGB画像(コンポーネントあたり8ビット)の場合、デフォルトの/Decode配列は[0 1 0 1 0 1]です。緑と青を通常のままにして赤チャンネルのみを反転するには、[1 0 0 1 0 1]を使用します。
インデックス画像の場合、/Decode配列は、最終的なカラー値ではなく、カラーテーブルで色を検索するために使用される前のインデックス値に適用されます。
/Decode変換は、カラースペース変換、マスキング操作、およびブレンディングの前の画像レンダリングパイプラインで発生します。これは、デコードされた値が、ページコンテンツストリームに合成される前に、画像の指定されたカラースペースに従って解釈されることを意味します。
- Image XObject – 画像ディクショナリで定義された画像データとプロパティを含むストリームオブジェクト
- Color Space – PDFコンテンツおよび画像データ内のカラー値を解釈する方法を定義する
- BitsPerComponent – 各カラーコンポーネントサンプルに使用されるビット数を指定する画像ディクショナリエントリ
- DeviceGray – カラーマネジメントを行わずに黒から白までのグレースケール値を表すカラースペース
- Indexed Color Space – 事前に定義されたカラーテーブルで色を検索するためにインデックスを使用するカラースペース
- (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
