将图像合并到z-stack并在Python中生成最大投影

将图像合并到z-stack并在Python中生成最大投影,python,pandas,image,numpy,tiff,Python,Pandas,Image,Numpy,Tiff,如果有人能帮助我用Python编写代码(我正在逐渐学习)来解决我面临的问题,那将是非常棒的 我们正在使用高通量显微镜,我正在对96孔板进行成像——多个孔中不同位置的z叠层。当我提取图像时,它们的名称编码行(rXX,它是从01到08)、列(cXX,它是从01到12)字段(fxx,它是从01到任意数字)、平面(pXX,它是从01到z堆栈中的多个步骤)、ch1到ch6成像通道。示例如下: r04c02f01p01-CH1SK1F1FL1.tiff r04c02f01p01-ch2sk1fk1fl1.t

如果有人能帮助我用Python编写代码(我正在逐渐学习)来解决我面临的问题,那将是非常棒的

我们正在使用高通量显微镜,我正在对96孔板进行成像——多个孔中不同位置的z叠层。当我提取图像时,它们的名称编码行(rXX,它是从01到08)、列(cXX,它是从01到12)字段(fxx,它是从01到任意数字)、平面(pXX,它是从01到z堆栈中的多个步骤)、ch1到ch6成像通道。示例如下:

r04c02f01p01-CH1SK1F1FL1.tiff
r04c02f01p01-ch2sk1fk1fl1.tiff
r04c02f01p01-ch3sk1fk1fl1.tiff
r04c02f01p01-ch4sk1fk1fl1.tiff
r04c02f01p01-ch5sk1fk1fl1.tiff
r04c02f01p01-ch6sk1fk1fl1.tiff

r04c02f01p16-ch1sk1fk1fl1.tiff
r04c02f01p16-ch2sk1fk1fl1.tiff
r04c02f01p16-ch3sk1fk1fl1.tiff
r04c02f01p16-ch4sk1fk1fl1.tiff
r04c02f01p16-ch5sk1fk1fl1.tiff
r04c02f01p16-ch6sk1fk1fl1.tiff

如下例,我想得到每个通道的Z堆栈和每个通道的最大强度投影,如下所示:

ST_r02c04f01-ch1.tiff
ST_r02c04f01-ch2.tiff
ST_r02c04f01-ch3.tiff
ST_r02c04f01-ch4.tiff
ST_r02c04f01-ch5.tiff
ST_r02c04f01-ch6.tiff

MAX_r02c04f01-ch1.tiff
MAX_r02c04f01-ch2.tiff
MAX_r02c04f01-ch3.tiff
MAX_r02c04f01-ch4.tiff
MAX_r02c04f01-ch5.tiff
MAX_r02c04f01-ch6.tiff

每口井通常有30多个视场成像,约60口井,因此约有1800个视场

我试着这样做:

import numpy as np
import os
import matplotlib.pyplot as plt
import numpy as np
import multiprocessing 
import pandas as pd
from tifffile import imsave
from skimage import io
import skimage.io
import skimage.exposure
import skimage.morphology
import skimage.measure
import skimage.transform
import skimage.segmentation
from PIL import Image, TiffTags

dir = 'D:/

listfiles =[]
for img_files in os.listdir(dir):
    if img_files.endswith(".tiff"):
        listfiles.append(img_files)

first_image = io.imread(dir+listfiles[0])

io.imshow(first_image)

first_image.shape

stack = np.zeros((5,first_image.shape[0],first_image.shape[1]),np.uint16)

for n in range(0,5):
    stack[n,:,:]= io.imread(dir+listfiles[n])  

io.imshow(stack[0])

IM_MAX= np.max(stack, axis=0)
plt.imshow(IM_MAX)

但是,我想选择特定的图像,与前8个或列表上的某个图像相对

如果您对这个问题有任何建议或解决方案,请告诉我


提前感谢您的帮助

我不确定我是否完全理解你的问题

解释如何将单个TIFF文件合并到堆栈中

一旦拥有了堆栈,Python模块可能会帮助您:它绘制TIFF堆栈的z max投影