Otsu分析和总结分析和总结.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
中国图象图形网 中国图象图形网 自动单阈值分割 OTSU 算法的 C 语言实现 (文章来源: /post/print?bid=6id=393020) 大津法(OTSU 法)由大津与 1979 年提出,对图像 Image,记 t 为前景与背景的分割阈值, 前景点数占图像比例为 W ,平均灰度为 U ;背景点数占图像比例为 W ,平均灰度为 U . 0 0 1 1 图像的总平均灰度为:u=W *U + W *U 。从最小灰度值到最大灰度值便利 t,当 t 使得值 0 0 1 1 g=W *(U -u)2+W *(U 0 0 1 1 -u)2 最大时 t 即为分割的最佳阈值。对大津法可作如下理解:该式实际 上就是类间方差值,阈值 t 分割出的前景和背景两部分构成整幅图像,而前景取值 U0,概 率为 W0,背景取值U1,概率为W1,总均值为U,根据方差的定义既是该式。因方差是灰度分布均匀性的一种度量,方差值越大,说明构成图像的两部分差别越大,当部分目标错为 背景或者部分背景分为目标都会导致两部分差别变小,因此使类间方差最大的分割意味着错 分概率最小。 OTSU 的算法,很好用,好不容易才找到的。 /* OTSU 算法可以说是自适应计算单阈值(用来转换灰度图像为二值图像)的简单高效方法。下面的代码最早由 Ryan Dibble 提供,此后经过多人Joerg.Schulenburg, R.Z.Liu 等修改,补正。 算法对输入的灰度图像的直方图进行分析,将直方图分成两个部分,使得两部分之间的距离最大。划分点就是求得的阈值。 parameter: *image --- buffer for image rows, cols --- size of image x0, y0, dx, dy --- region of vector used for computing threshold vvv --- debug option, is 0, no debug information outputed */ /*==================================================================== ==*/ /* OTSU global thresholding routine */ /* takes a 2D unsigned char array pointer, number of rows, and */ /* number of cols in the array. returns the value of the threshold */ /*==================================================================== ==*/ int otsu (unsigned char *image, int rows, int cols, int x0, int y0, int dx, int dy, int vvv) { unsigned char *np; // 图像指针 int thresholdValue=1; // 阈值 int ihist[256]; // 图像直方图,256 个点 int i, j, k; // various counters int n, n1, n2, gmin, gmax; double m1, m2, sum, csum, fmax, sb; // 对 直 方 图 置 零 ... memset(ihist, 0, sizeof(ihist)); gmin=255; gmax=0; // 生成直方图 for (i = y0 + 1; i y0 + dy - 1; i++) { np = image[i*cols+x0+1]; for (j = x0 + 1; j x0 + dx - 1; j++) { ihist[*np]++; if(*np gmax) gmax=*np; if(*np gmin) gmin=*np; np++; /* next pixel */ } } // set up everything sum = csum = 0.0; n = 0; for (k = 0; k = 255; k++) { sum += (double) k * (double) ihist[k]; /* x*f(x) 质量矩*/ n += ihist[k]; /* f(x) 质量 */ } if (!n) { // if n has no value, there is problems... fprintf (stderr, NOT NORMAL thresholdVal

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档