Как сохранить данные изображений float64 без потери информации, но при этом визуализировать их - PullRequest
3 голосов
/ 25 октября 2019

Я пытаюсь реализовать водяные знаки для изображения в частотном спектре, используя быстрое преобразование Фурье, и все работает отлично, за исключением того факта, что я не могу сохранить полученное изображение с водяными знаками без проблем. Поскольку приложение должно быть удобным для пользователя, никакие взломы относительно просмотра фотографий не приемлемы. Пользователь должен иметь возможность загрузить полученный файл и просмотреть его без изменений.

Код в основном выглядит следующим образом:

import cv, imageio

image = cv2.imread(imagePath, cv2.IMREAD_UNCHANGED)
watermark = cv2.imread(wmPath, cv2.IMREAD_UNCHANGED)

# result is float64, due to the transition from the frequency spectrum to spatial
result = embed_watermark(image, watermark)
imageio.imwrite('result.tiff', result)
result2 = imageio.imread('result.tiff') # Still float64, thanks to tiff format
detection = detect_watermark(result, image)

Итак, код работаетпо желанию, он предотвращает потерю данных, благодаря контейнеру TIFF, который учитывает значения пикселей с плавающей точкой. Тем не менее, сохраненный файл ('result.tiff') не может быть открыт ни с каким средством просмотра фотографий, включенным в MS Windows. Если я использую любые другие обычные контейнеры (jpeg, png, bmp), я могу визуализировать полученное изображение, но в итоге теряю информацию о водяных знаках.

Я пробовал решения, обсужденные здесь и здесь и прочитайте документацию , но я, кажется, не оборачиваюсь вокруг этого. Я также пытался открыть изображение с помощью FIJI (следуя совету Ander Biguri , но я получаю эту ошибку: «ImageJ может открывать только 8- и 16-битные / канальные изображения (64)»

Как я мог сохранить файл без потери данных водяного знака или возможности открыть полученный файл для визуализации?

...