Вы находитесь на странице: 1из 101

PROYEK AKHIR

IMAGE DATABASE MENGGUNAKAN SISTEM CONTENT BASED IMAGE RETRIEVAL DENGAN EKSTRAKSI FITUR TERSTRUKTUR

Oleh : Bayu Bagus NRP: 7404.030.055

Dosen Pembimbing : Nana Ramadijanti, S.Kom, M.kom NIP: 132.206.161

Rengga Asmara, S.Kom, OCA NIP: 132.310.244

JURUSAN TEKNOLOGI INFORMASI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA 2007

PROYEK AKHIR

IMAGE DATABASE MENGGUNAKAN SISTEM CONTENT BASED IMAGE RETRIEVAL DENGAN EKSTRAKSI FITUR TERSTRUKTUR

Oleh : Bayu Bagus NRP: 7404.030.055

JURUSAN TEKNOLOGI INFORMASI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA 2007

IMAGE DATABASE MENGGUNAKAN SISTEM CONTENT BASED IMAGE RETRIEVAL DENGAN EKSTRAKSI FITUR TERSTRUKTUR Oleh : Bayu Bagus 7404.030.055 Diajukan sebagai salah satu syarat untuk menyelesaikan Studi pada Program Pendidikan Diploma III Politeknik Elektronika Negeri Surabaya-ITS

Surabaya, Juli 2007 Disetujui oleh : Tim Penguji Proyek Akhir : Dosen Pembimbing : Dosen Penguji I Dosen Pembimbing I

Arif Basofi S.Kom NIP: 132.303.872 Dosen Penguji II

Nana Ramadijanti, S.Kom, M.Kom NIP: 132.206.161 Dosen Pembimbing II

Wiratmoko Yuwono S.T NIP: 132.316.238 Dosen Penguji III

Rengga Asmara, S.Kom, OCA NIP: 132.310.244

Setiawardhana S.T NIP: 132.310.243 Mengetahui, Ketua Jurusan Teknologi Informasi

Iwan Syarif, S.Kom, M.Kom NIP: 132.134.725

ABSTRAK
Content Based Image Retrieval System (CBIR) adalah teknik untuk mencari gambar yang berhubungan dan mempunyai karakteristik dari sebuah sekumpulan gambar. Pada proyek akhir ini digunakan Shape (bentuk) sebagai ekstraksi fitur dari gambar baik gambar query maupun gambar yang ada pada sekumpulan gambar. Kemudian untuk proses matching antara gambar query dengan gambar target yang ada pada sekumpulan gambar dilakukan perhitungan jarak (Euclidean distance) dari gambar query dengan gambar target pada sekumpulan gambar. Nilai jarak yang paling minimal merupakan gambar yang memiliki kemiripan dengan gambar query. CBIR dengan metode shape ini lebih cocok digunakan pada gambar-gambar yang memiliki background atau latar belakang yang polos yang komplek serta ukuran gambar yang tidak terlalu jauh.

Kata kunci : content based image retrieval system, bentuk, metode euclidean distance.

ABSTRACT
Content Based Image Retrieval System (CBIR) is the set of techniques for retrieving relevant images from an image database based on automatically-derived image feature. In this final project, shape is used to extracting the feature from image, wheter it is a query image or a target image on database. Afterwards, by calculating the Euclidean distance value of image query and target image on database does the matching process between query image and target image. The distance that smallest value is the image that has similar characteristic with image query. CBIR with shape feature more suitable for used to pictures have simple background and the pictures must have small different size each other. Key Words : content based image retrieval system, shape, euclidean distance.

ii

KATA PENGANTAR
Dengan mengucap puji syukur kepada Allah SWT, atas limpahan rahmat dan hidayahNya, serta perlindungan, pertolongan dan ridho-Nya kepada kami sehingga kami dapat menyelesaikan Proyek Akhir ini tepat pada waktunya, serta tak terlupakan iringan salam dan sholawat bagi junjungan kami Nabi Muhammad SAW. Dengan pengerahan segenap usaha kami akhirnya kami dapat menyelesaikan proyek akhir kami yang berjudul :

IMAGE DATABASE MENGGUNAKAN SISTEM CONTENT BASED IMAGE RETRIEVAL DENGAN EKSTRAKSI FITUR TERSTRUKTUR
Buku proyek akhir ini diajukan guna memenuhi persyaratan kurikulum pada tahap akhir semester VI di Politeknik Elektronika Negeri Surabaya. Penulis telah bersikeras sekuat tenaga dan pikiran dengan harapan hasil yang sebaik mungkin, namun penulis menyadari sepenuhnya bahwa buku ini masih banyak kekurangannya. Untuk itu penulis mohon maaf yang sebesar-besarnya dan sangat mengharapkan saran dan kritik dari semua pembaca agar kekurangan dan kesalahan dapat diperbaiki demi sempurnanya buku ini. Demikian uraian singkat ini, besar harapan buku proyek akhir ini bermanfaat bagi penulis serta bagi pembaca pada umumnya untuk menambah pengetahuan.

Surabaya, Juli 2007

Penulis

iii

UCAPAN TERIMA KASIH


Melalui kesempatan ini, penulis ingin menyampaikan ucapan terima kasih dari dalam hati atas selesainya tugas akhir ini. Khususnya rasa syukur kepada Allah SWT yang telah banyak memberikan kekuatan dan rahmat-Nya kepada penulis. Dan tanpa menghilangkan rasa hormat yang mendalam saya mengucapkan terima kasih kepada pihak-pihak yang telah membantu saya antara lain : 1. Ayah dan Bunda tercinta, atas doa dan dukungannya yang selalu diberikan kepadaku. 2. Semua adik adikku yang telah menyemangatiku. 3. Para Alim Ulama yang secara tidak langsung telah mendoakanku dengan tulus. 4. Bapak Dr Ir Titon Dutono M.Eng, selaku Direktur Politeknik Elektronika Negeri Surabaya. 5. Bapak Iwan Syarif, selaku Ketua Jurusan Teknologi Informasi Politeknik Elektronika Negeri Surabaya. 6. Ibu Nana Ramadijanti S.Kom M.Kom, selaku dosen pembimbing I, terima kasih atas bantuan dan kesabarannya dalam memberikan bimbingan, dan masukan-masukan disetiap kesempatan selama mengerjakan tugas akhir. 7. Bapak Rengga Asmara S.Kom, OCA selaku dosen pembimbing II, yang juga banyak memberikan bimbingan, masukan dan pandangan-pandangan dalam menyelesaikan tugas akhir ini. 8. Seluruh Dosen dan karyawan di Politeknik Elektronika Negeri Surabaya atas fasilitas dan waktu yang diberikan. 9. Nescafe, Kopi kemasan sachet yang setia menemani dan banyak membantu dalam menemukan ide-ide maupun logika yang cemerlang. 10. Temanku Rizal Mashuri yang telah membuatku merasa senasib-sepenanggungan. 11. Rekanku Teknisi Laboratorium Sun Training Center PENSITS (ferry/vanfier, andy/vesa, fatikh/conman, satria/ubul) yang setiap harinya selalu menghiburku dan mendukungku. 12. Seluruh rekan yang telah banyak membantu saya dalam menyelasaikan Proyek Akhir ini. Sekali lagi penulis mengucapkan banyak terima kasih yang tak terhingga semoga Allah SWT membalas atas semua kebaikan dan bantuan dari kalian semua.

iv

DAFTAR ISI
HALAMAN DEPAN LEMBAR PENGESAHAN ABSTRAK ................................................................................................ i ABSTRACT.............................................................................................. ii KATA PENGANTAR.............................................................................. iii UCAPAN TERIMA KASIH.................................................................... iv DAFTAR ISI............................................................................................. v DAFTAR GAMBAR................................................................................ viii DAFTAR TABEL .................................................................................... x BAB I PENDAHULUAN 1.1. Latar belakang .................................................................................... 1 1.2. Maksud dan Tujuan............................................................................. 2 1.3. Permasalahan ...................................................................................... 2 1.4. Batasan Masalah.................................................................................. 3 1.5. Metodologi ......................................................................................... 3 1.6. Sistematika Studi................................................................................. 5 BAB II TEORI PENUNJANG 2.1. Pengolahan Gambar Digital ................................................................ 7 2.2. Mode Warna........................................................................................ 8 2.3. Piksel .................................................................................................. 9 2.4. Garis .................................................................................................. 9 2.5. Grayscale............................................................................................. 10 2.6. Segmentasi .......................................................................................... 10 2.7. Deteksi Tepi ........................................................................................ 11 2.8. Content Based Image Retrieval System .............................................. 13

2.9. Perangkat Lunak Pemrograman VISUAL C++ dengan MFC............. 15 BAB III PERENCANAAN DAN PEMBUATAN 3.1. Algoritma System ............................................................................... 43 3.2. Blok Diagram ..................................................................................... 44 3.3. Freeman Code ..................................................................................... 44 3.4. First Different Code ............................................................................ 47 3.5. Normalisasi Data................................................................................. 48 3.6. Euclidean Distance.............................................................................. 49 3.7. Gambar Query..................................................................................... 51 3.8. Graphical User Interface ..................................................................... 52 BAB IV PENGUJIAN PROGRAM 4.1. Hasil Pengujian Pada Gambar Primitif ............................................... 54 4.1.1. Pengujian pada gambar bujur sangkar ...................................... 54 4.1.2. Pengujian pada gambar persegi panjang................................... 55 4.1.3. Pengujian pada gambar segitiga................................................ 56 4.1.4. Pengujian pada gambar lingkaran............................................. 57 4.2. Hasil Pengujian Pada pengujian sistem luas gambar ...................... 58 4.2.1. Pengujian pada gambar ikan glodok ......................................... 58 4.2.1.1. Hasil data yang didapat pada pengujian ikan glodok......... 58 4.2.1.2 Analisa pada hasil pengujian dengan ikan glodok ............. 59 4.2.2. Pengujian pada gambar ikan nila .............................................. 60 4.2.2.1. Hasil data yang didapat pada pengujian ikan nila.............. 61 4.2.2.2. Analisa pada hasil pengujian dengan ikan nila .................. 62 4.2.3. Pengujian pada gambar ikan manggasius ................................. 63 4.2.3.1 Hasil data yang didapat pada pengujian ikan manggasius .. 64 4.2.3.2. Analisa pada hasil pengujian dengan ikan manggasius ..... 65 4.2.4. Pengujian pada gambar ikan mujaer ......................................... 66

vi

4.2.4.1. Hasil data yang didapat pada pengujian ikan mujaer............. 67 4.2.4.2. Analisa pada hasil pengujian dengan ikan mujaer ................ 68 4.3. Hasil Pengujian Pada pengujian sistem keseluruhan luas gambar ...... 71 4.3.1 Pengujian pada gambar ikan glodok ......................................... 71 4.3.1.1 Hasil data yang didapat pada pengujian ikan glodok .......... 71 4.3.1.2 Analisa pada hasil pengujian dengan ikan glodok .............. 72 4.3.2 Pengujian pada gambar ikan nila .............................................. 74 4.3.2.1 Hasil data yang didapat pada pengujian ikan nila ............... 74 4.3.2.2 Analisa pada hasil pengujian dengan ikan nila ................... 75 4.3.3 Pengujian pada gambar ikan manggasius.................................. 77 4.3.3.1 Hasil data yang didapat pada pengujian ikan manggasius .. 77 4.3.3.2 Analisa pada hasil pengujian dengan ikan manggasius....... 78 4.3.4 Pengujian pada gambar ikan mujaer ......................................... 79 4.3.4.1 Hasil data yang didapat pada pengujian ikan mujaer.............. 79 4.3.4.2 Analisa pada hasil pengujian dengan ikan mujaer ................. 81

BAB V KESIMPULAN DAN SARAN 5.1. Kesimpulan ......................................................................................... 84 5.2. Saran .................................................................................................. 84 DAFTAR PUSTAKA

vii

DAFTAR GAMBAR
Gambar 1.1 Gambar 1.2 Gambar 2.1 Gambar 2.2 Gambar 2.3 Gambar 2.4 Gambar 2.5 Gambar 2.6 Gambar 2.7 Gambar 2.8 Gambar 2.9 Gambar 2.10 Gambar 2.11 Gambar 2.12 Gambar 2.13 Gambar 3.1 Gambar 3.2 Gambar 3.3 Gambar 3.4 Gambar 3.5 Gambar 3.6 Gambar 3.7 Gambar 4.1 Gambar 4.2 Gambar 4.3 Gambar 4.4 Gambar 4.5 Gambar 4.6 Gambar 4.7 Gambar 4.8 Gambar 4.9 Gambar 4.10 Gambar 4.11 Gambar 4.12 Marine Sketch Image ........................................................ 3 Sistem CBIR ..................................................................... 4 Memberi nama program.................................................... 16 Memilih isi program.......................................................... 17 Membuat Menu................................................................. 18 Menghapus dan menambah menu..................................... 19 Mengaktifkan menu .......................................................... 20 Membuka file gambar ....................................................... 22 Memproses gambar ........................................................... 24 Memilih aplikasi dialog based .......................................... 25 Tampilan dialog box ......................................................... 26 ClassWizard dengan Member Variables ........................... 26 Hasil proses gambar dengan dialog box............................ 29 Mengubah Citra Berwarna Menjadi Gray-Scale ............... 31 ThresHolding dengan nilai 128......................................... 34 Diagram System................................................................ 44 Ilustrasi Freeman code ...................................................... 45 Perbedaan dalam penelusuran diagram arah ..................... 46 Kalkulasi First Different Code.......................................... 48 Diagram alir matching ...................................................... 51 Contoh Image Query......................................................... 51 Jendela Kerja CBIR.......................................................... 52 Gambar query bujur sangkar............................................. 54 hasil pada thresholding 35% gambar bujur sangkar ........ 54 pada thresholding 55% keatas gambar bujur sangkar ....... 55 Gambar query persegi panjang ......................................... 55 hasil pada thresholding 35% gambar persegi panjang ..... 55 hasil pada thresholding 55% keatas gambar persegi panjang ............................................................................. 56 Gambar query segitiga...................................................... 56 hasil pada thresholding 75% keatas gambar segitiga ...... 56 Gambar query lingkaran....... ........................................... 57 hasil pada thresholding 75% keatas gambar lingkaran.... 57 Gambar query ikan glodok............................................... 58 hasil pada thresholding 35% dari gambar query .............. 58

viii

