uchar CFaceDlg::ThreshOtus(IplImage *src)
{
int m_histArray[256];
float u0,u1;
int count0;
int t;
uchar maxT;
float w0,w1;
float devi,maxDevi=0;
int sum=0;
int i,j;
uchar temp;
for(i=0;i<256;i++)
m_histArray[i]=0;
for(i=0;i<src->height;i++)
{
for(j=0;j<src->width;j++)
{
temp=(uchar)(src->imageData+i*src->widthStep)[j];
m_histArray[temp]++;
}
}
for(i=0;i<256;i++)
sum=sum+m_histArray[i];
for(t=0;t<255;t++)
{
u0=0;
count0=0;
for(i=0;i<=t;i++)
{
u0+=i*m_histArray[i];
count0+=m_histArray[i];
}
u0=u0/count0;
w0=(float)count0/sum;
u1=0;
for(i=t+1;i<256;i++)
u1+=i*m_histArray[i];
u1=u1/(sum-count0);
w1=1-w0;
devi=w0*w1*(u1-u0)*(u1-u0);
if(devi>maxDevi)
{
maxDevi=devi;
maxT=t;
}
}
return maxT;
}
OTSU算法
最新推荐文章于 2023-11-30 16:19:57 发布