r - 无法使用 R 中的 EBImage 包显示实际的灰度图像

标签 r image-processing grayscale r-package binary-image

我是 R 中图像处理的新手。首先,我使用 EBImage R 包来进行此操作。我有一个 260 x 134 Matrix,我使用

将其转换为图像
> image1 <- as.Image(matrix1)

而且,这是图像对象摘要

> image1 
  colorMode    : Grayscale 
  storage.mode : double 
  dim          : 260 134 
  frames.total : 1 
  frames.render: 1 

imageData(object)[1:5,1:6]
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    0    0    0    0    0    0
[2,]    0    0    0    0    0    0
[3,]    0    0    0    0    0    0
[4,]    0    0    0    0    0    0
[5,]    0    0    0    0    0    0

image 对象中特定单元格的大于零的值如下所示:

> imageData(image1)[9,2]
[1] 3686.308

然后,我使用 EBImage 包中的 display 函数来查看从矩阵数据构建的图像。

> display(image1, method = "raster")

但是,我得到了一个二进制图像,即只有黑白像素。我已经在下面展示了它。我的数据不仅仅由 01 组成。背景值为零,但具有实际图像图案的区域的值大于 1。如何使用灰度并使用此包中的函数显示图像?有人遇到过类似的问题吗?我也找不到指定渐变级别的参数。

enter image description here

最佳答案

图像仅呈现为黑白的原因是 display 函数需要 [0, 1] 范围内的值。高于 1 的值将被剪裁并有效显示为 1(白色)。

要正确可视化数据,您首先需要将像素强度值缩放到 [0, 1] 范围。这可以借助 normalize 函数来完成:

image1 <- normalize(image1)
display(image1, method = "raster")

关于r - 无法使用 R 中的 EBImage 包显示实际的灰度图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36471444/

相关文章:

r - 为什么R的物流增长产出与另一个不同?

在两列中翻转时删除行

r - 如何识别向量的确切元素是什么?

c++ - 英文字母的drawContours函数

c - 在 SDL 2.0 中可视化 2D GSL 矩阵

r - 将频率矩阵转换为 R 中的有序对列表

c++ - C 中的图像处理

matlab - MATLAB中实现积分图像的问题

html - 灰度影响容器中的所有内容

ios - 如何使用 swift 中的自定义按钮选择表格 View 中的所有单元格?