|
|
|
|
|
#include <stdint.h>
|
|
|
#include <memory>
|
|
|
#include <string>
|
|
|
|
|
|
//#pragma pack(1)
|
|
|
const int IMAGE_WIDTH_IR = 1280;
|
|
|
const int IMAGE_HEIGHT_IR = 1024;
|
|
|
const int IMAGE_WIDTH_VL = 1920;
|
|
|
const int IMAGE_HEIGHT_VL = 1080;
|
|
|
|
|
|
const int PARA_IR_LINE = 40; //红外参数行
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define M_ST_OBJ_NUM (100)
|
|
|
#define M_LT_OBJ_NUM (10)
|
|
|
|
|
|
typedef struct tag_Objinfo
|
|
|
{
|
|
|
float x; //中心点x
|
|
|
float y; //中心点x
|
|
|
float w; //目标宽
|
|
|
float h; //目标高
|
|
|
float score; //置信度
|
|
|
int classIndex; //类别
|
|
|
int frameID; //图像帧编号
|
|
|
int key_ID; //关键部位序号
|
|
|
}OBJ_INFO;
|
|
|
|
|
|
typedef struct tgPointXY
|
|
|
{
|
|
|
double X;
|
|
|
double Y;
|
|
|
}PointXY;
|
|
|
typedef struct tarResult
|
|
|
{
|
|
|
unsigned char nObjID; //目标编号,从1开始,最大值为目标关联后目标数目
|
|
|
double tLon; //目标经度
|
|
|
double tLat; //目标纬度
|
|
|
double tH; //目标高度
|
|
|
double tX; //地心地固坐标系:X
|
|
|
double tY; //地心地固坐标系:Y
|
|
|
double tZ; //地心地固坐标系:Z
|
|
|
double tSpeedX; //目标X方向速度
|
|
|
double tSpeedY; //目标Y方向速度
|
|
|
double tSpeedZ; //目标Z方向速度
|
|
|
double Speed; //目标的合速度
|
|
|
double tServoAz; //地理引导伺服输出方位角
|
|
|
double tServoPt; //地理引导伺服输出俯仰角
|
|
|
double ENUPole_Az; //北天东地理极坐标—方位角
|
|
|
double ENUPole_Pt; //北天东地理极坐标—俯仰角
|
|
|
double preDis; //线性预测激光测距值
|
|
|
}tarResult;
|
|
|
|
|
|
|
|
|
typedef struct stTrgOutput1
|
|
|
{
|
|
|
int nObjID; //目标编号
|
|
|
double tLon; //目标经度
|
|
|
double tLat; //目标纬度
|
|
|
double tH; //目标高度
|
|
|
double tX; //地心地固,X
|
|
|
double tY; //地心地固,Y
|
|
|
double tZ; //地心地固,Z
|
|
|
double tSpeedX; //目标X方向速度
|
|
|
double tSpeedY; //目标Y方向速度
|
|
|
double tSpeedZ; //目标Z方向速度
|
|
|
double Speed; //目标的合速度
|
|
|
double sumLon; //目标经度和
|
|
|
double sumLat; //目标纬度和
|
|
|
double sumH; //目标高度和
|
|
|
double tfLon; //目标均值滤波经度
|
|
|
double tfLat; //目标均值滤波纬度
|
|
|
double tfH; //目标均值滤波高度
|
|
|
int T; //有源定位次数
|
|
|
double BLon; //图像中B点的经度
|
|
|
double BLat; //图像中B点的纬度
|
|
|
double BH; //图像中B点的高度
|
|
|
double ALon; //图像中心点的经度
|
|
|
double ALat; //图像中心点的纬度
|
|
|
double AH; //图像中心点的高度
|
|
|
}stTrgOutput1;
|
|
|
|
|
|
typedef struct
|
|
|
{
|
|
|
uint16_t u16Gpsweek; //GPS周
|
|
|
uint32_t u32Gpssec; //GPS秒
|
|
|
float fAz; //偏航角0~360
|
|
|
float fPt; //俯仰角-90~90
|
|
|
float fRol; //横滚角-180~180
|
|
|
double i32Lat; //纬度-90~90 比例系数1E-7
|
|
|
double i32Lon; //经度-180~180 比例系数1E-7
|
|
|
float i32Height; //高度比例系数0.001
|
|
|
float fEspeed; //东向速度m/s +/-250
|
|
|
float fNspeed; //北向速度m/s +/-250
|
|
|
float fSkyspeed; //天向速度m/s +/-250
|
|
|
double dGyroX; //罗盘X轴角速度 m/s
|
|
|
double dGyroY; //罗盘Y轴角速度 m/s
|
|
|
double dGyroZ; //罗盘Z轴角速度 m/s
|
|
|
char hour; //时
|
|
|
char minute; //分
|
|
|
char second; //秒
|
|
|
int millsec; //毫秒
|
|
|
}INS_DATA1;
|
|
|
|
|
|
// 目标跟踪状态
|
|
|
typedef enum tagTrackingStatus1
|
|
|
{
|
|
|
xNOT_TRACKING = 0,//未跟踪
|
|
|
xSTABLE_TRACKING = 1,//稳跟
|
|
|
xMEM_TRACKING = 2//记忆跟踪
|
|
|
}TrackingStatus1;
|
|
|
|
|
|
typedef struct tagRect32S1 //BYTES: 4*4=16
|
|
|
{
|
|
|
int x; /*> 左上点x坐标 */
|
|
|
int y; /*> 左上点y坐标 */
|
|
|
int w; /*> 矩形宽度 */
|
|
|
int h; /*> 矩形高度 */
|
|
|
}RECT32S1;
|
|
|
|
|
|
// 尺度模式
|
|
|
typedef enum tagSizeType1
|
|
|
{
|
|
|
xunKnown, //不确定目标或未识别尺寸类型
|
|
|
xDimTarget, //弱小目标
|
|
|
xSmallTarget, //小目标
|
|
|
xMiddleTarget, //临界目标
|
|
|
xAreaTarget //面目标
|
|
|
}SizeType1;
|
|
|
|
|
|
|
|
|
// 目标检测算法标识
|
|
|
typedef enum tagemObjSrc1
|
|
|
{
|
|
|
xArith_DST = 1, // 检测来源--小目标
|
|
|
xArith_DAT = 2, // 检测来源--面目标
|
|
|
xArith_AI = 3, // 检测来源--AI检测
|
|
|
xArith_KCF = 4, // 检测来源--KCF
|
|
|
xArith_TLD = 5, // 检测来源--TLD
|
|
|
xArith_Manual = 6,
|
|
|
xArith_SiamRPN = 7, // 检测来源--SiamRPN
|
|
|
xArith_AIMap = 8 // 检测来源--AI检测映射
|
|
|
}emObjSrc1;
|
|
|
|
|
|
typedef struct tagARIDLL_OBJINFO1
|
|
|
{
|
|
|
//*****1.目标状态信息*****
|
|
|
int nFrameId; //目标当前信息所对应的帧编号
|
|
|
unsigned char unObjStatus; //目标搜索状态信息,更新/新增/删除
|
|
|
unsigned char bMainTracked; //目标是否为主跟踪目标
|
|
|
TrackingStatus1 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; //目标类型
|
|
|
|
|
|
// 如果处于跟踪状态,则输出下列值
|
|
|
RECT32S1 SA_SrBox;//小面目标跟踪波门
|
|
|
SizeType1 SA_SizeType;//尺度信息
|
|
|
RECT32S1 KCF_SrBox;//KCF波门
|
|
|
RECT32S1 TLD_SrBox;//TLD波门
|
|
|
float fConf;//跟踪置信度
|
|
|
emObjSrc1 ArithSrc;//跟踪算法来源,决策后
|
|
|
|
|
|
unsigned char byte[20];//预留
|
|
|
|
|
|
//-----------------------------------------------//
|
|
|
bool MoveStatus; // 运动状态,true--运动 false -- 静止
|
|
|
|
|
|
}ARIDLL_OBJINFO1;
|
|
|
|
|
|
|
|
|
|
|
|
//////////////////////////
|
|
|
//地理引导信息
|
|
|
typedef struct
|
|
|
{
|
|
|
double fLon; //载机经度
|
|
|
double fLat; //载机纬度
|
|
|
double fWGS_H; //载机高度
|
|
|
double fPlatAz; //载机航向角
|
|
|
double fPlatPt; //载机俯仰角
|
|
|
double fPlatRoll; //载机横滚角
|
|
|
double fServoAz; //伺服方位角
|
|
|
double fServoPt; //伺服俯仰角
|
|
|
double x; //CGCS直角坐标x
|
|
|
double y; //CGCS直角坐标y
|
|
|
double z; //CGCS直角坐标z
|
|
|
double Distance; //激光测距值
|
|
|
double tLon; //目标经度(标定点真值)
|
|
|
double tLat; //目标纬度(标定点真值)
|
|
|
double tH; //目标高度(标定点真值)
|
|
|
}GeogGuideInfo;
|
|
|
|
|
|
|
|
|
//目标变化信息
|
|
|
typedef struct
|
|
|
{
|
|
|
char change[20];
|
|
|
float x1;
|
|
|
float y1;
|
|
|
float x2;
|
|
|
float y2;
|
|
|
}variationInfo;
|
|
|
|
|
|
//跟踪目标信息
|
|
|
|
|
|
|
|
|
|
|
|
//跟踪目标信息
|
|
|
typedef struct tagxARIDLL_OUTPUT
|
|
|
{
|
|
|
int nTimeStamp; //当前帧时间戳(透传),单位:毫秒
|
|
|
int nSysMode; // 系统工作模式(透传)
|
|
|
int nFrmNum; //处理帧计数
|
|
|
|
|
|
int nStatus; //工作状态--待命/检测/跟踪/丢失状态信息等
|
|
|
|
|
|
//目标检测(短时航迹点,用于用户指示)
|
|
|
int nAlarmObjCnts; //当前帧告警目标总个数
|
|
|
ARIDLL_OBJINFO1 stAlarmObjs[M_ST_OBJ_NUM]; //检测目标信息数组
|
|
|
|
|
|
//目标跟踪(长时航迹点,第0个为主目标送伺服跟踪) //锁定主跟踪
|
|
|
int nTrackObjCnts; //跟踪目标个数
|
|
|
ARIDLL_OBJINFO1 stTrackers[M_LT_OBJ_NUM]; //跟踪器输出数组
|
|
|
|
|
|
}xTRACK_OUTPUT;
|
|
|
|
|
|
//目标融合识别信息
|
|
|
typedef struct tagOBJINFO_RECT
|
|
|
{
|
|
|
float nx; // 目标框中心点图像坐标x
|
|
|
float ny; // 目标框中心点图像坐标y
|
|
|
float nW; // 目标宽度
|
|
|
float nH; // 目标高度
|
|
|
float fconfidence; // 目标识别置信度
|
|
|
int class_id; // 目标类别
|
|
|
}OBJINFO_RECT1;
|
|
|
|
|
|
//地理引导结果
|
|
|
typedef struct stGuide
|
|
|
{
|
|
|
double Yaw1; //伺服方位(解1)
|
|
|
double Pitch1; //伺服俯仰(解1)
|
|
|
double Yaw2; //伺服方位(解2)
|
|
|
double Pitch2; //伺服俯仰(解2)
|
|
|
double ro; //目标和载机间直线距离(激光测距理论值)
|
|
|
}Guide;
|
|
|
|
|
|
//定位结果
|
|
|
typedef struct stTrgOutput2
|
|
|
{
|
|
|
unsigned char nObjID; //目标编号
|
|
|
double tLon; //目标经度
|
|
|
double tLat; //目标纬度
|
|
|
double tH; //目标高度
|
|
|
double tX; //地心地固,X
|
|
|
double tY; //地心地固,Y
|
|
|
double tZ; //地心地固,Z
|
|
|
double tSpeedX; //目标X方向速度
|
|
|
double tSpeedY; //目标Y方向速度
|
|
|
double tSpeedZ; //目标Z方向速度
|
|
|
double Speed; //目标的合速度
|
|
|
}stTrgOutput2;
|
|
|
|
|
|
typedef struct tagFusionSpeed32F //BYTES: 2*4=8
|
|
|
{
|
|
|
float vx; //x方向速度
|
|
|
float vy; //y方向速度
|
|
|
float vz; //z方向速度
|
|
|
}SPEEDXYZ32F;
|
|
|
|
|
|
typedef struct tagPoint3D
|
|
|
{
|
|
|
double x; //<2F><>άֱ<CEAC><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵx<CFB5><78><EFBFBD><EFBFBD>
|
|
|
double y; //<2F><>άֱ<CEAC><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵy<CFB5><79><EFBFBD><EFBFBD>
|
|
|
double z; //<2F><>άֱ<CEAC><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵz<CFB5><7A><EFBFBD><EFBFBD>
|
|
|
} POINT_3D;
|
|
|
|
|
|
typedef struct tagPoint2S
|
|
|
{
|
|
|
short x; //<2F><>άͼ<CEAC><CDBC>x<EFBFBD><78><EFBFBD><EFBFBD>
|
|
|
short y; //<2F><>άͼ<CEAC><CDBC>y<EFBFBD><79><EFBFBD><EFBFBD>
|
|
|
} POINT_2S;
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
typedef struct tagPoint3F
|
|
|
{
|
|
|
float x; //<2F><>άֱ<CEAC><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵx<CFB5><78><EFBFBD><EFBFBD>
|
|
|
float y; //<2F><>άֱ<CEAC><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵy<CFB5><79><EFBFBD><EFBFBD>
|
|
|
float z; //<2F><>άֱ<CEAC><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵz<CFB5><7A><EFBFBD><EFBFBD>
|
|
|
} POINT_3F;
|
|
|
//告警目标信息
|
|
|
typedef struct
|
|
|
{
|
|
|
unsigned int uiTargetTimeTag; //时间标签
|
|
|
unsigned short usMissleIdx; //标识告警目标索引,目标编号,(1~255)
|
|
|
unsigned short usMissleBatchNum; //目标批号,系统统一编号
|
|
|
unsigned short usGuideDetectState; //被引导红外探测状态 0:无效 1:成功
|
|
|
unsigned short usQuickWarningTag; //快速目标告警标识,0=NA,1:快速告警2:自主告警
|
|
|
short sAzimuthAng; //目标方位角,单位0.01°,取值范围-180°~+180°
|
|
|
unsigned short usAzimuthAngErrorAbs; //方位角与均值的误差绝对值,单位:0.01°
|
|
|
short sPitchingAng; //目标俯仰角,单位0.01°,取值范围-90°~+90°
|
|
|
unsigned short usPitchingAngErrorAbs; //俯仰角与估计均值的误差绝对值,单位:0.01°
|
|
|
unsigned char ucTargetType; //目标类型,0=NA,1=导弹,2=未知
|
|
|
unsigned char ucSpatialAttribute; //空间属性,0=NA,1=空中,2=地面
|
|
|
unsigned char ucIsActiveOrPassiveStage; //主被动状态,0=NA,1=主动段,2=被动段
|
|
|
unsigned char ucNewOrOld; //目标新旧标记 0=旧目标 1=新目标
|
|
|
unsigned char ucTargetSize; //目标大小(尺寸)
|
|
|
unsigned short usTargetEnergy; //目标能量
|
|
|
|
|
|
POINT_2S pPos; //目标位置(图像坐标)
|
|
|
POINT_3F pPos3D; //目标映射到球面上的三维空间坐标
|
|
|
unsigned short usPlace; //小目标坐标位于哪一副图像
|
|
|
unsigned short usPipeIndex; //告警目标所在的管道序号
|
|
|
unsigned char ucIsNewAlarm; //是否为新的告警,0为否,1为是
|
|
|
unsigned char ucOutputAlarm; //待输出告警,0表示不是告警,1表示超出16个小于32个的候选告警目标,2表示为筛选的四个告警目标(20ms),3表示为上报的告警目标(100ms)
|
|
|
short sAlarmTypeFlag; //告警类型标记
|
|
|
|
|
|
SPEEDXYZ32F fPlaneSpeedXYZ; //载体地心直角坐标系下的绝对速度
|
|
|
float fSpeedAz; //方位速度信息(相对载体)
|
|
|
float fSpeedPt; //俯仰速度信息(相对载体)
|
|
|
SPEEDXYZ32F fObjSpeedXYZ; //目标在地心直角坐标系下的绝对速度
|
|
|
float nDistance; //告警目标距离估计值
|
|
|
}ALARM_PARA;
|
|
|
|
|
|
typedef struct
|
|
|
{
|
|
|
float fAz;
|
|
|
float fPz;
|
|
|
float fservoAzSpeed; //当前帧伺服方位角速度,横滚角速度
|
|
|
float fservoPtSpeed; //当前帧伺服俯仰角速度
|
|
|
}Servo_Control;
|
|
|
|
|
|
typedef struct stdWgs84GPS
|
|
|
{
|
|
|
double Lon; //<2F><><EFBFBD><EFBFBD>
|
|
|
double Lat; //γ<><CEB3>
|
|
|
double Height; //<2F>߶<EFBFBD>
|
|
|
}STD_WGS84_GPS;
|
|
|
typedef struct stdSpeed //BYTES: 2*4=8
|
|
|
{
|
|
|
double vx; //x<><78><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
|
|
|
double vy; //y<><79><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
|
|
|
double vz; //z<><7A><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
|
|
|
}STD_SPEED;
|
|
|
typedef struct stdPoint64d
|
|
|
{
|
|
|
double X; //<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵX
|
|
|
double Y; //<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵY
|
|
|
double Z; //<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵZ
|
|
|
}STD_POINT64D;
|
|
|
typedef struct stdFilter_State
|
|
|
{
|
|
|
//<2F><>صع̵<D8B9><CCB5><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵϵ
|
|
|
STD_WGS84_GPS nKalManBLH; //Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵBLH<4C><48>WGS84<38><34><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
|
|
|
STD_POINT64D pfKalmanPos; //Ŀ<><C4BF><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> //BYTES: 2*4=8
|
|
|
STD_WGS84_GPS nKalManBLHNext; //Ŀ<><C4BF><EFBFBD><EFBFBD>һ֡<D2BB><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵBLH<4C><48>WGS84<38><34><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
|
|
|
STD_POINT64D pfKalmanPosNext; //Ŀ<><C4BF><EFBFBD><EFBFBD>һ֡<D2BB>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> //BYTES: 2*4=8
|
|
|
STD_POINT64D fKalmanSpeed; //Ŀ<><C4BF><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD> x\y\z<><7A><EFBFBD><EFBFBD> //BYTES: 2*4=8
|
|
|
STD_POINT64D fKalmanAccSpeed; //Ŀ<><C4BF><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ٶ<EFBFBD> x\y\z<><7A><EFBFBD><EFBFBD> //BYTES: 2*4=8
|
|
|
}STD_FILTER_ST;
|
|
|
|
|
|
typedef struct stdServo
|
|
|
{
|
|
|
double fAz; //方位角
|
|
|
double fPt; //俯仰角
|
|
|
double nDistance; //目标激光距离
|
|
|
}STD_SERVO;
|
|
|
typedef struct stdFilterVideoOutput //BYTES: 3*1 + 1*2 + 7*4 + 3*8 = 57
|
|
|
{
|
|
|
unsigned char nOutputNums; //输出滤波目标个数
|
|
|
bool bObject; //标识目标是否已被创建。1-目标已创建,0-目标未创建
|
|
|
unsigned int unFrmTime; //目标截获时刻
|
|
|
unsigned int unFrmID; //帧编号
|
|
|
//目标滤波信息
|
|
|
STD_WGS84_GPS nObjBLH; //大地坐标系wgs84 目标经纬高
|
|
|
STD_SPEED pfObjSpeed; //目标地心直角坐标系下的绝对速度
|
|
|
STD_POINT64D pfObjCurrent; //目标的大地直角空间坐标系
|
|
|
STD_FILTER_ST pfObj_filterInfo; //目标估计状态
|
|
|
//载体信息
|
|
|
STD_WGS84_GPS nPlatBLH; //大地坐标系wgs84 目标经纬高
|
|
|
STD_SPEED pfPlatSpeed; //目标地心直角坐标系下的绝对速度
|
|
|
STD_POINT64D pfPlatCurrent; //目标的大地直角空间坐标系
|
|
|
STD_FILTER_ST pfPlat_filterInfo; //载体估计状态
|
|
|
//估计信息
|
|
|
STD_SERVO pfObjZtAangle; //目标在载体坐标的指向
|
|
|
STD_SERVO pfObjServeAangle; //目标在伺服坐标的指向
|
|
|
//预测信息
|
|
|
STD_SERVO pfObjZtAangleNext; //目标在载体坐标的指向
|
|
|
STD_SERVO pfObjServeAangleNext; //目标在伺服坐标的指向
|
|
|
//量测信息
|
|
|
STD_SERVO pfServeAangle; //伺服码盘值 //输入值【可不移植】
|
|
|
|
|
|
//长时间外推
|
|
|
STD_SERVO pfServeAanglePredict[10]; //伺服长时间外推,10s
|
|
|
STD_WGS84_GPS nPlatPreictBLH[10];
|
|
|
STD_WGS84_GPS nObjPredictBLH[10];
|
|
|
}STD_FILTER_VIDEOOUTPUT;
|
|
|
typedef struct Angle2DSpeed32f
|
|
|
{
|
|
|
double fPt;//俯仰角
|
|
|
double fAz;//方位角
|
|
|
}ANGLE2DSPEED32F;
|
|
|
|
|
|
//2.大地坐标系WGS84_GPS结构体
|
|
|
typedef struct tagGPS
|
|
|
{
|
|
|
float Lon; //经度
|
|
|
float Lat; //纬度
|
|
|
float Height; //高度
|
|
|
} WGS84_GPS;
|
|
|
|
|
|
//载机姿态角度结构体
|
|
|
typedef struct tagAngle3D32F
|
|
|
{
|
|
|
float fAz; //偏航角
|
|
|
float fPt; //俯仰角
|
|
|
float fRt; //滚转角
|
|
|
}ANGLE3D32F;
|
|
|
//融合信息
|
|
|
typedef struct tagFusionTarget
|
|
|
{
|
|
|
bool bOccupy; //标识管道是否已经被占用
|
|
|
unsigned char nTargetID; //目标批号
|
|
|
unsigned char nObjClassID; //目标类别
|
|
|
float score; //融合后目标识别的置信度
|
|
|
|
|
|
//目标信息(未定位时,以下3个结构体变量输出为0)
|
|
|
WGS84_GPS ObjBLH; //目标大地坐标系BLH(WGS84)信息
|
|
|
POINT_3D ObjXYZ; //目标地心直角坐标系下XYZ
|
|
|
SPEEDXYZ32F fObjSpeedXYZ; //目标地心直角坐标系下的绝对速度
|
|
|
|
|
|
//本机载机信息
|
|
|
WGS84_GPS PlaneBLH; //载机大地坐标系BLH(WGS84)信息)
|
|
|
POINT_3D fPlanePnt; //本机位置
|
|
|
SPEEDXYZ32F sfPlaneSpeed; //本机速度
|
|
|
ANGLE3D32F fPlaneAngle; //载机姿态(机体坐标系)
|
|
|
|
|
|
//目标融合位置信息:地固地心坐标系
|
|
|
POINT_3D ptBornPos; //目标初始位置
|
|
|
POINT_3D ptPredictPos; //目标预测位置
|
|
|
|
|
|
//只能提供已定位的本机以及外机的光电目标信息,外机未定位目标无法提供相对本机的方位、俯仰
|
|
|
//(缺少距离信息,或这友机信息只提供定位后的目标信息)
|
|
|
float fAz; //目标方位角(相对于载体,定位目标的相对角度)
|
|
|
float fPt; //目标俯仰角(相对于载体)
|
|
|
ANGLE2DSPEED32F sfSpeed; //目标速度
|
|
|
//ANGLE2DSPEED32F sfPredictAngle; //目标角度位置
|
|
|
bool bLocation; //已定位数据标志位定位模块可以提供
|
|
|
bool JMBMonitor; //敌方是否投放干扰弹(透传)
|
|
|
bool MissMonitor; //敌方是否发射导弹(透传)
|
|
|
}FUSION_OBJECT;
|
|
|
|
|
|
//目标意图
|
|
|
typedef struct TarGetPurpose
|
|
|
{
|
|
|
unsigned char ucFoeState; //敌机状态,具体为上面几种宏定义的状态
|
|
|
float fConfidence; //当前意图判断的置信度(作为备用字段)
|
|
|
}TarGetPurpose;
|
|
|
|
|
|
//意图结果
|
|
|
typedef struct FusedDataDst
|
|
|
{
|
|
|
unsigned char ucNumber; //敌目标编号
|
|
|
unsigned char ucClassType; //敌目标类型, 1防空导弹车,2雷达车,3高炮,4飞机,5是装甲、汽车、油罐车等地面车辆
|
|
|
|
|
|
//事件信息
|
|
|
bool bFoeRadarIsOpen; //雷达是否展开
|
|
|
bool bFoeMissileIsOpen; //导弹车是否竖起
|
|
|
bool bFoeCannonIsopen; //高炮是否竖起
|
|
|
bool bFoeCarsIsAround; //高炮或防空导弹是否散开
|
|
|
bool bFoeCarsIsArrange; //高炮或防空导弹是否成一字型
|
|
|
bool bFoeIsFire; //敌是否发射导弹或高炮
|
|
|
float fFoeSpeed; //敌速度
|
|
|
float fFoeDistance; //敌我距离
|
|
|
float fAzimuthAng; //目标方位角
|
|
|
float fPitchingAng; //目标俯仰角
|
|
|
POINT_3D FoeLocation; //目标坐标
|
|
|
POINT_3D ObjPrePath[10]; //目标预测轨迹
|
|
|
// POINT_3D FoeGroundLoc[10]; //地面遭遇位置
|
|
|
|
|
|
float fOurPlaneSpeed; //我机飞行速度
|
|
|
bool bOurPlaneSearchRadar; //我机是否开启搜索雷达
|
|
|
bool bOurPlaneTrackRadar; //我机是否开启跟踪雷达
|
|
|
bool bOurMissile; //我机是否发射导弹
|
|
|
POINT_3D OurPlaneLocation; //我机坐标
|
|
|
|
|
|
TarGetPurpose ObjPurPose; //目标意图
|
|
|
}FusedDataDst;
|
|
|
|
|
|
|
|
|
|
|
|
//威胁等级排序
|
|
|
typedef struct ParaThreatOutput
|
|
|
{
|
|
|
char bDangerLevel; //目标威胁等级(编号为1,目标威胁等级最高)
|
|
|
char uObjID; //威胁目标对应的编号
|
|
|
float fThreat; //目标威胁程度(值越大等级越小,即威胁程度越高)
|
|
|
}PTOutput;
|
|
|
|
|
|
|
|
|
//激光测距值
|
|
|
typedef struct
|
|
|
{
|
|
|
int type; //激光测距类型
|
|
|
int freq; //激光测距频率
|
|
|
double laserDistance; //激光测距值
|
|
|
}LaserInfo;
|
|
|
|
|
|
|
|
|
typedef enum tagGLB_VIDE_TYPE
|
|
|
{
|
|
|
xGLB_VIDEO_IR_SW = 0x01, //红外短波
|
|
|
xGLB_VIDEO_IR_MW = 0x02, //红外中波
|
|
|
xGLB_VIDEO_IR_LW = 0x03, //红外长波
|
|
|
xGLB_VIDEO_VL = 0x04 //电视
|
|
|
}GLB_VIDE_TYPE;
|
|
|
|
|
|
//相机信息
|
|
|
typedef struct
|
|
|
{
|
|
|
GLB_VIDE_TYPE unVideoType; //视频源类型
|
|
|
float dx; //光轴与图像中心像素偏差x
|
|
|
float dy; //光轴与图像中心像素偏差y
|
|
|
int ImgWidth; //图像分辨率宽
|
|
|
int ImgHeight; //图像分辨率高
|
|
|
float nPixleSize; //像元尺寸 单位:um
|
|
|
float nFocal; //相机焦距 单位:mm
|
|
|
}CamInfo1;
|
|
|
|
|
|
|
|
|
//载机信息
|
|
|
typedef struct
|
|
|
{
|
|
|
unsigned char nPlaneID; //载机ID
|
|
|
double B; //纬度
|
|
|
double L; //经度
|
|
|
double H; //高
|
|
|
double fRoll; //横滚角
|
|
|
double fPitch; //俯仰角
|
|
|
double fYaw; //方位角
|
|
|
}AirCraftInfo1;
|
|
|
|
|
|
|
|
|
// //伺服信息
|
|
|
// typedef struct
|
|
|
// {
|
|
|
// float fServoAz; //当前帧伺服方位角
|
|
|
// float fServoPt; //当前帧伺服俯仰角
|
|
|
// float fServoAzSpeed; //当前帧伺服方位角速度
|
|
|
// float fServoPtSpeed; //当前帧伺服俯仰角速度
|
|
|
// }ServoInfo1;
|
|
|
//UTC时间
|
|
|
typedef struct TIME
|
|
|
{
|
|
|
unsigned short year; //年,0-65535
|
|
|
unsigned char month; //月,1-12
|
|
|
unsigned char day; //日,1-31
|
|
|
unsigned char hour; //时,0-23
|
|
|
unsigned char minute; //分,0-59
|
|
|
unsigned char second; //秒,0-59
|
|
|
unsigned short msecond; //毫秒,0-990,LSB=10ms
|
|
|
}UTC_TIME;
|
|
|
|
|
|
//跟踪目标输出结构体
|
|
|
typedef struct tagPARALINE_OUTPUT
|
|
|
{
|
|
|
unsigned int index;
|
|
|
CamInfo1 caminfo; //相机信息
|
|
|
AirCraftInfo1 airCraftInfo; //载机信息
|
|
|
Servo_Control servoInfo; //伺服信息
|
|
|
GeogGuideInfo stGuideInfo; //地理引导信息
|
|
|
LaserInfo stLaserInfo; //激光测距
|
|
|
|
|
|
|
|
|
//*************************** 各模块算法结果与状态 ****************************
|
|
|
uint32_t str_identifyIR_obj_cnt; //红外图像智能识别目标个数
|
|
|
OBJ_INFO str_identifyIR_objs[50]; //红外图像智能识别目标结果
|
|
|
uint32_t str_identifyVL_obj_cnt; //可见光图像智能识别目标个数
|
|
|
OBJ_INFO str_identifyVL_objs[50]; //可见光图像智能识别目标结果
|
|
|
|
|
|
uint32_t m_segmentIR_obj_cnt; //红外地物分类个数
|
|
|
OBJ_INFO m_segmentIR_objs[10]; //红外地物分类目标
|
|
|
uint32_t m_segmentVL_obj_cnt; //可见光地物分类个数
|
|
|
OBJ_INFO m_segmentVL_objs[10]; //可见光地物分类目标
|
|
|
|
|
|
// uint32_t m_ChangeinfoIR_obj_cnt; //红外变化检测个数
|
|
|
// variationInfo m_ChangeinfoIR_objs[30]; //红外变化检测目标
|
|
|
// uint32_t m_ChangeinfoVL_obj_cnt; //可见光变化检测个数
|
|
|
// variationInfo m_ChangeinfoVL_objs[30]; //可见光变化检测目标
|
|
|
|
|
|
|
|
|
xTRACK_OUTPUT m_trackIR_objs; //红外跟踪目标结果
|
|
|
xTRACK_OUTPUT m_trackVL_objs; //可见光跟踪目标结果
|
|
|
|
|
|
int ObjCnts_IR; //目标总个数(融合后红外视场内)
|
|
|
OBJINFO_RECT1 AIDetFusion_IR[50]; //红外图上AI融合结果
|
|
|
int ObjCnts_VL; //目标总个数(融合后可见光视场内)
|
|
|
OBJINFO_RECT1 AIDetFusion_VL[50]; //可见光图上AI融合结果
|
|
|
|
|
|
Guide m_geogGuideInfo; //地理引导结果
|
|
|
|
|
|
uint32_t m_activeLoc_cnt; //多目标有源定位个数
|
|
|
stTrgOutput1 m_mulActiveLoc[50]; //多目标定位结果
|
|
|
|
|
|
stTrgOutput1 m_singleActiveLoc; //单目标有源定位测速结果
|
|
|
|
|
|
stTrgOutput1 m_passiveLocate[50]; //无源定位结果
|
|
|
|
|
|
// uint32_t m_Alarm_obj_cnt; //红外告警目标个数
|
|
|
// ALARM_PARA m_Alarm_Papa[16]; //红外告警目标结果
|
|
|
|
|
|
// uint32_t m_Filter_obj_cnt; //航迹滤波目标个数
|
|
|
// STD_FILTER_VIDEOOUTPUT objFilterRes[50]; //航迹滤波结果
|
|
|
|
|
|
// unsigned int nFusionNumber; //融合后目标总个数
|
|
|
// FUSION_OBJECT objFusionList[60]; //融合输出结果
|
|
|
|
|
|
// int targetPurpnum; //目标意图个数
|
|
|
// FusedDataDst fusedatasrc[50]; //意图识别结果(输入透传输出)
|
|
|
|
|
|
// int m_threadLevel_cnt; //威胁等级目标个数
|
|
|
// PTOutput m_threadLevel_obj[100]; //威胁等级排序结果
|
|
|
|
|
|
UTC_TIME utcTime_laser;
|
|
|
UTC_TIME utcTime_ir;
|
|
|
|
|
|
}PARALINE_OUTPUT;
|
|
|
|
|
|
|
|
|
typedef struct S729paras_VL
|
|
|
{
|
|
|
//unsigned char IMG_VL[IMAGE_WIDTH_VL * IMAGE_HEIGHT_VL * (3 / 2)];
|
|
|
PARALINE_OUTPUT Paras_VL;
|
|
|
|
|
|
}Paras_VL;
|
|
|
|
|
|
typedef struct S729paras_IR
|
|
|
{
|
|
|
//unsigned char IMG_IR[IMAGE_WIDTH_IR * IMAGE_HEIGHT_IR * 2];
|
|
|
PARALINE_OUTPUT Paras_IR;
|
|
|
|
|
|
}Paras_IR;
|
|
|
|
|
|
//TRACK_OUTPUT outputIR = { 0 };
|
|
|
//TRACK_OUTPUT outputVL = { 0 };
|
|
|
|
|
|
|
|
|
//#pragma pack()
|