将图像转换为数据框,其中包含 R 中坐标和像素值的列

converting image to data frame with columns for coordinates and pixel value in R

我想将遥感图像转换为 data.frame,两列用于 xy 坐标,第三列用于像素值。这是默认的数据输入 ppmlasso.

原始图像作为矩阵导入到 R 中,没有先验坐标。最小和最大坐标和分辨率在文本文件中给出,因此我使用它们为 spatstat 创建 im class。 这是一个简单的例子,让我们说 seq 的十进制坐标,例如图像分辨率为 10 m。

mat <- matrix(seq(1,20, by=1), nrow=4, ncol=5)  
m <- mat[4:1,]
i <- im(m, xcol = seq(5,45, by=10), yrow = seq(5,35,by=10)) 
plot(i, axes = T)
print(mat)

到目前为止,RS 数据有两种不同的表示形式 - matrixim。现在我想要第三个表示 - data.frame,其中两列用于坐标对,第三列用于相应的 RS 值。直觉上我是这样做的:

r <- raster(i)
v <- as.vector(as.matrix(r))
df <- cbind(coordinates(r),v)
print(df)

raster的原因是为了使用coordinates调用。然而,结果是错误的 - 坐标对和矩阵中的值不匹配,因为 coordinates 是按从顶行开始沿着整行的顺序调用的,而 as.vector 按列调用值。

建议?

as.data.frame(i)
#    x  y value
#1   5  5     4
#2   5 15     3
#3   5 25     2
#4   5 35     1
#5  15  5     8
#6  15 15     7
#7  15 25     6
#8  15 35     5
#9  25  5    12
#10 25 15    11
#11 25 25    10
#12 25 35     9
#13 35  5    16
#14 35 15    15
#15 35 25    14
#16 35 35    13
#17 45  5    20
#18 45 15    19
#19 45 25    18
#20 45 35    17

应该这样做 ;)