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<