Files
CodeRepository/Projects/App_S3313/Src/gdParty/include/STD_ArithStandardDll.h
2026-02-01 22:23:06 +08:00

466 lines
14 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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