pythonで MIP (Maximum Intensity Projection) 画像を作る
pythonでstack画像からMIP画像を作った時のメモ
前提
ディレクトリ (data_dir) 内に次のような画像ファイルがある xxx_z000.tif xxx_z001.tif xxx_z002.tif ..... また画像は全てgray scaleである
コード
import cv2 import numpy as np from pathlib import Path data_dir = Path('data_dir') images = sorted(list(data_dir.glob('./*.tif'))) for i in images: im = cv2.imread(str(i),0) try: stack = np.concatenate([stack, im[:,:, np.newaxis]],axis=2) except: stack = im[:,:, np.newaxis] mip = np.amax(stack, axis=2)
解説
dataのディレクトリ指定及び画像パスの取得
data_dir = Path('data_dir') images = sorted(list(data_dir.glob('./*.tif')))
画像を順番に読み込み、結合する この時最初の画像だけ操作が変わるのでtry~exceptで処理する
for i in images: im = cv2.imread(str(i),0) try: stack = np.concatenate([stack, im[:,:, np.newaxis]],axis=2) except: stack = im[:,:, np.newaxis]
次元を指定して最大値を抜き出す
mip = np.amax(stack, axis=2)