ピクセル データの抽出方法 R の pixmap パッケージを使用しますか?
したがって、次を使用して画像ファイルを読み取ります。
画像 <- read.pnm("picture.pgm") 画像 Pixmap 画像 タイプ : pixmapGrey サイズ : 749x745 解像度 : 1x1 境界ボックス : 0 0 745 749
ピクセルデータをいくつかのマトリックスに抽出する方法は?
によって、グレースケール イメージの 2 次元行列またはカラー イメージの 3 次元配列としてデータを取得できます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
これを試して:
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)