Home Company Media Support Contact us TrueField DSS faceLAB

Overview | What is faceAPI | FAQ | Specs | License Enquiries

The Ultimate Real-Time Face Tracking Toolkit for Developers and OEM's

Specification

 

HeadTrackerV1

HeadTrackerV2

Notes

Tracking State

 

 

Tracking a face at framerate

Min Face Size (pixels)

50

 

Max Face Occlusion (%)

50

 

Head Rotation X (deg)

-20<X<45

-30<X<60

Horizontal axis (ear to ear)

Head Rotation Y (deg)

-30<Y<30

-90<Y<90

Vertical axis (up through head)

Head Rotation Z (deg)

-90<Z<90

Camera axis (nose)

Positional Error (cm)

<1

Even illumination, no occlusion

Rotational Error (deg)

<3

Even illumination, no occlusion

CPU Load (30hz USB webcam) (Total% / Process%)

20/10

35/25

Intel Core-2 Duo, 2.4GHz, 4MB Cache, Logitech Quickcam Pro 5000

CPU Load (60hz firewire)
(Total% / Process%)

9/3

25/20

Intel Core-2 Duo, 2.4GHz, 4MB Cache, PointGrey Flea

Initializing State

 

 

Finding a new face

Min Face Size (pixels)

50

Distance between outer eye corners

Head Rotation X (deg)

<15

Horizontal axis (ear to ear)

Head Rotation Y (deg)

<15

Vertical axis (up through head)

Head Rotation Z (deg)

<30

Camera axis (nose)

Time to Acquire (typical) (secs)

0.3 - 3.0

Depends on tracking range settings

CPU Load (Active) (%)

50

Intel Core-2 Duo, 2.4GHz, 4MB Cache

CPU Load (%)

5

Intel Core-2 Duo, 2.4GHz, 4MB Cache

Idle Timeout (secs)

5

 

Searching State

 

 

Quick recovery from tracking failure

Recovery Conditions

Face front, no occlusion

Any pose, no occlusion

 

Recovery Time

1 frame

 

CPU Load (%)

30

Intel Core-2 Duo, 2.4GHz, 4MB Cache

 

Sample faceAPI Code

{
// STARTUP

smAPIInit();
// Register windows driver model (WDM) cameras
smCameraRegisterCategory(SM_API_CAMERA_CATEGORY_WDM);
// Create a new Head-Tracker engine
smEngine engine;
smEngineCreate(SM_API_ENGINE_LATEST_HEAD_TRACKER,&engine);
// Register a callback function to receive the tracking data
smHTRegisterHeadPoseCallback(engine,0,(smHTHeadPoseCallback)receiveHeadPose);
// Create and show a video-display window
smVideoDisplay video_display;
smVideoDisplayCreate(engine,&video_display,0,TRUE);
// Start tracking
smEngineStart(engine);

...

// SHUTDOWN

// Destroy engine
smEngineDestroy(&engine);
// Destroy video display
smVideoDisplayDestroy(&video_display);
smAPIQuit();

}

// Callback routine - called by head-tracker internal thread.
void receiveHeadPose(void *,smHTHeadPose head_pose)
{
// Position of head is in struct head_pose.head_pos as a 3D x,y,z coordinate in meters
// measured releative to the camera, where Z is the camera axis.

// Rotation of head is in struct head_pose.head_rot as a 3D x,y,z euler angle rotation in radians
// measured releative to the camera, where Z is the camera axis.

// Position of left and right eyeball centers also available as 3D position coordinates.
// as head_pose.left_eye_pos and head_pose.right_eye_pos

}

 

Realtime 3D Visualization

faceAPI function list

  • smAPIEnterModalLoop
  • smAPIExitModalLoop
  • smAPIInit
  • smAPIProcessEvents
  • smAPIQuit
  • smAPIVersion
  • smCameraClearCategories
  • smCameraCreate
  • smCameraCreateInfoList
  • smCameraDestroy
  • smCameraDestroyInfoList
  • smCameraLensParamsFromHFOV
  • smCameraLoadLensParamsFile
  • smCameraRegisterCategory
  • smCameraSetLensParams
  • smCameraShowControlPanel
  • smEngineCreate
  • smEngineCreateWithCamera
  • smEngineDestroy
  • smEngineGetState
  • smEngineGetType
  • smEngineGetUDPLoggingEnabled
  • smEngineGetUDPOutputAddress
  • smEngineIsLicensed
  • smEngineSetUDPLoggingEnabled
  • smEngineSetUDPOutputAddress
  • smEngineShowCameraControlPanel
  • smEngineStart
  • smEngineStop
  • smHTRegisterHeadPoseCallback
  • smHTV1GetAutoBrightness
  • smHTV1GetAutoRestartMode
  • smHTV1GetHeadPoseFilterLevel
  • smHTV1GetHeadPosePredictionPeriod
  • smHTV1GetHeadPoseZFilterLevel
  • smHTV1GetRestartThreshold
  • smHTV1GetRestartTimeout
  • smHTV1GetSearchThreshold
  • smHTV1GetTrackingRanges
  • smHTV1SetAutoBrightness
  • smHTV1SetAutoRestartMode
  • smHTV1SetHeadPoseFilterLevel
  • smHTV1SetHeadPosePredictionPeriod
  • smHTV1SetHeadPoseZFilterLevel
  • smHTV1SetRestartThreshold
  • smHTV1SetRestartTimeout
  • smHTV1SetSearchThreshold
  • smHTV1SetTrackingRanges
  • smHTV2GetAutoBrightness
  • smHTV2GetAutoRestartMode
  • smHTV2GetHeadPosePredictionPeriod
  • smHTV2GetRestartThreshold
  • smHTV2GetRestartTimeout
  • smHTV2GetTrackingRanges
  • smHTV2SetAutoBrightness
  • smHTV2SetAutoRestartMode
  • smHTV2SetHeadPosePredictionPeriod
  • smHTV2SetRestartThreshold
  • smHTV2SetRestartTimeout
  • smHTV2SetTrackingRanges
  • smLoggingGetFileOutputEnable
  • smLoggingGetPath
  • smLoggingRegisterCallback
  • smLoggingSetFileOutputEnable
  • smLoggingSetPath
  • smStringClear
  • smStringCopy
  • smStringCreate
  • smStringDestroy
  • smStringGetBufferW
  • smStringIsEmpty
  • smStringIsEqual
  • smStringIsValid
  • smStringLength
  • smStringReadBuffer
  • smStringReadBufferW
  • smStringWriteBuffer
  • smStringWriteBufferW
  • smVideoDisplayCreate
  • smVideoDisplayDestroy
  • smVideoDisplayGetFlags
  • smVideoDisplayGetWindowHandle
  • smVideoDisplaySetFlags