Gambar 4.13 Gambar 4.14 Gambar 4.15 Gambar 4.16 Gambar 4.17 Gambar 4.18 Gambar 4.19 Gambar 4.20 Gambar 4.21 Gambar 4.22 Gambar 4.23 Gambar 4.24 Gambar 4.25 Gambar 4.26 Gambar 4.27 Gambar 4.28 Gambar 4.29 Gambar 4.30 Gambar 4.31 Gambar 4.32 Gambar 4.33 Gambar 4.34 Gambar 4.35 Gambar 4.36 Gambar 4.37 Gambar 4.38 Gambar 4.39 Gambar 4.40 Gambar 4.41 Gambar 4.42 Gambar 4.43 Gambar 4.44 Gambar 4.45 Gambar 4.46 Gambar 4.47 Gambar 4.48 Gambar 4.49 Gambar 4.50

hasil pada thresholding 55% dari gambar query .............. 58 hasil pada thresholding 75% dari gambar query .............. 59 hasil pada thresholding 95% dari gambar query .............. 59 Grafik tingkat ketelitian dengan gambar ikan glodok ...... 60 Gambar query ikan Nila .............................................. 61 hasil pada thresholding 35% dari gambar query .............. 61 hasil pada thresholding 55% dari gambar query .............. 61 hasil pada thresholding 75% dari gambar query .............. 62 hasil pada thresholding 95% dari gambar query .............. 62 Grafik tingkat ketelitian dengan gambar ikan nila ........... 63 Gambar query ikan Manggasius....................................... 64 hasil pada thresholding 35% dari gambar query .............. 64 hasil pada thresholding 55% dari gambar query .............. 64 hasil pada thresholding 75% dari gambar query .............. 64 hasil pada thresholding 95% dari gambar query ......... 65 Grafik tingkat ketelitian dengan gambar ikan manggasius....................................................................... 66 Gambar query ikan Mujaer .............................................. 66 hasil pada thresholding 35% dari gambar query .............. 67 hasil pada thresholding 55% dari gambar query .............. 67 hasil pada thresholding 75% dari gambar query .............. 67 hasil pada thresholding 95% dari gambar query .............. 67 Grafik tingkat ketelitian dengan gambar ikan mujaer ...... 69 Rata-rata prosentase ketelitian gambar berdasarkan tingkat thresholding luas gambar ................................ 69 Gambar query ikan glodok............................................... 71 hasil pada thresholding 35% dari gambar query .............. 72 hasil pada thresholding 55% dari gambar query .............. 72 hasil pada thresholding 75% dari gambar query .............. 72 hasil pada thresholding 95% dari gambar query .............. 72 Grafik tingkat ketelitian dengan gambar ikan glodok ...... 73 Gambar query ikan Nila .............................................. 74 hasil pada thresholding 35% dari gambar query .............. 75 hasil pada thresholding 55% dari gambar query .............. 75 hasil pada thresholding 75% dari gambar query .............. 75 hasil pada thresholding 95% dari gambar query .............. 75 Grafik tingkat ketelitian dengan gambar ikan nila ........... 76 Gambar query ikan Manggasius....................................... 77 hasil pada thresholding 35% dari gambar query .............. 78 hasil pada thresholding 55% dari gambar query .............. 78

ix

Gambar 4.51 Gambar 4.52 Gambar 4.53 Gambar 4.54 Gambar 4.55 Gambar 4.56 Gambar 4.57 Gambar 4.58 Gambar 4.59 Gambar 4.60 Gambar 4.61

hasil pada thresholding 75% dari gambar query .............. 78 hasil pada thresholding 95% dari gambar query ......... 78 Grafik tingkat ketelitian dengan gambar ikanmanggasius 79 Gambar query ikan Mujaer .............................................. 79 hasil pada thresholding 35% dari gambar query .............. 80 hasil pada thresholding 55% dari gambar query .............. 80 hasil pada thresholding 75% dari gambar query .............. 80 hasil pada thresholding 95% dari gambar query .............. 80 Grafik tingkat ketelitian dengan gambar ikan mujaer ...... 81 Rata-rata prosentase ketelitian gambar berdasarkan tingkat thresholding seluruh luas gambar......................... 82 Rata-rata prosentase ketelitian gambar berdasarkan tingkat thresholding luas gambar ................................. 83

DAFTAR TABEL
Tabel 3.1 Tabel 4.1 Tabel 4.2 Tabel 4.3 Tabel 4.4 Tabel 4.5 Keterangan Graphical User Interface.................................... 53 prosentase ketelitian dengan gambar ikan glodok................. 59 prosentase ketelitian dengan gambar ikan nila...................... 62 prosentase ketelitian dengan gambar ikan manggasius ......... 65 prosentase ketelitian dengan gambar ikan mujaer................. 68 Rata rata prosentase Ketelitian gambar berdasarkan tingkat thresholding ......................................................................... 69 Tabel 4.6 prosentase ketelitian dengan gambar ikan glodok................. 73 Tabel 4.7 prosentase ketelitian dengan gambar ikan nila...................... 76 Tabel 4.8 prosentase ketelitian dengan gambar ikan manggasius ......... 78 Tabel 4.9 prosentase ketelitian dengan gambar ikan mujaer................. 81 Tabel 4.10 Rata rata prosentase Ketelitian gambar berdasarkan tingkat thresholding seluruh luas gambar ........................................ 82 Tabel 4.11 Rata rata prosentase Ketelitian gambar berdasarkan tingkat thresholding luas gambar ................................................. 83

xi

BAB I PENDAHULUAN

1.1

LATAR BELAKANG

Di berbagai bidang seperti hiburan, perdagangan, pendidikan, biomedicine, dan kepolisian, data gambar dari berbagai bidang tersebut semakin bertambah dengan cepat, dimana hal ini didasarkan pada kebutuhan manusia yang cenderung semakin hari semakin meningkat. Sedangkan sistem penyimpanan dari berbagai macam informasi digital tersebut semakin meningkat sehingga membuat masalah dalam pencarian dan pengolahannya. Content Based Image Retrieval System ini bertujuan untuk mempermudah dan mempercepat pencarian dari gambar-gambar mirip dengan kriteria gambar tertentu yang diinginkan dari sekumpulan gambar yang ada. Dimana karakteristik atau kriteria dari gambar yang dihasilkan ini seperti bentuk, warna, dan tekstur dan lain-lain yang sesuai dengan gambar yang diinginkan. Hubungan antar gambar-gambar yang diinginkan dengan gambar hasil dikelompokkan berdasarkan kemiripan karakteristik secara komputasi. Teknik pencarian berbasis teks yang sudah ada pada saat ini menjadi tidak bisa digunakan karena nama dari sebuah file tidak dapat mempresentasikan isinya. Disamping itu jika kita menggunakan input yang berupa teks, maka kita harus mengetahui kata kunci yang benarbenar tepat agar gambar yang kita inginkan dapat ditampilkan. Sedangkan suatu gambar itu mempunyai interest yang sangat bervariasi. Sebagai contoh bila kita ingin mencari gambar kuda, dimana gambar kuda itu mempunyai banyak informasi antara lain mungkin yang akan dihasilkan adalah makanan kuda, atau area pacuan kuda, atau informasi yang lain yang ada unsur kuda dan yang pasti suatu gambar itu bisa berbicara seribu kata. Seperti yang kita lihat pada Google image searching, yang bahwasanya tidak dapat menemukan hasil optimal dan tidak bersesuaian dengan apa yang kita harapkan, dimana hal tersebut dikarenakan teknik pencariannya hanya didasarkan pada nama file. Hal ini bisa saja jadi berantakan bila ada seseorang yang memodifikasi nama file tersebut dengan tidak memperhitungkan

Pendahuluan melihat isi atau informasi dari file gambar tersebut, dan tentunya hal yang seperti ini dapat merugikan orang banyak. Untuk menghindari teknik tersebut, maka digunakan pendekatan alternative yaitu : Content Based Image Retrieval System yang mencari gambar hanya berdasarkan informasi yang ada pada gambar. Informasi dari gambar yang didapatkan merupakan ciri dari gambar, pada level primitif dapat berupa warna, bentuk, tekstur. Dari ketiga feature tersebut sudah tampak jelas bahwa setidaknya suatu gambar itu memiliki ciri, misal gambar bebek yang memiliki ciri bentuk yang sebagaimana bebek, dan memiliki ciri warna dimana bebek memiliki warna putih serta memiliki tektur bulu. Dengan hal yang seperti ini (CBIR), meskipun kita memodifikasi atau merubah nama filenya, tidaklah membuat image searching menjadi rancu karena hal ini tidak didasarkan atas teks atau nama dari sebuah file melainkan berdasrkan ciri baik bentuk, warna maupun tektur. Dengan demikian, penulis berusaha untuk membuat sistem Content Based Image Retrieval pada primitif level khususnya dengan menggunakan ciri bentuk untuk melengkapi sistem yang sudah ada. Aplikasi lebih lanjut dari Content Based Image Retrieval System (CBIR) ini dapat digunakan untuk kepentingan pencarian (image searching), video content, image registration, dan lain-lain.

1.2

Maksud dan Tujuan

Tujuan dari proyek akhir ini adalah untuk membangun sistem Content Based Image Retrieval (CBIR) berdasarkan identifikasi pola bentuk menggunakan ekstraksi fitur terstruktur (metode Freeman Code dan First Different Code) dengan metode Euclidean distance (pencocokan gambar) untuk mendapatkan gambar yang mempunyai fitur dan isi yang sama atau mirip dengan gambar kueri.

1.3

PERMASALAHAN Permasalahan yang dibahas dalam proyek akhir ini adalah : Bagaimana menggunakan metode Freeman Code untuk mendapatkan data numerik dari gambar (chain code).

1.

Pendahuluan 2. 3. 4. Bagaimana cara mendapatkan nilai bobot dari chaincode dengan menggunakan metode First Different Code. Bagaimana menyederhanakan data numerik dengan menggunakan metode Normalisasi Data. Bagaimana membandingkan bentuk obyek (image matching) dengan data numerik yang didapat berdasarkan metode pencarian nilai jarak yaitu Euclidean Distance.

1.4

BATASAN MASALAH Agar tidak terjadi kesalahan persepsi dan tidak meluasnya pokok pembahasan, maka saya memberikan batasan-batasan masalah sebagai berikut: 1. Dalam proyek akhir ini, image database diartikan sebagai sekumpulan gambar dalam sebuah direktori, dimana semua gambar adalah berbentuk sketsa hewan laut atau Marine Sketch Image. (Total berjumlah 632 gambar) Contoh gambar :

Gambar 1.1 Marine Sketch Image 2. 3. 4. File gambar menggunakan format BMP, masing masing dengan ukuran yang berbeda. Penamaan file tidak merujuk pada jenis gambar, tetapi diberi index. Misalnya kk1, kk2, dst. Fitur yang digunakan sebagai model yang menyatakan content gambar adalah fitur bentuk.

Pendahuluan 1.5 METODOLOGI

Dalam mengerjakan proyek akhir ini, metode yang dipergunakan adalah sebagai berikut : 1. Studi literatur Pada tahap pertama dilakukan pendalaman literatur yang berhubungan dengan CBIR, ekstraksi fitur menggunakan Freeman Code dan First Different Code dengan Euclidean Distance (proses pencocokan) dan pemrograman GUI MFC pada Microsoft Visual C++. 2. Pengumpulan data Suatu kegiatan mencari, mengumpulkan data-data yang digunakan dalam pembuatan sistem pada Aplikasi Image Database . Data-data yang digunakan untuk proyek akhir ini berupa beberapa referensi materi dan image database (gambar sketsa ikan atau Marine Sketch Image berjumlah 632 gambar) yang diperoleh dari alamat : http://www.ee.surrey.ac.uk/Research/VSSP/imagedb 3. Perancangan sistem pada bagian software Tahap ini bertujuan untuk mencari bentuk yang optimal dari sistem yang akan dibuat dengan mempertimbangkan berbagai faktor-faktor permasalahan dan kebutuhan yang telah ditentukan. Perancangan arsitektur sistem Arsitektur sistem pada aplikasi ini akan dibangun menggunakan metode dan algoritma yang sudah dijelaskan diatas untuk menganalisa fitur fitur yang dimiliki oleh query image kemudian dibandingkan satu persatu dengan gambar yang ada pada image database.

Pendahuluan

Gambar 1.2 Sistem CBIR Metode yang akan digunakan untuk pendekatan masalah adalah terdiri dari : 1. Mendapatkan data numerik yang menjadi ciri bentuk dari gambar dengan Structural Feature Extraction menggunakan metode Freeman Code. 2. Penghitungan nilai Normalisasi pada data numerik yang dihasilkan sehingga mendapatkan nilai yang mewakili ciri dari query image dan image database. 3. Membandingkan fitur dari query image dan fitur gambar dalam image database dengan metode Euclidean Distance. 4. Perancangan GUI MFC Microsoft Visual C++ yang berfungsi untuk menampilkan gambar hasil. 4. Pembuatan dan pengujian sistem Dari hasil perancangan dilakukan realisasi pembuatan aplikasi seleksi gambar pada image database. Pengujian aplikasi ini dilakukan pada beberapa gambar dalam sebuah direktori yaitu dengan cara mengoperasikan aplikasi GUI yang sudah dibuat.

1.6.

SISTEMATIKA STUDI Sistematika pembahasan dari proyek akhir ini direncanakan sebagai berikut:

Pendahuluan BAB 1 PENDAHULUAN Menguraikan tentang latar belakang, tujuan, permasalahan, batasan masalah dan sistematika pembahasan masalah yang digunakan dalam pembuatan proyek akhir ini. BAB II TEORI PENUNJANG Teori-teori yang digunakan dalam penyelesaian proyek akhir akan dibahas dalam bab ini sesuai dengan kaitannya proses content based image retrieval system berdasarkan identifikasi pola bentuk menggunakan ekstraksi fitur terstruktur. BAB III PERENCANAAN DAN PEMBUATAN Membahas secara detail dari perencanaan dan pembuatan system. BAB IV PENGUJIAN DAN ANALISA Membahas tentang pengujian dari system yang telah dibuat beserta analisanya. BAB V KESIMPULAN DAN SARAN Bab ini berisi kesimpulan dari pembahasan pada perancangan awal serta analisa yang diperoleh. Untuk lebih meningkatkan mutu dari system yang telah dibuat maka saya memberikan saran-saran untuk perbaikan dan penyempurnaan system. DAFTAR PUSTAKA Berisi referensi-referensi yang telah digunakan sebagai acuan selama pembuatan proyek akhir.

BAB II TEORI PENUNJANG


2.1. PENGOLAHAN GAMBAR DIGITAL

