ImageJとPIL間のTIFFファイルの互換性
ImageJとPIL間のTIFFファイルの互換性を調べる.

ImageJはTIFFファイルの保存を io/TiffEncoder.java で行なう.
ImageJ 1.38dにおいては,常にbig-endian("MM")であり,データ領域の開始は
0x300(768)bytesである(ただしこれはTIFF仕様で定まっているわけではない).

>>> Image.open("bilevel-stk.tif").mode => "L" # 0|255 (but stored as 8bits)
>>> Image.open("byte-stk.tif").mode => "L" # 8bits unsigned int
>>> Image.open("color256-stk.tif").mode => "P" # 8bits indexed-color

これらは,いずれもgetpixel((x,y))で0〜255の値を返す.

16bits unsigned intの画像については,
mode => "I;16"
となるが,getpixel((x,y))では正しい輝度が得られない.byte orderを逆にするとImageJでの値と同じ値になる.PILがbig-endianの16bits/pixelをlittle endianだとして扱ってしまうようだ.
[PR]
by edogawadai_bio | 2007-04-06 07:48 | img
<< バリケード PILでファイルが自動的に書き... >>