如何使用R从图像中获取像素数据

如何使用R从图像中获取像素数据,r,colors,rgb,pixel,R,Colors,Rgb,Pixel,有人能帮我从R中的图像中获取RGB像素数据吗 我需要这些信息来比较鸟类羽毛的差异,以帮助理解物种形成事件 我的照片是用数码相机拍摄的,现在是NEF文件。无论需要哪种类型的文件,我都可以将文件转换为我想要的任何文件。然而,我更愿意在文件中保存尽可能多的信息(即PNG文件是好的) 为了解决这个问题,我在R中尝试了很多软件包:Pixmap、光栅、ImageMetrics和浏览互联网、测试方法、询问合作学生等。 在Stackoverflow,我试过这个:,但运气不好。我的文件对于R窗口来说也太大(整个数

有人能帮我从R中的图像中获取RGB像素数据吗

我需要这些信息来比较鸟类羽毛的差异,以帮助理解物种形成事件

我的照片是用数码相机拍摄的,现在是NEF文件。无论需要哪种类型的文件,我都可以将文件转换为我想要的任何文件。然而,我更愿意在文件中保存尽可能多的信息(即PNG文件是好的)

为了解决这个问题,我在R中尝试了很多软件包:Pixmap、光栅、ImageMetrics和浏览互联网、测试方法、询问合作学生等。 在Stackoverflow,我试过这个:,但运气不好。我的文件对于R窗口来说也太大(整个数组没有显示),我很难理解生成的数组。对我来说,最好的办法是以矩阵的形式获取数据,或者以另一种更容易理解的方式获取数据。 我发现了很多类似的问题,但是在其他程序(如java、C++、iOS、Matlab、python等)中,我很遗憾不知道如何使用。 我的问题可能是由于我对这类工作的技能低下,但我正在尽我所能地利用我的背景。
如果有人能帮助我或给我一些建议,我将非常感激。

首先,我生成一个示例
png
图像:

png("/tmp/test.png")
plot(rnorm(100))
dev.off()
然后我将其转换为可由
pixmap
读取的格式:这里我将png转换为ppm文件,因为我想保留颜色信息。我从命令行使用ImageMagick,但您可以使用任何您想要的程序:

$ convert /tmp/test.png /tmp/test.ppm
接下来,您可以使用
read.pnm
功能从
pixmap
软件包中读取图像:

x <- read.pnm("/tmp/test.ppm")

以3x3像素png图像为例:

然后:


“不走运”是什么意思?科斯基给了你一个很好的回答。具体点。你试过调整他的解决方案吗?为什么它不起作用呢?使用ImageJ(如果您可以访问OSX,甚至可以使用GraphicConverter),您可能会更开心。同时,假设birdfeathers只覆盖了图像的一部分,提取数组子集以最小化您正在处理的数据的大小。@Andrie,很抱歉没有看到这些,正如您在我的编辑中看到的,我误解了我在做什么。但是,如果您感兴趣,我在尝试测试bill_080答案时收到以下错误消息:picture@size“错误:试图从没有插槽的基本类(“数组”)对象获取插槽“大小”@CarlWitthoft,是的,我刚刚研究过这个问题。ImageJ或Bio7,它们结合了R和ImageJ。谢谢你的建议!:)您应该打开新问题,而不是编辑原始问题并将其添加到其中。如果这解决了您的问题,您可以选中绿色标记,以便向其他用户指示。
dim(x@red)
[1] 480 480
library('png')
download.file('http://i.stack.imgur.com/hakvE.png', 'sample.png')
img <- readPNG('sample.png')
pix.top.left <- img[1,1,]     # row 1, column 1
pix.bottom.left <- img[3,1,]  # row 3, column 1
pix.top.right <- img[1,3,]    # row 1, column 3
> pix.top.left
[1] 1 0 0 1