Proses pengolahan gambar digital dengan menggunakan komputer digital adalah terlebih dahulu mentransformasikan gambar ke dalam bentuk besaran-besaran diskrit dari nilai tingkat keabuan pada titik-titik elemen gambar. Bentuk gambar ini disebut gambar digital.Elemen-elemen gambar digital apabila ditampilkan dalam layar monitor akan menempati sebuah ruang yang disebut dengan pixel (picture elemen/pixel). Pada proses transformasi yang menghasilkan gambar dari bentuk tiga dimensi ke bentuk dua dimensi akan dipengaruhi oleh bermacam-macam faktor yang mengakibatkan penampilan gambar suatu benda tidak identik dengan bentuk fisik nyatanya. Faktor-faktor tersebut merupakan efek degradasi atau penurunan kualitas yang dapat berupa rentang kontras benda yang terlalu sempit atau terlalu lebar, distorsi geometri (geometric distortion), kekaburan (blur), kekaburan akibat obyek gambar yang bergerak (motion blur), noise atau gangguan yang disebabkan oleh interferensi peralatan pembuat gambar, baik itu berupa tranduser, peralatan elektronik ataupun peralatan optik Teknik dan proses untuk mengurangi atau menghilangkan efek degradasi pada gambar digital meliputi perbaikan citra (image enhancement), restorasi citra (image restoration), dan transformasi spasial (spatial transformation). Subyek lain dari pengolahan gambar digital diantaranya adalah pengkodean gambar (image coding), segmentasi gambar (image segmentation), representasi dan diskripsi gambar (image representation and description ). Pengolahan gambar digital memiliki banyak aplikasi seperti pada bidang penginderaan jarak jauh, robotik, pemetaan, biomedis, dan sebagainya. Perlengkapan pengolahan gambar digital minimal terdiri atas alat pemasukan data gambar berupa digitizer atau scanner, komputer digital, alat penyimpanan data dengan kapasitas yang besar.

Teori Penunjang 2.2 MODE WARNA Gambar yang tidak berwarna atau hitam putih dikenal juga sebagai gambar dengan derajat keabuan (gambar gray level). Derajat keabuan yang dimiliki ini bisa beragam mulai dari 2 derajat keabuan (yaitu 0 dan 1) yang dikenal juga sebagai gambar monochrome, 16 derajat keabuan dan 256 derajat keabuan. Semakin besar jumlah derajat keabuan yang dimiliki maka semakin halus citra tersebut Dalam sebuah gambar monochrome, sebuah pixel diwakili oleh 1 bit data yang berisikan data tentang derajat keabuan yang dimiliki pixel tersebut. Data akan berisi 1 bila pixel tersebut berwarna putih dan data akan berisi nilai 0 bila pixel tersebut berwarna hitam Untuk gambar berwarna, jumlah warna bisa beragam mulai dari 16, 256, 65536 atau 16 juta warna, yang masing-masing direpresentasikan oleh 4, 8, 16, atau 24 bit data untuk setiap pixelnya. Warna yang ada terdiri dari 3 komponen utama yaitu nilai merah (red), nilai hijau (green), dan nilai biru (blue). Paduan ketiga komponen utama pembentuk warna ini dikenal sebagai RGB color. Gambar berwarna Suatu gambar berwarna selalu memiliki 3 unsur yaitu unsure red, unsur green, dan unsure blue atau hal ini sering disebut dengan unsur RGB

RED

Color

GREEN

BLUE

Teori Penunjang 2.3 PIKSEL Piksel merupakan salah satu komponen dari gambar yang menentukan resolusi dari gambar tersebut, misal, sebuah gambar dikatakan resolusinya sebesar 400 x 500 maka artinya yaitu panjang pixel horizontalnya 400 dan panjang pixel vertikalnya 500 dan jumlah total keseluruhan pixel dari gambar tersebut yaitu 480000 atau dapat dikatakan bahwa dalam gambar tersebut terdiri dari 20000 pixel. Dalam penolahannya, piksel memiliki hubungan antara yang satu dengan yang lainnya. Sebuah piksel p pada koordinat (x,y) mempunyai tetangga horisontal dan vertikal yang koordinatnya sebagai berikut : N4(p) : 4 tetangga dari p (x+1,y), (x-1,y),(x,y+1),(x,y-1) x x p x x

Kumpulan dari piksel-piksel diatas yang disebut 4-neighbours of p dapat dinyatakan sebagai N4(p), kecuali jika p(x,y) posisinya terletak pada garis batas gambar, sehingga jumlah piksel tetangga tidak terdiri dari tetangga. Selain 4 tetangga diatas, p juga memiliki 4 tetangga diagonal, yaitu: ND(p):4 diagonal tetangga dari p (x+1,y+1), (x+1,y-1),(x-1,y+1),(x-1,y-1) x p x x x

Gabungan dari N4(p) dan ND(p) didefinisikan sebagai 8-neighbours of pdan dinyatakan sebagai N8(p). x x x N8(p): 8 neighbours of p x p x x x x

2.4

GARIS Mengapa dalam bidang seni ada karya yang khusus, yang populer dinamai Sketsa? Padahal, jika dilihat secara kasat mata, bentuk gambar yang disebut sketsa itu hanya berupa goresan-goresan garis yang seolah merupakan rangka-rangka dati suatu bentuk benda.

Teori Penunjang Garis merupakan sekumpulan titik yang berderet. Adapun deretannya berwujud melingkar, segitiga, persegi panjang, berkelokkelok, melengkung, bahkan lurus. Sekumpulan titik yang disebut garis dan ujudnya beraneka ragam itu, ternyata setiap bentuk ragamnya membawa karakter sendiri-sendiri. Garis yang visualnya tegak lurus misalnya, punya karakter visual yang kaku dan statis. Sedangkan yang horisontal membawa karakter datar. Adapun yang berkelok membawa karakter yang dinamis[9]. 2.5 GRAYSCALE Variabel gambar gray scale adalah matrik yang dinyatakan:

A = [a(i, j )]nn
Untuk gambar yang berwarna, nilai A terdiri dari 3 matrik layer yaitu: 1 matrik untuk layer warna RED, 1 matrik untuk layer warna GREEN dan 1 matrik untuk layer warna BLUE 2.6 SEGMENTASI Tujuan dari sementasi gambar adalah untuk menentukan daerah atau bagian yang merepresentasikan objek dengan kata lain memisahkan objek dengan latar belakangnya. Tetapi ini salah satu keulitan dalam pemrosesan citra digital. Algoritma segmentasi berdasarkan pada satu atau dua sifat nilai intensitas yaitu diskontinu dan similaritas. Kategori pertama membagi sebuah gambar berdasarkan perubahan yang tiba-tiba dari intensitas, misal tepi dari sebuah gambar. Kategori kedua berdasarkan pembagian gambar kedalam daerah-daerah yang mirip menurut kriteria yang sudah didefinisikan sebelumnya. Pendekatan Histogram Thresholding berada pada kategori ini. Dasar-dasar thresholding Anggaplah histogram dari gambar grayscale, f(x,y), tersusun atas obyek gelap didalam latar belakang yang terang, dengan cara ini piksel-piksel untuk objek dan latar belakangnya mempunyai kelompok gray level yang dibagi dalam dua mode. Salah satu untuk dilihat untuk mengekstraksi objek dari latar belakangnya

10

Teori Penunjang adalah memilih sebuah threshold T yang akan memisahkan 2 mode ini. Kemudian semua piksel (x,y) yang nilai f(x,y)> T disebut sebagai piksel dari objek, selain itu, disebut sebagai piksel latar belakang. Jika ada dua mode yang dominan dari karakteristik histogram, disebut sebagai bimodal histogram. Hanya satu threhold sudah cukup untuk membagi gambar. Jika contoh gambar dibangun dengan dua tipe obyek obyek terang pada latar belakang gelap, tiga atau lebih mode karakteristik histogram yang dominan.

2.7

DETEKSI TEPI

Latar belakang: untuk Deteksi tepi dikembangkan menggunakan konsep filter pada gambar. Untuk mereduksi noise pada hasil deteksi tepi diperlukan pengaturan nilai pada filter kernel, seperti pada prewitt dan sobel. Deteksi tepi merupakan salah satu proses penting di dalam image processing. Tepi suatu gambar dapat dijadikan salah satu ciri atau fitur yang dapat digunakan dalam proses pengenalan (identifikasi dan recognition), klasifikasi dan penjabaran informasi dari suatu gambar. Mengingat pentingnya informasi tepi ini, diperlukan suatu proses deteksi tepi yang benar-benar handal dalam menyajikan informasi tepi. Permasalahan di dalam proses deteksi tepi adalah bagaimana menghasilkan informasi tepi yang benar-benar tepi dan menghilangkan noise. Proses deteksi tepi pada dasarnya adalah proses filter pada frekuensi tinggi dimana pada frekuensi ini sukar dibedakan mana informasi tepi dan mana yang noise. Beberapa deteksi tepi yang mencoba mengurangi noise mempunyai efek samping hilangnya beberapa informasi tepi, seperti pada Robert dan sobel. Metode deteksi Prewitt menghasilkan banyak informasi tepi tetapi noise yang dihasilkan juga banyak. Untuk itu muncul pemikiran bagaimana menghasilkan matrik filter kernel

11

Teori Penunjang deteksi tepi yang dapat mengurangi noise sebanyak-banyaknya tanpa kehilangan informasi tepi. Tepi suatu obyek gambar dinyatakan sebagai titik yang intensitasnya berubah dengan jelas, dengan demikian proses deteksi tepi dilakukan dengan memperhatikan perubahan nilai intensitas setiap titik dengan delapan titik tetangganya. Sehingga matrik filter kernel yang dikembangkan merupakan nilai differensial dari suatu titik dengan titik-titik tetangganya. Perhitungan konvolusi antara matrik kernel H dan matrik gambar X, hasilnya Y adalah informasi tepi. Y=HX

Filter Kernel Prewitt dan Sobel [1]. Filter Kernel Prewitt Horisontal dan Vertikal o Deteksi Tepi Prewitt merupakan pengembangan dari deteksi tepi Robert dengan memanfaatkan nilai tetangga dari dua arah yang berbeda. Beberapa matrik kernel dari metode deteksi tepi Prewitt adalah sebagai berikut

1 0 1 H = 1 0 1 1 0 1

1 1 1 H = 0 0 0 1 1 1

Filter Kernel Sobel Horisontal dan Vertikal o Deteksi Tepi Sobel merupakan pengembangan dari deteksi tepi Prewitt dengan menambahkan unsur gaussian di dalam matrik filter kernel yang menyatakan arah dari proses konvolusi.

1 2 1 H= 0 0 0 1 2 1

1 0 1 H= 2 0 2 1 0 1

12

Teori Penunjang Filter kernel laplacian

0 1 0 1 1 1 1 4 1 atau H= 1 8 1 H= 0 1 0 1 1 1

2.8

CONTENT BASED IMAGE RETRIEVAL SYSTEM

Content Based Image Retrieval System (CBIR) merupakan suatu teknik pencarian kembali gambar yang mempunyai kemiripan karakteristik atau content dari sebuah sekumpulan gambar. Proses secara umum dari CBIR adalah gambar yang menjadi query dilakukan proses ekstraksi feature, begitu halnya dengan gambar yang ada pada sekumpulan gambar juga dilakukan proses seperti pada gambar query. Parameter feature gambar yang dapat digunakan untuk retrieval pada system ini seperti histogram, susunan warna, teksture, dan shape, tipe spesifik dari obyek, tipe event tertentu, nama individu, lokasi, emosi. gambar query yang digunakan mempunyai beberapa level, yaitu: Level 1: retrieval dengan primitive feature, seperti color, shape, teksture, Level 2: retrieval dengan logical feature, seperti tipe obyek, individu obyek atau orang. Level 3: retrieval dengan abstrak feature, seperti nama even, tipe aktifitas, emotional, religius. Penelitian dan pembangunan dalam CBIR mencakup keseluruhan topik. Beberapa pokok persoalan yang terjadi dalam pembangunan CBIR dapat diuraikan sebagai berikut: Pemahaman gambar yang dibutuhkan oleh user dan pencarian informasi. Pengidentifikasian cara yang sesuai dalam penggambaran content atau karakteristik dari gambar. Proses ekstraksi feature dari gambar.

13

Teori Penunjang Ekstrasi feature merupakan proses penting pada sistem CBIR. Karena hasil dari proses ini, perbedaan pada setiap gambar dapat diketahui berdasarkan cirinya seperti ciri bentuk, ciri warna, ciri tekstur dan lain lain. Beberapa teknik yang dapat digunakan untuk ekstrasi feature antara lain : teknik analisis komponen utama, besaran statistik , histogram warna, wavelet transform dan lain lain. Penyediaan tempat penyimpanan untuk sekumpulan gambar. Proses matching antara gambar query dan gambar yang ada pada sekumpulan gambar.. Proses matching merupakan proses pencocokan gambar untuk memperoleh gambar yang mempunyai kemiripan dengan gambar query. Proses matching dilakukan dengan menghitung jarak antara dua gambar yaitu gambar query dan gambar target pada sekumpulan gambar. Parameter yang digunakan dalam perhitungan jarak berdasarkan pada hasil ekstrasi ciri. Penyediaan human interface dari CBIR system.

Nilai normalisasi Nilai normalisasi digunakan untuk mengecilkan data, dimana data nilai piksel dari sebuah gambar tersebut cenderung sangat besar, dengan demikian butuh adanya normalisasi. Dengan normalisasi ini maka data tersebut hanya memiliki range antara nol sampai satu. X= {i0, i1, i2, ....in} Maka |X| =

i +i +i
2 2 0 1

2 2

+ ... + i n
2

|X|=xx X=(i0/xx, i1/xx, ....,xn/xx) Mean dan Standard Deviasi Dalam ilmu statistik, perhitungan nilai rata-rata (mean) dan standard deviasi untuk mengetahui besarnya simpangan cenderung banyak digunakan karena hal tersebut dapat mempengaruhi probabilitas hasil kerja.

14

Teori Penunjang Rumus Jarak Euclidean Distance Jarak Euclidean dapat dianggap sebagai jarak yang paling pendek antar dua poin poin, maka dari itu dalam proyek akhir ini digunakan fungsi jarak Euclidean dan pada dasarnya sama halnya dengan persamaan Pythagoras ketika digunakan di dalam dua dimensi. Secara matematis dapat dituliskan di dalam persamaan berikut : d(i,j)= Ket : d(i,j) xi xj Gambaran CBIR = = = nilai jarak nilai nilai pada fitur 1 nilai nilai pada fitur 2

| xi1 x j1 |2 + | xi 2 x j 2 | 2 +.....+ | xip x jp | 2

