입니다. 저는 초보자 R 코더에 지나지 않으며, PCA와 eigenfaces 기법을 사용하여 이미지를 분류하는 데 영감을 받았습니다. 그러나 대부분의 예제는 Python으로 보입니다. 저는 R로 개발을 계속하고 싶습니다.모든 간단한 EigenFaces 분류 코드는 R
Cambridge 그레이 스케일 얼굴 이미지를 400 샘플 x 10304 열 ImageData에로드했습니다. 각 열은 112x92 그레이 스케일 픽셀 값을 나타냅니다. . pixmapRGB를 사용하여 각 이미지를 플롯 할 수 있습니다.
나는 PCA 분석을 수행하고, Eigenvalues를 추출했다고 믿지만, 50 개의 EigenFaces에서 첫 번째 이미지를 재구성하면, 거친 EigenFace와 같은 방법으로 아직 멀다.
(나는 센터없이 평균 이미지와 colmeans없이 시도하고 prcomp있다 = FALSE. 그래서
정말 찾고 올바르게 그래서 난 내 이미지 처리 수단입니다 생각하지 않는다 제대로 올바르게 확장, 또는 일부 끝이 R에 고유 얼굴을 classificational 코드를 종료하는
cmeans = colMeans(TrainImages)
DisplayImage(cmeans, main = "Average Person")
ProcTrainData = TrainImages # - cmeans
# Now PCA Analysis - Adjusted Tolerance to 0.125 to return ~50 PCs
PCAProcess = prcomp(ProcTrainData, center = TRUE, tol = 0.125)
# Analyse PCA results Results
par(mfrow = c(1, 2))
screeplot(PCAProcess)
devs = PCAProcess$sdev^2/sum(PCAProcess$sdev^2)
plot(1 - devs, main = "Percent Variance Explained", type = "l")
EigenFaces = PCAProcess$rotation
# Project Training Data into PCA Eignevalue space
TrainPCAValues = ProcTrainData %*% EigenFaces
# Plot first ten EigenFaces
par(mfrow = c(2, 5))
par(oma = rep(2, 4), mar = c(0, 0, 3, 0))
for (i in 1:10) {
DisplayImage(EigenFaces[, i], main = paste0("EF ", i)) #PCs from sample data
}
# ======== Recover the first Image by the use of PCA attributes and Eigen
# Images
Composite[1:ImageSize] = 0 # PCAProcess$center;
for (iv in 1:50) {
Composite = Composite + TrainPCAValues[1, iv] * EigenFaces[, iv]
}
DisplayImage(Composite)
DisplayImage(TrainImages[1, ])
DisplayImage(PCAProcess$center)
아이겐은
은 원래 1 차 샘플 대 복합 생성 얼굴
예를 들어 동일한 데이터 세트에서 연결 했습니까? 표준 편차를 플로팅 해 보았습니까? – broncoAbierto