阈值分割技术

1. 全局阈值法

  1. 通过全局信息(如直方图)。如果图像只是用一个阈值,则叫做全局阈值法,整个图像分成两个区域,即目标对象(黑)和背景对象(白)。全局阈值将图像的灰度阈值设置为常数
  2. 对物体和背景对比明显的图,直方图呈双峰形状,可选择波谷为全局阈值,公式如下:

    g(x,y)=1 if img(x,y)<T else 0
    (也就是小于阈值T的像素设为0,大于阈值设为1)

  3. 方法:

    step1. 遍历赋值法;
    step2. 逻辑判断法:BW=img>127 %直接生成逻辑矩阵
    step3. 函数法:im2bw(img,level)

  4. 代码:
    bw=im2bw(gray,t) %t是归一化的阈值

2. Otsu阈值分割

  1. 最大类间方差法,在灰度直方图的基础上采用最小二乘法原理推导出来,具有统计意义上的最佳分割。原理是以最佳阈值将图像分割成两部分,使两部分之间的方差最大,即具有最大分离性
  2. 代码:
t=graythresh(gray);  %函数获取otsu的最佳阈值
bw=im2bw(gray,t);  %利用Otsu的最佳阈值实现二值化

3. 迭代式阈值分割

  1. 迭代计算新阈值,直到满足自设定的阈值停止
  2. 代码:
## 非函数实现
close all;clear all;clc;

I=imread('../hand/hand.jpg');
I=im2double(I);

T0=0.01;
T1=(min(I(:))+max(I(:)))/2;  

r1=find(I>T1);
r2=find(I<=T1);

T2=(mean(I(r1))+mean(I(r2)))/2;

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=im2bw(I,T2);
figure();
subplot(121),imshow(I);
subplot(122),imshow(J);
原文地址:https://www.cnblogs.com/thgpddl/p/12610947.html