最大类间方差法是由日本学者大津(Nobuyuki Otsu)于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU。它是按图像的灰度特性,将图像分成背景和目标2部分。背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致2部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。对于图像I(x,y),前景(即目标)和背景的分割阈值记作Th,属于前景的像素点数占整幅图像的比例记为w1,其平均灰度G1;背景像素点数占整幅图像的比例为w2,其平均灰度为G2。图像的总平均灰度记为G_Ave,类间方差记为 g

假设图像的背景较暗,并且图像的大小为MXN,图像中像素的灰度值小于阈值的像素个数记作N1,像素灰度大于阈值的像素个数记作N2,则有:

采用遍历的方法得到使类间方差最大的阈值,即为所求。

代码如下:

(C文件)

 #include <stdio.h>
#include <math.h>
#include "myOtsu.h"
typedef unsigned char uchar;
int myOtsu(const IplImage *frame) //大津法求阈值
{
#define GrayScale 256 //frame灰度级
int width = frame->width;
int height = frame->height;
int pixelCount[GrayScale]={};
float pixelPro[GrayScale]={};
int i, j, pixelSum = width * height, threshold = ;
float w0, w1, u0tmp, u1tmp, u0, u1, deltaTmp, deltaMax = ;
uchar* data = (uchar*)frame->imageData; //统计每个灰度级中像素的个数
for(i = ; i < height; i++)
{
for(j = ;j < width;j++)
{
pixelCount[(int)data[i * width + j]]++;
}
} //计算每个灰度级的像素数目占整幅图像的比例
for(i = ; i < GrayScale; i++)
{
pixelPro[i] = (float)pixelCount[i] / pixelSum;
} for(i = ; i < GrayScale; i++)//遍历所有从0到255灰度级的阈值分割条件,测试哪一个的类间方差最大
{
w0 = w1 = u0tmp = u1tmp = u0 = u1 = deltaTmp = ;
for(j = ; j < GrayScale; j++)
{
if(j <= i) //背景部分
{
w0 += pixelPro[j];
u0tmp += j * pixelPro[j];
}
else //前景部分
{
w1 += pixelPro[j];
u1tmp += j * pixelPro[j];
}
}
u0 = u0tmp / w0;
u1 = u1tmp / w1;
deltaTmp = (float)(w0 *w1* pow((u0 - u1), )) ;
if(deltaTmp > deltaMax)
{
deltaMax = deltaTmp;
threshold = i;
}
}
return threshold;
}

(H文件)

 #ifndef MYOTSU_H_
#define MYOTSU_H_
typedef struct {
int width;
int height;
unsigned char imageData;
}IplImage;
extern int myOtsu(const IplImage *frame);
#endif /*MYOTSU_H_*/

大家转载请注明出处!谢谢!

在这里要感谢GISPALAB实验室的各位老师和学长学姐的帮助!谢谢~

