传出目标信息,提高捕获阶段成功率

main
wangchongwu 4 months ago
parent 8309131e41
commit b34cb5c246

@ -182,7 +182,7 @@ bool SA_Tracker::Init(UINT16* pSrc, SINT32 nWidth, SINT32 nHeight, PIPE* pTracki
void SA_Tracker::GetTrackState(GLB_INPUT* p_GLB_Input)
{
UINT32 unTotalCnt = m_LockingPipe->unTotalCnt;
if (unTotalCnt < p_GLB_Input->unFreq * 3)
if (unTotalCnt < p_GLB_Input->unFreq * 2)
{
m_LockingPipe->ubEventStatus = PIPE_EVENT_JUST_LOCK; // 锁定后3s范围内处于初始锁定状态
}
@ -1382,7 +1382,6 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
}
SINT32 nEnd = pPipe->ubEnd;
// 尺寸变化强逻辑防跳变// by wcw04046 @ 2020/06/22
if (nSimTargetId != -1 && m_ObjStatus.unContiLostCnt < 200)
@ -1506,6 +1505,14 @@ SINT32 SA_Tracker::FindMatchTarget(PIPE* pPipe, TARGET_OBJECT* ptTargetArray, SI
fThres = 0.8 * ContiLostThres;
fMoveThres = 0.8 * 1.f - ContiLostThres;
}
// 单一目标初始锁定,不做阈值限制
if (bSingleTarget && PIPE_EVENT_JUST_LOCK == m_LockingPipe->ubEventStatus)
{
fThres = 0;
}
//若最大相似度不满足阈值,则认为未查找到管道目标,返回-1
if (fSimMax < fThres /*||(SmallTarget == m_SizeMode && fMoveSim_Target < fMoveThres)*/)
{
@ -2116,6 +2123,7 @@ void SA_Tracker::UpdateObject2Tracker(TARGET_OBJECT* pTarget, GLB_INPUT* p_GLB_I
pObjStatus->fObjStd = pTarget->fObjStd; // 目标方差
pObjStatus->fBGStd = pTarget->fBGStd; // 目标背景方差
pObjStatus->fSNR = pTarget->fSNR; // 信噪比
pObjStatus->fBGMean = pTarget->fBGMean;
// 滤波值
pObjStatus->ptPosFilter.x = pObjStatus->ptPosFilter.x * 0.4 + pObjStatus->ptPos.x * 0.6;//位置在图像系滤波
pObjStatus->ptPosFilter.y = pObjStatus->ptPosFilter.y * 0.4 + pObjStatus->ptPos.y * 0.6;//位置在图像系滤波

@ -379,6 +379,8 @@ bool Tracker::UpdateTracker2Pipe(GLB_INPUT* p_GLB_Input,GLB_SCEN_MODE type, PIPE
Target.pxObjGray = ObjStatus.pxObjGray;
Target.fSNR = ObjStatus.fSNR;
Target.emClsSrc = ObjStatus.emClsSrc;
Target.fBGMean = ObjStatus.fBGMean;
Target.fBGStd = ObjStatus.fBGStd;
//// 如果对空小面目标跟踪器已经检出目标,且是融合决策目标,直接加入管道
//if (type == GLB_SCEN_MODE::GLB_SCEN_SKY && pSkyTracker->mTargetFusion.bObject)

@ -364,6 +364,7 @@ typedef struct tagObjectStatus
FLOAT32 fSNR; // 目标信噪比
FLOAT32 fObjStd; // 目标方差 4
FLOAT32 fBGStd; // 目标背景方差
FLOAT32 fBGMean; // 目标背景均值
UINT16 fGrayFilter; // 灰度滤波值
POINT32F ptCentroid; // 质心定位置

@ -466,10 +466,22 @@ void ARIDLL_OutputPipeTarget(Arith_EOController* pArith, ARIDLL_OUTPUT* pstOutpu
pipeBox.w = pTarget->snSize.w;
pipeBox.h = pTarget->snSize.h;
if(SIoUB_Expand(pipeBox,trackBox, 10) > 0.1 && !pPipe->bTrackingPipe)
//if(SIoUB_Expand(pipeBox,trackBox, 10) > 0.1 && !pPipe->bTrackingPipe)
//{
// continue;
//}
//
if (!pPipe->bTrackingPipe &&
(pstOutput->nStatus == GLB_STATUS_TRACK || pstOutput->nStatus == GLB_STATUS_MOTRACK))
{
continue;
if (ABS(pipeBox.x - trackBox.x) < 256 && ABS(pipeBox.y - trackBox.y) < 256)
{
continue;
}
}
// 告警目标输出
ARIDLL_OBJINFO* pt_detObj = &pstOutput->stAlarmObjs[pstOutput->nAlarmObjCnts];
@ -493,6 +505,12 @@ void ARIDLL_OutputPipeTarget(Arith_EOController* pArith, ARIDLL_OUTPUT* pstOutpu
obj.nOutputID = pPipe->nAlarmBatchID_1;
obj.unClsType = pPipe->unClsType;
obj.fSNR = pTarget->fSNR;
obj.nObjGray = pTarget->pxObjGray;
obj.fBkgGray = pTarget->fBGMean;
obj.fBkgStd = pTarget->fBGStd;
// 若有外部引导批号,则上报该批号
if (pPipe->nGuideBatchID > 0)
@ -674,11 +692,11 @@ void ARIDLL_OutputPipeTarget(Arith_EOController* pArith, ARIDLL_OUTPUT* pstOutpu
}
// 跟踪状态不送显示
if (pstOutput->nTrackObjCnts > 0)
{
memset(pstOutput->stAlarmObjs, 0, ST_OBJ_NUM * sizeof(ARIDLL_OBJINFO));
pstOutput->nAlarmObjCnts = 0;
}
//if (pstOutput->nTrackObjCnts > 0)
//{
// memset(pstOutput->stAlarmObjs, 0, ST_OBJ_NUM * sizeof(ARIDLL_OBJINFO));
// pstOutput->nAlarmObjCnts = 0;
//}
LOG_DEBUG_OUTPUT("stAlarmObjs[0]nX:{},nY:{}; stTrackers[0]nX:{},nY:{}", pstOutput->stAlarmObjs[0].nX, pstOutput->stAlarmObjs[0].nY, pstOutput->stTrackers[0].nX, pstOutput->stTrackers[0].nY);

@ -76,6 +76,7 @@ typedef struct tagARIDLL_OBJINFO
float fBgEntropy; //目标背景信息熵
float fSaliency; //目标显著性值
//
bool nJammingSucess; //目标成功干扰
@ -89,7 +90,9 @@ typedef struct tagARIDLL_OBJINFO
FLOAT32 fConf;//跟踪置信度
ObjSrc ArithSrc;//跟踪算法来源,决策后
unsigned char byte[20];//预留
float fBkgGray; //目标背景灰度值
float fBkgStd; //目标背景灰度标准差
unsigned char byte[12];//预留
}ARIDLL_OBJINFO;

Loading…
Cancel
Save