如何保存 float64 图像数据而不丢失信息,同时能够将其可视化

Bog*_*dra 5 python watermark numpy fft image-processing

我正在尝试使用快速傅立叶变换来实现频谱图像水印,一切都运行良好,除了我无法在不遇到麻烦的情况下保存生成的水印图像。由于该应用程序旨在用户友好,因此任何有关照片查看的黑客行为都是不可接受的。用户必须能够下载结果文件并按原样查看,无需任何进一步修改。

代码基本上是这样的:

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)
Run Code Online (Sandbox Code Playgroud)

因此,代码可以按需要工作,它可以防止数据丢失,这要归功于 tiff 容器,它允许浮点像素值。但是,保存的文件(“result.tiff”)无法使用 MS Windows 中包含的任何照片查看器打开。如果我使用任何其他常用容器(jpeg、png、bmp),我可以可视化生成的图像,但最终会丢失水印信息。

我已经尝试过此处此处讨论的解决方案并阅读了文档,但我似乎并没有理解这一点。我还尝试使用 FIJI 打开图像(遵循Ander Biguri的建议,但我收到此错误:“ImageJ 只能打开 8 和 16 位/通道图像 (64)”

我怎样才能保存文件而不丢失水印数据,也不能够打开结果文件进行可视化?