|
|
|
@ -1007,10 +1007,10 @@ FLOAT32 SA_Tracker::Similarity_Move(PIPE* pPipe, TARGET_OBJECT* ptTarget, FLOAT3
|
|
|
|
SIZE16S padSize = { 0 };
|
|
|
|
SIZE16S padSize = { 0 };
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
padSize.w = MAX(ABS(fSpeedLong.vx * 3) + pPipe->objHistoryList[pPipe->ubEnd].snSize.w, 8);
|
|
|
|
padSize.w = MAX(ABS(fSpeedLong.vx * 3) + pPipe->objHistoryList[pPipe->ubEnd].snSize.w, 20);
|
|
|
|
padSize.h = MAX(ABS(fSpeedLong.vy * 3) + pPipe->objHistoryList[pPipe->ubEnd].snSize.h, 8);
|
|
|
|
padSize.h = MAX(ABS(fSpeedLong.vy * 3) + pPipe->objHistoryList[pPipe->ubEnd].snSize.h, 20);
|
|
|
|
|
|
|
|
|
|
|
|
SINT32 nPipeRadiusTrack = 10 + MAX(pPipe->ObjectFilter.sfSize.w, pPipe->ObjectFilter.sfSize.h);
|
|
|
|
SINT32 nPipeRadiusTrack = 50 + MAX(pPipe->ObjectFilter.sfSize.w, pPipe->ObjectFilter.sfSize.h);
|
|
|
|
|
|
|
|
|
|
|
|
if (pPipe->bLost)
|
|
|
|
if (pPipe->bLost)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -1234,7 +1234,6 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 计算表观相似度
|
|
|
|
// 计算表观相似度
|
|
|
|
FLOAT32 fAppSim = Similarity_Apparent(pPipe, ptTarget);
|
|
|
|
FLOAT32 fAppSim = Similarity_Apparent(pPipe, ptTarget);
|
|
|
|
|
|
|
|
|
|
|
|
@ -1243,7 +1242,6 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
|
|
|
|
|
|
|
|
|
|
|
|
fSim = fAppSim * fApparentModelWeight + fMoveSim * fMoveModelWeight;
|
|
|
|
fSim = fAppSim * fApparentModelWeight + fMoveSim * fMoveModelWeight;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ptTarget->fMatchConf = fSim;
|
|
|
|
ptTarget->fMatchConf = fSim;
|
|
|
|
|
|
|
|
|
|
|
|
SINT32 nDSmpScale = pDAT_Module->GetDatParm()->nDSmpScale;
|
|
|
|
SINT32 nDSmpScale = pDAT_Module->GetDatParm()->nDSmpScale;
|
|
|
|
@ -1297,6 +1295,11 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 焦距关联阈值(按照0.01度器件精度)
|
|
|
|
|
|
|
|
SINT32 nFThreMin = 0.01 / fAglReso * 2;
|
|
|
|
|
|
|
|
SINT32 nMoveMin = 0.01 / fAglReso * 4;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 阈值调整
|
|
|
|
// 阈值调整
|
|
|
|
if (pPipe->unLostCnt < 20)
|
|
|
|
if (pPipe->unLostCnt < 20)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -1304,10 +1307,10 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
|
|
|
|
fSScaleChangeHighThres = 3.f;
|
|
|
|
fSScaleChangeHighThres = 3.f;
|
|
|
|
fAScaleChangeLowThres = 0.5;
|
|
|
|
fAScaleChangeLowThres = 0.5;
|
|
|
|
fAScaleChangeHighThres = 2.0;
|
|
|
|
fAScaleChangeHighThres = 2.0;
|
|
|
|
nLastDiffThresX = 6;
|
|
|
|
nLastDiffThresX = MAX(nMoveMin,12);
|
|
|
|
nLastDiffThresY = 6;
|
|
|
|
nLastDiffThresY = MAX(nMoveMin, 12);
|
|
|
|
nPredictDiffThresX = 8;
|
|
|
|
nPredictDiffThresX = MAX(nFThreMin, 12);
|
|
|
|
nPredictDiffThresY = 8;
|
|
|
|
nPredictDiffThresY = MAX(nFThreMin, 12);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (pPipe->unLostCnt < 50)
|
|
|
|
else if (pPipe->unLostCnt < 50)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -1315,10 +1318,10 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
|
|
|
|
fSScaleChangeHighThres = 5.f;
|
|
|
|
fSScaleChangeHighThres = 5.f;
|
|
|
|
fAScaleChangeLowThres = 0.33;
|
|
|
|
fAScaleChangeLowThres = 0.33;
|
|
|
|
fAScaleChangeHighThres = 3.0;
|
|
|
|
fAScaleChangeHighThres = 3.0;
|
|
|
|
nLastDiffThresX = 10;
|
|
|
|
nLastDiffThresX = MAX(nMoveMin, 24);
|
|
|
|
nLastDiffThresY = 10;
|
|
|
|
nLastDiffThresY = MAX(nMoveMin, 24);
|
|
|
|
nPredictDiffThresX = 12;
|
|
|
|
nPredictDiffThresX = MAX(nFThreMin, 36);
|
|
|
|
nPredictDiffThresY = 12;
|
|
|
|
nPredictDiffThresY = MAX(nFThreMin, 36);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (pPipe->unLostCnt < 100)
|
|
|
|
else if (pPipe->unLostCnt < 100)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -1326,10 +1329,10 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
|
|
|
|
fSScaleChangeHighThres = 8.f;
|
|
|
|
fSScaleChangeHighThres = 8.f;
|
|
|
|
fAScaleChangeLowThres = 0.33;
|
|
|
|
fAScaleChangeLowThres = 0.33;
|
|
|
|
fAScaleChangeHighThres = 3.0;
|
|
|
|
fAScaleChangeHighThres = 3.0;
|
|
|
|
nLastDiffThresX = 15;
|
|
|
|
nLastDiffThresX = MAX(nMoveMin, 36);
|
|
|
|
nLastDiffThresY = 15;
|
|
|
|
nLastDiffThresY = MAX(nMoveMin, 36);
|
|
|
|
nPredictDiffThresX = 18;
|
|
|
|
nPredictDiffThresX = MAX(nFThreMin, 48);
|
|
|
|
nPredictDiffThresY = 18;
|
|
|
|
nPredictDiffThresY = MAX(nFThreMin, 48);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -1337,10 +1340,10 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
|
|
|
|
fSScaleChangeHighThres = 12.f;
|
|
|
|
fSScaleChangeHighThres = 12.f;
|
|
|
|
fAScaleChangeLowThres = 0.25;
|
|
|
|
fAScaleChangeLowThres = 0.25;
|
|
|
|
fAScaleChangeHighThres = 4.0;
|
|
|
|
fAScaleChangeHighThres = 4.0;
|
|
|
|
nLastDiffThresX = 15;
|
|
|
|
nLastDiffThresX = MAX(nMoveMin, 48);
|
|
|
|
nLastDiffThresY = 15;
|
|
|
|
nLastDiffThresY = MAX(nMoveMin, 48);
|
|
|
|
nPredictDiffThresX = 18;
|
|
|
|
nPredictDiffThresX = MAX(nFThreMin, 60);
|
|
|
|
nPredictDiffThresY = 18;
|
|
|
|
nPredictDiffThresY = MAX(nFThreMin, 60);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SINT32 nEnd = pPipe->ubEnd;
|
|
|
|
SINT32 nEnd = pPipe->ubEnd;
|
|
|
|
@ -1466,10 +1469,11 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
|
|
|
|
fMoveThres = 0.8 * 1.f - ContiLostThres;
|
|
|
|
fMoveThres = 0.8 * 1.f - ContiLostThres;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//若最大相似度不满足阈值,则认为未查找到管道目标,返回-1
|
|
|
|
//若最大相似度不满足阈值,则认为未查找到管道目标,返回-1
|
|
|
|
if (fSimMax < fThres ||(SmallTarget == m_SizeMode && fMoveSim_Target < fMoveThres))
|
|
|
|
if (fSimMax < fThres /*||(SmallTarget == m_SizeMode && fMoveSim_Target < fMoveThres)*/)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
nSimTargetId = -1;
|
|
|
|
nSimTargetId = -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (-1 != nSimTargetId)
|
|
|
|
if (-1 != nSimTargetId)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//记录管道目标跟踪相似度
|
|
|
|
//记录管道目标跟踪相似度
|
|
|
|
|