[digital image processing

]

October 10, 2012

LOCAL ADAPTIVE THRESHOLDING USING BERNSEN'S TECHNIQUE

Bernsen juga mengembangkan teknik untuk pengambangan pada citra grayscale yang bekerja pada area kecil atau lokal. Berbeda dengan teknik yang sudah dipaparkan pada artikel lainnya, Bernsen menggunakan nilai intensitas maksimal dan minimal dari lokal tersebut. Perhitungan untuk nilai ambang batasnya menjadi sederhana. Rumus untuk menghitung nilai threshold , = + 2

Tapi nilai threshold untuk tiap lokal/blok ditentukan berdasarkan selisih dari nilai intensitas maksimum dan minimum nya. Sehingga berlaku ketentuan berikut , = + 2 , − >

,

<

Dengan L adalah nilai contrast threshold nya sedangkan GT merupakan nilai global threshold yang didapat dengan menggunakan nilai Otsu. Nilai L bisa diset dengan nilai tertentu sedangkan nilai GT sendiri dicari dengan menggunakan program Otsu yang sudah pernah saya bahas pada artikel lain. Kelebihan dari metode ini tentu kecepatan prosesnya tapi teknik ini tidak bisa diandalkan bila ada derau pada citra. Teknik ini bisa bekerja baik bila citra yang diberikan sebagai input dalam keadaan cenderung bersih atau bisa dibilang dia hanya mampu toleran pada citra yang noisenya masih sedikit. Pada kasus dengan noise yang besar maka hasil binarisasi menggunakan teknik ini tidak lagi bisa diharapkan. Code program utama
% Bernsen technique clear all; close all; clc; % import Image filename = '6MGYg.jpg'; % filename = 'AntiqueCoins-Karachi-Pakistan-Karachi.jpg'; sour = fullfile(cd, 'images', filename);

[janshendry@gmail.com]

Page 1

[digital image processing]

October 10, 2012

I = imread(sour); imshow(I); title('Original Image'); [bar, kol, val] = size(I); if val == 3 gray = rgb2gray(I); else gray = I; end % Bernsen L = 150; % contrast threshold GT = otsuthres(gray); % global threshold box = 5; 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 - .5); bar2 = m + floor(box / 2); kol1 = n - floor(box / 2 - .5); kol2 = n + floor(box / 2); temp = buff(bar1:bar2,kol1:kol2); Imax = max(max(temp)); Imin = min(min(temp)); Ttemp = ( Imax + Imin ) / 2; if Imax - Imin > L T = Ttemp; elseif Imax - Imin < L T = GT; end if buff(m,n) <= T newI(m,n) = 0; else newI(m,n) = 1; end end end newI = newI(box +1 : bar + box, box +1 : kol + box); figure, imshow(newI); title('Thresholded Image');

[janshendry@gmail.com]

Page 2

[digital image processing]

October 10, 2012

code program Otsu
% otsu for thresholding function T = otsuthres(I) I2 = im2uint8(I(:)); N=256; [count,x]=imhist(I2,N); % menghitung nilai histrogram ternormalisasi p=(count/sum(count))'; L=length(x); % menghitung jumlah kumulatif p1k=cumsum(p); % menghitung rerata kumulatif kelas m=cumsum((1:L).*p); % menghitung rerata intensitas global mg=sum((1:L).*p); % menghitung varians antar kelas varB=(mg*p1k-m).^2./(p1k.*(1-p1k)); % mendapatkan threshold val=max(varB); idx=mean(find(varB==val)); T=(idx-1)/(N-1); % jans hendry % ee ugm indonesia

[janshendry@gmail.com]

Page 3

[digital image processing]

October 10, 2012

Hasil eksekusi dari program

Semoga bisa membantu..

@ thanks…

[janshendry@gmail.com]

Page 4