- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
分享到
一键分享
QQ空间
新浪微博
百度云收藏
人人网
腾讯微博
百度相册
开心网
腾讯朋友
百度贴吧
豆瓣网
搜狐微博
百度新首页
QQ好友
和讯微博
更多...
百度分享
登录|注册
窗体顶端
窗体底端
收藏成功
确定
收藏失败,请重新收藏
确定
窗体顶端
标题
标题不能为空
网址
标签
摘要
公开
取消收藏
窗体底端
分享资讯
传PPT/文档
提问题
写博客
传资源
创立工程
创立代码片
设置昵称编辑自我介绍,让更多人了解你
帐号设置退出
社区
博客
论坛
下载
Share
极客头条
效劳
CODE
英雄会
活动
CSTO
俱乐部
CTO俱乐部
高校俱乐部
奋斗斌斌的专栏
解决工程中的琐碎细节问题
目录视图
摘要视图
订阅
有奖征资源,博文分享有内涵人气博主的资源共享:老罗的Android之旅微软Azure?英雄会编程大赛题关注CSDN社区微信,福利多多社区问答:叶劲峰游戏引擎架构
灰度图像阈值化分割常见方法总结及VC实现
分类:图像处理OpenCV2011-11-1123:207427人阅读评论(14)收藏\o举报举报
算法图形byte图像处理扩展
目录(?)[+]
Otsu法最大类间方差法
一维交叉熵值法
二维OTSU法
参考文献
在图像处理领域,二值图像运算量小,并且能够表达图像的关键特征,因此被广泛使用。将灰度图像变为二值图像的常用方法是选定阈值,然后将待处理图像的每个像素点进行单点处理,即将其灰度值与所设置的门限进行比对,从而得到二值化的黑白图。这样一种方式因为其直观性以及易于实现,已经在图像分割领域处于中心地位。本文主要对最近一段时间作者所学习的阈值化图像分割算法进行总结,全文描述了作者对每种算法的理解,并基于OpenCV和VC6.0对这些算法进行了实现。最终将源代码公开,希望大家一起进步。〔本文的代码暂时没有考虑执行效率问题〕
首先给出待分割的图像如下:
1、Otsu法〔最大类间方差法〕
该算法是日本人Otsu提出的一种动态阈值分割算法。它的主要思想是按照灰度特性将图像划分为背景和目标2局部,划分依据为选取门限值,使得背景和目标之间的方差最大。〔背景和目标之间的类间方差越大,说明这两局部的差异越大,当局部目标被错划分为背景或局部背景错划分为目标都会导致这两局部差异变小。因此,使用类间方差最大的分割意味着错分概率最小。〕这是该方法的主要思路。其主要的实现原理为如下:
????1〕建立图像灰度直方图〔共有L个灰度级,每个出现概率为p〕
????2〕计算背景和目标的出现概率,计算方法如下:
上式中假设t为所选定的阈值,A代表背景〔灰度级为0~N〕,根据直方图中的元素可知,Pa为背景出现的概率,同理B为目标,Pb为目标出现的概率。
????3〕计算A和B两个区域的类间方差如下:
第一个表达式分别计算A和B区域的平均灰度值;
第二个表达式计算灰度图像全局的灰度平均值;
第三个表达式计算A、B两个区域的类间方差。
????4〕以上几个步骤计算出了单个灰度值上的类间方差,因此最正确分割门限值应该是图像中能够使得A与B的类间灰度方差最大的灰度值。在程序中需要对每个出现的灰度值据此进行寻优。
本人的VC实现代码如下。
[cpp]viewplaincopyprint?
/*****************************************************************************?
*?
*?\函数名称:
*???OneDimentionOtsu()?
*?
*?\输入参数:?
*???pGrayMat:??????二值图像数据
*???width:?????????图形尺寸宽度
*???height:????????图形尺寸高度
*???nTlreshold:????经过算法处理得到的二值化分割阈值
*?\返回值:?
*???无
*?\函数说明:实现灰度图的二值化分割——最大类间方差法〔Otsu算法,俗称大津算法〕
*?
****************************************************************************/??
void?CBinarizationDlg::OneDimentionOtsu(CvMat?*pGrayMat,?int?width,?int?height,?BYTE?nThreshold)??
{??
????double?nHistogram[256];?????????//灰度直方图
????double?dVariance[256];??????????//类间方差
????int?N?=?height*width;???????????/
文档评论(0)