私はちょうど初心者のRコーダーであり、画像を分類するためにPCAと固有画像技術の使用に触発されています。しかし、ほとんどの例はPythonのように見えますが、私はRで開発を続けたいと考えています。単純なEigenFacesの分類コードR
ケンブリッジのグレースケール顔画像を400サンプルx10304カラムImageDataにロードしました。各カラムは、112x92のグレースケールピクセル値。 pixmapRGBを使って各画像をプロットすることができます。OK。
私はEigenvaluesを抽出したと信じていますが、50個のEigenFacesから最初のイメージを再構成すると、それはまだ遠く離れています。
だから私は、私は私の画像処理手段だと思っていないと、適切に正しくスケール、または正しく(私はcolmeans平均画像ととせずに試みたが、FALSEセンター=なしprcompいる。
だから私は本当に探しています一部の端部がRに固有顔を分類的コードを終了するため
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