Octave:如何以双格式加载灰度图像?

Octave: How to load grayscale images in double format?

我正在使用 Octave 中的 imread 函数加载图像:

image = imread ("data/images/image1.jpg")(:);

这显然是将图像加载为值 0-255 的整数矩阵。

我想将其加载为值 0.0-1.0 的双精度矩阵。我可以这样转换。

doubleImage = double(image) / 255.0;

但是,转换它很慢,尤其是对于很多图像。有什么方法可以直接加载图像作为双精度矩阵吗?

不行,没办法直接读成double。无论如何它都没有意义,因为图像在文件中是一个整数,所以总是必须首先读取整数。如果要完成到另一种类型的转换,那么分开完成是有意义的。或者,使用以双浮点精度存储图像的文件格式。

但是,有一种更好的方法可以将您正在做的事情转换成双精度值。

pkg load image;
img = imread ("image1.jpg");
img = im2double (img);

使用im2double不会使它更快(它执行的操作与您的操作相同)但是如果将来读取的图像是uint16,它会节省您的时间,并且即使图片已经是 class double.

此外,我看不出转换为 double 有多慢。这是一个非常快的操作。