2017-11-08 16 views
1

私は複数の.tifスタック(それぞれ40個のイメージで構成されています)を1つのTiffスタックに結合しようとしています。私はPythonを使用してこれを行うことを好むだろう。私がこれまで試したことは(私が何かを明らかに欠けているのであれば申し訳ありませんが、私は経験の書き込みコードの多くを持っていない点に注意してください)です。Pythonで.tifスタックを結合する

import numpy as np 
from skimage import io 

im1 = io.imread('filename1.ome.tif') 
for i in range(2,10): 
    im = io.imread('filename'+str(i)+'.ome.tif') 
    im1 = np.concatenate((im1,im)) 

io.imsave('filescombined.ome.tif', im1) 

これは、.tifファイルを私に残しありません、

print(im1.shape) 

によれば、それは正しい形状であり、im1.dtypeを使用すると、両方ともuint16になります。しかし、私はImageJ(または私が試した他のビューア)で結果の画像を開くことができません。私は

image = io.imread('filename1.ome.tif') 
io.imsave('testing.ome.tif', image) 

行う場合、結果を開くことができるため、問題は、io.imreadまたはio.imsaveで失われたデータから来ていないようです。だから私は問題がnp.concatenateに由来していると思いますが、問題の正確さとそれを修正する方法はまったく分かりません。

修正方法についてご意見がありましたら、大変感謝しています。

答えて

1

scikit画像のexternal.tifileモジュールをお試しください。あなたが説明する問題に遭遇していないようです。

以下はWindows 7とPython 3.5で動作します。それは正しく、あなたが(下記参照)をドラッグし、バイオフォーマットのインポートオプションがポップアップ表示されますImageJのにファイルをドロップするとストレートのImageJ

from skimage.external import tifffile as tif 
import numpy as np 

stack1 = np.random.randint(255, size=(20, 100, 100)) 

for i in range(2,10): 
    stack = np.random.randint(255, size=(20, 100, 100)) 
    stack1 = np.concatenate((stack1,stack)) 

tif.imsave('stack1.tif', stack1.astype('uint16'), bigtiff=True) 

にインポートすることができ、各100×100ピクセル180枚の画像のスタックを保存します。 View Stackを「Standard ImageJ」として選択すると、データが読み込まれます。 Screenshot of the ImageJ Bio-Format Import Option popup window

関連する問題