智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1096|回复: 0
打印 上一主题 下一主题

求助岱默科技定位眼大津算法当中的一段代码解释

[复制链接]

1

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
25
威望
17
贡献
8
兑换币
6
注册时间
2016-4-14
在线时间
0 小时
毕业学校
兰州理工大学
跳转到指定楼层
1#
发表于 2016-4-14 11:39:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
诸位大神,近日在看定位眼,岱默科技的,其中图像处理方面用到大津算法求动态阈值,但是他的方差不是按照定义的公式求解的,而是用的这样的方法:/**************************************************************************                      岱默科技DEMOK 定位眼摄像头开发小组
*
*  函数名称:OTSU_threshold
*  功能说明:经典大津算法 动态阈值
*  修改时间:2015-12-06
*  备    注:
*************************************************************************/
#define Gourd 256
uint8 OTSU_threshold(uint8 *pic,uint16 num)
{
   uint16 i=0;
   uint16 Histogram[Gourd];//直方图histogram
   for (i=0;i<Gourd;i++)Histogram[i]=0;//数组清零

   for (i=0;i<num;i++)
   {
       Histogram[(int)pic[i]*Gourd/256]++;
   }

  float pt[Gourd],w[Gourd],u[Gourd],o[Gourd],Ut;

  pt[0]=(float)Histogram[0]/num;
  w[0]=pt[0];
  u[0]=w[0];

  for(i=1;i<Gourd;i++)
  {
    pt[i]=(float)Histogram[i]/num;
    w[i]=w[i-1]+pt[i];
    u[i]=u[i-1]+i*pt[i];
  };
  Ut=u[Gourd-1];//整幅图像平均灰度

  for(i=0;i<Gourd;i++)
  {
    o[i]=(1-pt[i])*(u[i]*u[i]/w[i]+(u[i]-Ut)*(u[i]-Ut)/(1-w[i]));//方差
  };

  int maxi=0;
  float maxo=0;

  for(i=0;i<Gourd;i++)
  {
    if(o[i]!=0x7FC0000)
    if(o[i]>maxo){maxo=o[i];maxi=i;}

  }
  return maxi*256/Gourd;
}
小弟愚笨,苦于不理解方差这一行的理解。请诸位大神帮我解释一下。
原来大津算法定义的公式为:
g=w0*w1*(u1-u0)^2

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 11:29 , Processed in 0.056161 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表