|
|
|
|
|
#pragma once
|
|
|
|
|
|
#ifndef _GLOBAL_MACRO_H_
|
|
|
|
|
|
#define _GLOBAL_MACRO_H_
|
|
|
|
|
|
#include <math.h>
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
#include <memory.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//数据类型重命名
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
typedef bool BBOOL;
|
|
|
|
|
|
typedef unsigned char UBYTE8;
|
|
|
|
|
|
//typedef 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;
|
|
|
|
|
|
typedef unsigned char PIXELTYPE_TV; //8位数据
|
|
|
|
|
|
typedef unsigned char PIXELTYPE_RGB; //8位数据
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
typedef unsigned short PIXELTYPE; //16位wu符号数据
|
|
|
|
|
|
#endif
|
|
|
|
|
|
typedef short PIXELTYPE_Y; //16位符号数据
|
|
|
|
|
|
typedef SINT32 PIXELDISP;
|
|
|
|
|
|
typedef short POS16S;
|
|
|
|
|
|
typedef float POS32F;
|
|
|
|
|
|
typedef short WH16S;
|
|
|
|
|
|
typedef float WH32F;
|
|
|
|
|
|
// typedef bool BOOL;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//--宏定义
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
|
|
//全局使用
|
|
|
|
|
|
#define TRUE 1 //真1
|
|
|
|
|
|
#define FALSE 0 //假0
|
|
|
|
|
|
#define PI 3.14159265f //圆周率
|
|
|
|
|
|
#define EPSILON 0.0001f //浮点数精度
|
|
|
|
|
|
// #define MIN(a, b) ((a) < (b) ? (a) : (b)) //取a、b两者中的最小值
|
|
|
|
|
|
// #define MAX(a, b) ((a) > (b) ? (a) : (b)) //取a、b两者中的最大值
|
|
|
|
|
|
#define MINMAX_VAR(a, b, c) MAX(MIN(b, c), MIN(a, MAX(b, c))) //取a、b、c三者中位于中间大小的值,即非最大值亦非最小值
|
|
|
|
|
|
#define MINMAX_NUM(a, b, c) MAX(b, MIN(a, c)) //当b<=c时,将a限制在b和C之间;当b>c时,取b
|
|
|
|
|
|
//#define ABS(x) ((x) < 0 ? -(x) : (x)) //取x的绝对值
|
|
|
|
|
|
#define ROUND(x) ((SINT32)((x) - ((x)>=0?0:1) + 0.5f)) //取整 - 对x四舍五入取整
|
|
|
|
|
|
#define FLOOR(a) (SINT32)(a) //取整 - 小数位截断
|
|
|
|
|
|
#define WIDTHBITS(width) ((width * 24 + 31) / 32 * 4) //PC平台中,求图像每行的bit数
|
|
|
|
|
|
//#define WIDTHBITS(width) ((SINT32)(width / 4) + 1) //DSP平台中,求图像每行的bit数(=有效图像宽度/4+1,因为四个像素一个32位,两边增加了4个黑点)
|
|
|
|
|
|
// #define RGB(r, g, b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16))) //设置RGB颜色值
|
|
|
|
|
|
#define GetRVALUE(rgb) ((SINT32)(rgb)) //取RGB颜色值中r通道值
|
|
|
|
|
|
|
|
|
|
|
|
#define PI2 6.2831853f //2*pi
|
|
|
|
|
|
|
|
|
|
|
|
#define GLB_IMG_WIDTH_TV 1920
|
|
|
|
|
|
#define GLB_IMG_HEIGHT_TV 1280
|
|
|
|
|
|
|
|
|
|
|
|
#define GLB_IMG_WIDTH_IR 1280
|
|
|
|
|
|
#define GLB_IMG_HEIGHT_IR 1024
|
|
|
|
|
|
|
|
|
|
|
|
#define DETECT_MAX_NUM 5
|
|
|
|
|
|
|
|
|
|
|
|
#define DYT_STATUS_TURNONINIT 0 //DYT上电初始化/退出跟踪初始化
|
|
|
|
|
|
#define DYT_STATUS_SEARCH 1 //DYT搜索阶段
|
|
|
|
|
|
#define DYT_STATUS_STARE 2 //DYT初次截获锁定,跟踪器初始化
|
|
|
|
|
|
#define DYT_STATUS_TRACK 3 //DYT跟踪阶段
|
|
|
|
|
|
#define DYT_STATUS_LOST 4 //DYT跟踪丢失阶段
|
|
|
|
|
|
#define DYT_STATUS_RESTARE 5 //DYT十字光标锁定截获
|
|
|
|
|
|
#define DYT_STATUS_MEMORY 6 //DYT记忆跟踪阶段
|
|
|
|
|
|
#define DYT_STATUS_BLINDLOST 7 //DYT盲区丢失阶段
|
|
|
|
|
|
#define DYT_STATUS_STABILIZE 8 //DYT稳像阶段(二次截获状态)
|
|
|
|
|
|
#define DYT_STATUS_VSTRACK 9 //DYT跟踪器指向阶段
|
|
|
|
|
|
#define DYT_STATUS_LOCKMOVE 10 //DYT拖动状态
|
|
|
|
|
|
|
|
|
|
|
|
#define TRACK_CLEAR 0 //清零指令
|
|
|
|
|
|
#define TRACK_INIT 1 //初始化指令
|
|
|
|
|
|
#define TRACK_TRACK 2 //跟踪指令
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define MANMADEMODE_BRFOREPK 11 //人工截获,射前给宽高中心点
|
|
|
|
|
|
#define MANMADEMODE_AFTERPK 12 //人工截获,射后给中心点位置
|
|
|
|
|
|
#define MANMADEMODE_SUSTARGET 13 //手动截获模式,疑似目标通过按键锁定(射前射后一样流程,合并)
|
|
|
|
|
|
|
|
|
|
|
|
#define CATCHMODE_INIT 0 //截获方式初始化
|
|
|
|
|
|
#define CATCHMODE_AI 1 //AI识别截获
|
|
|
|
|
|
#define CATCHMODE_TEMPLET 2 //模板匹配截获
|
|
|
|
|
|
#define CATCHMODE_MOTION 3 //运动目标检测截获
|
|
|
|
|
|
#define CATCHMODE_AIPLUSMOTION 4 //AI+运动目标检测截获
|
|
|
|
|
|
#define CATCHMODE_LASER 5 //激光锁定
|
|
|
|
|
|
#define CATCHMODE_AIPLUSLASER 6 //AI+激光复合模式,激光信息引导分选截获
|
|
|
|
|
|
#define CATCHMODE_TEMPLETPLUSLASER 7 //匹配+激光复合模式,激光信息引导分选截获
|
|
|
|
|
|
#define CATCHMODE_MOTIONPLUSLASER 8 //运动目标+激光复合模式,激光信息引导分选截获
|
|
|
|
|
|
#define CATCHMODE_NON 9 //解锁
|
|
|
|
|
|
#define CATCHMODE_WAIT 10 //等待状态
|
|
|
|
|
|
|
|
|
|
|
|
#define CONFIRM_TRACKS 5//确认模块存储结果最大数量
|
|
|
|
|
|
#define KCF_Track 1 //KCF跟踪算法标志量
|
|
|
|
|
|
#define Other_Track 2 //其他跟踪算法标志量
|
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
|
|
|
|
|
|
//定义目标宽高结构体--浮点型
|
|
|
|
|
|
typedef struct tagSize32F //BYTES: 3*4=12
|
|
|
|
|
|
{
|
|
|
|
|
|
FLOAT32 w; //宽度
|
|
|
|
|
|
FLOAT32 h; //高度
|
|
|
|
|
|
FLOAT32 s; //面积
|
|
|
|
|
|
}SIZE32F;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
////定义距离结构体--浮点型
|
|
|
|
|
|
//typedef struct tagDist32F //BYTES: 2*4=8
|
|
|
|
|
|
//{
|
|
|
|
|
|
// FLOAT32 dx; //x方向距离
|
|
|
|
|
|
// FLOAT32 dy; //y方向距离
|
|
|
|
|
|
//}DIST32F;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct tagPOINT16S
|
|
|
|
|
|
{
|
|
|
|
|
|
SINT16 x; //图像像素x坐标
|
|
|
|
|
|
SINT16 y; //图像像素y坐标
|
|
|
|
|
|
}POINT16S;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
|
|
//定义矩形结构体--中心点坐标及宽高、大小-整型32位
|
|
|
|
|
|
typedef struct tagCENTERRECT32S //BYTES: 4*4=16
|
|
|
|
|
|
{
|
|
|
|
|
|
SINT32 cx; //中心点x坐标
|
|
|
|
|
|
SINT32 cy; //中心点y坐标
|
|
|
|
|
|
SINT32 w; //矩形宽度
|
|
|
|
|
|
SINT32 h; //矩形高度
|
|
|
|
|
|
}CENTERRECT32S;
|
|
|
|
|
|
|
|
|
|
|
|
//定义矩形结构体--中心点坐标及宽高、大小-浮点型
|
|
|
|
|
|
typedef struct tagCENTERRECT32F //BYTES: 4*4=16
|
|
|
|
|
|
{
|
|
|
|
|
|
FLOAT32 cx; //中心点x坐标
|
|
|
|
|
|
FLOAT32 cy; //中心点y坐标
|
|
|
|
|
|
FLOAT32 w; //矩形宽度
|
|
|
|
|
|
FLOAT32 h; //矩形高度
|
|
|
|
|
|
}CENTERRECT32F;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//定义矩形结构体--左上角及右下角坐标-浮点型
|
|
|
|
|
|
typedef struct tagMINMAXRECT32F //BYTES: 4*4=16
|
|
|
|
|
|
{
|
|
|
|
|
|
FLOAT32 minX; //左上点x坐标
|
|
|
|
|
|
FLOAT32 minY; //左上点y坐标
|
|
|
|
|
|
FLOAT32 maxX; //右下点x坐标
|
|
|
|
|
|
FLOAT32 maxY; //右下点y坐标
|
|
|
|
|
|
}MINMAXRECT32F;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
|
|
//仿射变换参数
|
|
|
|
|
|
struct WarpsPara{
|
|
|
|
|
|
FLOAT32 angle;
|
|
|
|
|
|
FLOAT32 scale;
|
|
|
|
|
|
FLOAT32 shift;
|
|
|
|
|
|
FLOAT32 noise;
|
|
|
|
|
|
SINT32 num_closest;
|
|
|
|
|
|
SINT32 num_warps;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct tagMINMAXRECT
|
|
|
|
|
|
{
|
|
|
|
|
|
SINT32 maxX; //左上点
|
|
|
|
|
|
SINT32 maxY;
|
|
|
|
|
|
SINT32 minX;
|
|
|
|
|
|
SINT32 minY;
|
|
|
|
|
|
}MINMAXRECT;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
//定义目标宽高结构体--16位 //BYTES: 2*2 + 1*4=8
|
|
|
|
|
|
typedef struct tagSize16S
|
|
|
|
|
|
{
|
|
|
|
|
|
SINT16 w; //宽度
|
|
|
|
|
|
SINT16 h; //高度
|
|
|
|
|
|
SINT32 s; //面积
|
|
|
|
|
|
}SIZE16S;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//定义目标宽高结构体--32位 //BYTES: 3*4=12
|
|
|
|
|
|
typedef struct tagSize32S
|
|
|
|
|
|
{
|
|
|
|
|
|
SINT32 w; //宽度
|
|
|
|
|
|
SINT32 h; //高度
|
|
|
|
|
|
SINT32 s; //面积
|
|
|
|
|
|
}SIZE32S;
|
|
|
|
|
|
|
|
|
|
|
|
//定义矩形结构体--左上角坐标及宽高--整型32位
|
|
|
|
|
|
typedef struct tagRect32S //BYTES: 4*4=16
|
|
|
|
|
|
{
|
|
|
|
|
|
SINT32 x; //左上点x坐标
|
|
|
|
|
|
SINT32 y; //左上点y坐标
|
|
|
|
|
|
SINT32 w; //矩形宽度
|
|
|
|
|
|
SINT32 h; //矩形高度
|
|
|
|
|
|
SINT32 iFrameIdx;
|
|
|
|
|
|
}RECT32S;
|
|
|
|
|
|
|
|
|
|
|
|
//定义矩形结构体--左上角坐标及宽高--浮点型
|
|
|
|
|
|
typedef struct tagRect32F //BYTES: 4*4=16
|
|
|
|
|
|
{
|
|
|
|
|
|
FLOAT32 x; //左上点x坐标
|
|
|
|
|
|
FLOAT32 y; //左上点y坐标
|
|
|
|
|
|
FLOAT32 w; //矩形宽度
|
|
|
|
|
|
FLOAT32 h; //矩形高度
|
|
|
|
|
|
FLOAT32 cx;
|
|
|
|
|
|
FLOAT32 cy;
|
|
|
|
|
|
SINT32 iFrameIdx;
|
|
|
|
|
|
}RECT32F;
|
|
|
|
|
|
|
|
|
|
|
|
//定义坐标结构体--整型32位 //BYTES: 2*4=8
|
|
|
|
|
|
typedef struct tagPoint32S
|
|
|
|
|
|
{
|
|
|
|
|
|
SINT32 x; //图像像素x坐标
|
|
|
|
|
|
SINT32 y; //图像像素y坐标
|
|
|
|
|
|
}POINT32S;
|
|
|
|
|
|
|
|
|
|
|
|
//定义坐标结构体--浮点型
|
|
|
|
|
|
typedef struct tagPoint32F //BYTES: 2*4=8
|
|
|
|
|
|
{
|
|
|
|
|
|
FLOAT32 x; //图像像素x坐标
|
|
|
|
|
|
FLOAT32 y; //图像像素y坐标
|
|
|
|
|
|
}POINT32F;
|
|
|
|
|
|
|
|
|
|
|
|
// kcf参数结构体
|
|
|
|
|
|
typedef struct tagKcfPara // 16 + 4*19 = 92B
|
|
|
|
|
|
{
|
|
|
|
|
|
RECT32F rfBox; //跟踪框
|
|
|
|
|
|
FLOAT32 lamda; //正则项
|
|
|
|
|
|
FLOAT32 padding; //区域扩展系数
|
|
|
|
|
|
FLOAT32 output_sigma_factor; //
|
|
|
|
|
|
FLOAT32 interp_factor; //更新系数
|
|
|
|
|
|
FLOAT32 scale_step; //尺度因子
|
|
|
|
|
|
SINT32 template_size; //模板尺寸
|
|
|
|
|
|
SINT32 cell_size; //hog cell size
|
|
|
|
|
|
|
|
|
|
|
|
FLOAT32 scale; //跟踪框与tempsize的比例
|
|
|
|
|
|
SIZE32S tempsize;
|
|
|
|
|
|
SINT32 cellnumX; //tempsize对应的cell数
|
|
|
|
|
|
SINT32 cellnumY;
|
|
|
|
|
|
SINT32 featureSizeX; //特征数组宽
|
|
|
|
|
|
SINT32 featureSizeY; //特征数组高
|
|
|
|
|
|
SINT32 featureSizeZ; //特征数组通道数
|
|
|
|
|
|
|
|
|
|
|
|
SINT32 fftSizeX; //fft变换尺寸,2幂次方
|
|
|
|
|
|
SINT32 fftSizeY;
|
|
|
|
|
|
BBOOL b_kcfTerminator;//true表示无梯度
|
|
|
|
|
|
}KcfPara;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
|
|
|
|
|
FLOAT32 SNR;
|
|
|
|
|
|
FLOAT32 fCendist;
|
|
|
|
|
|
RECT32S areaRect;
|
|
|
|
|
|
FLOAT32 fScore;
|
|
|
|
|
|
BBOOL isBright;
|
|
|
|
|
|
|
|
|
|
|
|
FLOAT32 fGradMeanX;
|
|
|
|
|
|
FLOAT32 fGradMeanY;
|
|
|
|
|
|
PIXELTYPE_TV g_bCandiSegBin[40000];
|
|
|
|
|
|
FLOAT32 ObjMean;
|
|
|
|
|
|
FLOAT32 BackgroundMean;
|
|
|
|
|
|
UINT16 iExistCnt;
|
|
|
|
|
|
|
|
|
|
|
|
}CANDITARINFO;
|
|
|
|
|
|
|
|
|
|
|
|
//定义矩形结构体--左上角及右下角坐标-整型32位
|
|
|
|
|
|
typedef struct tagMINMAXRECT32S //BYTES: 4*4=16
|
|
|
|
|
|
{
|
|
|
|
|
|
SINT32 minX; //左上点x坐标
|
|
|
|
|
|
SINT32 minY; //左上点y坐标
|
|
|
|
|
|
SINT32 maxX; //右下点x坐标
|
|
|
|
|
|
SINT32 maxY; //右下点y坐标
|
|
|
|
|
|
}MINMAXRECT32S;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
|
|
|
|
|
RECT32S tararea;
|
|
|
|
|
|
UINT32 unObjPxlsCnt; //目标的象素点的个数
|
|
|
|
|
|
FLOAT32 diff_W;
|
|
|
|
|
|
FLOAT32 diff_H;
|
|
|
|
|
|
FLOAT32 diff_WH;
|
|
|
|
|
|
FLOAT32 Value;
|
|
|
|
|
|
FLOAT32 snr;
|
|
|
|
|
|
|
|
|
|
|
|
POINT32F centerpoint;
|
|
|
|
|
|
FLOAT32 centerdis;
|
|
|
|
|
|
|
|
|
|
|
|
MINMAXRECT32S mrnRect; //目标上下左右边界坐标
|
|
|
|
|
|
SIZE16S snSize; //目标宽高
|
|
|
|
|
|
FLOAT32 ObjMean;//目标均值
|
|
|
|
|
|
FLOAT32 BackgroundMean;//目标均值
|
|
|
|
|
|
FLOAT32 fObjGradMean;//目标边缘梯度均值
|
|
|
|
|
|
FLOAT32 Euc;//目标离锁定的点的距离
|
|
|
|
|
|
FLOAT32 ObjBkCon;//目标背景差
|
|
|
|
|
|
FLOAT32 contrast[4];//目标四个方向对比度
|
|
|
|
|
|
FLOAT32 SNR;
|
|
|
|
|
|
|
|
|
|
|
|
BBOOL isBright;//目标亮暗判断
|
|
|
|
|
|
BBOOL AloneFlag;//Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>
|
|
|
|
|
|
BBOOL isTarGetFlag;
|
|
|
|
|
|
UBYTE8 ubMaxSaliency;
|
|
|
|
|
|
|
|
|
|
|
|
FLOAT32 grad4Neibor[2];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>Ե<EFBFBD><D4B5>ȡ yy20200430
|
|
|
|
|
|
}TARINFORMATION;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|