2017-11-08 36 views
1

나는 여러 개의 .tif 스택 (각각 이미 40 개의 이미지로 구성되어 있음)을 단일 Tiff 스택으로 결합하려고합니다. 파이썬을 사용하여 이것을 수행하는 것을 선호합니다. 내가 지금까지 시도하는 것은 (내가 뭔가를 분명 누락하면 미안, 내가 경험 코드를 작성의 여지가 없습니다 명심)입니다 :파이썬에서 .tif 스택을 결합하기

import numpy as np 
from skimage import io 

im1 = io.imread('filename1.ome.tif') 
for i in range(2,10): 
    im = io.imread('filename'+str(i)+'.ome.tif') 
    im1 = np.concatenate((im1,im)) 

io.imsave('filescombined.ome.tif', im1) 

이것은 .tif 파일로 날 떠나 않습니다,

print(im1.shape) 

에 따르면 올바른 모양이며 im1.dtype을 사용하면 두 가지 모두 uint16이됩니다. 그러나 ImageJ (또는 내가 시도한 다른 뷰어)에서 결과 이미지를 열 수 없습니다. 내가

image = io.imread('filename1.ome.tif') 
io.imsave('testing.ome.tif', image) 

할 경우 결과가 열릴 수 있기 때문에 문제는 io.imread 또는 io.imsave으로 손실되는 데이터에서 제공하지 않는 것 같습니다. 그래서 문제는 np.concatenate에서 비롯된 것이라고 생각합니다. 그러나 정확하게 문제를 해결하는 방법을 알지 못합니다.

수정 방법에 대한 아이디어가 있으시면 대단히 감사하겠습니다.

답변

1

scikit 이미지의 external.tifile 모듈을 사용해보십시오. 당신이 묘사하는 문제를 겪지 않는 것 같습니다.

다음은 Windows 7 및 Python 3.5에서 작동합니다. 그것은 정확하게 180 개 이미지 직선

from skimage.external import tifffile as tif 
import numpy as np 

stack1 = np.random.randint(255, size=(20, 100, 100)) 

for i in range(2,10): 
    stack = np.random.randint(255, size=(20, 100, 100)) 
    stack1 = np.concatenate((stack1,stack)) 

tif.imsave('stack1.tif', stack1.astype('uint16'), bigtiff=True) 

드래그 앤 바이오 형식 가져 오기 옵션 (아래 참조) 나타납니다 ImageJ에로 파일을 삭제 ImageJ에

로 가져올 수 있습니다 각 100 × 100 픽셀의 스택을 절약 할 수 있습니다. View Stack을 "Standard ImageJ"로 선택하면 데이터가로드됩니다. Screenshot of the ImageJ Bio-Format Import Option popup window