[image processing

]

August 13, 2012

LOCAL THRESHOLDING USING OTSU (ANOTHER APPROACHMENT)
Dalam artikel sebelumnya pernah dibahas mengenai pengambangan (thresholding) pada citra digital menggunakan teknik Otsu. Dalam artikel ini, kita akan gunakan kembali metode tersebut tapi dengan pendekatan yang berbeda. Pada artikel sebelumnya kita menggunakan teknik Otsu secara serentak pada keseluruhan bagian dari citra digital sehingga hanya ada 1 nilai ambang (threshold) yang berlaku untuk sebuah citra. Namun, pada artikel ini kita akan memanfaatkan teknik Otsu tapi sebelum itu kita akan membagi sebuah citra secara vertikal menjadi beberapa bagian. Sehingga kita akan mendapatkan beberapa nilai ambang yang bisa jadi berbeda-beda nilainya. Tujuannya adalah meng-optimalkan kerja dari teknik Otsu karena dalam beberapa praktik lapangan ternyata pendekatan ini bisa lebih baik. Variasi keabuan sebuah citra yang tinggi dan distribusi piksel gelap-terang yang tidak merata bisa dikatakan membutuhkan pendekatan ini. Walau sebenarnya saya sendiri belum pernah meneliti secara mendalam, tapi hanya dugaan didukung dengan beberapa bacaan saja. Diharapkan anda bisa melakukan penelitian lebih lanjut jika memang penting dalam penelitian anda.

Langkah-langkah yang dalam mengembangkan teknik ini adalah Membaca data citra ke dalam Matlab Bagi citra secara vertikal (bisa juga horizontal sesuai dengan kreatifitas anda) dengan ukuran yang anda inginkan. Dalam hal ini tentu harus menyesuaikan dengan ukuran citra. Lalu lakukan segmentasi dengan thresholding teknik Otsu untuk tiap potongan (slice). Rekonstruksi kembali tiap potongan citra hasil pengolahan dengan cara yang biasa saja. Berikan sedikit proses tambahan, dalam hal ini saya tambahkan proses ERODING (erosi) agar meminimalisir konektifitas pada piksel yang bertetangga. Tampilkan citra hasil pengolahan setelah disatukan.

Untuk membedakan antara metode yang dibahas kali ini dengan yang dibahas pada artikel sebelumnya, kita sebut metode kali ini sebagai New Approachment sedangkan yang lalu disebut dengan Metode Langsung. Metode ini bukan hal baru (bukan pengembangan saya) tapi hanya trik saja dalam menyelesaikan problem yang telah saya utarakan di atas.

Langkah-langkah di atas bila dirumuskan ke dalam program Matlab menghasilkan

[janshendry@gmail.com]

Page 1

[image processing]

August 13, 2012

Citra asli

Citra hasil segmentasi dengan New Approachment

[janshendry@gmail.com]

Page 2

[image processing]

August 13, 2012

Citra hasil segmentasi dengan metode langsung

[janshendry@gmail.com]

Page 3

[image processing]

August 13, 2012

Tampak bahwa hasil segmentasi sangat berbeda. Dengan teknik yang kita bahas pada artikel ini, hasil segmentasi lebih baik ketimbang metode langsung dimana piksel citra secara serentak diberikan pengolahan.

Programnya adalah Program Utama
% main program %% new approach clear all; close all; clc; filename = % filename % filename % filename % filename 'AntiqueCoins-Karachi-Pakistan-Karachi.jpg'; = 'dsc_0234.jpg'; = 'p7pbbrass.jpg'; = 'TRNC2010Coins.jpg'; = 'World-of-coins.jpg';

I=imread(filename); imshow(I); title('Citra Asli');

[janshendry@gmail.com]

Page 4

[image processing]

August 13, 2012

[bar, kol, z] = size(I); n = 125; % amount of column slices = kol/n; % slices vertical se = strel('line', 3, 90); for m = 0:slices-1 citra = I(:,m*n+1:(m+1)*n); [Iss sm]= otsuthres(citra); Iseg(:,m*n+1:(m+1)*n) = imerode(Iss, se); disp('Separability Measurement'); disp(sm); end figure, imshow(Iseg); title('New Approachment Using Otsu Method'); Iseg = imfill(Iseg, 'holes'); figure, imshow(Iseg); title('New Approachment Using Otsu Method'); %% %% uji menggunakan toolbox matlab [level EM] = graythresh(I); I2 = im2bw(I,level); figure, imshow(I2); title('Matlab Toolbox - graythresh'); I2 = imerode(I2, se); I2 = imfill(I2, 'holes'); figure, imshow(I2); title('Matlab Toolbox - graythresh'); %% % jans hendry % EE&IT Universitas Gadjah Mada, Indonesia

Program Fungsi Pengolahan
% otsu for thresholding function [Iseg, sm] = 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

[janshendry@gmail.com]

Page 5

[image processing]

August 13, 2012

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); % menghitung separability measure varG=sum((((1:L)-mg).^2).*p); sm=varB(T*255)/varG; % thresholding Iseg=im2bw(I,T); % jans hendry % ee ugm indonesia

Demikianlah artikel ini ditulis, semoga bisa membantu rekan-rekan yang sedang menyelesaikan tugas atau penelitian yang relevan.

@ thanks…

Image Sources: http://www.coinnetwork.com/forum/topics/has-anyone-here-come-across http://karachi.olx.com.pk/antique-coins-buyer-alhamd-antiqus-coin-difftrent-coins-karachipakistan-iid-67797490 http://cashforgoldusa.com/coin-collectors-club/

[janshendry@gmail.com]

Page 6

Sign up to vote on this title
UsefulNot useful