关于MFC的图像处理问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 23:51:37
CImageProcessingDoc* pDoc = GetDocument(); //文档指针
unsigned char gray;
int h[256],hist[256],Nf; //Nf = m*n(m,n分别为图像的长和宽
Nf=pDoc->m_orgImage.GetHeight()*pDoc->m_orgImage.GetWidth(); //求出图像f的总体像素个数
pDoc->m_orgImage.GetHistogram(h); //得到灰度直方图
pDoc->m_orgImage.GetHistogram(hist); //得到灰度直方图
double u1[254],u2[254]; //图像和背景的类内均值
double s1=0,s2=0; //图像和背景的类内方差
double p1[254],p2[254]; //图像和背景在整张图片的分布概率
for(int j=1;j<=254;j++)
{
int i,t1=0,t2=0;
double min=0;
for(i=1;i<j;i++)
hist[i]=hist[i]+hist[i-1];
p1[j-1]=hist[j]/Nf; //背景在该张图片中所占的比列
for(i=j;i<=254;i++)
hist[i]=hist[i]+hist[i-1];
p2[j-1]=hist[j]/Nf; //目标在该张图片中所占的比列
for(i=0;i<j;i++)
{
t1+=i*h[i];
t2+=h[i];
}
u1[j-1]=t1/t2; //计算背景的灰度均值
for(i=j;i<=254;i++)
{
t1+=i*h[i];
t2+=h[i];
}
u2[j-1]=t1/t2; //计算目标的灰度

我猜你用的可能是一种名叫“大津法”的二值化阀值计算公式。

详细程序还没有看,

u2[j-1]=t1/t2; //计算目标的灰度均值

这个地方,两个整数的除法,结果还将是整数,建议用

u2[j-1]=t1/(double)t2; //计算目标的灰度均值

做数据型变换。

太高深了,膜拜。。。
很怀疑百度里有MFC高手存在。