www.pudn.com > several_kinds_Histogram.rar > AutoCorrHist.CPP


#include "stdafx.h" 
#include"AutoCorrHist.h" 
 
 #define FAST  //¿ìËÙËã·¨ 
// #define origin  
//  #define changed 
 
bool AutoCorrHist::ApplySpace() 
{ 
	//judge the distance is valid or not 
	if(DistSet.empty()) 
		return false; 
    std::set::const_iterator iter=DistSet.begin(); 
	for(;iter!=DistSet.end();++iter) 
	{ 
		if(*iter<0) 
			return false; 
	} 
 
	 HistSize=m_c1*m_c2*m_c3*DistSet.size(); 
	pHist=new double[HistSize] (); 
	if(pHist==NULL) 
		return false; 
 
     
	for(WORD i=0;i!=HistSize;++i) 
		 pHist[i]=0; 
	 return true; 
} 
 
 
#ifdef origin 
bool AutoCorrHist::ExtractHistogram() 
{ 
	int imagewidth=pimagedata->width; 
	int  imageheight=pimagedata->height; 
 
	std::vector::iterator iter=feature.begin(); 
	DWORD *phistogram=new DWORD[m_c1*m_c2*m_c3] (); 
/*	DWORD *ppHist=new DWORD [m_c1*m_c2*m_c3]();*/ 
	std::vector::size_type i=0; 
	for(;i!=m_c1*m_c2*m_c3;++i) 
         phistogram[i]=0; 
     
	for(;iter!=feature.end();++iter) 
	{ 
		std::vector::size_type i=iter-feature.begin(); 
	/*	cout<<*iter;*/ 
		 
		phistogram[*iter]++;    
		std::set::iterator iterset=DistSet.begin(); 
		 
		int height=i/imagewidth; 
		int width=i%imagewidth; 
 
       /* cout<=k && width>=k && heightheight-k;--m) 
			{ 
					if(feature.at(m*imagewidth+n)==*iter) 
						pHist[(*iter)*DistSet.size()+j]++; 
			} 
			 
			m=height-k; 
			for(n=width+k;n>width-k;--n) 
			{ 
				if(feature.at(m*imagewidth+n) ==*iter) 
                    	pHist[(*iter)*DistSet.size()+j]++; 
			} 
	 	  } 
		 /* cout<=0 && n=0 && m=0 && m=0 && nheight-k;--m) 
//			  { 
//					  if(n>=0 && n=0 && mwidth-k;--n) 
//			  { 
//					  if(m>=0 && m=0 && n::iterator iter=DistSet.begin(); 
	/*	cout<width; 
	int  imageheight=pimagedata->height; 
	//compute the H(k) 
	DWORD *phistogram=new DWORD[m_c1*m_c2*m_c3] (); 
/*	DWORD *ppHist=new DWORD [m_c1*m_c2*m_c3]();*/ 
	for(std::vector::size_type i=0;i::iterator iterset=DistSet.begin();iterset!=DistSet.end();++iterset,++l) 
	{ 
		int k=*iterset; 
	// 	std::vector::iterator iter=feature.begin(); 
		for(int i=k;i| 
 
				//  | 
				//  | 
				// \|/ 
			    n=width-k; 
		    	for(m=height-k;m 
			 //      	 
			 //	         
			   m=height+k; 
			   for(n=width-k;nheight-k;--m) 
				{ 
					if(feature.at(m*imagewidth+n)==value) 
						pHist[value*DistSet.size()+l]++; 
				} 
			 //<---------------- 
		     	m=height-k; 
		    	for(n=width+k;n>width-k;--n) 
				{ 
				 if(feature.at(m*imagewidth+n) ==value) 
                    	pHist[value*DistSet.size()+l]++; 
				} 
			  
			}//end for visiting the pixels on the square centered (i,j) 
		 
	} 
	 
 
 
//compute the corr histogram 
//	for(WORD x=0;x!=m_c1*m_c2*m_c3*DistSet.size();++x) 
//   		pHist[x]=0; 
 
	for(int i1=0;i1::iterator iter=DistSet.begin(); 
	/*	cout<width; 
	int  imageheight=pimagedata->height; 
	// std::vector::iterator iter=feature.begin(); 
	DWORD *phistogram=new DWORD[m_c1*m_c2*m_c3] (); 
	DWORD *phisttemp=new DWORD[m_c1*m_c2*m_c3]();  
/*	DWORD *ppHist=new DWORD [m_c1*m_c2*m_c3]();*/ 
 
	std::set::size_type m=0; 
	for(m=0;m::iterator iter=feature.begin(); 
	for(m=0;m::iterator iter_set=DistSet.begin();iter_set!=DistSet.end();++iter_set,++m) 
	{ 
		std::vector::iterator iter=feature.begin(); 
		WORD k=*iter_set; 
		WORD length=2*k+1; 
	  std::vector::size_type i=0; 
	  std::vector::size_type j=0; 
	/*	int i,j;*/ 
 
	  std::vector::size_type index=0; 
		//compute the horizon number 
       for(i=0;i=k && i=k && i::iterator iter=feature.begin(); 
		WORD k=*iter_set; 
		WORD length=2*k-1; 
	  std::vector::size_type i=0; 
	  std::vector::size_type j=0; 
	  std::vector::size_type index=0; 
       //for each row 
		for(j=0;j=k &&j::iterator iter=DistSet.begin(); 
	/*	cout<