// MatchImpl.h: interface for the CMatchImpl class.
|
//
|
//////////////////////////////////////////////////////////////////////
|
|
#if !defined(AFX_MATCHIMPL_H__55548055_7034_4B12_A642_2771D6DFBAA4__INCLUDED_)
|
#define AFX_MATCHIMPL_H__55548055_7034_4B12_A642_2771D6DFBAA4__INCLUDED_
|
|
#if _MSC_VER > 1000
|
#pragma once
|
#endif // _MSC_VER > 1000
|
|
#include "InspectionBuffer.h"
|
#include "SISMatch.h"
|
#include "SISMath.h"
|
|
#include "MatchBuffer.h"
|
|
typedef __int64 int64;
|
typedef unsigned char uchar;
|
typedef unsigned short ushort;
|
|
|
class CResultBufferInt64
|
{
|
int m_Width, m_Height;
|
int m_DataSpace;
|
int64 *m_pData;
|
public:
|
CResultBufferInt64()
|
{
|
m_pData= NULL;
|
m_Width= 0;
|
m_Height= 0;
|
m_DataSpace= 0;
|
}
|
~CResultBufferInt64();
|
|
BOOL IsValidBuffer(){return m_pData != NULL;}
|
int GetWidth(){return m_Width;}
|
int GetHeight(){return m_Height;}
|
|
void ReleaseSpace();
|
BOOL SetSize(int width, int height);
|
void SetData(int x, int y, int64 val)
|
{
|
*(m_pData+ x+ y*m_Width)= val;
|
}
|
int64 GetData(int x, int y)
|
{
|
return *(m_pData+ x+ y*m_Width);
|
}
|
int64 *GetDataAddress(int x= 0, int y= 0)
|
{
|
return m_pData+ x+ y*m_Width;
|
}
|
BOOL GetBestMatchResult(stSISMatchResult &result, double acceptance, BOOL bUseInterpolate);
|
};
|
|
class CResultBufferFloat
|
{
|
int m_Width, m_Height;
|
int m_DataSpace;
|
float *m_pData;
|
public:
|
CResultBufferFloat()
|
{
|
m_pData= NULL;
|
m_Width= 0;
|
m_Height= 0;
|
m_DataSpace= 0;
|
}
|
~CResultBufferFloat();
|
|
BOOL IsValidBuffer(){return m_pData != NULL;}
|
int GetWidth(){return m_Width;}
|
int GetHeight(){return m_Height;}
|
|
void ReleaseSpace();
|
BOOL SetSize(int width, int height);
|
void SetData(int x, int y, float val)
|
{
|
*(m_pData+ x+ y*m_Width)= val;
|
}
|
float GetData(int x, int y)
|
{
|
return *(m_pData+ x+ y*m_Width);
|
}
|
float *GetDataAddress(int x= 0, int y= 0)
|
{
|
return m_pData+ x+ y*m_Width;
|
}
|
BOOL GetBestMatchResult(stSISMatchResult &result, double acceptance, BOOL bUseInterpolate);
|
};
|
|
|
|
class CMatchImpl
|
{
|
stSISMatchParam m_MatchParam;
|
|
CSISBuffer m_BigOriginal;
|
CSISBuffer m_SmallOriginal;
|
|
BOOL m_bSmallBufferChanged;
|
BOOL m_bBigBufferChanged;
|
|
|
CRect m_BigRect;
|
CRect m_SmallRect;
|
|
CUShortBuff m_SmallBuff16;
|
CUShortBuff m_BigBuff16;
|
|
CByteBuff m_BigBuff8;
|
CByteBuff m_SmallBuff8;
|
|
|
CByteBuff m_tempBuffer8;
|
CUShortBuff m_tempBuffer16;
|
CResultBufferInt64 m_sumBuffer;
|
CResultBufferInt64 m_sqSumBuffer;
|
CResultBufferFloat m_resultBuffer;
|
CResultBufferInt64 m_resNumBuffer;
|
CResultBufferInt64 m_resDenomBuffer;
|
|
public:
|
CMatchImpl();
|
virtual ~CMatchImpl();
|
|
BOOL SetBigImage(CSISBuffer bigBuff, CRect roi);
|
BOOL SetSmallImage(CSISBuffer smallBuff, CRect roi);
|
BOOL DoTemplateMatch(stSISMatchResult &matchResult, stSISMatchParam param);
|
|
BOOL MatchImpl(CUShortBuff &smallBuffer, CUShortBuff &bigBuffer, stSISMatchResult &matchResult, double acceptance, BOOL bUseInterpolate);
|
BOOL MatchImpl(CByteBuff &smallBuffer, CByteBuff &bigBuffer, stSISMatchResult &matchResult, double acceptance, BOOL bUseInterpolate);
|
|
BOOL MatchImpl(CSISBuffer &smallBuffer, CSISBuffer &bigBuffer, stSISMatchResult &matchResult, double acceptance, BOOL bUseInterpolate);
|
|
BOOL MatchImpl_Coef(CUShortBuff &smallBuffer, CUShortBuff &bigBuffer, stSISMatchResult &matchResult, double acceptance, BOOL bUseInterpolate);
|
BOOL MatchImpl_Coef(CByteBuff &smallBuffer, CByteBuff &bigBuffer, stSISMatchResult &matchResult, double acceptance, BOOL bUseInterpolate);
|
|
BOOL Check_Buffer(CUShortBuff &smallBuffer, CUShortBuff &bigBuffer);
|
BOOL Check_Buffer(CByteBuff &smallBuffer, CByteBuff &bigBuffer);
|
|
};
|
/*
|
int64 CrossCorr_8u_C1(const uchar * vec1, const uchar * vec2, int len );
|
|
BOOL MatchSimd(CByteBuff &smallBuffer, CByteBuff &bigBuffer, stSISMatchResult &matchResult, stSISMatchParam matchParam);
|
*/
|
#endif // !defined(AFX_MATCHIMPL_H__55548055_7034_4B12_A642_2771D6DFBAA4__INCLUDED_)
|