#ifndef PICK_LAZER_WIN_H #define PICK_LAZER_WIN_H #include "ImgAccExport.h" #include #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