2.9

PERANGKAT LUNAK BAHASA PEMROGRAMAN VISUAL C++ DENGAN MFC

15

Teori Penunjang Menjalankan Visual C++ dengan MFC 1. Membuka Visual C++ 6.0 Pilih menu : Start->Programs->Microsoft Visual Studio 6.0->Microsoft Visual C++ 6.0 2. Memberi nama program Pilih menu : File->New->Projects->MFC AppWizard(exe) Isi Project name misalnya dengan: Test (lihat gambar 1) Tekan tombol OK

Gambar 2.1 Memberi nama program 3. Memilih isi program What tipe of application would you like to create (aplikasi apa yang ingin dibuat) pilih Multiple documents untuk pilihan standar. Tekan tombol Next What database support would you like include (database apa yang ingin dibuat) pilih None untuk pilihan standar. Tekan tombol Next What compound document support would you like include (dokumen apa yang ingin dibuat) pilih None untuk pilihan standar. Tekan tombol Next What features would you like include

16

Teori Penunjang (tampilan apa yang ingin dibuat) pilih Docking toolbar, Initial status bar, printing and print preview, 3D control untuk pilihan standar. Tekan tombol Next What style of project would you like (gaya program apa yang ingin dibuat) pilih MFC standard untuk pilihan standar. Tekan tombol Next AppWizard creates the following classes for you (AppWizard akan membuat class seperti dibawah ini) CtestView CtestApp CmainFrame CchildFrame CtestDoc Lihat gambar 2

4.

Gambar 2.2 Memilih isi program Tekan tombol Finish kemudian tombol OK Cara menjalankan program Pilih menu : Build->Execute (!) Tekan tombol Yes

Cara membuat menu dengan MFC 1. Cara membuat menu Buat aplikasi AppWizard seperti pada praktikum 1 dan beri nama project dengan Menus

17

Teori Penunjang Pilih ResourceView pada workspace Pilih folder paling atas dengan cara klik pada tanda + Pilih folder menu dengan cara klik pada tanda + Klik 2 kali IDR_MENUSTYPES[English[U.S.]] seperti gambar 3

Gambar 2.3 Membuat Menu 2. Menghapus dan menambah menu Untuk menghapus menu : Pilih menu Edit kemudian tekan keyboard Delete kemudian tekan tombol OK Untuk Menambah menu: Tekan tombol keyboard Insert dan ketik misalnya Test kemudian dibawahnya ketik Hello seperti gambar 4

18

Teori Penunjang

Gambar 2.4 Menghapus dan menambah menu 3. Mengaktifkan menu Pilih menu Hello dan klik kanan Pilih menu ClassWizard dan klik kiri Pilih message dengan COMMOND dan klik kiri dua kali seperti gambar 5 kemudian tekan tombol OK Untuk mengedit isi program tekan tombol Edit Code

19

Teori Penunjang

Gambar 2.5 Mengaktifkan menu 4. Menampilkan fungsi Tambahkan program untuk menampilkan pesan seperti dibawah ini
///////////////////////////////////////////////////////////////////////////// // CMenusView message handlers void CMenusView::OnTestHello() { // TODO: Add your command handler code here // Menampilkan pesan untuk pemakai MessageBox(Hello); }

Jalankan program dengan memilih menu Build->Execute (!)

Menampilkan File Gambar 1. Cara membuka file Buat aplikasi AppWizard seperti pada praktikum 1 dan beri nama project dengan OpenFile Buat Menu seperti pada praktikum 2 dengan tambahan Test dan submenunya OpenFile

20

Teori Penunjang Untuk mengedit isi program tekan tombol Edit Code atau buka file OpeFileView.cpp Tambahkan program untuk membuka file seperti dibawah ini

///////////////////////////////////////////////////////////////////////////// // COpenFileView message handlers // Menampilkan file yang akan dibuka void COpenFileView::OnTestOpenfile() { // TODO: Add your command handler code here static char BASED_CODE szFilter[]="Bitmap Files (*.bmp)|*.bmp||"; CFileDialog m_ldFile(TRUE, "*.bmp", name, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, szFilter); if(m_ldFile.DoModal()==IDOK) { name=m_ldFile.GetPathName(); LoadGambar(); } } // Menampilkan gambar hasil dari open file void COpenFileView::LoadGambar(void) { CDC* pDC = GetDC(); CDC dcMem; HBITMAP hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(), name, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION); if(hBitmap) { if(m_bmpBitmap.DeleteObject()) m_bmpBitmap.Detach(); m_bmpBitmap.Attach(hBitmap); } dcMem.CreateCompatibleDC(pDC); dcMem.SelectObject(&m_bmpBitmap); pDC->BitBlt(0,0,250,210,&dcMem,0,0,SRCCOPY); }

2.

Menambah header file Buka file OpenFileView.h Tambahkan program seperti dibawah ini

21

Teori Penunjang
// Attributes public: COpenFileDoc* GetDocument(); CString name; CBitmap m_bmpBitmap; // Operations public: void LoadGambar(void);

3. Cara menjalankan program Pilih menu : Build->Execute (!) Pilih menu : Test->OpenFile ->pilih salah satu gambar misalnya gambar.bmp Hasilnya seperti gambar 6

Gambar 2.6 Membuka file gambar Cara Memproses Gambar 1. Cara memproses gambar Buat aplikasi AppWizard seperti pada praktikum 1 dan beri nama project dengan Proses Buat Menu seperti pada praktikum 2 dengan tambahan Test sedangkan submenunya OpenFile dan Proses Untuk mengedit isi program tekan tombol Edit Code atau buka file ProsesView.cpp Tambahkan program untuk memproses gambar seperti dibawah ini
///////////////////////////////////////////////////////////////////////////// // CProsesView message handlers

22

Teori Penunjang
void CProsesView::OnTestOpenfile() { // TODO: Add your command handler code here static char BASED_CODE szFilter[]="Bitmap Files (*.bmp)|*.bmp||"; CFileDialog m_ldFile(TRUE, "*.bmp", name, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, szFilter); if(m_ldFile.DoModal()==IDOK) { name=m_ldFile.GetPathName(); LoadGambar(); } } // Menampilkan gambar hasil dari open file void CProsesView::LoadGambar(void) { CDC* pDC = GetDC(); CDC dcMem; HBITMAP hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(), name, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION); if(hBitmap) { if(m_bmpBitmap.DeleteObject()) m_bmpBitmap.Detach(); m_bmpBitmap.Attach(hBitmap); } dcMem.CreateCompatibleDC(pDC); dcMem.SelectObject(&m_bmpBitmap); pDC->BitBlt(0,0,250,210,&dcMem,0,0,SRCCOPY); } void CProsesView::OnTestProses() { // TODO: Add your command handler code here CDC* pDC = GetDC(); CDC dcMem; int i,j; long int warna; char str[5]; dcMem.CreateCompatibleDC(pDC); dcMem.SelectObject(&m_bmpBitmap); for(i=0;i<210;i++) for(j=0;j<250;j++) {

23

Teori Penunjang
// memberi warna pada titik dcMem.SetPixel(j,i,0x000000ff); } pDC->BitBlt(0,0,250,210,&dcMem,0,0,SRCCOPY); // membaca warna pada titik warna=dcMem.GetPixel(5,5); sprintf(str,"%ld",warna); pDC->TextOut(10,10,str); }

2.

Menambah header file Buka file ProsesView.h Tambahkan program seperti dibawah ini
// Attributes public: CProsesDoc* GetDocument(); CString name; CBitmap m_bmpBitmap; // Operations public: void LoadGambar(void);

3. Cara menjalankan program Pilih menu : Build->Execute (!) Pilih menu : Test->OpenFile -> pilih salah satu gambar misalnya gambar.bmp Pilih menu: Test->Proses hasilnya seperti gambar 7

24

Teori Penunjang Gambar 2.7 Memproses gambar Cara Memproses Gambar dengan Dialog Box 1. Cara memproses gambar dengan dialog box Buat aplikasi AppWizard seperti pada praktikum 1 dan beri nama project dengan ProsesDialog Buat Dialog Box dengan memilih tipe aplikasi dialog based seperti pada gambar 8 kemudian pilih Finish.

Gambar 2.8 Memilih aplikasi dialog based Buatlah tampilan dengan bantuan control panel sehingga menghasilkan tampilan seperti gambar 9 dibawah ini

25

Teori Penunjang

Gambar 2.9 Tampilan dialog box Tambahkan ID control dan member variables dengan cara clik kanan pada dialog dan pilih properties, kemudian clik kanan dan pilih ClassWizard kemudian pilih member variables, isi member sehingga menghasilkan seperti gambar 10 dibawah ini

Gambar 2.10 ClassWizard dengan Member Variables

26

Teori Penunjang

Tekan dua kali tombol LoadGambar dan pilih OK, tambahkan program seperti di bawah ini
void CProsesDialogDlg::OnLoadgambar() { // TODO: Add your control notification handler code here static char BASED_CODE szFilter[]="Bitmap Files (*.bmp)|*.bmp||"; CFileDialog m_ldFile(TRUE, "*.bmp", name, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, szFilter); if(m_ldFile.DoModal()==IDOK) { name=m_ldFile.GetPathName(); LoadGambar(); } } // Menampilkan gambar hasil dari open file void CProsesDialogDlg::LoadGambar(void) { CDC* pDC = m_pic.GetDC(); CDC dcMem; HBITMAP hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(), name, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION); if(hBitmap) { if(m_bmpBitmap.DeleteObject()) m_bmpBitmap.Detach(); m_bmpBitmap.Attach(hBitmap); } CRect rect; BITMAP bm; m_pic.GetClientRect(rect); m_bmpBitmap.GetBitmap(&bm); dcMem.CreateCompatibleDC(pDC); dcMem.SelectObject(&m_bmpBitmap); pDC>StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bm.bmWidth ,bm.bmHeight,SRCCOPY); }

Tekan dua kali tombol Proses dan pilih OK, tambahkan program seperti di bawah ini
void CProsesDialogDlg::OnProses() { // TODO: Add your control notification handler code here

27

Teori Penunjang
CDC* pDC = m_pic.GetDC(); CDC dcMem; int i,j; long int warna; char str[5]; CRect rect; BITMAP bm; m_pic.GetClientRect(rect); m_bmpBitmap.GetBitmap(&bm); dcMem.CreateCompatibleDC(pDC); dcMem.SelectObject(&m_bmpBitmap); for(i=0;i<rect.Height();i++) for(j=0;j<rect.Width();j++) { // memberi warna pada titik dcMem.SetPixel(j,i,0x000000ff); } pDC>StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bm.bmWidth ,bm.bmHeight,SRCCOPY); // membaca warna pada titik warna=dcMem.GetPixel(5,5); sprintf(str,"%ld",warna); pDC->TextOut(10,10,str); }

2.

Menambah header file Buka file ProsesDialogDlg.h Tambahkan program seperti dibawah ini
// Construction public: CProsesDialogDlg(CWnd* pParent = NULL); constructor // Attributes public: CString name; CBitmap m_bmpBitmap; // Operations public: void LoadGambar(void); // standard

3. Cara menjalankan program Pilih menu : Build->Execute (!) Pilih tombol LoadGambar -> pilih salah satu gambar misalnya harimau.bmp Pilih tombol Proses-> hasilnya seperti gambar 11

28

Teori Penunjang

Gambar 2.11 Hasil proses gambar dengan dialog box Mengubah Citra Berwarna Menjadi Gray-Scale 1. Cara mengubah citra warna menjadi gray-scale Buat aplikasi AppWizard seperti pada praktikum 1 dan beri nama project dengan GrayScale Buat Menu seperti pada praktikum 2 dengan tambahan Test sedangkan submenunya OpenFile dan GrayScale Untuk mengedit isi program tekan tombol Edit Code atau buka file GrayScaleView.cpp Tambahkan program untuk mengubah citra warna menjadi gray-scale seperti dibawah ini
///////////////////////////////////////////////////////////////////////////// // CGrayScaleView message handlers void CGrayScaleView::OnTestLoadgambar() { // TODO: Add your command handler code here static char BASED_CODE szFilter[]="Bitmap Files (*.bmp)|*.bmp||"; CFileDialog m_ldFile(TRUE, "*.bmp", name, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, szFilter); if(m_ldFile.DoModal()==IDOK) { name=m_ldFile.GetPathName(); LoadGambar();

29

Teori Penunjang
} } // Menampilkan gambar hasil dari open file void CGrayScaleView::LoadGambar(void) { CDC* pDC = GetDC(); CDC dcMem; HBITMAP hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(), name, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION); if(hBitmap) { if(m_bmpBitmap.DeleteObject()) m_bmpBitmap.Detach(); m_bmpBitmap.Attach(hBitmap); } dcMem.CreateCompatibleDC(pDC); dcMem.SelectObject(&m_bmpBitmap); pDC->BitBlt(0,0,150,100,&dcMem,0,0,SRCCOPY); } // merubah data pixel ke RGB void WarnaToRGB(long int warna,int *Red, int *Green, int *Blue) { *Red = warna & 0x000000FF; *Green = (warna & 0x0000FF00) >> 8; *Blue = (warna & 0x00FF0000) >> 16; } //merubah RGB ke data pixel long int RGBToWarna(int Red, int Green, int Blue) { return(Red+(Green<<8)+(Blue<<16)); } void CGrayScaleView::OnTestGrayscale() { // TODO: Add your command handler code here long int warna; int j,k,red,green,blue,gray; CDC* pDC = GetDC(); CDC dcMem; dcMem.CreateCompatibleDC(pDC); dcMem.SelectObject(&m_bmpBitmap); for(j=0;j<100;j++) for(k=0;k<150;k++) {

30

Teori Penunjang
warna=dcMem.GetPixel(k,j); // merubah data pixel ke RGB WarnaToRGB(warna,&red,&green,&blue); // mengubah warna menjadi Gray-Scale gray=(red+green+blue)/3; //merubah RGB ke data pixel warna=RGBToWarna(gray,gray,gray); dcMem.SetPixel(k,j,warna); } pDC->BitBlt(150,0,300,100,&dcMem,0,0,SRCCOPY); }

2.

Menambah header file Buka file GrayScaleView.h Tambahkan program seperti dibawah ini
// Attributes public: CGrayScaleDoc* GetDocument(); CString name; CBitmap m_bmpBitmap; // Operations public: void LoadGambar(void);

3. Cara menjalankan program Pilih menu : Build->Execute (!) Pilih menu : Test->OpenFile -> pilih salah satu gambar misalnya gambar.bmp Pilih menu: Test->GrayScale hasilnya seperti gambar 12

Gambar 2.12 Mengubah Citra Berwarna Menjadi Gray-Scale

31

Teori Penunjang

Thresholding 1. Cara mengubah gambar menjadi Thresholding 2 warna Buat aplikasi AppWizard seperti pada praktikum 1 dan beri nama project dengan ThresHold Buat Menu seperti pada praktikum 2 dengan tambahan Test sedangkan submenunya OpenFile dan ThresHold Untuk mengedit isi program tekan tombol Edit Code atau buka file ThresHoldView.cpp Tambahkan program untuk Thresholding seperti dibawah ini
///////////////////////////////////////////////////////////////////////////// // CThresHoldView message handlers void CThresHoldView::OnTestOpenfile() { // TODO: Add your command handler code here static char BASED_CODE szFilter[]="Bitmap Files (*.bmp)|*.bmp||"; CFileDialog m_ldFile(TRUE, "*.bmp", name, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, szFilter); if(m_ldFile.DoModal()==IDOK) { name=m_ldFile.GetPathName(); LoadGambar(); } } // Menampilkan gambar hasil dari open file void CThresHoldView::LoadGambar(void) { CDC* pDC = GetDC(); CDC dcMem; HBITMAP hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(), name, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION); if(hBitmap) { if(m_bmpBitmap.DeleteObject()) m_bmpBitmap.Detach(); m_bmpBitmap.Attach(hBitmap); } dcMem.CreateCompatibleDC(pDC);

32

Teori Penunjang
dcMem.SelectObject(&m_bmpBitmap); pDC->BitBlt(0,0,200,200,&dcMem,0,0,SRCCOPY); } // merubah data pixel ke RGB void WarnaToRGB(long int warna,int *Red, int *Green, int *Blue) { *Red = warna & 0x000000FF; *Green = (warna & 0x0000FF00) >> 8; *Blue = (warna & 0x00FF0000) >> 16; } //merubah RGB ke data pixel long int RGBToWarna(int Red, int Green, int Blue) { return(Red+(Green<<8)+(Blue<<16)); } void CThresHoldView::OnTestThreshold() { // TODO: Add your command handler code here long int warna; int j,k,red,green,blue,gray; CDC* pDC = GetDC(); CDC dcMem; dcMem.CreateCompatibleDC(pDC); dcMem.SelectObject(&m_bmpBitmap); for(j=0;j<100;j++) for(k=0;k<150;k++) { warna=dcMem.GetPixel(k,j); // merubah data pixel ke RGB WarnaToRGB(warna,&red,&green,&blue); // mengubah warna menjadi Gray-Scale gray=(red+green+blue)/3; if(gray<128) warna=RGBToWarna(0,0,0); else warna=RGBToWarna(255,255,255); dcMem.SetPixel(k,j,warna); } pDC->BitBlt(150,0,300,100,&dcMem,0,0,SRCCOPY); }

2.

Menambah header file

33

Teori Penunjang Buka file ThresHoldView.h Tambahkan program seperti dibawah ini

// Attributes public: CThresHoldDoc* GetDocument(); CString name; CBitmap m_bmpBitmap; // Operations public: void LoadGambar(void);

3. Cara menjalankan program Pilih menu : Build->Execute (!) Pilih menu : Test->OpenFile -> pilih salah satu gambar misalnya gambar.bmp Pilih menu : Test->ThresHolding -> hasilnya seperti gambar 13

Gambar 2.13 ThresHolding dengan nilai 128 Menampilkan Gambar Berformat DIB Format berkas DIB (Device Independent Bitmap) merupakan format yang menjadi standar bagi Windows. Format atau Struktur penyusunnya terdiri atas tiga bagian utama : Data Judul (spesifikasi bitmap) Data Palet (daftar warna) Data Piksel (byte gambar / piksel) Format seperti itu perlu diketahui mengingat Visual C++ belum menyediakan fungsi yang ditujukan untuk membuka berkas

34

Teori Penunjang DIB atau format format yang lainnya. Oleh karena itu perlu diimplementasikan langkah langkah sebagai berikut : 1. Menambahkan Kelas CDib pada aplikasi Yaitu membuat file Header Dib.h yang berisikan kode :
class CDib : public CObject { private: char* dataDIB; BITMAPINFOHEADER* judulInfo; BITMAPINFO* info; RGBQUAD* quad; BYTE* piksel; int warna; int lebar, tinggi; public: CDib(); CDib(char* namaBerkas); ~CDib(); int perolehLebar() { return lebar; } int perolehTinggi() { return tinggi; } BITMAPINFO* perolehInfo() { return info; } BYTE* perolehBit() { return piksel; } RGBQUAD* perolehInfoRGB() { return quad; } int perolehWarna() { return warna; } void muatBerkas(char* namaBerkas); int status; };

Kode diatas mendefinisikan kelas Cdib yang dipakai untuk menangani pembacaan data dari berkas DIB. Kelas tersebut melibatkan sejumlah variabel anggota bersifat privat dan sebuah variabel anggota status yang bersifat publik. Variabel publik ini, yaitu status, digunakan untuk menyatakan status pemuatan terhadap berkas DIB. Kemungkinan nilainya : -1, belum ada berkas yang dimuat. 0, berkas berhasil dimuat. 1, berkas tidak ditemukan. 2, berkas tidak berformat DIB. Sejumlah fungsi anggota yang bersifat publik didefinisikan sekaligus dalam berkas Dib.h :
perolehLebar() digunakan untuk memperoleh lebar bitmap. perolehTinggi() digunakan untuk memperoleh tinggi bitmap. perolehInfo() memperoleh posisi info bitmap.

35

Teori Penunjang
perolehBit() digunakan untuk memperoleh data piksel. perolehInfoRGB() digunakan untuk memperoleh data warna. perolehWarna() digunakan untuk memperoleh jumlah warna. muatBerkas() digunakan untuk membuka berkas bitmap.

2.

Menambahkan Definisi fungsi Kelas CDib pada aplikasi Yaitu membuat file dib.cpp yang berisikan kode :
#include "stdafx.h" #include "fstream.h" #include "Dib.h" CDib::CDib() { status=-1; dataDIB=0; } CDib::CDib(char* namaBerkas) { dataDIB=0; muatBerkas(namaBerkas); } CDib::~CDib() { delete [] dataDIB; } void CDib::muatBerkas(char* namaBerkas) { delete [] dataDIB; dataDIB=0; status=0; BITMAPFILEHEADER tmpJudulBerkas; BITMAPINFOHEADER tmpJudulInfo; ifstream berkasBmp(namaBerkas, ios::binary); if (!berkasBmp.is_open()) { status=1; return; } berkasBmp.read((char*)&tmpJudulBerkas, sizeof(tmpJudulBerkas)); berkasBmp.read((char*)&tmpJudulInfo, sizeof(tmpJudulInfo)); char* ptr=(char*)&tmpJudulBerkas.bfType;

36

Teori Penunjang

if (*ptr != 'B' || *(++ptr) != 'M') { status=2; return; } if (tmpJudulInfo.biClrUsed == 0 && tmpJudulInfo.biBitCount <= 8) warna = (1 << tmpJudulInfo.biBitCount); else warna = tmpJudulInfo.biClrUsed; int byteWarna = sizeof(RGBQUAD)*warna; int bytePiksel = ((tmpJudulInfo.biWidth+3)&~3)*tmpJudulInfo.biHeight; int byteTotal = sizeof(BITMAPINFOHEADER)+byteWarna+bytePiksel; tinggi = tmpJudulInfo.biHeight; lebar = tmpJudulInfo.biWidth; dataDIB = new char[byteTotal]; judulInfo = (BITMAPINFOHEADER*)dataDIB; info = (BITMAPINFO*)dataDIB; quad = (RGBQUAD*) (dataDIB + sizeof(BITMAPINFOHEADER)); piksel = (BYTE*)quad + byteWarna; memcpy(judulInfo, &tmpJudulInfo, sizeof(tmpJudulInfo)); berkasBmp.read((char*)quad, byteWarna); berkasBmp.read((char*)piksel, bytePiksel); }

