2015-05-12 59 views
0

我使用imread功能在八度到加载图像:八度:如何加载双重格式的灰度图像?

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

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

我想加载它作为值为0.0-1.0的双打的矩阵。我可以像这样转换它。

doubleImage = double(image)/255.0; 

但是,转换它是非常缓慢的,特别是对于很多图像。有没有什么办法直接加载图像作为双打矩阵?

回答

1

不,没有办法直接读取它作为双打。无论如何,它是没有意义的,因为图像是文件中的一个整数,所以总是必须先读取整数。如果要完成另一种类型的转换,则将它分开是有道理的。或者,也许使用以双浮点精度存储图像的文件格式。

但是,有一个更好的方法来做你正在做的事情,以转换成双。

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

使用im2double不会让它更快一点(它执行的操作是一样的你),但它会为你节省如果将来所读取的图像是uint16,即使图像已经是双等级的。

此外,我不知道如何转换为双倍缓慢。这是一个非常快速的操作。

+0

通过慢我的意思是它需要更长的时间将图像转换为加载比加载图像。更慢,因为我仍然必须这样做。以double形式加载图像会更有效率。 – Mouscellaneous

+1

@即使'imread'有一个选项来执行它,它不会更快。它仍然需要读取一个整数,然后将它加倍,然后除以255.关于你正在经历的缓慢,你应该检查什么是慢速部分:加倍,或除255。 – carandraug