722 lines
21 KiB
C
722 lines
21 KiB
C
#ifndef _ARITH_COMMONDEF_
|
||
#define _ARITH_COMMONDEF_
|
||
|
||
/*********版权所有(C)2020,武汉高德红外股份有限公司***************************************
|
||
* 文件名称: Arith_CommonDef.h
|
||
* 文件标识:通用数据结构定义
|
||
* 内容摘要:
|
||
* 其它说明:
|
||
* 当前版本:
|
||
* 创建作者:
|
||
* 创建日期:2020/12/05
|
||
* 包含关系:
|
||
*****************************************************************************************/
|
||
//外部系统状态(总体下发)
|
||
typedef enum tagGLB_SYS_MODE
|
||
{
|
||
GLB_SYS_WAIT = 0x01, // 空闲
|
||
GLB_SYS_STARE = 0x02, // 凝视
|
||
GLB_SYS_FSCAN = 0x03, // 扇扫
|
||
GLB_SYS_AUTO = 0x04, // 自主搜跟(无人值守)
|
||
GLB_SYS_SCAN = 0x05 // 周扫
|
||
}GLB_SYS_MODE;
|
||
|
||
// 场景模式
|
||
typedef enum tagGLB_SCEN_MODE
|
||
{
|
||
GLB_SCEN_SKY = 0x01, // 对空模式
|
||
GLB_SCEN_GROUND = 0x02, // 对地模式
|
||
GLB_SCEN_SEA = 0x03, // 对海模式
|
||
GLB_SCEN_NORMAL = 0x00 // 通用
|
||
}GLB_SCEN_MODE;
|
||
|
||
// 外引导来源
|
||
typedef enum tagGLB_GUIDE_SOURCE
|
||
{
|
||
GLB_GUIDE_RADAR = 0x01, //载机雷达
|
||
GLB_GUIDE_WARNINGPLANE = 0x02 //预警机
|
||
}GLB_GUIDE_SOURCE;
|
||
|
||
|
||
|
||
|
||
// 视频源
|
||
typedef enum tagGLB_VIDE_TYPE
|
||
{
|
||
GLB_VIDEO_IR_SW = 0x01,//红外短波
|
||
GLB_VIDEO_IR_MW = 0x02,//红外中波
|
||
GLB_VIDEO_IR_LW = 0x03,//红外长波
|
||
GLB_VIDEO_VL = 0x04 //电视
|
||
}GLB_VIDE_TYPE;
|
||
|
||
|
||
////像素类型
|
||
//typedef enum tagGLB_PT_TYPE
|
||
//{
|
||
// GLB_PT_UBYTE8 = 0, //无符号8位数据
|
||
// GLB_PT_UINT16 = 1, //无符号16位数据
|
||
// GLB_PT_SINT16 = 2, //有符号16位数据
|
||
// GLB_PT_RGB24 = 3, //RGB888
|
||
// GLB_PT_RGBA32 = 4, //RGBA8888
|
||
// GLB_PT_YUV_UYVY = 5, //YUV422_uyvy
|
||
// GLB_PT_YUV_NV12 = 6
|
||
//}GLB_PT_TYPE;
|
||
|
||
typedef enum _gd_pixel_format_e {
|
||
GD_PIXEL_FORMAT_NONE = 0,
|
||
GD_PIXEL_FORMAT_YUV420P,
|
||
GD_PIXEL_FORMAT_YUV422P,
|
||
GD_PIXEL_FORMAT_NV12,
|
||
GD_PIXEL_FORMAT_NV21,
|
||
GD_PIXEL_FORMAT_NV16,
|
||
GD_PIXEL_FORMAT_NV61,
|
||
GD_PIXEL_FORMAT_RGB_PLANAR,
|
||
GD_PIXEL_FORMAT_BGR_PLANAR,
|
||
GD_PIXEL_FORMAT_RGB_PACKED,
|
||
GD_PIXEL_FORMAT_BGR_PACKED,
|
||
GD_PIXEL_FORMAT_GRAY_Y8,
|
||
GD_PIXEL_FORMAT_GRAY_Y16,
|
||
GD_PIXEL_FORMAT_BUTT
|
||
} GD_PIXEL_FORMAT_E;
|
||
|
||
typedef struct _gd_video_frame_s {
|
||
unsigned int u32Width;
|
||
unsigned int u32Height;
|
||
GD_PIXEL_FORMAT_E enPixelFormat;
|
||
unsigned int u32Stride[3];
|
||
unsigned long long u64PhyAddr[3];
|
||
unsigned char* u64VirAddr[3];
|
||
} GD_VIDEO_FRAME_S;
|
||
|
||
|
||
|
||
|
||
// 捕控导引阶段定义(算法内部状态)
|
||
typedef enum tagGLB_STATUS
|
||
{
|
||
GLB_STATUS_UNKOWN = 0, //捕控导引阶段 - 未知
|
||
GLB_STATUS_WAIT = 1, //捕控导引阶段 - 待命状态
|
||
GLB_STATUS_SEARCH = 2, //捕控导引阶段 - 搜素状态
|
||
GLB_STATUS_TRACK = 3, //捕控导引阶段 - 跟踪
|
||
GLB_STATUS_SCAN = 4, //捕控导引阶段 - 周扫
|
||
GLB_STATUS_LOST = 5, //捕控导引阶段 - 跟踪丢失
|
||
GLB_STATUS_FSCAN = 6, //捕控导引阶段 - 扇扫
|
||
GLB_STATUS_MULTRACK = 9, //多目标跟踪状态
|
||
GLB_STATUS_AIM = 10 //内校轴阶段
|
||
}GLB_STATUS;
|
||
|
||
// 目标检测算法标识
|
||
typedef enum tagemObjSrc
|
||
{
|
||
Arith_DST = 1,
|
||
Arith_DAT = 2,
|
||
Arith_AI = 3,
|
||
Arith_KCF = 4,
|
||
Arith_TLD = 5,
|
||
Arith_Manual = 6
|
||
}emObjSrc;
|
||
|
||
// 尺度模式
|
||
typedef enum tagSizeType
|
||
{
|
||
unKnown, //不确定目标或未识别尺寸类型
|
||
DimTarget, //弱小目标
|
||
SmallTarget, //小目标
|
||
MiddleTarget, //临界目标
|
||
AreaTarget //面目标
|
||
}SizeType;
|
||
|
||
// 灰度模式
|
||
typedef enum tagGrayType
|
||
{
|
||
BrightTarget = 1, //亮目标
|
||
DarkTarget = 2, //暗目标
|
||
AllGray = 3 //亮暗目标
|
||
}GrayType;
|
||
|
||
|
||
|
||
// 目标跟踪状态
|
||
typedef enum tagTrackingStatus
|
||
{
|
||
NOT_TRACKING = 0,//未跟踪
|
||
STABLE_TRACKING = 1,//稳跟
|
||
MEM_TRACKING = 2//记忆跟踪
|
||
}TrackingStatus;
|
||
|
||
|
||
// 遮挡事件等级判断
|
||
typedef enum tagOccLev
|
||
{
|
||
NO_OCC = 0,//无遮挡
|
||
SIM_OCC = 1,//轻微遮挡
|
||
MID_OCC = 2,//中等遮挡
|
||
FULL_OCC = 3//完全遮挡
|
||
}OccLev;
|
||
|
||
|
||
// 目标形变事件
|
||
typedef enum tagShapeTransLev
|
||
{
|
||
NO_ShapeTrans = 0,//无形变
|
||
MID_ShapeTrans = 1,//轻微形变
|
||
FULL_ShapeTrans = 2//显著形变
|
||
}ShapeTransLev;
|
||
|
||
|
||
// 跟踪事件(可包含所有跟踪期间需要特殊处理的事件
|
||
// 如强制记忆跟踪、遮挡、形变、变焦、变倍等)
|
||
typedef struct tagTrackEvent
|
||
{
|
||
OccLev occ;
|
||
ShapeTransLev shapeTrans;
|
||
}TrackEvent;
|
||
|
||
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
// 系统符号定义
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
|
||
typedef bool BBOOL;
|
||
typedef unsigned char UBYTE8;
|
||
typedef signed char BYTE8;
|
||
typedef unsigned short UINT16;
|
||
typedef short SINT16;
|
||
typedef unsigned int UINT32;
|
||
typedef int SINT32;
|
||
typedef unsigned long COLORREF;
|
||
typedef unsigned short WORD;
|
||
typedef unsigned long DWORD;
|
||
typedef unsigned char BYTE;
|
||
typedef float FLOAT32;
|
||
typedef double DOUBLE64;
|
||
typedef long double LDOUBLE80;
|
||
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
// 系统数据结构
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
// 定义坐标结构体--整型32位
|
||
typedef struct tagPoint32S // BYTES: 2*4=8
|
||
{
|
||
SINT32 x; // 图像像素x坐标
|
||
SINT32 y; // 图像像素y坐标
|
||
} POINT32S;
|
||
|
||
// 定义坐标结构体--整型16位
|
||
typedef struct tagPoint16S // BYTES: 2*2=4
|
||
{
|
||
SINT16 x; // 图像像素x坐标
|
||
SINT16 y; // 图像像素y坐标
|
||
} POINT16S;
|
||
|
||
// 定义坐标结构体--浮点型
|
||
typedef struct tagPoint32F // BYTES: 2*4=8
|
||
{
|
||
FLOAT32 x; // 图像像素x坐标
|
||
FLOAT32 y; // 图像像素y坐标
|
||
} POINT32F;
|
||
|
||
#ifndef _RPY_
|
||
#define _RPY_
|
||
// RPY姿态角
|
||
typedef struct tgEulerRPY
|
||
{
|
||
double fRoll; // 横滚角
|
||
double fPitch; // 俯仰角
|
||
double fYaw; // 方位角
|
||
} EulerRPY; // 单位:°
|
||
#endif
|
||
|
||
#ifndef _POLE_
|
||
#define _POLE_
|
||
// 极坐标系
|
||
typedef struct tgPointPole
|
||
{
|
||
double alpha; // 俯仰角
|
||
double beta; // 方位角
|
||
double distance; // 极径
|
||
} Pole; // 单位:°
|
||
#endif
|
||
|
||
#ifndef _POINTXYZ_
|
||
#define _POINTXYZ_
|
||
// 空间直角坐标系,也可以看做向量
|
||
typedef struct tgPointXYZ
|
||
{
|
||
double X;
|
||
double Y;
|
||
double Z;
|
||
} PointXYZ; // 单位:米
|
||
#endif
|
||
|
||
#ifndef _POINTBLH_
|
||
#define _POINTBLH_
|
||
typedef struct tgPointBLH
|
||
{
|
||
double B; // 纬度
|
||
double L; // 经度
|
||
double H; // 高程
|
||
} PointBLH; // 地理坐标系 //单位:°
|
||
#endif
|
||
|
||
// 相机内参
|
||
typedef struct tgCameraParam
|
||
{
|
||
int ImageWidth;
|
||
int ImageHeight;
|
||
float f; // 焦距 mm
|
||
float dSize; // 像元尺寸 um
|
||
int dx; // 像主点偏移x,0代表图像中心
|
||
int dy; // 像主点偏移y,0代表图像中心
|
||
float fAglReso;// 角分辨率,内部计算便于使用
|
||
|
||
bool bImageRataSys; //像旋系统标记,S731实物样机1,数字样机未模拟像旋 -0
|
||
} CameraParam;
|
||
|
||
// 伺服信息
|
||
typedef struct tgServoParam
|
||
{
|
||
float fAz; // 方位
|
||
float fPt; // 俯仰
|
||
|
||
// S731扩展
|
||
float fFSMAz; // 快反方位
|
||
float fFSMPt; // 快反俯仰
|
||
} ServoParam;
|
||
|
||
typedef struct tgDeviceSetupError
|
||
{
|
||
double g_YawBias;
|
||
double g_PitchBias;
|
||
double g_RollBias;
|
||
double g_XBias;
|
||
double g_YBias;
|
||
double g_ZBias;
|
||
} DeviceSetupError;
|
||
|
||
// 定义目标宽高结构体--32位 //BYTES: 3*4=12
|
||
typedef struct tagSize32S
|
||
{
|
||
SINT32 w; // 宽度
|
||
SINT32 h; // 高度
|
||
SINT32 s; // 面积
|
||
|
||
} SIZE32S;
|
||
|
||
// 定义目标宽高结构体--浮点型
|
||
typedef struct tagSize32F // BYTES: 3*4=12
|
||
{
|
||
FLOAT32 w; // 宽度
|
||
FLOAT32 h; // 高度
|
||
FLOAT32 s; // 面积
|
||
} SIZE32F;
|
||
|
||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
// 定义速度结构体--整型32位 //BYTES: 2*4=8
|
||
typedef struct tagSpeed32S
|
||
{
|
||
SINT32 vx; // x方向速度
|
||
SINT32 vy; // y方向速度
|
||
} SPEED32S;
|
||
|
||
// 定义速度结构体--浮点型
|
||
typedef struct tagSpeed32F // BYTES: 2*4=8
|
||
{
|
||
FLOAT32 vx; // x方向速度
|
||
FLOAT32 vy; // y方向速度
|
||
} SPEED32F;
|
||
|
||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
// 定义矩形结构体--左上角坐标及宽高--整型16位
|
||
typedef struct tagRect16S // BYTES: 4*2=8
|
||
{
|
||
SINT16 x; // 左上点x坐标
|
||
SINT16 y; // 左上点y坐标
|
||
SINT16 w; // 矩形宽度
|
||
SINT16 h; // 矩形高度
|
||
} RECT16S;
|
||
|
||
// 定义矩形结构体--左上角坐标及宽高--整型32位
|
||
typedef struct tagRect32S // BYTES: 4*4=16
|
||
{
|
||
SINT32 x; // 左上点x坐标
|
||
SINT32 y; // 左上点y坐标
|
||
SINT32 w; // 矩形宽度
|
||
SINT32 h; // 矩形高度
|
||
} RECT32S;
|
||
|
||
// 定义矩形结构体--左上角坐标及宽高--浮点型
|
||
typedef struct tagRect32F // BYTES: 4*4=16
|
||
{
|
||
FLOAT32 x; // 左上点x坐标
|
||
FLOAT32 y; // 左上点y坐标
|
||
FLOAT32 w; // 矩形宽度
|
||
FLOAT32 h; // 矩形高度
|
||
} RECT32F;
|
||
|
||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
// 定义矩形结构体--中心点坐标及宽高、大小-整型
|
||
typedef struct tagCENTERRECT // BYTES: 5*2=10
|
||
{
|
||
SINT16 cx; // 中心点x坐标
|
||
SINT16 cy; // 中心点y坐标
|
||
SINT16 w; // 矩形宽度
|
||
SINT16 h; // 矩形高度
|
||
SINT32 s; // 目标大小
|
||
}CENTERRECT;
|
||
|
||
// 定义矩形结构体--中心点坐标及宽高、大小-整型32位
|
||
typedef struct tagCENTERRECT32S // BYTES: 4*4=16
|
||
{
|
||
SINT32 cx; // 中心点x坐标
|
||
SINT32 cy; // 中心点y坐标
|
||
SINT32 w; // 矩形宽度
|
||
SINT32 h; // 矩形高度
|
||
SINT32 s; // 目标大小
|
||
} CENTERRECT32S;
|
||
|
||
// 定义矩形结构体--中心点坐标及宽高、大小-浮点型
|
||
typedef struct tagCENTERRECT32F // BYTES: 5*4=20
|
||
{
|
||
FLOAT32 cx; // 中心点x坐标
|
||
FLOAT32 cy; // 中心点y坐标
|
||
FLOAT32 w; // 矩形宽度
|
||
FLOAT32 h; // 矩形高度
|
||
FLOAT32 s; // 目标大小
|
||
} CENTERRECT32F;
|
||
|
||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
// 定义矩形结构体--左上角及右下角坐标
|
||
typedef struct tagMINMAXRECT // BYTES: 4*2=8
|
||
{
|
||
SINT16 minX; // 左上点x坐标
|
||
SINT16 minY; // 左上点y坐标
|
||
SINT16 maxX; // 右下点x坐标
|
||
SINT16 maxY; // 右下点y坐标
|
||
} MINMAXRECT;
|
||
|
||
// 定义矩形结构体--左上角及右下角坐标-整型32位
|
||
typedef struct tagMINMAXRECT32S // BYTES: 4*4=16
|
||
{
|
||
SINT32 minX; // 左上点x坐标
|
||
SINT32 minY; // 左上点y坐标
|
||
SINT32 maxX; // 右下点x坐标
|
||
SINT32 maxY; // 右下点y坐标
|
||
} MINMAXRECT32S;
|
||
|
||
// 定义矩形结构体--左上角及右下角坐标-浮点32位
|
||
typedef struct tagMINMAXRECT32F // BYTES: 4*4=16
|
||
{
|
||
FLOAT32 minX; // 左上点x坐标
|
||
FLOAT32 minY; // 左上点y坐标
|
||
FLOAT32 maxX; // 右下点x坐标
|
||
FLOAT32 maxY; // 右下点y坐标
|
||
} MINMAXRECT32F;
|
||
|
||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
// 定义目标角度结构体
|
||
typedef struct tagAngle32F // BYTES: 2*4=8
|
||
{
|
||
FLOAT32 fAz; // 方位角
|
||
FLOAT32 fPt; // 俯仰角
|
||
FLOAT32 Dr; // 极坐标角度
|
||
} ANGLE32F;
|
||
|
||
|
||
|
||
// 定义目标宽高结构体--16位 //BYTES: 2*2 + 1*4=8
|
||
typedef struct tagSize16S
|
||
{
|
||
SINT16 w; // 宽度
|
||
SINT16 h; // 高度
|
||
SINT32 s; // 面积
|
||
} SIZE16S;
|
||
|
||
// 定义距离结构体--整型32位
|
||
typedef struct tagDist32S // BYTES: 2*4=8
|
||
{
|
||
SINT32 dx; // x方向距离
|
||
SINT32 dy; // y方向距离
|
||
} DIST32S;
|
||
|
||
// 定义距离结构体--浮点型
|
||
typedef struct tagDist32F // BYTES: 2*4=8
|
||
{
|
||
FLOAT32 dx; // x方向距离
|
||
FLOAT32 dy; // y方向距离
|
||
} DIST32F;
|
||
|
||
|
||
|
||
|
||
|
||
//// 图像定义
|
||
//typedef struct tagGDImage
|
||
//{
|
||
// UBYTE8* pImage_t;//图像指针首地址
|
||
// SINT32 nWidth;//图像实际宽
|
||
// SINT32 nHeight;//图像实际高
|
||
// GLB_PT_TYPE nPixelType;//图像数据类型
|
||
//}GD_VIDEO_FRAME_S;
|
||
|
||
|
||
// AB滤波器
|
||
typedef struct tagFilter
|
||
{
|
||
float m_px;//方位角预测值
|
||
float m_pdx;//方位角速度预测值
|
||
float m_py;//俯仰角预测值
|
||
float m_pdy;//俯仰角速度预测值
|
||
|
||
// 滤波参数
|
||
float m_paraA;
|
||
float m_paraB;
|
||
|
||
int m_ind; //序号
|
||
float m_T;//1/系统频率
|
||
bool m_Init;//初始化标记
|
||
|
||
int m_LastFrmID;//上一帧更新的帧编号,扫描模式下防止帧频不稳定(有时一圈更新一次,有时连续帧更新)
|
||
}Filter;
|
||
|
||
|
||
#define GLB_OBJTRACK_LEN 100 //目标轨迹数组长度
|
||
|
||
|
||
// 定义目标角度轨迹结构体
|
||
typedef struct tagObjAglTrack32F
|
||
{
|
||
UINT32 unFrmID; // 记录目标被检测到的帧编号
|
||
ANGLE32F afAngle; // 目标方位角、俯仰角
|
||
FLOAT32 fDist; // 距离
|
||
} ANGLE_R;
|
||
|
||
// 定义目标角度信息结构体
|
||
typedef struct tagObjAngleR32F // BYTES: 5*4+28=48
|
||
{
|
||
SINT32 nCnt; // 已记录的历史角度信息个数
|
||
SINT32 nStep; // 记录帧间隔
|
||
SINT32 nEnd; // 历史循环队列末尾
|
||
SINT32 nListSize; // 目标角度数组长度
|
||
ANGLE_R parHistoryList[GLB_OBJTRACK_LEN]; // 目标角度信息历史记录
|
||
SINT32 nFilterCnt; // 滤波帧数
|
||
ANGLE_R arfFilter; // 滤波结果
|
||
ANGLE_R arfSpeed; // 目标速度
|
||
ANGLE_R arfPredict; // 目标当前帧预测
|
||
} OBJ_ANGLE_R;
|
||
|
||
|
||
// 长短时滤波器结构
|
||
typedef struct tagFilterMeanNL
|
||
{
|
||
OBJ_ANGLE_R ObjAglListsNear; //目标短时间轨迹数组(每帧记录一次)
|
||
OBJ_ANGLE_R ObjAglListsLong; //目标长时间轨迹数组(每秒记录一次)
|
||
CENTERRECT crnObjPrediRtNear; //根据目标短时轨迹在当前帧预测到的位置中心矩形
|
||
CENTERRECT crnObjPrediRtLong; //根据目标长时轨迹在当前帧预测到的位置中心矩形
|
||
MINMAXRECT32S mrnObjPrediRtNear;//根据目标短时轨迹在当前帧预测到的位置边界矩形
|
||
MINMAXRECT32S mrnObjPrediRtLong;//根据目标长时轨迹在当前帧预测到的位置边界矩形
|
||
DIST32S dnObjPredictDist; //当前帧目标长短轨迹预测位置距离
|
||
SINT32 nObjPredictFarCnt; //目标长短轨迹位置预测距离连续变大计数器
|
||
BBOOL bObjPredictAbnormal; //目标长短轨迹位置预测异常标志
|
||
BBOOL bObjTrackRefoundSucc; //在目标长短轨迹位置预测异常时,重新成功找到目标的标志
|
||
SINT32 nObjTrackLostCntNear; //目标短时轨迹预测失败帧数
|
||
SINT32 nObjTrackLostCntLong; //目标长时轨迹预测失败帧数
|
||
SINT32 nAbnormalCnt; //跟踪异常计数器(连续---坏点
|
||
}FilterMeanNL;
|
||
|
||
|
||
|
||
// 定义目标结构体
|
||
typedef struct tagTargetObject // BYTES: 3*1 + 1*2 + 7*4 + 3*8 = 57
|
||
{
|
||
// 全局
|
||
BBOOL bObject; // 标识目标是否已被创建。1-目标已创建,0-目标未创建
|
||
UINT32 unFrmID; // 记录目标被检测到的帧编号
|
||
SINT32 nClassID; // 目标类型id,如果有的话
|
||
FLOAT32 fDetConf; // 检测置信度(AI目标)
|
||
|
||
// 位置
|
||
POINT32F pfCenPos; // 区域的中心点坐标 //BYTES: 2*4=8
|
||
POINT16S pnMaxPos; // 目标的极大值位置(小目标检测用) //BYTES: 2*2=4
|
||
ANGLE32F afAngle; // 目标方位角、俯仰角
|
||
FLOAT32 fDist; // 距离视场中心距离
|
||
|
||
// 尺寸
|
||
MINMAXRECT mrnRect; // 目标上下左右边界坐标 //BYTES: 4*2=8
|
||
SIZE16S snSize; // 目标宽高 //BYTES: 2*2 + 1*4=8
|
||
UINT32 unObjPxlsCnt; // 目标的象素点的个数
|
||
UBYTE8 nObjTypeSize; // 表示目标尺寸类型:1--小目标,2--面目标,3--临界目标(即二者均是),4--弱小目标
|
||
|
||
// 强度
|
||
UINT16 pxObjGray; // 目标的灰度:可以是中心点灰度、或目标均值等
|
||
UINT16 pxObjMaxGray; // 目标极值灰度 //04046wcw 20221019
|
||
FLOAT32 fObjStd; // 目标方差 4
|
||
FLOAT32 fBGStd; // 目标背景方差
|
||
FLOAT32 fBGMean; // 目标背景均值
|
||
FLOAT32 fSNR; // 目标背景信噪比
|
||
UBYTE8 nObjTypeGray; // 表示目标灰度类型:1--亮目标,2--暗目标,0--其它
|
||
|
||
// 管道相关
|
||
UINT32 nInPipesID; // 是否拥有管道:0-目标未加入管道,大于0-目标已加入第(nInPipesID-1)个管道
|
||
SINT32 nInPipeDist; // 记录目标被加入管道时,与该管道中心的距离
|
||
UBYTE8 ubDirection;
|
||
|
||
// 来源
|
||
emObjSrc nObjTypeSrc; // 目标来源 01-小目标 02-面目标 03-AI目标 04-KCF 05-TLD 06-手动起
|
||
FLOAT32 fMatchConf; //跟踪阶段匹配度
|
||
|
||
} TARGET_OBJECT;
|
||
|
||
|
||
|
||
// 外部引导目标列表,用于批量转锁定
|
||
typedef struct tagTargetGuide
|
||
{
|
||
int ID; //目标批号,传递给锁定后目标
|
||
unsigned char bIsCoLocate; //协同定位标记,直接透传到目标
|
||
Pole stTargetPole; //目标极坐标
|
||
PointBLH stTargetPos; //目标GPS坐标
|
||
float fGuideAzSpeed; //实际锁定点方位角速度
|
||
float fGuidePtSpeed; //实际锁定点俯仰角速度
|
||
int nLockX; //锁定点当前图像坐标X
|
||
int nLockY; //锁定点当前图像坐标Y
|
||
bool bInFOV; //在视场判断
|
||
|
||
}TargetGuide;
|
||
|
||
// 载体信息
|
||
typedef struct tagAirCraftInfo
|
||
{
|
||
unsigned char nPlaneID; //载机ID
|
||
PointBLH stPos;//位置
|
||
EulerRPY stAtt;//姿态
|
||
}AirCraftInfo;
|
||
|
||
// 相机信息
|
||
typedef struct tagCamInfo
|
||
{
|
||
int nFocus; //实时焦距值
|
||
float fPixelSize; //像元尺寸
|
||
GLB_VIDE_TYPE unVideoType; //视频源类型
|
||
int dCamx; //像主点偏移x,0- 图像中心 ,不知道就填0
|
||
int dCamy; //像主点偏移y,0- 图像中心 ,不知道就填0
|
||
|
||
bool bImageRataSys; //像旋系统标记,S731实物样机1,数字样机未模拟像旋 -0
|
||
|
||
}CamInfo;
|
||
|
||
// 伺服状态
|
||
typedef struct tagServoInfo
|
||
{
|
||
float fServoAz; //当前帧伺服方位角
|
||
float fServoPt; //当前帧伺服俯仰角
|
||
float fServoAzSpeed; //当前帧伺服方位角速度
|
||
float fServoPtSpeed; //当前帧伺服俯仰角速度
|
||
}ServoInfo;
|
||
|
||
// 引导信息
|
||
typedef struct tagGuideInfo
|
||
{
|
||
bool bGuideUpdate; //引导当前帧更新标志(有效标志)
|
||
float fGuideYaw;
|
||
float fGuidePitch;
|
||
float fGuideDistance;
|
||
GLB_GUIDE_SOURCE nGuideInfSource; // 引导信息来源,本机雷达
|
||
}GuideInfo;
|
||
|
||
|
||
|
||
//跟踪算法控制参数
|
||
typedef struct tagARIDLL_PARMA
|
||
{
|
||
// 算法开关
|
||
bool bEnableDetcetSmallTarget;//小目标检测/跟踪开关
|
||
bool bEnableDetcetDimTarget;//弱小目标检测/跟踪开关
|
||
bool bEnableDetcetAreaTarget;//面目标检测/跟踪开关
|
||
bool bEnableKCFTracker;//面目标KCF跟踪开关
|
||
bool bEnableTLD;//tld算法开关
|
||
|
||
|
||
// 算法参数
|
||
float fSmallDetectGDK;//小目标检测snr阈值
|
||
int nDetectGrayType;//检测目标灰度类型
|
||
int fAreaDetectGrayDiffThre;//面目标检测灰度差阈值
|
||
int fAreaDetectGradDiffThre;//面目标检测梯度差阈值
|
||
int nSearchRadius; // 管道搜索半径
|
||
|
||
// 轨迹滤波器AB参数
|
||
float fA;
|
||
float fB;
|
||
|
||
SINT32 nScanSearchRadius;//周扫管道关联半径
|
||
|
||
BBOOL bUseShieldAngle; //屏蔽角算法开关
|
||
FLOAT32 fEffectScanAz0_X;//方位有效
|
||
FLOAT32 fEffectScanAz0_Y;
|
||
FLOAT32 fEffectScanAz1_X;
|
||
FLOAT32 fEffectScanAz1_Y;
|
||
FLOAT32 fEffectScanAz2_X;
|
||
FLOAT32 fEffectScanAz2_Y;
|
||
FLOAT32 fEffectScanAz3_X;
|
||
FLOAT32 fEffectScanAz3_Y;
|
||
FLOAT32 fEffectScanAz4_X;
|
||
FLOAT32 fEffectScanAz4_Y;
|
||
FLOAT32 fShieldScanAz0_X;//俯仰屏蔽
|
||
FLOAT32 fShieldScanAz0_Y;
|
||
UBYTE8 res[200];//预留
|
||
}ARIDLL_PARMA;
|
||
|
||
|
||
#define GLB_GUIDE_TARGET_NUM 10 //支持的一次性最大引导目标个数
|
||
|
||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
// 定义操控盒到算法控制命令结构体
|
||
typedef struct tagGlbPCCommand // BYTES: 15*2=30
|
||
{
|
||
// 外部下发系统工作状态 by wcw04046 @ 2021/12/06
|
||
UBYTE8 ubSysStatusCmd;
|
||
|
||
// 场景模式
|
||
UBYTE8 ubScenCmd;//对空、对地、对海、通用等
|
||
|
||
// 锁定命令字
|
||
UBYTE8 ubCmd; // 控制命令:初始化、跟踪、解锁、切换视频源、切视场,所有的命令都在这里区分
|
||
UINT16 ubCmdLast; // 上一个遥控指令
|
||
UINT32 unSetLockunFrmId; // 命令下发帧编号
|
||
BYTE8 ubSetID; // 命令特指目标编号,自动判断给-1
|
||
|
||
//-- 命令字附带参数
|
||
|
||
// 视场内锁定指令字,单一目标
|
||
UINT16 unSetLockPosX; // 锁定点目标图像坐标中心点X
|
||
UINT16 unSetLockPosY; // 锁定点目标图像坐标中心点Y
|
||
UINT16 unSetLockBoxW; // 锁定波门宽度, 目标宽度
|
||
UINT16 unSetLockBoxH; // 锁定波门高度, 目标高度
|
||
|
||
BBOOL bGuideUpDate; // 导引更新标志,多目标共享,下一次引导覆盖当前批目标
|
||
|
||
// 多目标锁定接口,最多支持10批次目标
|
||
TargetGuide target[GLB_GUIDE_TARGET_NUM];
|
||
|
||
} GLB_PCCOMMAND;
|
||
|
||
|
||
|
||
// AI识别目标
|
||
|
||
typedef struct tagobj_res // BYTES: 2*4=8
|
||
{
|
||
int x;
|
||
int y;
|
||
int w;
|
||
int h;
|
||
float ob_conf;
|
||
int cls_id;
|
||
int area;
|
||
//int id_type;
|
||
} obj_res ;
|
||
|
||
|
||
|
||
#endif
|