我正在使用Octave中的imread函数来加载图像:
image = imread ("data/images/image1.jpg")(:);
这显然是将图像加载为整数矩阵,值为0-255。
我想将其加载为值为0.0-1.0的双精度矩阵。我可以像这样转换它。
doubleImage = double(image) / 255.0;
然而,转换它非常慢,特别是对于很多图像。有没有办法直接将图像作为双打矩阵加载?
答案 0 :(得分:1)
不,没有办法直接把它读成双打。它无论如何都没有意义,因为图像是文件中的整数,因此必须首先读取整数。如果要进行另一种类型的转换,那么它确实是分开的。或者,可以使用以双浮点精度存储图像的文件格式。
但是,有一种更好的方法可以做你正在做的事情来转换为双倍。
pkg load image;
img = imread ("image1.jpg");
img = im2double (img);
使用im2double
不会让它更快(它执行的操作与你的相同)但是如果以后读取的图像是uint16
,它将为您节省时间,并且即使图像已经是双等级。
另外,我不知道转换成双倍的速度是多么慢。这是一个非常快速的操作。