@

1.OTSU算法原理简述:

最大类间方差是由日本学者大津(Nobuyuki Otsu)于1979年提出,是一种自适应的阈值确定方法。算法假设图像像素能够根据阈值,被分成背景[background]和目标[objects]两部分。然后,计算该最佳阈值来区分这两类像素,使得两类像素区分度最大。

公式: 记 M = 256 单通道灰度分级 Sum = 像素总数

2.MATLAB实现代码

clc
clear
x=imread('radiogirl.jpg');
a=x;
subplot(211);
imshow(a,[]);
%[count x]=imhist(a);
[m,n]=size(a);
N=m*n;
L=256; for i=1:L
count(i)=length(find(a==(i-1)));
f(i)=count(i)/(N); %每个灰度对应的概率,i=1,对应灰度值为0(i-1)
end for i=1:L
if count(i)~=0
st=i-1; %开始的灰度值
break;
end
end
for i=L:-1:1
if count(i)~=0
nd=i-1; %结束的灰度值
break;
end
end p=st; q=nd-st+1;
u=0;
for i=1:q
u=u+f(p+i)*(p+i-1); %u是像素的平均值
ua(i)=u; %ua(i)是前i+p个像素的平均灰度值 (前p个无取值)
end; for i=1:q
w(i)=sum(f(1+p:i+p)); %w(i)是前i个像素的累加概率,对应公式中P0
end; w=w+eps;
%对照sigmaB的公式写出目标函数。实际是遍历所有值
d=(w./(1-w)).*(ua./w-u).^2;
[y,tp]=max(d); %可以取出数组的最大值及取最大值的点
th=tp+p; subplot(212);
imshow(im2bw(a,th/255),[]); title('自己的最大类间方差'); subplot(211);
imshow(im2bw(x,graythresh(x)),[]); title('matlab自带');

结果



可以看到自己编写的与matlab自带效果相同。

MATLAB实现OTSU的更多相关文章

  1. 图像处理MATLAB源代码

    图像反转 I=imread('nickyboom.jpg'); J=double(I); J=-J+(256-1);                 %图像反转线性变换 H=uint8(J); sub ...

  2. matlab图像处理程序大集合

    1.图像反转 MATLAB程序实现如下:I=imread('xian.bmp');J=double(I);J=-J+(256-1);                 %图像反转线性变换H=uint8( ...

  3. paper 55:图像分割代码汇总

    matlab 图像分割算法源码 1.图像反转 MATLAB程序实现如下:I=imread('xian.bmp');J=double(I);J=-J+(256-1); %图像反转线性变换H=uint8( ...

  4. 遗传学详解及Matlab算法实现

    遗传学算法概述 从之前转载的博客<非常好的理解遗传算法的例子>中可以知道,遗传学算法主要有6个步骤: 1. 个体编码 2. 初始群体 3. 适应度计算 4. 选择运算 5. 交叉运算 6. ...

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

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

  6. Matlab 多项式拟合、稳健滤波等实用函数

    Function summary http://www.biomecardio.com/matlab/index.html clinspace Curvilinearly spaced points ...

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

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

  8. 大津法---OTSU算法

    简介: 大津法(OTSU)是一种确定图像二值化分割阈值的算法,由日本学者大津于1979年提出.从大津法的原理上来讲,该方法又称作最大类间方差法,因为按照大津法求得的阈值进行图像二值化分割后,前景与背景 ...

  9. 基于Otsu算法的图像自适应阈值切割

    在图像处理实践中,将灰度图转化为二值图是非经常见的一种预处理手段. 在Matlab中,能够使用函数BW = im2bw(I, level)来将一幅灰度图 I.转化为二值图. 当中.參数level是一个 ...

随机推荐

  1. charindex函数--->检索字符在字符串中的起始位置

    语法:CHARINDEX(检索字符,被检索字符串) 返回值:检索字符在被检索字符串中的起始位置.

  2. 将页面内搜索结果高亮显示(使用mark.js),且页面顶部定位到第一个搜索结果

    <!DOCTYPE> <html> <head> <title> new document </title> <meta name=& ...

  3. composer (一)

    composer参考文档: composer中文网 安装composer:  Windows安装:使用安装程序:https://docs.phpcomposer.com/00-intro.html#U ...

  4. Python身份运算符

    运算符 描述 实例 is is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False is not ...

  5. JVM(一),谈谈你对java的理解

    一.谈谈你对java的理解 1.Java特性 (1)平台无关性 一次编译到处运行 (2)GC 垃圾回收机制 (3)语言特性 泛型-反射机制-lambda表达式 (4)面向对象 面向对象语言-三大特性( ...

  6. ThinkPHP系统常量

    _ROOT__ : 网站根目录地址 __APP__ : 当前项目(入口文件)地址 __URL__ : 当前模块地址 __ACTION__ : 当前操作地址 __SELF__ : 当前 URL 地址 _ ...

  7. C#如何生成setup安装文件

    当前项目状况如图: ,如何把test1打包成setup文件,用户安装后即可完成相应功能. 第一,右击“解决方案test1”->添加“新建项目”->“其他项目类型”->“安装和部署”- ...

  8. 使用matplotlib绘制常用图表(3)-其他图表绘制

    一.绘制三点图 """ 三月份最高气温 a = [12,15,18,6,7,5,6,8,9,10,15,10,4,5,11,10,5,6,12,15,10,5,14,10 ...

  9. 记一次Cloudera中页面监控失效问题

    因为做了cdh的迁移,启动后所有服务都是正常执行,不影响操作,但是尴尬的是,页面上的图表监控不见了 这种情况的根本原因就是: Host Monitor和Service Monitor服务失效! 解决: ...

  10. python-numpy-1

    mean() mean() 函数定义: numpy.``mean(a, axis=None, dtype=None, out=None, keepdims=<class numpy._globa ...