Pada kode diatas :


CDib::CDib() { status=-1; dataDIB=0; }

adalah definisi konstruktor yang tidak melibatkan argumen. status=-1 berarti berkas belum pernah dimuat. dataDib=0 dataDib tidak menunjuk kemana mana. Konstruktor :
CDib::CDib(char* namaBerkas) { dataDIB=0;

37

Teori Penunjang
muatBerkas(namaBerkas); }

adalah konstruktor yang melibatkan argumen berupa nama berkas. Kode :


CDib::~CDib() { delete [] dataDIB; }

adalah destruktor kelas Cdib. Adapun penjelasan kode pada fungsi muatBerkas() : delete [ ] dataDib; digunakan untuk membebaskan memori yang ditunjuk oleh dataDib sebelum berkas dimuat. dataDib=0; digunakan untuk menyatakan dataDib tidak menunjuk kemana mana. status=0; operasi pemuatan berkas berhasil dilakukan. BITMAPFILEHEADER tmpJudulBerkas; variabel yang berisi data judul berkas bitmap. BITMAPINFOHEADER tmpJudulInfo; berisi data seperti tinggi dan lebar berkas. Ifstream berkasBmp(namaBerkas, ios::binary); digunakan untuk membuka berkas yang namanya tersimpan pada namaBerkas dengan mode biner. If(!berkasBmp.is_open())
{ status=1; return; }

digunakan untuk memberi pesan bahwa berkas tidak ada, dan keluar dari fungsi muatBerkas();.
berkasBmp.read((char*)&tmpJudulBerkas, sizeof (tmpJudulBerkas)); digunakan untuk membaca isi

berkas bitmap sebanyak ukuran tmpJudulBerkas dan diletakkan ke tmpJudulBerkas.


berkasBmp.read((char*)&tmpJudulInfo, sizeof digunakan untuk membaca isi (tmpJudulInfo));

berkas bitmap sebanyak ukuran tmpJudulInfo dan diletakkan ke tmpJudulInfo.

38

Teori Penunjang
char* ptr=(char*) &tmpJudulBerkas.bfType;

digunakan untuk mendeklarasikan pointer ptr yang menunjuk ke tipe char dan ptr dibuat menunjuk anggota data bfType milik tmpJudulBerkas.
if (*ptr != 'B' || *(++ptr) != 'M') { status=2; return; }

digunakan untuk memastikan apakah tanda BM ada pada data bfType.


if (tmpJudulInfo.biClrUsed == 0 && tmpJudulInfo .biBitCount <= 8) warna = (1 <<tmpJudulInfo.biBitCount); else warna = tmpJudulInfo.biClrUsed;

digunakan untuk menentukan jumlah warna yang digunakan. biClrUsed(jumlah warna yang digunakan bitmap), jika bernilai 0 maka pada data biBitCount rumusnya 2
biBitCount

int byteWarna = sizeof(RGBQUAD)*warna;

dipakai untuk menghitung jumlah byte yang digunakan untuk menyimpan informasi warna.
int bytePiksel = ((tmpJudulInfo. biWidth+3)&~3 )*tmpJudulInfo.biHeight;

digunakan untuk menghitung jumlah byte yang digunakan untuk data piksel yang menyusun bitmap.
int byteTotal = sizeof(BITMAPINFOHEADER) +byteWarna+bytePiksel;

digunakan untuk menghitung jumlah total byte yang digunakan oleh bitmap. tinggi = tmpJudulInfo.biHeight; digunakan untuk mengisi variabel anggota tinggi dengan data dari anggota data biheight. lebar = tmpJudulInfo.biWidth; digunakan untuk variabel anggota lebar dengan data dari anggota data biwidth. dataDIB = new char[byteTotal]; digunakan untuk mengalokasikan memori sebesar nilai yang terdapat bytetotal dan kemudian ditunjuk oleh dataDib.

39

Teori Penunjang
judulInfo = (BITMAPINFOHEADER*) dataDIB;

digunakan agar variabel anggota judulinfo menunjuk ke lokasi yang ditunjuk oleh dataDib. info = (BITMAPINFO*)dataDIB; digunakan agar variabel anggota info menunjuk ke lokasi yang ditunjuk oleh dataDib. membuat variabel anggota squad menunjuk ke lokasi palet. piksel = (BYTE*)quad + byteWarna; digunakan untuk membuat variabel anggota piksel menunjuk ke lokasi piksel. digunakan untuk menyalin data pada tmpJudulInfo ke lokasi yang ditunjuk oleh judulInfo.
memcpy(judulInfo, (tmpJudulInfo)); &tmpJudulInfo, sizeof quad = (RGBQUAD*) (dataDIB + (BITMAPINFOHEADER)); digunakan untuk sizeof

berkasBmp.read((char*)quad, byteWarna); berkasBmp.read((char*)piksel, bytePiksel);

3.

4.

digunakan untuk membaca data warna dan piksel dan meletakkannya ke lokasi yang ditunjuk oleh quad dan piksel. Dengan demikian data yang ditunjuk oleh dataDib berisi seluruh data yang berasal dari berkas bitmap. Menambahkan Variabel Anggota pada Aplikasi. Caranya adalah membuka file ....Dlg.h dari aplikasi, lalu tepat dibawah : class Dlg : public Cdialog { tambahkan : private: CDib m_Dib; Kemudian tambahkan : #include dib.h dibawah #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 Menambahkan Kode untuk Kejadian BN_CLICKED Milik Tombol.

40

Teori Penunjang Tambahkan Kode berikut pada fungsi Button : void ...Dlg::OnButton() { m_Dib.muatBerkas(c:\\windows\\Setup.bmp); if(m_Dib.status!=0) { MessageBox(Error); return; } Invalidate(); } Menambahkan Kode pada kejadian WM_PAINT. Tambahkan Kode berikut pada fungsi OnPaint() pada file Dlg.cpp :
void CStructuralFeatureExtractionDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting .. dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); if(m_Dib1.status==0) { CClientDC dc(this); StretchDIBits(dc.m_hDC, 40, 350, 125, 75, 0, 0, m_Dib1.perolehLebar(), m_Dib1.perolehTinggi(), m_Dib1.perolehBit(), m_Dib1.perolehInfo(), DIB_RGB_COLORS, SRCCOPY); } } }

5.

41

