2014-12-01 1 views
1

내 컴퓨터가 크게 느려지지 않고도 MATLAB에서 가져 오기에는 너무 큰 1675x965x365 TIFF 이미지 (> 2GB)가 있습니다 (지금까지는 할 수 없었습니다). 그것도 열어 라!). 메모리에로드하지 않고도 이미지를 읽을 수있는 효율적인 방법이 있습니까? 어쨌든, 내 마지막 목표는 각 밴드의 값을 다른 밴드와 합산하는 것입니다. 즉, 크기가 1675x965 인 2D 이미지를 [1,1]에있는 모든 픽셀의 합인 픽셀로 합치는 것입니다. [1,1] 위치에 365 개 밴드가 있습니다. 나는 나의 문제를 명확하게 설명하기를 희망한다. 미리 감사드립니다!MATLAB - 큰 크기의 멀티 밴드 TIFF를 메모리에로드하는 방법

답변

1

imread()의 색인 능력은 결코 한 번에로드 된 데이터의 두 개 이상의면 가치가없는에서 당신을 계속 사용 : 나는 TIFF 이미지의 게으른 로딩을위한 MATLAB 클래스를 작성했습니다

ImgInfo = imfinfo('imgFile.tif'); 

BaseImg = zeros(ImgInfo(1).Width, ImgInfo(1).Height); 

for k = 1:length(ImgInfo) 

    BaseImg = BaseImg + double(imread('imgFile.tif', k, 'Info', ImgInfo)); 

end 

BaseImg = BaseImg/length(ImgInfo); 
0

; 데이터는 디스크에 남아 있으며 액세스 할 때만로드됩니다. 그것은 당신의 기억 문제를 처리해야합니다. 그것이 당신을 돕는 지보십시오.

Lazy loading of TIFF stacks for Matlab

관련 문제