Как извлечь данные пикселей Используйте пакет pixmap R? - PullRequest
5 голосов
/ 22 мая 2011

Как извлечь данные пикселей. Используйте пакет pixmap R?

, поэтому я читаю файл изображения, используя:

изображение <- read.pnm ("picture.pgm") картина Пиксельное изображение Тип: pixmapGrey Размер: 749x745 Разрешение: 1x1 Ограничительная рамка: 0 0 745 749 </p>

Как извлечь данные пикселей в какую-то матрицу?

Ответы [ 2 ]

4 голосов
/ 22 мая 2011

Вы можете получить данные в виде 2-D матрицы для изображения в градациях серого или 3-D массива для цветного изображения с помощью getChannels.

>  x <- read.pnm(system.file("pictures/logo.ppm", package="pixmap")[1])
>  y <- getChannels(x)
>  class(y)
[1] "array"
>  dim(y)
[1]  77 101   3
>  
>  x <- read.pnm(system.file("pictures/logo.pgm", package="pixmap")[1])
>  y <- getChannels(x)
>  class(y)
[1] "matrix"
>  dim(y)
[1]  77 101

, если вы хотите получить более прямой доступ к данным, используйтеАксессуар S4 (@), например:

>  x <- read.pnm(system.file("pictures/logo.ppm", package="pixmap")[1])
>  str(x)
Formal class 'pixmapRGB' [package "pixmap"] with 8 slots
  ..@ red     : num [1:77, 1:101] 1 1 1 1 1 1 1 1 1 1 ...
  ..@ green   : num [1:77, 1:101] 1 1 1 1 1 1 1 1 1 1 ...
  ..@ blue    : num [1:77, 1:101] 1 1 0.992 0.992 1 ...
  ..@ channels: chr [1:3] "red" "green" "blue"
  ..@ size    : int [1:2] 77 101
  ..@ cellres : num [1:2] 1 1
  ..@ bbox    : num [1:4] 0 0 101 77
  ..@ bbcent  : logi FALSE
>  x@size
[1]  77 101
1 голос
/ 22 мая 2011

Попробуйте это:

library(pixmap)   

picture <- read.pnm("picture.pgm")   

#Take a look at what you can get (notice the "@" symbols) 
str(picture)   

#If you want to build a matrix using the dimensions of "picture"....    
picture@size    
mat1 <- matrix(NA, picture@size[1], picture@size[2]) 

#If you want to build a matrix directly from "grey".....  
mat <- picture@grey    

#Take a look at mat
head(mat)
...