图像处理之阈值分割[全局阈值、Otsu阈值和迭代式阈值分割]

这篇具有很好参考价值的文章主要介绍了图像处理之阈值分割[全局阈值、Otsu阈值和迭代式阈值分割]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、阈值分割基本定义

阈值分割技术是最经典和流行的图像分割方法之一,也是最简单的一种图像分割方法。此技术关键在于寻找适当的灰度阈值,通常是根据图像的灰度直方图来选取。它是用一个或几个阈值将图像的灰度级分为几个部分,认为属于同一个部分的像素是同一个物体。它不仅可以极大的压缩数据量,而且也大大简化了图像信息的分析和处理步骤。阈值分割技术特别适用于目标和背景处于不同灰度级范围的图像。该方法的最大特点是计算简单,在重视运算效率的应用场合中得到了广泛的应用。

二、全局阈值分割

1、基本原理

可以通过全局的信息,例如整个图像的灰度直方图。如果在整个图像中只使用一个阈值,则这种方法叫做全局阈值法,整个图像分成两个区域,即目标对象( 黑色)和背景对象(白色)。全局阈值将整个图像的灰度阈值设置为常数。

对于物体和背景对比较明显的图像,其灰度直方图为双峰形状,可以选择两峰之间的波谷对应的像素值作为全局阙值,将图像分割为目标对象和背景。其公式如下:
阈值分割,图像处理,图像处理,计算机视觉,图像分割,阈值分割,matlab

其中f(x,y)为点(x,y)的像素值,g(x,y) 为分割后的图像,T为全局阈值,通常通过直方图来获取全局阈值

2、matlab实现

(1)实现代码:

% 采用全局阈值对图像进行分割
close all;
clear all;
clc;

I=imread('rice.png');
[width,height]=size(I);
for i=1:width      % 双重for循环逐个像素进行比较计算
    for j=1:height
        if(I(i,j)>130)
            K(i,j)=1;% 将大于全局阈值的像素点置为1(白色)
        else
            K(i,j)=0;% 将小于等于全局阈值的像素点置为0(黑色)
        end
    end
end

subplot(131),imshow(I);
title('原始图像');
subplot(132),imhist(I);
title('原始图像直方图');
subplot(133),imshow(K);
title('全局阈值分割后的图像');

(2)实现效果:
阈值分割,图像处理,图像处理,计算机视觉,图像分割,阈值分割,matlab
二、Otsu阈值分割

1、基本原理

最大类间方差法,又称为Otsu算法,该算法是在灰度直方图的基础上采用最小二乘法原理推导出来的,具有统计意义上的最佳分割。它的基本原理是以最佳阈值将图像的灰度值分割成两部分,使两部分之间的方差最大,即具有最大的分离性

设f(x,)为图像IxN的位置(x,y)处的灰度值,灰度级为L,则f(x,y)属于[0,L-1].若灰度级i的所有像素个数为f,则第i级灰度出现的概率为:
阈值分割,图像处理,图像处理,计算机视觉,图像分割,阈值分割,matlab
将图像中的像素按灰度级用阈值t划分为两类,即背景C0和目标C1。背景CO的灰度级为0 ~ t-1,目标C1的灰度级为t ~ L-1。背景C0和目标C1对应的像素分别为:{f(x,y)<1}和{f(x,y)>=t}。
阈值分割,图像处理,图像处理,计算机视觉,图像分割,阈值分割,matlab
阈值分割,图像处理,图像处理,计算机视觉,图像分割,阈值分割,matlab

在MATLAB软件中,函数graythresh()采用Otsu算法获取全局阈值,获取全局阈值后,可以采用函数im2bw()进行图像分割

2、matlab实现

(1)实现代码:

