252 lines
5.3 KiB
C
252 lines
5.3 KiB
C
|
|
#ifndef PICK_LAZER_WIN_H
|
||
|
|
#define PICK_LAZER_WIN_H
|
||
|
|
|
||
|
|
#include "ImgAccExport.h"
|
||
|
|
#include <stdlib.h>
|
||
|
|
#include "math.h"
|
||
|
|
//#include "MaxWinStg.h"
|
||
|
|
|
||
|
|
//#define SV_SLIP_WIN_PIX
|
||
|
|
//#define SV_SLINE_PIXSUM
|
||
|
|
//#define SV_MLINE_PIXSUM
|
||
|
|
//#define SV_MLINE_PIXMEAN
|
||
|
|
//#define SV_MLINE_PIXDELTA
|
||
|
|
//#define SV_MLINE_SUMDELTA
|
||
|
|
//#define SV_WIN_MAXDELTA
|
||
|
|
//#define SV_REC_RFLCT
|
||
|
|
#define SV_PRELEN
|
||
|
|
//#define SV_COL_PIPE
|
||
|
|
//#define SV_RFLCT_REALIGN
|
||
|
|
//#define SV_MULTI_FETRRSV_DETAIL
|
||
|
|
|
||
|
|
#define PIXCHN 8
|
||
|
|
|
||
|
|
#define MAX_H 4096
|
||
|
|
#define MAX_W 4096
|
||
|
|
|
||
|
|
#define FIXED_PROC
|
||
|
|
// Opt
|
||
|
|
#define FIXED_COE (1<<0)
|
||
|
|
#define TRNC_FIXED (1<<0)
|
||
|
|
#define RMWE_FIXED (1<<4)
|
||
|
|
#define MAXSTG_Q (1<<10)
|
||
|
|
|
||
|
|
|
||
|
|
#define LAZER_WIN_SIZE 16
|
||
|
|
|
||
|
|
#define STG_SIDE_PIX_NUM 2
|
||
|
|
|
||
|
|
#ifdef ALL_STG
|
||
|
|
|
||
|
|
#define STG_MIN_CNTR_PIX 1
|
||
|
|
#define STG_MAX_CNTR_PIX 6
|
||
|
|
|
||
|
|
#define STG_NUM ((STG_MAX_CNTR_PIX-STG_MIN_CNTR_PIX)/2 + 1)
|
||
|
|
|
||
|
|
#else // #ifdef ALL_STG
|
||
|
|
|
||
|
|
#define STG_MIN_CNTR_PIX 2
|
||
|
|
#define STG_MAX_CNTR_PIX 12
|
||
|
|
|
||
|
|
#define STG_NUM ((STG_MAX_CNTR_PIX-STG_MIN_CNTR_PIX)/2 + 1)
|
||
|
|
|
||
|
|
#endif//#ifdef ALL_STG
|
||
|
|
|
||
|
|
#define MULTI_LINE_NUM 5
|
||
|
|
|
||
|
|
#define FETR_PER_LINE 2 //
|
||
|
|
|
||
|
|
#define PEAK_GAP 2
|
||
|
|
|
||
|
|
#define REC_RFLCT
|
||
|
|
#define RFLCT_PRE_REF_NUM PIXCHN
|
||
|
|
#define RFLCT_REALIGN
|
||
|
|
|
||
|
|
#define PRE_LENGTH_ENHANCE
|
||
|
|
#ifdef FIXED_PROC
|
||
|
|
// #define PRELEN_ENHANCE_COE (FIXED_COE/1)
|
||
|
|
#define PRELEN_ENHANCE_COE (FIXED_COE*2)
|
||
|
|
#else
|
||
|
|
#define PRELEN_ENHANCE_COE (0.25f)
|
||
|
|
#endif
|
||
|
|
//#define PRE_LENGTH_TRADE_OFF
|
||
|
|
|
||
|
|
#define MAX_PRELEN 64
|
||
|
|
#define DISCONT_TH 3
|
||
|
|
|
||
|
|
#define MAX_RGN 2048
|
||
|
|
//#define MERGE_CROSS
|
||
|
|
//#define GROWING_MERGE
|
||
|
|
//#define RGN_PROC_V2
|
||
|
|
|
||
|
|
#define PICK_RGN_MAX 2
|
||
|
|
//#define OVERLAP_PIXTH 384
|
||
|
|
|
||
|
|
#define BORDER_PROC
|
||
|
|
|
||
|
|
#define RFLCT_TRADE_OFF
|
||
|
|
|
||
|
|
//#define REF_NXT_PKT
|
||
|
|
//#define RFLCT_SIMPLE_PROC
|
||
|
|
|
||
|
|
//#define PICK_RGN_XDIST
|
||
|
|
|
||
|
|
//#define ENERGY_PICK_ENA
|
||
|
|
//#define ENERGY_PICK_RLEN 32
|
||
|
|
//#define RGN_ENERGY_PICK
|
||
|
|
|
||
|
|
#ifdef FIXED_PROC
|
||
|
|
struct StgSet{
|
||
|
|
unsigned char CntrPix[STG_MAX_CNTR_PIX];
|
||
|
|
unsigned char SideLPix[STG_SIDE_PIX_NUM];
|
||
|
|
unsigned char SideRPix[STG_SIDE_PIX_NUM];
|
||
|
|
|
||
|
|
int SumCntrPix;
|
||
|
|
int SumSideLPix;
|
||
|
|
int SumSideRPix;
|
||
|
|
} ;
|
||
|
|
|
||
|
|
#else // #ifdef FIXED_PROC
|
||
|
|
struct StgSet{
|
||
|
|
float CntrPix[STG_MAX_CNTR_PIX];
|
||
|
|
float SideLPix[STG_SIDE_PIX_NUM];
|
||
|
|
float SideRPix[STG_SIDE_PIX_NUM];
|
||
|
|
|
||
|
|
float SumCntrPix;
|
||
|
|
float SumSideLPix;
|
||
|
|
float SumSideRPix;
|
||
|
|
} ;
|
||
|
|
#endif // #ifdef FIXED_PROC
|
||
|
|
|
||
|
|
struct LazerCharacter{
|
||
|
|
unsigned short Rid;
|
||
|
|
unsigned short StartX;
|
||
|
|
unsigned short EndX;
|
||
|
|
unsigned short Y;
|
||
|
|
unsigned short Width;
|
||
|
|
#ifdef FIXED_PROC
|
||
|
|
int Energy;
|
||
|
|
#else
|
||
|
|
float Energy;
|
||
|
|
#endif
|
||
|
|
unsigned char Valid;
|
||
|
|
unsigned char Seed;
|
||
|
|
unsigned char Tail;
|
||
|
|
unsigned char Crs;
|
||
|
|
unsigned char BeloneTo;
|
||
|
|
unsigned char BeloneToTreeId;
|
||
|
|
|
||
|
|
// unsigned char WkMsk;
|
||
|
|
} ;
|
||
|
|
|
||
|
|
struct LazerTree{
|
||
|
|
unsigned short TreeID;
|
||
|
|
unsigned short TreeLen;
|
||
|
|
#ifdef FIXED_PROC
|
||
|
|
int TreeEnergy;
|
||
|
|
#else
|
||
|
|
float TreeEnergy;
|
||
|
|
#endif
|
||
|
|
unsigned char TreeEmpty;
|
||
|
|
unsigned char TreeGrow;
|
||
|
|
unsigned char TreeGrowCharaId;
|
||
|
|
LazerCharacter CurTreeTail;
|
||
|
|
unsigned char TreeType; // 0:Normal | 1:UpCross | 2: DownCross
|
||
|
|
unsigned char CrossMsk; // 0:Normal | 1:UpCrossMsk | 2: DownCrossMsk | 3. Up&DownCrossMsk
|
||
|
|
} ;
|
||
|
|
|
||
|
|
struct RgnInfo{
|
||
|
|
unsigned short PntNum;
|
||
|
|
#ifdef FIXED_PROC
|
||
|
|
int Energy;
|
||
|
|
#else
|
||
|
|
float Energy;
|
||
|
|
#endif
|
||
|
|
unsigned short Seed_XS;
|
||
|
|
unsigned short Seed_XE;
|
||
|
|
unsigned short Seed_Y;
|
||
|
|
unsigned short Tail_XS;
|
||
|
|
unsigned short Tail_XE;
|
||
|
|
unsigned short Tail_Y;
|
||
|
|
unsigned char RgnType; // 0:Normal | 1:UpCross | 2: DownCross | 3: UpDown Cross
|
||
|
|
unsigned char PastType;
|
||
|
|
unsigned short NewRid;
|
||
|
|
unsigned char CrossMsk;// 0:Normal | 1:UpCrossMsk | 2: DownCrossMsk | 3. Up&DownCrossMsk
|
||
|
|
};
|
||
|
|
|
||
|
|
struct PickLaserResult {
|
||
|
|
/* Start User Var*/
|
||
|
|
#ifdef FIXED_PROC
|
||
|
|
int PickRgn_FrmMaxDeltaStg[MAX_H][PICK_RGN_MAX];
|
||
|
|
#else
|
||
|
|
float PickRgn_FrmMaxDeltaStg[MAX_H][PICK_RGN_MAX];
|
||
|
|
#endif
|
||
|
|
unsigned short PickRgn_FrmMaxDeltaStg_WinRdx[MAX_H][PICK_RGN_MAX];
|
||
|
|
unsigned short PickRgn_FrmMaxDeltaStg_LazerRdx[MAX_H][PICK_RGN_MAX];
|
||
|
|
unsigned short PickRgn_FrmMaxDeltaStg_LazerW[MAX_H][PICK_RGN_MAX];
|
||
|
|
unsigned char PickRgn_FrmMaxDeltaStg_PickMsk[MAX_H][PICK_RGN_MAX];
|
||
|
|
unsigned short PickRgn_FrmMaxDeltaStg_Rid[MAX_H][PICK_RGN_MAX];
|
||
|
|
unsigned short PickRgn_FrmMaxDeltaStg_OverlapMsk[MAX_H][PICK_RGN_MAX];
|
||
|
|
unsigned char PickRgn_FrmMaxDeltaStg_RflctMsk[MAX_H][PICK_RGN_MAX];
|
||
|
|
unsigned short PickRgn_FrmMaxDeltaStg_LiteRflct[MAX_H][PICK_RGN_MAX];
|
||
|
|
/*End User Var*/
|
||
|
|
};
|
||
|
|
|
||
|
|
#define MAX_WIN_NUM (MAX_H * PICK_RGN_MAX)
|
||
|
|
|
||
|
|
|
||
|
|
struct StdRgnRslt
|
||
|
|
{
|
||
|
|
unsigned short WinRdx[MAX_WIN_NUM]; //
|
||
|
|
unsigned short WinRltvStr[MAX_WIN_NUM];
|
||
|
|
unsigned short WinRltvEnd[MAX_WIN_NUM];
|
||
|
|
unsigned short WinY[MAX_WIN_NUM];
|
||
|
|
unsigned short WinRid[MAX_WIN_NUM];
|
||
|
|
unsigned short WinRflct[MAX_WIN_NUM];
|
||
|
|
unsigned short WinOvrlp[MAX_WIN_NUM];
|
||
|
|
unsigned char WinPix[MAX_WIN_NUM][LAZER_WIN_SIZE];
|
||
|
|
};
|
||
|
|
|
||
|
|
IMGACC_API void PickLazerWin(
|
||
|
|
int isL,
|
||
|
|
int FrmW,
|
||
|
|
int FrmH,
|
||
|
|
const unsigned char * SrcPixArray,
|
||
|
|
#ifdef FIXED_PROC
|
||
|
|
int MinStgTh,
|
||
|
|
#else
|
||
|
|
float MinStgTh,
|
||
|
|
#endif
|
||
|
|
short LazerWMin,
|
||
|
|
short LazerWMax,
|
||
|
|
#ifdef FIXED_PROC
|
||
|
|
int RflctPixTh ,
|
||
|
|
#else
|
||
|
|
float RflctPixTh ,
|
||
|
|
#endif
|
||
|
|
unsigned char RflctOutEna,
|
||
|
|
int OverlapPixTh ,
|
||
|
|
unsigned char EnhanStep,
|
||
|
|
unsigned char PickEna,
|
||
|
|
unsigned char RgnFltrTh,
|
||
|
|
|
||
|
|
unsigned char RmvWkEndEna,
|
||
|
|
unsigned char RmvWkEndTh,
|
||
|
|
unsigned char RmvWkEndMultCoe,
|
||
|
|
unsigned short RmvWkEndMinLen,
|
||
|
|
|
||
|
|
unsigned char PickLR_Ena,
|
||
|
|
unsigned char PickLeft,
|
||
|
|
unsigned short PickLR_RgnLenTh,
|
||
|
|
|
||
|
|
unsigned char EnergyPickEna ,
|
||
|
|
unsigned short PickEnergyType,
|
||
|
|
unsigned short RgnEnergyPLen,
|
||
|
|
unsigned char MeanRgnETh,
|
||
|
|
|
||
|
|
PickLaserResult* pResult
|
||
|
|
);
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
#endif //#ifndef PICK_LAZER_WIN_H
|