代码实现:
//OpenCv版
int CFractalImageRecognitionDlg::BestThresholdValue(IplImage* m_grayImage) //灰度化图像
{
//判别分析法,返回最佳阈值
int height = m_grayImage->height;
int width = m_grayImage->width;
if (height*width>65536)
{
MessageBox("图片大小超出指定范围","提示");
return -1;//返回错误标识
}
int w1Src[65536],w2Src[65536];
double ratio[256],tempRatio=0.0;
int i,j,k,bestK=0;
for (k=0;k<256;k++)
{
int w1=0,w2=0,sumW1=0,sumW2=0;//像素数,总灰度值
double m1=0,m2=0,deta1=0,deta2=0,temp1=0,temp2=0;//灰度平均值,方差,求方差用到的中间变量
//逐行扫描
for(i = 0; i < height; i++)
{
//逐列扫描
for(j = 0; j < width; j++)
{