• Tidak ada hasil yang ditemukan

圧縮データの表現

Dalam dokumen FITS の手引き (Halaman 71-78)

5.10

圧縮データの表現

ここでは

Standard 4.0

で取り入れられた圧縮データの取扱い、具体的には

FITS image

とメタデータを保持して必要に応じてオリジナルを展開できる

BINTABLE extension

につ いて概説する。詳細は

Standard 4.0

の原論文やその中の参考文献を参照のこと。

5.10.1

タイル・イメージ圧縮

ここでは

n

次元の

FITS image

を圧縮した結果のバイトストリームを

FITS Binary

Table

の可変長配列に格納し、

image

ヘッダーキーワードを

table

ヘッダーに保存するた

めのプロセスについて述べる。一般的な原則としては、最初に

n

次元の

image

を矩形の グリッドに分割し

subimage

または

タイル

を作る。次に個々のタイルをデータブロッ クとして圧縮したバイトストリームを

FITS Binary Table

の可変長配列の行に格納する。

image

をタイルに分割することにより

image

全体を解凍することなく

image

の一部を展

開することができる。デフォルトのタイリングパターンは、

2

次元の

image (

又は高次元の キューブ

)

の各行をタイルにし各々が

NAXIS1

ピクセルを含むようにする。アプリケーショ ンや圧縮アルゴリズムによっては、デフォルトのパターンが最適とは限らないので、次に 示すキーワードを使って他の矩形タイリングパターンを定義してもよい。小さな

image

の 場合は全体を

1

つのタイルに圧縮するので十分な場合もあり、その時は出力される

binary

table

1

つの行のみを持つ。

3

次元のデータキューブの場合はソフトが各

plane

にアク

セスするようなら、各

plane

をタイルにするのがいいかもしれない。

5.10.1.1

要求されるキーワード

BINTABLE extension

で要求されるキーワードに加えて 次のキーワードが圧縮

FITS image

の構造を記述するために

FITS binary-table extension

のヘッダーに予約されている。すべて必須キーワードである。

ZIMAGE – [

論理値

;

T] FITS binary-table extension

が圧縮

image

を含む場合は論理値

T

。論理的にはその

extension

table

ではなく

image

と解釈されるべきである。

ZCMPTYPE – [

文字列

;

デフォルトなし

] image

を圧縮するのに使われたアルゴリズムを示 す文字列を与える。表

12

のものがあるが将来追加されるかもしれない。

ZBITPIX – [

整数

;

デフォルトなし

]

非圧縮時の

FITS image

BITPIX

の値。整数値。

ZNAXIS – [

整数

;

デフォルトなし

]

非圧縮時の

FITS image

NAXIS

キーワードの値。整 数値

(

即ち軸の数

)

ZNAXISn – [

整数

;

添字

;

デフォルトなし

]

非圧縮時の

FITS image

の対応する

NAXISn

キーワードの値。正の整数値

(

即ち

n

軸のサイズ

)

非圧縮

image

BITPIX, NAXIS, NAXISn

キーワードのコメントは、

ZBITPIX, ZNAXIS,

ZNAXISn

キーワードの対応するフィールドにコピーされるべきである。

5.10.1.2

他の予約されたキーワード 圧縮

image

タイルは元の

FITS image

のピク セル順のまま

binary table

に格納されるべきである。次のキーワードは圧縮

image

BINTABLE Extension

への格納時に使うために予約されている。

ZTILEn – [

整数

; n > 1

に対しデフォルト

1]

圧縮タイルの

n

軸に沿ったピクセル数を表 す正整数

(n

1

から

ZAXIS)

。このキーワードがない場合は

ZTILE1 = ZNAXIS1

他の

ZTILEn

1

とみなされる。

ZNAMEi – [

文字列

;

デフォルトなし

]

圧縮・展開に必要なアルゴリズムのパラメータ名。

ZVALi – [

文字列

;

デフォルトなし

]

上記で使われたアルゴリズムのパラメータ値。

FITS

で有効なデータタイプなら何でも使える。

ZMASKCMP – [

文字列

;

デフォルトなし

]

オプションの

null-pixel

データマスクの圧縮に使 われるアルゴリズム名。

ZQUANTIZ – [

文字列

;

デフォルトは

‘NO DITHER’]

浮動小数の

image

