Main Content

im2double

将图像转换为双精度值

说明

示例

I2 = im2double(I) 将图像 I 转换为双精度。I 可以是灰度强度图像、真彩色图像或二值图像。im2double 将整数数据类型的输出重新缩放到范围 [0, 1]。

I2 = im2double(I,'indexed') 将索引图像 I 转换为双精度。im2double 在整数数据类型的输出中增加大小为 1 的偏移量。

示例

全部折叠

读取数据类型为 uint8 的一个示例图像。

I = imread('peppers.png');
whos I
  Name        Size                Bytes  Class    Attributes

  I         384x512x3            589824  uint8              

将图像转换为数据类型 double

I2 = im2double(I);
whos I2
  Name        Size                 Bytes  Class     Attributes

  I2        384x512x3            4718592  double              

在 GPU 上将数组转换为类 double。该示例需要 Parallel Computing Toolbox™。

I1 = gpuArray(reshape(uint8(linspace(1,255,25)),[5 5]));
I2 = im2double(I1);

输入参数

全部折叠

输入图像,指定为数值标量、向量、矩阵或多维数组。

  • 如果 I 是灰度或真彩色 (RGB) 图像,它可以是 uint8uint16doublelogicalsingleint16

  • 如果 I 为索引图像,它可以是 uint8uint16doublelogical

  • 如果 I 为二值图像,它必须是 logical

如果安装了 Parallel Computing Toolbox,则 I 可以是 gpuArray 并且 im2double 在 GPU 上转换 I

数据类型: single | double | int16 | uint8 | uint16 | logical

输出参数

全部折叠

转换后的图像,返回为与输入图像 I 大小相同的数值数组。

数据类型: double

提示

  • 如果输入图像 I 的数据类型是 doublesinglelogical,则输出像素值与输入像素值相同。

    注意

    对于数据类型为 singledouble 的真彩色图像,许多 MATLAB® 函数要求像素值在 [0, 1] 范围内。当输入图像具有 singledouble 数据类型时,im2double 函数不会重新缩放输出。如果输入图像是像素值超出此范围的数据类型为 singledouble 的真彩色图像,则您可以使用 rescale 函数将像素值缩放到所需范围 [0, 1]。

  • 如果 I 是灰度或真彩色图像且数据类型为 uint8uint16int16,则 im2double 将输出像素值重新缩放到范围 [0, 1]。

  • 如果 I 是数据类型为 uint8uint16 的索引图像,则 im2double 将偏移量 1 添加到输出像素值。

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

版本历史记录

在 R2006a 之前推出

另请参阅

| (Image Processing Toolbox) | (Image Processing Toolbox) | (Image Processing Toolbox) | (Image Processing Toolbox) | (Parallel Computing Toolbox)