网站大量收购独家精品文档,联系QQ:2885784924

自适应阈值分割—大津法(OTSU算法)C++实现.pdfVIP

自适应阈值分割—大津法(OTSU算法)C++实现.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

⾃⾃适适应应阈阈值值分分割割—⼤⼤津津法法((OTSU算算法法))C++实实现现

⼤津法是⼀种图像灰度⾃适应的阈值分割算法,是1979年由⽇本学者⼤津提,并由他的名字命名的。⼤津法按照图像上灰度值的

分布,将图像分成背景和前景两部分看待,前景就是我们要按照阈值分割来的部分。背景和前景的分界值就是我们要求的阈

值。遍历不同的阈值,计算不同阈值下对应的背景和前景之间的类内⽅差,当类内⽅差取得极⼤值时,此时对应的阈值就是⼤津法

(OTSU算法)所求的阈值。

何何为为类类间间⽅⽅差差??

对于图像I(x,y),前景(即⽬标)和背景的分割阈值记作T,属于前景的像素点数占整幅图像的⽐例记为ω0,其平均灰度µ0;背景像素

点数占整幅图像的⽐例为ω1,其平均灰度为µ1。图像的总平均灰度记为µ,类间⽅差记为g。

假设图像的背景较暗,并且图像的⼤⼩为M×N,图像中像素的灰度值⼩于阈值T的像素个数记作N0,像素灰度⼤于阈值T的像素个

数记作N1,则有:

ω0=N0/M×N(1)

ω1=N1/M×N(2)

N0+N1=M×N(3)

ω0+ω1=1(4)

µ=ω0*µ0+ω1*µ1(5)

g=ω0(µ0-µ)^2+ω1(µ1-µ)^2(6)

将式(5)代⼊式(6),得到等价公式

g=ω0ω1(µ0-µ1)^2(7)这个就是类间⽅差的公式表述

采⽤遍历的⽅法得到使类间⽅差g最⼤的阈值T,即为所求。

Otsu实实现现思思路路

1.计算0~255各灰阶对应的像素个数,保存⾄⼀个数组中,该数组下标是灰度值,保存内容是当前灰度值对应像素数

2.计算背景图像的平均灰度、背景图像像素数所占⽐例

3.计算前景图像的平均灰度、前景图像像素数所占⽐例

4.遍历0~255各灰阶,计算并寻找类间⽅差极⼤值

C++代码实现:

#includeopencv2/highgui/highgui.hpp

#includeopencv2/imgproc/imgproc.hpp

#includeopencv2/core/core.hpp

#includeiostream

usingnamespacecv;

usingnamespacestd;

//***************Otsu算法通过求类间⽅差极⼤值求⾃适应阈值******************

intOtsuAlgThreshold(constMatimage);

intmain(intargc,char*argv[])

{

Matimage=imread(argv[1]);

imshow(SoureImage,image);

cvtColor(image,image,CV_RGB2GRAY);

MatimageOutput;

MatimageOtsu;

intthresholdValue=OtsuAlgThreshold(image);

cout类间⽅差为:thresholdValueendl;

threshold(image,imageOutput,thresholdValue,255,CV_THRESH_BINARY);

threshold(image,imageOtsu,0,255,CV_THRESH_OTSU);//OpencvOtsu算法

//imshow(SoureImage,image);

imshow(OutputImage,imageOutput);

imshow(OpencvOtsu,imageOtsu);

waitKey();

return0;

}

intOtsuAlgThreshold(constMatimage)

{

if(image.channels()!=1)

{

coutPleaseinputGray-image!endl;

return0;

}

intT=0;//Otsu算法阈值

doublevarValue=0;//类间⽅差中间值保存

doublew0=0;//前景像素点数所占⽐例

doublew1=0;//背景像素点数所占⽐例

doubleu0=0;//前景平均灰度

doubleu1=0;//背景平均灰度

doubl

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档