|
|
|
|
@ -1190,7 +1190,7 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
|
|
|
|
|
//局部变量
|
|
|
|
|
FLOAT32 fSim = 0.0f; //目标相似度
|
|
|
|
|
FLOAT32 fSimMax = -1.0f;//目标相似度最大值
|
|
|
|
|
FLOAT32 fSimThres = 0.5f; //相似度阈值
|
|
|
|
|
FLOAT32 fSimThres = 0.3f; //相似度阈值
|
|
|
|
|
SINT32 nFrmsStep = 1; //帧间隔
|
|
|
|
|
TARGET_OBJECT* ptMainTarget = NULL; //主管道目标
|
|
|
|
|
TARGET_OBJECT* ptTarget = NULL; //候选目标
|
|
|
|
|
@ -1223,12 +1223,12 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 小目标主要使用位置信息
|
|
|
|
|
// 小目标主要使用位置信息 //s3315运动不稳定,不优先使用运动模型
|
|
|
|
|
if (SizeType::SmallTarget == m_SizeMode)
|
|
|
|
|
{
|
|
|
|
|
fMoveModelWeight = 0.7f;
|
|
|
|
|
fApparentModelWeight = 0.3f;
|
|
|
|
|
fMoveThres = 0.7f;
|
|
|
|
|
fMoveModelWeight = 0.5f;
|
|
|
|
|
fApparentModelWeight = 0.5f;
|
|
|
|
|
fMoveThres = 0.5f;
|
|
|
|
|
}
|
|
|
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
|
//若长短轨迹预测异常,则直接取距离搜索区域中心最近的目标
|
|
|
|
|
@ -1333,10 +1333,10 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
|
|
|
|
|
fSScaleChangeHighThres = 3.f;
|
|
|
|
|
fAScaleChangeLowThres = 0.5;
|
|
|
|
|
fAScaleChangeHighThres = 2.0;
|
|
|
|
|
nLastDiffThresX = MAX(nMoveMin, 6);
|
|
|
|
|
nLastDiffThresY = MAX(nMoveMin, 6);
|
|
|
|
|
nPredictDiffThresX = MAX(nFThreMin, 6);
|
|
|
|
|
nPredictDiffThresY = MAX(nFThreMin, 6);
|
|
|
|
|
nLastDiffThresX = MAX(nMoveMin, 12);
|
|
|
|
|
nLastDiffThresY = MAX(nMoveMin, 12);
|
|
|
|
|
nPredictDiffThresX = MAX(nFThreMin, 12);
|
|
|
|
|
nPredictDiffThresY = MAX(nFThreMin, 12);
|
|
|
|
|
}
|
|
|
|
|
else if (pPipe->unLostCnt < 20)
|
|
|
|
|
{
|
|
|
|
|
@ -1391,11 +1391,19 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
|
|
|
|
|
fSScaleChangeHighThres = 3.f;
|
|
|
|
|
fAScaleChangeLowThres = 0.5;
|
|
|
|
|
fAScaleChangeHighThres = 2.0;
|
|
|
|
|
nLastDiffThresX = MAX(nMoveMin, 4);
|
|
|
|
|
nLastDiffThresY = MAX(nMoveMin, 4);
|
|
|
|
|
nPredictDiffThresX = MAX(nFThreMin, 6);
|
|
|
|
|
nPredictDiffThresY = MAX(nFThreMin, 6);
|
|
|
|
|
nLastDiffThresX = MAX(nMoveMin, 12);
|
|
|
|
|
nLastDiffThresY = MAX(nMoveMin, 12);
|
|
|
|
|
nPredictDiffThresX = MAX(nFThreMin, 12);
|
|
|
|
|
nPredictDiffThresY = MAX(nFThreMin, 12);
|
|
|
|
|
}
|
|
|
|
|
//// 针对S3315大目标近距离伺服晃动,阈值强制放大
|
|
|
|
|
//else if(pPipe->ObjectFilter.sfSize.w >= 6 || pPipe->ObjectFilter.sfSize.h >= 6 || pPipe->ObjectFilter.fPxlsCnt > 9)
|
|
|
|
|
//{
|
|
|
|
|
// nLastDiffThresX = MAX(nLastDiffThresX, 36);
|
|
|
|
|
// nLastDiffThresY = MAX(nLastDiffThresY, 36);
|
|
|
|
|
// nPredictDiffThresX = MAX(nPredictDiffThresX, 36);
|
|
|
|
|
// nPredictDiffThresY = MAX(nPredictDiffThresY, 36);
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SINT32 nEnd = pPipe->ubEnd;
|
|
|
|
|
@ -1428,6 +1436,8 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 目标运动距离强逻辑:用预测位置和上一帧的位置,防止跟踪跳转到错误的目标
|
|
|
|
|
if (nSimTargetId != -1)
|
|
|
|
|
{
|
|
|
|
|
@ -1465,6 +1475,19 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
|
|
|
|
|
fSimMax = -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//// 灰度类型不同,任何情况都不允许跳跃
|
|
|
|
|
//if (ptTarget->fSNR * ptMainTarget->fSNR < 0)
|
|
|
|
|
//{
|
|
|
|
|
// if ((ABS(ptTarget->pfCenPos.x - stMotionMod_mean.crnObjPrediRtLong.cx) > MAX(ABS(fAzSpeed) * 2, 6)
|
|
|
|
|
// || ABS(ptTarget->pfCenPos.y - stMotionMod_mean.crnObjPrediRtLong.cy) > MAX(ABS(fPtSpeed) * 2, 6))
|
|
|
|
|
// && (ABS(ptTarget->pfCenPos.x - m_ObjStatus.ptPos.x) > MAX(ABS(fAzSpeed) * 2, 6)
|
|
|
|
|
// || ABS(ptTarget->pfCenPos.y - m_ObjStatus.ptPos.y) > MAX(ABS(fPtSpeed) * 2, 6)))
|
|
|
|
|
// {
|
|
|
|
|
// fSimMax = -1;
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
////+++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
|
@ -1507,10 +1530,10 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// 警戒周边干扰时,调整阈值
|
|
|
|
|
if (pPipe->blookout)
|
|
|
|
|
if (pPipe->blookout && pPipe->stMotionMod_mean.bTrackStable)
|
|
|
|
|
{
|
|
|
|
|
fThres = 0.8 * ContiLostThres;
|
|
|
|
|
fMoveThres = 0.8 * 1.f - ContiLostThres;
|
|
|
|
|
fThres = fSimThres * ContiLostThres;
|
|
|
|
|
fMoveThres = fMoveThres * 1.f - ContiLostThres;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|