int otsu(IplImage *image)

{

assert(NULL != image);

int width = image->width;

int height = image->height;

int x=0,y=0;

int pixelCount[256];

float pixelPro[256];

int i, j, pixelSum = width * height, threshold = 0;

uchar* data = (uchar*)image->imageData;

//初始化

for(i = 0; i < 256; i++)

{

pixelCount[i] = 0;

pixelPro[i] = 0;

}

//统计灰度级中每个像素在整幅图像中的个数

for(i = y; i < height; i++)

{

for(j = x;j

{

pixelCount[data[i * image->widthStep + j]]++;

}

}

//计算每个像素在整幅图像中的比例

for(i = 0; i < 256; i++)

{

pixelPro[i] = (float)(pixelCount[i]) / (float)(pixelSum);

}

//经典ostu算法,得到前景和背景的分割

//遍历灰度级[0,255],计算出方差最大的灰度值,为最佳阈值

float w0, w1, u0tmp, u1tmp, u0, u1, u,deltaTmp, deltaMax = 0;

for(i = 0; i < 256; i++)

{

w0 = w1 = u0tmp = u1tmp = u0 = u1 = u = deltaTmp = 0;

for(j = 0; j < 256; j++)

{

if(j <= i) //背景部分

{

//以i为阈值分类,第一类总的概率

w0 += pixelPro[j];

u0tmp += j * pixelPro[j];

}

else //前景部分

{

//以i为阈值分类,第二类总的概率

w1 += pixelPro[j];

u1tmp += j * pixelPro[j];

}

}

u0 = u0tmp / w0;//第一类的平均灰度

u1 = u1tmp / w1;//第二类的平均灰度

u = u0tmp + u1tmp;//整幅图像的平均灰度

//计算类间方差

deltaTmp = w0 * (u0 - u)*(u0 - u) + w1 * (u1 - u)*(u1 - u);

//找出最大类间方差以及对应的阈值

if(deltaTmp > deltaMax)

{

deltaMax = deltaTmp;

threshold = i;

}

}

//返回最佳阈值;

return threshold;

}

原文:http://www.cnblogs.com/zxj015/p/3997518.html

java大津法确定阈值,大津法阈值法代码相关推荐

  1. java大津法确定阈值,大津法(最大类间阈值法)

    大津法又叫最大类间方差法.最大类间阈值法(OTSU).它的基本思想是,用一个阈值将图像中的数据分为两类,一类中图像的像素点的灰度均小于这个阈值,另一类中的图像的像素点的灰度均大于或者等于该阈值.如果这 ...

  2. Java集合方面的面试题大汇总

    集合容器概述 什么是集合 集合框架:用于存储数据的容器. 集合框架是为表示和操作集合而规定的一种统一的标准的体系结构. 任何集合框架都包含三大块内容:对外的接口.接口的实现和对集合运算的算法. 它减少 ...

  3. 大数据日知录_腾讯T4专家精心整理:java+大数据+机器学习+数据挖掘+算法大集结...

    前言 本篇文章总共八大部分组成,包括数据挖掘:概念.模型.方法和算法:大数据日知录:架构与算法:大数据算法:数据结构与算法经典问题解析:算法基础:打开算法之门:机器学习算法大集结:Java数据结构和算 ...

  4. java大顶堆类,构建大顶堆、堆排序实现(java)

    构建大顶堆.堆排序实现(java) 构建大顶堆.堆排序实现(java) 堆排序介绍: ①堆排序是利用堆的数据结构设计的一种排序算法,堆排序是一种选择排序,时间复杂度为O(nlogn),是不稳定排序: ...

  5. Nature子刊 | 大序列数据时代的原核生物分类学和命名法

    谷禾健康 随着基因组测序的发展,大量的数据为分类学提供了更全面的框架.基因组序列的空前可用性意味着分类学可以建立在一个全面的进化框架上,这是分类学家的长期目标. 然而,采用单一的框架来保持分类自由存在 ...

  6. 费曼学习法与孔子温故知新学习法为两大重要学习法,前者外向表现,后者内省提升

    费曼学习法与孔子温故知新学习法为两大重要学习法,前者外向表现,后者内省提升 附前者链接 https://blog.csdn.net/wo541075754/article/details/101554 ...

  7. Java编程详细解析—淘宝大秒杀系统是如何设计的?

    2019独角兽企业重金招聘Python工程师标准>>> 摘要 最初的秒杀系统的原型是淘宝详情上的定时上架功能,由于有些卖家为了吸引眼球,把价格压得很低.但这给的详情系统带来了很大压力 ...

  8. java语言基础及集合基础大总结

    好好学java java知识分享/学习教程免费分享 关注 精彩内容 你所需要的java全套视频教程 你所需要的java电子图书 你所需要的大数据视频教程 你所需要的java练习项目 如 / 诗 近半个 ...

  9. Java开发人员必备的7大技能,每一个都必不可少

    Java存活这么多年,目前Java软件开发工程师已经成为"香饽饽"了,工作环境好,就业薪资高,成为很多门外汉羡慕的对象,确实Java已经成为比较受欢迎的编程语言.可以说当下Java ...

  10. 初学者学习java编程,如何顺利通过4大艰难阶段?

    有人通过Java培训班获得了年薪几十万的逆袭,也有人通过Java培训班体会到了"学习java有多难"的滋味.无论是哪种收获,都与我们突破每一个阶段的方法有关. 整个过程看似艰难,但 ...

最新文章

  1. js input 自动换行_矿用自动灭火装置水基型自动灭火装置原理国内分析研讨_搜狐汽车...
  2. ubuntu安装python3.5+pycharm+anaconda+opencv+docker+nvidia-docker+tensorflow+pytorch+Cmake3.8
  3. 走心!北京语言大学教授毕业致辞:在人生的道路上,一定要把自己当回事儿...
  4. oracle数据库导入_oracle数据库导入数据
  5. 三轴加速度传感器和六轴惯性传感器_一文读懂汽车MEMS惯性传感器的七大应用(上)...
  6. 【java基础知识】编写数据库连接池
  7. 备库由于表无主键导致延迟
  8. 新浪自媒体重新开放注册   一点资讯全面布局?
  9. 脱库数据分享论坛_22G疑为12306脱库文件大揭秘
  10. 华为新机Mate30参数解析,这些参数你都知道是什么意思吗?
  11. 人工智能标记语言AIML聊天机器人:产生、种类、应用、实例、AIML概述、知识库、公司、业界(20k字经典收藏版)
  12. 在python中画正态分布图像
  13. 2011微软MVP全球峰会美国行之飞抵西雅图
  14. 一公司的产品策划职位要求
  15. 机器学习基础(四)——决策树与随机森林
  16. 打印菱形图案c语言pta,C语言的考试题型
  17. csdn博客使用反馈,bug
  18. 三玖天下第一!让三玖陪你写代码(为VScode加入背景图片)
  19. PHP代码审计DVWA[XSS (Reflected)]
  20. 唐探、小说家、李焕英,哪一部贺岁档电影值得一看

热门文章

  1. 昆工教务计算机二级,昆明理工大学教务管理系统登录入口、成绩查询网上选课查分...
  2. 2022年高压电工操作证考试题库模拟考试平台操作
  3. 为什么那么多家长选择童年汇
  4. java随机快速排序,Java-随机枢轴无法快速排序
  5. 场内、场外基金开户及股票行情
  6. CVE-2016-0167分析
  7. 学生毕业设计选题管理系统(JSP+MySQL+Eclipse)
  8. wireshark分析TCP数据包
  9. kmz转换为dwg_DWG怎么转成DXF格式?设计小白看过来!相互转换的绝招
  10. 零基础EVE环境搭建:④EVE-NG的镜像导入