图像分割:1.基于阈值的图像分割方法(ostu法)

今天给大家简单介绍一下Ostu算法求阈值,这个算法可以说是基于阈值分割图像方法中最普遍的方法之一,网上的论文有很多对Ostu算法进行改进和推广的算法。
原理简介:
         对于一幅图像,设当前景与背景的分割阈值为t时,前景点占图像比例为w0,均值为u0,背景点占图像比例为w1,均值为u1。则整个图像的均值为u = w0*u0+w1*u1。建立目标函数g(t)=w0*(u0-u)^2+w1*(u1-u)^2,g(t)就是当分割阈值为t时的类间方差表达式。OTSU算法使得g(t)取得全局最大值,当g(t)为最大时所对应的t称为最佳阈值。OTSU算法又称为最大类间方差法。

clc;clear all;
f = imread('1.jpg');
f_gray = rgb2gray(f);
f_h = imhist(f_gray);
k = length(f_h);
t_list = [];
for i = 0:k - 1;
    t_list(i + 1) = ostu(f_h, i);
end
[max_g, ind] = max(t_list);
ind = ind/(k-1);
f_bw = im2bw(f_gray,ind);
imshow(f_bw);

function g = ostu( img_h, T )
%输出的是类间方差
SUM = sum(img_h);
SUM0 = sum(img_h(1:T+ 1));
SUM1 = sum(img_h(T+2:end));
k = length(img_h);
w0 = SUM0/SUM;
w1 = SUM1/SUM;
l1 = linspace(0,T,T +1);
l2 = linspace(T+1,k -1 ,k - T - 1);
l1 = l1';
l2 = l2';
% disp(l2);
% disp(img_h(T+2:end));
u0 = sum(img_h(1: T+1).* l1)/SUM0;
u1 = sum(img_h(T+2: end).* l2)/SUM1;
u = w0*u0 + w1*u1;
g = w0*(u0 - u)^2 + w1*(u1 - u)^2;
end

结束语:冈萨雷斯这本书我刚刚开始看,可能会有一些理解不正确的地方,希望大家能够在我文章

下留言,帮我改正。另外想要和我一起自学的小伙伴,可以加我的微信号:13027158275

或者加入数字图像处理交流QQ群:709538582

你可能感兴趣的:(图像分割:1.基于阈值的图像分割方法(ostu法))