www.pudn.com > FatRec001.rar > LikelyHood.cpp


////////////////////////////////////////////////////////////////////// 
// LikelyHood.cpp: 类CLikelyHood的接口 
////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
#include "FatRec.h" 
#include "LikelyHood.h" 
 
////////////////////////////////////////////////////////////////////// 
// 构造函数/析构函数 
////////////////////////////////////////////////////////////////////// 
 
CLikelyHood::CLikelyHood() 
{ 
	m_pLikeliHoodArray = NULL; 
	m_pBinaryArray = NULL; 
 
	bmean =  B_Mean; 
	rmean =  R_Mean; 
	brcov[0][0] =  Brcov00; 
	brcov[0][1] =  Brcov01; 
	brcov[1][0] =  Brcov10; 
	brcov[1][1] =  Brcov11; 
} 
 
////////////////////////////////////////////////////////////////////// 
//构造函数: 
//参数:    source-输入图像数据 
//          width-图像宽度 
//          height-图像高度 
////////////////////////////////////////////////////////////////////// 
CLikelyHood::CLikelyHood(RGBQUAD ** source,int width,int height) 
{ 
	int i; 
 
	bmean =  B_Mean; 
	rmean =  R_Mean; 
	brcov[0][0] =  Brcov00; 
	brcov[0][1] =  Brcov01; 
	brcov[1][0] =  Brcov10; 
	brcov[1][1] =  Brcov11; 
 
	m_nWidth = width; 
	m_nHeight= height; 
 
	m_bLikeliHoodReady = false; 
	m_bBinaryReady = false; 
 
	//初始化各数组 
	m_pSourceData = source; 
	m_pLikeliHoodArray = new  double*[height]; 
	for(i=0;i  max)  
				max = m_pLikeliHoodArray[i][j]; 
	 
	for(i=0; i=0;k--) 
	{ 
		double sum = 0; 
		for(i=0; ik*0.1+0.05) 
				m_pBinaryArray[i][j] = 1; 
			else 
				m_pBinaryArray[i][j] = 0; 
			sum += (m_pBinaryArray[i][j]-temp[i][j]); 
		} 
		 
		if(sum < min) 
		{ 
			min = sum; 
			index = 6-k; 
		} 
 
	    for(i=0; ioptimalThreshold) 
			m_pBinaryArray[i][j] = 1; 
		else 
			m_pBinaryArray[i][j] = 0; 
	} 
 
	if(temp!=NULL) 
	{ 
		for(int i=0;i<=m_nHeight-1;i++) 
			if(temp[i]!=NULL) delete temp[i]; 
		delete temp; 
	} 
 
	m_bBinaryReady = true; 
 
	return true; 
}