long pg[256];//圖像灰階陣列
// 衝量保存(moment preserving)法)取閾值
int __fastcall TImageFun::Moment(long *pg, Graphics::TBitmap *InBmp)
{
int Threshold;
float Q[256],error[256];
float m1=0,m2=0,m3=0,a,d,n;
float Cd,C0,C1,Z0,Z1,Pd,P0;
Graphics::TBitmap *TheBitmap;
int Width, Height;
Width=InBmp->Width;
Height=InBmp->Height;
n=Width*Height;
Q[0]=pg[0]/n;
for (int k=1;k<=255;k++)
{
Q[k]=Q[k-1]+pg[k]/n;//灰階累積
}
for (int k=0;k<=255;k++)
{
m1=m1+pg[k]/n*k;
m2=m2+pg[k]/n*k*k;
m3=m3+pg[k]/n*k*k*k;
}
Cd=m2-m1*m1;
C0=(m1*m3-m2*m2)/Cd;
C1=(m1*m2-m3)/Cd;
Z0=(-C1-sqrt(C1*C1-4*C0))/2;
Z1=(-C1+sqrt(C1*C1-4*C0))/2;
Pd=Z1-Z0;
P0=(Z1-m1)/Pd;
for (int k=0;k<=255;k++)
{
d=P0-Q[k];
if (d<0)
error[k]=-d;
else
error[k]=d;
}
a=1;
for (int k=0;k<=255;k++)
{
if (error[k]<a)
{
a=error[k];
Threshold=k;
}
}
return Threshold;
}
//---------------------------------------------------------------------------
圖像二值化取閥值(moment preserving法)c語言實現
4星 · 超过85%的资源 需积分: 9 71 浏览量
2011-09-30
09:24:53
上传
评论 1
收藏 687B RAR 举报
sunweb
- 粉丝: 0
- 资源: 1
- 1
- 2
前往页