diff --git a/data_process_class_dll/parameters.h b/data_process_class_dll/parameters.h index f0eabb3..1dd035c 100644 --- a/data_process_class_dll/parameters.h +++ b/data_process_class_dll/parameters.h @@ -57,7 +57,8 @@ #define TRACK_QUALITY_SNR_WEIGHT 0.3 #define TRACK_QUALITY_LEN_WEIGHT 0.2 #define TRACK_QUALITY_ITER_COEFF 0.8 -#define TRACK_QUALITY_DECREASE_COEFF 0.005 +#define TRACK_QUALITY_DECREASE_COEFF_O2 -0.0008 +#define TRACK_QUALITY_DECREASE_COEFF_O1 -0.0025 //航迹起批质量条件 #define TRACK_START_QUALITY_L3 0.7 @@ -67,17 +68,8 @@ #define TRACK_START_QUALITY_L7 0.3 //航迹消批质量条件 -#define TRACK_DIE_QUALITY_E4 0.3 -#define TRACK_DIE_QUALITY_E5 0.4 -#define TRACK_DIE_QUALITY_E6 0.5 -#define TRACK_DIE_QUALITY_E7 0.6 -#define TRACK_DIE_QUALITY_E8 0.7 - -#define TRACK_DIE_QUALITY_PRAMARY_E6 0.3 -#define TRACK_DIE_QUALITY_PRAMARY_E7 0.4 -#define TRACK_DIE_QUALITY_PRAMARY_E8 0.5 -#define TRACK_DIE_QUALITY_PRAMARY_E9 0.6 -#define TRACK_DIE_QUALITY_PRAMARY_E10 0.7 +#define TRACK_DIE_QUALITY 0.3 +#define TRACK_DIE_QUALITY_PRAMARY 0.3 #ifdef MECHANICAL_SCANNING /******************************机扫数据处理参数**************************************/ diff --git a/data_process_class_dll/track_asso.cpp b/data_process_class_dll/track_asso.cpp index 587cb14..9f83f48 100644 --- a/data_process_class_dll/track_asso.cpp +++ b/data_process_class_dll/track_asso.cpp @@ -793,21 +793,24 @@ void Track_Asso:: model_filter(std::vector *trust_track,struct Ra (*trust_track)[i].circle_id++; (*trust_track)[i].T_track = static_cast((*trust_track)[i].T_track+delta_T*1000.0); //更新航迹时间 (*trust_track)[i].GNSS_time = static_cast((*trust_track)[i].GNSS_time+delta_T*1000.0); //更新航迹时间 - (*trust_track)[i].Unupdated_time += static_cast(delta_T*1000.0); (*trust_track)[i].Extrapolate_round =(*trust_track)[i].Extrapolate_round+1; //连续未用实点更新时间 (*trust_track)[i].point_flag=0; //虚点 (*trust_track)[i].Track_Update_Flag = 1; //航迹更新标志 }else{ (*trust_track)[i].Extrapolate_round =(*trust_track)[i].Extrapolate_round+1; //连续未用实点更新时间 - (*trust_track)[i].Unupdated_time += static_cast(delta_T*1000.0); (*trust_track)[i].point_flag=0; //虚点 (*trust_track)[i].Track_Update_Flag = 0; //航迹更新标志 } //航迹质量递减 - (*trust_track)[i].Quality -= (*trust_track)[i].Unupdated_time / 1000.0 * TRACK_QUALITY_DECREASE_COEFF; + double t = (*trust_track)[i].Unupdated_time / 1000.0; + (*trust_track)[i].Quality -= t * t * TRACK_QUALITY_DECREASE_COEFF_O2 + t * TRACK_QUALITY_DECREASE_COEFF_O1; + (*trust_track)[i].Unupdated_time += static_cast(delta_T*1000.0); + t = (*trust_track)[i].Unupdated_time / 1000.0; + (*trust_track)[i].Quality += t * t * TRACK_QUALITY_DECREASE_COEFF_O2 + t * TRACK_QUALITY_DECREASE_COEFF_O1; (*trust_track)[i].Quality = (*trust_track)[i].Quality < 0.0 ? 0.0 : (*trust_track)[i].Quality; (*trust_track)[i].Point_sum = (*trust_track)[i].Point_sum + 1; + } } } diff --git a/data_process_class_dll/track_die.cpp b/data_process_class_dll/track_die.cpp index 5e893fe..26e33c1 100644 --- a/data_process_class_dll/track_die.cpp +++ b/data_process_class_dll/track_die.cpp @@ -23,7 +23,7 @@ void Track_Die::track_die_process( std::vector *trust_track, } //非重点航迹自动消亡 - if((*Iter).Track_Mode == 0 && (*Iter).primary_target_flag == 0 && (*Iter).Extrapolate_round > TRACK_DIE_ROUND) + if((*Iter).Track_Mode == 0 && (*Iter).primary_target_flag == 0 && (*Iter).Quality < TRACK_DIE_QUALITY) { die_flag = true; }