#pragma once /*********版权所有(C)2024, 武汉高德红外股份有限公司*************** * 文件名称:ArithStandardDll.h * 文件标识:高德光电搜索跟踪算法SDK * 内容摘要: * 其它说明:算法动态链接库(Arith DLL)的函数、全局变量、宏定义,统一前缀为简写"ARIDLL" * 当前版本:V2.0 * 创建作者:04046wcw * 创建日期:2023-11-01 ****************************************************************/ #ifndef __STD_ARTTHSTANDARDDLL_H__ #define __STD_ARTTHSTANDARDDLL_H__ #include "Arith_CommonDef.h" //#include "Arith_MOT_PipeProc.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 void* ArithHandle; // 算法句柄 #ifndef _ARIDLL_OBJINFO_ #define _ARIDLL_OBJINFO_ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //单个目标的结构体[兼容输入/输出,检测/跟踪] 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 nClassID; //目标类型 // 如果处于跟踪状态,则输出下列值 RECT32S SA_SrBox;//小面目标跟踪波门 SizeType SA_SizeType;//尺度信息 RECT32S KCF_SrBox;//KCF波门 RECT32S TLD_SrBox;//TLD波门 FLOAT32 fConf;//跟踪置信度 emObjSrc ArithSrc;//跟踪算法来源,决策后 unsigned char byte[20];//预留 }ARIDLL_OBJINFO; #endif //与外部AI跟踪器的交互信息 typedef struct tagTRACKER_BOX { RECT32S rect; FLOAT32 fscore; }TRACKER_BOX; typedef struct tagAITRACKER { int InferenceBoxNum;//推理输出结果个数(后处理前) TRACKER_BOX bbox[20];//回归结果框 }AITRACKER; #ifndef _ARIDLL_INPUTPARA_ #define _ARIDLL_INPUTPARA_ //输入【系统参数】结构体 typedef struct tagARIDLL_INPUTPARA { int nTimeStamp; //当前帧采集时刻时间戳,单位毫秒 int unFrmId; //当前帧图像帧编号 ServoInfo stServoInfo; //传感器伺服信息 CamInfo stCameraInfo; //相机信息 AirCraftInfo stAirCraftInfo; //载体信息 GuideInfo stGuideInfo; //外部引导信息 // 外部目标列表 int nInputTargetNum; TARGET_OBJECT stInputTarget[50]; // 外部输入目标列表,包含AI识别结果 // AI跟踪器结果 AITRACKER stAITrackerInfo; }ARIDLL_INPUTPARA; #endif #ifndef _ARIDLL_DEBUGOUTPUT_ #define _ARIDLL_DEBUGOUTPUT_ //调试信息 typedef struct tagARIDLL_DEBUG_OUTPUT { // 单帧检测结果 int nDetectObjsNum; ARIDLL_OBJINFO stFrameObjsInfo[20]; //检测所有目标信息数组 }ARIDLL_DEBUG_OUTPUT; #endif // 诱饵弹事件上报 typedef struct tagJammingBombMonitor { BBOOL bJammingBombLaunch;//跟踪时干扰弹投放 RECT32S rsJammingArea;//弹幕覆盖区域(密集投放不能区分) POINT32F ptBombPoint[50];//干扰弹跟踪位置(少量投放可识别) }JammingBombMonitor; // 敌导弹事件 typedef struct tagMissileMonitor { SINT32 nEnemyMissleLaunch;//导弹发射个数 POINT32F ptBombPoint[4];//导弹跟踪位置 SINT32 byte[50]; }MissileMonitor; // 复杂/高亮干扰监控 typedef struct tagHighLightJamming { BBOOL bJammingInterface;// 干扰目标交错 SINT32 nJammingInterfaceCnt;//交错最小帧计数 BBOOL bExplode;//爆炸火光 UBYTE8 byte[20]; }HighLightJamming; // 相似物干扰 typedef struct tagSimilarJamming { SINT32 nSimilarCount; UBYTE8 byte[20]; }SimilarJamming; // 敌火力指示 #ifndef _ARIDLL_EVENT_OUTPUT_ #define _ARIDLL_EVENT_OUTPUT_ typedef struct tagTRACK_EVENT { bool JMBMonitor;// 干扰弹监控 bool MissMonitor;//敌导弹监控 }TRACK_EVENT; #endif //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #ifndef _ARIDLL_OUTPUT_ #define _ARIDLL_OUTPUT_ //跟踪目标输出结构体 typedef struct tagARIDLL_OUTPUT { int nTimeStamp;//当前帧时间戳(透传),单位:毫秒 // 系统工作模式(透传)// by wcw04046 @ 2021/12/06 int nSysMode; int nFrmNum;//处理帧计数 //*****工作状态***** int nStatus; //待命/检测/跟踪/丢失状态信息等 //*****目标检测*****(短时航迹点,用于用户指示) int nAlarmObjCnts; //当前帧告警目标总个数 ARIDLL_OBJINFO stAlarmObjs[50]; //检测目标信息数组 //*****目标跟踪*****(长时航迹点,第0个为主目标送伺服跟踪) int nTrackObjCnts; //跟踪目标个数 ARIDLL_OBJINFO stTrackers[10]; //跟踪器输出数组 // 以下为调试内容 // 事件处理信息,来自火控传感器自身,载机火力指示标记 TRACK_EVENT eventInfo; // 调试信息输出 ARIDLL_DEBUG_OUTPUT stDebugInfo; // 算法控制指令计算透传(来自API调用) GLB_PCCOMMAND stCommand; //YY输出管道信息绘图 管道处理框架 //MOT_Pipe *g_GLB_PipeProc; float Arith_time; //算法运行耗时 }ARIDLL_OUTPUT; #endif /********************************************************** * 函数名称:STD_CreatEOArithHandle() * 功能描述:创建算法句柄 * 输入参数: * 输出参数:无 * 返 回 值:无 * 调用关系:无 * 其它说明:无 **********************************************************/ STD_TRACKER_API ArithHandle STD_CreatEOArithHandle(); /********************************************************** * 函数名称:STD_DeleteEOArithHandle() * 功能描述:释放算法句柄 * 输入参数: * 输出参数:无 * 返 回 值:无 * 调用关系:无 * 其它说明:无 **********************************************************/ STD_TRACKER_API void STD_DeleteEOArithHandle(ArithHandle hArith); /********************************************************** * 函数名称:ARIDLL_EOArithInit() * 功能描述:执行算法模块初始化 * 输入参数: * 输出参数:无 * 返 回 值:无 * 调用关系:无 * 其它说明:GLB_PT_TYPE nPixelType 暂未使用的参数 **********************************************************/ STD_TRACKER_API void ARIDLL_EOArithInit(ArithHandle hArith,int nWidth, int nHeight, GD_PIXEL_FORMAT_E nPixelType); /********************************************************** * 函数名称:ARIDLL_EOArithInit() * 功能描述:执行算法模块初始化2 - 带模式的初始化 * 输入参数: * 输出参数:无 * 返 回 值:无 * 调用关系:无 * 其它说明: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_RunController() * 功能描述:目标搜跟流程 * 输入参数: * 输出参数:无 * 返 回 值:无 * 调用关系:无 * 其它说明:无 **********************************************************/ STD_TRACKER_API int ARIDLL_RunController(ArithHandle hArithSrc, GD_VIDEO_FRAME_S img, ARIDLL_INPUTPARA stInputPara, ARIDLL_OUTPUT* pstOutput); //YY //********************************************************** //* 函数名称:ARIDLL_SearchScanTargets() //* 功能描述:周扫显示告警目标历史信息 //* 输入参数: //* 输出参数:无 //* 返 回 值:无 //* 调用关系:无 //* 其它说明:无 //**********************************************************/ STD_TRACKER_API int ARIDLL_SearchScanTargets(ArithHandle hArithSrc, int PipeID, TARGET_OBJECT* pTargetArrayOut); //********************************************************** //* 函数名称:ARIDLL_SearchFrameTargets() //* 功能描述:执行单帧目标检测算法 //* 输入参数: //* 输出参数:无 //* 返 回 值:无 //* 调用关系:无 //* 其它说明:无 //**********************************************************/ STD_TRACKER_API int ARIDLL_SearchFrameTargets(ArithHandle hArithSrc, GD_VIDEO_FRAME_S img, TARGET_OBJECT* pTargetArrayOut); //********************************************************** //* 函数名称:ARIDLL_SearchFrameTargets() //* 功能描述:将ai识别结果拼接到目标列表 //* 输入参数: //* 输出参数:无 //* 返 回 值:无 //* 调用关系:无 //* 其它说明:无 //**********************************************************/ STD_TRACKER_API int ARIDLL_MergeAITargets(ArithHandle hArithSrc, TARGET_OBJECT* pTargetArray,int num,obj_res* aiDetectArray,int aiNum); /********************************************************** * 函数名称:ARIDLL_LockCommand() * 功能描述:视场内自适应锁定,智能锁定,有目标锁目标,无目标根据项目需求执行锁定方式 * 输入参数: * 输出参数:无 * 返 回 值:无 * 调用关系:无 * 其它说明: **********************************************************/ STD_TRACKER_API void ARIDLL_LockCommand(ArithHandle hArithSrc, int nLockX,int nLockY,int nLockW,int nLockH); /********************************************************** * 函数名称:ARIDLL_GuideLockMultiCommand() * 功能描述:视场外引导锁定-支持批量锁定 ,使用极坐标锁定 * 输入参数: * 输出参数:无 * 返 回 值:无 * 调用关系:无 * 其它说明: **********************************************************/ STD_TRACKER_API void ARIDLL_GuideLockMultiCommand(ArithHandle hArithSrc, TargetGuide* guideList,int num); /********************************************************** * 函数名称:ARIDLL_ChangeLockCommand * 功能描述:修改跟踪点 * 输入参数:如果给了ID就修正该ID跟踪目标,如果ID = -1,自动判断修正目标 * 输出参数:无 * 返 回 值:无 * 调用关系:无 * 其它说明: **********************************************************/ STD_TRACKER_API void ARIDLL_ChangeLockCommand(ArithHandle hArithSrc, int nLockX, int nLockY, int nLockW, int nLockH, int ID); /********************************************************** * 函数名称:ARIDLL_unLockCommand() * 功能描述:解锁 * 输入参数: * 输出参数:无 * 返 回 值:无 * 调用关系:无 * 其它说明: **********************************************************/ STD_TRACKER_API void ARIDLL_unLockCommand(ArithHandle hArithSrc); /********************************************************** * 函数名称:ARIDLL_SetRunTimeParam() * 功能描述:设置运行期间参数 * 输入参数: * 输出参数:无 * 返 回 值:设置成功标记 * 调用关系:无 * 其它说明: **********************************************************/ STD_TRACKER_API bool ARIDLL_SetRunTimeParam(ArithHandle hArithSrc, ARIDLL_PARMA config); /********************************************************** * 函数名称:ARIDLL_ReadSetParamFile() * 功能描述:读取序列化参数 * 输入参数: * 输出参数:无 * 返 回 值:设置成功标记 * 调用关系:无 * 其它说明: **********************************************************/ STD_TRACKER_API bool ARIDLL_ReadSetParamFile(ArithHandle hArithSrc, const char* configFilePath); STD_TRACKER_API bool ARIDLL_ReadSetParamStream(ArithHandle hArithSrc,const char* configsstream); /********************************************************** * 函数名称:ARIDLL_SetScanMode() * 功能描述:设置外部系统工作模式 * 输入参数: * 输出参数:无 * 返 回 值:无 * 调用关系:无 * 其它说明: **********************************************************/ STD_TRACKER_API void ARIDLL_SetSysMode(ArithHandle hArithSrc, GLB_SYS_MODE nSysMode); /********************************************************** * 函数名称:ARIDLL_SetWorkScen() * 功能描述:设置工作场景,对空,对地,对海等 * 输入参数: * 输出参数:无 * 返 回 值:无 * 调用关系:无 * 其它说明: **********************************************************/ STD_TRACKER_API void ARIDLL_SetScenMode(ArithHandle hArithSrc, GLB_SCEN_MODE nScenMode); // 标准接口至此结束 #ifdef __cplusplus } #endif #endif