Teori Penunjang Penjelasan Kode : CClientDC dc(this); dipakai untuk memperoleh device context dari bagian kotak dialog yang terletak di bawah judul kotak doalog. Pernyataan StretchDIBits() dipakai untuk menggambar bitmap. Perlu diketahui : 1. Parameter 1 : peletakan layar. 2. Parameter 2 : posisi X layar. 3. Parameter 3 : posisi Y layar. 4. Parameter 4 : lebar area layar. 5. Parameter 5 : tinggi area layar. 6. Parameter 6 : posisi X bitmap. 7. Parameter 7 : posisi Y bitmap. 8. Parameter 8 : lebar area bitmap. 9. Parameter 9 : tinggi area bitmap. 10. Parameter 10 : point to pixels in bitmap. 11. Parameter 11 : point to infoBitmap in bitmap. 12. Parameter 12 : menyatakan tabel warna yang digunakan untuk menampilkan bitmap. 13. Parameter 13 : menyatakan operasi penyalinan dari sumber ke tujuan.

42

BAB III PERENCANAAN DAN PEMBUATAN


Pada bab ini pembahasan materi difokuskan pada perencanaan dan pembuatan sistem yang merupakan pokok pembahasan dari Tugas Akhir.

3.1

ALGORITMA SISTEM

Pada pembangunan system untuk Content Based Image Retrieval ini dilakukan ekstraksi fitur terstruktur dengan menggunakan metode Freeman Code dengan proses pencocokan menggunakan metode Euclidean Distance. Proses pertama adalah metode Freeman Code dengan melakukan pencarian titik hitam pertama pada gambar query maupun pada kumpulan gambar, dimana tiap tiap gambar hanya bagian yang diproses. Setelah itu, akan ditelusuri titik hitam tetangga sampai sejumlah data yang diinginkan. Pada penelusuran titik hitam tetangga ini, proses pemilihan diutamakan pada titik yang mempunyai nilai greyscale paling kecil (paling hitam). Hasil dari proses Freeman Code adalah berupa sekumpulan data arah yang selanjutnya akan dilakukan proses kedua yaitu First Different Code sehingga dari data arah berubah menjadi nilai perputaran arah (bobot arah). Bobot arah inilah yang disebut hasil dari proses ekstraksi fitur terstruktur. Dari proses ekstraksi fitur bentuk diatas, secara otomatis akan didapatkan data vektor dari tiap gambar. Dan untuk mengecilkan data tersebut dibutuhkan proses yang disebut sebagai proses normalisasi, dimana proses ini akan menghasilkan data dengan range antara 0 (nol) sampai dengan 1 (satu). Proses-proses diatas dilakukan baik pada gambar query maupun pada gambar yang ada pada sekumpulan gambar. Kemudian dilakukan proses pencocokan (matching) antara gambar query dengan gambar yang ada pada sekumpulan gambar menggunakan metode pencarian nilai jarak yaitu Euclidean Distance. Proses ini bertujuan untuk mencari gambar yang mempunyai content yang sama dengan gambar query. Sebagai hasil dari sistem maka pada dialog aplikasi menampilkan 10 gambar terurut mulai dari yang paling mirip sampai

43

Perencanaan dan Pembuatan yang tidak mirip tapi juga tergantung pada nilai threshold yang dimasukkan. 3.2 BLOK DIAGRAM Blok diagram dari system dapat dilihat pada gambar 3.1

Gambar query

Sekumpulan Gambar

Freeman Code

Freeman Code

First Different Code

First Different Code

Fitur Normalisasi

Fitur Normalisasi

Matching (Euclidean Distance)

Output

Gambar 3.1 Diagram System FREEMAN CODE Metode sederhana untuk merepresentasikan nilai dari sebuah tepi kontur adalah Freeman code (chain code), sebuah metode penelusuran titik hitam terdekat dengan perkiraan tepi kontur bersambung menjadi sederetan angka, masing-masing angka mewakili sebuah arah kontur. Freeman Code biasanya digunakan dalam 4 titik 3.3

44

Perencanaan dan Pembuatan tetangga(4 arah) atau 8 titik tetangga(8 arah). Ilustrasi dari Freeman code terdapat pada gambar 2.

Gambar 3.2 Ilustrasi Freeman code Dari konsep diatas, dapat dikatakan bahwa Freeman Code dapat digunakan pada garis tepi obyek yang berlekuk lekuk dan tertutup (membentuk bangun lingkar). Pada dasarnya, ada 3 parameter untuk melakukan metode Freeman code. Parameter itu adalah : titik hitam pertama (Po), tahap (L) pencarian titik hitam tetangga (menggunakan diagram arah), terakhir adalah mendapatkan Jalur (T4) sebagai fitur berupa sederetan angka(arah Jalur bisa searah jarum jam atau sebaliknya). Digunakan : {Po,L,T4} dalam menyatakan parameterparameter dari Freeman coding. Selanjutnya melihat bagaimana masingmasing parameter menentukan hasil proses dari penelusuran tepi kontur. Memilih titik hitam pertama (Po) dengan cara scanning piksel terhadap warna hitam, diharapkan bisa mendapatkan hasil penelusuran tepi kontur yang sama. L adalah jarak antara titik asal dengan titik tetangga terpilih yang membentuk kontur. Dalam percobaan, nilai L=1 agar representasi bentuk mendapatkan fitur yang akurat.

45

Perencanaan dan Pembuatan Perbedaan hasil dari penelusuran diagram arah pada sistem adalah jelas, apabila {0,1,2,3,4,5,6,7} dibandingkan dengan {4,5,6,7,0,1,2,3} bentuk obyek jelas akan berbeda. Misal :

Gambar 3.3 Perbedaan dalam penelusuran diagram arah Nilai sederetan angka dalam metode Freeman code adalah mewakili arah jalur. Dimana perbedaan nilai dalam Freeman code mencerminkan ciri atau keunikan bentuk obyek pada setiap gambar. Berikut ini adalah implementasi program dari proses metode Freeman Code : 1. Inisialisasi Area gambar yang akan diproses. Untuk meningkatkan performa sistem, maka tidak semua area gambar akan diproses tetapi hanya bagian dari gambar. Maka dari itu perlu dilakukan langkah membagi 2 lebar dan tinggi area gambar. Listing Program :
//Inisialisasi 1/4 lebar gambar int width=(bm.bmWidth)/2,height=(bm.bmHeight)/2;

2.

Pencarian Titik Hitam Pertama Pada langkah kali ini adalah dilakukan scanning titik hitam pertama sebagai acuan penentuan titik hitam berikutnya. Potongan Listing Program :
//Proses Pencarian Titik hitam pertama for(aa=0;aa<width;aa++) { for(bb=0;bb<height;bb++) { w=dcMem.GetPixel(aa,bb); WarnaToRGB(w,&r,&g,&b); s=(r+g+b)/3;

46

Perencanaan dan Pembuatan

if(s<=50) { goto cetak; } } } cetak:

3.

Penelusuran Titik Hitam Tetangga Setelah ditemukan titik hitam pertama, maka langkah selanjutnya adalah menelusuri titik hitam berikutnya sampai sejumlah data arah yang telah ditentukan. Potongan Listing Program :
//Titik Hitam Tetangga mat[0][0]=dcMem.GetPixel(i-rd,j+rd); mat[0][1]=dcMem.GetPixel(i,j+rd); mat[0][2]=dcMem.GetPixel(i+rd,j+rd); mat[1][0]=dcMem.GetPixel(i-rd,j); mat[1][1]=dcMem.GetPixel(i,j); mat[1][2]=dcMem.GetPixel(i+rd,j); mat[2][0]=dcMem.GetPixel(i-rd,j-rd); mat[2][1]=dcMem.GetPixel(i,j-rd); mat[2][2]=dcMem.GetPixel(i+rd,j-rd);

4.

Penyimpanan Data Arah Langkah terakhir dari metode ini adalah mendapatkan sekumpulan data arah dari kontur (chain code). Potongan Listing Program :
//Simpan Hasil chaincode data[inc]=arah;

3.4

FIRST DIFFERENT CODE Setelah mendapatkan kumpulan data arah dari metode FREEMAN CODE, selanjutnya perlu dilakukan pembobotan nilai arah atau dinamakan First Different Code. Proses ini mengacu pada diagram arah dengan berputar berlawanan arah jarum jam.

47

Perencanaan dan Pembuatan

Gambar 3.4 Kalkulasi First Different Code Misal : chaincode : firstdifferent : Penjelasan : {1 0 1 0 3 3 2 2} {3 3 1 3 3 0 3 0} 2 berputar ke 1 = 3 1 berputar ke 0 = 3 0 berputar ke 1 = 1 1 berputar ke 0 = 3 0 berputar ke 3 = 3 3 berputar ke 3 = 0 3 berputar ke 2 = 3 2 berputar ke 2 = 0

Potongan Listing Program :


if(data[itr]==dir[0] && data[itr+1]==dir[0]) {fdcode[itr]=0;} else if(data[itr]==dir[0] && data[itr+1]==dir[1]) {fdcode[itr]=7;} - - - - - - - - - - - - else if(data[itr]==dir[7] && data[itr+1]==dir[6]) {fdcode[itr]=1;} else if(data[itr]==dir[7] && data[itr+1]==dir[7]) {fdcode[itr]=0;}

NORMALISASI DATA Dari proses ekstraksi fitur diatas, secara otomatis akan didapatkan data yang besar. Dan untuk mengecilkan data tersebut dibutuhkan proses yang disebut sebagai proses NormalisasiData. Dimana proses normalisasi ini akan menghasilkan data dengan range antara 0(nol) sampai dengan 1(satu), misal:

3.5

48

Perencanaan dan Pembuatan

A={1,3,5} Maka |A|= 1 +3 +5 |A|= 5,9 A ={1/5,9; 3/5,9; 5/5,9}


2 2 2

Potongan Listing Program :


//Normalisasi Fitur double normal[20], dive=0, vect=0, mean=0; for(int k=0;k<20;k++){ dive=dive+pow(fitur[k],2); } vect=sqrt(dive); //Menghindari hasil tak hingga if(vect==0.00000){ vect=0.00001; } for(int c=0;c<20;c++){ normal[c]=fitur[c]/vect; }

3.6

EUCLIDEAN DISTANCE (Matching) Jarak Euclidean dapat dianggap sebagai jarak yang paling pendek antar dua poin poin, maka dari itu dalam proyek akhir ini digunakan fungsi jarak Euclidean dan pada dasarnya sama halnya dengan persamaan Pythagoras ketika digunakan di dalam dua dimensi. Secara matematis dapat dituliskan di dalam persamaan berikut : d(i,j)= Ket : d(i,j) xi xj = = = nilai jarak nilai nilai pada fitur 1 nilai nilai pada fitur 2

| xi1 x j1 |2 + | xi 2 x j 2 | 2 +.....+ | xip x jp | 2

49

Perencanaan dan Pembuatan Potongan Listing Program :


//Euclidean Distance double euc[632]; for(int fh=0;fh<632;fh++){ euc[fh]=sqrt( pow(fabs(fit0[file-1]-fit0[fh]),2) +pow(fabs(fit1[file-1]-fit1[fh]),2)+ pow(fabs(fit2[file-1]-fit2[fh]),2) +pow(fabs(fit3[file-1]-fit3[fh]),2)+ pow(fabs(fit4[file-1]-fit4[fh]),2) +pow(fabs(fit5[file-1]-fit5[fh]),2)+ pow(fabs(fit6[file-1]-fit6[fh]),2) +pow(fabs(fit7[file-1]-fit7[fh]),2)+ pow(fabs(fit8[file-1]-fit8[fh]),2) +pow(fabs(fit9[file-1]-fit9[fh]),2)+ pow(fabs(fit10[file-1]-fit10[fh]),2) +pow(fabs(fit11[file-1]-fit11[fh]),2)+ pow(fabs(fit12[file-1]-fit12[fh]),2) +pow(fabs(fit13[file-1]-fit13[fh]),2)+ pow(fabs(fit14[file-1]-fit14[fh]),2) +pow(fabs(fit15[file-1]-fit15[fh]),2)+ pow(fabs(fit16[file-1]-fit16[fh]),2) +pow(fabs(fit17[file-1]-fit17[fh]),2)+ pow(fabs(fit18[file-1]-fit18[fh]),2) +pow(fabs(fit19[file-1]-fit19[fh]),2) ); }

Setelah kita mengkalkulasi perhitungan-perhitungan diatas, dalam proyek akhir ini diperlukan suatu inputan yang disebut dengan nilai Threshold, dimana nilai threshold ini yang bisa di inputkan mulai dari 0% sampai dengan 100%, tetapi untuk mendapatkan hasil yang diinginkan maksimal, hanya berkisar 75% hingga 100% terhadap nilai kemiripan.

50

Perencanaan dan Pembuatan

Diagram alir proses matching dapat dilihat pada gambar 3.8 Input nilai threshold

dist

n
If(dist>threshold)

ditolak

y
diterima

Gambar 3.5 Diagram alir matching Nilai tershold dapat ditentukan antara 70% s/d 95%. GAMBAR QUERY Dibawah ini gambar 3.10 adalah contoh-contoh gambar yang dijadikan query dan merupakan sampling dari semua gambar yang ada sekumpulan gambar, yaitu: 3.7

Gambar 3.6 Contoh Image Query

51

Perencanaan dan Pembuatan GRAPHIC USER INTERFACE Dibawah ini gambar 3.11 merupakan tampilan jendela kerja CBIR yang perlu anda ketahui : 3.8

Gambar 3.7 Jendela Kerja CBIR Tabel 3.1 Keterangan GUI Keterangan Tombal Minimize (Minimize Button), untuk memperkecil jendela hingga membentuk icon aktif pada Taskbar. Tombol Maximize (Maximize Button), untuk memperbesar ukuran jendela hingga menjadi satu layar penuh. (disabled) Tombal Close (Close Button), untuk menutup jendela dan mengakhiri program aplikasi. InputBox threshold, pada kotak kecil tersebut harus diberi input dengan angka kisaran 75 sampai 95 (untuk mendapatkan hasil yang diharapkan)

Tombol

52

Perencanaan dan Pembuatan Tombol Image Query, untuk mengambil salah satu ImageQuery dari ImageDatabase. Tombol Search Process, digunakan untuk melakukan proses pencarian gambar berdasarkan ImageQuery yang sudah dipilih. Tombol Exit, digunakan untuk keluar dari program aplikasi Content Based Image Retrieval. Item disamping memberikan informasi mengenai gambar ke berapa yang sudah dipilih untuk menjadi ImageQuery. Item disamping memberikan informasi mengenai gambar hasil (lulus uji Threshold dengan urutan ke-8) sekaligus nilai jarak dengan ImageQuery.

Item disamping memberikan informasi mengenai gambar hasil (tidak lulus uji Threshold dengan urutan ke-9) sekaligus nilai jarak dengan ImageQuery.

53

BAB IV PENGUJIAN DAN ANALISA


