MEMBEDAKAN OBJEK MENGGUNAKAN METODE THRESHOLDING DAN FUNGSI MORFOLOGI Muhamad Taufik Yusuf Departemen Teknik Elektro, Fakultas Teknik Universitas Indonesia Kampus Baru UI, Depok 16424, Indonesia Indon esia E-mail:
[email protected]
ABSTRAK Makalah ini memaparkan tentang pengenalan objek pada suatu citra. Metode yang digunakan adalah thresholding dan fungsi morfologi. Dengan fungsi-fungsi tersebut tersebut dapat dikelompokkan suatu suatu objek pada citra masuk kedalam bentuk objek apa berdasarkan pencocokan citra yang sudah dilakukan pada tahap latihan dengan citra yang ingin dikenali objeknya. Fungsi-fungsi tersebut dapat dengan mudah dilakukan dengan bantuan perangkat lunak MATLAB. Program yang dibuat adalah modifikasi dari demo pada berkas help pada perangkat lunak MATLAB. Kata Kunci: object recognition, fungsi morfologi, threshold 1.
PENDAHULUAN Penerapan komputer untuk pengenalan pola telah banyak dilakukan, seperti pengenalan karakter, pengenalan suara, pengenalan sidik jari, pengenalan wajah dan lain-lain. Dasar dari pengenalanpengenalan tersebut adalah pengenalan objek pada suatu citra. Makalah ini membahas tentang penggunaan fungsi morfologi dan threshold untuk membedakan objek dalam suatu citra. Program yang digunakan adalah modifikasi dari program demo yang disertakan matlab pada bagian help dengan judul Identifying Round Object . Citra dan Matriks Citra Sebuah citra didefinisikan sebagai fungsi dua dimensi, f(x,y) dimana x dan y adalah koordinat spasial. Dan amplitudo fungsi pada setiap pasangan titik (x,y) merupakan intensitas atau kecemerlangan citra pada titik tersebut (Gonzales, 2004). Gray level digunakan untuk menyebut intensitas dari citra monokrom atau satu warna. Citra berwarna dibentuk oleh kombinasi dari beberapa citra monokrom, misalnya RGB dibentuk oleh kombinasi tiga warna yaitu, merah, hijau dan biru. Karena itu banyak teknik pemrosesan citra monokrom dapat digunakan untuk citra berwarna dengan memproses tiga komponen citra tersebut secara terpisah. Sebuah citra yang direkam oleh kamera merupakan citra analog. Untuk dapat diolah oleh komputer, citra analog tersebut harus dikonversi ke bentuk citra digital. Proses konversi nilai koordinat (x,y) disebut sampling, dan proses konversi nilai amplitudo f disebut quantisasi. Ketika x, y dan amplitude f semuanya bernilai diskrit, maka citra tersebut dapat dikatakan sebagai citra digital. Citra digital dapat di kodekan dalam bentuk matriks dimana indeks baris dan kolomnya menyatakan suatu titik pada citra tersebut dan elemen matriksnya (yang disebut sebagai piksel)
menyatakan menyatakan tingkat keabuan pada titik tersebut. Pada gambar berikut ini ditampilkan contoh koordinat suatu piksel dari citra digital dengan x merepresentasikan baris dan y merepresentasikan kolom.
1.1
Gambar 1. Koordinat Piksel Pada gambar diatas, piksel yang ditunjuk tanda panah berada pada koordinat (M,4). Jika direpresentasikan dalam bentuk matriks dapat dilihat seperti pada persamaan berikut ini: f (1,2) f (1,1) f (2,1) f ( 2,2) f = ... ... f ( M ,1) f ( M ,2)
1.2
...
f (1, N )
...
f (2, N )
... ... ... f ( M , N )
(1)
Thresholding Thresholding adalah metode paling sederhana dari segmentasi citra. Dari citra abu-abu, thresholding dapat digunakan untuk membuat citra biner (Shapiro, 2002). Pada proses thresholding, masing-masing piksel pada sebuah citra ditandai sebagai piksel milik objek jika nilainya lebih besar
dari nilai threshold. Dengan asumsi objek tersebut lebih terang dari latar belakangnya, hal ini disebut threshold above. Sedangkan kebalikannya disebut threshold below. Jika piksel-piksel suatu objek berada diantara dua threshold disebut threshold inside dan kebalikannya disebut threshold outside. Biasanya piksel suatu objek dilabeli dengan nilai “1” sementara piksel-piksel latar belakangnya dilabeli dengan nilai “0”. Thresholding dapat dibentuk dalam persamaan sebagai berikut:
1, if f ( x, y ) ≥ T g ( x, y ) = 0, if f ( x, y ) < T
( 2)
Jika nilai T konstan, pendekatan ini disebut global thresholding. Contoh hasil thresholding suatu citra abu-abu dapat dilihat pada gambar berikut:
1.3.1 Dilasi Dilasi adalah operasi untuk mengembangkan mengembangkan atau menebalkan objek pada citra biner. Dilasi A oleh elemen-elemen elemen-elemen terstruktur B didefinisikan dengan: A ⊕ B
=
U A B
(3)
b∈ B
Dilasi bersifat komutatif, dengan demikian demikian dapat dibentuk persamaan: A ⊕ B = B ⊕ A =
U B A
(4)
a∈ A
Jika B memiliki pusat pada citra origin, maka dilasi dapat dipahami sebagai lokasi dari titik-titik yang ditutupi oleh B ketika pusat B memasuki A. contoh dilasi pada citra dapat dilihat pada gambar berikut ini:
Gambar 2. Citra Original Gambar 4. Citra Dilasi 1.3.2 Erosi Erosi pada citra biner dapat didefinisikan
(5) Dimana Bz adalah translasi dari B oleh vector z sedeikian sehingga:
, Gambar 3. Efek Threshold Pada Citra 1.3
Fungsi Morfologi Kata morfologi pada umumnya diketahui sebagai cabang dalam ilmu biologi yang membahas tentang bentuk dan struktur hewan hewan dan dan tumbuhan. tumbuhan. Dalam konteks pencitraan, morfologi adalah cara untuk mengekstraksi komponen-komponen citra yang sangat berguna dalam representasi dan deskripsi bentuk area seperti boundaries, skeleton dan convex hull (Gonzales, 2004). Dengan kata lain, morfologi dapat disebut sebagai fungsi untuk merubah bentuk objek pada suatu citra. Morfologi terdiri atas dua operasi dasar yaitu: dilasi dan erosi.
.
(6)
Ketika elemen terstruktur B memiliki pusat dan berlokasi di titik origin E, maka erosi dari A oleh B dapat dipahami sebagai lokasi titik-titik yang digapai oleh pusat dari B ketika B memasuki A. erosi tersebut dapat dilihat pada p ersamaan berikut:
(7)
Citra erosi dapat dilihat pada gambar berikut:
lain sebagainya. Pada citra dua dimensi, ada dua buah macam hubungan berdasarkan letak pikselpiksel tetangganya, yaitu: 4-tetangga atau 8-tetangga.
Gambar 6. Hubungan 4-Tetangga Piksel P Gambar 5. Citra Erosi 1.3.3 Bentuk operasi pada Citra Fungsi morfologi paling sering di implementasikan untuk citra digital. Citra dijital dapat diolah dengan operasi aritmatik dan lojik antara dua citra. Operasi aritmatik diantaranya: Penjumlahan (+), Pengurangan (-), Perkalian (x) atau Pembagian (/). Sedangkan untuk operasi lojik diantaranya: OR, AND dan NOT. Resume dari operasi pada citra digital dapat dilihat pada dua tabel berikut:
Tabel 1. Operasi Aritmatik Opr
Fungsi
MATLAB
Ket
+
Penjumlahan array dan matriks
plus(A,B)
a + b, A + B, or a + A
-
Pengurangan array dan matriks
Minus(A,B)
a - b, A - B, or a - A
*
Perkalian array dan matriks
Mtimes(A,B)
A*B
/
Pembagian array dan matriks (kanan)
Mrdivide(A,B)
A/B
\
Pembagian array dan matriks (kiri)
Mldivide(A,B)
A\B
Tabel 2. Operasi Lojik Opr
Nama
Ket
&
AND
A&B
|
OR
A|B
−
NOT
A−B
1.4
Keterhubungan Piksel Sebuah piksel dapat memiliki hubungan dengan piksel-piksel lain yang ada di sekitarnya. Hubungan antar piksel dilihat dari kriteria kecemerlangan atau nilai keabuan. Misalnya: piksel-piksel tersebut samasama memiliki nilai “0” atau “1” atau sama-sama bedanya tidak lebih dari lima tingkat keabuan, dan
Gambar 7. Hubungan 8-Tetangga Piksel P 2.
METODOLOGI Untuk membedakan objek pada citra menggunakan threshold dan fungsi morfologi, langkah-langkah yang dilakukan adalah sebagai berikut: 2.1 Tahap Latihan 1. Pembentukan Citra: Menentukan data yang diperlukan dan memilih metode perekaman citra digital. 2. Pengolahan Awal: Mengkonversi citra kedalam bentuk hitam-putih dan menentukan threshold citra yang akan digunakan sebagai batas terluar objek. 3. Penghilangan Noise: Proses awal yang dilakukan untuk memperbaiki kualitas citra. Proses ini juga menghilangkan piksel-piksel yang tidak dibutuhkan untuk mengenali objek. Ada dua cara dalam memperbaiki citra yaitu : dan Radiometric Geometric Correction Correction. Geometric Correction digunakan untuk memperbaiki kerusakan kondisi yang disebabkan oleh sistem sensor atau geometri dari objek. Untuk memperbaikinya digunakan . Sedangkan Radiometric Image Registration Correction digunakan untuk memperbaiki kerusakan kondisi yang disebabkan oleh noise. Untuk memperbaikinya menggunakan Image Filtering. 4. Pelabelan: Memberikan label pada wilayahwilayah yang ada pada citra. Ada dua cara dalam memberikan label citra yaitu: memberikan label pada wilayah yang homogen berdasarkan ciri tonal dan warna yang disebut primary features, dan memberikan label pada
5.
wilayah bertekstur berdasarkan ciri tekstur disebut secondary features. Klasifikasi: Pengelompokan objek berdasarkan bentuknya dengan melihat ciri primer atau sekunder.
2.2
Tahap pencocokan Melakukan identifikasi objek pada citra. Pengenalan objek dilakukan dengan membandingkan ciri objek yang diamati dengan pengetahuan yang telah dimiliki tentang objek-objek yang ada. Sistem matching dibangun dengan melalui proses pelatihan dan proses pencocokan. Pada proses pelatihan dibangun suatu aturan keputusan, sedangkan pada proses pencocokan digunakan aturan keputusan tersebut.
nilai metric diatas 0.90, sebuah kotak memiliki nilai metric antara 0.75 dan 0.85, sebuah segitiga memiliki nilai metric antara 0.50 dan 0.65. 1. for k = 1:length(B) 2. boundary = B{k}; 3. delta_sq = diff(boundary).^2; 4. perimeter = sum(sqrt(sum(delta_sq,2))); 5. area = stats(k).Area; 6. metric = 4*pi*area/perimeter^2; 7. centroid = stats(k).Centroid;
Sebuah oval memiliki nilai metric antara 0.86 dan 0.90, sebuah trapesium memiliki nilai metric antara 0.66 dan 0.70. Kode program seperti pada baris kode dibawah ini:
1. if metric >= 0.90 2. plot(boundary(:,2), boundary(:,1), 'r', 'r' , 'LineWidth' 'LineWidth', , 2) 3. text(centroid(1,1)7,centroid(1,2), '' '', ,'Color' 'Color', ,'r' 'r', ,... 'FontSize',10, 'FontSize' ,10,'FontWeight' 'FontWeight', ,'bold' 'bold'); ); 4. elseif ((metric >= 0.75)&&(metric < 0.85)) 1. function objectRecognition(pict) 5. plot(boundary(:,2), boundary(:,1), 2. G = imread(pict); 'g', 'g' , 'LineWidth' 'LineWidth', , 2) 3. I = rgb2gray(G); 6. text(centroid(1,1)berikutnya program menghitung level dari global 7,centroid(1,2), '' '', ,'Color' 'Color', ,'g' 'g', ,... threshold yang nantinya akan digunakan untuk 'FontSize',10, 'FontSize' ,10,'FontWeight' 'FontWeight', ,'bold' 'bold'); ); mengkonversi citra ke bentuk citra biner bersama 7. elseif ((metric >= 0.50)&&(metric < 0.65)) fungsi im2bw. 8. plot(boundary(:,2), boundary(:,1), 'b', 'b' , 'LineWidth' 'LineWidth', , 2) 1. threshold = graythresh(I); graythresh(I); 9. text(centroid(1,1)2. bw = im2bw(I,threshold); 7,centroid(1,2), '' '', ,'Color' 'Color', ,'b' 'b', ,... 3. bw = imclearborder(bw, 4); 'FontSize',10, 'FontSize' ,10,'FontWeight' 'FontWeight', ,'bold' 'bold'); ); 4. bw = bwareaopen(bw,30); 10. elseif ((metric >= 0.86)&&(metric 5. bw = imfill(bw,'holes' imfill(bw, 'holes'); ); < 0.90)) Baris program diatas mengkonversi citra grayscale 11. plot(boundary(:,2), plot(boundary(:,2), boundary(:,1), boundary(:,1), menjadi citra biner. Citra keluaran bw menempati 'y', 'y' , 'LineWidth' 'LineWidth', , 2) posisi semua piksel citra masukkan dengan nilai “1” 12. text(centroid(1,1)yang berarti putih, dan mengganti piksel-piksel 7,centroid(1,2),'' 7,centroid(1,2), '', ,'Color' 'Color', ,'b' 'b', ,... lainnya dengan nilai “0” atau hitam. 'FontSize',10, 'FontSize' ,10,'FontWeight' 'FontWeight', ,'bold' 'bold'); ); 13. elseif ((metric >= 0.66)&&(metric 1. [B,L] = bwboundaries(bw,'noholes' bwboundaries(bw, 'noholes'); ); < 0.70)) 2. stats = regionprops(L,'Area' regionprops(L, 'Area', ,'Centroid' 'Centroid'); ); 14. plot(boundary(:,2), plot(boundary(:,2), boundary(:,1), boundary(:,1), 'm', 'm' , 'LineWidth' 'LineWidth', , 2) Kelompok perintah di atas melabel dan 15. text(centroid(1,1)mengelompokkan objek-objek. Serta menghitung 7,centroid(1,2),'' 7,centroid(1,2), '', ,'Color' 'Color', ,'b' 'b', ,... luas area dan titik tengah dari masing-masing masing-masing objek. 'FontSize',10, 'FontSize' ,10,'FontWeight' 'FontWeight', ,'bold' 'bold'); ); 16. end 1. figure; 17. end 2. imshow(bw); 3. hold on on; ; Kemudian hasil dari pengenalan objek ditampilkan Kelompok perintah diatas digunakan untuk dengan warna yang berbeda. Sesuai dengan kode menampilkan hasil citra sementara yang telah diolah. program di bawah ini: Kelompok perintah dibawah digunakan untuk menganalisa satu persatu objek yang telah ditandai. didalam tahap latihan, sebuah lingkaran memiliki
3. 3.1
PENJELASAN PROGRAM Penjelasan Baris Kode Program dibuat sebagai sebuah fungsi dengan satu inputan citra. Pada baris program di bawah ini fungsi menerima masukan citra dan merubah citra tersebut ke dalam format grayscale.
1. text(0,10,'Lingkaran' 10, 'Lingkaran', ,'Color' 'Color', ,'r' 'r', ,... 'FontSize',10, 'FontSize' ,10,'FontWeight' 'FontWeight' ,'bold' 'bold'); ); 2. text(80,-10,'Kotak' text(80,-10,'Kotak', ,'Color' 'Color', ,'g' 'g', ,... 'FontSize',10, 'FontSize' ,10,'FontWeight' 'FontWeight' ,'bold' 'bold'); ); 3. text(140,10,'Segitiga' 10, 'Segitiga', ,'Color' 'Color', ,'b' 'b', ,... 'FontSize',10, 'FontSize' ,10,'FontWeight' 'FontWeight' ,'bold' 'bold'); ); 4. text(220,-10,'Oval' text(220,-10,'Oval', ,'Color' 'Color', ,'y' 'y', ,... 'FontSize',10, 'FontSize' ,10,'FontWeight' 'FontWeight' ,'bold' 'bold'); ); 5. text(280,10,'Trapesium' 10, 'Trapesium', ,'Color' 'Color', ,'m' 'm', ,... 'FontSize',10, 'FontSize' ,10,'FontWeight' 'FontWeight' ,'bold' 'bold'); );
3.2
Cara Pemakaian Untuk menggunakan program yang dibuat, yang harus dilakukan adalah: 1. Jalankan perangkat lunak MATLAB. 2. Atur current directory ke folder tempat modul M-File dan gambar yang akan dianalisa disimpan. 3. Pada ketikkan: command window objectrecognition('testcitra03.png'), dimana “testcitra03.png” adalah citra yang diproses. 4. Hasil dari citra yang diproses akan keluar pada Figure Window. 4.
HASIL UJI COBA PROGRAM Uji coba program menggunakan file citra bertipe *.png dengan pertimbangan mudah untuk diubahubah sesuai dengan keperluan. Inputan citra di tentukan bertipe hitam-putih hanya untuk kemudahan uji coba saja. Dapat juga dimasukkan citra berwarna.
Gambar 9. Citra Hasil Program Tampak pada citra hasil ditemukan ada beberapa objek yang memiliki bentuk berbeda namun dikenali sebagai objek yang sama. Hal itu terlihat pada gambar segitiga sama sisi dan persegi panjang. Pada objek segitiga sama sisi, nilai metric yang didapatkan adalah 0.53 dimana nilai tersebut masih berada pada kisaran 0.50 sampai 0.65 yaitu kisaran objek segitiga. Sedangkan objek persegi panjang nilai metric yang didapatkan adalah 0.76 dimana nilai tersebut masih berada pada kisaran 0.75 sampai 0.85 yaitu kisaran kotak. Nilai metric yang didapatkan sebagai pembanding pengenalan objek pada citra dapat dilihat pada gambar berikut ini:
Gambar 10. Nilai Metric dari Objek Pada Citra Gambar 8. Gambar Original Citra Hitam-Putih Setelah dilakukan proses pengenalan objek, program membedakan masing-masing objek di dalam citra tersebut dengan warna yang berbeda. Ditentukan untuk bentuk objek segitiga diwakili oleh warna biru, untuk objek kotak diwakili oleh warna hijau, untuk objek lingkaran diwakili oleh warna merah, untuk objek oval diwakili warna kuning dan untuk objek trapesium diwakili oleh warna magenta.
5.
KESIMPULAN Dari hasil uji coba didapatkan bahwa modul program dapat berjalan dengan baik. Hasil pengenalan sesuai dengan bentuk objek yang diproses. Dengan menggunakan metode threshold dan fungsi morfologi dapat dideteksi bentuk yang berbeda-beda dan dilakukan pengenalan objek sesuai dengan permintaan atau keinginan. Objek yang dibedakan dapat diatur berdasarkan nilai metricnya dimana untuk bentuk objek yang berbeda nilai metricnya juga berbeda. Sehingga dapat di
kelompokkan untuk kisaran nilai metric tertentu adalah mewakili objek tertentu juga. PUSTAKA
Gonzalez, R. C., Woods, R. E., dan Eddins, S. L. (2004). Digital Image Processing Using MATLAB, NJ: Prentice Hall. Shapiro, Linda G. & Stockman, George C. (2002). Computer Vision. Prentice Hall. Widodo, Suryarini, Lulu Munggaran dan Nuryuliani, (2006). Sistem Identifikasi Pengenalan Karakter . Proceeding Menggunakan Metode RLE Seminar Ilmiah Nasional Komputer dan Sistem Intelijen, Universitas Gunadarma, Depok. MATLAB, Help, Realease 14 Versi 7.0.0.19920.