映像から顔向き角度を算出する方法
現在、私はDlibとOpenCV用いて顔向き角度を算出しています。
映像からDlibを用いて顔を検出し、顔の特徴点と3Dモデル座標を対応させるopenCVのsolvePnPで算出しているのですが正確な顔向き角度を算出することができません。
具体的には右方向や左方向の正負(数値が不適当)は合っているのですが、10、20度のような細かい角度が算出できません。
細かい角度を算出するためには3Dモデルにあたるobject_ptsを正確に設定しなければならないでしょうか?(いい値があるなら教えていただけたら幸いです)
もしくは、他の方法で映像から精度の高い顔向きを算出する方法あるのでしょうか?
該当のソースコード(一部抜粋)
Python
1K = [1.153752569389803966e+03,0.000000000000000000e+00,5.962752942372259213e+02, 2 0.000000000000000000e+00,1.211255746170439807e+03,2.448367548714677469e+02, 3 0.000000000000000000e+00,0.000000000000000000e+00,1.000000000000000000e+00] 4D = [1.174542892072836936e-01, 2.963230480639748032e-01, -6.327104166740647739e-02, -1.601237498454269326e-02, -7.110347802929409822e-01] 5 6cam_matrix = np.array(K).reshape(3, 3).astype(np.float32) 7dist_coeffs = np.array(D).reshape(5, 1).astype(np.float32) 8 9object_pts = np.float32([[0.0, 0.0, 0.0], 10 [0.0, -330.0, -65.0], 11 [-225.0, 170.0, -135.0], 12 [225.0, 170.0, -135.0], 13 [-150.0, -150.0, -125.0], 14 [150.0, -150.0, -125.0], 15 ])/4.5 16 17image_pts = np.float32([shape[30], shape[8], shape[36], shape[45], shape[48], shape[54]]) 18 19_, rotation_vec, translation_vec = cv2.solvePnP(object_pts, image_pts, cam_matrix, dist_coeffs)
補足情報
カメラのキャリブレーションは下記のサイトを参考にしました。
カメラキャリブレーション(参考サイト)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/28 02:27
2018/09/28 03:09
2018/10/03 13:55