我对R很新,我想知道是否有一种简单的方法可以将BMP图像转换为R中的矩阵。主要是,我正在寻找任何可以提供帮助的软件包。矩阵中每个元素的值对应于颜色。
答案 0 :(得分:6)
在CRAN包列表中搜索“bmp”会拉出bmp
和其他一些,为简洁起见,我将使用此包。
library(bmp)
fl <- system.file("images", "5HT1bMARCM-F000001_seg001_lsm.bmp", package = "bmp")
b <- read.bmp(fl)
此对象是一个数组,包含有关该文件的一些信息:
str(b)
int [1:206, 1:206, 1:3] 107 111 119 123 115 119 119 139 143 143 ...
- attr(*, "header")=List of 13
..$ filesize : num 127774
..$ offset : num 54
这是一个3D阵列:
dim(b)
[1] 206 206 3
有一个as.raster
函数,它带有一个可选的max
参数:
m <- as.raster(b, max = 255)
此矩阵m
现在是二维颜色矩阵(十六进制)。
str(m)
'raster' chr [1:206, 1:206] "#6B0303" "#6F0303" "#770303" ...
dim(m)
[1] 206 206
让我们绘制这个东西,我们需要设置一个图,然后找出它的范围,这样我们就可以用我们的图像填充设备。
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
usr <- par("usr")
rasterImage(m, usr[1], usr[3], usr[2], usr[4])
您的需求取决于BMP文件使用的存储选项以及您使用哪种软件进行读取。
还有其他选项,readbitmap
包和rgdal
(可能还有raster
),但这取决于您可以在计算机上安装的内容。