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下结果:
原图:
原图直方图:
平均阈值:
阈值处理结果:
原图加入1%的高斯噪声
未处理:
直方图:
平均阈值:
阈值处理结果:
原图加入5%的高斯噪声
未处理:
直方图:
平均阈值:
阈值处理结果:
原图加入7%的高斯噪声
未处理:
直方图:
平均阈值:
阈值处理结果:
lena图均值阈值处理:
原图:
处理后结果:
阈值:
总结
均值阈值可以完成1些较为简单的的处理,但对目标与背景的大小敏感,也就是直方图那两个峰的面积大小有关,如果这两个峰相对大小相差不多,那末均值相对效果较好,如果两个峰相差太多,也就是背景比目标大很多或相反目标比背景大很多时,结果失效。其次也遭到噪声影响,但没有上1因素影响大。
c语言实现灰度图像阈值分割,灰度图像--图像分割 阈值处理之平均阈值相关推荐
- 【MATLAB教程案例23】基于MATLAB图像分割算法仿真——阈值分割法、Otsu阈值分割法、K均值聚类分割法等
FPGA教程目录 MATLAB教程目录 目录 1.软件版本 2.通过二值图实现图像分割 3.通过Otsu阈值分割实现图像分割
- 七种图像阈值分割技术
一.工具:VC+OpenCV 二.语言:C++ 三.原理 otsu法(最大类间方差法,有时也称之为大津算法)使用的是聚类的思想,把图像的灰度数按灰度级分成2个部分,使得两个部分之间的灰度值差异最大,每 ...
- opencv中几种阈值分割
七种常见阈值分割代码(Otsu.最大熵.迭代法.自适应阀值.手动.迭代法.基本全局阈值法) 一.工具:VC+OpenCV 二.语言:C++ 三.原理 otsu法(最大类间方差法,有时也称之为大津算法) ...
- 【CV】基于阈值处理的图像分割算法!
图像处理 Author:louwill Machine Learning Lab 基于阈值的图像分割因其处理直观.实现简单和计算速度快,是一种更为常用的传统图像分割算法.本文基于图像灰度阈值处理的基本 ...
- 基于阈值处理的图像分割算法!
图像处理 Author:louwill Machine Learning Lab 基于阈值的图像分割因其处理直观.实现简单和计算速度快,是一种更为常用的传统图像分割算法.本文基于图像灰度阈值处理的基本 ...
- 基于MATLAB改进Otsu阈值分割的车道线检测
基于MATLAB改进Otsu阈值分割的车道线检测 摘要:在判断车道偏离以防止车辆碰撞等危害时,车道标线检测需要通过图像处理来进行,检测方法是否适用于各种背景环境条件以及检测的及时性至关重要传统的Ots ...
- 红外目标图像中阈值分割方法的比较与研究
红外目标图像中阈值分割方法的比较与研究 摘要:本文主要以红外图像目标检测技术为背景,在图像阈值分割中以最大熵准则及遗传算法为基础,研究了一维最大熵值法(KSW法)及基于遗传算法的KSW熵法单阈值. ...
- 【MATLAB图像处理实用案例详解(3)】—— 基于阈值分割的车牌定位识别
目录 一.背景意义 二.理论基础 2.1 车牌区域分割: 2.2 车牌定位及裁剪 三.算法流程 3.1 车牌图像处理 3.1.1 图像灰度化 3.1.2 图像二值化 3.1.3 图像边缘检测 3.1. ...
- matlab中图像的阈值分割,基于MATLAB的图像阈值分割技术汇总
数字图像处理课程论文 基于MATLAB的图像阈值分割技术 摘要:本文主要针对图像阈值分割做一个基于MATLAB的分析.通过双峰法,迭 代法以及OUTS法三种算法来实现图像阈值分割,并且就这三种算法做了 ...
最新文章
- 2023 USNews全美计算机研究生院排名发布!MIT、CMU分别称霸总榜和AI分榜
- windows edit控件设置背景颜色和文本颜色
- pgrouting进行路径规划之入门二
- Face ID 上手体验信息汇总:面部解锁流畅,原理移植AR让人憧憬
- 最讨厌心灵鸡汤 所有失败最终都是人不行
- java向后兼容吗_Java向后不兼容历史的观察
- 根据thickbox定制自己的遮罩层
- 在Mac电脑上如何对 Brotli格式进行压缩与提取
- 字体怎么转换html代码,如何设置下列html代码的字体大小和 font-family 以进行水平转换?_html_开发99编程知识库...
- Windows下搭建Octopress博客
- 224秒!ImageNet上训练ResNet-50最佳战绩出炉,索尼下血本破纪录
- Flex样式工作原理
- 安川机器人程序还原_安川机器人报错代码:上传操作和判断CF卡故障
- 【Unity】卡牌游戏教程汇总
- JavaScript实现:抽奖活动
- 陪我到可可西里看一看海,不要未来,只要你来。——大冰 《陪我到可可西里去看海》
- 100句记住7000单词
- 管理信息系统复试——管理信息系统基础
- cortex m3的操作模式和状态
- 小米手环模拟门禁卡读卡失败_一个手环走天下?可以!
热门文章
- 使用vue组件搭建网页应用
- java jtable defaulttablemodel_java – JTable和DefaultTableModel
- C语言之去掉https链接的默认443端口
- Android之ndk编译出现“undefined reference to method“解决办法
- Android之用sharedUserId来实现不同应用(APK)数据共享
- Android之使用getIdentifier()获取资源Id
- Android之网络编程之网络通信几种方式实例分享
- 不是说好一起长大的吗?
- 费马大定理,集惊险与武侠于一体
- 高级php平时的工作,【高级PHP开发工作内容|工作职责|高级PHP开发做什么】-看准网...