The first thing we did was to change our normalization algorithm. Last week, we translated, rotated, scaled, and sheared each face so as to align them all on top of another. This week, we undid the shearing. Instead,
- We computed the SVD of the Affine Matrix ( A = U * S * V')
- We found the estimated rigid rotation matrix R = U * V' (excluding S, which is the scaling component of equation).
A. Subject: Male #1, Expression: Surprised, Sample #1 - BLACK
B. Subject: Male #1, Expression: Surprised, Sample #4 - BLUE
(B is transformed using R and translation to A)
Here are the results after running the Matching against the new normalization methods.
- With 23 subjects or less, we achieved perfect sensitivity vs specificity.
- As we increased the number of subjects into the system, we observed more error until we reached a threshold at 43 subjects where we no longer observed a loss in precision as we added more subjects.
- There are more False Negatives than False Positives.
Results of matching the new normalization:
The data consists of 13 males, 20 females and 13 males, 30 females respectively
33 Subjects (13 M 20 F)
43 Subjects (13 M 30 F)




Hey guys, here's the link to meshlab, which may make it easier to visualize 3d point clouds http://meshlab.sourceforge.net/
ReplyDeleteHere's code I use to export a set of matlab points to a PLY, which you can open in meshlab. Hopes this helps!
% - Vectors px py pz are vertex coordinates
% - Just using 255 0 0 for the color (red)
% (but this can also be specified per vertex)
% - You may need to create the file output.ply first
% in the current matlab working folder
fileId = fopen('output.ply', 'w');
fprintf(fileId,'ply\n');
fprintf(fileId,'format ascii 1.0\n');
fprintf(fileId,'element vertex %d\n', 480*640);
fprintf(fileId,'property float x\n');
fprintf(fileId,'property float y\n');
fprintf(fileId,'property float z\n');
fprintf(fileId,'property uchar red\n');
fprintf(fileId,'property uchar green\n');
fprintf(fileId,'property uchar blue\n');
fprintf(fileId,'end_header\n');
for i = 1:(480*640)
fprintf(fileId, '%f %f %f %d %d %d\n', px(i), py(i), pz(i), 255, 0, 0);
end
fclose(fileId);
fclose(fileId);