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.

474 lines
16 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
/*********版权所有(C)2024, 武汉高德红外股份有限公司***************
* 文件名称ArithStandardDll.h
* 文件标识高德光电搜索跟踪算法SDK
* 内容摘要:
* 其它说明:算法动态链接库(Arith DLL)的函数、全局变量、宏定义,统一前缀为简写"ARIDLL"
* 当前版本V2.0
* 创建作者04046wcw
* 创建日期2023-11-01
****************************************************************/
#ifndef __NEO_ARTTHSTANDARDDLL_H__
#define __NEO_ARTTHSTANDARDDLL_H__
//AI识别库接口文件
#include "detection_type_api.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; //目标类别
// 如果处于跟踪状态,则输出下列值
RECT32S SA_SrBox;//小面目标跟踪波门
SizeType SA_SizeType;//尺度信息
RECT32S KCF_SrBox;//KCF波门
RECT32S TLD_SrBox;//TLD波门
FLOAT32 fConf;//跟踪置信度
ObjSrc ArithSrc;//跟踪算法来源,决策后
float fBkgGray; //目标背景灰度值
float fBkgStd; //目标背景灰度标准差
unsigned char byte[12];//预留
}ARIDLL_OBJINFO;
//输入【系统参数】结构体
typedef struct tagARIDLL_INPUTPARA
{
int nTimeStamp; //当前帧采集时刻时间戳,单位毫秒
int unFrmId; //当前帧图像帧编号
short unFreq; //输入图像帧频
ServoInfo stServoInfo; //传感器伺服信息
CamInfo stCameraInfo; //相机信息
AirCraftInfo stAirCraftInfo; //载体信息
GuideInfo stGuideInfo; //外部引导信息
// AI跟踪器结果
AIT_OUTPUT stAITrackerInfo;
// 其他输入
int parallelFlg; //平台优化使用标记,勿删
bool bImageRataSys; //像旋系统标记S731实物样机1数字样机未模拟像旋 -0
int nElevationDiff; //机载设备挂飞高程差
}ARIDLL_INPUTPARA;
//跟踪目标输出结构体
typedef struct tagARIDLL_OUTPUT
{
int nTimeStamp;//当前帧时间戳(透传),单位:毫秒
// 系统工作模式(透传)// by wcw04046 @ 2021/12/06
int nSysMode;
int nFrmNum;//处理帧计数
//*****工作状态*****
int nStatus; //待命/检测/跟踪/丢失状态信息等//3315对外输出状态--0--未知状态 1--待命状态 2--目标搜索 3--单目标跟踪 9--多目标跟踪 11--自动截获 12--半自动截获
//*****目标检测*****(短时航迹点,用于用户指示)
int nAlarmObjCnts; //当前帧告警目标总个数
ARIDLL_OBJINFO stAlarmObjs[ST_OBJ_NUM]; //检测目标信息数组
//*****目标跟踪*****(长时航迹点第0个为主目标送伺服跟踪)
int nTrackObjCnts; //跟踪目标个数
ARIDLL_OBJINFO stTrackers[LT_OBJ_NUM]; //跟踪器输出数组
// AI跟踪器协同控制指令输出,用于控制端侧NPU程序
AIT_Command stAI_TkCmd;
CENTERRECT CaptureBox; //截获波门
}ARIDLL_OUTPUT;
/**********************************************************
* 函数名称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);
//**********************************************************
//* 函数名称ARIDLL_SearchFrameTargets()
//* 功能描述:执行单帧目标检测算法
//* 输入参数:
//* 输出参数:无
//* 返 回 值:无
//* 调用关系:无
//* 其它说明:无
//**********************************************************/
STD_TRACKER_API int ARIDLL_SearchFrameTargets(ArithHandle hArithSrc, GD_VIDEO_FRAME_S img);
//**********************************************************
//* 函数名称ARIDLL_SearchFrameTargets()
//* 功能描述接收外部AI识别目标在主循环调用前调用以传入外部目标
//* 输入参数:
//* 输出参数:无
//* 返 回 值:无
//* 调用关系:无
//* 其它说明:无
//**********************************************************/
STD_TRACKER_API int ARIDLL_MergeAITargets(ArithHandle hArithSrc, AIGO::objinfo* aiDetectArray,int aiNum);
/**********************************************************
* 函数名称ARIDLL_LockCommand()
* 功能描述:视场内自适应锁定,智能锁定,有目标锁目标,无目标根据项目需求执行锁定方式
* 输入参数:
* 输出参数:无
* 返 回 值:无
* 调用关系:无
* 其它说明:
**********************************************************/
STD_TRACKER_API void ARIDLL_LockCommand(ArithHandle hArithSrc, int nLockX,int nLockY,int nLockW,int nLockH);
/**********************************************************
* 函数名称ARIDLL_LockTarget()
* 功能描述:视场内自适应锁定,当前帧完成跟踪器初始化并返回锁定的目标
* 输入参数:
* 输出参数:无
* 返 回 值:无
* 调用关系:无
* 其它说明:
**********************************************************/
STD_TRACKER_API ARIDLL_OBJINFO ARIDLL_LockTarget(ArithHandle hArithSrc, GD_VIDEO_FRAME_S img, int nLockX, int nLockY, int nLockW, int nLockH);
/**********************************************************
* 函数名称ARIDLL_LockCommandByID()
* 功能描述:视场内根据批号锁定,当前帧处理
* 输入参数:
* 输出参数:无
* 返 回 值:无
* 调用关系:无
* 其它说明:
**********************************************************/
STD_TRACKER_API ARIDLL_OBJINFO ARIDLL_LockTargetByID(ArithHandle hArithSrc, GD_VIDEO_FRAME_S img, int nBatchID);
/**********************************************************
* 函数名称ARIDLL_GuideLockMultiCommand()
* 功能描述:视场外引导锁定-支持批量锁定 ,使用极坐标锁定
* 输入参数:
* 输出参数:无
* 返 回 值:无
* 调用关系:无
* 其它说明:
**********************************************************/
STD_TRACKER_API void ARIDLL_GuideLockMultiCommand(ArithHandle hArithSrc, TargetGuide* guideList,int num);
/**********************************************************
* 函数名称ARIDLL_unLockCommand_3315()
* 功能描述:解锁
* 输入参数int nunLockX--解锁位置——X, int nunLockY--解锁位置——y, int CancleMode--解锁模式 0-单点解锁 1-批量解锁
* 输出参数:无
* 返 回 值:无
* 调用关系:无
* 其它说明:未使用
**********************************************************/
STD_TRACKER_API void ARIDLL_unLockCommand_3315(ArithHandle hArithSrc, int nunLockX, int nunLockY, int CancleMode);
/**********************************************************
* 函数名称ARIDLL_unLockCommand()
* 功能描述:解锁
* 输入参数:
* 输出参数:无
* 返 回 值:无
* 调用关系:无
* 其它说明:
**********************************************************/
STD_TRACKER_API void ARIDLL_unLockCommand(ArithHandle hArithSrc);
/**********************************************************
* 函数名称ARIDLL_AdjustTrackRect()
* 功能描述:微调第主对地跟踪器跟踪框
* 输入参数:
* 输出参数:无
* 返 回 值:无
* 调用关系:无
* 其它说明:
**********************************************************/
STD_TRACKER_API void ARIDLL_AdjustTrackRect(ArithHandle hArithSrc,int dx,int dy,int dw,int dh);
/**********************************************************
* 函数名称ARIDLL_ReadSetParamFile()
* 功能描述:读取序列化参数:从文件
* 输入参数:
* 输出参数:无
* 返 回 值:设置成功标记
* 调用关系:无
* 其它说明:
**********************************************************/
STD_TRACKER_API bool ARIDLL_ReadSetParamFile(ArithHandle hArithSrc, const char* configFilePath);
/**********************************************************
* 函数名称ARIDLL_ReadSetParamFile()
* 功能描述读取序列化参数从buffer
* 输入参数:
* 输出参数:无
* 返 回 值:设置成功标记
* 调用关系:无
* 其它说明:
**********************************************************/
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);
/**********************************************************
* 函数名称ARIDLL_SetTrackMode()
* 功能描述设置跟踪模式SOT/MOT
* 输入参数:
* 输出参数:无
* 返 回 值:无
* 调用关系:无
* 其它说明:
**********************************************************/
STD_TRACKER_API void ARIDLL_SetTrackMode(ArithHandle hArithSrc, BYTE8 TrackMode);
/**********************************************************
* 函数名称ARIDLL_RunTLD()
* 功能描述运行TLD流程可供外部调用
* 输入参数:
* 输出参数:无
* 返 回 值:无
* 调用关系:无
* 其它说明:
**********************************************************/
STD_TRACKER_API void ARIDLL_RunTLDTracker(ArithHandle hArithSrc, GD_VIDEO_FRAME_S img);
// 标准接口至此结束
// 输出算法配置文件
STD_TRACKER_API void ARIDLL_ExportParamFile(ArithHandle hArithSrc, const char* configFilePath);
/**********************************************************
* 函数名称ARIDLL_LockOrUnLock()
* 功能描述3315新增需求单点响应锁定/解锁
* 输入参数GD_VIDEO_FRAME_S img
int nX, int nY---点选位置
int Radius---解锁响应范围
* 输出参数:无
* 返 回 值:无
* 调用关系:无
* 其它说明:
**********************************************************/
STD_TRACKER_API ARIDLL_OBJINFO ARIDLL_LockOrUnLock(ArithHandle hArithSrc, GD_VIDEO_FRAME_S img, int nX, int nY, int Radius);
/**********************************************************
* 函数名称ARIDLL_Sort_PipeByDistance()
* 功能描述3315新增需求按距离中心点距离对输出目标进行排序
* 输入参数同ARIDLL_RunController保持一致
* 输出参数:无
* 返 回 值:距离中心点最近目标索引
* 调用关系:无
* 其它说明:
**********************************************************/
STD_TRACKER_API int ARIDLL_Sort_PipeByDistance(ArithHandle hArithSrc, ARIDLL_OUTPUT* pstOutput);
/*********************************************************
* 功能描述:根据动态文件是否存在,进行配置文件加载 --- 动态文件默认为init并在 init <----> reset 之间循环使用
*********************************************************/
STD_TRACKER_API bool ARIDLL_Read_Config(ArithHandle hArithSrc, const char* ConfigPath);
/*************************************
* 函数名称: ARIDLL_Filter_Alarm_Pipe()
* 功能描述: 3315新增需求给定坐标点和使能标记对低于坐标点俯仰角度的管道进行屏蔽
* 创建日期: 2025/8/15
* 输入参数: ArithHandle hArithSrc:算法句柄
* 输入参数: int nX:屏蔽下发x坐标点
* 输入参数: int nY:屏蔽下发y坐标点
* 输入参数: bool bFitered屏蔽下发使能开关
* 输出参数: 无
* 返回值: STD_TRACKER_API void
* 调用关系: 无
* 其它说明: 无
*************************************/
STD_TRACKER_API void ARIDLL_Filter_Alarm_Pipe(ArithHandle hArithSrc, int nX, int nY, bool bFitered);
#ifdef __cplusplus
}
#endif
#endif