方法简介:

g=ω0ω1(μ0-μ1)^2
对于图像I(x,y),前景(即目标)和背景的分割阈值记作T,属于前景的像素点数占整幅图像的比例记为ω0,其平均灰度μ0;
背景像素点数占整幅图像的比例为ω1,其平均灰度为μ1,类间方差记为g。采用遍历的方法得到使类间方差最大的阈值T

int Process::image_binary(unsigned char* buffer, int w, int h)
{int height = h;int width = w;int size = h*w;int histogram[256] = { 0 };int tmp_val = 0;for (int i = 0; i<height; i++)  //计算直方图{for (int j = 0; j<width; j++){histogram[(int)buffer[i*width + j]]++;}}//计算阈值int gSum0 = 0, gSum1 = 0, N0 = 0, N1 = 0;float w0 = 0.0, w1 = 0.0, u0 = 0.0, u1 = 0.0, g = 0.0, tempg = 0.0;int thr = 0;for (int i = 0; i<256; i++){gSum0 = 0;gSum1 = 0;N0 += histogram[i];w0 = (float)N0 / size;N1 = size - N0;w1 = 1 - w0;for (int j = 0; j <= i; j++){gSum0 += j*histogram[j];}u0 = (float)gSum0 / N0;for (int k = i + 1; k<256; k++){gSum1 += k*histogram[k];}u1 = (float)gSum1 / N1;g = w0*w1*(u0 - u1)*(u0 - u1);if (tempg<g){tempg = g;thr = i;}}for (int i = 0; i<height; i++)  //二值化处理{for (int j = 0; j<width; j++){tmp_val = buffer[i*width + j];if (tmp_val <= thr)buffer[i*width + j] = 0;elsebuffer[i*width + j] = 255;}}return 0;
}

处理效果对比:

图像处理之:最大类间方差法法进行图像二值化处理相关推荐

  1. 图像二值化之最大类间方差法(大津法,OTSU)

    参考文章1:图像二值化与otsu算法介绍 参考文章2:python opencv cv2.threshold() (将固定级别的阈值应用于每个数组元素)ThresholdTypes 最大类间方差法(大 ...

  2. 图像二值化(Image Binarization):平均值法、双峰法、大津算法(OTSU)

    图像二值化(Image Binarization):平均值法.双峰法.大津算法(OTSU) 编程实现图像的二值化,分析不同的阈值对二值化图像的影响. 问题描述 传统的机器视觉通常包括两个步骤:预处理和 ...

  3. C#,图像二值化(17)——全局阈值的ISODATA算法(亦称作InterMeans法)及其源程序

    二值算法综述请阅读: C#,图像二值化(01)--二值化算法综述与二十三种算法目录https://blog.csdn.net/beijinghorn/article/details/128425225 ...

  4. 【智能车】图像二值化算法--大津法OTSU

    图像二值化算法–大津法OTSU 大津算法是一种图像二值化算法,作用是确定将图像分成黑白两个部分的阈值. 大津法是针对灰度值进行阈值分割二值化,如果是彩色图像的话需要先转化成灰度图再进行计算. 方差越大 ...

  5. VTK修炼之道31:图像二值化_阈值法

    1.阈值法实现图像二值化操作 二值图像和label图像是图像分割中经常用到的两种图像. 二值图像的每个像素只有两种可能的取值,例如0或者255.通常0代表图像的背景,而255代码图像前景.图像二值化是 ...

  6. 图像二值化_三角阈值法

    前言 一.三角阈值法是什么? 二.算法原理 1.算法 总结 参考文献 前言 图像二值化有很多方法,比较经典的为OTSU,三角阈值法,本文主要想一探三角阈值法的算法原理. 一.三角阈值法是什么? 三角阈 ...

  7. 【医学图像处理】 2 灰度直方图、图像二值化(阈值分割)

    文章目录 1 灰度直方图 1.1 直方图理解 1.2 直方图计算 1.3 直方图均衡化 1.3.1 全局均衡化 1.3.2 自适应(局部)均值化 2 图像二值化(阈值分割) 2.1 二值化理解 2.2 ...

  8. 【图像处理】Qt+OpenCV自制mini软件——图像二值化器

    [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 前言 前段时间杂事很多,这几天突然觉得自己有段时间没有碰Qt了,手有点生了.心血来潮,花了两 ...

  9. 【编程语言】利用CImage类对图像像素的处理(图像二值化)

      最近做的课程作业需要用到CImage函数处理图像,其中涉及到读取图像以及对图像像素进行操作,在这里记录一下自己的理解. 首先是CImage类的定义和读取图片 CImage srcImage;CIm ...

  10. 【Zedboard】FPGA边缘提取 图像处理 基于ZYNQ完成 灰度图像 在VGA显示与 边缘提取 二值化 Verilog代码实现

    [Zedboard]FPGA边缘提取 图像处理 基于ZYNQ完成 灰度图像 在VGA显示与 边缘提取 二值化 Verilog代码实现 在项目开始到目前为止已经完成了在Zedboard的PL部分即FPG ...

最新文章

  1. 新建一个doophp项目
  2. 【电信增值业务学习笔记】10基于业务节点的增值业务提供技术
  3. 送给程序员终身受用的建议
  4. .net core上 K8S(七).netcore程序的服务发现
  5. ObjectTive C语言语法,[译]理解 Objective-C 运行时(下篇)
  6. input和output哪个是充电_input是什么接口?告诉大家这个小常识,以后音箱接线更容易...
  7. php发送163邮件554,PHPMailer配置163邮箱发送邮件
  8. 滑动窗口算法_从一道题讲解滑动窗口算法该如何实现
  9. Hadoop3——集群搭建以及初体验
  10. java中各种集合的用法和比较
  11. IOS安全、逆向、反编译
  12. 【转】乐观锁和悲观锁的区别
  13. 华为手机如何给应用加锁_华为手机正确防止应用后台运行被清理的操作方法
  14. 随机变量的特征函数的定义
  15. 计算机系统保密软件,计算机系统保密检查工具
  16. 清理谷歌浏览器注册表_将谷歌浏览器的注册表彻底删除的方法
  17. oracle的shell命令,shell脚本执行oracle insert语句seraph
  18. LVGL lv_btn 按钮(9)
  19. springboot供应商管理系统毕业设计源码121518
  20. 本地生活服务商家小程序开发解决方案

热门文章

  1. 鸟哥的Linux私房菜(基础学习篇第四版)学习笔记
  2. mindoc升级总结
  3. 微信模拟地理位置_微信电脑版伪装地理位置的方法
  4. m1芯片xcode打包IPA processing failed错误解决方案
  5. SVM---通俗易懂图解高斯核函数及实现
  6. 地图可视化开发技巧:geojson转svg后再转emf格式插入ppt实现编辑的解决方案
  7. RGB565 转 RGB
  8. f和摄氏度怎么换算_华氏度和摄氏度的换算
  9. 海康威视提前批-大数据算法工程师面试
  10. 谷歌html编辑器代码,一行代码让谷歌浏览器变成在线编辑器