2013-05-28 77 views
3

我對R很新,我想知道是否有一種簡單的方法將BMP圖像轉換爲R中的矩陣。主要是,我正在尋找任何可以提供幫助的軟件包。矩陣中每個元素的值將對應於顏色。需要幫助將BMP圖像轉換爲[R]中的矩陣?

+0

如果你可以以png格式存儲你的位圖圖像,你可以使用'png'包中的'readPNG',否則你可以使用'readbitmap'包。 – agstudy

回答

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現在是顏色(十六進制)的二維矩陣。讓我們來繪製這個事情,我們需要設置一個繪圖,然後找出它的範圍,以便我們可以用我們的圖像填充設備。

plot(1, type = "n", axes = FALSE, xlab = "", ylab = "") 
usr <- par("usr") 
rasterImage(m, usr[1], usr[3], usr[2], usr[4]) 

您的需求將取決於您的BMP文件,你用它來閱讀該軟件使用的存儲選項。

Basic image plot from R bmp package

還有其他的選擇,與readbitmap包,並用rgdal(也許是通過raster),但是這將取決於你可以在機器上安裝了什麼。

+0

好吧,所以我開始使用read.bmp嘗試一些這方面的東西。我做了一個16x16的圖像,它全是黑色和白色。我先通過readPNG解釋它(相同的圖像,但作爲PNG文件),我得到的值都是小於1(黑色像素)或1白色的小數。當我保存與單色bmp相同的圖像時,它不會通過read.bmp讀取它。有任何想法嗎? – riders994

+0

這對於某人來說並不是很好的信息,爲什麼不充實你所做的和你期望的細節?看到這裏的指導:http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – mdsumner