2017-01-18 11 views
0

폴더에 수천 개의 dicom 이미지가 있습니다. 이 같은 내가 다음 NumPy와 배열로 모든 이미지를 쌓아하려면이numfy 배열로 변환하기 전에 dicom 이미지 크기 조정

import numpy as np 
import dicom 

folder = "/images" 
imgs = [dicom.read_file(folder + '/' + s) for s in os.listdir(folder)] 

처럼 pydicom로 읽기 :

data = np.stack([i.pixel_array for i in imgs]) 

그러나, 이미지 또는 다른 크기 때문에 적재 할 수 없습니다.

모든 이미지의 크기를 1000x1000 크기로 조정하는 단계를 어떻게 추가합니까?

+0

"모든 이미지의 크기를 1000x1000으로 조정하는 단계를 어떻게 추가 할 수 있습니까?" 적재 전 및 적재 전 적합한 목록 이해력. – Trilarion

답변

1

numpy 배열 목록으로 저장 한 경우 다른 크기 일 수 있습니다. 그렇지 않으면 당신은 목록으로 저장하고 스택 수 scipy 줌 기능,

import numpy as np 
import dicom 
import scipy 

xsize = 1000; ysize = 1000 
folder = "/images" 
data = np.zeros(xsize, ysize, len(os.listdir(folder))) 
for i, s in enumerate(os.listdir(folder)): 

    img = np.array(dicom.read_file(folder + '/' + s).pixel_array) 
    xscale = xsize/img.shape[0] 
    yscale = ysize/img.shape[1] 
    data[:,:,i] = scipy.ndimage.interpolation.zoom(img, [xscale, yscale])) 

를 사용하지만 LEN (os.listdir (폴더))에 의해 1000 크기 1000 NumPy와 배열을 미리 할당하는 것이 더 쉽습니다 보인다. dicom 또는 테스트 파일이 없으므로 사례를 확인할 수는 없지만 아이디어가 확실히 작동합니다 (올바른 크기로 이미지를 스케일링하기 전에 사용했습니다). 또한 귀하의 케이스에 맞는 스케일을 확인하십시오.