急!求图像分割全局门限的代码
本人马上要毕业了现在正纠结于毕业设计,毕业设计的题目是基于直方图的图像二值化处理,今天老师要我做一个全局门限分割。。死活写不对。。求高手帮忙,小女子感激不尽。下面是用MATLAB做的全局门限分割,但是我们要用C语言做,老师说是扩充下代码是:T=0.5*(double(min(f:)))+double(max(f(:))));
done=false;
while~done
g=f>=T;
Tnext=0.5*(mean(f(g))+mean(f(g)));
done=abs(T-Tnext)<0.5;
T=Tnext;
end
全局门限:1,选择一个T的初始估计值2.用T分割图像,这样做会生成两组像素:G1由所有灰度值大于T的像素组成,而G2由所有灰度值小于或等于T的像素组成。3.对区域G1和G2中所有像素计算平均灰度值i1和i2.4计算新的门限值:T=(i1+i2)/2 5重复步骤2和4,直到迭代所得的T值之差小于事先定义的参数T
直方图统计已做出来:void Histrogram(ImageInfo* pImageInfo,double * nCount)
{
int nHeight = pImageInfo->nHeight; //图像的高度
int nWidth = pImageInfo->nWidth; //图像的宽度
int nEffWidth = pImageInfo->nEffWidth; //图像的有效宽度
//分配内存------------------------------------------------------------------------
int i,j,k;
double *pImage = NULL;
pImage = new double [nHeight*nWidth];
for(k=0;k<256;k++)
{
nCount[k]=0;
}
不知道各位高手能看到我写的吗?哎。。。我已经焦头烂额了。。
拜托大家帮帮忙