SDC C-Project CF Review 프로그램
LYW
2021-09-23 c77236e1522caa3e2082dd7b5b32f6c30b125172
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
#pragma once
 
#include "AlignFinderParam.h"
#include "CHImageControls/CHImageData.h"
 
class AFX_EXT_CLASS CAlignFinder
{
public:
    CAlignFinder(int nIndex=0);
    virtual ~CAlignFinder(void);
    void Reset();
    void ResetImages();
 
    virtual SAlignFindResult FindAlign(CCHImageData *pImageData, const SAlignFindParam& findParam, CCHImageData *pTempImage=NULL);
    virtual SAlignFindResult FindAlign(CCHImageData *pImageData, CCHImageData *pTempImage=NULL);
    virtual SAlignFindResult FindAlign(BYTE* pImage, int nWidth, int nHeight, const SAlignFindParam& findParam);
    
 
    BOOL SaveSourceImage(const CString& strFilename);
    BOOL SaveEdgeImage(const CString& strFilename);
    BOOL SaveThresholdImage(const CString& strFilename);
    BOOL SaveBlobImage(const CString& strFilename);
    BOOL SaveResultImage(const CString& strFilename);
 
    BOOL GetSourceImage(CCHImageData *pImageData);
    BOOL GetEdgeImage(CCHImageData *pImageData);
    BOOL GetThresholdImage(CCHImageData *pImageData);
    BOOL GetBlobImage(CCHImageData *pImageData);
    BOOL GetResultImage(CCHImageData *pImageData);
 
    static int ImageSobelEdge(BYTE* pSrcImage, BYTE *pDstImage, int nWidth, int nHeight);
    static int ImageThresholding(BYTE* pImage, int nWidth, int nHeight, int nThresValue);
    static int ImageBlobAnalysis(BYTE *pImage, int nWidth, int nHeight, VectorPixelBlob& vectorBlob, int nBlobMargin, int nAlignWidth, int nAlignHeight);
    static SThicknessResult FindAlignMarkThickness(BYTE *pProcImg, int nWidth, int nHeight, CPoint ptResult, int nRefWidth, int nRefHeight);
    static int AlignMeasureThickness(BYTE *pImage, int nWidth, int nHeight, VectorPixelBlob& vectorBlob, const SAlignFindParam& sAlignFindParam);
 
protected:
    virtual SAlignFindResult FindAlign(BYTE* pImage, int nWidth, int nHeight);
    virtual int FindAlignEdge(SAlignFindResult& findResult);
    virtual int FindAlignMatching(SAlignFindResult& findResult);
 
    int                m_nIndex;
    CCHImageData    m_SourceImage;
    CCHImageData    m_EdgeImage;
    CCHImageData    m_ThresImage;
    CCHImageData    m_BlobImage;
    CCHImageData    m_ResultImage;
 
    CCHImageData*    m_pTempImage;
    SAlignFindParam        m_findParam;
};
 
typedef std::vector<CAlignFinder*>                    VectorAlignFinder;
typedef std::vector<CAlignFinder*>::iterator        VectorAlignFinderIt;