You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

656 lines
30 KiB

1 month ago
#pragma once
/*********版权所有(C)2024, 武汉高德红外股份有限公司***************
* ArithStandardDll.h
* SDK
*
* (Arith DLL)"ARIDLL"
* V2.0
* 04046wcw
* 2023-11-01
****************************************************************/
#ifndef __NEO_ARTTHSTANDARDDLL_H__
#define __NEO_ARTTHSTANDARDDLL_H__
#include "PlatformDefine.h"
#include "Arith_CommonDef.h"
#ifdef _WIN32
#define STD_TRACKER_API extern "C" __declspec(dllexport)
#else
#define STD_TRACKER_API __attribute__ ((visibility("default")))
#endif
#ifdef __cplusplus
extern "C" {
#endif
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//单个目标的结构体[兼容输入/输出,检测/跟踪]
typedef struct tagARIDLL_OBJINFO
{
//*****1.目标状态信息*****
int nFrameId; //目标当前信息所对应的帧编号
unsigned char unObjStatus; //目标搜索状态信息,更新/新增/删除
unsigned char bMainTracked; //目标是否为主跟踪目标
TrackingStatus unTrackingStatus;//目标跟踪状态
//*****2.目标管道信息*****
int nOutputID; //输出告警目标
int nInPipesID; //目标在管道数组中的编号
int nPipeLostCnt; //目标当前管道连续丢失计数
int nTotalCnt; //目标当前管道总帧数
unsigned char bInCurrFov; //目标是否在当前视场
int nAntiJamming; //抗干扰状态
//*****3.目标核心信息*****
float nX; //目标中心点图像坐标x
float nY; //目标中心点图像坐标y
float nObjW; //目标宽度
float nObjH; //目标高度
float fAz; //目标当前方位角
float fPt; //目标当前俯仰角
// 目标预测位置
float fPredAz;
float fPredPt;
//*****4.其他属性信息*****
int nObjGray; //目标灰度
int nObjMaxGray; //目标极值灰度
int nMaxPosX; //目标极大值点X
int nMaxPosY; //目标极大值点Y
int nPixCnts; //目标像素个数
unsigned char ubSizeType; //目标尺寸类型:
float fProb; //目标识别置信度
float fSNR; //目标信噪比值
float fTgEntropy; //目标信息熵值
float fBgEntropy; //目标背景信息熵
float fSaliency; //目标显著性值
//
bool nJammingSucess; //目标成功干扰
int unClsType; //目标类别
float fReIDSim; //当前目标与主目标的ReID相似度
// 如果处于跟踪状态,则输出下列值
RECT32S SA_SrBox; //小面目标跟踪波门
SizeType SA_SizeType; //尺度信息
RECT32S KCF_SrBox; //KCF波门
RECT32S TLD_SrBox; //TLD波门
FLOAT32 fConf; //跟踪置信度
ObjSrc ArithSrc; //跟踪算法来源,决策后
unsigned char byte[20]; //预留
}ARIDLL_OBJINFO;
//输入【系统参数】结构体
typedef struct tagARIDLL_INPUTPARA
{
int nTimeStamp; //当前帧采集时刻时间戳,单位毫秒
int unFrmId; //当前帧图像帧编号
short unFreq; //输入图像帧频
ServoInfo stServoInfo; //传感器伺服信息
CamInfo stCameraInfo; //相机信息
AirCraftInfo stAirCraftInfo; //载体信息
GuideInfo stGuideInfo; //外部引导信息
AIT_OUTPUT stAITrackerInfo; //AI跟踪器结果
int nServoDelatCnt; //伺服角度延迟帧数
// 其他输入
bool bImageRataSys; //像旋系统标记S731实物样机1数字样机未模拟像旋 -0
int nElevationDiff; //机载设备挂飞高程差
}ARIDLL_INPUTPARA;
//调试信息
typedef struct tagARIDLL_DEBUG_OUTPUT
{
unsigned short nDetectObjsNum;
// 管道资源
unsigned short nMaxPipeNum; //当前系统管道资源数量
unsigned short nUsePipeNum; //当前非空管道数量
float Arith_time; //算法运行耗时
unsigned int unFrmID; //算法执行的帧编号
//ARM发指令信息
unsigned char nSysMode; //外部系统状态
unsigned char nScenMode; //场景模式
unsigned char nStatus; //待命/检测/跟踪/丢失状态信息等
unsigned char nPixelType; //图像数据类型
unsigned short nWidth; //图像宽
unsigned short nHeight; //图像高
unsigned char nLockType; //1-拉框吸附 2-点选吸附 3-ID锁定 4-修正攻击点 5-解锁
unsigned char nLockID; //锁定id号
unsigned short nLockX; //锁定波门或者修改攻击点
unsigned short nLockY;
unsigned short nLockW;
unsigned short nLockH;
unsigned short nPredictX; //轨迹预测点
unsigned short nPredictY;
unsigned short nForceMemFrm; //强制记忆帧数
unsigned char unFreq; //帧频
float fServoAz; //伺服方位角
float fServoPt; //伺服俯仰角
float nFocus; //焦距
float fPixelSize; //像元尺寸
unsigned char unVideoType; //视频类型
//算法参数(公用)
unsigned short nX; //决策输出中心点X
unsigned short nY; //决策输出中心点Y
unsigned short nW; //决策输出宽度
unsigned short nH; //决策输出高度
unsigned short nRecapX; //重捕区域中心X
unsigned short nRecapY; //重捕区域中心Y
unsigned short nRecapW; //重捕区域宽度
unsigned short nRecapH; //重捕区域高度
//对地跟踪信息调试
//对地参数
unsigned char nDecisionStatus; //决策状态
unsigned char nKcfStatus; //kcf状态
unsigned char bAIDStatus; //AI识别状态
float fKCFRes; //KCF响应
float fLargeResTH; //KCF重捕阈值
float fArrKCFRes;
unsigned char nOccKCFStatus;
unsigned char nArrestKCFStatus;
short nAIDBestId;
short nAIDLostCnt;
short unContiTrackedCnt;
short nAIDJamCnt;
unsigned char nOccAIDStatus;
unsigned char nArrestAIDStatus;
unsigned short nTLDNum; //TLD聚类检测个数
unsigned short nLearnCnt; //TLD学习计数
float fMaxNNConf; //TLD检测最大响应
//对空参数
unsigned char sky_bComplexEnv; // 复杂背景标志位
unsigned char sky_bInterferenceMem; // 干扰近记忆标志位
unsigned char sky_bResetByAIDet; // 跟踪被AI重置标记
unsigned char sky_nClassSource; // 目标类别输出来源
unsigned char sky_nDecisionStatus; // 决策状态,输出来源
unsigned char sky_TrkDownRatio; // 对空跟踪降采样倍数
unsigned short sky_TrkMemFrm; // 跟踪目标进记忆帧数
unsigned short sky_nTrkCX; // 决策目标信息中心点X
unsigned short sky_nTrkCY; // 决策目标信息中心点Y
unsigned short sky_nTrkW; // 决策目标信息宽度
unsigned short sky_nTrkH; // 决策目标信息高度
unsigned short sky_nTrkPxlsCnt; // 跟踪目标像素数
unsigned short sky_fTrkConf; // 跟踪目标置信度
unsigned char sky_bGuideInFov; // 导引目标是否在视场
unsigned short sky_nGuideCX; // 导引区域中心X
unsigned short sky_nGuideCY; // 导引区域中心Y
unsigned short sky_nGuideW; // 导引区域宽度
unsigned short sky_nGuideH; // 导引区域高度
unsigned char resv[48]; //预留
}ARIDLL_DEBUG_OUTPUT;
//跟踪目标输出结构体
typedef struct tagARIDLL_OUTPUT
{
int nTimeStamp;//当前帧时间戳(透传),单位:毫秒
// 系统工作模式(透传)// by wcw04046 @ 2021/12/06
GLB_SYS_MODE nSysMode;
int nFrmNum;//处理帧计数
// 场景模式
GLB_SCEN_MODE nScenMode;
//*****工作状态*****
GLB_STATUS nStatus; //待命/检测/跟踪/丢失状态信息等
//*****目标检测*****(短时航迹点,用于用户指示)
int nAlarmObjCnts; //当前帧告警目标总个数
ARIDLL_OBJINFO stAlarmObjs[ST_OBJ_NUM]; //检测目标信息数组
//*****目标跟踪*****(长时航迹点第0个为主目标送伺服跟踪)
int nTrackObjCnts; //跟踪目标个数
ARIDLL_OBJINFO stTrackers[LT_OBJ_NUM]; //跟踪器输出数组
// AI跟踪器协同控制指令输出,用于控制端侧NPU程序
AIT_Command stAI_TkCmd;
//搜索区域(对空场景为导引区域)
RECT32S rsRecaptureRion;
//指示轨迹预测模块是否相信当前跟踪点
BBOOL bPredictJam;
//调试信息
ARIDLL_DEBUG_OUTPUT stDebugInfo;
}ARIDLL_OUTPUT;
/*************************************
* : STD_CreatEOArithHandle()
* :
* : 2025/6/24
* :
* : STD_TRACKER_API ArithHandle
* :
* :
*************************************/
STD_TRACKER_API ArithHandle STD_CreatEOArithHandle();
/*************************************
* : STD_CreatEOArithNamedHandle()
* :
* : 2025/8/8
* : const char * configPath:json
* :
* : STD_TRACKER_API ArithHandle:
* :
* :
*************************************/
STD_TRACKER_API ArithHandle STD_CreatEOArithNamedHandle(const char* configPath);
/*************************************
* : STD_DeleteEOArithHandle()
* :
* : 2025/6/24
* : ArithHandle hArith
* :
* : STD_TRACKER_API void
* :
* :
*************************************/
STD_TRACKER_API void STD_DeleteEOArithHandle(ArithHandle hArith);
/*************************************
* : ARIDLL_EOArithInit()
* :
* : 2025/6/24
* : ArithHandle hArith
* : int nWidth
* : int nHeight
* : GD_PIXEL_FORMAT_E nPixelType:
* :
* : STD_TRACKER_API void
* :
* : GLB_PT_TYPE nPixelType 使
*************************************/
STD_TRACKER_API void ARIDLL_EOArithInit(ArithHandle hArith, int nWidth, int nHeight, GD_PIXEL_FORMAT_E nPixelType);
/*************************************
* : ARIDLL_EOArithInitWithMode()
* : 2 -
* : 2025/6/24
* : ArithHandle hArith
* : int nWidth
* : int nHeight
* : GD_PIXEL_FORMAT_E nPixelType:
* : GLB_SYS_MODE nSysMode:
* : GLB_SCEN_MODE nScenMode
* :
* : STD_TRACKER_API void
* :
* : GLB_PT_TYPE nPixelType 使
*************************************/
STD_TRACKER_API void ARIDLL_EOArithInitWithMode(ArithHandle hArith, int nWidth, int nHeight, GD_PIXEL_FORMAT_E nPixelType,
GLB_SYS_MODE nSysMode, GLB_SCEN_MODE nScenMode);
/*************************************
* : ARIDLL_CreateAITracker()
* : AI
* : 2025/6/24
* : ArithHandle hArith
* : int nWidth
* : int nHeight
* : const char * configPath:AI
* :
* : STD_TRACKER_API bool
* :
* : AINeoTrackerAI使AI
*************************************/
STD_TRACKER_API bool ARIDLL_CreateAITracker(ArithHandle hArith, int nWidth, int nHeight, const char* configPath);
/*************************************
* : ARIDLL_RunController()
* :
* : 2025/6/24
* : ArithHandle hArithSrc
* : GD_VIDEO_FRAME_S img
* : ARIDLL_INPUTPARA stInputPara
* : ARIDLL_OUTPUT * pstOutput
* :
* : STD_TRACKER_API int
* :
* :
*************************************/
STD_TRACKER_API int ARIDLL_RunController(ArithHandle hArithSrc, GD_VIDEO_FRAME_S img, ARIDLL_INPUTPARA stInputPara, ARIDLL_OUTPUT* pstOutput);
/*************************************
* : ARIDLL_SearchFrameTargets()
* :
* : 2025/6/24
* : ArithHandle hArithSrc
* : GD_VIDEO_FRAME_S img
* :
* : STD_TRACKER_API int
* :
* :
*************************************/
STD_TRACKER_API int ARIDLL_SearchFrameTargets(ArithHandle hArithSrc, GD_VIDEO_FRAME_S img);
/*************************************
* : ARIDLL_MergeAITargets()
* : AI
* : 2025/6/24
* : ArithHandle hArithSrc
* : AI_Target * aiDetectArrayAI
* : int aiNumAI
* :
* : STD_TRACKER_API int
* :
* :
*************************************/
STD_TRACKER_API int ARIDLL_MergeAITargets(ArithHandle hArithSrc, AI_Target* aiDetectArray,int aiNum);
/*************************************
* : ARIDLL_SendReIDToTargets()
* : reID
* : 2025/6/25
* : ArithHandle hArithSrc
* : ReIDFeature * pReidFeatures ReID
* : int ReIDNums ReID
* :
* : STD_TRACKER_API int
* :
* :
*************************************/
//STD_TRACKER_API int ARIDLL_SendReIDToTargets(ArithHandle hArithSrc, ReIDFeature* pReidFeatures, int ReIDNums);
/*************************************
* : ARIDLL_LockCommand()
* : ,XY
* +
* +
* : 2025/6/24
* : ArithHandle hArithSrc:
* : int nLockX:X
* : int nLockY:Y
* : int nLockW:,
* : int nLockH:,
* :
* : STD_TRACKER_API void
* :
* : 0
*************************************/
STD_TRACKER_API void ARIDLL_LockCommand(ArithHandle hArithSrc, int nLockX, int nLockY, int nLockW, int nLockH);
/*************************************
* : ARIDLL_LockCommand_DefaultSize()
* :
* : 2025/6/24
* : ArithHandle hArithSrc:
* : int nLockX:X
* : int nLockY:Y
* : int nLockW:,
* : int nLockH:,
* :
* : STD_TRACKER_API void
* :
* :
*************************************/
STD_TRACKER_API void ARIDLL_LockCommand_DefaultSize(ArithHandle hArithSrc, int nLockX, int nLockY, int nLockW, int nLockH);
/*************************************
* : ARIDLL_LockTargetByID()
* :
* : 2025/6/24
* : ArithHandle hArithSrc:
* : int nBatchID:
* :
* : STD_TRACKER_API void
* :
* :
*************************************/
STD_TRACKER_API void ARIDLL_LockTargetByID(ArithHandle hArithSrc, int nBatchID);
/*************************************
* : ARIDLL_GuideLockMultiCommand()
* : -
* : 2025/6/24
* : ArithHandle hArithSrc
* : TargetGuide * guideList
* SINT32 ID; //目标批号,传递给锁定后目标(必填0为无效值外部指定跟踪目标输出批号)
UBYTE8 bIsCoLocate; //协同定位标记,直接透传到目标(非必须默认0)
Pole stTargetPole; //目标极坐标(伺服系目标方位、俯仰、目标测距)
PointBLH stTargetPos; //目标GPS坐标(大地系纬经高)
FLOAT32 fGuideAzSpeed; //实际锁定点方位角速度(非必须默认0)
FLOAT32 fGuidePtSpeed; //实际锁定点俯仰角速度(非必须默认0)
SINT32 nGuideFocus; //引导时的焦距值(必填)
SINT32 nMaxFocus; //最大焦距值(必填)
SINT32 nLockX; //锁定点当前图像坐标X(图像系X)
SINT32 nLockY; //锁定点当前图像坐标Y(图像系Y)
BBOOL bInFOV; //在视场判断(图像系目标在视场判断)
stTargetPolestTargetPosnLockX(nLockY,bInFOV),stTargetPole
* : int num:
* : int nGuideAge:50HZ1s50
* :
* : STD_TRACKER_API void
* :
* :
*************************************/
STD_TRACKER_API void ARIDLL_GuideLockMultiCommand(ArithHandle hArithSrc, TargetGuide* guideList, int num, int nGuideAge);
/*************************************
* : ARIDLL_unLockCommand()
* :
* : 2025/6/24
* : ArithHandle hArithSrc
* :
* : STD_TRACKER_API void
* :
* :
*************************************/
STD_TRACKER_API void ARIDLL_unLockCommand(ArithHandle hArithSrc);
/*************************************
* : ARIDLL_AdjustTrackRect()
* :
* : 2025/6/24
* : ArithHandle hArithSrc
* : int dx:X
* : int dy:Y
* : int dw
* : int dh
* :
* : STD_TRACKER_API void
* :
* :
*************************************/
STD_TRACKER_API void ARIDLL_AdjustTrackRect(ArithHandle hArithSrc,int dx,int dy,int dw,int dh);
/*************************************
* : ARIDLL_ReadSetParamFile()
* :
* : 2025/6/24
* : ArithHandle hArithSrc
* : const char * configFilePath
* :
* : STD_TRACKER_API bool
* :
* :
*************************************/
STD_TRACKER_API bool ARIDLL_ReadSetParamFile(ArithHandle hArithSrc, const char* configFilePath);
/*************************************
* : ARIDLL_ReadSetParamStream()
* : buffer
* : 2025/6/24
* : ArithHandle hArithSrc:
* : const char * configsstream:
* :
* : STD_TRACKER_API bool :
* :
* :
*************************************/
STD_TRACKER_API bool ARIDLL_ReadSetParamStream(ArithHandle hArithSrc,const char* configsstream);
/*************************************
* : ARIDLL_SetSysMode()
* :
* : 2025/6/24
* : ArithHandle hArithSrc:
* : GLB_SYS_MODE nSysMode:
* :
* : STD_TRACKER_API void
* :
* :
*************************************/
STD_TRACKER_API void ARIDLL_SetSysMode(ArithHandle hArithSrc, GLB_SYS_MODE nSysMode);
/*************************************
* : ARIDLL_SetScenMode()
* : ,
* : 2025/6/24
* : ArithHandle hArithSrc:
* : GLB_SCEN_MODE nScenMode:
* :
* : STD_TRACKER_API void
* :
* :
*************************************/
STD_TRACKER_API void ARIDLL_SetScenMode(ArithHandle hArithSrc, GLB_SCEN_MODE nScenMode);
/*************************************
* : ARIDLL_SetForceMemTrack()
* :
* : 2025/6/24
* : ArithHandle hArithSrc:
* : int nMemCnt:,退
* :
* : STD_TRACKER_API void
* :
* :
*************************************/
STD_TRACKER_API void ARIDLL_SetForceMemTrack(ArithHandle hArithSrc, int nMemCnt);
/*************************************
* : ARIDLL_SetSkyLineCaliPoints()
* : 线360
* : 2025/6/24
* : ArithHandle hArithSrc:
* : ANGLE32F * SkyLinePoints:线
* : int N:线360
* :
* : STD_TRACKER_API void
* :
* :
*************************************/
STD_TRACKER_API void ARIDLL_SetSkyLineCaliPoints(ArithHandle hArithSrc, ANGLE32F* SkyLinePoints, int N);
/*************************************
* : ARIDLL_ExportParamFile()
* :
* : 2025/6/24
* : ArithHandle hArithSrc:
* : const char * configFilePath:
* :
* : STD_TRACKER_API void
* :
* :
*************************************/
STD_TRACKER_API void ARIDLL_ExportParamFile(ArithHandle hArithSrc, const char* configFilePath);
/*************************************
* : ARIDLL_ExportOSDJson()
* : jsonOSD
* : 2025/6/24
* : ArithHandle hArithSrc:
* : char * Buffer:OSD
* : int bufferSize:OSD
* :
* : STD_TRACKER_API int0
* :
* :
*************************************/
STD_TRACKER_API int ARIDLL_ExportOSDJson(ArithHandle hArithSrc, char* Buffer, int bufferSize);
/*************************************
* : ARIDLL_SetSOTRect()
* :
* : 2025/6/24
* : ArithHandle hArithSrc
* : int objX:X
* : int objY:Y
* : int objW:
* : int objH:
* :
* : STD_TRACKER_API void
* :
* :
*************************************/
STD_TRACKER_API void ARIDLL_SetSOTRect(ArithHandle hArithSrc, int objX, int objY, int objW, int objH);
/*************************************
* : ARIDLL_SetPredictInfo()
* :
* : 2025/7/7
* : ArithHandle hArithSrc:
* : int X1:x
* : int Y1:y
* : int X2:8sx
* : int Y2:8sy
* :
* : STD_TRACKER_API void
* :
* :
*************************************/
STD_TRACKER_API void ARIDLL_SetPredictInfo(ArithHandle hArithSrc, int X1, int Y1, int X2, int Y2);
#ifdef __cplusplus
}
#endif
#endif