65,208
社区成员
发帖
与我相关
我的任务
分享
class CMath
{
public:
//constructor
CMath()
{
m_ulBufLen = 0;
m_pBuffer = NULL;
}
~CMath()
{
ReleaseBuffer();
}
public:
static bool MinMax(type_val* pvSrc, type_len nLen, type_val* pvMin, type_val* pvMax)
{
if (pvSrc == NULL || nLen < 1)
return false;
if (pvMin == NULL && pvMax == NULL)
return false;
type_val vMin, vMax;
type_val* pvSrcTemp = pvSrc;
vMin = vMax = *pvSrcTemp;
for (register unsigned long i = 0; i < nLen; i++, pvSrcTemp++)
{
vMin = vMin>*pvSrcTemp ? *pvSrcTemp : vMin;
vMax = vMax<*pvSrcTemp ? *pvSrcTemp : vMax;
}
*pvMin = vMin;
*pvMax = vMax;
return true;
}
#include"Math.h"
class CImageBase : public CImageFile
{
public:
//constructor
CImageBase();
~CImageBase();
template<class type_val, class type_len, class type_result>
static bool Histogram(type_val* pData, type_len nLen, type_result* pHist, int nHistLen, bool bNormalized=true) //normalized to [0,1]
{
if (pData == NULL || pHist == NULL || nLen <= 0 || nHistLen <= 0)
{
//throw "parameter invalid";
return false;
}
class CMath;
type_val vMin = 0;
type_val vMax = 1;
if (!bNormalized)
{
CMath::MinMax(pData, nLen, &vMin, &vMax);
}.......
}