Tujuan dari metode otsu adalah membagi histogram citra gray level kedalam dua daerah
yang berbeda secara otomatis tanpa membutuhkan bantuan user untuk memasukkan nilai
ambang Pendekatan yang dilakukan oleh metode otsu adalah dengan melakukan analisis
diskriminan yaitu menentukan suatu variabel yang dapat membedakan antara dua atau lebih
kelompok yang muncul secara alami. Analisis Diskriminan akan memaksimumkan variable
tersebut agar dapat membagi objek latardepan (foreground) dan latarbelakang (background).
Formulasi dari metode otsu adalah sebagai berikut. Nilai Ambang yang akan dicari dari suatu
citra gray level dinyatakan dengan k. Nilai k berkisar antara 1 sampai dengan L, dengan nilai L
= 255. Probabilitas setiap pixel pada level ke i dapat dinyatakan:
pnN
dengan :
ni menyatakan jumlah pixel pada level ke I N menyatakan total jumlah pixel pada citra.
Contoh syntax :
error(nargchk(1,2,nargin))
assert(isRGB | ndims(I)==2,...
'The input must be a 2-D array or an RGB image.')
I = single(I);
%% Probability distribution
unI = sort(unique(I));
nbins = min(length(unI),256);
if nbins==n
IDX = ones(size(I));
for i = 1:n, IDX(I==unI(i)) = i; end
sep = 1;
return
elseif nbins<n
IDX = NaN(size(I));
sep = 0;
return
elseif nbins<256
[histo,pixval] = hist(I(:),unI);
else
[histo,pixval] = hist(I(:),256);
end
P = histo/sum(histo);
clear unI
% segmented image
IDX = ones(size(I));
IDX(I>pixval(k+1)) = 2;
% separability criterion
sep = maxsig/sum(((1:nbins)-mu(end)).^2.*P);
elseif n==3
w0 = w;
w2 = fliplr(cumsum(fliplr(P)));
[w0,w2] = ndgrid(w0,w2);
mu0 = mu./w;
mu2 = fliplr(cumsum(fliplr((1:nbins).*P))./cumsum(fliplr(P)));
[mu0,mu2] = ndgrid(mu0,mu2);
w1 = 1-w0-w2;
w1(w1<=0) = NaN;
sigma2B =...
w0.*(mu0-mu(end)).^2 + w2.*(mu2-mu(end)).^2 +...
(w0.*(mu0-mu(end)) + w2.*(mu2-mu(end))).^2./w1;
sigma2B(isnan(sigma2B)) = 0; % zeroing if k1 >= k2
[maxsig,k] = max(sigma2B(:));
[k1,k2] = ind2sub([nbins nbins],k);
% segmented image
IDX = ones(size(I))*3;
IDX(I<=pixval(k1)) = 1;
IDX(I>pixval(k1) & I<=pixval(k2)) = 2;
% separability criterion
sep = maxsig/sum(((1:nbins)-mu(end)).^2.*P);
else
k0 = linspace(0,1,n+1); k0 = k0(2:n);
[k,y] = fminsearch(@sig_func,k0,optimset('TolX',1));
k = round(k*(nbins-1)+1);
% segmented image
IDX = ones(size(I))*n;
IDX(I<=pixval(k(1))) = 1;
for i = 1:n-2
IDX(I>pixval(k(i)) & I<=pixval(k(i+1))) = i+1;
end
% separability criterion
sep = 1-y;
end
IDX(~isfinite(I)) = 0;
muT = sum((1:nbins).*P);
sigma2T = sum(((1:nbins)-muT).^2.*P);
k = round(k*(nbins-1)+1);
k = sort(k);
if any(k<1 | k>nbins), y = 1; return, end
k = [0 k nbins];
sigma2B = 0;
for j = 1:n
wj = sum(P(k(j)+1:k(j+1)));
if wj==0, y = 1; return, end
muj = sum((k(j)+1:k(j+1)).*P(k(j)+1:k(j+1)))/wj;
sigma2B = sigma2B + wj*(muj-muT)^2;
end
y = 1-sigma2B/sigma2T; % within the range [0 1]
end
end
HASIL OUTPUT :
Berdasarkan hasil uji coba dengan menggunakan lebih dari 30 sampel, metode
Otsu mampu memberikan hasil yang sangat memuaskan. Metode ini berhasil
menghasilkan citra tangan biner dengan area didalam citra tangan selalu dinyatakan
dengan warna putih dan diluarnya berwarna hitam, sehingga bentuk geometri tangan
dalam citra biner menjadi sangat jelas. Proses binersisasi citra tangan dengan menetapkan
nilai ambang T pada suatu nilai tertentu, sangat beresiko seperti yang ditunjukkan pada
gambar 2c, dengan T ditetapkan 80.
Warna putih muncul diluar area tangan dan kondisi ini dapat menyulitkan dalam
penentuan ciri-ciri geometri tangan. Citra biner yang ditunjukkan gambar 2d adalah hasil
dari aplikasi ACD Fotocanvas lite 2.0. Sebenarnya hasil citra biner dari aplikasi ini
sangat memuaskan. Aplikasi ini mampu menangkap beberapa garis-garis pada telapak
tangan dan jari-jari tangan. Akan tetapi bila ditinjau dari segi penentuan ciri-ciri geometri
tangan, munculnya warna abu-abu pada didalam area tangan dapat menyulitkan proses
penentuan ciri-ciri geometri tangan.