ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

大津

2019-08-01 10:01:33  阅读:308  来源: 互联网

标签: ++ image histogram 灰度 w0 256


void Ostu()
{
        //初始化
        u = 0;
        avgValue = 0;
        w0 = 0;
        maxVariance = 0;
        //清空灰度数组
        for(i = 0; i < 256; i++)
        {
            histogram[i] = 0;
        }
        
        // 生成灰度柱状图
        uint8_t *p_image = &image[0][1];
        for (i = 0; i < 70; ++i) //有0-255 种灰度  把每种灰度的数量统计出来,所以下标代表灰度 数组里的数字代表此种灰度有多少个
        {
                for (int j = 0; j < 186; ++j)
                {//44-374
                        ++histogram[*p_image];
                        p_image++;
                }
                p_image += 2;
        }
        
        
        for (i = 0; i < 256; ++i)
        {
                histogram[i] = histogram[i] / size; //灰度数量/尺寸 =比例
                u += i * histogram[i];              //当前灰度值*比例的累加就是 总的平均灰度
        }
        
        for (i = 0; i < 256; ++i)
        {
                w0 += histogram[i];  //前景像素占比 假设前i个是前景
                avgValue += i * histogram[i];  //前景总的灰度
                t = avgValue / w0 - u;         //前景平均灰度-总灰度  t=u-u0
                variance = t * t * w0 / (1 - w0); // g = w0/(1-w0)*(u0-u1)^2
                if (variance > maxVariance)
                { //找到使灰度差最大的值
                        maxVariance = variance;
                        Ostu_Threshold = i;            //那个值就是阈值
                }
        }
        
        //生成二值化数组 加速二值化
        for(i = 0; i < Ostu_Threshold; i++)
        {
            Bin_Array[i] = 0;
        }
        for(i = Ostu_Threshold; i < 256; i++)
        {
            Bin_Array[i] = 1;
        }
}
  1. 背景像素占比 \omega1 = \frac{N1}{Sum}  
  2. 前景像素占比\omega2 = 1- \omega1 = \frac{N2}{Sum} =1- \frac{N1}{Sum}
  3. 背景的平均灰度值\mu 1 = \sum_{i = 0}^{t} i *Pr(i | C_{0}) = \sum_{i = 0}^{t} i *Pi / \sum_{i = 0}^{t} Pi = \frac{\mu(t))}{\omega_{1}}
  4. 前景的平均灰度值\mu 2 = \sum_{i = t+1}^{M - 1} i *Pr(i | C_{1}) = \sum_{i = t+1}^{M - 1} i *Pi / \sum_{i = t+1}^{M - 1} Pi = \frac{\mu - \mu(t))}{\omega _{2}}
  5. 0~M灰度区间的灰度累计值\mu = \mu1*\omega 1 + \mu2*\omega 2
  6. 类间方差:g = \omega 1 * (\mu - \mu1)^{2} + \omega 2 * (\mu - \mu2)^{2}
  7. 将公式3.4.5带入公式6 可得最终简化公式: g = \omega 1 * \omega2 * (\mu1 - \mu2)^{2}

标签:,++,image,histogram,灰度,w0,256
来源: https://www.cnblogs.com/jizhaoyang/p/11280711.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有