【发布时间】:2011-07-18 23:05:19
【问题描述】:
我正在尝试将一些 matlab 代码转换为 python,而 im2double 函数给我带来了麻烦。它需要一个图像并返回一个矩阵,其中像素使用双精度而不是整数。
目前我正在使用 PIL 处理我的图像。它有一个convert 方法,可以将'F' 作为参数,但它所做的只是将整数值255 转换为255.0。据我所知没用。
我遇到的问题是我正在做一些图像处理,然后必须保存它们。我可以标准化我的值,使它们落入 0-255 范围内,但我失去了一些精度。它足够小,通常不重要,但在这里,它确实如此。
我尝试过使用“tiff”文件格式,但效果不佳。虽然我可以对其进行写入/读取,但我得到的结果不是正确的,我目前只能将像素转换为 255,这会导致精度损失,正如我之前所说。我还尝试了这种'SPIDER' 文件格式的东西,我之前在谷歌上找到了 PIL 支持的东西,尽管我无法在编辑器上打开图像来检查它是如何做的。
【问题讨论】:
-
为了最终写出像素,您必须转换为 0-255 范围,不是吗?
-
是的,但我希望我只需要这样做,因为我现在没有合适的文件格式可以使用。例如,您实际上可以在 matlab 上做一个
im.show(floating_point_image)而无需转换它。 -
您的计算机只有红色、绿色和蓝色的范围 0-255。它根本无法显示更多细节。
-
真的吗?并不是我怀疑你,而是我真的很惊讶,因为我正在阅读的代码中有一些存储在 .mat 文件中的颜色数据,其精度大于 1/255。例如,我看不到从 .mat 文件生成的图片和转换为黑白的彩色图像的区别,但是加载原始值并对其进行操作,我可以用代码显示实际上存在差异在某些像素的图像中。所以,换句话说,为了存储这个显着差异,我不能使用图像,尽管代码对此有用?嗯。很奇怪。
-
另外,像 exr 或 rgbe 这样的文件格式呢?
标签: python image matlab image-processing python-imaging-library