gpt4 book ai didi

r - 矩阵到图像,每个元素恰好有 1 个像素

转载 作者:行者123 更新时间:2023-12-02 17:51:29 26 4
gpt4 key购买 nike

我有兴趣将矩阵转换为图像(元素值=像素强度),有点像: R - image of a pixel matrix?

但是我需要图像的大小正好(以像素为单位)矩阵的大小。因此,如果矩阵是 234x14,那么生成的图像也应该是。

偏好不使用额外 R 包的解决方案(如回答上面列出的问题),但一切都会很好。

最佳答案

一种方法是完全避免使用 R 设备,并依赖 rgdal 中的 GDAL 驱动程序。

m <- matrix(rep(1:234, each = 14), ncol = 14, byrow = TRUE)
l <- list(x = 1:nrow(m), y = 1:ncol(m), z = m)

library(rgdal)
x <- image2Grid(l)
writeGDAL(x, "out.tif")

GDAL 中还有其他驱动程序,但“GeoTIFF”是默认值,默认值将准确保留值(在 R 和 GDAL 的数字限制内)。这只是一个单波段栅格,但它对多个属性同样有效。

这里真正的限制是文件的目标,以及它是否可以按照您想要的方式读取生成的图像。 GDAL 具有您需要的所有选项,但默认值是否正确以及您真正需要的取决于细节。

y <- readGDAL("out.tif")
all.equal(as.image.SpatialGridDataFrame(y)$z, m)
[1] TRUE

这是一个更真实地显示数字限制的浮点示例:

set.seed(1)

m <- matrix(runif(234 * 14), ncol = 14)
l <- list(x = 1:nrow(m), y = 1:ncol(m), z = m)

library(rgdal)
x <- image2Grid(l)
writeGDAL(x, "out.tif")

y <- readGDAL("out.tif")

all.equal(as.image.SpatialGridDataFrame(y)$z, m)
[1] "Mean relative difference: 1.984398e-08"

另一种方式是 pixmap 使用的 pnm 格式。见

library(pixmap)

?write.pnm

关于r - 矩阵到图像,每个元素恰好有 1 个像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7645889/

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