Head pose estimation#
The head pose estimation determines a person's head rotation angles in 3D space, specifically along the pitch, yaw, and roll axes:
- Pitch (X-axis): This angle measures the vertical tilt of the head. It limits the head rotation along the X-axis.
- Yaw (Y-axis): This angle measures the horizontal rotation of the head. It limits the head rotation along the Y-axis.
- Roll (Z-axis): This angle measures the lateral tilt of the head. It limits the head rotation along the Z-axis.
Acceptable angle ranges#
For optimal results, the acceptable ranges for these angles are as follows:
- Pitch: 0 to 45 degrees
- Yaw: 0 to 45 degrees
- Roll: 0 to 45 degrees
All pitch, yaw, and roll values must fall within the minimal and maximal valid head position values specified by your system configuration.
Default vales#
By default, all rotation angles (pitch, yaw, and roll) are set to 25 degrees.
Recommended values#
We recommend that you specify the following values for the rotation angles:
Angle | LUNA ID for Android | LUNA ID for iOS |
---|---|---|
Pitch | public const val DEFAULT_HEAD_PITCH: Float = 15F |
LCLunaConfiguration → bestShotConfiguration → estimationThreshold → headPitch = 15; |
Yaw | public const val DEFAULT_HEAD_YAW: Float = 15F |
LCLunaConfiguration → bestShotConfiguration → estimationThreshold → headYaw = 15; |
Roll | public const val DEFAULT_HEAD_ROLL: Float = 15F |
LCLunaConfiguration → bestShotConfiguration → estimationThreshold → headRoll = 15; |
Implementation#
Angle | LUNA ID for Android | LUNA ID for iOS |
---|---|---|
Pitch | public val headPitch: Float = DEFAULT_HEAD_PITCH |
@property (nonatomic) CGFloat headPitch; |
Yaw | public val headYaw: Float = DEFAULT_HEAD_YAW |
@property (nonatomic) CGFloat headYaw; |
Roll | public val headRoll: Float = DEFAULT_HEAD_ROLL |
@property (nonatomic) CGFloat headRoll; |