2013-05-28 2 views
3

Я очень новичок в R, и мне было интересно, был ли простой способ преобразования BMP-изображения в матрицу в R. В основном, я ищу любой пакет, который может помочь. Значения каждого элемента в матрице соответствуют цветам.Нужна помощь в преобразовании изображения BMP в матрицу в [R]?

+0

Если вы можете сохранить растровое изображение в формате png, вы можете использовать 'readPNG' из пакета' png', иначе вы можете использовать пакет 'readbitmap'. – agstudy

ответ

6

Поиск «bmp» в списке пакетов CRAN подтягивает 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 теперь представляет собой двумерную матрицу цветов (hex).

str(m) 
'raster' chr [1:206, 1:206] "#6B0303" "#6F0303" "#770303" ... 


dim(m) 
[1] 206 206 

Давай сюжет этой вещи, нам нужно создать сюжет, а затем выяснить, это диапазон таким образом мы можем заполнить устройство с нашим изображением.

Ваши потребности будут зависеть от параметров хранения, используемых вашим 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

Смежные вопросы