用大津法处理图像之后为什么只有一半的效果

救救孩子


主要代码如下 double w0, w1;//背景/目标像素占比 double u0, u1;//目标/背景平均灰度值 double fTempVar = 0;//类间方差 double fMaxVar = 0;//最大类间方差 double fBestValue = 0;//最优阈值 double fTemp0, fTemp1; for (int k = 0; k < nGrayScale; ++k) { w0 = w1 = u0 = u1 = fTempVar = 0; fTemp0 = fTemp1 = 0; //前景,背景区分 [0-k][k+1-255] for (int i = 0; i < nGrayScale; ++i) { //如果当前像素值小于阈值k则属于背景,反之属于目标 if (i <= k) { //计算背景像素占比 w0 += fPixelPct[i]; //计算当前灰度值发生的概率:灰度值*灰度值发生的概率 fTemp0 += (i * fPixelPct[i]); } else { //计算背景像素占比 w1 += fPixelPct[i]; fTemp1 += (i * fPixelPct[i]); } } //计算平均灰度值:p0/w0 u0 = fTemp0 / w0; u1 = fTemp1 / w1; //计算类内方差 fTempVar = (float)(w0 * w1 * pow((u0 - u1), 2)); if (fTempVar > fMaxVar) { fMaxVar = fTempVar; fBestValue = k; } } threshold(src, dst, fBestValue, 255, THRESH_BINARY);