OTSU算法可以说是自适应计算单阈值用来转换灰度图像为二值图像.DOCVIP

OTSU算法可以说是自适应计算单阈值用来转换灰度图像为二值图像.DOC

  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算法可以说是自适应计算单阈值用来转换灰度图像为二值图像

OTSU算法 OTSU算法以最佳门限将图像灰度直方图分割成两部分,使两部分类间方差取最大值,即分离性最大。 设图像灰度级 ,第 级象素 个,总象素 ,则第级灰度出现的概率为 。 设灰度门限值为 ,则图像像素按灰度级被分为两类: , 图像总平均灰度级: 类的平均灰度级为: ,像素数为: 类的平均灰度级为: , 像素数为: 两部分图像所占比例分别为: 对,均值作处理: 图像总均值可化为: 类间方差: 化为: 从变化,使 最大的 即为所求之最佳门限。 称为目标选择函数。 My code: int i; //图像灰度级 from 0--255 double n[256]; //第i级像素n[i]个 double Pro[256]; //第i级灰度出现的概率 double Tavegray = 0; //图像总平均灰度级 double avegray0[256] ; //C0类的平均灰度级 double avegray1[256] ; //C1类的平均灰度级 int N = 0; //总像素 int N0 = 0; //C0类的像素数 int N1 = 0; //C1类的像素数 double w0 = 0, w1 = 0; //分别为两部分图像所占比例 double mean0 = 0, mean1 = 0, mean = 0; //对C0,C1 均值作处理,及图像总均值 double var[256]; //类间方差 int k = 0; //灰度门限值 double w[256]; //w[k]当门限值为k时,C0类图像所占的比值 int Threshold; //门限值 //数组初始化 for( i = 0; i 256; i++ ) { n[i] = 0; Pro[i] = 0; avegray0[i] = 0; avegray1[i] = 0; var[i] = 0; w[i] = 0; } int I; LPSTR lpDibHdr = (LPSTR)::GlobalLock(hDib); LPBITMAPINFOHEADER lpbmi = (LPBITMAPINFOHEADER)lpDibHdr; //得到指向位图的信息头结构的指针 LPSTR lpDibBits = lpDibHdr - lpbmi-biSize; //得到指向位图数据的指针 for( int y = 0; y lpbmi-biHeight; y++ ) { for( int x = 0; x lpbmi-biWidth; x++ ) { COLORREF c; BYTE* pDate = (BYTE*)lpDibBits + (lpbmi-biHeight-y) * getpiont( hDib )+ ( x ) * 3; //((lpbmi-biWidth*24+31)/32*4) c = RGB( pDate[2], pDate[1], pDate[0]); // COLORREF cNew; // BYTE* pDateNew = (BYTE*)lpNewDibBits + (lpNewbmi-biHeight -y) * getpiont(hDib) + ( x ) * 3; //((lpbmi-biWidth*24+31)/32*4) // cNew = RGB( pDateNew[2], pDateNew[1], pDateNew[0]); I = ( pDate[2] + pDate[1] + pDate[0] ) / 3; n[I]++; } } //总象素 for( i = 0; i 256; i++ ) { N += n[i]; } //第i级灰度出现的概率 for( i = 0; i 256; i++ ) { Pro[i] = ( n[i] / N ); } //图像总平均灰度级 for( i = 1; i = 256; i++ ) { Tavegray += ( i * Pro[i - 1] ); } for ( k = 0; k 256; k++ ) { for( i = 1; i k+1 ; i++ ) { avegray0[k] += i*Pro[i];//C0类的平均灰度级 // N0 += n[

文档评论(0)

ailuojue + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档