SDC C-Project CF Review 프로그램
LYW
2021-07-23 55615eba335d4cbc1f83330dc5078fe073034b7d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
#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);
};