自适应阈值二值化之最大类间方差法(大津法,OTSU)的更多相关文章

  1. 【转】Emgu CV on C# (五) —— Emgu CV on 局部自适应阈值二值化

    局部自适应阈值二值化 相对全局阈值二值化,自然就有局部自适应阈值二值化,本文利用Emgu CV实现局部自适应阈值二值化算法,并通过调节block大小,实现图像的边缘检测. 一.理论概述(转载自< ...

  2. [转载+原创]Emgu CV on C# (五) —— Emgu CV on 局部自适应阈值二值化

    局部自适应阈值二值化 相对全局阈值二值化,自然就有局部自适应阈值二值化,本文利用Emgu CV实现局部自适应阈值二值化算法,并通过调节block大小,实现图像的边缘检测. 一.理论概述(转载自< ...

  3. Wellner 自适应阈值二值化算法

    参考文档: Adaptive Thresholding for the DigitalDesk.pdf       Adaptive Thresholding Using the Integral I ...

  4. [转载+原创]Emgu CV on C# (四) —— Emgu CV on 全局固定阈值二值化

    重点介绍了全局二值化原理及数学实现,并利用emgucv方法编程实现. 一.理论概述(转载,如果懂图像处理,可以略过,仅用作科普,或者写文章凑字数)  1.概述 图像二值化是图像处理中的一项基本技术,也 ...

  5. OpenCV图像的全局阈值二值化函数(OTSU)

    cv::threshold(GrayImg, Bw, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);//灰度图像二值化 CV_THRESH_OTSU是提取图像最 ...

  6. 图像处理------基于Otsu阈值二值化

    一:基本原理 该方法是图像二值化处理常见方法之一,在Matlab与OpenCV中均有实现. Otsu Threshing方法是一种基于寻找合适阈值实现二值化的方法,其最重 要的部分是寻找图像二值化阈值 ...

  7. OpenCV_基于局部自适应阈值的图像二值化

    在图像处理应用中二值化操作是一个很常用的处理方式,例如零器件图片的处理.文本图片和验证码图片中字符的提取.车牌识别中的字符分割,以及视频图像中的运动目标检测中的前景分割,等等. 较为常用的图像二值化方 ...

  8. python实现图像二值化

    1.什么是图像二值化 彩色图像: 有blue,green,red三个通道,取值范围均为0-255 灰度图:只有一个通道0-255,所以一共有256种颜色 二值图像:只有两种颜色,黑色和白色,二值化就是 ...

  9. 图像二值化----otsu(最大类间方差法、大津算法)

    最大类间方差法是由日本学者大津于1979年提出的,是一种自适应的阈值确定的方法,又叫大津 法,简称OTSU.它是按图像的灰度特性,将图像分成背景和目标2部分.背景和目标之间的类间方差越大,说明构成图像 ...

随机推荐

  1. charCodeAt() 和charAt()

    charAt() 方法可返回指定位置的字符. charCodeAt() 方法可返回指定位置的字符的 Unicode 编码.这个返回值是 0 - 65535 之间的整数. 方法 charCodeAt() ...

  2. HTML5的学习(三)HTML5标签

    3.HTML5新添加的标签 标签 描述 <article> 定义文章. <aside> 定义页面内容之外的内容. <audio> 定义声音内容. <bdi&g ...

  3. 通过Application传递数据

    1:通过Application传递数据 假如有一个Activity A, 跳转到 Activity B ,并需要推荐一些数据,通常的作法是Intent.putExtra() 让Intent携带,或者有 ...

  4. JNI打通java和c

    1.JNI简介 The Java Native Interface (JNI) is a programming framework that enables Java code running in ...

  5. MySQL— 基础

    目录 一.MySQL概述 二.下载安装 三.数据库操作 四.数据表操作 五.表内容操作 一.MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracl ...

  6. 关于 MVCC 的基础【转】

    1. 什么是MVCC 1.1 基础概念 MVCC,Multi-Version Concurrency Control,多版本并发控制.MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据 ...

  7. windows上python上传下载文件到linux服务器指定路径【转】

    从windows上传文件到linux,目录下的文件夹自动创建 #!/usr/bin/env python # coding: utf-8 import paramiko import datetime ...

  8. sqlserver2008r2数据库使用触发器对sa及其他数据库账号访问进行IP限制

    一.只允许指定IP访问数据库 创建测试账号 CREATE LOGIN testuser WITH PASSWORD = '123' GO CREATE TRIGGER [tr_connection_l ...

  9. 前端web服务器数据同步方案

    概述: 网站采用了web和mysql数据库分离的架构,前端有web1.web2.web3需要对他们进行上传文件同步 方案: 在web2的windows服务器上安装GoodSync软件,利用其双向同步特 ...

  10. 通用jsonp跨域技术获取天气数据

    1. 前言 在进行网站开发的过程中经常会用到第三方的数据,但是由于同源策略的限制导致ajax不能发送请求,因此也无法获得数据.解决ajax的跨域问题可以使用jsonp技术 2.代码 <!DOCT ...