#pragma once
|
|
#include "AssemParam.h"
|
#include "BlobStorage.h"
|
#include "AssemUtil.h"
|
#include "MosisStrg.h"
|
#include "CompareAverage.h"
|
|
#define ASSEM_CONVBUFFER_SIZE 1024*1024
|
|
class CBlobStorage;
|
class CMosisAssem;
|
|
class AFX_EXT_CLASS CAssemControl
|
{
|
int m_nThread;
|
int m_nSpace;
|
CMosisAssem *m_pMosisAssem;
|
|
public:
|
CAssemControl();
|
virtual ~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:
|
CMosisAssem* GetMosisAssem(int iThread);
|
};
|
|
// CMosisAssem ³»¿¡¼ ÁÖ¾îÁø °Ë»ç ¿µ¿ªÀ» ºÐÇÒÇØ Thread ºÐÇÒ °Ë»ç¸¦ ½Ç½ÃÇÑ´Ù.
|
class CAssemThreadControl
|
{
|
int m_nThread;
|
int m_nSpace;
|
CMosisAssem *m_pMosisAssem;
|
|
public:
|
CAssemThreadControl();
|
virtual ~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);
|
|
CMosisAssem* GetMosisAssemThread(int iThread);
|
};
|
|
class AFX_EXT_CLASS CMosisAssem : public CBlobStorage
|
{
|
public:
|
CAssemThreadControl *m_pAssemControl;
|
int m_iThread;
|
// BOOL m_bNowInspect;
|
|
double m_ConvTime;
|
int m_cReinspect;
|
|
|
protected:
|
CMosisBlock<short> m_ConvBlock;
|
CMosisBlock<short> m_ConvBlock2;
|
CMosisBlock<__int64> m_int64Block;
|
|
CCompareAverage m_AvgIns;
|
|
public:
|
CMosisAssem(void);
|
virtual ~CMosisAssem(void);
|
|
public:
|
|
BOOL InitAssem(int iThread, int maxDefect);
|
void ResetReinspectCount() {m_cReinspect= 0;}
|
void ResetMosisAssem(); // Inspect_Pre(); ¸¦ ResetMosisAssem()À¸·Î ¸íÀǺ¯°æÇÑ´Ù.
|
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();
|
int CompareAverage();
|
|
|
protected:// °Ë»ç¿¡ »ç¿ëµÉ À̹ÌÁö¸¦ À§ÇÑ Áß°£ ¹öÆÛ Control
|
void ResetConBuff(int &InspSize); // ¼¼·Î¹æÇâ ºñ±³¸¦ À§ÇØ 16¹èÀÇ °ø°£ »ç¿ë
|
short* GetConBuffComp(){return m_ConvBlock.GetDataAddr();};
|
short* GetConBuffComp2(){return m_ConvBlock2.GetDataAddr();};
|
|
void GetInt64BuffComp(int nSize);
|
__int64* GetInt64BuffComp(){return m_int64Block.GetDataAddr();};
|
|
public:
|
DIT_RESULT ASGVertConvolution(CConvParam *pParam);
|
|
protected:
|
int Inspect_FreeForm(int &nEndLine);
|
|
//Core ¾È¿¡ Unpair °áÇÔ JumpFilter°¡ µé¾î°¡ ÀÖ´Ù.
|
int ConvFloatVJF_Intrin(CRect rtROI, int &nEndLine);
|
int ConvFloatVJF_Cpp(CRect rtROI, int &nEndLine);
|
|
BOOL MakeFrameRegion(CPoint *pptPoly, int nPolyCount, CRect rtROI, int &nRectCount, CRect **prtOutput);
|
BOOL ExtractRectInRgn(CRgn &rgnInput, int &nRectCount, CRect **prtOutput);
|
|
public:
|
int BinalizeInspection(BYTE *pSrc, int nThresS, int nThresE, CRect rtROI
|
,int nWidth, CDefectPair *pDefectdPair, int nStartPair, int nMaxPair
|
,int &nEndLine);
|
|
int ConvFloatVert_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_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_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_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);
|
};
|