2015-08-04 7 views
1

У меня есть многостраничные TIFF-изображения размером> 4 ГБ. Мой компьютер не может обрабатывать импорт с помощью imread, поэтому я хочу импортировать одну страницу за раз, используя цикл, делать то, что я хочу, и очищать память на каждом шаге. I красный this post о возможности для этого. Во всяком случае, я, похоже, не могу делать то, что хочу, поскольку, когда я использую info=imfinfo('my_image.tif'), а затем numel(info) (как было предложено в сообщении, которое я связал), эта последняя команда должна указывать мне количество страниц в моем многостраничном TIFF, но он выводит только 1. Я полагаю, что это связано с тем, как я создал изображения: я использовал GRASS GIS (объединив функции i.group и r.out.gdal).Импорт многостраничного изображения TIFF на одну страницу за один раз

Кроме того, информация, которую я получаю от imfinfo показывает количество страниц (720) в разные голоса:

  1. BitsPerSample (который является 1x720 double)
  2. SamplesPerPixel (который является 720)
  3. MaxSampleValue и MinSampleValue (оба являются 1x720 double)
  4. SampleFormat (что составляет 1x720 cell)

EDIT 1

Я забыл упомянуть, что мой код (так же, как по ссылке):

fname = 'my_file_with_lots_of_images.tif'; 
info = imfinfo(fname); 
num_images = numel(info); 
for k = 1:num_images 
    A = imread(fname, k, 'Info', info); 
    % ... Do something with image A ... 
    clear A 
end 

Когда я запускаю его MATLAB получает stucked. Я также попытался установить k = 1:2, чтобы проверить импорт двух страниц, но программа все равно застревает, и я полагаю, что она не импортирует только одну страницу, а скорее все из них в одно и то же время. Размер изображения - 1677x927x720.

+0

Возможно, попробуйте использовать 'pdfimages' - часть пакета Poppler. –

ответ

0

По моему опыту у Matlab возникают проблемы с выпуском памяти, и это также зависит от используемой вами операционной системы (see here).

Я бы установил точку останова в конце цикла, поэтому вы можете проверить после одной итерации, если только изображение было импортировано в отладчик. Кроме того, если вы check for memory сразу после вашего ясного вызова, вы можете получить представление о том, что происходит.

Также стоит упомянуть другие функции импорта, такие как tiffread2, который оптимизирован для стеков tiff и работает хорошо для меня, но мои стеки составляют менее 1 ГБ.

 Смежные вопросы

  • Нет связанных вопросов^_^