gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 13:52:18 27 4
gpt4 key购买 nike

谁能帮助我从 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 等)中,我很遗憾不知道如何使用。

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

最佳答案

首先我生成一个例子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")

然后,您可以使用 x@red , x@blue , x@green槽(或 x@grey 用于灰度图像)以获取每个 channel 的像素值作为矩阵。您可以检查矩阵的尺寸是否与图片的尺寸相同:
dim(x@red)
[1] 480 480

关于r - 如何使用R从图像中获取像素数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14769628/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com