From 853bba27ca2a45f1273b921b78fd37b2713bd1c3 Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Mon, 10 Mar 2014 15:13:24 -0700 Subject: [PATCH] Applied Ryan's tweaks to Visage mapping and config file. --- .gitignore | 5 +- interface/resources/visage/tracker.cfg | 334 +++++++++++++++++++++++++ interface/src/devices/Visage.cpp | 20 +- 3 files changed, 345 insertions(+), 14 deletions(-) create mode 100644 interface/resources/visage/tracker.cfg diff --git a/.gitignore b/.gitignore index d66359205d..eb2f3ec303 100644 --- a/.gitignore +++ b/.gitignore @@ -39,7 +39,8 @@ interface/external/sixense/* # Ignore Visage interface/external/visage/* !interface/external/visage/readme.txt -interface/resources/visage/ +interface/resources/visage/* +!interface/resources/visage/tracker.cfg # Ignore interfaceCache for Linux users -interface/interfaceCache/ \ No newline at end of file +interface/interfaceCache/ diff --git a/interface/resources/visage/tracker.cfg b/interface/resources/visage/tracker.cfg new file mode 100644 index 0000000000..b5ed3302fa --- /dev/null +++ b/interface/resources/visage/tracker.cfg @@ -0,0 +1,334 @@ +display_width 800 + +max_init_image_width 800 +max_work_image_width 384 +fast_image_resize 1 + +camera_input 0 +camera_device 0 +camera_width 800 +camera_height 600 +camera_frame_rate 30 +camera_mirror 1 +camera_settings_dialog 0 +camera_auto_settings 0 + +video_file_sync 1 + +automatic_initialisation 1 +init_yaw_threshold 0.005 +init_roll_threshold 10 +init_velocity_threshold 0.015 +init_timeout 1000 +init_timeout_enable 6 +init_display_status 1 +recovery_timeout 800 + +display_video 1 +display_model_texture 0 +display_tri_mask 0 +display_model_wireframe 0 +display_results 1 +display_track_points 0 + +detect_strip_area_threshold 1000 +detect_strip_angle_threshold 0.15 +detect_strip_ratio_threshold 0.2 +detect_strip_perfect_ratio 6.848 +detect_strip_roi_y_offset 0 +detect_strip_roi_width 2 +detect_strip_roi_height 4 + +smoothing_factors + 150 15 -2 100 -1 50 50 0 +#translation rotation action_units eyebrows mouth gaze eye_closure other + +process_eyes 1 +leye_closing_au 12 +reye_closing_au 12 +eye_h_rotation_au 15 +eye_v_rotation_au 16 +eye_points_coords +162 1.0 0.0 0.0 +157 0.0 0.0 1.0 + +bdts_points_use + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +#3.5 3.6 3.7 3.8 3.11 3.12 8.1 8.2 8.3 8.4 9.1 9.2 9.3 4.1 4.2 4.3 4.4 4.5 4.6 2.1 + +bdts_points_angle + 0 0 20 -20 20 -20 0 0 20 -20 20 -20 0 25 -25 20 -20 20 -20 0 0 + +model_filename candide3-exp.wfm +fdp_filename candide3.fdp +bdts_data_path bdtsdata + +au_use + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +#AU1 AU2 AU3 AU4 AU5 AU6 AU7 AU8 AU9 AU10 AU11 AU12 AU13 AU14 AU15 AU16 AU17 AU18 AU19 AU20 AU21 AU22 AU23 + +au_names +au_nose_wrinkler +au_jaw_z_push +au_jaw_x_push +au_jaw_drop +au_lower_lip_drop +au_upper_lip_raiser +au_lip_stretcher_left +au_lip_corner_depressor +au_lip_presser +au_left_outer_brow_raiser +au_left_inner_brow_raiser +au_left_brow_lowerer +au_leye_closed +au_lid_tightener +au_upper_lid_raiser +au_rotate_eyes_left +au_rotate_eyes_down +au_lower_lip_x_push +au_lip_stretcher_right +au_right_outer_brow_raiser +au_right_inner_brow_raiser +au_right_brow_lowerer +au_reye_closed + + +ekf_sensitivity + 100 100 100 100 100 100 100 100 100 100 100 200 200 100 100 400 400 100 100 100 100 300 300 100 100 400 400 100 100 +#x y z rx ry rz AU1 AU2 AU3 AU4 AU5 AU6 AU7 AU8 AU9 AU10 AU11 AU12 AU13 AU14 AU15 AU16 AU17 AU18 AU19 AU20 AU21 AU22 AU23 + +au_gravity + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +#AU1 AU2 AU3 AU4 AU5 AU6 AU7 AU8 AU9 AU10 AU11 AU12 AU13 AU14 AU15 AU16 AU17 AU18 AU19 AU20 AU21 AU22 AU23 + +gravity_threshold 0.0 + +camera_focus 3 + +tex_size 512 + +ROI_num 14 + +#ROI 0 - nose region (setting default values) +feature_points_num[0] 7 +feature_points_tri_use_num[0] 21 +feature_points_tri_use_list[0] +48 154 54 55 152 45 46 47 103 109 +108 107 106 101 104 110 111 105 99 102 +100 +bound_rect_modifiers[0] -10 -10 -20 10 +feature_points_min_distance[0] 0.78125 +feature_point_block_size[0] 0.46875 +search_range[0] 4.0625 4.0625 +refine_range[0] 0.3125 0.3125 +patch_size[0] 4.6875 +match_method[0] 5 +bad_match_threshold[0] 0.35 +sensitivity_falloff[0] 10 +init_angle[0] 0 +feature_points_coords[0] +97 0.18 0.54 0.28 +90 0.18 0.28 0.54 +51 0.76 0.09 0.15 +97 0.36 0.10 0.54 +90 0.36 0.54 0.10 +69 0.55 0.10 0.35 +67 0.55 0.35 0.10 + +#ROI 1 - left eyebrow region +feature_points_num[1] 4 +feature_points_tri_use_num[1] 2 +feature_points_tri_use_list[1] +25 26 +bound_rect_modifiers[1] 2 2 40 2 +feature_points_coords[1] +25 0.0 0.0 1.0 +26 0.15 0.1 0.75 +25 1.0 0.0 0.0 +26 0.2 0.4 0.4 + +#ROI 2 - right eyebrow region +feature_points_num[2] 4 +feature_points_tri_use_num[2] 2 +feature_points_tri_use_list[2] +33 34 +bound_rect_modifiers[2] 2 2 40 2 +feature_points_coords[2] +33 0.15 0.75 0.1 +34 1.0 0.0 0.0 +33 0.0 0.0 1.0 +33 0.2 0.4 0.4 + +#ROI 3 - left outer eye corner region +feature_points_num[3] 3 +feature_points_tri_use_num[3] 4 +feature_points_tri_use_list[3] +112 23 39 115 +bound_rect_modifiers[3] -5 -5 -25 -25 +feature_points_coords[3] +23 0 0.2 0.8 +119 0.8351877 0.08414026 0.08067206 +116 0.3218788 0.4626164 0.2155048 + +#ROI 4 - right outer eye corner region +feature_points_num[4] 3 +feature_points_tri_use_num[4] 4 +feature_points_tri_use_list[4] +142 36 42 145 +bound_rect_modifiers[4] -5 -5 -25 -25 +feature_points_coords[4] +36 0 0.8 0.2 +151 0.8566859 0.0405132 0.1028009 +146 0.2871178 0.3467231 0.366159 + +#ROI 5 - left inner eye corner region +feature_points_num[5] 3 +feature_points_tri_use_num[5] 5 +feature_points_tri_use_list[5] +122 28 99 100 125 +bound_rect_modifiers[5] -5 -5 -25 -40 +feature_points_coords[5] +99 0.2 0.1 0.7 +122 0.2664618 0.3707059 0.3628323 +125 0.387767 0.4655813 0.1466517 + +#ROI 6 - right inner eye corner region +feature_points_num[6] 3 +feature_points_tri_use_num[6] 5 +feature_points_tri_use_list[6] +132 31 102 104 135 +bound_rect_modifiers[6] -5 -5 -25 -40 +feature_points_coords[6] +102 0.2 0.7 0.1 +132 0.3673472 0.2426805 0.3899724 +135 0.2833096 0.1345753 0.5821151 + +#ROI 7 - lower lip region +feature_points_num[7] 6 +feature_points_tri_use_num[7] 6 +feature_points_tri_use_list[7] +79 80 82 84 52 53 +bound_rect_modifiers[7] 0 0 0 -80 +refine_range[7] 0.5 1 +patch_size[7] 7 +feature_points_coords[7] +80 0.0 0.0 1.0 +80 1.0 0.0 0.0 +80 0.0 1.0 0.0 +79 0.0 0.0 1.0 +82 0.1 0.3 0.6 +84 0.1 0.6 0.3 + +#ROI 8 - upper lip region +feature_points_num[8] 6 +feature_points_tri_use_num[8] 10 +feature_points_tri_use_list[8] +69 49 155 51 50 153 44 67 57 60 +bound_rect_modifiers[8] 0 0 -70 0 +refine_range[8] 0.5 1 +patch_size[8] 7 +feature_points_coords[8] +67 0.1 0.45 0.45 +69 0.1 0.45 0.45 +57 0.0 0.0 1.0 +60 0.0 1.0 0.0 +51 0.0 1.0 0.0 +51 0.3 0.7 0.0 + +#ROI 9 - left lip corner region +feature_points_num[9] 4 +feature_points_tri_use_num[9] 4 +feature_points_tri_use_list[9] +87 89 81 68 +bound_rect_modifiers[9] 0 0 -35 -35 +refine_range[9] 1 1 +patch_size[9] 7 +feature_points_coords[9] +87 0.0 0.0 1.0 +87 0.2 0.0 0.8 +66 0.33 0.33 0.34 +72 0.33 0.33 0.34 + +#ROI 10 - right lip corner region +feature_points_num[10] 4 +feature_points_tri_use_num[10] 4 +feature_points_tri_use_list[10] +94 96 83 70 +bound_rect_modifiers[10] 0 0 -35 -35 +refine_range[10] 1 1 +patch_size[10] 7 +feature_points_coords[10] +94 0.0 1.0 0.0 +94 0.2 0.8 0.0 +64 0.33 0.33 0.34 +78 0.33 0.33 0.34 + +#ROI 11 - jaw region +feature_points_num[11] 4 +feature_points_tri_use_num[11] 2 +feature_points_tri_use_list[11] +52 53 +bound_rect_modifiers[11] 0 0 -30 0 +refine_range[11] 0.5 1 +patch_size[11] 7 +bad_match_threshold[11] 0.6 +feature_points_coords[11] +52 0.4 0.3 0.3 +53 0.4 0.3 0.3 +87 0.0 0.5 0.5 +94 0.0 0.5 0.5 + +feature_points_num[12] 6 +feature_points_tri_use_num[12] 3 +feature_points_tri_use_list[12] +188 189 190 191 +bound_rect_modifiers[12] -30 0 0 -30 +init_angle[12] -20 + +feature_points_num[13] 6 +feature_points_tri_use_num[13] 3 +feature_points_tri_use_list[13] +192 193 194 195 +bound_rect_modifiers[13] 0 -30 0 -30 +init_angle[13] 20 + +recovery_frames 4 +global_bad_match_threshold 0.5 +visibility_check 1 + +rotation_limit +-1.570796 1.570796 + 1.570796 4.712389 +-3.2 3.2 + +translation_limit +-4 4 +-3 3 + 0 11 + +action_unit_limit +-0.5 0.5 +-0.5 0.5 +-1.0 1.0 +-0.05 1.2 +-0.05 1.5 +-0.05 1.5 +-1.0 1.0 +-1.5 1.5 +-1.5 1.5 +-1.5 2 +-1.5 2 +-1 1.5 +-2.8 2.8 +-1.5 1.5 +-1.5 1.5 +-100 100 +-100 100 +-1.5 1.5 +-1.5 1.5 +-1.5 1.5 +-1.5 1.5 +-1.5 1.5 +-2.8 2.8 + + diff --git a/interface/src/devices/Visage.cpp b/interface/src/devices/Visage.cpp index 348858bf3b..aed286e04b 100644 --- a/interface/src/devices/Visage.cpp +++ b/interface/src/devices/Visage.cpp @@ -38,7 +38,7 @@ Visage::Visage() : #ifdef HAVE_VISAGE QByteArray licensePath = Application::resourcesPath() + "visage/license.vlc"; initializeLicenseManager(licensePath.data()); - _tracker = new VisageTracker2(Application::resourcesPath() + "visage/Facial Features Tracker - Asymmetric.cfg"); + _tracker = new VisageTracker2(Application::resourcesPath() + "visage/tracker.cfg"); if (_tracker->trackFromCam()) { _data = new FaceData(); @@ -65,29 +65,25 @@ static int rightEyeBlinkIndex = 1; static QMultiHash > createActionUnitNameMap() { QMultiHash > blendshapeMap; - blendshapeMap.insert("Sneer", QPair("au_nose_wrinkler", 1.0f)); blendshapeMap.insert("JawFwd", QPair("au_jaw_z_push", 1.0f)); blendshapeMap.insert("JawLeft", QPair("au_jaw_x_push", 1.0f)); blendshapeMap.insert("JawOpen", QPair("au_jaw_drop", 1.0f)); blendshapeMap.insert("LipsLowerDown", QPair("au_lower_lip_drop", 1.0f)); - blendshapeMap.insert("LipsUpperUp", QPair("au_upper_lip_raiser", 1.0f)); - blendshapeMap.insert("LipsStretch_R", QPair("au_lip_stretcher_left", 1.0f)); + blendshapeMap.insert("LipsUpperOpen", QPair("au_upper_lip_raiser", 1.0f)); + blendshapeMap.insert("LipsStretch_R", QPair("au_lip_stretcher_left", 0.5f)); blendshapeMap.insert("MouthSmile_L", QPair("au_lip_corner_depressor", -1.0f)); blendshapeMap.insert("MouthSmile_R", QPair("au_lip_corner_depressor", -1.0f)); - blendshapeMap.insert("LipsPucker", QPair("au_lip_presser", 0.0f)); blendshapeMap.insert("BrowsU_R", QPair("au_left_outer_brow_raiser", 1.0f)); - blendshapeMap.insert("BrowsU_C", QPair("au_left_inner_brow_raiser", 0.5f)); + blendshapeMap.insert("BrowsU_C", QPair("au_left_inner_brow_raiser", 1.0f)); blendshapeMap.insert("BrowsD_R", QPair("au_left_brow_lowerer", 1.0f)); blendshapeMap.insert("EyeBlink_L", QPair("au_leye_closed", 1.0f)); - blendshapeMap.insert("EyeBlink_R", QPair("au_leye_closed", 1.0f)); - blendshapeMap.insert("EyeSquint_L", QPair("au_lid_tightener", 1.0f)); - blendshapeMap.insert("EyeSquint_R", QPair("au_lid_tightener", 1.0f)); + blendshapeMap.insert("EyeBlink_R", QPair("au_reye_closed", 1.0f)); blendshapeMap.insert("EyeOpen_L", QPair("au_upper_lid_raiser", 1.0f)); blendshapeMap.insert("EyeOpen_R", QPair("au_upper_lid_raiser", 1.0f)); - blendshapeMap.insert("MouthLeft", QPair("au_lower_lip_x_push", 0.0f)); - blendshapeMap.insert("LipsStretch_L", QPair("au_lip_stretcher_right", 1.0f)); + blendshapeMap.insert("LipLowerOpen", QPair("au_lower_lip_x_push", 1.0f)); + blendshapeMap.insert("LipsStretch_L", QPair("au_lip_stretcher_right", 0.5f)); blendshapeMap.insert("BrowsU_L", QPair("au_right_outer_brow_raiser", 1.0f)); - blendshapeMap.insert("BrowsU_C", QPair("au_right_inner_brow_raiser", 0.5f)); + blendshapeMap.insert("BrowsU_C", QPair("au_right_inner_brow_raiser", 1.0f)); blendshapeMap.insert("BrowsD_L", QPair("au_right_brow_lowerer", 1.0f)); QMultiHash > actionUnitNameMap;