Tujuan dari Content Based Image Retrieval System ini adalah untuk mendapatkan kembali gambar yang mempunyai karakteristik yang mirip dengan gambar query. Misalnya gambar query yang berupa gambar ikan pari, maka hasil dari proses tersebut diharapkan semua gambar ikan pari akan tampil. Hal ini bukan berarti gambar yang sama dengan gambar query yang akan tampil, melainkan semua gambar yang mempunyai content atau karakteristik yang sama dengan gambar query yang akan tampil. Sistem CBIR ini dibangun pada spesifikasi PC Pentium IV 1.7 GHz dengan memori 256MB, dan jumlah gambar yang tersedia sebanyak 632 buah. 4.1 HASIL PENGUJIAN PADA GAMBAR PRIMITIF Berikut ini merupakan hasil pengujian dari gambar primitive dengan nilai thresholding 35%, 55%, 75%, 95% antara lain : 4.1.1 Pengujian pada gambar bujur sangkar Hasil pengujian yang disajikan pada thresholding dengan menggunakan query gambar 4.1. dibawah ini, serta nilai dibawah gambar menunjukkan nilai jarak pada masingmasing gambar.

Gambar 4.1 Gambar query bujur sangkar

54

Pengujian dan Analisa Gambar 4.2. hasil pada thresholding 35% gambar bujur sangkar

Gambar 4.3. pada thresholding 55% keatas gambar bujur sangkar Dari hasil diatas dapat disimpulkan bahwa antara gambar bujursangkar dan persegi panjang merupakan memiliki pola yang sama, hanya saja dari keduanya memiliki perbedaan panjang.

4.1.2

Pengujian pada gambar persegi panjang

Hasil pengujian yang disajikan pada thresholding dengan menggunakan query gambar 4.5. dibawah ini, serta nilai dibawah gambar menunjukkan nilai jarak pada masing- masing gambar

Gambar 4.4 Gambar query persegi panjang

Gambar 4.5. hasil pada thresholding 35% gambar persegi panjang

55

Pengujian dan Analisa

Gambar 4.6. hasil pada thresholding 55% keatas gambar persegi panjang Dari hasil yang telah dihasilkan berdasarkan gambar query persegi panjang bahwa antara gambar persegi panjang dan bujursangkar memiliki pola yang sama hanya memiliki perbedaan ukuran pada sisi panjangnya saja.

4.1.3

Pengujian pada gambar segitiga Hasil pengujian yang disajikan pada thresholding dengan menggunakan query gambar 4.9. dibawah ini, serta nilai dibawah gambar menunjukkan nilai jarak pada masing- masing gambar

Gambar 4.7 Gambar query segitiga

Gambar 4.8. hasil pada thresholding 75% keatas gambar segitiga

56

Pengujian dan Analisa

Dari hasil yang didapat, kita dapat melihat antara persegipanjang, bujursangkar, dan lingkaran jelas tidak memiliki pola yang sama dengan bangun segitiga.

4.1.4

Pengujian pada gambar lingkaran

Hasil pengujian yang disajikan pada thresholding dengan menggunakan query gambar 4.11. dibawah ini, serta nilai dibawah gambar menunjukkan nilai jarak pada masing- masing gambar

Gambar 4.9 Gambar query lingkaran

Gambar 4.10. hasil pada thresholding 75% keatas gambar lingkaran Dari sini kita dapat simpulkan bahwasanya antara gambar segitiga, persegi panjang dan bujursangkar tidaklah memiliki pola yang sama.

4.2 HASIL DAN ANALISA PADA PENGUJIAN SISTEM DENGAN PROSES PADA 1/4 BAGIAN GAMBAR Pengujian dilakukan pada empat query., yang masing-masing query akan diuji pada beberapa thresholding yaitu thresholding 35%, 55%, 75%, 95%. Kemudian dari hasil yang didapat tersebut dihitung

57

Pengujian dan Analisa prosentase ketelitiannya pada tiap-tiap thresholding dan dicari rata-rata thresholding yang mempunyai prosentase ketelitian terbesar.

4.2.1 Pengujian Pada Gambar Query Ikan Glodok 4.2.1.1 Hasil Data Yang Didapat Pada Pengujian Query Ikan Glodok Hasil pengujian yang disajikan pada thresholding dengan menggunakan query gambar 4.11 dibawah ini, serta nilai dibawah gambar menunjukkan nilai jarak pada masingmasing gambar.

Gambar 4.11 Gambar query ikan glodok

Gambar 4.12. hasil pada thresholding 35% dari gambar query

Gambar 4.13. hasil pada thresholding 55% dari gambar query

58

Pengujian dan Analisa

Gambar 4.14. hasil pada thresholding 75% dari gambar query

Gambar 4.15. hasil pada thresholding 95% dari gambar query 4.2.1.2 Analisa Pada Hasil Pengujian Dengan Query Ikan Glodok Dari hasil pengujian pada masing-masing thresholding diatas, dihitung prosentase ketelitiannya dengan cara menghitung jumlah gambar yang benar/mirip kemudian dibandingkan dengan jumlah gambar yang seharusnya ada dalam sekumpulan gambar dikalikan seratus persen. Tabel 4.1 dan gambar 4.16 yang merupakan tabel dan grafik dari prosentase ketelitian dari gambar query ikan glodok berdasarkan thresholdingnya. Tabel 4.1 prosentase ketelitian dengan gambar ikan glodok
Query Dengan threshold prosentase ketelitiannya(K) adalah T=35% T=55% T=75% T=95% K=33.3% K=22,2% K=5,5% K=5,5%

59

Pengujian dan Analisa


Jml gmb yg mpy content sama Jml gmb yg salah Jml gb ikan glodok yg ada pada sekumpul an gambar

18

Gambar 4.16. Grafik tingkat ketelitian dengan gambar ikan glodok Berdasarkan grafik dan tabel diatas terjadi penurunan tingkat ketelitian yang begitu drastis yaitu antara thresholding 55% dan 75%. Hal ini dikarenakan kecenderungan dari pola obyek suatu gambar yang begitu kompleks, dan tingkat ketelitian mulai stabil pada tingkat thresholding 75% dan 95%.

4.2.2 Pengujian Pada Gambar Query Ikan Nila 4.2.2.1 Hasil Data Yang Didapat Pada Pengujian Query Ikan Nila

60

Pengujian dan Analisa

Hasil pengujian yang disajikan pada thresholding dengan menggunakan query gambar 4.17 dibawah ini, serta nilai dibawah gambar menunjukkan nilai jarak pada masingmasing gambar.

Gambar 4.17 Gambar query ikan Nila

Gambar 4.18. hasil pada thresholding 35% dari gambar query

Gambar 4.19. hasil pada thresholding 55% dari gambar query

61

Pengujian dan Analisa

Gambar 4.20. hasil pada thresholding 75% dari gambar query

Gambar 4.21. hasil pada thresholding 95% dari gambar query 4.2.2.2 Analisa Pada Hasil Pengujian Dengan Query Ikan Nila Dari hasil pengujian gambar query ikan nila pada masingmasing thresholding diatas, dihitung prosentase ketelitiannya dengan cara menghitung jumlah gambar yang benar/mirip kemudian dibandingkan dengan jumlah gambar yang seharusnya ada dalam sekumpulan gambar dikalikan seratus persen. Tabel 4.2 dan gambar 4.22 yang merupakan tabel dan grafik dari prosentase ketelitian dari gambar query ikan nila berdasarkan thresholdingnya Tabel 4.2 prosentase ketelitian dengan gambar ikan nila
Query Dengan threshold prosentase ketelitiannya(K) adalah T=35% T=55% T=75% T=95% K=50% K=33,3% K=8,3% K=8,3%

62

Pengujian dan Analisa


Jml gmb yg mpy content sama Jml gmb yg salah Jml gb ikan nila yg ada pada sekumpul an gambar

12

Gambar4.22. Grafik tingkat ketelitian dengan gambar ikan nila Berdasarkan data tabel dan grafik diatas, terjadi penurunan tingkat ketelitian hampir dua kali lipat yaitu pada thresholding 35% dan 55%. Karena gambar ikan nila itu sendiri memiliki pola yang begitu banyak artinya memiliki kontur yang beragam dan kemungkinan juga dipengaruhi oleh noise.

4.2.3 Pengujian Pada Gambar Query Ikan Manggasius 4.2.3.1 Hasil Data Yang Didapat Pada Pengujian Query Ikan Manggasius

63

Pengujian dan Analisa

Hasil pengujian yang disajikan pada thresholding dengan menggunakan query gambar 4.23 dibawah ini, serta nilai dibawah gambar menunjukkan nilai jarak pada masing- masing gambar.

Gambar 4.23 Gambar query ikan manggasius

Gambar 4.24. hasil pada thresholding 35% dari gambar query

Gambar 4.25. hasil pada thresholding 55% dari gambar query

Gambar 4.26. hasil pada thresholding 75% dari gambar query

64

Pengujian dan Analisa

Gambar 4.27. hasil pada thresholding 95% dari gambar query 4.2.3.2 Analisa Hasil Pengujian Dengan Query Ikan Manggasius Dari hasil pengujian pada masing-masing thresholding diatas, dihitung prosentase ketelitiannya dengan cara menghitung jumlah gambar yang benar/mirip kemudian dibandingkan dengan jumlah gambar yang seharusnya ada dalam sekumpulan gambar dikalikan seratus persen. Berikut ini tabel 4.3 dan gambar 4.28 yang merupakan tabel dan grafik dari prosentase ketelitian dari gambar query ikan manggasius berdasarkan thresholdingnya. Tabel 4.3 prosentase ketelitian dengan gambar ikan manggasius
Query Dengan threshold prosentase ketelitiannya(K) adalah T=35% T=55% T=75% T=95% K=25% Jml gmb yg mpy content sama Jml gmb yg salah Jml gb ikan nila yg ada pd sekumpul an gambar K=25% K=18,7% K=18,7%

16

65

Pengujian dan Analisa

Gambar 4.28. Grafik tingkat ketelitian dengan gambar query ikan manggasius Dari sini disimpulkan bahwa pola yang dimiliki oleh gambar ikan manggasius dan ikan glodok cenderung hampir sama yaitu berekor cabang memanjang, sehingga pada penyeleksian queri gambar ikan manggasius, maka gambar ikan glodok juga dapat terseleksi. Untuk gambar hasil 1-5 mempunyai jarak 0 dengan gambar query, ini disebabkan oleh terjadinya error dalam penelusuran chaincode (proses Freeman code). Bentuk error bisa berupa kontur obyek terputus atau terdapat banyak noise pada gambar.

4.2.4 Pengujian Pada Gambar Query Ikan Mujaer 4.2.4.1 Hasil Data Yang Didapat Pada Pengujian Query Ikan Mujaer Hasil pengujian yang disajikan pada thresholding dengan menggunakan query gambar 4.29 dibawah ini, serta nilai dibawah gambar menunjukkan nilai jarak pada masing- masing gambar.

Gambar 4.29 Gambar query Ikan Mujaer

66

Pengujian dan Analisa

Gambar4.30. hasil pada thresholding 35% dari gambar query

Gambar4.31. hasil pada thresholding 55% dari gambar query

Gambar4.32. hasil pada thresholding 75% dari gambar query

Gambar4.33. hasil pada thresholding 95% dari gambar query

67

Pengujian dan Analisa

4.2.4.2 Analisa Pada Hasil Pengujian Dengan Query Ikan Mujaer Dari hasil pengujian pada masing-masing thresholding diatas, dihitung prosentase ketelitiannya dengan cara menghitung jumlah gambar yang benar/mirip kemudian dibandingkan dengan jumlah gambar yang seharusnya ada dalam sekumpulan gambar dikalikan seratus persen. Berikut ini tabel 4.4 dan gambar 4.34 yang merupakan tabel dan grafik dari prosentase ketelitian dari gambar query berdasarkan thresholdingnya. Tabel 4.4 prosentase ketelitian dengan gambar ikan mujaer
Query Dengan threshold prosentase ketelitiannya(K) adalah T=35% T=55% T=75% T=95% K=53,3% Jml gmb yg mpy content sama Jml gmb yg salah Jml gb ikan mujaer yg ada pd sekumpul an gambar K=26,6% K=6,6% K=6,6%

15

68

Pengujian dan Analisa

Gambar4.34. Grafik tingkat ketelitian dengan gambar query ikan mujaer Dari hasil yang didapat dengan gambar query ikan mujaer, terdapat output gambar ikan hiu. Ini dikarenakan pola kontur ikan hiu yang mulutnya mirip dengan ekor ikan mujaer. Hal yang sama ada pada ikan mas yang mempunyai ekor mirip dengan ekor ikan mujaer.

Tabel 4.5 Rata-rata prosentase ketelitian gambar berdasarkan tingkat thresholding Tingkat Thresholding Ratarata Ketelitian 35% 40,4% 55% 26.7% 75% 9,7% 95% 9,7%

Gambar 4.35. Rata-rata posentase ketelitian gambar berdasarkan tingkat thresholding

69

Pengujian dan Analisa Dari beberapa pengujian tersebut, juga dapat diketahui bahwa semakin besar tingkat nilai thresholding maka semakin sedikit gambar yang dihasilkan, sehingga menyebabkan gambar yang sesuai dengan gambar query semakin sedikit pula. Hal ini dapat dilihat pada thresholding kira-kira 95% keatas, rata-rata gambar yang sesuai dengan gambar query jumlahnya satu yaitu query itu sendiri. Sehingga nilai prosentase ketelitiannya pun kecil. Bila yang dihasilkan hanya gambar query itu sendiri, sebenarnya gambar yang dihasilkan tersebut itu salah, karena tujuan dari CBIR adalah untuk mendapatkan gambar yang mempunyai content sama, bukan gambar query itu sendiri. Begitu juga sebaliknya, semakin kecil tingkat thresholding maka semakin banyak gambar yang dihasilkan. Hal ini dapat menyebabkan jumlah gambar yang sesuai juga semakin banyak.

70

Pengujian dan Analisa 4.3 HASIL DAN ANALISA PADA PENGUJIAN SISTEM DENGAN PROSES PADA SELURUH BAGIAN GAMBAR Pengujian dilakukan pada empat query, yang masing-masing query akan diuji pada beberapa thresholding yaitu thresholding 35%, 55%, 75%, 95%. Kemudian dari hasil yang didapat tersebut dihitung prosentase ketelitiannya pada tiap-tiap thresholding dan dicari rata-rata thresholding yang mempunyai prosentase ketelitian terbesar.

