Я создаю программу python для загрузки изображения .tiff, вырезания выделения из изображения и сохранения выделения как tiff. Изображения набора данных большие, превышают 1 ГБ. Я могу успешно вырезать то, что мне нужно, и сохранить как tiff, но размеры новых файлов изображений намного больше, чем я ожидал и нуждался.
Открытие Я использую tifffile, чтобы открыть изображение как массив numpy. OpenCV и PIL не смогли открыть файлы из-за размера. Я также пробовал использовать OpenSlide, но в дальнейшем столкнулся с другими проблемами с read_region()
.
Обрезка Массив numpy имеет форму (height, width, 3)
, поэтому я обрезаю его, используя что-то вроде large_image[top:bottom, left:right, :]
. Это работает по назначению.
Экономия Использование cv2.imwrite()
привело к самым маленьким размерам файлов, но они по-прежнему намного больше, чем должны быть. PIL.Image.save()
и TiffWriter
из tifffile
создавали еще более крупные изображения.
Лучшие результаты: обрезка 13 новых изображений из файла размером 250 МБ - используя только около 20% исходного изображения - дает мне файлы общим размером более 900 МБ . Я ожидаю, что общая сумма будет примерно 50 МБ.
Примечание : обрезанные файлы .tiff имеют правильные размеры. Если исходный формат 200,000 x 50,000
, то обрезанный файл будет, скажем, 8,000 x 3,000
. Кроме того, я не могу открыть исходное изображение размером 250 МБ с помощью Preview на моем Ma c, но я могу быстро открыть обрезанное изображение размером 500 МБ, созданное моей программой, когда я сохраняю изображение с помощью TiffWriter
(я могу открывать файлы, сохраненные с помощью opencv а также).
Сводка кода:
import tifffile
import cv2
import numpy as np
original_image = tifffile.imread('filepath') #original_image is a numpy array
#...calculations for top, bottom, etc...
cropped_image = original_image[top:bottom, left:right, :]
cv2.imwrite('output_filepath', cropped_image)
Эти 3 строки - все используемые мной операции ввода-вывода.
tl; dr - попытка загрузки изображений, кадрировать и сохранять новые изображения как .tiff, но новые размеры файлов намного больше, чем ожидалось.