【发布时间】:2013-12-06 19:46:18
【问题描述】:
一个 R 初学者问题:
我想将 RGB 图像转换为灰度并使用 image() 显示/绘制它
library(EBImage)
orig = readImage("c:/test/b/s2.png")
gray = orig
colorMode(gray) = Grayscale
display(gray) #works
image(gray) #Error 'z' should be a matrix
colorMode(gray) = Grayscale 转换的图像似乎与 image-function 不兼容。 R EBImage中的Crayscale图像是否有多个通道?
然后我手动转换它并能够在其上调用 image()
r = channel(orig,"r")
g = channel(orig,"g")
b = channel(orig,"b")
gray1 = 0.21*r+0.71*g+0.07*b
display(gray1)
image(gray1) #works
但是,两个灰色的图像在强度方面略有不同。 有没有办法在 R EBImage 中将 RGB 转换为单通道灰度?
编辑 为了回答这个问题,为什么要使用 EBImage:
该软件包提供了一些图像处理功能。例如。我可以使用更多的 EBImage 命令轻松显示扫描测试条 (img1) 的强度图 (img2):
blotgraph = resize(gblur(gray1,3),200,1)
plot(blotgraph, type="l")
我不知道如何在没有 EBImage 的情况下解决此类任务
【问题讨论】:
-
在您发布的代码中,您在第一个块中犯了一个错误。应该是
image(gray)而不是image(grey)? -
为什么要使用
EBImage?使用标准的base和graphics封装工具将图像对象转换为灰度并不是什么大问题。 -
@Manetheran 好的,谢谢!我已经修好了。然而它有原因没有解决问题:-)。
-
@CarlWitthoft:我或多或少是偶然来到 R 的。我搜索了一些与图像处理相关的问题并遇到了 EBImage。我试过 R 并立即喜欢它。所以你会建议先尝试用核心功能来实现所有东西?
标签: r image-processing