2016-04-15 21 views
0

平均して複数のスタックを平均化できますか?理想的には、ImageJのようなGUIツールを使用しますか?私は約10-20スタックのセットでこれをしたい:1500x1500ピクセル、500スライス、各スタックの1チャンネル。それらのすべてを一度に読み込むことは、私のRAMの限界を押し進めています。複数のスタックの平均

出力として、1つのスタック(1500x1500ピクセル、500スライス、1チャネル)と、異なるスタック間の平均強度が必要です。

ImageJは一度に2つのスタックを平均化するように見えます。

私は最終平均ですべてのスタックの等重量を希望します。

答えて

2

imageJのようなGUIツールを理想的に使用していますか?

のImageJの使い方に関する質問ではなく、コードのどの部分に関係がstackoverflow.comにオフトピックであり、最高のImageJ forumに求めるべきです。

平均して複数のスタックを平均化するにはどうすればよいですか?

ImageJのでは、あなたのスタックからhyperstack構築することができます(画像>スタック>ツールを使って、例えば>を連結し...、その後画像> Hyperstacks> Hyperstackにスタック...)続いて平均投影を作成します(イメージ>スタック> Zプロジェクト...)。 タスクを達成するには、ディメンションにスタックあたり500個のスライスを割り当て、平均化するディメンションはzである必要があります。

希望に役立ちます。

0

私は1つの大きなハイパースタックにそれらをすべて組み合わせるスタックがあります。私は記憶がなくなっています。

私の代わりにのpythonを使用して終了:

import tkFileDialog 
import os 
import matplotlib.pyplot as plt 
from PIL import Image 
import numpy as np 
import glob 
from tifffile import imsave 

#select a directory containing tif-stacks to process 
#tif-stacks must have equal dimensions 

sd=tkFileDialog.askdirectory() 

#list of files to process 
fl= glob.glob(os.path.join(sd,'*.tif')) 

#number of files to process 
n_files=np.shape(fl)[0] 

im = Image.open(fl[0]) 

#get number of frames in first file by seeking all frames until error occurs 
#this seems clunky but is very fast 
#assuming same number of frames for all files 
n = 0 
while True: 
    n += 1 
    try: 
     im.seek(n) 
    except: 
     break 
n_frames=n 

#loop through all images, 
#read each frame and accumulate frame-wise sum over all stacks 

w, h = im.size 
temp = np.zeros((h,w,n_frames), dtype=np.int32) 

for i in range(n_files): 
    print 'processing file: ', i 
    im = Image.open(fl[i]) 

    for n in range (n_frames): 
     curframe = np.array(im.getdata()).reshape(h,w) 
     temp[:,:,n] += curframe 
     im.seek(n) 
     print ['frame: ', n],"   \r", 

avgStack=temp/n_files