2.灰度图像阈值确定.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.灰度图像阈值确定

阈值获取总结图像处理中,常去除图像中不理想的部分,而保留对象部分。所以,我们可以通过阈值进行提取,例如,通过阈值法提取出文字部分,可用下式进行表示:但是,随着环境的变化,所给的阈值的不同,对于所提取的对象就有很大的差别。所以,需要一种实时确定阈值的方法使得背景和物体可以准确地分类。在此推荐的方法—— 最大类间方差法(Otsu、大津法)。 通过对比和仔细的推算,此种方法比较容易实现,而且效果比较好。下面简述并且摘录一下文献中关于“最大类间方差法”的说明:最大类间方差法(Otsu)是由Otsu于1979年提出的,是基于整幅图像的统计特性实现阈值的自动选取的,是全局二值化最杰出的代表。Otsu算法的基本思想是用某一假定的灰度值t将图像的灰度分成两组,当两组的类间方差最大时,此灰度值t就是图像二值化的最佳阈值。设图像有L个灰度值,取值范围在 0~L-1,在此范围内选取灰度值 T,将图像分成两组G0和G1,G0包含的像素的灰度值在 0~T,G1的灰度值在 T+1~L-1,用 N 表示图像像素总数。算法可这样理解:阈值T将整幅图像分成前景和背景两部分,当两类的类间方差最大时,此时前景和背景的差别最大,二值化效果最好。因为方差是灰度分布均匀性的一种度量,方差值越大,说明构成图像的两部分差别越大,当部分目标错分为背景或部分背景错分为目标 都会导致两部分差别变小,因此使类间方差最大的分割阈值意味着错分概率最小。大律法得到了广泛的应用,但是当物体目标与背景灰度差不明显时,会出现无法忍受的大块黑色区域,甚至会丢失整幅图像的信息。所以,此时应该适当降低图像的阈值,从而消除大块的黑色区域。下面是具体确定理想阈值的API:/********************************************************************* Function Name : histgram -- 获得灰度图像直方图** Input Param : u8 image_in[Y_SIZE][X_SIZE];// 输入图像数组 ** u32 hist[64]; // 直方图数组 ** Output Param : No** Return Value : No********************************************************************/void histgram(u8 image_in[Y_SIZE][X_SIZE],u16 hist[64]){u16 i,j,n;for(n = 0;n 64; n ++) hist[n] = 0;for(i = 0;i Y_SIZE;i ++){ for(j = 0;j X_SIZE;j ++){ n = image_in[i][j];hist[n] ++; //统计灰度级n } }}/********************************************************************* Function Name : picture_thresh** Input Param : u16 hist[64]** u8 *thresh; // 返回的灰度图像阈值thresh ** Output Param : No** Return Value : No********************************************************************/void picture_thresh(u16 hist[64],u8 *thresh){u8 i;float sum_per0,sum_per1,sum_gray0,sum_gray1;float result,record0,record1;float gray_percentage[64]; //各级灰度的百分比float average_gray[64]; //各级平均灰度值sum_per0 = 0.0;sum_gray0 = 0.0;sum_gray1 = 0.0;record0 = 1;record1 = 0;for(i = 0;i 64;i ++){ gray_percentage[i] = hist[i]/19200.0;average_gray[i] = (float)i*gray_percentage[i];sum_gray1 +=

您可能关注的文档

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档