Объединение изображений в z-стек и создание макс-проекции / в Python - PullRequest
0 голосов
/ 23 февраля 2020

Было бы здорово, если бы кто-нибудь помог мне написать код в Python (который я постепенно изучаю), чтобы решить проблему, с которой я сталкиваюсь.

Мы используем микроскоп с высокой пропускной способностью, и я фотографирую 96-луночные планшеты - z-стеки из разных мест в нескольких лунках. Когда я извлекаю изображения, их имя кодирует строку (rXX, это от 01 до 08), столбец (cXX, это от 01 до 12), поле (fxx, это от 01 до любого числа), плоскость (pXX, это от 01 на количество шагов в z-стеке), ch1 - ch6 каналов изображения. Ниже приведен пример:

r04c02f01p01-ch1sk1fk1fl1.tiff;
r04c02f01p01-ch2sk1fk1fl1.tiff;
r04c02f01p01-ch3sk1fk1fl1.tiff;
r04kf1f011010101010101010101010101011011011011010101010101101101101101101101001101011 размолвка;
r04c02f01p01-ch6sk1fk1fl1.tiff

1011 * <...> 1013 * r04c02f01p16-ch1sk1fk1fl1.tiff;
r04c02f01p16-ch2sk1fk1fl1.tiff;
r04c02f01p16-ch3sk1fk1fl1.tiff ;
r04c02f01p16-ch4sk1fk1fl1.tiff;
r04c02f01p16-ch5sk1fk1fl1.tiff;
r04c02f01p16-ch6sk1fk1fl1.tiff;

как следует из этого примера, я хотел бы получить Z-стек каждого канала и MAX-проекцию интенсивности каждого канала, например:

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; * 1035c04f01; * 1035c04f01; -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)

Однако я хочу выбрать определенные c изображения, а не первые 8 или что-то в списке.

Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения или решения этой проблемы.

Заранее спасибо за помощь!

...