ピクセルを整数値に 量子化する際に使われるアルゴリズム名。このキーワードがない場合は量子化の際 のディザリングなしとみなされる。

ZDITHER0 – [

整数

;

デフォルトなし

]

浮動小数ピクセル値の量子化の際に使われるランダ ムなディザリングパターンの

seed

を与える正整数。

また、元の非圧縮

FITS image

のキーワードの値やコメントのコピーのために

ZSIMPLE, ZEXTEND, ZBLOCKED, ZTENSION, ZPCOUNT, ZGCOUNT, ZHECKSUM, ZDATASUM

キーワードが 予約されている。これらは元の

FITS image

で関連するキーワードが使われてなければ 使ってはならない。もし

FITS primary array

IMAGE extension

が圧縮されたら、元の

image

の全てのヘッダーキーワードは

(

上で触れた必須キーワードを除いて

)

圧縮

image

を含む

binary-table extension

のヘッダーにコピーされることが強く推奨される。

5.10.1.3 table columns

圧縮

image

タイルを含む

FITS binary table

のために

2

column

名が予約されて定義されている。

COMPRESSED DATA – [

可変長

;

必須

]

この

column

の各行は対応する

image

タイルを圧縮 したバイトストリームを含む。

column

のデータタイプは、圧縮アルゴリズムが 

8-bit

バイト

,

整数の

16-bits, 32-bits

のどれを出力するかに応じて

‘1PB’,‘1PI’,‘1P’(

も しくは

‘1QB’,‘1QI’,‘1Q’)

のどれかになる。

GZIP COMPRESSED DATA – [

可変長

;

オプション

] image

タイルのピクセル値が

Gzip

でロス レス圧縮されていたら結果のバイトストリームはこの

column

に収める

(‘1PB’,‘1QB’

フ ォーマットで

)

。これらのタイルの対応する

COMPRESSED DATA column

null pointer

となる。

浮動小数の圧縮のために次の節で述べるオプションの量子化法を使う場合は次の

column

が必須となる。

5.10.

圧縮データの表現

ZSCALE – [

浮動小数

;

オプション

] ZZERO

と共に使い各タイルの浮動小数ピクセル値を整

数値に変換するスケールファクター。

I

i

= round

( F

i

ZZERO ZSCALE

)

(10)

ここで

I

i

F i

はピクセル値の整数値と

(

元の

)

浮動小数値。

round

関数は結果を最 も近い整数に丸める。

ZZERO – [

浮動小数

;

オプション

]

浮動小数のピクセル値を上式で整数にする時のゼロ点の オフセット値。

他にも未定義のピクセル値を量子化で変わらないよう保存するための

ZBLANK

や未定義 ピクセルの位置を記録するための

NULL PIXEL MASK

も定義されている。

5.10.2

浮動小数データの量子化

浮動小数の

image

はロスレス圧縮できる場合もあるがノイジーな

image

は往々にして あまり圧縮できない。有用な情報を損ねずにノイズ除去できれば高圧縮も可能となる。ノ イズ低減のための一般的なテクニックとして浮動小数値を前節の式

(10)

で量子化された 整数にスケーリングする手がある。指定量のノイズ低減のための効果的なアルゴリズム は

White & Greenfield (1999)

Pence et al. (2009)

に述べられている。それによれば

ZSCALE

の値は

image

のバックグラウンド領域で測った

RMS

ノイズのある割合

Q

から 計算される。

Pence et al.(2009)

 は各ピクセル値に含まれるノイズのバイナリ

bit

数は

log

2

(Q) + 1.792

となることを示した。

Q

値は圧縮ファイルサイズに直接影響し、

Q

を半 分に減らせばピクセルあたり

1 bit

ファイルサイズを減らせる。従って高圧縮を達成する

には

image

に要求される測光的・位置天文的精度を保ちつつ最小の

Q

を使えばよい。

天体

image

にこのスケーリング法を適用する時の潜在的問題は

image

中の

faint

領域

の光度測定時にシステマチックなバイアスが生じる可能性があることだ。

image

の量子化 が粗いと

sky

のバックグラウンド領域の測定光度は直近の量子化レベルにバイアスがかか るだろう。こうした潜在的なバイアスを低減する効果的テクニックの

1

つが、量子化のプ ロセス中にランダムノイズを導入し量子化されたピクセル値をディザリングすることだ。

このためには全てのピクセルを単に式

(10)

