#pragma once #include "AssemParam.h" #include "BlobStorage.h" #include "AssemUtil.h" #include "SISStrg.h" #define ASSEM_CONVBUFFER_SIZE 1024*1024 class CBlobStorage; class CSISAssem; class AFX_EXT_CLASS CAssemControl { int m_nThread; int m_nSpace; CSISAssem *m_pSISAssem; public: CAssemControl(); ~CAssemControl(); public: int InitAssemControl(int nThread, int maxDefect= 10000); void ResetReinspectCount(); public: DIT_RESULT Inspect_Rect(int iThread, CConvParam *pParam, BOOL bAsg= FALSE);//, class CDefectStorage *pDefectStorage, int iFrame, int iScan, int iModel, BOOL bCosmicFiler); DIT_RESULT Inspect_Trapezium(int iThread, CConvParam *pParam);//, class CDefectStorage *pDefectStorage, int iFrame, int iScan, int iModel, BOOL bCosmicFiler); DIT_RESULT Inspect_ASG(int iThread, CConvParam *pParam); DIT_RESULT ASGVertConvolution(int iThread, CConvParam *pParam); public: CSISAssem* GetSISAssem(int iThread); }; // CSISAssem ³»¿¡¼­ ÁÖ¾îÁø °Ë»ç ¿µ¿ªÀ» ºÐÇÒÇØ Thread ºÐÇÒ °Ë»ç¸¦ ½Ç½ÃÇÑ´Ù. class CAssemThreadControl { int m_nThread; int m_nSpace; CSISAssem *m_pSISAssem; public: CAssemThreadControl(); ~CAssemThreadControl(); int GetThreadCount(){return m_nThread;} BOOL InitAssemThreadControl(int nThread, int maxDefect); DIT_RESULT Inspect_RectThread(int iThread, CConvParam *pParam);//, class CDefectStorage *pDefectStorage, int iFrame, int iScan, int iModel, BOOL bCosmicFiler); CSISAssem* GetSISAssemThread(int iThread); }; class AFX_EXT_CLASS CSISAssem : public CBlobStorage { public: CAssemThreadControl *m_pAssemControl; int m_iThread; // BOOL m_bNowInspect; double m_ConvTime; int m_cReinspect; protected: CSISBlock m_ConvBlock; CSISBlock m_ConvBlock2; public: CSISAssem(void); ~CSISAssem(void); public: BOOL InitAssem(int iThread, int maxDefect); void ResetReinspectCount() {m_cReinspect= 0;} void ResetSISAssem(); // Inspect_Pre(); ¸¦ ResetSISAssem()À¸·Î ¸íÀǺ¯°æÇÑ´Ù. void InspectPAD_Clear(); BOOL EnableInternalThread(int nThrea, int maxDefect); public: // ¿ÜºÎ¿¡¼­ °Ë»ç½Ã È£ÃâÇÏ´Â ½ÇÁ¦ ÀÎÅÍÆäÀ̽º[ÀÏ·ÃÀÇ °Ë»ç °úÁ¤(Reset, Check Validity, Inspect, PostProcess..]À» ³»ºÎ¿¡¼­ Æ÷ÇÔÇÑ´Ù] DIT_RESULT Inspect_Rect(CConvParam *pParam); DIT_RESULT Inspect_RectThread(CConvParam *pParam); DIT_RESULT Inspect_Trapezium(CConvParam *pParam); DIT_RESULT Inspect_ASG(CConvParam *pParam); // Asg¿¡ Zone °Ë»ç°¡ Ãß°¡µÇ¸é¼­ Inspect °è¿­¿¡ Inspect_ASG() Ãß°¡ public: void CountReinspect() {m_cReinspect++;} public: DIT_RESULT CheckParameter(BOOL &bNoInspect); DIT_RESULT CheckParameter_Vert(BOOL &bNoInspect); public:// Assem È£ÃâÀ» ÅëÇØ ½ÇÁ¦ °Ë»ç ControlÇÏ´Â ÇÔ¼öµé. Assemµî ½ÇÁ¦ °Ë»ç ·çƾÀ» Ãß°¡ ÇÏ·Á°Åµç ÀÌÂÊ °è¿­·Î »ç¿ëÇÑ´Ù. int Compare_Float(); int Compare_Pixel(); void Compare_Zone(); // Compare_Zone2(); ·Î ´ëü int Compare_Zone2(); // Zone º° ´ÙÀ̳ª¹Í Threshold Ãß°¡µÈ ¹öÀü. void Compare_Trapezium(); int Compare_ASGZone(); int BinalizeInspection(); protected:// °Ë»ç¿¡ »ç¿ëµÉ À̹ÌÁö¸¦ À§ÇÑ Áß°£ ¹öÆÛ Control void ResetConBuff(int &InspSize); // ¼¼·Î¹æÇâ ºñ±³¸¦ À§ÇØ 16¹èÀÇ °ø°£ »ç¿ë short* GetConBuffComp(){return m_ConvBlock.GetDataAddr();}; short* GetConBuffComp2(){return m_ConvBlock2.GetDataAddr();}; public: DIT_RESULT ASGVertConvolution(CConvParam *pParam); public: int BinalizeInspection(BYTE *pSrc, int nThresS, int nThresE, CRect rtROI ,int nWidth, CDefectPair *pDefectdPair, int nStartPair, int nMaxPair ,int &nEndLine); int ConvFloatVert_BOE_Intrin(BYTE* pImgBuff, short* pConBuff, __int64 maxDefect, __int64 nDefect , __int64 left, __int64 right, __int64 top, __int64 bottom , int* DefectX, int* DefectY, short* DefectT, short* DefectValue , CDefectPair *pDefectdPair, __int64 nPair, __int64 MaxPair, __int64 PairSize , __int64 frameWidth, __int64 iPitch16, __int64 Threshold, __int64 Suppress , int* pGraySrc, int* pGrayCmp, int* pZoneID, int* pZoneTh , __int64 i2Pitch16, __int64 bReverseFilter, __int64 ThresholdSlide, int* endLine ); int ConvFloatVTD_BOE_Intrin(BYTE* pImgBuff, short* pConBuff, __int64 maxDefect, __int64 nDefect , __int64 left, __int64 right, __int64 top, __int64 bottom , int* DefectX, int* DefectY, short* DefectType, short* DefectValue , CDefectPair *pDefectdPair, __int64 nPair, __int64 MaxPair, __int64 PairSize , __int64 frameWidth, __int64 iPitch16, __int64 Threshold, __int64 Suppress , short* i2Pitch16, __int64 tilt16, int* PitchBuff, __int64 ThresholdSlide , int* pGraySrc, int* pGrayCmp, int* pZoneID, int* pZoneTh , int* endLine ); int ConvZoneVert2S_BOE_Intrin(BYTE *pImgBuff, __int64 Threshold, __int64 maxDefect, __int64 nDefect , __int64 left, __int64 right, __int64 top, __int64 bottom , int* DefectX, int* DefectY, short* DefectT, short* DefectValue , int* pGraySrc, int* pGrayCmp, int* pZoneID, int* pZoneTh , __int64 frameWidth, __int64 iPitch16, __int64 fSPR, __int64 sSPR , short* ZoneThTable, short* ZoneIdTable, __int64 ZoneTableWidth, void* pMatchTable , CDefectPair *pDefectdPair, __int64 StartPair, __int64 MaxPair, __int64 PairSize , __int64 dxPattern, __int64 dyPattern, __int64 yZoneByte, __int64 bReverseFilter , short* ZoneAddTable, short* pConBuff, __int64 bUseUnpair, int* endLine , __int64 ExTh, __int64 Suppress ); int ConvZoneVert2S_TSP_Intrin(BYTE *pImgBuff, __int64 Threshold, __int64 maxDefect, __int64 nDefect , __int64 left, __int64 right, __int64 top, __int64 bottom , int* DefectX, int* DefectY, short* DefectT, short* DefectValue , int* pGraySrc, int* pGrayCmp, int* pZoneID, int* pZoneTh , __int64 frameWidth, __int64 iPitch16, __int64 fSPR, __int64 sSPR , short* ZoneThTable, short* ZoneIdTable, __int64 ZoneTableWidth, void* pMatchTable , CDefectPair *pDefectdPair, __int64 StartPair, __int64 MaxPair, __int64 PairSize , __int64 dxPattern, __int64 dyPattern, __int64 yZoneByte, __int64 bReverseFilter , short* ZoneAddTable, short* pConBuff, __int64 bUseUnpair, int* endLine , __int64 ExTh, __int64 Suppress ); int ConvZoneVert2S_BlackFilter(BYTE *pImgBuff, __int64 Threshold, __int64 maxDefect, __int64 nDefect , __int64 left, __int64 right, __int64 top, __int64 bottom , int* DefectX, int* DefectY, short* DefectT, short* DefectValue , int* pGraySrc, int* pGrayCmp, int* pZoneID, int* pZoneTh , __int64 frameWidth, __int64 iPitch16, __int64 fSPR, __int64 sSPR , short* ZoneThTable, short* ZoneIdTable, __int64 ZoneTableWidth, void* pMatchTable , CDefectPair *pDefectdPair, __int64 StartPair, __int64 MaxPair, __int64 PairSize , __int64 dxPattern, __int64 dyPattern, __int64 yZoneByte, __int64 bReverseFilter , short* ZoneAddTable, short* pConBuff, __int64 bUseUnpair, int* endLine , __int64 ExTh, __int64 Suppress ); int ConvZoneVTD_BOE_Intrin(BYTE *pImgBuff, __int64 Threshold, __int64 maxDefect, __int64 nDefect , __int64 left, __int64 right, __int64 top, __int64 bottom , int* DefectX, int* DefectY, short* DefectT, short* DefectValue , int* pGraySrc, int* pGrayCmp, int* pZoneID, int* pZoneTh , __int64 frameWidth, int* piPitch16, __int64 iPitch16, __int64 sSPR , short* ZoneThTable, short* ZoneIdTable, __int64 ZoneTableWidth, void* pMatchTable , CDefectPair *pDefectdPair, __int64 StartPair, __int64 MaxPair, __int64 PairSize , __int64 dxPattern, __int64 dyPattern, __int64 yZoneByte, __int64 bReverseFilter , short* ZoneAddTable, __int64 Tilt16, __int64 bUseUnpair, int* endLine , __int64 ExTh, __int64 Suppress ); int ConvPixelVertS_Intrin(BYTE *pImgBuff, __int64 Threshold, __int64 maxDefect, __int64 nDefect , __int64 left, __int64 right, __int64 top, __int64 bottom , int* DefectX, int* DefectY, short* DefectT, short* DefectValue , int* pGraySrc, int* pGrayCmp, int* pZoneID, int* pZoneTh , __int64 frameWidth, __int64 iPitch16, __int64 fSPR, __int64 sSPR , short* ZoneThTable, short* ZoneIdTable, __int64 ZoneTableWidth, void* pMatchTable , CDefectPair *pDefectdPair, __int64 StartPair, __int64 MaxPair, __int64 PairSize , __int64 dxPattern, __int64 dyPattern, __int64 yZoneByte, __int64 bReverseFilter , __int64 ThresholdSlide, __int64 ThresholdSuppress, __int64 bUseUnpair, short* pConBuff , int* endLine, __int64 ExTh); int ConvPixelVTDS_Intrin(BYTE *pImgBuff, __int64 Threshold, __int64 maxDefect, __int64 nDefect , __int64 left, __int64 right, __int64 top, __int64 bottom , int* DefectX, int* DefectY, short* DefectT, short* DefectValue , int* pGraySrc, int* pGrayCmp, int* pZoneID, int* pZoneTh , __int64 frameWidth, __int64 iPitch16, int* piPitch16, __int64 sSPR , short* ZoneThTable, short* ZoneIdTable, __int64 ZoneTableWidth, void* pMatchTable , CDefectPair *pDefectdPair, __int64 StartPair, __int64 MaxPair, __int64 PairSize , __int64 dxPattern, __int64 dyPattern, __int64 yZoneByte, __int64 bReverseFilter , __int64 ThresholdSlide, __int64 ThresholdSuppress, __int64 bUseUnpair, short* pConBuff , int* endLine, __int64 ExTh ); int ConvPixel_Intrin(BYTE *pImgBuff, __int64 Threshold, __int64 maxDefect, __int64 nDefect , __int64 left, __int64 right, __int64 top, __int64 bottom , int* DefectX, int* DefectY, short* DefectT, short* DefectValue , int* pGraySrc, int* pGrayCmp, int* pZoneID, int* pZoneTh , __int64 frameWidth, __int64 iPitch, __int64 fSPR, __int64 sSPR , short* ZoneThTable, short* ZoneIdTable, __int64 ZoneTableWidth, void* pMatchTable , CDefectPair *pDefectdPair, __int64 StartPair, __int64 MaxPair, __int64 PairSize , __int64 dxPattern, __int64 dyPattern, __int64 yZoneByte, __int64 bReverseFilter , __int64 ThresholdSlide, __int64 ThresholdSuppress, __int64 bUseUnpair, int* endLine ); int ConvPixel_Intrin_Twice(BYTE *pImgBuff, __int64 Threshold, __int64 maxDefect, __int64 nDefect , __int64 left, __int64 right, __int64 top, __int64 bottom , int* DefectX, int* DefectY, short* DefectT, short* DefectValue , int* pGraySrc, int* pGrayCmp, int* pZoneID, int* pZoneTh , __int64 frameWidth, __int64 iPitch, __int64 fSPR, __int64 sSPR , short* ZoneThTable, short* ZoneIdTable, __int64 ZoneTableWidth, void* pMatchTable , CDefectPair *pDefectdPair, __int64 StartPair, __int64 MaxPair, __int64 PairSize , __int64 dxPattern, __int64 dyPattern, __int64 yZoneByte, __int64 bReverseFilter , __int64 ThresholdSlide, __int64 ThresholdSuppress, __int64 bUseUnpair, int* endLine , __int64 iPitch2, __int64 Threshold2, __int64 ThresholdSlide2); int ConvPixelVertS_Intrin_Twice(BYTE *pImgBuff, __int64 Threshold, __int64 maxDefect, __int64 nDefect , __int64 left, __int64 right, __int64 top, __int64 bottom , int* DefectX, int* DefectY, short* DefectT, short* DefectValue , int* pGraySrc, int* pGrayCmp, int* pZoneID, int* pZoneTh , __int64 frameWidth, __int64 iPitch16, __int64 fSPR, __int64 sSPR , short* ZoneThTable, short* ZoneIdTable, __int64 ZoneTableWidth, void* pMatchTable , CDefectPair *pDefectdPair, __int64 StartPair, __int64 MaxPair, __int64 PairSize , __int64 dxPattern, __int64 dyPattern, __int64 yZoneByte, __int64 bReverseFilter , __int64 ThresholdSlide, __int64 ThresholdSuppress, __int64 bUseUnpair, short* pConBuff , int* endLine, __int64 ExTh, __int64 iPitch2, __int64 Threshold2 , __int64 ThresholdSlide2); };