阈值分割之迭代选择阈值法

function [Ibw, thres] = autoThreshold(I)
% 迭代法自动阈值分割
%
% 输入:I - 要进行自动阈值分割的灰度图像
% 输出:Ibw - 分割后的二值图像
%      thres - 自动分割采用的阈值

thres = 0.5 * (double(min(I(:))) + double(max(I(:)))); %初始阈值
done = false; %结束标志
while ~done
    g = I >= thres;
    Tnext = 0.5 * (mean(I(g)) + mean(I(~g)));
    done = abs(thres - Tnext) < 0.5;
    thres = Tnext;
end;

Ibw = im2bw(I, thres/255); % 二值化
I=imread(‘a.jpg‘);
[Ibw,thres]=autoThreshold(I);
imshow(Ibw)这是处理之前图片

处理之后为很明显,此次阈值分割失败。尝试用最大类间方差法,程序为:
I = imread(‘a.jpg‘);
        level = graythresh(I);
        BW = im2bw(I,level);
        figure, imshow(BW)

结果为

依然错误。

时间: 2024-11-08 21:40:10

阈值分割之迭代选择阈值法的相关文章

Halcon阈值分割

threshold(Image : Region : MinGray, MaxGray : ) 全局阈值分割,用户指定硬阈值 binary_threshold(Image : Region : Method, LightDark : UsedThreshold) 全局阈值分割,指定计算阈值 fast_threshold(Image : Region : MinGray, MaxGray, MinSize : ) 使用全局阈值快速分割 auto_threshold(Image : Regions

七种常见阈值分割代码(Otsu、最大熵、迭代法、自适应阀值、手动、迭代法、基本全局阈值法)

转自:http://blog.csdn.net/xw20084898/article/details/17564957 一.工具:VC+OpenCV 二.语言:C++ 三.原理 otsu法(最大类间方差法,有时也称之为大津算法)使用的是聚类的思想,把图像的灰度数按灰度级分成2个部分,使得两个部分之间的灰度值差异最大,每个部分之间的灰度差异最小,通过方差的计算来寻找一个合适的灰度级别 来划分. 所以 可以在二值化的时候 采用otsu算法来自动选取阈值进行二值化.otsu算法被认为是图像分割中阈值选

【图像算法】七种常见阈值分割代码(Otsu、最大熵、迭代法、自适应阀值、手动、迭代法、基本全局阈值法)

图像算法:图像阈值分割 SkySeraph Dec 21st 2010  HQU Email:[email protected]    QQ:452728574 Latest Modified Date:Dec.21st 2010 HQU 一.工具:VC+OpenCV 二.语言:C++ 三.原理(略) 四.程序 主程序(核心部分)  代码 1 /*===============================图像分割=====================================*/2

灰度图像的自动阈值分割(Otsu 法)

灰度图像的自动阈值分割(Otsu 法) 机器视觉领域许多算法都要求先对图像进行二值化.这种二值化操作阈值的选取非常重要.阈值选取的不合适,可能得到的结果就毫无用处.今天就来讲讲一种自动计算阈值的方法.这种方法被称之为Otsu法.发明人是个日本人,叫做Nobuyuki Otsu (大津展之). 简单的说,这种算法假设一副图像由前景色和背景色组成,通过统计学的方法来选取一个阈值,使得这个阈值可以将前景色和背景色尽可能的分开.或者更准确的说是在某种判据下最优.与数理统计领域的 fisher 线性判别算

灰度图像的自动阈值分割(Otsu 法)(转载)

灰度图像的自动阈值分割(Otsu 法) 机器视觉领域许多算法都要求先对图像进行二值化.这种二值化操作阈值的选取非常重要.阈值选取的不合适,可能得到的结果就毫无用处.今天就来讲讲一种自动计算阈值的方法.这种方法被称之为Otsu法.发明人是个日本人,叫做Nobuyuki Otsu (大津展之). 简单的说,这种算法假设一副图像由前景色和背景色组成,通过统计学的方法来选取一个阈值,使得这个阈值可以将前景色和背景色尽可能的分开.或者更准确的说是在某种判据下最优.与数理统计领域的 fisher 线性判别算

图像处理算法2——Otsu最佳阈值分割法http://blog.csdn.net/xiaqunfeng123/article/details/17121195

http://blog.csdn.net/xiaqunfeng123/article/details/17121195Otsu法是1979年由日本大津提出的.该方法在类间方差最大的情况下是最佳的,即统计鉴别分析中所用的度量.Otsu方法有一个重要的特性,就是它完全以在一幅图像的直方图上执行计算为基础,而直方图是很容易得到的一维阵列. 具体的公式推理及公式细节就不说了,详见 Conzalez 那本书,我是第三版的,在P.479——P.482 上面. 给出具体步骤如下: 1.计算输入图像的直方图,并

大津法阈值分割+直方图

声明: 如题吧,不想解释太多,凡是学过图像处理的,应该都知道原理,不知道的在后面的参考文献中,也可以找出. 我只是来贴代码的. 代码: 1 #include <iostream> 2 #include <stdio.h> 3 #include <math.h> 4 5 using namespace std; 6 7 int Histogram(unsigned short* a, int* hist,int h,int w) 8 { 9 if (a == NULL |

基于Otsu算法的图像自适应阈值分割

在图像处理实践中,将灰度图转化为二值图是非常常见的一种预处理手段.在Matlab中,可以使用函数BW = im2bw(I, level)来将一幅灰度图 I,转化为二值图.其中,参数level是一个介于0~1之间的值,也就是用于分割图像的阈值.默认情况下,它可取值是0.5. 现在问题来了,有没有一种根据图像自身特点来自适应地选择阈值的方法呢?答案是肯定的!我们今天就来介绍其中最为经典的Otsu算法(或称大津算法).该算法由日本科学家大津展之(Nobuyuki Otsu)于1979年提出.这个算法看

Open CV 七种常见阈值分割

整理摘录 skyseraph 代码所得 出处:http://www.cnblogs.com/skyseraph/ 复制The All 可直接运行 1 #include <windows.h> 2 #include "cv.h" 3 #include "highgui.h" 4 #include <stdio.h> 5 #include <math.h> 6 #include <iostream> 7 #include