几种灰度图二值化处理的典型算法及vc++实现的代码

1、大律法

                      大津法又称最大类间方差法。对图像,记t为前景与背景的分割阈值,前景点数占图像比例为 w0, 平均灰度为u0;背景点数占图像比例为w1,平均灰度为u1。图像的总平均灰度为:u=w0*u0+w1*u1。从最小灰度值到最大灰度值遍历t,        当t使 得值      g=w0*(u0-u)2 +w1*(u1-u)2 最大时t即为分割的最佳阈值。阈值t分割出的前景和背景两部分构成了整幅图像,而前景取值u0,概率为w0,背景取值u1,概率为w1,总均值为u,根据 方差的定义即得该式。因方差是灰度分布均匀性的一种度量,方差值越大,说明构成图像的两部分差别越大,当部分目标错分为背景或部分背景错分为目标都会导致 两部分差别变小,因此使类间方差最大的分割意味着错分概率最小。直接应用大津法计算量较大,因此我们在实现时采用了等价的公式g=w0*w1*(u0- u1)2 。

实现的代码:

               BOOL OSTUThreshold(unsigned char *image1,   LONG   lWidth,   LONG   lHeight)   
 {
int a;
//得到灰度直方图,灰度的最大值和最小值
int i,j,t;
long lCount[256];                //各个灰度值的计数
int lMaxgrayvalue=0;
int lMingrayvalue=255;
int lThreshold; //阈值
long lLineBytes; //图像每行的字节数
lLineBytes=WIDTHBYTES(lWidth);
for(a=0;a<256;a++)
{
lCount[a]=0;
}
for(i=0;i<lHeight;i++)
{
for(j=0;j<lWidth;j++)
{
    //各个灰度值的计数
lCount[image1[i*lLineBytes+j]]++;
}
}
for(i=0;i<256;i++)
{
if (lCount[i]!=0)
{
lMingrayvalue=i;
break;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值