我使用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范围内。
答案 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.png
,16_left_bw-1.png
和16_left_bw-2.png
以下是第一张图片:
根据使用标准图像查看器的分析(这里我使用ubuntu的ImageMagick),图像以8位格式存储。数据仍然以双重格式存储,范围从0到1
> range(img@.Data)
[1] 0 1
希望这有帮助。