2014-07-09 402 views
2

是否有簡單的方法將32位.tif轉換爲16位.tif?在IDL中,write_tiff允許/短而不是/ float。 Python會這樣做嗎?相反,我試過這個:Python將32位轉換爲16位tiff

i32 = Image.open('image.tif') 
<Image.Image image mode=F size=2016x2016 at 0x102A3E998> 
i32.convert('L').save('newimage.tif') 

ImageJ(viewer)打開tif並且說這個圖像是8位而不是16位。

+0

您是否需要輸出爲tiff?所需的輸出是用於查看還是用於數值計算?如果你只想查看,你可以嘗試'a = numpy.asarray(i32); matplotlib.pyplot.imshow(一)'。 – heltonbiker

回答

2

PIL documentation:該'L'模式爲8位灰度圖像和原來的圖像是32位浮點(模式'F'),而不是整數!要獲得16位整數圖像,您可以嘗試使用'I;16'作爲模式;這至少在我的Pillow 2.0.0(Ubuntu 14.04)中支持:

f32 = Image.open('image.tif') 
f32.convert('I;16').save('newimage.tif') 
+0

我試過這個,但是當我轉換成'I; 16'時,.histogram從以32位圖像的95/255爲中心的〜高斯變爲對於16位圖像爲255的delta函數(即,僅白色)。無論如何要糾正? – user3822346

+0

調試肯定有點難,因爲我目前沒有你的文件,也沒有任何支持f32或i16 tiff的軟件:D –