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
| #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<short> m_ConvBlock;
| CSISBlock<short> 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);
| };
|
|