如何在R中转换像素值数据数组



我使用R中的biOps包从图像中提取RGB值。例如,我有一个10x10像素的图像。结果是一个数组,x[1:10,1:10,1]代表红色,x[1:10,1:10,2]代表绿色,x[1:10,1:10,3]代表蓝色。我想将其转换为如下所示的数据框架:

(像素X位置,像素Y位置,红色值,绿色值,蓝色值)

X  Y  R   G   B
1  1  255 255 255
1  2  255 255 255
1  3  0   0   0
...
10 10 255 255 255

重要:我并不总是知道像素的大小,我只是用10x10作为例子。

在R中怎么做?如有任何帮助,我将不胜感激。

干杯B

reshape2库可以简化此操作。首先让我们创建一些测试数据

x <- array(sapply(1:3, function(i) sample(0:9, 100, replace=T)+i*10),昏暗的= c (10 10 3))

这是一个数组x与您的dim c(10,10,3)。现在我们可以融化数据并按我们喜欢的方式进行转换

mm <- melt(x, varnames=c("X","Y","Color"))
mm$Color <- factor(mm$Color, levels=1:3, labels=c("Red","Blue","Green"))
xx <- dcast(mm, X+Y~Color)
head(xx)

生成类似

这样的数据
  X Y Red Blue Green
1 1 1  10   26    33
2 1 2  12   23    31
3 1 3  13   25    32
4 1 4  18   24    31
5 1 5  18   26    35
6 1 6  14   24    36

注意reshape命令不关心它是10x10,它只会取消数组的每个维度。你只需要确保第三个维度是3,以对应这三种颜色。

相关内容

  • 没有找到相关文章

最新更新