4.3.1 Pengujian Pada Gambar Query Ikan Glodok 4.3.1.1 Hasil Data Didapat Pada Pengujian Query Ikan Glodok Hasil pengujian yang disajikan pada thresholding dengan menggunakan query gambar dibawah ini, serta nilai dibawah gambar menunjukkan nilai jarak pada masing- masing gambar.

Gambar 4.36 query ikan glodok

Gambar 4.37 hasil pada thresholding 35% dari gambar query

71

Pengujian dan Analisa

Gambar 4.38 hasil pada thresholding 55% dari gambar query

Gambar 4.39 hasil pada thresholding 75% dari gambar query

Gambar 4.40 hasil pada thresholding 95% dari gambar query 4.3.1.2 Analisa Pada Hasil Pengujian Dengan Query Ikan Glodok Dari hasil pengujian pada masing-masing thresholding diatas, dihitung prosentase ketelitiannya dengan cara menghitung jumlah gambar yang benar/mirip kemudian dibandingkan dengan jumlah gambar yang seharusnya ada dalam sekumpulan gambar dikalikan seratus persen. Tabel dari prosentase ketelitian dari gambar query ikan glodok berdasarkan thresholdingnya.

72

Pengujian dan Analisa Tabel 4.6 prosentase ketelitian dengan gambar ikan glodok
Query Dengan threshold prosentase ketelitiannya(K) adalah T=35% T=55% T=75% T=95% K=27.7% Jml gmb yg mpy content sama Jml gmb yg salah Jml gb ikan glodok yg ada pada sekumpul an gambar K=22,2% K=5,5% K=5,5%

18

Gambar 4.41 Grafik tingkat ketelitian dengan gambar ikan glodok Berdasarkan Tabel dan Grafik diatas terjadi penurunan tingkat ketelitian yang begitu drastis yaitu antara thresholding 55% dan 75%. Hal ini dikarenakan kecenderungan dari pola obyek suatu gambar yang begitu kompleks, dan tingkat ketelitian mulai stabil pada tingkat thresholding 75% dan 95%.

73

Pengujian dan Analisa 4.3.2 Pengujian Pada Gambar Query Ikan Nila 4.3.2.1 Hasil Data Yang Didapat Pada Pengujian Query Ikan Nila Hasil pengujian yang disajikan pada thresholding dengan menggunakan query gambar dibawah ini, serta nilai dibawah gambar menunjukkan nilai jarak pada masing- masing gambar.

Gambar 4.42 query ikan Nila

Gambar 4.43 hasil pada thresholding 35% dari gambar query

Gambar 4.44 hasil pada thresholding 55% dari gambar query

74

Pengujian dan Analisa

Gambar 4.45 hasil pada thresholding 75% dari gambar query

Gambar 4.46 hasil pada thresholding 95% dari gambar query 4.3.2.2 Analisa Pada Hasil Pengujian Dengan Query Ikan Nila Dari hasil pengujian gambar query ikan nila pada masingmasing thresholding diatas, dihitung prosentase ketelitiannya dengan cara menghitung jumlah gambar yang benar/mirip kemudian dibandingkan dengan jumlah gambar yang seharusnya ada dalam sekumpulan gambar dikalikan seratus persen. Tabel dari prosentase ketelitian dari gambar query ikan nila berdasarkan thresholdingnya Tabel 4.7 prosentase ketelitian dengan gambar ikan nila
Query Dengan threshold prosentase ketelitiannya(K) adalah T=35% T=55% T=75% T=95% K=16,6% K=8,3% K=8,3% K=8,3%

75

Pengujian dan Analisa


Jml gmb yg mpy content sama Jml gmb yg salah Jml gb ikan nila yg ada pada sekumpul an gambar

12

Gambar 4.47 Grafik tingkat ketelitian dengan gambar ikan nila Berdasarkan tabel dan grafik diatas, terjadi penurunan tingkat ketelitian dua kali lipat yaitu pada thresholding 35% dan 55%. Karena gambar ikan nila itu sendiri memiliki pola yang begitu banyak artinya memiliki kontur yang beragam dan kemungkinan juga dipengaruhi oleh noise. Sehingga menyebabkan tingkat ketelitian yang diperoleh dari percobaan juga masih sangat kecil.

4.3.3

Pengujian Pada Gambar Query Ikan Manggasius

76

Pengujian dan Analisa 4.3.3.1 Hasil Data Yang Didapat Pada Pengujian Query Ikan Manggasius

Hasil pengujian yang disajikan pada thresholding dengan menggunakan query gambar dibawah ini, serta nilai dibawah gambar menunjukkan nilai jarak pada masing- masing gambar.

Gambar 4.48 query ikan manggasius

Gambar 4.49 hasil pada thresholding 35% dari gambar query

Gambar 4.50 hasil pada thresholding 55% dari gambar query

77

Pengujian dan Analisa Gambar 4.51 hasil pada thresholding 75% dari gambar query

Gambar 4.52 hasil pada thresholding 95% dari gambar query 4.3.3.2 Analisa Hasil Pengujian Dengan Query Ikan Manggasius Dari hasil pengujian pada masing-masing thresholding diatas, dihitung prosentase ketelitiannya dengan cara menghitung jumlah gambar yang benar/mirip kemudian dibandingkan dengan jumlah gambar yang seharusnya ada dalam sekumpulan gambar dikalikan seratus persen. Tabel dari prosentase ketelitian dari gambar query ikan manggasius berdasarkan thresholdingnya. Tabel 4.8 prosentase ketelitian dengan gambar ikan manggasius
Query Dengan threshold prosentase ketelitiannya(K) adalah T=35% T=55% T=75% T=95% K=37,5% Jml gmb yg mpy content sama Jml gmb yg salah Jml gb ikan nila yg ada pd sekumpul an gambar K=37,5% K=18,7% K=18,7%

16

78

Pengujian dan Analisa

Gambar 4.53 Grafik tingkat ketelitian dengan gambar query ikan manggasius Dari percobaan diatas diketahui bahwa pola yang dimiliki oleh gambar ikan manggasius dan ikan glodok cenderung hampir sama yaitu berekor cabang memanjang, sehingga pada penyeleksian queri gambar ikan manggasius, maka gambar ikan glodok juga dapat terseleksi. Untuk gambar hasil 1-5 mempunyai jarak 0 dengan gambar query, ini disebabkan oleh terjadinya error dalam penelusuran chaincode (proses Freeman code). Bentuk error bisa berupa kontur obyek terputus atau terdapat banyak noise pada gambar.

4.3.4 Pengujian Pada Gambar Query Ikan Mujaer 4.3.4.1 Hasil Data Didapat Pada Pengujian Query Ikan Mujaer Hasil pengujian yang disajikan pada thresholding dengan menggunakan query gambar dibawah ini, serta nilai dibawah gambar menunjukkan nilai jarak pada masing- masing gambar.

Gambar 4.54 query Ikan Mujaer

79

Pengujian dan Analisa

Gambar 4.55 hasil pada thresholding 35% dari gambar query

Gambar 4.56 hasil pada thresholding 55% dari gambar query

Gambar 4.57 hasil pada thresholding 75% dari gambar query

Gambar 4.58 hasil pada thresholding 95% dari gambar query

80

Pengujian dan Analisa 4.3.4.2 Analisa Pada Hasil Pengujian Dengan Query Ikan Mujaer Dari hasil pengujian pada masing-masing thresholding diatas, dihitung prosentase ketelitiannya dengan cara menghitung jumlah gambar yang benar/mirip kemudian dibandingkan dengan jumlah gambar yang seharusnya ada dalam sekumpulan gambar dikalikan seratus persen. Tabel dari prosentase ketelitian dari gambar query berdasarkan thresholdingnya. Tabel 4.9 prosentase ketelitian dengan gambar ikan mujaer
Query Dengan threshold prosentase ketelitiannya(K) adalah T=35% T=55% T=75% T=95% K=40% Jml gmb yg mpy content sama Jml gmb yg salah Jml gb ikan mujaer yg ada pd sekumpul an gambar K=20% K=6,6% K=6,6%

15

81

Pengujian dan Analisa Gambar 4.59 Grafik tingkat ketelitian dengan gambar query ikan mujaer

Dari hasil yang didapat dengan gambar query ikan mujaer, terdapat output gambar ikan hiu. Ini dikarenakan pola kontur ikan hiu yang mulutnya mirip dengan ekor ikan mujaer. Hal yang sama ada pada ikan mas yang mempunyai ekor mirip dengan ekor ikan mujaer.

Tabel 4.10 Rata-rata prosentase ketelitian gambar berdasarkan tingkat thresholding pada proses keseluruhan luas gambar Tingkat Thresholding Ratarata Ketelitian 35% 30,45% 55% 22% 75% 9,7% 95% 9,7%

Gambar 4.60 Rata-rata posentase ketelitian gambar berdasarkan tingkat thresholding pada proses keseluruhan luas gambar

82

Pengujian dan Analisa Tabel 4.11 Rata-rata prosentase ketelitian gambar berdasarkan tingkat thresholding pada proses luas gambar Tingkat Thresholding Ratarata Ketelitian 35% 40,4% 55% 26.7% 75% 9,7% 95% 9,7%

Gambar 4.61 Rata-rata posentase ketelitian gambar berdasarkan tingkat thresholding pada proses luas gambar Dari kedua tabel diatas, terdapat selisih nilai persentase kemiripan, dimana proses CBIR pada luas gambar menghasilkan nilai prosentase ketelitian lebih tinggi daripada proses keseluruhan luas gambar. Ini menunjukkan bahwa tidak memproses keseluruhan luas gambar mempunyai beberapa keuntungan yaitu adanya starting point yang jelas dan dapat meningkatkan performa kerja sistem.

83

BAB V KESIMPULAN DAN SARAN


5.1 KESIMPULAN

Berdasarkan hasil pengujian yang dilakukan pada proyek akhir ini, maka disimpulkan bahwa: 1. Pada pengujian yang dilakukan, nilai rata-rata prosentase ketelitian terbesar berada pada tingkat thresholding 35%. 2. Retrieval berdasarkan shape feature atau fitur bentuk hanya dapat mengenali gambar yang mempunyai kemiripan pola bentuknya saja. Hal ini dapat dilihat pada query ikan mujaer, dimana memiliki pola yang hampir sama dengan ikan hiu tepatnya posisi antara bagian ekor mujaer dan bagian mulut ikan hiu. 3. Langkah langkah yang telah ditambahkan untuk meningkatkan performa sistem CBIR ini yaitu dengan memproses bagian dari gambar, selalu mengambil titik paling hitam dalam penelusuran chaincode dan mengambil 20 data penelusuran kontur (panjang chaincode).

5.2

SARAN Hasil yang dicapai dari proyek akhir ini jauh dari sempurna, karena hanya menggunakan fitur bentuk berupa kode rantai (chaincode) yang dihasilkan oleh metode Freeman Code dan First Different Code. Sehingga nilai prosentase ketelitian dari data yang dihasilkan kecil. Oleh karena itu untuk meningkatkan hasil yang dicapai, maka diperlukan tambahan metode lain yang membuat hasil lebih akurat seperti teknik Shape Feature Generations (untuk menghilangkan noise dan melakukan transformasi bentuk obyek pada gambar). Gambar yang dipakai pada proyek akhir ini menggunakan gambar sketsa obyek, maka untuk selanjutnya dapat dilakukan penelitian pada gambar obyek nyata sehingga perlu dilakukan langkah preprocessing pada gambar.

84

DAFTAR PUSTAKA [1]. Bach, J.R., Fuller, C., Gupta, A., Hampapur, A., Horowitz, B., Humphrey, R., Jain, R., and Shu, C.F.The Virage Image Search Engine: An Open Framework for Image Management, In Proc. Storage and Retrieval for Still Image and Video Databases IV, SPIE, San Diego, CA, 1996, Vol. 2670, 76-87. [2]. Flickner, M., et al. Query by Image and Video Content: The QBIC System. Computer, September1995. [3]. Howarth Peter, Yavlinsky Alexei, Heesch Daniel, Rger Stefan Visual Features for Content-based Medical Image Retrieval, Imperial college London, 2004 http://km.doc.ic.ac.uk [4]. Jhne, B. Digital Image Processing - Concepts, Algorithms, and Scientific Applications. 4th Edition, Springer, 1997. [5]. Khoshafian, S., and Baker, A.B. Multimedia and imaging databases, Morgan Kaufmann, San Francisco, California, 1996. [6]. Li Dalong, Simske Steven Shape retrieval with flat contour segments, Intelligent Enterprise Technologies Lab HP Laboratories Palo Alto, 2002 [7]. Nastar, C., Mitschke, M., Meilhac, C., and Boujemaa, N. Surfimage: a Flexible Content-Based ImageRetrieval System. The 6th ACM Int'l Multimedia Conf. (MM'98), Bristol, England, September 1998, 339-344. [8]. Pentland, A., Picard, R.W., and Sclaroff, S. Photobook: Tools for Content-Based Manipulation of Image Databases, Proc. Storage and Retrieval for Image and Video Databases, SPIE, Bellingham,Washington, 1994, Vol. 2, 34-47. [9]. Rui, Y., Huang, T.S., Mehrotra, S., and Ortega, M. A Relevance Feedback Architecture in Content-Based Multimedia Information Retrieval Systems, Proc. IEEE Workshop Content-Based Access of Image and Video Libraries, IEEE, 1997. [10]. Kadir, Abdul. Panduan Pemrograman Visual C++, ANDI Yogyakarta, 2004. [11]. Smith, J.R., and Chang, S.F. VisualSEEK: a fully automated content-based image query system,ACM Multimedia'96, November 1996. [12]. Sigit, Riyanto. Modul Praktikum Image Processing VC++ dengan MFC, PENS-ITS Surabaya.

CURRICULUM VITAE Name Address Gender Telephone Nationality Birth Email Education No 1 Dates 2002 2004 2004 2007 2002 2003 School / Course SMU Negeri 2 Jombang EEPIS ITS 2 Surabaya (D III Information Technology) 3 LEC (living English Course) Jombang informal formal Status formal :BAYU BAGUS :Jl Supriadi 01 :Male :(0321) 711383 :Indonesian :Jombang, August 16th 1985 :brugg_man04@yahoo.com

Ngoro Jombang

Qualifications

2003

Java Bali Agritech English Debate Web Designer Workshop (using Ulead Photo Impact 10) English Presentation Competition and Fun 2

2006

2007

Working Experience No 1 2 Dates 2005 2007 2005 Description Training center of EEPIS - ITS ITC 2005 of EEPIS - ITS Monitoring 3 2006 Application System in PT PJB Surabaya Technical Support Software Developer Position Technician

Вам также может понравиться