Otsu算法(双阈值)
该算法就是利用otsu算法计算出两个阈值公式
g=w0*(u0-u)^2+w1*(u1-u) ^2+ w2*(u2-u) ^2
g最大值时,就可以选出两个阈值
代码
求两个阈值
function [t1,t2]=DoubleOtsuThresh(img)
%
% Otsu 双阈值求解
% 输入 图像img,输出 最优阈值t1和t2(归一化,范围在[0,1])
%
%
BinsNum = 256;
hist = imhist(img,BinsNum);
p = hist / sum(hist); % 直方图的概率密度函数
mG= sum(p .* (1:BinsNum)'); % 全局均值
P1 = cumsum(p); % 概率分布
m1 = cumsum(p .* (1:BinsNum)')./P1; % 256*1 每个阈值的前景平均灰度
% 根据算法理论,从k2+1累加到L-1,可以先倒着累加再翻转回来
P3= cumsum(flip(p));
m3 = cumsum(flip(p) .* flip(1:BinsNum)')./P3;
P3=flip(P3);
P3=[P3(2:end) ;0];