Anda di halaman 1dari 3

[digital image processing]

October 9, 2012

LOCAL ADAPTIVE THRESHOLDING USING NIBLACK'S TECHNIQUE

Pada artikel lain sudah dibahas mengenai salah satu teknik local thresholding yakni menggunakan Sauvola. Dalam artikel ini akan dibahas tentang teknik lainnya yakni Niblack. Teknik ini dikembangkan oleh Niblack (1986) dimana dia menggunakan nilai statistik dari citra. Local thresholding sendiri bekerja pada area-area kecil atau disebut dengan lokal/blok dalam citra. Jadi proses penentuan nilai threshold dan thresholdingnya bekerja pada blok-blok dalam citra, sebagai contoh adalah blok berukuran 3x3. Biasanya blok ini disebut dengan window (jendela).

Teknik ini sangat tergantung pada ukuran jendela/blok nya. Ukuran jendela akan berpengaruh pada kualitas hasil binerisasi (thresholding). Citra yang bekerja untuk teknik ini adalah jenis grayscale (level keabuan). Rumus untuk menghitung nilai threshold menggunakan teknik ini adalah

, = , + ,

T(x,y) merupakan nilai threshold untuk tiap blok, m(x,y) merupakan reratanya sedangkan , adalah nilai standar deviasinya. Nilai k merupakan tetapan atau konstanta. Nilai sudah ditetapkan yakni -0.2, yang berbeda sekali dengan teknik Sauvola karena nilai ini selalu positif. Niblack menetapkan nilai optimal untuk ukuran jendela/blok pada penelitiannya yaitu 15. Yang menyebabkan adaptif nya algoritma ini adalah penggunaan standar deviasi lokal.

Satu hal yang perlu diingat dan akan digunakan pada program dalam artikel ini adalah nilai rerata dan standar deviasi yang dihitung adalah untuk tiap-tiap piksel. Jadi jendela tersebut akan bergeser dari kiri ke kanan setiap 1 piksel lalu turun ke bawah hingga semua piksel memiliki nilai threshold sendiri. Perlu diingat bahwa nilai ukuran jendela sebaiknya ganjil agar bisa bertumpu pada titik tengahnya sehingga nilai threshold akan diberikan pada koordinat (x,y).

Tidak ada yang terlalu rumit pada teknik ini, sehingga saya bisa langsung memberikan code program dengan menggunakan Matlab.

[digital image processing]

October 9, 2012

% Niblack technique for local thresholding

clear all;

close all;

clc;

% import Image

filename = '6MGYg.jpg';

% filename = 'AntiqueCoins-Karachi-Pakistan-Karachi.jpg'; sour = fullfile(cd, 'images', filename);

I = imread(sour);

imshow(I); title('Original Image'); [bar, kol, val] = size(I);

if val == 3 gray = rgb2gray(I);

else

gray = I;

end

%

Niblack

k

= -.2;

box = 80; % boleh diubah ukuran jendela (box) buff = padarray(gray, [box box], 'symmetric', 'both'); newI = zeros(bar + 2 * box, kol + 2 * box);

for m = box + 1 : bar + box for n = box + 1 : kol + box bar1 = m - floor(box / 2);

bar2 = m + floor(box / 2);

kol1 = n - floor(box / 2); kol2 = n + floor(box / 2);

temp = buff(bar1:bar2,kol1:kol2); rerata = mean2(temp); stdv = double(std2(temp)); Thres = rerata + k * stdv; if double(buff(m, n)) <= Thres newI(m, n) = 0;

else

end

end

newI(m,n) = 1;

end

newI = newI(box +1 : bar + box, box +1 : kol + box); figure, imshow(newI); title('Thresholded Image');

[digital image processing]

hasil eksekusi dari program di atas adalah

October 9, 2012

hasil eksekusi dari program di atas adalah October 9, 2012 Anda bisa membandingkan hasil program dari
hasil eksekusi dari program di atas adalah October 9, 2012 Anda bisa membandingkan hasil program dari

Anda bisa membandingkan hasil program dari Niblack dan Sauvola. Semoga bermanfaat.

@ thanks…