图像处理之阈值分割[全局阈值、Otsu阈值和迭代式阈值分割] |
您所在的位置:网站首页 › 直方图法的原理 › 图像处理之阈值分割[全局阈值、Otsu阈值和迭代式阈值分割] |
一、阈值分割基本定义 阈值分割技术是最经典和流行的图像分割方法之一,也是最简单的一种图像分割方法。此技术关键在于寻找适当的灰度阈值,通常是根据图像的灰度直方图来选取。它是用一个或几个阈值将图像的灰度级分为几个部分,认为属于同一个部分的像素是同一个物体。它不仅可以极大的压缩数据量,而且也大大简化了图像信息的分析和处理步骤。阈值分割技术特别适用于目标和背景处于不同灰度级范围的图像。该方法的最大特点是计算简单,在重视运算效率的应用场合中得到了广泛的应用。 二、全局阈值分割 1、基本原理 可以通过全局的信息,例如整个图像的灰度直方图。如果在整个图像中只使用一个阈值,则这种方法叫做全局阈值法,整个图像分成两个区域,即目标对象( 黑色)和背景对象(白色)。全局阈值将整个图像的灰度阈值设置为常数。 对于物体和背景对比较明显的图像,其灰度直方图为双峰形状,可以选择两峰之间的波谷对应的像素值作为全局阙值,将图像分割为目标对象和背景。其公式如下: 其中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)实现效果: 1、基本原理 最大类间方差法,又称为Otsu算法,该算法是在灰度直方图的基础上采用最小二乘法原理推导出来的,具有统计意义上的最佳分割。它的基本原理是以最佳阈值将图像的灰度值分割成两部分,使两部分之间的方差最大,即具有最大的分离性。 设f(x,)为图像IxN的位置(x,y)处的灰度值,灰度级为L,则f(x,y)属于[0,L-1].若灰度级i的所有像素个数为f,则第i级灰度出现的概率为: 在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)实现效果: 1、基本原理 迭代阈值法是阈值法图像分割中比较有效的方法,通过迭代的方法来求出分割的最佳阅值,具有一定的自适应性。迭代法阈值分割的步骤如下: (1) 设定参数T0,并选择一个初始的估计阈值T1。 (2)用阈值T分割图像。将图像分成两部分: G1 是由灰度值大于T1的像素组成,G2是由灰度值小于或等于T1的像素组成。 (3)计算G1和G2中所有像素的平均灰度值u1和u2,以及新的阈值T2 =(u1+u2)/2。 (4)如果|T2-T1|T1);% find函数返回素有非零元素的位置 r2=find(I |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |