1

我使用 R 进行图像处理(包 EBImage)

我有一个输入“jpeg”图像,在读取“R”并尝试print(Input_Image)给我以下输出图像

  colorMode    : Color 
  storage.mode : double 
  dim          : 3888 2592 3 
  frames.total : 3 
  frames.render: 1 

现在,我想将此颜色类型的输入图像转换为8 位 灰度图像类型。

我厌倦了手动和互联网搜索,但找不到解决方案。由于我期望最终结果为 8 位,因此输出灰度图像的最大值将为 255。

使用 R EBImage 中现成的函数,我只能获得类型为双精度的灰度图像,值在 0 和 1 范围内。

4

1 回答 1

0

可以通过修改 的属性将图像转换为灰度colorMode。使用评论中链接的文件可以尝试:

library("EBImage")
img <- readImage("16_left.jpg")

有了这个文件已被读取并存储在img其中(假设 JPEG 文件在工作目录中)。

> img
Image 
colorMode    : Color 
storage.mode : double 
dim          : 1279 853 3 
frames.total : 3 
frames.render: 1 
...

现在可以使用将图像转换为灰度

img@colormode <- Grayscale

或者

colorMode(img) = Grayscale

然后可以将转换后的图像存储为 PNG 文件:

writeImage(img,file="16_left_bw.png")

在此示例中,三个图像存储在工作目录中16_left_bw-0.png16_left_bw-1.png、 和16_left_bw-2.png

这是这些图像中的第一张:

在此处输入图像描述

根据使用标准图像查看器(这里我使用 ubuntu 的 ImageMagick)的分析,图像以 8 位格式存储。数据仍然以双精度格式存储,范围从 0 到 1

> range(img@.Data)
[1] 0 1

但只使用了 256 个级别: 在此处输入图像描述

希望这可以帮助。

于 2015-09-23T16:50:47.680 回答