ZQUANTIZ キーワードではディザリングに関して 'NO_DITHER', 'SUBTRACTIVE_DITHER_1', 'SUBTRACTIVE_DITHER_2' のどれかを指定する。
浮動小数 image に対し引算ディザリングをかけるプロセスは次のとおりである。
-1.0mm
- 0.0 から 1.0 の間の単精度乱数(RN)を 10000個生成する。
- 1. の乱数列からユニークな乱数系列を生成するための seed として 1 から 10000 の間の整数を 1つ選ぶ。
- 整数の seed 値を ZDITHER0 キーワード値として圧縮 image のヘッダーに書き込む。
- 浮動小数 image を量子化する前に 2つのオフセットパラメータ , の初期値を次のように計算する。
|
|
|
(13) |
|
|
|
(14) |
ここで
はタイルを圧縮したバイトを binary table に格納するのに使われる行番号で、RN() は最初のステップで計算された乱数列中の
番目の乱数値。
- 乱数 RN() を使って式(11)で最初のピクセルから量子化していく。
は順次インクリメントし、上限の 500に達したら をインクリメントして を式(14)で再計算する。
が上限 10000に達したら を 0 にリセットする。
ピクセル値が IEEE NaN だったら量子化やディザリングせず ZBLANK キーワードの指定値に保存するが一貫性のため はインクリメントする。
- 量子化された整数配列を ZCMPTYPE キーワードで指定されたアルゴリズム(デフォルトは'RICE_1') でロスレス圧縮する。
- 圧縮したバイトストリームをタイルに対応する binary table の適切な行の
COMPRESSED_DATA column に書き込む。
- タイルに対し式(11)で使われたスケーリングとオフセットの値を binary table の同じ行の ZSCALE, ZZERO column に書き込む。
- ステップ 4 から 8を image の各タイルに対して行う。
Osamu Kanamitsu
2019-02-15