c语言实现灰度图像阈值分割,灰度图像--图像分割 阈值处理之平均阈值

学习DIP第52天

转载请标明本文出处:http://blog.csdn.net/tonyshengtan ,出于尊重文章作者的劳动,转载请标明出处!文章代码已托管,欢迎共同开发:https://github.com/Tony-Tan/DIPpro

开篇空话

好久没写博客了,已然不熟练了,过完年全部人都不好了,哈哈,到刚才为止算是把图象分割学习了1下,这两天把学习结果和代码简单总结1下。

前面已介绍了边沿检测,和边沿修复,阈值处理的基本概念也进行了1定介绍。阈值处理速度快,算法简单,所以利用比较广泛,算法的基本问题在于计算出阈值处理的阈值,在接下来的几篇我可,介绍几种肯定阈值的算法,基本数学知识都来自统计学,包括最简单的平均数,p-分位数,方差等数学知识。

下面就从最简单的均值阈值开始介绍。

平均阈值

均值处理属于阈值中最简单的1种,其使用的1副图象所有灰度的均值作为阈值,分割图象。

根据统计学知识,求均值可使用几率方法:

1. 计算图象灰度直方图

2. 归1化直方图,得出直方图每项的几率

3. 直方图的横坐标与几率的成绩然后求和threshold=mean=∑L?1i=0p(i)×i

根据以上均值得到阈值,然后根据阈值处理基本公示处理整幅图象。

代码

/*********************************************************************************/

/*********************************************************************************/

计算从start到end的直方图的平均值,hist未归1化

double getMeaninHist(int start,int end,int *hist){

int hist_count=0;

double hist_value=0;

for(int i=start;i

hist_count+=hist[i];

hist_value+=(double)hist[i]*i;

}

return hist_value/(double)hist_count;

}

/*********************************************************************************/

/*********************************************************************************/

//均值法求阈值

//阈值等于全图的像素的平均值

void MeanThreshold(double *src,double *dst,int width,int height,int type){

int hist[GRAY_LEVEL];

double threshold_value=0.0;

InitHistogram(hist);

setHistogram(src, hist, width,height);

threshold_value=getMeaninHist(0, GRAY_LEVEL, hist);

Threshold(src,dst, width, height, threshold_value,type);

}

结果

视察1下结果:

原图:20820e9cd57d6c9f31b56f93dc040ded.png

原图直方图:ad774d9e97618e9b753a10efb64f8ea1.png

平均阈值:d5f1eaf461f53b9bab69d0b8e6cd76b7.png

阈值处理结果:dc4180d17198dedb5b20769a2aec00a3.png

原图加入1%的高斯噪声

未处理:46a2b0b6e5f962e3bc3601dcaab077eb.png

直方图:7d35016a914d845642defcf7c0b1fe92.png

平均阈值:85f3a76f49d606b7006d9def84bd3802.png

阈值处理结果:476ce724bef202a32b170bf062589b2b.png

原图加入5%的高斯噪声

未处理:0bfd260a690e88489096fc599936010a.png

直方图:259814608ca8614d6b7de475be9c0e16.png

平均阈值:dc56a5e9c04521453674f14147f52c16.png

阈值处理结果:e81783bf836e546a5754c183038849e4.png

原图加入7%的高斯噪声

未处理:7de85ee780c6460159c8d55ee892124a.png

直方图:6bcc9f1c8b6240a88f89ed75bd937334.png

平均阈值:710c9e1216253ce856fe0120483aa8ef.png

阈值处理结果:f21798224bf2975b66aef678fcbf8be7.png

lena图均值阈值处理:

原图:6a0478c53680131faa509e821faedc52.png

处理后结果:99ca5035231676f9f8e1606a6c2126f9.png

阈值:882ad603d908a21e106c7d33eb12d7e3.png

总结

均值阈值可以完成1些较为简单的的处理,但对目标与背景的大小敏感,也就是直方图那两个峰的面积大小有关,如果这两个峰相对大小相差不多,那末均值相对效果较好,如果两个峰相差太多,也就是背景比目标大很多或相反目标比背景大很多时,结果失效。其次也遭到噪声影响,但没有上1因素影响大。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值