从光栅中提取每个 RGB 图层并粘贴到 R 中的矩阵中
Extract each RGB layers from raster and paste into matrix in R
我想将光栅图像存储到一个空矩阵中。我加载图像并创建一个相同维度的空矩阵。
setwd("C:/Users/Desktop/image/")
img_path <- "image.jpeg"
raster <- brick(img_path, package="raster")
nrow <- dim(raster)[1]
ncol <- dim(raster)[2]
img_matrix <- matrix(, nrow = nrow, ncol = ncol)
dim(raster)
[1] 896 1408 3
dim(img_matrix)
[1] 896 1408
当我尝试将栅格加载到矩阵中时出现此错误:
img_matrix[1, 1] <- raster
Error in img_matrix[1, 1] <- raster :
number of items to replace is not a multiple of replacement length
我认为问题是栅格中有 3 层而矩阵只有 1。所以我想我创建了 3 个矩阵并将栅格的每个 R、G、B 层粘贴到相关矩阵中。最后,assemble创建图像的3个矩阵。
怎么做?
class raster
的对象有一个 as.array
方法。
library(raster)
raster <- brick("3.jpg", package="raster")
dim(raster)
#[1] 665 800 3
array <- as.array(raster)
dim(array)
#[1] 665 800 3
array[201:205,401:405,1]
# [,1] [,2] [,3] [,4] [,5]
#[1,] 244 244 244 244 244
#[2,] 244 244 244 244 244
#[3,] 244 244 244 244 244
#[4,] 244 244 244 244 244
#[5,] 244 244 244 244 244
array[201:205,401:405,2]
# [,1] [,2] [,3] [,4] [,5]
#[1,] 202 202 202 202 202
#[2,] 202 202 202 202 202
#[3,] 202 202 202 202 202
#[4,] 202 202 202 202 202
#[5,] 202 202 202 202 202
如您所见,这会将光栅对象强制转换为三维数组。
我想将光栅图像存储到一个空矩阵中。我加载图像并创建一个相同维度的空矩阵。
setwd("C:/Users/Desktop/image/")
img_path <- "image.jpeg"
raster <- brick(img_path, package="raster")
nrow <- dim(raster)[1]
ncol <- dim(raster)[2]
img_matrix <- matrix(, nrow = nrow, ncol = ncol)
dim(raster)
[1] 896 1408 3
dim(img_matrix)
[1] 896 1408
当我尝试将栅格加载到矩阵中时出现此错误:
img_matrix[1, 1] <- raster
Error in img_matrix[1, 1] <- raster :
number of items to replace is not a multiple of replacement length
我认为问题是栅格中有 3 层而矩阵只有 1。所以我想我创建了 3 个矩阵并将栅格的每个 R、G、B 层粘贴到相关矩阵中。最后,assemble创建图像的3个矩阵。
怎么做?
class raster
的对象有一个 as.array
方法。
library(raster)
raster <- brick("3.jpg", package="raster")
dim(raster)
#[1] 665 800 3
array <- as.array(raster)
dim(array)
#[1] 665 800 3
array[201:205,401:405,1]
# [,1] [,2] [,3] [,4] [,5]
#[1,] 244 244 244 244 244
#[2,] 244 244 244 244 244
#[3,] 244 244 244 244 244
#[4,] 244 244 244 244 244
#[5,] 244 244 244 244 244
array[201:205,401:405,2]
# [,1] [,2] [,3] [,4] [,5]
#[1,] 202 202 202 202 202
#[2,] 202 202 202 202 202
#[3,] 202 202 202 202 202
#[4,] 202 202 202 202 202
#[5,] 202 202 202 202 202
如您所见,这会将光栅对象强制转换为三维数组。