でスケーリングする代わりに少し改良した次 式で量子化レベルをランダマイズすればよい。

I

i

= round

( F

i

ZZERO

ZSCALE + R

i

0.5 )

(11)

ここで

R

i

0.0

から

1.0

の間の乱数で

0.5

を引くことで平均値を

0.0

にしている。元の 浮動小数に戻すには同じ

R

iを使って次のようにすればよい。

F

i

= ((I

i

R

i

+ 0.5) ZSCALE) + ZZERO. (12)

この引算ディザリングテクニックを使う肝は、整数に量子化する時と浮動小数に戻すと きに正確に同じ乱数系列を使うことであり、こうした再現可能な疑似乱数系列生成のアル ゴリズムは

Standard 4.0

Appendix I

にある。

5.10.2.1

ディザリングアルゴリズム

ZQUANTIZ

キーワードではディザリングに関し て

’NO DITHER’, ’SUBTRACTIVE DITHER 1’, ’SUBTRACTIVE DITHER 2’

のどれかを指定 する。浮動小数

image

に対し引算ディザリングをかけるプロセスは次のとおりである。

1. 0.0

から

1.0

の間の単精度乱数

(RN)

10000

個生成する。

2. 1.

の乱数列からユニークな乱数系列を生成するための

seed

として

1

から

10000

間の整数を

1

つ選ぶ。

3.

整数の

seed

値を

ZDITHER0

キーワード値として圧縮

image

のヘッダーに書き込む。

4.

浮動小数

image

を量子化する前に

2

つのオフセットパラメータ

I

0

, I

1 の初期値を次 のように計算する。

I

0

= mod(N

tile

1 + ZDITHER0, 10000) (13) I

1

= INT(RN(I

0

) 500.) (14)

ここで

N

tile はタイルを圧縮したバイトを

binary table

に格納するのに使われる行 番号で、

RN(I

0

)

は最初のステップで計算された乱数列中の

I

0th 番目の乱数値。

5.

乱数

RN(I

1

)

を使って式

(11)

で最初のピクセルから量子化していく。

I

1 は順次イン クリメントし、上限の

500

に達したら

I

0 をインクリメントして

I

1 を式

(14)

で再計 算する。

I

0 が上限

10000

に達したら

I

0

0

 にリセットする。ピクセル値が

IEEE NaN

だったら量子化やディザリングせず

ZBLANK

キーワードの指定値に保存するが 一貫性のため

I

1 はインクリメントする。

6.

量子化された整数配列を

ZCMPTYPE

キーワードで指定されたアルゴリズム

(

デフォル トは

’RICE 1’)

でロスレス圧縮する。

7.

圧縮したバイトストリームをタイルに対応する

binary table

の適切な行の

COMPRESSED DATA column

に書き込む。

8.

タイルに対し式

(11)

で使われたスケーリングとオフセットの値を

binary table

の同 じ行の

ZSCALE, ZZERO column

に書き込む。

9.

ステップ

4

から

8

image

の各タイルに対して行う。

5.10.3

タイル・テーブル圧縮

非圧縮の

table

は個々のタイルが行のサブセットを含むように分割され、各タイルの各

データ

column

が展開・圧縮されて、可変長配列バイトとして格納されて圧縮

table

とし

て出力される。圧縮

table

自体は元の非圧縮

table

と同じ順で同じ数の

column

を含む

FITS binary table

で、非圧縮

table

の行サブセットからなる各タイルを

1

行として含む。

5.10.3.1

要求されるキーワード 非圧縮

table

の全てのキーワードは同じ順で圧縮

table

のヘッダーにコピーされなければならない。特に

column

記述キーワード

TTYPEn, TUNITn, TSCALn, TZEROn, TNULLn, TDISPn,TDIMn

WCS

column

関係のキーワードは、元の

table

と圧縮

table

で同じ値・データ型を持たねばならない。

単純にコピーしてはいけないのは、必須キーワードの

NAXIS1, NAXIS2, PCOUNT, TFORMn

とオプションキーワードの

CHECKSUM, DATASUM, THEAP

である。これらのキーワードは圧

table

自体の内容と構造を記述しなければならない。元の非圧縮

table

にあるこれらの

キーワードの値を圧縮

table

のヘッダーに格納するための予約キーワードは次の通り。

Dalam dokumen FITS の手引き (Halaman 71-78)