从彩色图像转换为8位灰度

时间:2015-09-23 16:28:46

标签: r jpeg grayscale 8-bit

我使用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中现有的函数我只能得到类型为double的灰度图像,意义值在0和1范围内。

1 个答案:

答案 0 :(得分: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.png16_left_bw-2.png

以下是第一张图片:

enter image description here

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

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

但只使用了256个级别: enter image description here

希望这有帮助。

相关问题