% 采用Ostu算法进行图像分割
close all;
clear all;
clc;
I=imread('coins.png');
I=im2double(I);
% 函数graythresh()采用Ostu算法获取图像(既可以是灰度也可以RGB)的最优阈值,调用格式为level=graythresh(I),level大小介于[0,1之间
T=graythresh(I);
J=im2bw(I,T);

subplot(121),imshow(I);
title('原始图像');
subplot(122),imshow(J);
title('Otsu阈值分割后的图像');

(2)实现效果:
阈值分割,图像处理,图像处理,计算机视觉,图像分割,阈值分割,matlab
四、迭代式阈值分割

1、基本原理

迭代阈值法是阈值法图像分割中比较有效的方法,通过迭代的方法来求出分割的最佳阅值,具有一定的自适应性。迭代法阈值分割的步骤如下:

(1) 设定参数T0,并选择一个初始的估计阈值T1。

(2)用阈值T分割图像。将图像分成两部分: G1 是由灰度值大于T1的像素组成,G2是由灰度值小于或等于T1的像素组成。

(3)计算G1和G2中所有像素的平均灰度值u1和u2,以及新的阈值T2 =(u1+u2)/2。

(4)如果|T2-T1|<T0,则推出T2即为最优阈值;否则,将T2赋值给T1,并重复步骤(2) ~ (4) ,直到获取最优阈值。

2、matlab实现

(1)实现代码:

% 采用迭代式阈值进行图像分割
close all;
clear all;
clc;
I=imread('cameraman.tif');
I=im2double(I);
% 第一步:设置参数T0,并选择一个初始的估计阈值T1(取图像I像素值的最小值和最大值的平均值)
T0=0.01;
T1=(min(I(:))+max(I(:)))/2;
% 第二步:用阈值T1分割图像.将图像分成两部分:r1由灰度值大于T1的像素组成,r2是由灰度小于或等于T1的像素组成
r1=find(I>T1);% find函数返回素有非零元素的位置
r2=find(I<=T1);
% 第三步:计算r1和r2中所有像素的平均灰度值h1和h2以及新的阈值T2=(h1+h2)/2
T2=(mean(I(r1))+mean(I(r2)))/2;
% 第四步:|T2-T1|<T0,则推出T2即为最优阈值;否则,将T2赋值给T1,并重复步骤2-4直到获取最优阈值
if abs(T2-T1)<T0
    J=imbinarize(I,T2);  % 使用imbinarize函数进行图像分割
else
    while abs(T2-T1)>=T0
        T1=T2;
        r1=find(I>T1);
        r2=find(I<=T1);
        T2=(mean(I(r1))+mean(I(r2)))/2;
    end
    J=imbinarize(I,T2);  % 使用imbinarize函数进行图像分割
end

subplot(121),imshow(I);
title('原始图像');
subplot(122),imshow(J);
title('迭代式阈值分割后的图像');

(2)实现效果:
阈值分割,图像处理,图像处理,计算机视觉,图像分割,阈值分割,matlab

注意:除了以上三种阈值分割方法,还有其他方法比如自适应阈值分割(局部阈值分割)、最大熵阈值分割等等。但是我发现自适应阈值分割和最大熵阈值分割基本都是用C++或Python实现,还没有找到合适的使用matlab实现的代码。如果以后有机会,再回来补充吧!

由于刚刚开始学习图像处理,对于很多知识理解不到位。如有错误,恳请指正,任重而道远,慢慢加油!文章来源地址https://www.toymoban.com/news/detail-778108.html

到了这里,关于图像处理之阈值分割[全局阈值、Otsu阈值和迭代式阈值分割]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Matlab图像处理-迭代式阈值选择法

      基本思想 迭代式阈值选择法的基本思想是:开始时,选择一个阈值作为初始估计值,然后按某种策略不断地改进这一估计值,直到满足给定的准则为止。在迭代过程中,关键之处在于选择什么样的阈值改进策略。好的阈值改进策略应该具备两个特征:一是能够快速收敛,二

    2024年02月09日
    浏览(36)
  • Matlab|图像处理04|图像分割-阈值分割方法

    一、人工阈值分割方法threshold_test1.m 1、分析修改阈值对分割结果的影响 分析:取直方图中第一个谷底的灰度值作为阈值,图像分割效果较好。当阈值改变时,分割后的图像有部分信息丢失,本图中当阈值减小时分割后的图像黑色部分较多,当阈值增大时分割后的图像白色部

    2024年02月11日
    浏览(52)
  • Matlab图像处理-多阈值分割

    多阈值分割 在某些时候图像使用单独的阈值不能够对其实现有效地分割,例如在灰度直方图中有明显的三个峰时候,我们需要提取中间峰,这时我们使用双阈值分割会得到较好的分割效果。如下例子中生成灰度直方图中有两个峰,选择合适的两个阈值进行多阈值分割后可生成

    2024年02月09日
    浏览(50)
  • 图像分割---基于阈值处理的基本方法

    本文主要介绍图像分割基于阈值处理的一些基本方法。 该方法基于图像直方图上出现的双峰现象。当一个图像有双峰现象时,其直方图会出现两个峰,分别对应图像中两种不同的颜色或亮度区域。这时我们可以使用直方图双峰法来自动确定合适的阈值。其基本思路如下: 计

    2024年02月05日
    浏览(39)
  • 图像处理与计算机视觉--第五章-图像分割-自适应阈值分割

      在图片处理过程中,针对铺前进行二值化等操作的时候,我们希望能够将图片相应区域内所有的信息提供保留。实验室环境下,相应的素材是模板化的,但是将实验室方法应用于现实环境中时,我们会发现光影环境对于效果的影响其实是很大的。在这种情况下进行处理,

    2024年02月07日
    浏览(56)
  • (数字图像处理MATLAB+Python)第十章图像分割-第一、二节:阈值分割和边界分割

    图像分割 :在对图像的研究和应用中,人们往往仅对图像中的某些目标感兴趣,这些目标通常对应图像中具有特定性质的区域。图像分割是指把一幅图像分成不同的具有特定性质区域的图像处理技术,将这些区域分离提取出来,以便进一步提取特征和理解 图像分割方法多种

    2024年02月16日
    浏览(65)
  • 图像二值化处理(全局阈值 自适应阈值 手动阈值操作以及直方图画法)

    图像二值化就是把让图像的像素点只有0和1(只有黑白两各种颜色,黑是背景,白是前景),关键点是寻找一个阈值T,使图像中小于阈值T的像素点变为0,大于T的像素点变为255。下面介绍的就是寻找一个图像的阈值T的方法。(主要根据直方图) retval:返回的阈值(double类型)

    2024年02月08日
    浏览(52)
  • OPENCV C++图像提取,图像处理,roi,阈值分割,连通区域筛选,边缘检测(以箱子边缘框选为例)

    本周有机会接触了一点opnev, 在此做一下记录, 最终以 框选出下图箱子为目的( 图片箱子为相机实拍结果,曝光有点低,会有亿点点暗 ), 本文会拆解步骤并附上图片, 完整的源码在最后.PS: 本文参考了好多大佬分享的理论知识, 在此先感谢大佬的分享~~ 首先是梳理一下流程, 下图是

    2024年02月07日
    浏览(52)
  • 【图像分割】基于浣熊优化算法COA的Otsu(大津法)多阈值电表数字图像分割 电表数字识别【Matlab代码#52】

    长鼻浣熊优化算法(Cоati Optimization Algorithm,COA)是一种启发式优化算法,灵感来源于长鼻浣熊(Coati)的行为策略。长鼻浣熊优化算法基于长鼻浣熊在觅食过程中的特性和行为模式。长鼻浣熊是一种树栖动物,具有长而灵活的鼻子,用于觅食和捕食。它们通过嗅觉感知周围环

    2024年02月16日
    浏览(38)
  • 【GEE笔记】最大类间方差法(otsu、大津法)算法实现——计算阈值、图像二值化分割

    1、最大类间方差法原理概述 2、GEE频率分布统计,直方图绘制 3、算法具体实现,以GEE JavaScript版本为例 4、目标像元提取,以遥感影像提取水体为示例 最大类间方差法(又名otsu、大津法)是由日本学者OTSU于1979年提出的一种对图像进行二值化的高效算法。算法假定该图像根据

    2024年02月06日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包