Closed GinYM closed 6 years ago
Hi @GinYM
I got the anthropometric data from the article you mentioned. In Deepgaze the values are reported in the python file called head_pose_estimation.py and stored in the following numpy arrays:
P3D_RIGHT_SIDE = np.float32([-100.0, -77.5, -5.0]) #0
P3D_GONION_RIGHT = np.float32([-110.0, -77.5, -85.0]) #4
P3D_MENTON = np.float32([0.0, 0.0, -122.7]) #8
P3D_GONION_LEFT = np.float32([-110.0, 77.5, -85.0]) #12
P3D_LEFT_SIDE = np.float32([-100.0, 77.5, -5.0]) #16
P3D_FRONTAL_BREADTH_RIGHT = np.float32([-20.0, -56.1, 10.0]) #17
P3D_FRONTAL_BREADTH_LEFT = np.float32([-20.0, 56.1, 10.0]) #26
P3D_SELLION = np.float32([0.0, 0.0, 0.0]) #27 This is the world origin
P3D_NOSE = np.float32([21.1, 0.0, -48.0]) #30
P3D_SUB_NOSE = np.float32([5.0, 0.0, -52.0]) #33
P3D_RIGHT_EYE = np.float32([-20.0, -32.35,-5.0]) #36
P3D_RIGHT_TEAR = np.float32([-10.0, -20.25,-5.0]) #39
P3D_LEFT_TEAR = np.float32([-10.0, 20.25,-5.0]) #42
P3D_LEFT_EYE = np.float32([-20.0, 32.35,-5.0]) #45
#P3D_LIP_RIGHT = np.float32([-20.0, 65.5,-5.0]) #48
#P3D_LIP_LEFT = np.float32([-20.0, 65.5,-5.0]) #54
P3D_STOMION = np.float32([10.0, 0.0, -75.0]) #62
The reference point (0,0,0) is the sellion, that is the bridge of the noose. The other coordinates are estimated moving on the three axes respect to that point. The left eye for instance is P3D_LEFT_EYE = np.float32([-20.0, 32.35, -5.0]) #45
the three numbers are expressed as X-Y-Z coordinates, with X pointing forward, Y on the left and Z up.
If you want to calibrate this coordinates on a specific face, then you have to estimate all those distances. A good performance can be obtained using a few points, the only requirement is that the points are not on the same plane.
Regards, Massimiliano
Can you give me some hints on how to generate the Antropometric constant values based on the paper "Head-and-Face Anthropometric Survey of U.S. Respirator Users" since I cannot find the data about 3D model points.