out with soyface
in with eigenface
seen from Argentina
seen from United States

seen from Türkiye
seen from China
seen from China
seen from Russia

seen from United Kingdom
seen from United States

seen from Singapore
seen from China

seen from China
seen from Malaysia
seen from China

seen from Italy

seen from Thailand

seen from Italy
seen from Italy
seen from Italy

seen from Australia

seen from Germany
out with soyface
in with eigenface

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
An eigenface (/ˈaɪɡənˌfeɪs/) is the name given to a set of eigenvectors when used in the computer vision problem of human face recognition. (via Wikipedia)
PCA and DCT Based Approach for Face Recognition
by Manish Varyani | Pallavi Narware | Lokendra Singh Banafar "PCA and DCT Based Approach for Face Recognition"
Published in International Journal of Trend in Scientific Research and Development (ijtsrd), ISSN: 2456-6470, Volume-3 | Issue-3 , April 2019,
URL: https://www.ijtsrd.com/papers/ijtsrd23283.pdf
Paper URL: https://www.ijtsrd.com/engineering/electronics-and-communication-engineering/23283/pca-and-dct-based-approach-for-face-recognition/manish-varyani
international journals in engineering, engineering journal, paper publication for engineering
EIGENFACE
The word “eigenface”, half German and half English, can be translated roughly as “one’s own face”. In terms of a technical definition, an eigenface is a two-dimensional, grayscale image representing distinctive characteristics of a facial image.
The distinctive features are stored by the system as coefficients.Advocates of this technology maintain that most human faces can be reconstructed by combining features drawn from a set of between 100 and 150 such eigenfaces. In other words, although there are more than 5 billion individual human faces on this planet, they can all be reconstructed from fewer than 150 eigenfaces. Eigenface components are used to build facialimages. Software applications using this technology analyze a facial image, calculate its eigenface value using distinctive feature coefficients (essentially deconstructing the face into its eigenface components), and compare that value to a biometric template or database of biometrictemplates to find matching or similar eigenface values.
The ability of systems using this technology to match faces to biometric templates is highly dependent on lighting and facial angle. Since the biometric templates generally do not incorporate a variety of images taken in different lighting conditions and at different angles, eigenface technology works best when the system views faces frontally and in consistent lighting conditions. Its ability to generalize across facial poses has been found to be rather poor.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
比較
OpenCV Eigenface コード例 主成分分析による固有顔(平均顔)
OpenCV2.4.1から実装されている顔認識手法です.
ざっりくいうと,多くの顔画像から重要な成分のみを取り出して識別に使用するイメージです.
※識別に使う時に共通する成分(平均顔)を原画像から引いてから,識別すると性能がいいと報告があります.
http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html
各ソースコードとスクリプトの場所
C:\OpenCV2.4.2\modules\contrib\doc\facerec\src
上の2つの情報が十分にあるので,ここではシンプルにしたコードを紹介します.
流れ
①画像の読み込み
②ラベル付け
③trainと書き出し
④読み込み
⑤識別したい画像が顔画像かどうかの簡単なチェック
⑥predictによる識別
※学習と識別画像のサイzは統一する必要があります.
このプログラムの現状は2クラス分類です.
例えば,AとBさんの写真を用意する.
Aさんには1
Bさんには-1のラベルつける
新しい写真をもってきて,1 -1を判定する.
1ならAさん
-1ならBさんと判断されます.
ラベルをx種類つければ,x分類されてかえってくると思います.
ちなみに⑤をいれたのは,明らかに顔以外の画像にでも,1か-1を返してくるので,前処理として入れました.
-100なら,顔じゃないと判断して計算打ち切るのがいいと思います.
以下,ソースコード
static Mat norm_0_255(InputArray _src) {
Mat src = _src.getMat();
// Create and return normalized image:
Mat dst;
switch(src.channels()) {
case 1:
cv::normalize(_src, dst, 0, 255, NORM_MINMAX, CV_8UC1);
break;
case 3:
cv::normalize(_src, dst, 0, 255, NORM_MINMAX, CV_8UC3);
break;
default:
src.copyTo(dst);
break;
}
return dst;
}
// Compare two images by getting the L2 error (square-root of sum of squared error).
double getSimilarity(const Mat& A, const Mat& B)
{
if (A.rows > 0 && A.rows == B.rows && A.cols > 0 && A.cols == B.cols) {
// Calculate the L2 relative error between the 2 images.
double errorL2 = norm(A, B, CV_L2);
// Convert to a reasonable scale, since L2 error is summed across all pixels of the image.
double similarity = errorL2 / (double)(A.rows * A.cols);
if(similarity>THRESH_HOLD)
return 100;
else
return -100;
}
else {
//cout << "WARNING: Images have a different size in 'getSimilarity()'." << endl;
return -999999; // Return a bad value
}
}
以下 main文
int ALL=8;//写真の枚数
std::stringstream ofs;
vector<Mat> images;
vector<int> labels;
//////////////////
for(int i=0;i<ALL;i++){
ofs.str("");
ofs<<"IMG/"<<i<<".jpg";
cv::Mat temp =cv::imread(ofs.str(),0);
cv::Mat resize(HEIGHT,WIDTH, CV_8U);
cv::resize(temp,resize,resize.size());
images.push_back(resize);
}
///////
for(int i=0;i<ALL;i++){
if(i<MAN)
labels.push_back(1);
else
labels.push_back(-1);
}
Ptr<FaceRecognizer> learn = createEigenFaceRecognizer();//学習して書き出す.
Ptr<FaceRecognizer> model = createEigenFaceRecognizer();//読み込んで識別に使用
learn->train(images, labels);
learn->save("pca.xml");
model->load("pca.xml");
// Here is how to get the eigenvalues of this Eigenfaces model:
Mat eigenvalues = model->getMat("eigenvalues");
// And we can do the same to display the Eigenvectors (read Eigenfaces):
Mat W = model->getMat("eigenvectors");
// Get the sample mean from the training data
Mat mean = model->getMat("mean");
// Display or save:
imshow("平均顔(mean)", norm_0_255(mean.reshape(1, images[0].rows)));
cv::waitKey(0);
cv::Mat temp = cv::imread("IMG/image_0014.jpg",0);
cv::Mat resize(256,256, CV_8U);
cv::resize(temp,resize,resize.size());
cv::Mat pre_temp=cv::imread("IMG/0.jpg",0);
cv::Mat pre_reisze_face(HEIGHT,WIDTH,CV_8U);
cv::resize(pre_temp,pre_reisze_face,pre_reisze_face.size());
std::cout<<getSimilarity(resize,pre_reisze_face)<<"\n";
std::cout<<model->predict(resize)<<"\n";//各予測値
The (literally) average American Elf strip - its "eigencomic". First image is the average of all 5106 strips, second image shows 80 strips per sample, from 1998 in the upper left corner to 2013 at the bottom right.
Big Thank You & Apologies to James Kochalka!