【问题标题】:R: Cast multiple raster stacks into 4D arrayR:将多个栅格堆栈投射到 4D 数组中
【发布时间】:2018-01-24 20:23:08
【问题描述】:

上下文: 我有数百个光栅堆栈,每个堆栈的层数相同。每个堆栈覆盖更大研究区域的不同方形地理图块。每个堆栈可以有一层或多层;这些我等同于图像通道。因此,每个堆栈都可以看作是 (x,y,c) 的 3D 数组。我想采用 z 数量的光栅堆栈并将它们转换为 (z,x,y,c) 的 4D 数组。其目的是格式化这些数据,以便在 Keras 中训练一个需要“通道最后”(z,x,y,c)数组的网络。

问题: 如何将光栅堆栈表示为多通道图像并转换为形状为 (z,x,y,c) 的 4D 数组?

代表:

library(raster)
## three layers/channels for tile #1
x1_1 <- raster(ncol=2,nrow=2)
x1_1[] <- c(11:14)
x1_2 <- raster(ncol=2,nrow=2)
x1_2[] <- c(15:18)
x1_3 <- raster(ncol=2,nrow=2)
x1_3[] <- c(19:22)
# three layers/channels for tile #2
x2_1 <- raster(ncol=2,nrow=2)
x2_1[] <- c(21:24)
x2_2 <- raster(ncol=2,nrow=2)
x2_2[] <- c(25:28)
x2_3 <- raster(ncol=2,nrow=2)
x2_3[] <- c(29:32)
# stack channels from each tile
x1 <- stack(x1_1,x1_2,x1_3)
x2 <- stack(x2_1,x2_2,x2_3)
dim(x1) # (2,2,3)
# cast vectors of each 
array(c(as.vector(x1),as.vector(x2)),c(2,2,2,3))

这会将堆栈转换为 4D 数组,但顺序不正确。

, , 1, 1

     [,1] [,2]
[1,]   11   13
[2,]   12   14

, , 2, 1

     [,1] [,2]
[1,]   15   17
[2,]   16   18

, , 1, 2

     [,1] [,2]
[1,]   19   21
[2,]   20   22

...

x 和 y 被转置,顺序按每个堆栈的第 4(通道)维度排序。所需的顺序是将第一个维度作为栅格堆栈/图块的数量z,然后是 x、y,最后是每个栅格的通道(在本例中为 1 到 3)。 R 中的打印顺序将是 (z,x,y,c) 枚举为 (1,2,2,1);(1,2,2,2);(1,2,2,3);(2 ,2,2,1);(2,2,2,2);(2,2,2,3)

我意识到我没有很好地解释这个问题,因为我过去没有过多地处理多维数组。任何帮助,将不胜感激。

【问题讨论】:

  • 您对“正确顺序”的理解是什么。
  • 好问题;澄清添加到帖子的末尾。谢谢!
  • 仍不清楚。该数组有 24 个元素,您只要求索引其中的 6 个。发布一个完整的答案,显示您认为所需的显示顺序和排列。
  • 对不够清晰表示歉意。我的示例末尾的数组的暗淡是(2,2,2,3)作为(x,y,z,c),我想要(z,x,y,c)。不幸的是,由于我将示例限制为两个栅格堆栈,因此这也将是 dim == (2,2,2,3) 。如果那是 10 个栅格堆栈,它将是暗淡 == (10,2,2,3)。谢谢!
  • 如果你碰巧有 R 的 keras 包,你可以从下面的例子中加载 cifar10 数据并查看所需的结果; dim(x_train) == (50000,32,32,3) 或(图像数量,x 像素,y 像素,RGB 通道)keras.rstudio.com/articles/examples/cifar10_cnn.html

标签: arrays r keras raster


【解决方案1】:

您需要输出为数组还是栅格?如果是数组,aperm 函数就是您所需要的 (ex):

arr <- array(c(as.vector(x1),as.vector(x2)),c(2,2,2,3))
aperm(arr, c(3,1,2,4))

【讨论】:

    猜你喜欢
    • 2018-10-06
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2014-11-01
    • 2017-09-23
    相关资源
    最近更新 更多