在R EBImage中将RGB图像转换为单通道灰度图像

在R EBImage中将RGB图像转换为单通道灰度图像,r,image-processing,R,Image Processing,R-初学者问题: 我想将RGB图像转换为灰度,并用Image()显示/打印它 通过colorMode(gray)=灰度转换的图像似乎与图像功能不兼容。R EBImage中的Crayscale图像是否有多个通道 然后我手动转换了它,并能够对其调用image() 然而,两种灰度图像在强度方面略有不同。 有没有办法将R EBImage中的RGB转换为单通道灰度 编辑 为了回答这个问题,为什么要使用EBImage: 该软件包提供了一些图像处理功能。例如,我可以使用进一步的EBImage命令轻松显示扫描测

R-初学者问题:

我想将RGB图像转换为灰度,并用Image()显示/打印它

通过colorMode(gray)=灰度转换的图像似乎与图像功能不兼容。R EBImage中的Crayscale图像是否有多个通道

然后我手动转换了它,并能够对其调用image()

然而,两种灰度图像在强度方面略有不同。 有没有办法将R EBImage中的RGB转换为单通道灰度

编辑 为了回答这个问题,为什么要使用EBImage:

该软件包提供了一些图像处理功能。例如,我可以使用进一步的EBImage命令轻松显示扫描测试条带(img1)的强度图(img2):

blotgraph = resize(gblur(gray1,3),200,1)
plot(blotgraph, type="l")
我不知道如何在没有EBImage的情况下解决此类任务


这可能更简单,尽管有更快更干净的方法来压缩颜色层

library(png)
foo<-readPNG("c:/test/b/s2.png")
#that's an array n by m by 3 . Now reduce to grey
bar<- foo[,,1]+foo[,,2]+foo[,,3]
# normalize
bar <- bar/max(bar)
# one of many ways to plot
plot(c(0,1),c(0,1),t='n')
rasterImage(bar, 0,0,1,1)
库(png)

foo如果我错了,很抱歉,但据我所知,您转换为灰度的方式不正确。一般来说,EBImage到灰度的转换是通过命令
grayImages完成的。在您发布的代码中,您在第一个块中犯了一个错误。应该是
image(灰色)
而不是
image(灰色)
?为什么要使用
EBImage
?使用标准的
base
graphics
软件包工具将图像对象转换为灰度并不是什么大问题。@maneteran好的,谢谢!我已经修好了。然而,它并没有解决问题:-)@CarlWitthoft:我来到R或多或少是偶然的。我在谷歌上搜索了一些与图像处理相关的问题,发现了EBImage。我试过R,很快就喜欢上了。所以你建议先尝试用核心函数实现所有东西?学习png软件包很有趣!bar@ValentinHeinitz一定有一个rgb-to-gray函数,但我现在找不到:-(太好了!这就是我一直在寻找的。(我想你指的是nb.total.frames:1不是3)我不知道通道函数的“gray”参数值
blotgraph = resize(gblur(gray1,3),200,1)
plot(blotgraph, type="l")
library(png)
foo<-readPNG("c:/test/b/s2.png")
#that's an array n by m by 3 . Now reduce to grey
bar<- foo[,,1]+foo[,,2]+foo[,,3]
# normalize
bar <- bar/max(bar)
# one of many ways to plot
plot(c(0,1),c(0,1),t='n')
rasterImage(bar, 0,0,1,1)
Image
  colormode: Grayscale 
  storage.mode: double 
  dim: X Y 
  nb.total.frames: 1 
  nb.render.frames: 1