(轉載請注明出處)
使用SDK: Kinect for Windows SDK v2.0 public preview1408
根據前一節的說明,這節就是關于面部特征對齊的。
接口為IFaceAlignment,因為SDK還在Beta中,提供官網的連接可能會失效,所以不提供了。
需要可以到微軟官方查詢。目前,面部特征對齊主要可以干:
0. 獲取面部外框 ―― 面部幀也能。但是經測試,精度高得多,抖動大概在幾像素內
1. 獲取頭部旋轉中心 ――結果是一個相機空間坐標,大致位置就是頸部中心
2. 獲取頭部旋轉四元數 ―― 面部幀也能。但是這個精度高,抖動小,抖動范圍大致在3°以內。
3. 獲取動畫單元 ―― 目前有高達17種動畫單元(高達:誰叫我....)
等等....
動畫聲明如下:
(FACS)AU: Action Unit,動作單元 參考前一節
(FACS)AD: Action Descriptor, 動作描述符,和AU差不多。
FaceShapeAnimations_JawOpen:
(微軟目前還沒有進行說明)就是將下巴張開,下巴張開不一定是張開嘴巴。
FACS編碼應該是指AU26(Jaw Drop)
浮點模擬量范圍 [0, 1], 都快掉下巴了,才到1,個人建議閾值0.8
FaceShapeAnimations_LipPucker:
撅嘴,FACS編碼: AU18
浮點模擬量范圍 [0, 1], 本人最大值0.8X.......
FaceShapeAnimations_JawSlideRight:
下巴往右滑動, FACS編碼: R-AD30
浮點模擬量范圍
[-1, 1],
負數表示往左(L-AD30),本人最大值0.2X......
FaceShapeAnimations_LipStretcherRight:
嘴角向右拉伸, FACS編碼: R-AU20
浮點模擬量范圍
[0, 1]
FaceShapeAnimations_LipStretcherLeft:
嘴角向左拉伸, FACS編碼: L-AU20
浮點模擬量范圍
[0, 1]
FaceShapeAnimations_LipCornerPullerLeft:
拉動嘴角傾斜向左上,
FACS編碼: L-AU12
浮點模擬量范圍 [0, 1]
FaceShapeAnimations_LipCornerPullerRight:
拉動嘴角傾斜向右上,
FACS編碼: R-AU12
浮點模擬量范圍 [0, 1]
FaceShapeAnimations_LipCornerDepressorLeft:
拉動嘴角向左下傾斜, FACS編碼: L-AU15
浮點模擬量范圍 [0, 1]
FaceShapeAnimations_LipCornerDepressorRight:
拉動嘴角向右下傾斜, FACS編碼: R-AU15
浮點模擬量范圍 [0, 1]
FaceShapeAnimations_LeftcheekPuff:
鼓起左臉頰, FACS編碼: L-AD34
浮點模擬量范圍 [0, 1]
FaceShapeAnimations_RightcheekPuff:
鼓起右臉頰, FACS編碼: R-AD34
浮點模擬量范圍 [0, 1]
FaceShapeAnimations_LefteyeClosed:
閉左眼, FACS編碼: L-AU43
浮點模擬量范圍 [0, 1]
FaceShapeAnimations_RighteyeClosed:
閉右眼, FACS編碼: R-AU43
浮點模擬量范圍 [0, 1]
(戴著眼鏡或者眼睛比較小、離得遠的可能就直接識別為閉著眼睛了)
FaceShapeAnimations_RighteyebrowLowerer:
右皺眉, FACS編碼: R-AU4
浮點模擬量范圍 [-1, 1], 負數表示右眉上挑(R-AU1+2)
FaceShapeAnimations_LefteyebrowLowerer:
左皺眉, FACS編碼: L-AU4
浮點模擬量范圍 [-1, 1], 負數表示左眉上挑(L-AU1+2)
FaceShapeAnimations_LowerlipDepressorLeft:
拉動下唇向左下, FACS編碼: L-AU16
浮點模擬量范圍 [0, 1]
FaceShapeAnimations_LowerlipDepressorRight:
拉動下唇向右下, FACS編碼: R-AU16
浮點模擬量范圍 [0, 1]
共計17個單元。使用IFaceAlignment::GetAnimationUnits獲取
大致步驟: (參考面部幀)
不同于面部幀的:
創建高清面部幀源: CreateHighDefinitionFaceFrameSource
創建面部特征對齊: CreateFaceAlignment
使用高清面部幀源,輪詢還是事件隨意啦,注意跟蹤id丟失或者無效。
獲取到正確的高清面部幀后,使用
IHighDefinitionFaceFrame::GetAndRefreshFaceAlignmentResult
刷新面部特征對齊對象,之后就可以獲取前面所說的4個基本東西了。
這個東西可能會消耗比普通面部幀更大的計算機資源,所以我們這次就對一個人跟蹤即可。
效果如下:
(自然也需要"NuiDatabase"文件夾,但是創建高清面部幀的耗時遠遠小于普通面部幀(感覺不到 vs 5秒鐘))
下載地址: CSDN抽了? 上傳了看不到,可以的話,請到筆者的資源列表里面看看,不行再向筆者索要吧