【问题标题】:How to get pixel data from an image using R如何使用 R 从图像中获取像素数据
【发布时间】:2013-01-24 01:05:11
【问题描述】:

谁能帮助我如何从 R 中的图像中获取 RGB 像素数据?

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

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

我在 R 中尝试了许多软件包:Pixmap、Raster、ImageMetrics 并浏览了互联网、测试了方法、询问了合作学生等几个星期,试图解决这个问题。 在 Stackoverflow 我试过这个:How to extract the pixel data Use R's pixmap package?,没有运气。我的文件对于 R 窗口来说也太大了(整个数组没有显示),我很难理解生成的数组。对我来说,最好的办法是将数据作为矩阵或以另一种更容易理解的方式获取数据。 我发现了很多类似的问题,但在其他程序(如 Java、C++、IOS、Matlab、Python 等)中我很遗憾不知道如何使用。

我的问题可能是由于我对这类工作的技能不高,但我正在尽我所能在我所拥有的背景下努力。 如果有人可以帮助我或给我一些建议,我将非常感激。

【问题讨论】:

  • “没有运气”是什么意思? Kohske 对您的previous question 给出了很好的回答。更加详细一些。您是否尝试过调整他的解决方案?为什么它不起作用?
  • 使用 ImageJ(如果您可以访问 OS X,甚至使用 GraphicConverter)可能会更快乐。同时,假设鸟羽只覆盖图像的一部分,提取数组子集以最小化您正在处理的数据的大小。
  • @Andrie,我很抱歉没有看到这一点,正如您在我的编辑中看到的那样,我误解了我在做什么。但是,如果您有兴趣,我在尝试测试 bill_080 时收到此错误消息 答案:picture@size "错误:尝试从没有插槽的基本类(“数组”)的对象中获取插槽“大小”
  • @CarlWitthoft,是的,我一直在调查。结合了 R 和 ImageJ 的 ImageJ 或 Bio7。感谢您的建议! :)
  • 您应该打开新问题,而不是编辑原始问题并将其添加到其中。

标签: r colors rgb pixel


【解决方案1】:

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

png("/tmp/test.png")
plot(rnorm(100))
dev.off()

然后我将其转换为pixmap 可读的格式:在这里我将 png 转换为 ppm 文件,因为我想保留颜色信息。我从命令行使用 ImageMagick,但你可以使用任何你想要的程序:

$ convert /tmp/test.png /tmp/test.ppm

接下来,您可以使用pixmap 包中的read.pnm 函数读取图像:

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

然后,您可以使用x@redx@bluex@green 插槽(或用于灰度图像的x@grey)将每个通道的像素值作为矩阵获取。您可以检查矩阵的尺寸是否与图片的尺寸相同:

dim(x@red)
[1] 480 480

【讨论】:

  • 如果这解决了您的问题,您可以选中绿色标记以便向其他用户指示。
【解决方案2】:

以这个微小的 3x3 像素 png 图像为例:

然后:

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

如果您正在读取带有 alpha 通道的 PNG 图像(如上面的示例图像),那么每个 pix. 变量都是一个具有四个条目的向量,每个条目对应于红色、绿色、蓝色和 Alpha 值像素。

> pix.top.left
[1] 1 0 0 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2014-03-19
    相关资源
    最近更新 更多