如何一次平均多個堆棧?理想情況下使用像ImageJ這樣的GUI工具?我想在大約10-20個堆棧上做到這一點:1500x1500像素,500片,每個堆棧中有1個通道。一次加載所有這些將會推動我的RAM的極限。作爲一個輸出,我想要一個堆棧(1500x1500像素,500個切片,1個通道),其強度平均在不同的堆棧上。多個堆棧的平均數
ImageJ似乎限於一次平均2個堆棧。
我希望所有堆疊的平均重量在最終平均值。
如何一次平均多個堆棧?理想情況下使用像ImageJ這樣的GUI工具?我想在大約10-20個堆棧上做到這一點:1500x1500像素,500片,每個堆棧中有1個通道。一次加載所有這些將會推動我的RAM的極限。作爲一個輸出,我想要一個堆棧(1500x1500像素,500個切片,1個通道),其強度平均在不同的堆棧上。多個堆棧的平均數
ImageJ似乎限於一次平均2個堆棧。
我希望所有堆疊的平均重量在最終平均值。
理想情況下使用像imageJ一樣的GUI工具?
關於使用的ImageJ並沒有涉及到任何一段代碼的問題是題外話上stackoverflow.com和應在ImageJ forum是最好問。
我該如何一次平均多個堆棧?
ImageJ中,你可以建立從堆棧一個hyperstack(例如,通過使用圖像>棧>工具>串連...然後圖像> Hyperstacks>棧Hyperstack ...)並隨後創建平均投影(圖像>疊加> Z項目...)。 要完成您的任務,您應該將每個堆疊的500個切片分配給維度,並且要平均的維度應爲z。
希望有所幫助。
我有太多的堆棧將它們組合成一個大的hyperstack。我內存不足了。
我結束了使用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