#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 VectorAlignFinder; typedef std::vector::iterator VectorAlignFinderIt;