将图像从ATT数据库转换为像素值矩阵

时间:2018-03-04 22:12:31

标签: r pca

我目前正在研究R中的面部识别代码。我正在使用att数据库中的400张图像: http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html

我已经阅读了所有400张图片(请参阅下面的代码)。 我想知道如何将这些图像的像素值提取到像素值矩阵中以用于面部识别。

我的代码很远:

rm(list = ls())

library(imager)
library(magick)
library(png)

Load_Image <- function(fn) {
  img <- image_read(fn)

  img_bmp <- img[[1]][1,,]
  img_dims <- attributes(img_bmp)$dim
  imga <- as.cimg(as.integer(img_bmp),x=img_dims[1],y=img_dims[2])
  list(imga,img_dims)
}


A <- list.files(path="./orl_faces/")

B <- A[grep(pattern="^s",A)]
C <- paste("./orl_faces/",B,"/",sep="")
Clen <- length(C)

ImgDB <- data.frame(person=character(),imgfile=character(),imgfile_fq=character(),
                    xdim=integer(),ydim=integer(),bmpindx=integer())


Imgs <- vector("list",400)
bmpindx <- 1

for(i in 1:Clen) {
  img_files <- list.files(path=C[i],full.names=FALSE)
  img_files_full <- paste(C[i],img_files,sep="")
  for(j in (1:length(img_files))) {
    Img <- Load_Image(img_files_full[j])
    ImgDB <- rbind(ImgDB,data.frame(person=B[i],imgfile=img_files[j],
                                imgfile_fq=img_files_full[j],xdim=Img[[2]][[1]],
                                ydim = Img[[2]][[2]],bmpindx = bmpindx))
    Imgs[[bmpindx]] <- Img[[1]]
    bmpindx <- bmpindx + 1
  }
}

save(ImgDB,Imgs,file="orl_faces.Rdata")

0 个答案:

没有答案