BAB II LANDASAN TEORI
2.1 Batik Batik merupakan salah satu cara pembuatan bahan pakaian. Selain itu batik bisa mengacu pada dua hal, yang pertama adalah teknik pewarnaan kain dengan menggunakan malam untuk mencegah pewarnaan sebagian dari kain. Dalam literatur internasional teknik ini dikenal sebagai wax-resist dyeing, dan yang kedua adalah kain atau busana yang dibuat dengan teknik tersebut, termasuk penggunaan pola-pola tertentu yang memiliki kekhasan. Seni pewarnaan kain dengan teknik perintang pewarnaan menggunakan malam adalah salah satu bentuk seni kuno. Di Indonesia batik dipercaya sudah ada semenjak zaman Majapahit, dan menjadi sangat populer akhir abad ke-18 atau awal abad ke-19. Batik yang dihasilkan ialah semuanya batik tulis sampai awal abad 20 dan batik cap baru dikenal setelah perang dunia I atau sekitar tahun 1920-an. Walaupun kata “batik” berasal dari bahasa Jawa, kehadiran batik di Jawa sendiri tidaklah tercatat. G.P. Rouffer juga melaporkan bahwa pola gringsing dikenal sejak abad ke-12 di Kediri, Jawa Timur. Dia menyimpulkan bahwa pola seperti ini hanya bisa dibentuk dengan menggunakan alat canting, sehingga ia berpendapat bahwa canting ditemukan di Jawa. Membuat pola batik yang rumit hanya dibuat dengan canting, dan canting telah dikenal di Jawa sejak abad ke-13 atau bahkan lebih awal. (herry libijanto, 2013:9) Semenjak
industrialisasi
dan
globalisasi
yang
memperkenalkan
teknik
otomatisasi, batik jenis baru muncul dikenal sebagai batik cap dan batik cetak, sementara batik tradisional yang diproduksi dengan teknik tulisan tangan menggunakan canting dan malam disebut batik tulis.
6
7
2.2 Macam-macam Batik Batik dibuat dalam bahan yang berwarna putih terbuat dari kapas (kain mori) dengan bahan-bahan semacam sutera, poliester, rayon dan bahan sintetis lainnya. Pola batik sendiri dibentuk dengan cairan lilin yang menggunakan alat bernama canting untuk pola halus, atau kuas untuk pola berukuran besar, dengan demikian cairan lilin dapat meresap ke serat sebuah kain. Setelah beberapa kali proses pewarnaan, kain yang telah dibatik dicelupkan ke dalam bahan kimia dengan tujuan melarutkan lilin. Ada beberapa macam-macam pola batik yaitu batik truntum, dan batik nitik. Batik Truntum memiliki pola yang melambangkan cinta raja yang bersemi kembali seperti pola yang berbunga-bunga, dan batik nitik bermakna kebijaksanaan bdiharapkan pada pemakainya akan bersikap bijaksana.
2.2.1
Batik Truntum
Batik truntum diciptakan oleh Kanjeng Ratu Kencana (Permaisuri Sunan Paku Buwana III dari Surakarta Hadiningrat) bermakna cinta yang tumbuh kembali. Beliau menciptakan pola ini sebagai simbol cinta yang tulus tanpa syarat, abadi dan semakin lama terasa semakin subur berkembang (tumaruntum). 2.2.2
Batik Nitik
Batik nitik berasal dari pengaruh luar yang berkembang di pantai utara laut jawa, sampai akhirnya berkembang pula di pedalaman menjadi suatu motif yang sangat indah. Pada saat pedagang dari Gujarat datang di pantai utara pulau jawa, dalam dagangannya, tedapat kain tenun dan bahan sutera khas Gujarat. Motif dan kain tersebut berbentuk geometris dan sangat indah, dibuat dengan teknik dobel ikat yang disebut “Patola” dan dikenal di Jawa sebagai kain “cinde”. Warna yang digunakan adalah warna merah dan biru indigo.
8
Kebijaksanaan menjadi inti dari makna batik nitik, para pemakainya diharapkan menjadi orang yang bijaksana. Maka dari itulah orang-orang yang dituakan di lingkungannya banyak menggunakan batik motif nitik.
2.3 Citra Citra adalah suatu representasi (gambar), kemiripan, atau inisiasi dari suatu objek. Citra sebagai keluaran suatu sistem perekaman data dapat bersifat optik berupa foto, bersifat analog atau bersifat digital yang dapat langsung disimpan pada suatu media penyimpanan. Secara matematis, citra dinyatakan sebagai suatu fungsi kontinu dari intensitas cahaya pada bidang dua dimensi. Ada dua jenis citra yang perlu diketahui, yaitu: 1.
Citra Analog Citra analog adalah citra yang bersifat kontinu, seperti gambar pada monitor
televisi, foto sinar X, foto yang tercetak di kertas foto, lukisan, pemandangan alam, hasil CT scan, gambar-gambar yang terekam pada pita kaset, dan lain sebagainya. Citra analog tidak dapat dipresentasikan dalam komputer sehingga tidak bisa diproses di komputer secara langsung. Oleh sebab itu, agar citra ini dapat diproses di komputer, proses konversi analog ke digital harus dilakukan terlebih dahulu. Citra analog dihasilkan dari alat-alat analog, seperti video kamera analog, kamera foto analog, Webcam, CT scan, sensor rontgen untuk foto thorax, sensor gelombang pendek pada sistem radar, sensor ultrasound pada sistem USG, dan lain-lain. 2.
Citra Digital Citra digital merupakan suatu matriks dimana indeks baris dan kolomnya
menyatakan suatu titik pada citra tersebut dan elemen matriksnya (yang disebut sebagai elemen gambar/ pixel/ piksel/ pels/ picture element) menyatakan tingkat keabuan pada titik tersebut.(Adi Susanto dan Abdul Kadir: 2013).
9
2.3.1
Resolusi Citra
Resolusi citra merupakan tingkat detailnya suatu citra, semakin tinggi resolusinya semakin tinggi pula tingkat detail dari citra tersebut. Menurut T. Sutoyo et al (2009) ada dua jenis resolusi yang perlu diketahui, yaitu: 1.
Resolusi Spasial Resolusi spasial ini merupakan ukuran halus atau kasarnya pembagian kisi-kisi
baris dan kolom pada saat sampling. Resolusi ini dipakai untuk menentukan jumlah pixel per satuan panjang. Biasanya satuan resolusi ini adalah dpi (dot per inchi). Resolusi ini sangat berpengaruh pada detail dan perhitungan gambar. 2.
Resolusi Kecemerlangan Resolusi kecemerlangan (intensitas/brightness) atau biasanya disebut dengan
kedalaman bit/kedalaman warna (Bit Depth) adalah ukuran halus kasarnya pembagian tingkat gradasi warna saat dilakukan kuantisasi. Bit Depth menentukan berapa banyak informasi warna yang tersedia untuk ditampilkan dalam setiap pixel.Semakin besar nilainya, semakin bagus kualitas gambar yang dihasilkan dan tentu ukuran juga semakin besar.
2.3.2
Elemen-elemen Citra Digital
Citra digital mengandung sejumlah elemen-elemen dasar (Marvin CH Wijaya dan Agus prijono, 2007:27). Elemen-elemen dasar inilah yang dimanipulasi dalam pengolahan citra. elemen-elemen dasar yang penting diantaranya adalah sebagai berikut: 1. Kecerahan (brightness) Kecerahan merupakan intensitas cahaya yang dipancarkan piksel dari citra yang dapat ditangkap oleh sistem penglihatan. Kecerahan pada sebuah titik (piksel) di dalam citra merupakan intensitas rata-rata dari suatu area yang melingkupinya.
10
2. Kontras (contrast) Kontras adalah tingkat penyebaran piksel-piksel ke dalam intensitas warna. Kontras menyatakan sebaran terang dan gelap dalam sebuah citra. Pada citra yang baik, komposisi gelap dan terang tersebar secara merata. Ada tiga macam kontras yaitu kontras rendah, kontras tinggi, dan kontras normal. Citra yang memiliki kontras rendah dapat terjadi karena kurangnya pencahayaan, kurangnya bidang dinamika dari sensor citra, atau kesalahan pengaturan pembuka lensa pada saat pengambilan citra. Citra kontras rendah memiliki kurva yang sempit, sedangkan citra dikatakan memiliki kontras tinggi bila memiliki kurva histogram yang terlalu lebar. Akibatnya sebaran intensitas terang dan gelap merata ke seluruh skala intensitas. Dan citra yang memiliki kontras normal bila lebar kurva histogram tidak terlalu sempit dan tidak terlalu melebar. 3. Kontur (countour) Kontur adalah keadaan yang ditimbulkan oleh perubahan intensitas pada pikselpiksel yang bertetangga. Karena adanya perubahan intensitas inilah mata mampu mendeteksi tepi-tepi objek di dalam citra. 4. Warna Warna sebagai persepsi yang ditangkap sistem visual terhadap panjang gelombang cahaya yang dipantulkan oleh objek. Warna-warna yang diterima oleh mata (sistem visual manusia) merupakan hasil kombinasi cahaya dengan panjang gelombang berbeda. Penelitian memperlihatkan bahwa kombinasi warna yang memberikan rentang warna yang paling lebar adalah red (R), green (G), dan blue (B). Persepsi sistem visual manusia terhadap warna sangat relatif sebab dipengaruhi oleh banyak kriteria, salah satunya disebabkan oleh adaptasi yang menimbulkan distorsi. Misalnya bercak abu-abu di sekitar warna hijau akan tampak keungu-unguan (distorsi terhadap ruang), atau jika mata melihat warna hijau lalu langsung
11
dengan cepat melihat warna abu-abu, maka mata menangkap kesan warna abu-abu tersebut sebagai warna ungu (distorsi terhadap waktu). 5. Bentuk (shape) Bentuk adalah properti intrinsik dari objek tiga dimensi, dengan pengertian bahwa bentuk merupakan properti intrinsik utama untuk sistem visual manusia. Pada umumnya, citra yang dibentuk oleh mata merupakan citra dwimatra (2 dimensi), sedangkan objek yang dilihat umumnya berbentuk trimatra (3 dimensi). Informasi bentuk objek dapat diekstraksi dari citra pada permulaaan prapengolahan dan segmentasi citra. Salah satu tantangan utama pada computer vision adalah merepresentasikan bentuk, atau aspek-aspek penting dari bentuk. 6. Tekstur (texture) Tekstur dicirikan sebagai distribusi spasial dari derajat keabuan di dalam sekumpulan piksel-piksel yang bertetangga. Tekstur adalah sifat-sifat atau karakteristik yang dimiliki oleh suatu daerah yang cukup besar sehingga secara alami sifat-sifat tadi dapat berulang dalam daerah tersebut. Tekstur adalah keteraturan polapola tertentu yang terbentuk dari susunan piksel-piksel dalam citra digital. Informasi tekstur dapat digunakan untuk membedakan sifat-sifat permukaan suatu benda dalam citra yang berhubungan dengan kasar dan halus, juga sifat-sifat spesifik dari kekasaran dan kehalusan permukaan tadi yang sama sekali terlepas dari warna permukaan tersebut.
2.3.3
Format File Citra
Sebuah format file citra harus dapat menyatukan kualitas citra, ukuran file dan kompabilitas dengan berbagai aplikasi. Format file citra standar yang digunakan saat ini terdiri dari beberapa jenis. Format-format ini digunakan untuk menyimpan citra dalam sebuah file. Setiap format memiliki karakteristik masing-masing, ini adalah
12
contoh format umum, yaitu: Bitmap (.bmp), tagged image format (.tif, .tiff), Portable Network Graphics (.png), JPEG (.jpg), dan lain-lain. Bahkan menurut Sutoyo,T.Mulyanto,E.et al (2009), ada dua jenis format file citra yang sering digunakan dalam pengolahan citra, yaitu citra bitmap dan citra vektor. Pada citra bitmap ini sering disebut juga citra raster. Citra bitmap ini menyimpan data kode citra secara digital dan lengkap (cara penyimpanannya adalah per pixel). Citra bitmap ini dipresentasikan dalam bentuk matriks atau dipetakan dengan menggunakan bilangan biner atau sistem bilangan yang lain. Citra ini memiliki kelebihan untuk memanipulasi warna, tetapi untuk mengubah objek lebih sulit. Tampilan bitmap mampu menunjukan kehalusan gradasi bayangan dan warna dari sebuah gambar. Tetapi bila tampilan diperbesar maka tampilan di monitor akan tampak pecah-pecah (kualitas citra menurun). Contoh format file citra antara lain BMP, GIFF, TIF, WPG, IMG, dan lain-lain. Sedangkan pada format file citra vektor merupakan citra vektor yang dihasilkan dari perhitungan matematis dan tidak terdapat pixel, yaitu data yang tersimpan dalam bentuk sebuah fungsi. Pada citra vektor, mengubah warna lebih sulit dilakukan tetapi membentuk objek dengan cara mengubah nilai lebih mudah. Oleh karena itu, bila citra diperbesar atau diperkecil, kualitas citra relatif tetap baik dan tidak berubah. Citra vektor biasanya dibuat menggunakan aplikasi-aplikasi citra vektor seperti CorelDRAW, Adobe Illustrator, Macromedia Freehand, Autocad, dan lain-lain.
2.4 Pengolahan Citra Pengolahan Citra merupakan proses memperbaiki kualitas citra agar mudah diterjemahkan oleh manusia atau komputer. Tehnik pengolahan citra dilakukan dengan melakukan perubahan citra menjadi citra lain. Pengelompokkan data numerik dan simbolik dilakukakan secara otomatis oleh komputer agar suatu objek dalam citra dapat dikenali dan diterjemahkan. Beberapa cabang ilmu yang berkaitan dengan pemrosesan citra ialah:
13
1.
Pattern recognition (pengenalan pola) Pengenalan pola merupakan proses klasifikasi dari pola menjadi beberapa
kategori atau kelas. Pengenalan pola bertujuan untuk menentukan kelompok atau kategori pola berdasarkan ciri-ciri yang dimiliki oleh pola tersebut. Dengan kata lain pengenalan pola membedakan objek dengan objek lain. 2.
Object recognition (pengenalan objek) Pengenalan objek merupakan proses untuk mengidentifikasi objek tertentu dalam
gambar digital atau video. Pengenalan objek berguna dalam aplikasi seperti stabilisasi video, sistem parkir kendaraan otomatis, dan sel penghitungan biomaging. 3.
Shape recognition (pengenalan bentuk) Pengenalan bentuk merupakan proses kalsifikasi geometris dari bagian bidang
yang ditempati oleh objek tersebut, yaitu ditentukan oleh batas-batas terluarnya namun tidak tergantung pada koordinat dan orientasinya terhadap bidang yang ditempatinya. 2.4.1 Operasi Pengolahan Citra Operasi-operasi yang dilakukan di dalam pengolahan citra banyak ragamnya. Namun, secara umum operasi pengolahan citra dapat diklasifikasikan dalam beberapa jenis sebagai berikut: 1.
Perbaikan kualitas citra (citra enhacement) tujuan memperbaiki kualitas citra dengan memanipulasi parameter-parameter citra.
2.
Pemugaran citra (image restoration) tujuan menghilangkan cacat pada citra. Perbedaannya dengan perbaikan citra, penyebab degradasi citra diketahui.
3.
Pemampatan citra (image compression) tujuan citra dipresentasikan dalam bentuk lebih kompak, sehingga keperluan memori lebih sedikit namun dengan tetap mempertahankan kualitas gambar.
14
4.
Segmentasi citra (image segmentation) tujuan memecah suatu citra ke dalam beberapa segmen dengan suatu kriteria tertentu. Berkaitan erat dengan pengenalan pola.
5.
Analisis citra (image analysis) tujuan menghitung besaran kuantitatif dari citra untuk menghasilkan deskripsinya.
Rekontruksi citra (image recontruction) tujuan membentuk ulang objek dari beberapa citra hasil proyeksi.
2.5 Matlab Matlab merupakan sebuah batasan pemprograman generasi keempat yang dikembangkan oleh Mathwork. Pada awalnya matlab diciptakan oleh Cleve Moler pada tahun 1970-an. Sesuai dengan namanya Matrix Laboratory inti dari Matlab adalah konsep matrik yang biasa dijumpai pada pelajaran matematika. Para pengguna bisa memplotkan fungsi dan data, memungkinkan manipulasi matrik, implementasi algoritma dan bisa digunkan dengan bahasa pemprograman lainnya. Matlab pertama kali diangkat oleh insinyur rancangan kontrol, kemudian menyebar ke berbagai bidang lain. Sekarang juga digunakan di bidang pendidikan, khususnya dalam bidang aljabar linier dan analisis numerik, selain itu Matlab juga populer dikalangan ilmuwan di bidang pengolahan citra.
2.5.1
Kelengkapan Sistem Matlab
Sebagai sebuah sistem MATLAB tersusun dari 5 bagian utama (Marvin CH Wijaya dan Agus Prijono, 2007:2): 1.
Lingkungan Kerja MATLAB Merupakan sekumpulan perangkat dan fasilitas yang membantu pengguna untuk
menggunakan fungsi-fungsi dan file-file MATLAB. Beberapa perangkat ini
15
merupakanan sebuah graphical user interface (GUI), dan bagian-bagian MATLAB adalah sebagai berikut: a. Command Window (Jendela Perintah) MATLAB Command Window merupakan window yang muncul ketika pertama kali menjalankan aplikasi MATLAB. Layar perintah dapat digunakan untuk menjalankan program perintah yang dibuat pada layar editor matlab. Pada layar ini dapat mengakses perintah maupun komponen pendukung (help, file, dan lain-lain) yang ada di matlab secara langsung. Salah satu ciri command window ditandai dengan tanda prompt (>>).
Gambar 2.1 Command Window (Jendela Perintah) b. Current Directory Jendela ini menampilkan isi dari direktori kerja saat menggunakan matlab, mengganti direktori ini sesuai dengan tempat direktori kerja yang diinginkan. Default dari alamat direktori berada dalam folder kerja tempat program file matlab berada.
16
Gambar 2.2 Current Directory c. Workspace (Jendela Ruang Kerja) Workspace berfungsi untuk menampilkan seluruh variabel-variabel yang sedang aktif pada saat pemakaian matlab. Apabila variabel berupa data matriks berukuran besar maka pengguna dapat melihat isi dari seluruh data dengan melakukan dobel klik pada variabel tersebut. Matlab secara otomatis akan menampilkan jendela “array editor” yang berisikan data pada setiap variabel yang dipilih pengguna.
17
Gambar 2.3 Workspace (jendela ruang kerja) d. Command History (Jendela Sejarah) Jendela ini berfungsi untuk menyimpan perintah-perintah apa saja yang sebelumnya dilakukan oleh pengguna terhadap matlab.
Gambar 2.4 Command History
18
e. Getting Help Matlab menyediakan dungsi help yang tidak berisikan cara penggunaan yang lengkap mengenai matlab dan segala keunggulannya, pengguna dapat menjalankan fungsi ini dengan menulis perintah ‘helpwin’ pada command window.
Gambar 2.5 Help f. Interupting dan Terminating dalam Matlab Untuk menghentikan proses yang sedang berjalan pada matlab dapat dilakukkan dengan menekan tombol Ctrl+C. Sedangkan untuk keluar dari matlab dapat dilakukan dengan menuliskan perintah exit atau quit pada command window atau dengan memilih menu exit pada bagian menu file dari menu bar. 2. Pustakan (library) fungsi matematis MATLAB Sekumpulan algoritma komputasi mulai dari fungsi-fungsi dasar seperti sum, sin, cos, dan aritmatika kompleks, sampai dengan fungsi-fungsi yang lebih komplek seperti matriks invers, matriks eigenvalues, fungsi Bessel, dan dengan pengubah fourier.
19
3. Bahasa Pemograman MATLAB Merupakan suatu matriks / array yang menggunakakn bahasa tingkat tinggi dengan control flow statements, fungsi, struktur data, input/output, dan fitur-fitur pemprograman berorientasi objek. Ini memungkinkan bagi pengguna untuk melakukan kedua hal baik “pemprograman dalam lingkup sederhana” untuk mendapatkan hasil yang cepat, dan “pemprograman dalam lingkup yang lebih besar” untuk memperoleh hasil-hasil dan aplikasi yang komplek. 4. Penanganan Grafik MATLAB memiliki fasilitas untuk menampilkan vector dan matriks sebagai suatu grafik. Didalamnya melibatkan fungsi-fungsi tingkat tinggi untuk visualisasi data dua dimensi dan data tiga dimensi, pengolahan citra, animasi, dan presentasi grafik. Fungsi yang rendah juga dapat menampilkan grafik mulai dari bentuk yang sederhana sampai dengan tingkatan antarmuka pengguna grafis. 5. API (Application Program Interface) MATLAB Merupakan suatu pustaka yang memungkinkan program dalam bahasa C dan Fortran mampu berinteraksi dengan MATLAB. Pemanggilan MATLAB sebagai sebuah mesin komputasi, untuk membaca dan menuliskan MAT-file.
2.5.2
Pemprograman M-file
Matlab merupakan bahasa pemprograman yang memungkinkan sederet keterangan ke dalam sebuah file dan menjalankannya dengan satu perintah. Sebelum membahas lebih jauh pemprograman m-file, pengguna terlebih dahulu mengenal variabel dan tipe data dasar pada matlab.
20
2.5.2.1 Variabel Seperti bahasa pemprograman lainnya, matlab pun memiliki variabel. Setiap variabel matlab selalu diawali huruf dan selanjutnya boleh menggunakan gabungan antara huruf-angka maupun tanda garis bawah. Beberapa aturan penamaan variabel adalah: 1. Matlab membedakan anatara variabel yang dituliskan dengan huruf besar maupun huruf kecil (sensitive case). Misalnya akar, Akar, dan aKar merupakan tiga buah variabel yang berbeda. 2. Matlab mampu mengenali hanya 31 karakter pertama, sedangkan sisanya diabaikan. Matlab menyediakan sebuah fungsi isvarname untuk mengetahui apakah variabel yang akan digunakan valid atau tidak. Setiap fungsi di dalam matlab mempunyai variabel lokal yang terpisah dari fungsi lainnya serta dari basis workspace. Jika beberapa variabel dideklarasikan secara khusus dengan global, maka variabel akan dikenal di dalam maupun di luar fungsi. Beberapa fungsi menghasilkan nilai khusus yang cukup penting. Tabel 2.1 Nilai khusus dalam m-file Nama variabel Ans
Nilai yang dihasilkan Variabel jawaban paling akhir. Jika tidak memberikan nama variabel secara eksplisit pada output sebuah proses atau ekspresi, maka matlab secara otomatis akan menggunakan variabel ans.
Eps
Floating-point relatif; digunakan untuk toleransi
Realmax
Representasi bilangan pecahan terbesar
Realmin
Representasi bilangan pecahan terkecil
21
Pi
3.1415926535897…
i,j
Unit bilangan imajiner (khayal)
Inf
Tak terhingga
NaN
Not-a Number merupakan hasil bagi 0/0 dan inf/inf
Computer
Tipe computer
Version
Versi MATLAB
2.5.2.2 Tipe Data Ada 15 tipe data dasar (atau class) pada matlab. Masing-masing tipe data memiliki bentuk yang sama yaitu array. Array minimal berukuran 0x0 dan dapat bertambah menjadi array n dimensi dengan sembarang ukuran. Dalam keadaan khusus, array dengan dimensi dua disebut matriks. Tipe data tambahan yang dapat dibuat oleh pengguna adalah kelas yang merupakan tipe data berorientasi objek dan kelas java yang dapat digunakan sebagai antar muka antara matlab dengan java. Tipetipe data adalah: 1. Logical Tipe data logical merupakan sebuah tipe data yang memiliki nilai true atau false dan masing-masing dipresentasikan dengan angka 1 atau 0. Matlab menghasilkan nilai logic dari operasi relasi (= =, <=,…) maupun operasi logic (&&, xor,…). 2. Char Tipe data char merupakan sebuah tipe data yang melibatkan karakter. Sebuah string dari karakter merupakan array dari karakter yang berukuran 1 x n. Dalam matlab,
string
diibaratkan
sebuah
array
direpresentasikan sebagai sebuah nilai ASCII.
dari
karakter.
Setiap
karakter
22
3. Numerik Yang termasuk tipe data numerik pada matlab antara lain bilangan bulat bertanda dan tidak bertanda (signed and unsigned integer) serta bilangan pecahan atau mengembang dengan posisi tunggal maupun ganda (single and double precision floating point numbers). Berikut adalah beberapa hal yang perlu diperhatikan untuk tipe data numerik: a. Semua perhitungan untuk komputasi dilakukan dengan menggunakan presisi ganda. b. Pengerjaan operasi matematika pada array integer maupun presisi tunggal terlebih dahulu harus dikonversi menjadi presisi ganda dengan menggunakan fungsi double. c. Penggunaan memori untuk tipe array integer dan presisi tunggal lebih efisien dibandingkan presisi ganda. 4. Cell Tipe data sel dapat diibaratkan sebuah array atau kotak-kotak atau kontainer yang dapat memuat data yang berbeda tipe data matlab lainnya. Setiap sel dalam sel array dapat memuat semua jenis tipe data matlab yang meliputi array, teks, objek, simbol, sel array, maupun struktur. 5. Struktur Struktur merupakan sebuah tipe data yang berorienatasi array dengan field-field yang memiliki nama dan dapat memuat segala jenis data, termasuk sel array atau mungkin struktur yang lainnya. 6. Java Classes Tipe data yang digunakan matlab sebagai antar mukanya dengan java.
23
7. Function Handles Tipe data digunakan untuk menampilkan informasi yang digunakan dalam refrensi sebuah fungsi. Ketika tipe data dibuat, matlab menangkap semua informasi tentang fungsi.
2.5.2.3 Operator Didalam matlab, operator dibagi menjadi tiga yaitu: 1. Operator Aritmatika Tabel 2.2 Arti operator aritmatika Operator
Arti
+
Penjumlahan
-
Pengurangan
.*
Perkalian
./
Pembagi kanan
.\
Pembagi kiri
.^
Pangkat
:
Colon
.’
Tranpose
.‘
Tranpose Konjugat
/
Pembagian kanan matriks
24
\
Pembagian kiri matriks
2. Operator Relasi Tabel 2.3 Arti operator relasi Operator
Arti
>
Lebih dari
>=
Lebih dari sama dengan
<
Kurang dari
<=
Kurang dari sama dengan
==
Sama dengan
~=
Tidak sama dengan
3. Operator Logika Beberapa tipe dasar operator dan fungsi logika sebagai berikut: a. Elemen wise mengoperasikan elemen yang sesuai dengan array. Tabel 2.4 Arti operator dalam elemen wise Operator
Arti
&
Akan menghasilkan nilai 1 jika kedua elemen yang bersesuaian memiliki nilai benar dan 0 untuk yang lainnya.
|
Akan bernilai 1 jika satu elemennya benar.
~
Komplemen dari elemen yang dimasukkan.
25
xor
Akan bernilai 1 jika salah satu dari kedua elemen memiliki nilai berbeda dan akan bernilai 0 jika sama.
b. Bit wise mengoperasikan bit-bit yang bersesuaian dari array bernilai integer Tabel 2.5 Arti fungsi dalam bit wise Fungsi
Arti
bitand
Akan menghasilkan nilai 1 jika kedua elemen yang sama memiliki nilai benar dan 0 untuk yang lainnya.
bitor
Akan bernilai 1 jika kedua elemen yang bersesuaian salah satu elemennya benar.
bitcmp
Komplemen dari elemen yang dimasukkan.
bitxor
Akan bernilai 1 jika salah satu dari kedua elemen yang sama memiliki nilai berbeda dan akan bernilai 0 jika sama.
2.5.2.4 M-file M-file merupakan sederetan perintah matlab yang dituliskan secara berurutan sebagai sebuah file. Nama file yang digunakan berekstensi m yang menandakan bahwa file adalah file matlab. Sebenernya matlab memiliki beberapa tipe file lain seperti fig, mat, mex, dan sebagainya. M-file dapat ditulis sebagai sebuah script yang sederhana atau dapat pula ditulis sebagai sebuah fungsi yang menerima masukan dan menghasilkan keluaran. Berikut adalah perbedaan antara m-file sebagai script dan mfile sebagai fungsi.
26
Script m-file 1. Tidak menerima masukan atau
Fungsi m-file 1. Dapat menerima masukan dan
menghasilkan keluaran. 2. Pengoperasian data di dalam
menghasilkan keluaran. 2. Secara umum, variabel dalamnya
jendela ruang kerja.
adalah lokal terhadap fungsi.
Tabel 2.6 Perbedaan m-file sebagai script dan sebagai fungsi
2.6 GUIDE GUIDE atau GUI builDEr merupakan sebuah graphical user interface (GUI) yang dibangun dengan objek grafis seperti tombol (button), kotak teks, slider, sumbu (axes), maupun menu. Sebagai contoh, ketika menggerakkan slider maka pengguna dapat melihat perubahan sebuah nilai. Kemudian ketika pengguna menekan tombol ok, maka aplikasi akan dijalankan. Aplikasi yang menggunakan GUI namanya lebih mudah dipelajari dan digunakan karena orang yang menjalankannya tidak perlu mengetahui perintah yang ada dan bagaimana perintah berkerja. Matlab merintis kearah pemprograman yang menggunakan GUI dimulai dari matlab versi 5, yang terus disempurnakan hingga sekarang. Tidak seperti bahasa pemprograman lainnya, GUIDE matlab memiliki banyak keunggulan tersendiri, antara lain: 1.
GUIDE matlab banyak digunakan dan cocok untuk aplikasi-aplikasi berorientasi sains, sehingga banyak peneliti atau mahasiswa, baik S1, S2, maupun S3, menggunakan GUIDE matlab untuk menyelesaikan riset atau tugas akhirnya.
2.
Matlab memiliki banyak fungsi built-in yang siap digunakan dan pemakai tidak perlu repot membuatnya sendiri.
27
3.
Ukuran file, baik FIG-file maupun M-file, yang dihasilkan relatif kecil.
4.
Kemampuan grafisnya cukup baik dan tidak kalah dibandingkan bahasa pemprograman lainnya.
2.6.1
Memulai GUIDE
Untuk memulai penggunaan GUI matlab, pengguna dapat melakukan dengan dua cara, yaitu: 1. Memulai command matlab, ketikkan >>guide atau klik tombol Start Matlab dan pilihlah Matlab, lalu pilih GUIDE (GUI builDEr).
Gambar 2.6 Memulai GUIDE 2. Selanjutnya, akan tampil GUIDE Quick Start
28
Gambar 2.7 GUIDE Quick Start
3. Pilih Blank GUI (Default), lalu klik OK.
Gambar 2.8 Menu Utama GUIDE
29
2.6.2
Fitur-fitur GUIDE
Dalam membuat aplikasi GUI, GUIDE akan membuat kerangka kerja m-file secara otomatis langsung dari layout. Selanjutnya, untuk membuat kode apliksi mfile. Metode ini memberikan beberapa keuntungan, antara lain: 1. M-file berisi kode yang mengimplementasikan sejumlah fitur. 2. M-file mengadopsi suatu pendekatan efektif yang menangani objek dan menjalankan pemanggilan kembali. 3. M-file menyediakan suatu manajemen data global. 4. Prototipe sebuah subfungsi secara otomatis akan disisipkan pada pemanggilan kembali. Pengguna dapat menentukan GUIDE hanya membuat file *.FIG kemudian penguna menulis aplikasi m-file-nya secara tersendiri, sehingga tidak terdapat perintah kreasi uicontrol di dalam aplikasi m-file.
2.6.3
Komponen GUIDE Untuk membuat sebuah tampilan matlab dengan fasilitas GUIDE, pengguna
harus mulai dengan membuat desain sebuah figure. Untuk membuat sebuah desain figure, pengguna dapat memanfaatkan uicontrol yang telah tersedia pada editor figure. Terdapat banyak menu uicontrol yang ada pada matlab, yaitu:
2.6.3.1 Pushbutton Pushbutton merupakan jenis kontrol berupa tombol tekan yang akan menghasilkan sebuah tindakan jika diklik, misalnya tombol OK, CANCEL, dan lainya. Untuk menampilkan tulisan yang berada pada pushbutton, pengguna dapat mengatur melalui property inspector dengan mengklik objek pushbutton pada figure, lalu mengklik toolbar property inspector atau menggunakan klik kanan dan pilih
30
property inspector. Selanjutnya, isilah tab String dengan label yang dimaksudkan, misalnya Proses atau yang lainnya.
Gambar 2.9 Pushbutton 2.6.3.2 Toggle Button Toggle button menghasilkan efek yang hampir sama dengan pushbutton. Perbedaannya adalah saat pushbutton ditekan, maka tombol akan kembali pada posisi semula jika tombol mouse dilepas. Sebaliknya, pada toggle button tombol tidak akan kembali ke posisi semula, kecuali menekannya kembali.
Gambar 2.10 Toggle Button
31
2.6.3.3 Radio Button Radio button digunakan untuk memilih atau menandai satu pilihan dari beberapa pilihan yang ada. Misalnya, sewaktu membuat aplikasi operasi Matematika (penjumlahan, pengurangan, perkalian, dan pembagian).
Gambar 2.11 Radio Button 2.6.3.4 Checkboxes Kontrol checkboxes berguna jika kita menyediakan beberapa pilihan mandiri atau tidak bergantung dengan pilihan-pilihan lainnya. Contoh aplikasi penggunaan checkboxes adalah ketika pengguna diminta untuk memilih hobi. Karena hobi bisa lebih dari satu, maka pengguna dapat mengklik checkboxes lebih dari satu kali.
Gambar 2.12 Checkboxes
32
2.6.3.5 Edit Text dan Static Text Edit text digunakan untuk memasukkan atau memodifikasi suatu text yang diinputkan dari keyboard, sedangkan static text hanya berguna untuk menampilkan text/tulisan, sehingga kita tidak bisa memodifikasi/mengedit text tersebut kecuali memlalui property inspector.
Gambar 2.13 Static Text dan Edit Text 2.6.3.6 Slider Slider berguna jika menginginkan inputan nilai tidak menggunakan keyboard, tetapi hanya dengan cara menggeser slider secara vertikal maupun horizontal ke nilai yang diinginkan. Dengan menggunakan slider, akan lebih fleksibel dalam melakukan pemasukan nilai data karena mampu mengatur sendiri nilai max, nilai min, serta slider step.
33
Gambar 2.14 Slider 2.6.3.7 Frames Frames merupakan kotak tertutup yang dapat digunakan untuk mengelompokkan kontrol-kontrol yang berhubungan. Tidak seperti kontrol lainnya, frames tidak memiliki rutin callback.
2.6.3.8 Listboxes Kontrol listbox menampilkan semua daftar item yang terdapat pada String Property dan membuat memilih satu atau lebih item yang ada. Value Property berisi indeks yang dihubungkan dengan daftar item yang dapat dipilh. Jika memilih item lebih dari satu, maka nilai yang dikirimkan merupakan sebuah vektor. Indeks-indeks item sebuah listbox merupakan bilangan bulat, di mana item pertama diberi indeks 0, item kedua diberi indeks 1, dan seterusnya.
34
Gambar 2.15 Listboxes 2.6.3.9 Popup Menu Popup menu berguna menampilkan daftar pilihan yang didefinisikan pada String Property ketika mengklik tanda panah pada aplikasi dan memiliki fungsi yang sama seperti radio button. Ketika tidak dibuka, popup menu hanya menampilkan satu item yang menjadi pilihan pertama pada String Property. Popupmenu sangat bermanfaat ketika kita ingin memberi sebuah pilihan tanpa jarak, tidak seperti radiobutton.
Gambar 2.16 Popup Menu
35
2.6.3.10 Axes Axes berguna untuk menampilkan sebuah grafik atau gambar (image). Axes sebenarnya tidak masuk dalam UIControl, tetapi axes dapat diprogram agar pengguna dapat berinteraksi dengan axes dan objek grafik yang ditampilkan melalui axes.
2.7 SIFT Pada tahun 1999, David G. Lowe seorang peneliti dari University of British Colombia memperkenalkan suatu metode baru dalam ekstraksi fitur dari suatu citra. Metode ekstraksi fitur ini disebut sebagai Scale Invariant Feature Transform (SIFT). Dengan menggunakan SIFT ini, suatu citra akan di ubah menjadi vektor fitur lokal yang kemudian akan digunakan sebagai pendekatan dalam mendeteksi objek yang dimaksud. Sebagai metode ekstraksi fitur pada pengenalan objek, SIFT ini memiliki kelebihan-kelebihan sebagai berikut: 1. Hasil ekstraksi fitur bersifat invarian terhadap ukuran, translasi dan rotasi dua dimensi. 2. Hasil ekstraksi fitur bersifat invarian sebagian terhadap perubahan iluminasi dan perubahan sudut pandang tiga dimensi. 3. Mampu mengekstraksi banyak keypoint dari citra yang tipikal. 4. Hasil ekstraksi fitur benar-benar mencirikan secara khusus (distinctive). Dengan kelebihan-kelebihan tersebut, penggunaan metode SIFT banyak dikembangkan untuk aplikasi pengenalan objek. Secara garis besar, algoritma yang digunakan pada metode SIFT terdiri dari empat tahap, yaitu: 1. Mencari nilai ekstrim pada skala ruang. 2. Menentukan Keypoint. 3. Penentuan orientasi. 4. Deskriptor Keypoint.
36
Setelah melalui tahapan tersebut maka akan di peroleh fitur-fitur local yang digunakan sebagai descriptor dari suatu objek untuk diolah lebih lanjut.
2.7.1 Pencarian Nilai Ektrim pada Skala Ruang Pencarian nilai ekstrim pada skala ruang merupakan tahap awal dalam penentuan keypoint dari suatu citra. Dengan menggunakan fungsi Gaussian, citra pada skala ruang dapat didefinisikan sebagai fungsi L(x,y,σ) yang diperoleh dari hasil konvolusi skala-variabel Gaussian, G(x,y,σ) dengan citra masukan I(x,y),sehingga di peroleh: L(x,y,σ) = G(x,y,σ)* I(x,y)………………………..(2.1) Keterangan: L
: Gambar kabur
G
: Operator Gaussian blur
x, y
: kordinat lokasi
σ
: skala parameter (jumlah blur)
*
: opreasi konvolusi dalam x dan y, berlaku untuk Gaussian gambar G ke gambar I.
dimana * adalah operasi konvolusi antara x dan y dan G(x,y,σ) adalah skala variabel Gaussian. G(x,y,σ) =
(
)/
…………………………….(2.2)
Citra hasil Difference of Gaussian, D(x,y,σ) diperoleh dengan melakukan operasi konvolusi pada citra masukan dengan filter Difference of Gaussian, maka: D(x,y,σ) = (G(x,y,kσ) - G(x,y,σ)) * I(x,y) = L(x,y,kσ) – L (x,y,σ)…………….(2.3) Dari persamaan terlihat bahwa citra hasil Difference of Gaussian sebenarnya merupakan selisih antara citra hasil pengkaburan Gaussian dengan nilai skala k yang berbeda. Proses ini diilustrasikan pada Gambar 2.17
37
Gambar 2.17 Diagram Difference of Gaussian Citra yang sudah mengalami konvolusi kemudian dikelompokkan ke dalam grup berdasarkan oktaf tertentu. Nilai oktaf ditentukan berdasarkan nilai σ dan jumlah citra di setiap kelompok/oktaf ditentukan berdasarkan nilai k. Keypoints ditentukan berdasarkan nilai minimum dan maksimum citra DoG. Gambar 2.17 menunjukan proses deteksi keypoint, dimana setiap piksel di dalam citra DoG dibandingkan dengan 8 piksel di sekitarnya pada skala yang sama ditambah dengan 18 piksel di sekitarnya yang saling berhubungan. Jika nilai piksel tersebut merupakan minimum atau maksimum maka piksel tersebut akan dipilih sebagai kandidat keypoint.
Gambar 2.18 Ilustrasi pencarian maksimum atau minimum local dari citra DoG X menandai piksel saat ini, lingkaran hijau menandai tetangga. Dengan cara ini, total 26 cek yang dibuat. X ditandai sebagai titik kunci jika itu adalah yang terbesar atau paling dekat dari semua 26 tetangga.
38
2.7.2 Penentuan Keypoint Setelah kandidat ditemukan melalui tahapan pada 2.7.1, maka langkah selanjutnya ialah untuk mengambil detail dari kandidat keypoint tersebut. Detail yang diambil merupakan lokasi, skala dan rasio kelengkungan inti dari kandidat keypoint. Pada tahap ini akan terjadi pengurangan jumlah kandidat keypoint. Dimana setiap kandidat keypoint
yang dianggap sangat rentan terhadap gangguan (noise) akan
dihilangkan, yaitu kandidat keypoint yang memiliki nilai kontras yang rendah dan kandidat keypoint yang kurang jelas dan terletak di sepanjang tepi. Untuk menghilangkan keypoint
dengan nilai kontras yang rendah, maka
digunakan langkah-langkah berikut: 1. Dengan menggunakan daret Taylor yang merupakan fungsi matematika sebagai jumlah tak hingga dari suku-suku yang nilainya dihitung dari turunan fungsi disuatu titik. Pada fungsi skala ruang D(x,y,σ) yang kemudian digeser sehingga titik asal berada pada titik sampel, sehingga: D(x) = D +
x + xT
x ……………………..(2.4)
Dapat dengan mudah menemukan titik-titik ekstrim dari persamaan ini (membedakan
dan
menyamakan
dengan
nol).
Pada
pemecahan,
akan
mendapatkan subpiksel lokasi titik kunci. Nilai subpiksel ini meningkatkan kemungkinan pencocokan dan stabilitas algoritma. 2. Lokasi dari nilai ekstrim x, diambil dengan menurunkan persamaan 2.4 terhadap x, sehingga: x=
………………………………………(2.5)
3. Fungsi nilai ekstrim (x), diperoleh dengan menurunkan persamaan 2.5 kepada persamaan 2.4 sehingga menghasilkan persamaan berikut: D(x) = D +
x ……………………………….(2.6)
39
Pada SIFT ini, semua nilai ekstrim D(x), yang bernilai kurang dari 0.03 akan dihilangkan. Untuk menghilangkan keypoint yang kurang jelas pada tepi maka digunakan persamaan berikut: ( )
( )
<
(
)
……………………………………(2.7)
dimana H merupakan matrix Hessian 2x2 dan r merupakan ambang batas dari kecekungan inti yang diperbolehkan. Pada SIFT ini sama keypoint yang memiliki nilai r lebih besar dari 10 akan dihilangkan.
2.7.3 Penentuan Orientasi Pada tahap ini, masing-masing keypoint yang diperoleh akan diberikan suatu orientasi yang tetap berdasarkan sifat-sifat local pada citra. Dengan adanya proses ini maka keypoint yang diperoleh dapat direpresentasikan relative terhadap orientasi sehingga keypoint yang dihasilkan tidak terpengaruh terhadap adanya rotasi pada citra. Untuk menentukan orientasi dari masing-masing keypoint maka dilakukan perhitungan terhadap besarnya gradien dan sudut arah orientasi. Dalam histogram ini, 360 derajat orientasi yang rusak menjadi 8 bin (masing-masing 45 derajat). Adapun perhitungan terhadap besar nilai gradien, m(x,y) dan arah orientasi, Ө(x,y). dilakukan menggunakan persamaan berikut: M(z,y) =
( ( + , ) − ( − , )) + ( ( , + ) −
( , − ))
Ө(x,y) = tan-1((L(x,y + 1) – L(z,y - 1) / (L(x + 1,y) – L(x – 1,y)))
(2.8) (2.9)
2.7.4 Deskriptor Keypoint Pada proses ini, masing-masing keypoint yang telah diorientasikan akan diberikan pencarian khusus (deskriptor). Proses ini bertujuan untuk mendapatkan keypoint yang invarian terhadap perubahan intensitas cahaya atau perubahan sudut pandang tiga dimensi.
40
Deskriptor akan diukur sebagai suatu histogram orientasi pada wilayah piksel dengan ukuran 4x4. Nilai orientasi diperoleh dari citra Gaussian yang memiliki skala terdekat dengan skala keypoint yang akan dihitung. Agar keypoint yang diperoleh invarian terhadap orientasi, maka kordinat dari deskriptor dan gradien akan di rotasi relatif terhadap orientasi. Kemudian fungsi pembeban Gaussian, dengan besar nilai σ satu setengah kali dari besar jendela deskriptor, akan digunakan sebagai pembeban pada setiap besaran nilai dari titik sampel. Untuk melakukan ini, 16 x 16 jendela disekitar keypoint tersebut, 16 x 16 jendela dipecah menjadi 4 x 4 jendela.
Gambar 2. 19 Deskriptor perhitungan dimensi vector Dalam setiap 4 x 4 jendela, besaran gradient dan orientasi dihitung. Orientasi ini dimasukkan kedalam 8 bin.
41
Gambar 2. 20 Pemindahan orientasi ke 8 bin Setiap orientasi gradient dikisaran 0-44 derajat menambah bin pertama, 45-89 derajat menambah bin berikutnya, dan seterusnya. Jumlah ditambahkan ke bin tergantung pada besarnya gradient. Jumlah juga ditambahkan dengan jarak dari keypoint tersebut. Jadi, gradien yang jauh dari keypoint akan menambah nilai yang lebih kecil untuk histogram.
Gambar 2. 21 Lingkaran Gaussian dengan gambar deskriptor Hal ini dilakukan untuk 16 piksel, yang sudah pasti dikompilasi dengan 16 orientasi acak menjadi 8 bin yang telah ditentukan, dan melakukan ini untuk semua enam belas 4 x 4 wilayah. Jadi berakhir dengan 4 x 4 x 8 = 128 angka. 128 angka membentuk fitur vektor dan keypoint ini secara unik diidentifikasi oleh vektor fitur. Proses ini ditunjukan pada lingkaran yang terdapat pada Gambar 2.19 sebelah kiri.
42
Gambar 2.22 Deskriptor dari perhitungan gradient dan orientasi serta gambar lingkaran Gaussian (kiri) dan gambar deskriptor keypoint (kanan) Deskriptor keypoint pada Gambar 2.22 menunjukan adanya 8 arah pada masingmasing histogram orientasi dengan panjang masing-masing anak panah sesuai dengan besar nilai dari histogram asal. Selanjutnya deskriptor keypoint yang telah diperoleh akan dinormalisasi untuk mengatasi pengaruh cahaya. Setelah melalui tahapan-tahapan tersebut, maka pada hasil akhir akan diperoleh suatu citra dengan keypoint yang invariant terhadap berbagai macam perubahan, seperti yang ditunjukkan pada Gambar 2.23
Gambar 2.23 keypoint yang diperoleh dari suatu citra menggunakn SIFT Keypoint ini yang kemudian menjadi fitur-fitur local pada suatu citra dan akan dicocokan dengan keypoint-keypoint yang terdapat pada citra lain untuk menyesuaikan dengan objek yang tersedia.