IMAGE RETRIEVAL BERDASARKAN WARNA DAN BENTUK DENGAN METODE COLOR HISTOGRAM DAN INTEGRATED REGION MATCHING TUGAS AKHIR
Disusun Oleh : MUHAMMAD SADLI 1210444
PROGRAM STUDI TEKNIK INFORMATIKA SEKOLAH TINGGI TEKNOLOGI INDONESIA TANJUNGPINANG TANJUNGPINANG 2014
IMAGE RETRIEVAL BERDASARKAN WARNA DAN BENTUK DENGAN METODE COLOR HISTOGRAM DAN INTEGRATED REGION MATCHING TUGAS AKHIR Diajukan untuk memenuhi salah satu syarat kelulusan memperoleh gelar sarjana Program studi teknik informatika Disusun Oleh : MUHAMMAD SADLI 1210444
PROGRAM STUDI TEKNIK INFORMATIKA SEKOLAH TINGGI TEKNOLOGI INDONESIA TANJUNGPINANG TANJUNGPINANG 2014
KATA PENGANTAR
Puji dan syukur penulis panjatkan kepada Allah SWT yang telah melimpahkan berkah dan rahmat-Nya sehingga penulis dapat menyelesaikan penulisan laporan skripsi ini. Penyusunan laporan ini berdasarkan atas pengamatan penulis selama melaksanakan skripsi ini, penulis memutuskan untuk menyusun laporan dengan judul “Image Retrieval berdasarkan Warna dan Bentuk Dengan Metode Color Histogram dan Integrated Region Matching”. Penulis menyadari bahwa banyaknya hambatan dan kesulitan yang dihadapi oleh penulis dalam penyusunan laporan skripsi ini, namun atas dukungan dari berbagai pihak akhirnya laporan ini dapat diselesaikan dan semoga sesuai dengan yang diharapkan. Dalam kesempatan ini penulis ingin menyampaikan ucapan terima kasih kepada pihak – pihak yang telah memberikan dukungan kepada penulis baik moril maupun materil dalam penyelesaian skripsi ini, yaitu :
1. Bapak H.M.Louis Frederik, SE., SH., MM selaku Ketua Sekolah Tinggi Teknologi Indonesia Tanjungpinang. 2. Ibu Ade Winarni ST., MT. selaku dosen pembimbing I yang telah memberikan masukan dan materi untuk menyelesaikan skripsi ini.
i
3. Ibu Hety Mulyani ST, selaku dosen pembimbing II yang telah membantu terselesaikan laporan skripsi ini. 4. Bapak/Ibu Dosen STTI yang telah memberikan inspirasi kepada penulis, serta memberikan semangat dan motivasi agar dapat menyelesaikan penulisan skripsi ini. 5. Orang tua yang tercinta dan selalu memberikan semangat, kasih sayang, do’a serta dukungan moral maupun materiil. 6. Teman – teman jurusan Teknik Informatika khususnya angkatan 2010 yang seperjuangan dalam menimba ilmu. 7. Kepada semua pihak yang tidak dapat penulis sebutkan satu persatu yang telah banyak memberikan doa dan motivasi kepada penulis.
Penulis menyadari sepenuhnya bahwa laporan skripsi ini jauh dari sempurna dan masih terdapat kekurangan sehingga penulis sangat mengharapkan kritik dan saran dari semua pihak guna menambah wawasan ilmu yang nantinya bermanfaat bagi penulis dan para pembaca dimasa yang akan datang. Akhir kata semoga laporan skripsi ini dapat bermanfaat dan berguna bagi penulis, para pembaca serta pihak yang membutuhkan.
Tanjungpinang, September 2014 Penulis
ii
ABTRAK
Citra memiliki bentuk dan warna yang sangat beragam. Hal ini menyebabkan sulitnya dilakukan pencarian suatu citra berbasis aplikasi. Ekstraksi warna merupakan salah satu proses yang paling penting pada temu kembali berbasis citra. Penelitian ini akan mengimplementasikan image retrieval atau disebut juga temu kembali citra, yang berdasarkan warna, dimana warna menggunakan metode histogram warna untuk pengindeksan warna citra. Dengan pemanfaatan nilai pada warna red green dan blue (RGB), yang tiap nilai warna akan diperhitungkan besarannya. Penelitian ini juga mengembangkan penggabungan teknik bentuk dengan menerapkan metode kesamaan daerah yang terintegrasi, atau integrated region matching (IRM). Dan sebagai bahan perbandingan, penelitian bentuk juga menggunakan pendekatan jarak deteksi tepi yang memanfaatkan pengukuran jarak euclidean. Evaluasi hasil temu kembali dengan memunculkan citra kandidat hasil sebagai temuan hasil akhirnya. Yang perbandingan dilakukan terhadap nilai indeks yang ada pada citra yang ingin dicari dengan citra yang ada pada basis data, berupa penyeleksian citra pada basis data. Berdasarkan penelitian ini, metode yang digunakan akan dianggap valid ketika nilai kandidat akhir berkisar 70% sampe 100% nilai kesamaan indeksnya. Kata kunci : Temu kembali citra, citra, nilai indeks, histogram, warna, RGB, bentuk, IRM, deteksi tepi, perbandingan, seleksi
iii
ABTRACT
The image has a shape and color that is very diverse. This causes difficulty conducted an image-based search applications. Extraction of color is one of the most important processes in image-based retrieval. This study will implement the image retrieval or also known as image retrieval, which is based on color, where the color using the color histogram method for color image indexing. By exploiting the value of the color red green and blue (RGB), which each color value will be calculated amount. This study also developed a form of incorporation technique by applying integrated methods in common areas, or integrated region matching (IRM). And as a comparison, the study also forms the edge detection approach that utilizes distance measurement euclidean distance. Evaluation of retrieval results by projecting the image of the candidate as a result finding the end result. That comparison is performed against the index value on the image to search with the existing image in the database, such as the selection of images in the database. Based on this study, the method used will be considered valid when the value of the final candidates ranges from 70% till 100% similarity index value. key word : Image retrieval, image, index values, histograms, color, RGB, shape, IRM, edge detection, comparison, selection
iv
DAFTAR ISI HALAMAN JUDUL ............................................................................................. HALAMAN PERSETUJUAN ............................................................................. HALAMAN PENGESAHAAN ............................................................................ HALAMAN PERNYATAAN KEASLIAN......................................................... KATA PENGANTAR.......................................................................................... i ABSTRAK .......................................................................................................... iii ABSTRACT ........................................................................................................ iv DAFTAR ISI........................................................................................................ v DAFTAR GAMBAR.......................................................................................... ix DAFTAR TABEL .............................................................................................. xi DAFTAR SIMBOL ........................................................................................... xii BAB I PENDAHULUAN.................................................................................... 1 Latar Belakang ..................................................................................................... 1 Identifikasi masalah .............................................................................................. 2 Batasan Masalah.................................................................................................... 2 Tujuan Dan Manfaat ............................................................................................ 3 Metodologi Penelitian .......................................................................................... 3 Metode Pengumpulan Data ................................................................................... 4 Metode Pengembangan Perangkat Lunak ............................................................. 4
v
Perencanaan Jadwal .............................................................................................. 6 Sistematika Penulisan ........................................................................................... 7 BAB II LANDASAN TEORI ........................................................................... 10 Konsep Dasar Sistem .......................................................................................... 10 Definisi Sistem .................................................................................................... 10 Karakteristik Sistem ............................................................................................ 11 Konsep Basis Data ............................................................................................. 12 Pengertian Citra dan Warna ............................................................................... 15 Citra .................................................................................................................... 15 Warna ................................................................................................................. 16 Temu kembali Citra ............................................................................................ 16 Histogram Warna (color histogram) .................................................................. 18 Pengertian Histogram Warna ............................................................................. 18 Pencocokan Histogram (Histogram Matching) ................................................. 20 Feature matching and indexing ......................................................................... 21 Bentuk ................................................................................................................ 22 Deteksi Tepi dengan Operator Prewitt ............................................................... 22 Integrated Region Matching .............................................................................. 23 Perhitungan Geometris Euclidean Space ........................................................... 25 Perancangan Terstruktur .................................................................................... 27
vi
Data Flow Diagram (DFD) .............................................................................. 27 Flowchart ........................................................................................................... 28 Perangkat Lunak Pembangun Sistem.................................................................. 28 Borland Delphi 7 ................................................................................................. 28 Microsoft Office Access ..................................................................................... 30 BAB III ANALISA SISTEM............................................................................ 33 Analisa Sistem..................................................................................................... 33 Analisa Citra........................................................................................................ 33 Analisa Histogram Warna ................................................................................... 34 Contoh Kasus Histogram Warna......................................................................... 35 Contoh Kasus Histogram Matching .................................................................... 39 Analisa Bentuk ................................................................................................... 46 Deteksi Tepi ........................................................................................................ 46 Integrated Region Matching ............................................................................... 46 Analisa Waktu Pemrosesan................................................................................. 50 Analisa Kebutuhan Sistem .................................................................................. 52 Kebutuhan Perangkat Keras................................................................................ 53 Kebutuhan Perangkat Lunak ............................................................................... 53 BAB IV PERANCANGAN SISTEM............................................................... 54 Perancangan Sistem ............................................................................................ 54
vii
Tujuan Perancangan Perangkat Lunak................................................................ 54 Flowchart ............................................................................................................ 55 Diagram Konteks ................................................................................................ 57 Data Flow Diagram ............................................................................................. 59 Rancangan Struktur Program .............................................................................. 62 Rancangan Input.................................................................................................. 63 BAB V IMPLEMENTASI SISTEM................................................................ 64 Definisi Implementasi Sistem ............................................................................. 64 Tujuan Implementasi Sistem............................................................................... 64 Pemilihan Bahasa Pemrograman......................................................................... 65 Fasilitas Program................................................................................................. 66 Kegiatan Implementasi........................................................................................ 67 Kebutuhan Sistem Pengoprasian......................................................................... 71 Kebutuhan Perangkat Keras................................................................................ 73 Kebutuhan Perangkat Lunak ............................................................................... 73 Pemakai (Brainware) .......................................................................................... 74 BAB VI PENUTUP ........................................................................................... 75 Kesimpulan ......................................................................................................... 75 Saran.................................................................................................................... 76 DAFTAR PUSTAKA
viii
LAMPIRAN
ix
DAFTAR GAMBAR
Gambar 1.1 Paradigma Waterfall ( Nugroho,2005) ...............................................5 Gambar 3.1 Gambar citra masukan ......................................................................36 Gambar 3.2 Gambar citra referensi untuk perbandingan warna ..........................40 Gambar 3.3 Gambar citra kandidat berdasarkan histogram .................................45 Gambar 3.4 Gambar hasil deteksi tepi .................................................................46 Gambar 4.1 Flowchart pada citra gambar............................................................56 Gambar 4.2 Flowchart image retrieval berdasarkan histogram ...........................57 Gambar 4.3 Flowchart image retrieval berdasarkan bentuk ...............................58 Gambar 4.4 Diagram konteks temu kembali citra ................................................59 Gambar 4.5 DFD level 0 temu kembali citra ......................................................60 Gambar 4.6 DFD level 1 Proses hitung nilai vektor ke Tabel_temp ...................60 Gambar 4.7 DFD level 2 Proses hitung nilai vektor ke Tabel_data ....................61 Gambar 4.8 DFD level 3 Proses perbandingan nilai pada citra ............................62 Gambar 4.9 Struktur program ...............................................................................62 Gambar 4.10 Perancangan form input....................................................................63 Gambar 4.11 Perancangan form database .............................................................63 Gambar 5.1 Gambar penginputan citra pada aplikasi ...........................................69 Gambar 5.2 Gambar penyimpanan citra ...............................................................70
ix
Gambar 5.3 Gambar citra pada basis data.............................................................70 Gambar 5.4 Proses temu kembali citra .................................................................71 Gambar 5.4 Proses temu kembali citra .................................................................71 Gambar 5.5 Grafik waktu proses berdasarkan warna ...........................................72 Gambar 5.6 Grafik waktu proses berdasarkan bentuk ..........................................72
x
DAFTAR TABEL
Tabel 1.1 Jadwal Penelitian.....................................................................................6 Tabel 2.1 Histogram Warna ..................................................................................20 Tabel 3.1 Tabel histogram warna..........................................................................37 Tabel 3.2 Tabel normalisasi histogram warna ......................................................38 Tabel 3.3 Tabel histogram warna pada ‘0.bmp’ ....................................................41 Tabel 3.4 Tabel histogram warna pada ‘1.bmp’ ....................................................41 Tabel 3.5 Tabel histogram warna pada ‘2.bmp’ ....................................................41 Tabel 3.5 Tabel waktu proses.................................................................................51 Tabel 5.1 Hasil implementasi basis data ................................................................67 Tabel 5.2 Hasil Pengujian Blackbox ......................................................................68 Tabel 5.3 Waktu proses berdasarkan warna...........................................................72 Tabel 5.4 Waktu proses berdasarkan bentuk..........................................................72
xi
DAFTAR SIMBOL
1. DAFTAR SIMBOL DATA FLOW DIAGRAM ARTI PENGGUNAAN
SIMBOL
Proses : menunjukan proses yang dilakukan baik secara manual ataupun komputer
Entitas : Sumber luar ataupun tujuan luar yang dapat berupa orang atau organisasi kemudian melakukan interaksi dengan sistem
Aliran data : menunjukan arah proses
Penyimpanan data : menunjukan arah store
Sumber: (Prof.Dr. Jogiyanto HM,MBA,Akt. (2010:700), Analisis & Desain).
xii
2. DAFTAR SIMBOL FLOWCHART DIAGRAM ARTI PENGGUNAAN
SIMBOL
Terminator : menunjukkan awal dan akhir dari suatu alur program flowchart Proses : menunjukan proses yang dilakukan komputer seperti perhitungan aritmatik atau penulisan suatu formula Data input ouput : menunjukkan sumber data yang akan diproses atau data yang akan dicetak
Flow : menunjukan jalan nya suatu proses Direct access storage : menunjukkan media penyimpanan data yang dapat dibaca / disimpan secara acak Decision : menunjukan suatu proses evaluasi atau pemeriksaan terhadap nilai data dengan operator relasi Connector : menunjukkan tanda sambungan dari suatu flowchart pada satu halaman
xiii
BAB I PENDAHULUAN 1.1
Latar Belakang
Dewasa ini teknologi pengolahan gambar semakin banyak diaplikasikan, antara lain untuk sistem pengenalan citra, sistem pencarian dan pengindeksan pada database citra digital, sistem keamanan kontrol akses area terbatas, dan interaksi manusia dengan komputer. Dalam bidang penelitian pemrosesan gambar (image processing), pendeteksian gambar (image detection) adalah salah satu tahap awal yang sangat penting di dalam proses pengenalan suatu gambar (image recognition). Sistem pengenalan citra digunakan untuk membandingkan satu citra masukan dengan suatu data gambar dan menghasilkan gambar yang paling cocok dengan citra tersebut jika ada. Sedangkan autentikasi gambar (image authentication) digunakan untuk menguji keaslian/kesamaan suatu citra dengan data gambar yang telah diinputkan sebelumnya. Adanya perbedaan penafsiran pada kuantisasi color histogram dengan nilai yang tidak menentu dan perbedaan persepsi manusia pada warna. Seringkali warna tersebut hanya membahas pada citra warna Red Green Blue (RGB), Yellow Magenta Cyan Black (YMCK) dan Hue Saturation Value (HSV), sementara melupakan nilai ekstraksi warna pada grayscale. Dengan alasan ini, ekstraksi warna abu-abu juga perlu ditambahkan juga pada perhitungan histogram warna.
1
2
Ketika suatu citra pada warna mengalami penurunan nilai pixel, menjadikan citra yang sama, sulit untuk diidentifikasi nilai kesamaannya. Misalkan, adanya kejadian di mana sebuah gambar dengan ukuran besar, lalu di resize kedalam ukuran yang kecil. Maka pada perhitungan nilai warna, kebanyakan menjadi sedikit rancu. Seharusnya sistem juga mempertimbangkan kejadian seperti ini, maka pemberian nilai normalisasi pada warna perlu dilakukan, sehingga nilai ekstraksi nilai warna menjadi luas, dengan tidak hanya menghitung nilai kesamaannya saja. Pada beberapa kasus yang terdapat pada temu kembali citra, biasanya tidak mencantumkan perhitungan kecepatan waktu pemrosesan, dan nilai besaran persentasi nya, sehingga tidak diketahui seberapa rinci aplikasi tersebut melakukan prosesnya. Padahal manusia sendiri melihat suatu dan membandingkan dengan yang lain, butuh suatu perincian juga. Dengan alasan yang seperti ini, apabila diberikan suatu perhitungan jeda waktu dan nilai besaran persen pada prosesnya, maka dapat dapat mempermudah pengguna dalam mengetahui keakuratannya. Untuk pemrosesan berdasarkan bentuk sendiri, kebanyakan hanya menghitung nilai kesamaan antara citra yang ingin dicari dengan citra pada basis data, namun akan menjadi hal yang sulit ketika suatu citra yang dibandingkan terjadi pergeseran bentuk, walaupun hanya bergeser sedikit. Perlunya adanya, perhitungan untuk peristiwa ini, agar citra yang sama dapat ditemukan. Dengan cara pemberian interval pada proses bentuk, tentu saja peristiwa ini seperti dapat dikurangi tingkat kesalahannya.
3
1.2
Identifikasi Masalah Masalah temu kembali citra dapat dirumuskan sebagai berikut: 1. Tidak terdapatnya perhitungan kecepatan waktu pemrosesan. 2. Nilai warna tidak mencakup citra warna berbentuk abu-abu (Grayscale). 3. Pada citra temuan kandidat hasil yang tidak menunjukkan besaran kemungkinan persentasenya. 4. Tidak adanya pemberian nilai normalisasi pada warna sehingga pada citra yang berbeda ukuran pixel, menjadi sulit dilihat nilai kesamaannya. 5. Pada metode bentuk, tidak diberikan interval nilai.
1.3
Batasan Masalah
Batasan masalah adalah membatasi ruang lingkup masalah yang terlalu luas atau lebar sehingga penelitian lebih bisa fokus untuk dilakukan. Batasan masalah dari perancangan aplikasi ini dibatasi oleh hal-hal sebagai berikut: 1. Pengolahan data gambar memiliki format gambar yang biasa digunakan, seperti JPG, JPEG, dan BMP, namun lebih diutamakan pada bentuk Bitmap Picture (BMP). 2. Sistem ini hanya membahas tentang mengolah suatu citra yang ada pada komputer. 3. Lebih spesifik membahas tentang citra bunga. 4. Data gambar bukan berupa gambar yang bergerak. 5. Penelitian berdasarkan bentuk hanya berlaku pada ukuran pixel 400x300. 6. Latar belakang citra berwarna putih.
4
1.4
Tujuan Penelitian Tujuan pelaksanaan penelitian ini adalah : 1.
Menghitung kecepatan waktu pemrosesan
2.
Memasukkan perhitungan warna termasuk di dalam nya perhitungan warna abu-abu.
3.
Menunjukkan kandidat hasil berdasarkan persentase kemungkinannya.
4.
Pemberian nilai normalisasi pada warna.
5.
Pengimplementasian hitungan waktu dalam metode integrated region matching pada bentuk.
6.
Untuk menghitung perbandingan perhitungan waktu pada perhitungan kecepatan pemrosesan warna .
1.5
Metodologi Penelitian
Metodologi merupakan suatu proses yang digunakan untuk memecahkan suatu masalah secara logis, dimana memerlukan data-data untuk mendukung terlaksananya suatu penelitian. Metodologi ini akan dijelaskan dalam bentuk pengumpulan data dan metode pengembangan sistem.
1. Metode Pengumpulan Data
Dalam pelaksanaan kegiatan pengumpulan data yang menjadi dasar dan untuk melengkapi laporan penelitian ini, maka digunakan teknik yang umum dalam kegiatan ilmiah, yaitu :
5
a. Studi Literatur, pengumpulan data secara tidak langsung dengan melakukan studi kepustakaan, yaitu dengan mengumpulkan datadata dan teori-teori yang berhubungan dengan penulisan laporan ini.
2. Metode Pengembangan Perangkat Lunak
Metode pengembangan sistem yang digunakan dalam membangun sistem pengolahan data ini menggunakan model waterfall yang menyarankan pengembangan perangkat lunak secara sistematik dan berurutan yang dimulai dari tingkatan sistem tertinggi dan berlanjut ke tahap analisis, desain, pengkodean, pengujian dan pemeliharaan. Kelebihan dari metode ini adalah terstuktur, dinamis, dan sequintal.
Gambar 1.1 Paradigma Waterfall (Adi Nugroho, 2005)1
1
Adi Nugroho, Analisa dan Perancangan Sistem Informasi dengan Metodologi Berorientasi Objek, hal.125.
6
Keterangan ; 1. Kebutuhan sistem ( Requirement system ) Proses pencarian kebutuhan diintensifkan dan di fokuskan pada software. Untuk mengetahui sifat dari program yang akan dibuat,Melakukan pengumpulan data dan penetapan kebutuhan semua elemen sistem. 2. Analisa(Analysis) Melakukan analisis terhadap permasalahan yang dihadapi dan menetapkan kebutuhan perangkat lunak, fungsi performasi dan iterfacing. 3. Perancangan ( Design ) Proses ini digunakan untuk mengubah kebutuhan-kebutuhan diatas menjadi tampilan program atau aplikasi sebelum coding di mulai. Design harus dapat mengimplementasikan kebutuhan yang telah di sebutkan pada tahap sebelumnya. 4. Pembuatan Program/pengkodean ( Coding ) Pengkodean yang mengimplementasikan hasil dan design ke dalam kode/bahasa yang di mengerti oleh mesin komputer dengan bahasa pemrograman tertentu. 5. Pengujian ( Implementasi dan Testing ) Untuk dapat dimengerti oleh mesin, dalam hal ini komputer, maka design tadi harus di ubah bentuknya menjadi bentuk yang dapat dimengerti oleh mesin, yaitu ke dalam bahasa pemrograman melalui proses coding. Tahap ini merupakan implementasi dari tahap design yang secara teknis nantinya dikerjakan oleh programmer.
7
6. Perawatan ( Maintenence ) Pemeliharaan suatu software sangat di perlukan, termasuk di dalamnya adalah pengembangan, karena software yang dibuat tidak selamanya hanya seperti itu.Ketika di jalankan mungkin saja masih ada kesalahan kecil yang tidak di temukan sebelumnya, atau ada penambahan fitur-fitur yang belum ada pada software tersebut. Dengan menggunakan Metode Waterfall sangat efektif, karena setiap tugas yang diberikan kepada setiap bagian harus diselesaikan terlebih dahulu, tahap demi tahap setelah itu dilanjutkan ketahap berikutnya secara berurutan.
1.6
Perencanaan Jadwal Untuk pengerjaan aplikasi ini yang kurang lebih memerlukan waktu 3 bulan
dengan pengaturan waktu berikut ini. Tabel 1.1 Jadwal Penelitian BULAN 1 NO
BULAN 2
BULAN 3
KEGIATAN 1
1
Studi Literatur
2
Analisis Data
3
Desain
4
Coding
5
Pengujian
6
PembuatanLaporan
2
3
4
1
2
3
4
1
2
3
4
8
1.7
Sistematika Penulisan
Sistematika penulisan ini disusun dalam beberapa bab dan sub bab, yang masing-masing saling mempunyai keterkaitan dalam bahasannya. Adapun sistematika pada penulisan ini sebagai berikut : BAB I
PENDAHULUAN
Bab ini berisi uraian tentang latar belakang masalah, rumusan masalah yang berisi identifikasi masalah, batasan masalah, tujuan dan manfaat, waktu dan tempat pelaksanaan, metodologi penelitian serta sistematika penulisan yang berisikan penjelasan ringkasan per bab. BAB II
LANDASAN TEORI
Dalam bab ini menguraikan tentang definisi dan konsep dasar sistem, informasi, sistem informasi, dan meguraikan tentang karakterisitik sistem, konsep pemodelan sistem, konsep basis data dan perangkat lunak yang digunakan. BAB III
ANALISIS SISTEM
Bab ini menguraikan tentang kebutuhan sistem agar dapat diusulkan untuk menyelesaikan masalah pada sistem yang ada. BAB IV
PERANCANGAN SISTEM
Bab ini menguraikan tentang perancangan proses yaitu flowmap, diagram konteks, data flow diagram (DFD), perancangan basis data yaitu perancangan media penyimpanan dan entity relationship diagram (ERD), serta perancangan antarmuka.
9
BAB V
IMPLEMENTASI SISTEM
Bab ini berisi tentang uji coba sistem dan program, dan manual instalasi. BAB VI
PENUTUP
Bab ini memberikan kesimpulan tentang hasil-hasil yang dicapai dalam perancangan perangkat lunak dan saran untuk pengembangan perangkat lunak berikutnya.
DAFTAR PUSTAKA
LAMPIRAN
BAB II LANDASAN TEORI
2.1
Konsep Dasar Sistem
2.1.1 Definisi Sistem
Ada beberapa tentang pengertian sistem di antaranya definisi sistem menurut sistem dilihat dari segi etimologinya berasal dari bahasa inggris yaitu sistem yang berarti susunan, cara, jaringan. Menurut Hartono (1999:683) , sistem adalah suatu kesatuan yang terdiri dua atau lebih komponen atau subsistem yang berinteraksi untuk mencapai suatu tujuan.2 Sistem yang lebih menekankan pada prosedur didefinisikan sebagai berikut:”sistem adalah suatu jaringan kerja prosedur yang saling berhubungan ,pendekatan sistem yang lebih menekankan pada komponen pada elemennya didefinisikan sebagai berikut : ”sistem adalah suatu kumpulan elemen-elemen yang saling berhubungan untuk mencapai suatu tujuan tertentu. Sedangkan menurut Richard F. Neuschel (1995), ”sistem adalah suatu jaringan sejumlah prosedur yang saling berhubungan yang dikembangkan sesuai dengan suatu pola (rencana) guna melaksanakan aktifitas utama perusahaan.”
2
Hartono,(1999), Analisis dan Disain Sistem Informasi: Pendekatan Terstruktur Teori dan Aplikasi Bisnis. Andi Offset, Yogyakarta. Hal. 683
10
11
2.1.2 Karakteristik Sistem
Suatu sistem mempunyai karakteristik atau sifat –sifat tertentu, yaitu; 1. Komponen Sistem (components) Sistem terdiri dari sejumlah komponen yang saling berinteraksi, bekerja sama membentuk kesatuan. Komponen-komponen atau elemen-elemen sistem dapat berupa suatu subsistem atau bagianbagian dari sistem. Setiap subsistem mempunyai sifat-sifat dari sistem untuk menjalankan suatu fungsi tertentu dan mempengaruhi proses sistem secara keseluruhan.
2. Batas Sistem (boundary) Batas sistem merupakan daerah yang membatasi antara suatu sistem dengan sistem lainnya atau dengan lingkungan luarnya. Batas suatu sistem menunjukkan ruang lingkup (scope) dari sistem tersebut.
3. Lingkungan Luar Sistem (environment) Lingkungan luar dari suatu sistem adalah apapun diluar batas dari sistem yang mempengaruhi operasi sistem.
4. Interface Interface merupakan media penghubung antara satu subsistem dengan subsistem yang lainnya. Interface ini memungkinkan satu subsistem untuk mengalirkan sumber daya ke subsistem lainnya.
12
a. Input Input merupakan energi yang dimasukkan ke dalam sistem. Input dapat berupa maintenance input dan signal input. Maintenance input adalah energi yang dimasukkan supaya sistem tersebut dapat beroperasi. Signal input adalah energi yang diproses untuk menghasilkan output. b. Output Output
merupakan
diklasifikasikan
hasil
menjadi
dari
energi
output
yang
yang berguna
diolah
dan
dan
sisa
pembuangan. Output dapat menjadi input untuk subsistem yang lain. 5. Pengolahan Sistem (process) Suatu sistem mempunyai bagian pengolah yang akan merubah masukan menjadi keluaran. 6. Sasaran Sistem (objective) Suatu sistem mempunyai tujuan (goal) atau sasaran (objective). Sasaran dari sistem menentukan input yang dibutuhkan dan output yang akan dihasilkan.
2.2
Konsep Basic Data
Database merupakan salah satu komponen penting dalam sistem informasi, karena database adalah dasar dalam menyediakan informasi bagi para pemakai.
13
Suatu database dibuat dan digunakan untuk mengatasi masalah-masalah yang ada pada saat penggunaan data.
Masalah-masalah tersebut antara lain : 1.
Redudansi dan konsistensi data.
2.
Kesulitan pengaksesan data.
3.
Isolasi data untuk standarisasi.
4.
Banyak pemakai ( multiple user ).
5.
Masalah kesatuan / integrasi (integration).
6.
Masalah kebebasan data (data indepence).
Pelaksanaan pengguna database memerlukan suatu sistem yang dapat mengatur dan mengelola file, program, yang disebut Database Management System (DBMS), yaitu pengelolaan sekumpulan file yang seling berkaitan antara file yang satu dengan yang lainnya.
1. Desain Basis Data Sistem Basis data (database) adalah suatu pengorganisasian sekumpulan data yang saling terkait sehingga memudahkan aktivitas untuk memperoleh informasi. Merancang basis data merupakan hal yang sangat penting dalam perancangan suatu sistem. Kesulitan utama dalam merancang suatu basic data adalah bagaimana cara marancang suatu basic data yang dapat memuaskan keperluan saat ini dan masa yang akan datang.
14
Elemen-elemen
data
dalam
suatu
basic
data
harus
dapat
dipergunakan untuk pembuatan keluaran (output), sesuai dengan yang diinginkan. Untuk menghasilakn keluaran yang baik, juga diperlukan masukan (output) yang baik. Hasil pemasukan data ini akan disimpan atau direkam dalam basic data. 1)
Field Adalah data yang menunjukkan sifat-sifat tertentu
2)
Record Merupakan segala sesuatu yang kita simpan sebagai informasi dan kumpulan dari beberapa field
3)
Database Merupakan kumpulan dari beberapa record yang memiliki relasi antar record maupun field
4)
Database system Merupakan kumpulan dari basis data yang saling terpisah tapi dikelola secara bersama-sama.
2.
Normalisasi Normalisasi merupakan proses pengelompokan data elemen menjadi tabel-tabel yang menunjukkan entiti dan relasinya. Sebelum mengenal lebih jauh mengenai normalisasi ada beberapa konsep yang perlu diketahui yaitu :
15
1. Atribute kunci Setiap file selalu terdapat kunci dari file atau satu set field yang dapat mewakili record. 2. Candidate key Kunci kandidat adalah satu atribut atau satu set minimal atribut yang mengindentifikasi secara unik suatu kejadian spesifik dari entity. Dan kandidat key tidak boleh berisi atribut dari tabel yang lain. 3. Primary key Primary key adalah satu atribut atau satu set minimal atribut yang tidak hanya mengindentifikasi secara unik suatu kejadian spesifik, tetapi dapat juga mewakili setiap kejadian dari entity.
2.3
Pengertian Citra dan Warna
2.3.1 Citra Citra adalah representasi dua dimensi dari dunia visual, menyangkut berbagai macam disiplin ilmu yang mencakup seni, human vision, astronomi, teknik, dan lain sebagainya. Citra merupakan suatu kumpulan piksel-piksel atau titik-titik yang berwarna yang berbentuk dua dimensi. Merupakan deskripsi dari gambar grafik yang tersimpan sebagai kumpulan nilai warna dan tingkat cahaya dari kumpulan instruksi untuk menghasilkan gambar.
16
2.3.2 Warna Warna merupakan salah satu ciri citra yang paling sering digunakan pada penelitian content-based image retrieval (CBIR). Pengindeksan warna dan pencarian citra berdasarkan warna pada CBIR bisa dilakukan dengan pendekatan color histogram.
2.4
Temu Kembali Citra ( Image Retrieval ) Penelitian mengenai temu kembali citra (image retrieval) mulai dikembangkan pada tahun 1970, dengan menggunakan teknik pelabelan citra, setiap citra diberi label dan pencarian dilakukan berdasarkan label tersebut (text retrieval). Pada saat ini telah banyak dikembangkan temu kembali citra didasarkan pada warna, bentuk, dan tekstur. Teknik ini biasa disebut dengan content based image retrieval (CBIR).3 Pengambilan berbasis konten gambar atau biasa disebut content based image retrieval (CBIR), juga dikenal sebagai query dengan konten gambar atau query by image content (QBIC) dan pengambilan informasi visual berbasis konten atau content-based visual information retrieval (CBVIR) adalah aplikasi dari visi teknik komputer untuk permasalahan temu kembali citra, dimana permasalahan dalam pencarian gambar digital pada database yang besar.
3
Wikipedia.
2006.
Content
Based
Image Retrieval. en.wikipedia.org. [10 Januari 2006].
17
Istilah "content based image retrieval" tampaknya berawal pada tahun 1992 yang ketika itu digunakan oleh T. Kato untuk menggambarkan percobaan dalam pengambilan otomatis gambar dari database, berdasarkan warna dan bentuk.4 Sejak saat itu, istilah telah digunakan untuk menggambarkan proses mengambil gambar yang diinginkan dari koleksi yang besar atas dasar fitur gambar sintaksis. Teknik-teknik, alat-alat, dan algoritma yang digunakan berasal dari bidang-bidang seperti statistik, pengenalan pola, pemrosesan sinyal, dan visi komputer.5 Sistem CBIR awal dikembangkan untuk database berdasarkan warna gambar, tekstur, dan sifat bentuk pencarian. Setelah sistem ini dikembangkan, kebutuhan untuk antarmuka yang user-friendly menjadi jelas. Oleh karena itu, upaya-upaya di bidang CBIR mulai meliputi desain yang berpusat pada manusia yang mencoba untuk memenuhi kebutuhan pengguna melakukan pencarian. Ini biasanya berarti masuknya metode query yang memungkinkan semantik deskriptif, pertanyaan yang mungkin melibatkan umpan balik pengguna, sistem yang dapat mencakup pembelajaran mesin, dan sistem yang dapat memahami tingkat kepuasan pengguna. Banyak sistem CBIR telah dikembangkan saat ini, akan tetapi masalah pengambilan gambar berdasarkan konten pixel, sebagian besar masih belum terpecahkan solusi terbaiknya.
4
Eakins, John; Graham,Margaret. "Content-based Image Retrieval". University of Northumbria at Newcastle. Retrieved 2014-03-10. 5
Content-based Multimedia Information Retrieval: State of the Art and Challenges, Michael Lew, et al., ACM Transactions on Multimedia Computing, Communications, and Applications, pp. 1– 19, 2006.
18
Pada pengukuran warna, perhitungan warna berdasarkan kesamaan warna dicapai dengan menghitung histogram warna untuk setiap gambar yang mengidentifikasi proporsi pixel dalam sebuah gambar memegang nilai-nilai tertentu. Meneliti gambar berdasarkan warna yang dikandungnya adalah salah satu teknik yang paling banyak digunakan karena dapat diselesaikan tanpa memperhatikan ukuran gambar atau orientasi. Namun, penelitian juga berusaha untuk proporsi warna segmen menurut wilayah dan hubungan spasial antara beberapa daerah warna.
2.5
Histogram Warna ( Color Histogram )
2.5.1 Pengertian Histogram Warna Dalam pengolahan citra dan fotografi, histogram warna adalah representasi dari distribusi warna dalam sebuah gambar. Untuk gambar digital, histogram warna mewakili jumlah pixel yang memiliki warna di setiap daftar tetap rentang warna, yang mencakup gambar dalam ruang warna, himpunan semua kemungkinan warna. Warna histogram dapat dibangun untuk setiap jenis ruang warna, meskipun istilah ini lebih sering digunakan untuk ruang tiga-dimensi seperti RGB atau HSV . Untuk gambar monokromatik , istilah histogram intensitas dapat digunakan sebagai gantinya. Untuk gambar multi-spektral, di mana setiap pixel diwakili oleh jumlah sewenang-wenang pengukuran (misalnya, di luar tiga pengukuran di RGB), histogram warna dimensi-N, dengan N adalah jumlah pengukuran yang dilakukan.
19
Setiap pengukuran memiliki rentang panjang gelombang sendiri dari spektrum cahaya, beberapa di antaranya mungkin berada di luar spektrum yang terlihat. Jika himpunan nilai warna yang mungkin cukup kecil, masing-masing warna dapat ditempatkan pada rentang dengan sendirinya, maka histogram hanyalah hitungan pixel yang memiliki setiap kemungkinan warna. Kebanyakan ruang dibagi menjadi jumlah yang sesuai rentang, sering diatur sebagai grid biasa, di mana masing-masing berisi banyak nilai warna yang sama. Seperti jenis lain dari histogram, histogram warna adalah statistik yang dapat dilihat sebagai sebuah pendekatan dari terus menerus mendasari distribusi nilai-nilai warna. Histogram warna merupakan konstruksi fleksibel yang dapat dibangun dari gambar di berbagai ruang warna, apakah RGB, atau ruang warna lain dari dimensi apapun. Sebuah histogram dari suatu gambar diproduksi pertama dengan diskritisasi dari warna dalam gambar ke dalam sejumlah tempat penyimpanan ruang(bin), dan menghitung jumlah piksel gambar dalam setiap bin. Histogram menyediakan kekompakan penambahan dalam distribusi data pada sebuah gambar. Warna histogram dari suatu gambar relatif invariant dengan terjemahan dan rotasi terhadap arah melihat, dan hanya berbeda sedikit dengan sudut pandang.6
6
Shapiro, Linda G. and Stockman, George C. "Computer Vision" Prentice Hall, 2003
20
Misalnya,
histogram Merah-Biru dapat dibentuk oleh nilai-nilai
warna pertama normalisasi pixel dengan membagi nilai-nilai RGB, maka mengkuantisasi normalisasi R dan B koordinat ke bin-N masing-masing. Sebuah histogram dua dimensi dari Red-Blue dibagi menjadi empat bin (N=4) dan menghasilkan histogram yang terlihat seperti tabel ini:
BLUE
0 - 63 64 -127 128 -191 192 - 255
Tabel 2.1 Histogram Warna RED 0 - 63 64 – 127 128 – 191 43 78 18 45 67 33 127 58 25 140 47 47
192 - 255 0 2 8 13
2.5.2 Pencocokan Histogram (Histogram Matching)
Pencocokan Histogram merupakan suatu metode dalam pengolahan citra dari penyesuaian warna dari dua gambar dengan menggunakan gambar histogram. Hal ini dimungkinkan untuk menggunakan histogram yang cocok untuk menyeimbangkan respons detektor sebagai teknik kalibrasi detektor relatif. Hal ini dapat digunakan untuk menormalkan dua gambar, ketika gambar yang diperoleh pada pencahayaan lokal yang sama (seperti bayangan) di atas lokasi yang sama, tetapi dengan sensor yang berbeda, kondisi atmosfer atau iluminasi global. Algoritmanya, sebagai berikut :
G1 , G2 0, 255
F1
= Gambar referensi
F1 G1 F2 G2
F2
= Gambar target
M G1 G2
G1 ,G2 = Warna abu-abu dari F1 , F2 M = Histogram Matching
21
2.5.3 Feature matching and indexing Feature Scale-invariant transform (SIFT) adalah sebuah algoritma dalam visi komputer untuk mendeteksi dan menjelaskan fitur lokal dalam gambar. Algoritma ini dipublikasikan oleh David Lowe pada tahun 1999.7 Feature matching and Indexing merupakan penyimpanan kunci SIFT dan mengidentifikasi pencocokan kunci dari gambar baru. Lowe menggunakan modifikasi dari pohon algoritma yang disebut -bin- pertama terbaik dalam metode pencarian yang dapat mengidentifikasi tetangga terdekat dengan probabilitas tinggi hanya menggunakan jumlah terbatas dalam perhitungan. Algoritma menggunakan pemesanan pencarian yang dimodifikasi untuk pohon algoritma sehingga bin dalam ruang fitur yang dicari dalam urutan jarak terdekat dari lokasi pencarian. Urutan pencarian ini membutuhkan penggunaan tumpukan berbasis antrian prioritas untuk penentuan efisien urutan pencarian. Perbandingan kandidat terbaik untuk setiap keypoint ditemukan dengan mengidentifikasi tetangga terdekat dalam database keypoints dari gambar. Sebagai contoh, misalkan X merata pada interval satuan [0, 1], maka:
7
Lowe, David G. (1999). "Object recognition from local scale-invariant features" . Proceedings of the International Conference on Computer Vision 2 . pp. 1150–1157
22
2.6
Bentuk
Fitur bentuk memberikan informasi penting karena kemampuan manusia untuk mengenali obyek melalui bentuknya. Namun, informasi ini hanya dapat diekstraksi dengan cara dari segmentasi yang mirip dengan salah satu yang visual sehingga dalam mengimplementasikan fitur bentuk, masih merupakan masalah yang cukup berat.
2.6.1 Deteksi Tepi dengan Operator Prewitt
Operator Prewitt digunakan dalam pengolahan gambar, terutama dalam deteksi tepi algoritma. Secara teknis, itu adalah operator diferensial diskrit, komputasi perkiraan dari gradien dari fungsi intensitas gambar. Pada setiap titik dalam gambar, hasil dari operator Prewitt adalah gradien vektor yang sesuai atau norma vektornya. Operator Prewitt didasarkan pada convolving gambar dengan filter bernilai kecil, dipisahkan, dan integer dalam arah horisontal dan vertikal dan karena itu relatif murah dalam hal perhitungan. Di sisi lain, pendekatan gradien yang menghasilkan relatif mentah, khususnya untuk variasi frekuensi tinggi dalam gambar. Operator Prewitt dikembangkan oleh Judith MS Prewitt.8 Secara matematis, operator ini menggunakan 3×3 kernel yang convolved dengan gambar asli untuk menghitung perkiraan derivatif, satu
8
J.M.S. Prewitt "Object Enhancement and Extraction" in "Picture processing and Psychopictorics",Academic Press,1970
23
untuk
perubahan
horisontal,
dan
satu
untuk
vertikal.
Jika
kita
mendefinisikan A sebagai sumber gambar, dan Gx, Gy adalah dua gambar yang pada setiap titik berisi perkiraan turunan horisontal dan vertikal, yang perhitungannya sebagai berikut:
1 0 1 G x 1 0 1 * A 1 0 1
dan
1 1 1 G y 0 0 0 * A 1 1 1
dimana * di sini menunjukkan 2-dimensi konvolusi operasi. Kernel Prewitt bisa diurai sebagai produk dari rata-rata kernel dan diferensiasi, perhitungan gradien dengan smoothing. Oleh karena itu adalah filter yang dipisahkan . Sebagai contoh, Gx dapat ditulis sebagai berikut: 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1
Pada setiap titik dalam gambar, perkiraan gradien yang dihasilkan dapat dikombinasikan untuk memberikan besarnya gradien, menggunakan: G Gx 2 Gy 2
2.6.2 Integrated Region Matching
Content Based Image Retrieval (CBIR) telah menjadi area penting dari penelitian dengan permintaan yang semakin meningkat dan penggunaan gambar digital dalam berbagai bidang seperti kedokteran, teknik, ilmu, digital fotografi dll. Berbeda dengan
metode tradisional pengambilan
gambar berbasis teks di mana pencarian gambar berdasarkan deskripsi
24
tekstual terkait dengan gambar. Sistem CBIR mengambil gambar berdasarkan isi gambar seperti warna, tekstur, bentuk atau informasi lainnya yang dapat secara otomatis diekstrak dari gambar itu sendiri dan menggunakannya sebagai kriteria untuk mengambil gambar terkait konten dari database. The diambil gambar kemudian peringkat menurut relevansi antara gambar permintaan dan gambar dalam database dalam proporsi untuk ukuran kesamaan dihitung dari fiturnya.9 Dalam metode yang diusulkan adalah penggunaan segmentasi blok tetap yang telah ditetapkan. Foto-foto tersebut dibagi menjadi blok ukuran yang berbeda untuk ekstraksi fitur. Vektor fitur yang diekstraksi dari grid yang dipilih dari konfigurasi yang berbeda (3x3 grid, grid horizontal dan vertikal, blok pusat dan seluruh bagian dari citra). Tidak seperti beberapa pengambilan gambar blok berbasis sistem yang menggunakan semua subbagian untuk ekstraksi fitur dan pengukuran kesamaan, sistem ini hanya menggunakan blok yang dipilih saja, bertujuan untuk mengurangi waktu komputasi. Untuk mengidentifikasi daerah sub-blok / object, pertama gambar grayscale dihitung dan peta tepi terdeteksi menggunakan deteksi tepi Prewitt dengan nilai sehingga yang dapat ditemukan ujung-ujungnya. Lubanglubang di gambar yang dihasilkan kemudian diisi untuk mendapatkan perkiraan lokasi objek. Itu objek diidentifikasi dengan benar jika latar belakang seragam. Sebuah sub-blok dipilih untuk diproses lebih lanjut, fitur 9
Jia Li and James Z. Wang, Real-time computerized annotation of pictures, Proceedings of the 14th annual ACM international conference on Multimedia, (2006), pp. 911920.
25
ekstraksi dan diidentifikasi sebagai region of interest (ROI), jika dari subblok merupakan bagian dari kawasan objek. Diidentifikasi sebagai sebuah daerah yang diinginkan. Di mana daerah pengambilan di sekitarnya, dengan hanya mengambil bagian dalam perhitungan lebih lanjut untuk menghitung kesamaan bersama dengan warna global dan membentuk fitur dari seluruh gambar. Perhitungan horizontal dan vertikal juga diidentifikasi dengan cara yang sama.
2.6.3 Perhitungan geometris Euclidean space
Dua objek geometris disebut sama jika mereka berdua memiliki sama bentuk , atau salah satu memiliki bentuk yang sama seperti bayangan cermin dari yang lain. Lebih tepatnya, seseorang dapat diperoleh dari yang lain dengan skala yang seragam, mungkin dengan tambahan terjemahan, rotasi dan refleksi. Secara keseluruhan memiliki bentuk yang sama seperti satu atau lebih bagiannya. Banyak objek di dunia nyata, seperti garis pantai, dan secara statistik, bagian dari mereka menunjukkan sifat yang sama di banyak tingkatan. Ini berarti bahwa obyek baik dapat reposisi, dan tercermin, sehingga bertepatan persis dengan objek lain. Jika dua benda yang sama, masing-masing kongruen dengan hasil dari skala seragam yang lain. Sebagai contoh, semua kalangan yang mirip satu sama lain, semua kotak yang mirip satu sama lain, dan semua segitiga sama sisi yang mirip satu sama lain. Jika dua sudut segitiga memiliki ukuran yang sama dengan
26
ukuran dua sudut segitiga yang lain, maka segitiga serupa. Sesuai sisi poligon serupa dalam proporsi, dan sudut sesuai poligon yang sama memiliki ukuran yang sama. Konteks bentuk dimaksudkan sebagai cara untuk menggambarkan bentuk yang memungkinkan untuk mengukur bentuk kesamaan dari titik korespondensi.
Ide dasarnya adalah untuk memilih titik n pada kontur
bentuk. Untuk setiap titik pi pada bentuk, pertimbangkan vektor n-1 yang diperoleh dengan menghubungkan pi ke semua titik. Himpunan semua vektor ini adalah deskripsi kaya bentuk terlokalisasi pada saat itu tetapi terlalu rinci. Ide utama adalah bahwa distribusi melalui nilai posisi yang relatif kuat dan kompak. Dengan menggunakan kesamaan geometris Euclidean Space, artinya menghitung antara titik dan sudut antara garis atau vektor, yang memenuhi kondisi tertentu yang membuat satu set poin ruang Euclidean. Yang berarti pergeseran dari ruang sehingga setiap titik bergeser ke arah yang sama dan dengan jarak yang sama. Yang lain adalah rotasi sekitar titik tetap pada ruang, di mana setiap titik pada ruang berubah sekitar titik tetap melalui sudut yang sama. Salah satu prinsip dasar geometri Euclidean adalah bahwa dua citra dari ruang harus dianggap setara ( kongruen ) jika terjadi pergeseran oleh beberapa urutan terjemahan, rotasi dan refleksi. Nilai dua bilangan nyata n-vektor x dan y didefinisikan oleh :
27
n 1
x. y xi y i i 0
Keterangan :
2.7
i
= nilai awal
n
= nilai akhir
xi
= pixel citra pada basis data pada sumbu x
yi
= pixel citra pada basis data pada sumbu y
x
= pixel citra masukan pada sumbu x
y
= pixel citra masukan pada sumbu y
Perancangan Terstruktur
2.7.1 Data Flow Diagram (DFD)
Data
Flow
Diagram
(DFD)
adalah
suatu
diagram
yang
menggunakan notasi-notasi untuk menggambarkan arus dari data sistem, yang penggunaannya sangat membantu untuk memahami sistem secara logika, tersruktur dan
jelas. DFD merupakan alat
bantu dalam
menggambarkan atau menjelaskan sistem yang sedang berjalan logis. Suatu yang lazim bahwa ketika menggambarkan sebuah sistem kontekstual data flow diagram yang akan pertama kali muncul adalah interaksi antara sistem dan entitas luar. DFD didisain untuk menunjukkan sebuah sistem yang terbagi-bagi menjadi suatu bagian sub-sistem yang lebih kecil untuk menggaris bawahi arus data antara kedua hal yang tersebut
28
diatas. Diagram ini lalu dikembangkan untuk melihat lebih rinci sehingga dapat terlihat model-model yang terdapat di dalamnya.
2.7.2 Flowchart
Flowchart atau diagram alir merupakan sebuah diagram dengan simbol-simbol grafis yang menyatakan aliran algoritma atau proses yang menampilkan langkah-langkah yang disimbolkan dalam bentuk kotak, beserta urutannya dengan menghubungkan masing masing langkah tersebut menggunakan tanda panah. Diagram ini bisa memberi solusi selangkah demi selangkah untuk penyelesaian masalah yang ada di dalam proses atau algoritma tersebut.
2.8
Perangkat Lunak Pembangun Sistem
Software atau biasa disebut dengan perangkat lunak adalah sebuah aplikasi yang dapat membangun sebuah sistem. Dimana sistem tersebut dapat membantu manusia dalam mengolah sebuah data untuk mengurangi kesalahan dalam data tersebut. Untuk itu software yang di pakai adalah sebagai berikut :
2.8.1 Borland Delphi 7 Borland Delphi merupakan suatu bahasa pemrograman yang memberikan berbagai fasilitas pembuatan aplikasi untuk mengolah teks, grafik, angka, database dan aplikasi web. Program ini mempunyai kemampuan luas yang terletak pada produktifitas, kualitas, pengembangan perangkat lunak, kecepatan kompilasi, pola desain yang menarik serta
29
bahasa pemrogramannya terstruktur dan lengkap. Fasilitas pemrograman dibagi dalam dua kelompok yaitu object dan bahasa pemrograman. Object adalah suatu komponen yang mempunyai bentuk fisik dan biasanya dapat dilihat. Object biasanya dipakai untuk melakukan tugas tertentu dan mempunyai batasan-batasan tertentu. Sedangkan bahasa pemrograman dapat disebut sekumpulan teks yang mempunyai arti tertentu dan disusun dengan aturan tertentu untuk menjalankan tugas tertentu. Gabungan antara object dengan bahasa pemrograman sering disebut bahasa pemrograman berorientasi object. IDE Delphi merupakan lingkungan pemrograman terpadu yang terdapat dalam Delphi. Dengan IDE semua yang diperlukan dalam pengembangan, dalam kondisi normal, semuanya telah tersedia. Adapun bagian-bagian IDE Delphi yang biasa ditampilkan yaitu : 1. Jendela Utama : Di dalam jendela utama Delphi terdapat menu-menu sebagaimana menu aplikasi Windows umumnya, toolbar yang merupakan langkah cepat dari beberapa menu, dan component palette yaitu gudang komponen yang akan digunakan untuk membuat aplikasi. 2. Object Treeview : Fasilitas ini berguna untuk menampilkan daftar komponen yang digunakan dalam pengembangan aplikasi sesuai dengan penempatannya. 3. Object Inspector : Object ini digunakan untuk mengatur properti dan event suatu komponen. Akan tetapi tidak dapat mengubah langsung
30
properti-properti yang tidak ditampilkan kecuali melalui penulisan kode program. 4. Form
Designer
:
Form
adalah
komponen
utama
dalam
pengembangan aplikasi. Form designer adalah tempat melekatnya komponen yang lain, dengan arti lain tempat komponen-komponen lain diletakkan. 5. Code Editor, Explorer dan Component Diagram, Code Editor adalah tempat kode program yang diperlukan untuk mengatur tugas aplikasi ditulis. Code Explorer adalah fasilitas yang membantu penjelajahan kode program menjadi lebih mudah. Component Diagram adalah fasilitas yang dapat digunakan untuk membuat diagram komponenkomponen yang digunakan dalam aplikasi.
2.8.2 Microsoft Office Access
Microsoft Office Access adalah sebuah program aplikasi basis data komputer relasional yang ditujukan untuk kalangan rumahan dan perusahaan kecil hingga menengah. Aplikasi ini merupakan anggota dari beberapa aplikasi Microsoft Office, selain tentunya Microsoft Word, Microsoft Excel, dan Microsoft PowerPoint. Aplikasi ini menggunakan mesin basis data Microsoft Jet Database Engine, dan juga menggunakan tampilan grafis yang memudahkan pengguna. Microsoft Access dapat menggunakan data yang disimpan di dalam format Microsoft Access, Microsoft Jet Database Engine, Microsoft SQL Server, Oracle Database,
31
atau semua kontainer basis data yang mendukung standar ODBC. Para pengguna/programmer
yang
mahir
dapat
menggunakannya
untuk
mengembangkan perangkat lunak aplikasi yang kompleks, sementara para programmer
yang
kurang
mahir
dapat
menggunakannya
untuk
mengembangkan perangkat lunak aplikasi yang sederhana.
Access juga mendukung teknik-teknik pemrograman berorientasi objek, tetapi tidak dapat digolongkan ke dalam perangkat bantu pemrograman berorientasi objek. Microsoft merilis Microsoft Access 1.0 pada bulan November 1992 dan dilanjutkan dengan merilis versi 2.0 pada tahun 1993. Microsoft menentukan spesifikasi minimum untuk menjalankan Microsoft Access 2.0 adalah sebuah komputer dengan sistem operasi Microsoft Windows 3.0, RAM berkapasitas 4 megabyte (6 megabyte lebih disarankan) dan ruangan kosong hard disk yang dibutuhkan 8 megabyte (14 megabyte lebih disarankan). Versi 2.0 dari Microsoft Access ini datang dengan tujuh buah disket floppy 3½ inci berukuran 1.44 megabyte. Perangkat lunak tersebut bekerja dengan sangat baik pada sebuah basis data dengan banyak record tapi terdapat beberapa kasus di mana data mengalami kerusakan. Sebagai contoh, pada ukuran basis data melebihi 700 megabyte sering mengalami masalah seperti ini (pada saat itu, memang hard disk yang beredar masih berada di bawah 700 megabyte). Buku manual yang
32
dibawanya memperingatkan bahwa beberapa kasus tersebut disebabkan oleh driver perangkat yang kuno atau konfigurasi yang tidak benar. Nama kode (codename) yang digunakan oleh Access pertama kali adalah Cirrus yang dikembangkan sebelum Microsoft mengembangkan Microsoft Visual Basic, sementara mesin pembuat form antar muka yang digunakannya dinamakan dengan Ruby. Bill Gates melihat purwarupa (prototype)
tersebut
dan
memutuskan
bahwa
komponen
bahasa
pemrograman BASIC harus dikembangkan secara bersama-sama sebagai sebuah aplikasi terpisah tapi dapat diperluas. Proyek ini dinamakan dengan Thunder. Kedua proyek tersebut dikembangkan secara terpisah, dan mesin pembuat form yang digunakan oleh keduanya tidak saling cocok satu sama lainnya. Hal tersebut berakhir saat Microsoft merilis Visual Basic for Applications (VBA).
BAB III ANALISA SISTEM
3.1
Analisis Sistem
Pada analisis sistem ini akan dilakukan analisis terhadap data gambar masukan dan menemukan kembali data gambar masukan dengan data gambar yang ada pada basis data.
3.2
Analisis Citra
Analisa citra merupakan ekstraksi informasi yang berarti dari gambar; terutama dari gambar digital dengan cara teknik pengolahan citra digital. Dalam analisis citra dapat mencakup beberapa tugas-tugas sebagai berikut : 1. Menemukan bentuk. 2. Menemukan deteksi tepi. 3. Menghitung warna. 4. Mengukur sifat suatu objek. 5. Membandingkan warna.
Berikut ini cara menganalisa citra masukan : 1. Pengguna memilih gambar yang ada di data penyimpanan pada komputer. 2. Dilakukan perhitungan besarnya pixel citra, dan perhitungan banyaknya Red Green Blue (RGB).
33
34
3. Tampilan data citra akan di ubah ke dalam bentuk warna abu-abu atau biasa disebut Grayscale (Gs). 4. Pengukuran tingkat kecerahan warna abu-abu. 5. Pada proses menemukan kembali citra tersebut, dilakukan perbandingan tiap ukuran warna. 6. Melakukan proses perubahan citra dengan metode deteksi tepi. 7. Mencari kesamaan warna berdasarkan histogram warna. 8. Hasil dari histogram warna diperoleh dengan pengurutan data citra temuan dari yang terbesar ke yang terkecil berdasarkan tingkat kemungkinan muncul warna yang telah dibandingkan. 9. Pencarian penyamaan bentuk.
3.3
Analisa Histogram Warna
Histogram warna menyediakan distribusi perhitungan kekompakan data dalam sebuah gambar. Warna histogram dari suatu gambar relatif bervariasi sesuai dengan terjemahan dan rotasi terhadap arah melihat, dan hanya berbeda sedikit dengan sudut pandang. Dengan membandingkan histogram warna dari dua gambar dan mencocokkan isi warna satu gambar dengan yang lain, histogram warna sangat cocok untuk masalah mengenali sebuah objek dari posisi yang tidak diketahui dan rotasi dalam sebuah adegan. Yang penting, terjemahan dari suatu gambar RGB ke dalam pencahayaan ruang yang memungkinkan histogram dapat beroperasi dengan baik dalam berbagai tingkat cahaya. Representasi tergantung dari warna objek yang sedang
35
diteliti, dengan mengabaikan pola tekstur. Histogram warna berpotensi mengidentifikasikan dua foto atau gambar dengan isi objek yang berbeda yang terjadi untuk berbagi informasi warna. Untuk jumlah ruang (bin), dan ukuran yang berbeda dapat mengungkapkan bin fitur yang berbeda dari data, dan tidak ada pedoman yang sistematis. Beberapa teori telah berusaha untuk menentukan jumlah optimal dari bin, tetapi metode ini umumnya membuat asumsi yang kuat tentang bentuk distribusi. Maka, akhirnya jumlah bin tergantung pada distribusi data aktual dan tujuan analisis, dan bin yang berbeda terhadap pencocokan, sehingga eksperimen biasanya diperlukan untuk menentukan jumlah tiap bin.
3.3.1 Contoh Kasus Histogram Warna
Data berikut merupakan histogram warna dalam ruang warna RGB dan Grayscale, menggunakan nilai yang merupakan himpunan dari 0-255 yang kemudian dibagi ke dalam lima intensitas ruang(Bin). Ditunjukkan pada keterangan di bawah ini : Nilai [0,255] 1. Bin 1 adalah 0-51. 2. Bin 2 adalah 52-102. 3. Bin 3 adalah 103-153. 4. Bin 4 adalah 154-204. 5. Bin 5 adalah 205-255.
36
Langkah 1 : Pemilihan gambar dan dilanjutkan dengan penentuan besarnya nilai RGB yang terdapat pada citra, dimulai dari pixel pertama hingga pixel terakhir. Nilai yang didapat di sesuaikan dengan nilai interval tiap-tiap bin. Sebelum analisa nilai tiap bin dinetralkan dengan nilai 0, dan ketika analisa terus di dapat nilai kisaran bin(x), maka nilai bin(x) bertambah satu. Misalkan, gambar yang memiliki tiga pixel, untuk warna red, pixel pertamanya bernilai 27, maka termasuk bin1, dan nilai bin1 bertambah satu. Lalu pixel kedua bernilai 112, maka termasuk bin3 dan nilai bin3 bertambah satu. Dilanjutkan pada pixel ketiga yang bernilai 145, maka termasuk bin3 dan nilai bin3 kembali bertambah satu. Sehingga didapat nilai total akhir pada intensitas warna red adalah : 1. Bin 1 berjumlah total 1 2. Bin 2 berjumlah total 0 3. Bin 3 berjumlah total 3 4. Bin 4 berjumlah total 0 5. Bin 5 berjumlah total 0 Nilai di atas belum termasuk nilai untuk warna Green, Blue dan Grayscale. Sebagai contoh, sebuah citra yang diambil dari komputer:
Gambar 3.1 Gambar citra masukan
37
Dari perhitungan pixel, bahwa gambar ini memiliki total pixel 400x300 = 120000, sehingga analisa warna red secara keseluruhan berjumlah sama dengan total pixel. Begitupun untuk analisa warna lainnya.
Langkah 2 : Untuk analisa histogram warna grayscale, perhitungan tetap sama seperti sebelumnya, namun gambar diubah dari bentuk warna RGB ke bentuk warna abu-abu. Lalu dilanjutkan kembali menghitung warna abu-abu dari pixel pertama ke pixel terakhir. Ketika perhitungan nilai abu-abu selesai maka didapat pada hasil akhir dari perhitungan histogram warna tiap bin untuk warna RGB dan Grayscale, sesuai dengan tabel berikut : Tabel 3.1 Tabel histogram warna Red
Green
Blue
Grayscale
Bin 1
0
31.704
10.162
900
Bin 2
261
24.308
32.789
33.499
Bin 3
2.296
9.039
17.564
24.505
Bin 4
34.284
1.651
5.642
7.558
Bin 5
83.159
53.298
53.843
53.538
Langkah 3 : Dalam kasus histogram warna, dilakukan proses normalisasi. Tahap normalisasi berguna nantinya untuk pencarian kesamaan citra dengan jumlah pixel yang berbeda.
38
Pada tabel normalisasi dilakukan perhitungan sebagai berikut : Normalisas i round (
i ) x100 Max
Keterangan : i
= nilai bin pada gambar.
Max
= Nilai maksimal dari histogram warna pada bin.
Misalkan, sebuah gambar yang memiliki tiga pixel dengan warna red pada Bin1 berjumlah 1, nilai bin3 berjumlah 2, dan nilai bin lainnya berjumlah 0, maka nilai max nya adalah pada bin3 dengan nilai 2. Jadi, hasil normalisasi bin1 adalah round(½)*100 = 50. Pada kasus nyata, semua nilai tiap Bin selalu terisi, sehingga tidak ada nilai 0 pada tiap bin nya. Di bawah ini merupakan tabel hasil normalisasi histogram untuk gambar masukan. Tabel 3.2 Tabel normalisasi histogram warna Red
Green
Blue
Grayscale
Bin 1
0
38
12
1
Bin 2
0
29
39
40
Bin 3
3
11
21
29
Bin 4
41
2
7
9
Bin 5
100
64
65
64
Gambar beserta nilai-nilainya ini dapat di simpan ke dalam basis data, untuk menjadi citra referensi dalam proses temu kembali citra.
39
3.3.2 Contoh Kasus Histogram Matching
Bertujuan untuk menormalkan dua gambar, dan mencari nilai kesamaan dari dua gambar tersebut, ketika gambar yang diperoleh pada pencahayaan lokal yang sama (seperti bayangan) di atas lokasi yang sama, dan kondisi yang sama, walaupun terjadi penurunan jumlah pixel. Untuk Histogram Matching, dilakukan proses pencarian indeks nilai terdekat, di atur kisaran (-1,0,1) pada citra masukan :
1 F (x) 0 1 Sebagai contoh, terdapat sebuah citra masukan ‘A’ yang ingin dibandingkan dengan gambar referensi ‘ b1 ’ dan ‘ b2 ’ yang sebelumnya telah tersimpan pada basis data. Nilai citra masukan pada bin3 adalah 2, maka perhitungan indeks terdekatnya adalah :
2 1 FA( R3 )2 0 2 1 Sehingga memunculkan nilai kisaran FA( R3 ) = (1,2,3). Dan hasil ini akan dibandingkan dengan citra referensi. Seandainya nilai citra referensi termasuk ke dalam interval nilai tersebut, maka dapat di katakan matching, dan nama citra referensi disimpan ke dalam penampungan sementara, sebagai data temuan. Anggapannya nilai b1 dan b2 untuk warna red pada bin3 adalah 1 dan 5, maka akan terlihat sebagai berikut :
40
FA( R3 ) = (1,2,3) b1 ( R3 ) = 1 b2 ( R3 ) = 5 MA( R3 ) = b1 ( R3 ) Dengan jumlah temuan pada b1 = 1, dan seandainya data ditemukan lagi pada nilai warna lainnya, maka temuan bertambah, dilanjutkan dengan nilai b1 dan b2 nilai bin4 adalah 7 dan 8.
FA( R4 ) = (6,7,8) b1 ( R3 ) = 7 b2 ( R3 ) = 8
MA( R4 ) = b1 ( R4 ) MA( R4 ) = b2 ( R4 ) Dan sekarang jumlah temuan pada b1 = 2, dan b2 = 1.
Berikut contoh tiga data citra berbentuk Bitmap Picture (BMP) yang data normalisasi histogramnya telah tersimpan pada basis data dan dilakukan pencarian nilai kesamaan dengan citra masukan, yaitu:
0.bmp
1.bmp
2.bmp
Gambar 3.2 Gambar citra referensi untuk perbandingan warna
41
Tabel 3.3 Tabel histogram warna pada ‘0.bmp’ Red
Green
Blue
Grayscale
Bin 1
0
47
3
2
Bin 2
0
23
16
35
Bin 3
3
12
24
33
Bin 4
17
3
28
14
Bin 5
100
34
48
35
Tabel 3.4 Tabel histogram warna pada ‘1.bmp’ Red
Green
Blue
Grayscale
Bin 1
0
13
33
1
Bin 2
1
35
22
16
Bin 3
2
16
7
38
Bin 4
10
1
2
9
Bin 5
100
48
48
48
Tabel 3.5 Tabel histogram warna pada ‘2.bmp’ Red
Green
Blue
Grayscale
Bin 1
0
38
12
1
Bin 2
0
29
39
40
Bin 3
3
11
21
29
Bin 4
41
2
7
9
Bin 5
100
64
65
64
42
Sebagai contoh citra masukan nya, adalah gambar ‘Lighthouse.jpg’ yang sebelumnya telah dihitung nilai normalisasi nya. Maka, untuk perbandingan nilai yang dapat diterima untuk warna Green pada bin pertama dengan nilai G1 = 87, adalah :
38 1 F (G1 )38 0 = ( (38-1),(38+0),(38+1) ) = (37,38,39). 38 1 Dan, untuk nilai selanjutnya pada nilai histogram warna setiap bin nya, mengikuti pola perhitungan seperti sebelumnya, sehingga dapat ditunjukkan pada nilai dibawah ini :
F ( R1 ) =(0,0,1)
F (G1 ) =(37,38,39)
F ( R2 ) =(0,0,1)
F (G2 ) =(28,29,30)
F ( R3 ) =(2,3,4)
F (G3 ) =(10,11,12)
F ( R4 ) =(40,41,42)
F (G4 ) =(1,2,3)
F ( R5 ) =(99,100,101)
F (G5 ) =(63,64,65)
F ( B1 ) =(11,12,13)
F (Gs1 ) =(0,1,2)
F ( B2 ) =(38,39,40)
F (Gs2 ) =(39,40,41)
F ( B3 ) =(20,21,22)
F (Gs3 ) =(28,29,30)
F ( B4 ) =(6,7,8)
F (Gs4 ) =(8,9,10)
F ( B5 ) =(64,65,66)
F (Gs5 ) =(63,64,65)
43
Tahapan berikutnya adalah mencari nilai yang sama dengan nilai indeks terdekat antara citra masukan dengan citra pada basis data. Ketika nilai indeks terdekat citra masukan sama dengan nilai citra pada basis data, maka nama citra pada basis data tersebut akan di tampung ke ruang penambungan sementara. Ruang penambungan ini akan terus bertambah ketika nilai berikutnya bernilai sama, dan tidak akan bertambah ketika nilai citra masukan tidak ada pada semua citra dalam basis data. Hal ini terus berulang sampai pencocokan nilai terakhir. Berikut perbandingan nilai indeks untuk warna Green F (G1 ) pada citra masukan dan nilai G1 pada citra basis data, untuk mencari nilai yang sama :
F (G1 ) pada citra masukan = (37,38,39) G1 pada citra ‘0.bmp’ = 47 G1 pada citra ‘1.bmp’ = 13 G1 pada citra ‘2.bmp’ = 38 Didapati nilai F (G1 ) ada pada citra ‘2.bmp’ dengan nilai 38. Maka nama citra ‘2.bmp’ disimpan masuk ke penampungan sementara. Nilai perbandingan dilakukan pada warna Red pada bin pertama
F (G2 ) , dan berakhir pada pencarian akhir F ( x akhir ) , banyaknya tergantung kebutuhan, contoh disini menggunakan 20 bin. Jadi berakhir pada bin ke-20, yaitu pada G5 .
44
F ( R1 ) pada citra (0,1,2)
F (G1 ) pada citra (2)
F ( R2 ) pada citra (0,1,2)
F (G2 ) pada citra (2)
F ( R3 ) pada citra (0,1,2)
F (G3 ) pada citra (0, 2)
F ( R4 ) pada citra (2)
F (G4 ) pada citra (0,1,2)
F ( R5 ) pada citra (0,1,2)
F (G5 ) pada citra (2)
F ( B1 ) pada citra (2)
F (Gs1 ) pada citra (0,1,2)
F ( B2 ) pada citra (2)
F (Gs2 ) pada citra (2)
F ( B3 ) pada citra (2)
F (Gs3 ) pada citra (2)
F ( B4 ) pada citra (2)
F (Gs4 ) pada citra (1,2)
F ( B5 ) pada citra (2)
F (Gs5 ) pada citra (2)
Setelah perbandingan nilai akhir selesai, dilakukan pencatatan jumlah nilai kesamaan nya sebanyak berapa kali. Terlihat nilai kesamaan ada pada citra ‘0.bmp’,’1.bmp’, dan ‘2.bmp’. Ketika jumlah nilai status sama dengan jumlah banyaknya histogram yang dicari, maka dapat dipastikan citra pada basis data itu, adalah benar atau sama dengan citra masukan. Dari data pencarian citra, diketahui citra ‘0.bmp’ telah ditemukan nilai sebanyak tujuh kali, ‘1.bmp’ sebanyak tujuh kali, dan citra ‘2.bmp’ ditemukan nilai sebanyak dua puluh kali. 0.bmp = 7 1.bmp = 7 2.bmp = 20
45
Lalu diurutkan nilai kesamaan dengan metode pengurutan secara descending (dari nilai terbesar ke yang terkecil). Hasil akhir : 2.bmp = 20 0.bmp = 7 1.bmp = 7 Langkah terakhir adalah menentukan perhitungan persentase temu kembali citra diketahui berdasarkan histogram warna, dengan : jumlah nilai sama x100% jumlah pencarian nilai
Tujuan nya adalah untuk memperkirakan kemungkinan kemiripan gambar yang dianggap sesuai atau tidaknya. Dikatakan sesuai, apabila persentase gambar citra referensi melebihi 70% dari citra masukan, dan dikatakan tidak sesuai ketika nilai persentase kurang dari 70%. Jika terjadi nilai 100%, maka citra referensi sama dengan citra masukan. Pada ‘2.bmp’ dihitung (20/20) x100% didapat hasil 100%, pada ‘0.bmp’ dihitung (7/20)x100% didapat hasil 35%, dan pada ‘1.bmp’ dihitung (7/20)x100% didapat hasil 35%. Maka citra hasil dari temu kembali citra berdasarkan histogram warna pada gambar adalah sebagai berikut :
2.bmp
0.bmp
1.bmp
Gambar 3.3 Gambar citra kandidat berdasarkan histogram
46
3.4
Analisa Bentuk
3.4.1 Deteksi Tepi
Pada analisa ini, pembuatan citra masukan dengan memanfaatkan citra abu-abu, untuk diubah ke dalam bentuk 2Dimensi Convolution dengan memanfaatkan fungsi dari operator Prewitt, untuk menetukan deteksi tepi dari citra. Dibawah merupakan contoh hasil perubahan dari RGB ke abu-abu, dan dilanjutkan ke perubahan 2D konvolusi.
Gambar 3.4 Gambar hasil deteksi tepi
3.4.2 Integrated Region Matching
Untuk perhitungannya sendiri menggunakan algoritma Integrated Region Matching (IRM). Algoritma IRM memungkinkan bagian wilayah dalam sebuah gambar untuk dicocokkan dengan beberapa daerah pada gambar lain. Dalam algoritma yang diusulkan, untuk setiap ROI di gambar masukan pada perhitungan fitur bentuk dan dibandingkan dengan ROI target gambar dikalikan dengan signifikansi sesuai daerah. Akhirnya dari m×n, dimana jarak m dan n adalah jarak ditambahkan untuk mendapatkan jarak D
47
atau Distance. Dengan metode ini jika gambar yang dibandingkan dengan sama dengan dirinya sendiri, maka akan menunjukkan hasil yang cocok. Berikut adalah satu contoh pemilihan sub-block, yang terdiri atas blok berbentuk 3x3.
Pada citra di atas, ditunjukkan sebuah bujur sangkar dengan gambar segitiga siku-siku, diberi nama ‘K’. Lalu dilakukan pengukuran jarak Eucladian, dimulai dari nilai awal pada gambar hingga nilai garis yang telah dideteksi tepinya. Dimana nilai awal ditunjukkan dengan angka 0 dan nilai mendatar pada n (nilai pada sumbu x) dan m (nilai pada sumbu y), sebagai nilai vertikal. 0
n
m Dianggapkan gambar di atas memiliki pixel n sebesar 100 dan nilai m nya adalah 100. Dan dilakukan perhitungan dengan garis pada deteksi tepi. Misalkan pada bagian mendatar pertama dengan area sumbu y, didapatkan nilai titik temu awal pada nilai n=1, sehingga (n,m) = (15,10).
48
15 10
Dan selanjutnya adalah menentukan jarak tepian yang merujuk pada garis (n,m), terlihat seperti gambar yang ada di bawah:
Nilai pada citra ‘K’ adalah : Bagian sebelah kiri : (15,10),(15,20),(15,30),(15,40),(15,50),(15,60),(15,70), (15,80),((15,90), dan bagian sebelah kanan :
(85,10),(76,20),(67,30),
(58,40),(49,50),(40,60),(31,70),(22,80),((13,90). Langkah berikutnya dengan memperkirakan jarak terdekat sehingga memungkinkan untuk mencari gambar yang mendekati atau mirip, dengan memakai nilai interval yang telah ditentukan, anggapan interval nya adalah bernilai 5. Seperti terlihat pada gambar di bawah ini :
Sehingga pengukuran nilai kesamaan akan dilakukan dengan perbandingan nilai yang telah di arsir seperti di atas. Misalkan, terdapat tiga buah citra yang telah tersimpan pada basis data, yang bernama ‘a,b,c’. Lalu
49
dilanjutkan dengan pengukurannya, dan ketika nilai nya mendekati angka tertinggi, maka dapat diperkirakan bahwa gambar tersebut mirip dengan gambar citra.
Dari tiap gambar di atas, ditentukan nilai bagiannya, baik yang dari sebelah kiri dan dari sebelah kanan, lalu dibandingkan nilai-nilai tersebut dengan nilai data yang ingin di cari:
Sebelah kiri pada citra : ‘K’= (15,10),(15,20),(15,30),(15,40),(15,50),(15,60),(15,70),(15,80),(15,90) ‘a’= (17,10),(17,20),(17,30),(17,40),(17,50),(17,60),(17,70),(17,80),(17,90) ‘b’= (50,10),(40,20),(30,30),(20,40),(10,50),(20,60),(30,70),(40,80),(50,90) ‘c’= (0,10),(0,20),(12,30),(12,40),(12,50),(12,60),(12,70),(12,80),(12,90)
Sebelah kanan pada citra : ‘K’=(85,10),(76,20),(67,30),(58,40),(49,50),(40,60),(31,70),(22,80),(13,90). ‘a’= (15,10),(15,20),(15,30),(15,40),(15,50),(15,60),(15,70),(15,80),(15,90) ‘b’= (50,10),(40,20),(30,30),(20,40),(10,50),(20,60),(30,70),(40,80),(50,90) ‘c’=(0,10),(0,20),(68,30),(59,40),(50,50),(41,60),(32,70),(23,80),(14,90). Ketika dilakukan perbandingan, maka di dapati nilai hasil yang mencakup nilai interval, dan didapat hasil sebagai berikut :
50
1. Nilai kesamaan pada bagian kiri : K(a)=(17,10),(17,20),(17,30),(17,40),(17,50),(17,60),(17,70),(17,80),(17,90) K(b)=( 20,40),(10,50),(20,60) K(c)=(12,30),(12,40),(12,50),(12,60),(12,70),(12,80),(12,90) 2. Nilai kesamaan pada bagian kanan : K(a)=(15,90) K(b)=(30,70) K(c)=(68,30),(59,40),(50,50),(41,60),(32,70),(23,80),(14,90) Ketika dibuat suatu nilai persentasi, didapat nilai kesamaan pada citra ‘a’=50%, kesamaan pada citra ‘b’=20%, dan kesamaan pada citra ‘c’=90%. Maka, dipastikan citra kandidat hasil dari bentuk citra ‘K’ mirip dengan bentuk citra ‘c’.
3.5
Analisis Waktu Pemrosesan
Analisis ini membahas tentang cara membandingkan waktu dalam prosesnya. Data temuan berbanding lurus dengan waktu, jadi dapat diartikan ketika banyaknya data temuan, waktu untuk menemukan hasil kandidat akan banyak juga. Misal, nilai yang ingin dicari, lima nilai pada citra A, dan dibandingkan dengan tiga gambar yaitu 1,2, dan 3. Dapat dilihat oleh tabel berikut :
51
Nilai A
56
55
23
22
78
1
56
55
48
22
78
2
56
55
23
22
78
3
56
55
23
51
78
Gambar data temuan ditampung dalam media penampungan sementara, sehingga dapat disimpulkan pada gambar sebagai berikut, karena terdapat beberapa data yang ingin dibandingkan mencapai 13 data, dengan perbandingan tiga gambar, yaitu (1,2,3, 1,2,3, 1,3, 1,2, 1,2,3), sementara banyak data berbanding lurus dengan waktu, sehingga waktu proses menjadi makin lama. Anggapan bahwa setiap satu data, membutuhkan waktu 0.01 detik, maka dengan 13 data didapat waktu 0.13 detik. Ketika gambar yang ingin dibandingkan sekitar 100 gambar dengan perbandingan 20 nilai, dan hasil temuan berkisar 60 gambar, dengan ratarata per gambar adalah 4 temuan. Dengan waktu 0.01 detik dikalikan dengan 4x60=240. Bisa diketahui bahwa gambar akan diperhitungkan lamanya selama 2.40 detik. Pada contoh sebelumnya, bahwa nilai pada gambar A terdapat pada gambar 1,2,3, lalu dilakukan pengurutan nilai dengan membandingkan banyak nya data hasil temuan. Dengan teknik pengurutan secara descending, didapat hasil :
52
for i = 1 to 3 do for j = 1 to 3 do if temuan[j] < temuan[j+1] then temp1 := temuan[j]; temuan[j] := temuan[j+1]; temuan[j+1] := temp1; Dengan anggapan waktu pemrosesan pada gambar membutuhkan waktu 0.01 detik, pada 3 gambar didapat nilai waktu 0.03 detik. Jika waktu yang dibutuhkan untuk proses perbandingan 3 gambar, ditotalkan dengan waktu sebelumnya, maka ditemukan nilai waktu yaitu, 0.03 + 0.13 = 0.16 detik. Dapat disimpulkan bahwa semakin banyak data yang ditemukan akan semakin memperbesar waktu dalam prosesnya.
3.6
Analisis Kebutuhan Sistem
Pada analisis kebutuhan akan menjelaskan tentang analisis yang di lakukan penulis dalam perancangan temu kembali citra ini, antara lain adalah sebagai berikut:
3.6.1 Kebutuhan Perangkat Keras
Perangkat keras komputer (hardware) adalah semua bagian fisik komputer, dan dibedakan dengan data yang berada di dalamnya atau yang beroperasi di dalamnya, dan dibedakan dengan perangkat lunak (software) yang menyediakan instruksi untuk perangkat keras dalam menyelesaikan
53
tugasnya. Pada umumnya perangkat keras dan perangkat lunak merupakan satu kesatuan yang dapat membantu dalam pengolahan data pemasukan dan pengeluaran.
3.6.2 Kebutuhan Perangkat Lunak
Perangkat lunak adalah istilah umum untuk data yang di format dan di simpan secara digital, termasuk program komputer, dokumentasinya, dan berbagai informasi yang bias dibaca dan ditulis oleh komputer. Pada pengolahan data dan pembuatan laporan data pemasukan dan pengeluaran sering terjadi kesalahan-kesalahan dikarenakan pembuatan laporan masih secara manual, untuk itu perancangan sistem pengolahan data ini dapat dikembangkan dan diimplementasikan dengan menggunakan perangkat lunak. Hal ini dilakukan karena perangkat lunak pada umumnya dapat mendukung serta dapat membantu dalam pengolahan data pengeluaran dan pemasukan.
BAB IV PERANCANGAN SISTEM 4.1
Perancangan Sistem
Untuk merancang sebuah aplikasi yang mempunyai kemampuan yang baik, maka harus dilakukan terlebih dahulu suatu analisis terhadap suatu aplikasi yang akan dibangun. Dan dalam perancangan aplikasi ini, telah dilakukan analisis terhadap sistem dan prosedur yang ada pada saat ini dan semuanya telah dibahas dalam bab sebelumnya. Pada bab ini akan dijelaskan mengenai prilaku yang terjadi dalam sistem dan bagaimana sistem berinteraksi dengan user (pemakai). Pada bagian ini perancangan ini akan membahas tentang Flowchart, Diagram Konteks, dan Data Flow Diagram.
4.2
Tujuan Perancangan Perangkat Lunak
Tujuan dari perangkat lunak ini adalah penanganan atas permasalahanpermasalahan yang ada dan mendapatkan gambaran dari sistem perangkat lunak yang akan dibangun sesuai dengan ruang lingkup masalah yang telah ditentukan, sehingga dapat mempermudah pengguna.
52
53
4.2.1 Flowchart Flowchart atau diagram alir merupakan sebuah diagram dengan simbol- simbol grafis yang menyatakan aliran algoritma atau proses yang menampilkan langkah-langkah yang disimbolkan dalam bentuk kotak, beserta urutannya dengan menghubungkan masing masing langkah tersebut menggunakan tanda panah. Diagram ini bisa memberi solusi selangkah demi selangkah untuk penyelesaian masalah yang ada di dalam proses atau algoritma tersebut. 4.2.1.1 Flowchart pada citra gambar Berikut adalah prosedur citra gambar : 1. User memasukkan data gambar. 2. Citra
masukan
dilakukan
dua
proses,
pertama
untuk
menentukan warna pada histogram dan proses kedua untuk merubah citra masukan ke bentuk citra dengan warna abu-abu. 3. Hasil proses pertama berupa histogram warna untuk citra masukan. 4. Untuk
proses
ubahan
citra
ke
warna
abu-abu,
akan
menghasilkan citra dengan warna abu-abu. 5. Pemrosesan histogram warna pada citra dengan warna abu-abu. 6. Lalu citra abu-abu akan diproses lagi, untuk merubah citra tersebut ke dalam bentuk deteksi tepi. 7. Citra akhir berupa citra dengan deteksi tepi.
54
Gambar 4.1 Flowchart pada citra gambar 4.2.1.2 Flowchart image retrieval berdasarkan histogram Berikut adalah prosedur image retrieval berdasarkan histogram : 1. Citra masukan dengan histogram warna. 2. Citra referensi untuk perbandingan yang diambil dari database. 3. Citra
masukan
dan
citra
referensi
histogramnya dengan citra masukan. 4. Citra hasil berupa citra kandidat.
akan
dibandingkan
55
Gambar 4.2 Flowchart image retrieval berdasarkan histogram
4.2.1.3 Flowchart image retrieval berdasarkan bentuk Berikut adalah prosedur image retrieval berdasarkan bentuk : 1. Citra masukan dengan deteksi tepi. 2. Citra referensi untuk perbandingan yang diambil dari database. 3. Citra masukan dan citra referensi akan dibandingkan jarak tepian dengan citra masukan. 4. Hasil akhir dari citra yang telah di ukur perbandingan nya, yaitu berupa citra kandidat.
56
Gambar 4.3 Flowchart image retrieval berdasarkan bentuk
4.3
Diagram Konteks
Untuk menggambarkan sistem secara umum yang mewakili seluruh proses yang terjadi dan menggambarkan bagaimana hubungan antara proses utama dengan
entitas ekternal
yang
terlibat
dalam
sistem,
maka
penyusun
menggambarkan diagram konteks dari sistem yang diusulkan sebagai berikut :
57
Gambar 4.4 Diagram konteks temu kembali citra
4.3.1 Data Flow Diagram
Data Flow Diagram merupakan peralatan yang berfungsi untuk menggambarkan secara rinci mengenai sistem sebagai jaringan kerja antar fungsi yang berhubungan satu sama lain dengan menunjukan dari dan kemana data mengalir serta penyimpanannya. Berikut adalah DFD temu kembali citra :
1. DFD level 0
DFD level 0 menjelaskan mengenai proses-proses yang terjadi pada implementasi secara terperinci. Gambar dibawah ini menjelaskan Data Flow Diagram level 0.
58
Gambar 4.5 DFD level 0 temu kembali citra
2. DFD level 1
Gambar 4.6 DFD level 1 Proses hitung nilai vektor ke Tabel_temp
59
3. DFD level 2
Gambar 4.7 DFD level 2 Proses hitung nilai vektor ke Tabel_data 4. DFD level 3
Gambar 4.8 DFD level 3 Proses perbandingan nilai pada citra
60
4.4
Rancangan Struktur Program
Struktur program merupakan suatu gambaran dalam bentuk bagan yang dibuat untuk mengidentifikasikan dan mengilustrasikan program ke dalam bentuk pemodelan. Rancangan struktur program ini berguna untuk menggambarkan model-model yang membangun sistem Informasi tersebut diatas. Adapun struktur programnya adalah sebagai berikut :
Gambar 4.9 Struktur program
61
4.5
Rancangan Input Perancangan Input, tampilan dirancang sedemikian rupa agar mudah
dioperasikan oleh pemakai. Untuk setiap eksekusi peralatan yang digunakan berupa keyboard dan mouse. Adapun form inputan yang penyusun rancang meliputi beberapa form
yang
kembali citra. Berikut
akan
gambaran
dibutuhkan
pada
implementasi temu
dari setiap masing – masing form yang
penyusun rancang dalam membangun aplikasi ini.
Citra dengan warna RGB
Citra warna abu-abu
Citra kandidat hasil Nama Citra hasil
Gambar
Citra dengan 2d convolve
Database
Simpan
Gambar 4.10 Perancangan form input
Citra pada basis data
Gambar 4.11 Perancangan form database
Proses
BAB V IMPLEMENTASI SISTEM
5.1
Defenisi Implementasi Sistem
Defenisi implementasi sistem adalah langkah-langkah atau prosedur yang dilakukan dalam menyelesaikan desain sistem yang telah disetujui, untuk menguji, menginstal memulai sistem baru atau sistem yang di perbaiki.
5.2
Tujuan Implementasi Sistem
Tujuan dari implementasi sistem yaitu agar sistem yang akan dibangun sesuai dengan apa yang diharapkan, adapun dari tujuan dari implementsi sistem yaitu: 1. Menyelesaikan desain sistem yang ada dan telah disetujui. 2. Menulis, menguji program dan prosedur-prosedur. 3. Memastikan bahwa konferensi ke sistem baru bisa berjalan dan melatih pemakai. 4. Memperhitungkan bahwa sistem memenuhi permintaan yaitu dengan menguji sistem saecara menyeluruh. Langkah-langkah yang dilakukan dalam melaksanakan implementasi sistem adalah:
62
63
a. Menyelesaikan desain sistem. b. Mendapatkan software dan hardware. c. Menulis, menguji, mengontrol dan mendokumentasikan program. d. Menyelesaikan manual pemakai. e. Mendapatkan persetujuan.
5.3
Pemilihan Bahasa Pemrograman
Tahap implementasi sistem merupakan tahapan meletakan sistem agar dalam proses pengolahan data serta sistem informasi pada perekaman data selalu siap untuk di operasikan. Di sini dalam tahap implementasi sistem pengolahan data siswa baru direkam ke dalam proses pengolahan data setelah dilakukan analisis rinci. Maka dalam pembuatan aplikasi atau perangkat lunak (software) dilakukan pemilihan bahasa pemograman yang sesuai dengan sistem, di sini kami mencoba untuk melakukan pembuatan aplikasi proses pendataan siswa dengan menggunakan pemrograman visual yang berjalan di sistem operasi windows 98, Me, 2000, XP, Vista dan Windows 7 yaitu bahasa pemrograman Borland delphi 7. Kegiatan yang dilakukan dalam tahap implementasi sistem adalah memindahkan logika program yang telah dibuat ke dalam bahasa yang dipilih. Adapun tujuan dan alasan digunakan bahasa pemograman Borland delphi 7 adalah sebagai berikut :
64
1. Borland delphi 7 memanfaatkan pemograman visual sehingga lebih mempermudah dalam mendesain tampilan program. 2. Borland delphi 7 memiliki kompiler untuk mengoptimalkan rutin program yang tertulis. 3. Borland delphi 7 dapat menghasilkan output program dengan kecepatan akses dan efesien file yang baik.
5.4
Fasilitas Program
Penyusunan program ini menyediakan fasilitas-fasilitas yang meliputi : a. Simpan Data Fasilitas file yang disediakan untuk melakukan menambah data agar tersimpan dalam file basis data sehubungan dengan perkembangan pada data citra. b. Hapus Data Hapus data merupakan proses penghapusan data yang di dalam file basis data. c. Input Data Fasilitas yang disediakan untuk entry data berupa pemasukan data citra yang baru. d. Proses Data Fasilitas yang disediakan untuk menemukan hasil akhir citra kandidat yang sesuai dengan proses penghitungan algoritma.
65
5.5
Kegiatan Implementasi
Dalam perancangan hasil rancangan ke dalam sebuah sistem dan aplikasi yang kemudian akan memperlihatkan output sebagai hasil implementasi. Kegiatan implementasi meliputi implementasi basis data, dan implementasi antar muka. 1.
Implementasi basis data Implementasi basis data dilakukan dengan mengunakan basis data access yang tersimpan pada drive local. Nama Basis Data
: db.mdb
Tabel 5.1 Hasil Implementasi Basis Data No
2.
Nama table
Hasil implementasi
Keterangan
1.
Table1
Menyimpan data Tabel data query inputan (sementara)
2.
Table2
Menyimpan data Tabel basis data untuk penambahan data baru
Pengujian program Dengan pengujian program ini diharapkan program dapat menerima dengan baik, memproses dan memberikan keluaran program
yang
baik
pula.
Tahap
pengujian
ini
dilakukan
menggunakan metode black box. Pengujian black box adalah pengujian yang berdasarkan fungsi dasar dari masing-masing proses pada program. Tahap pengujian ini dilakukan untuk proses input misalnya input data gambar yang terdapat dalam komputer.
66
Kemudian tahap selanjutnya dilakukan pengujian terhadap proses perbandingan yang dihasilkan oleh program. Uji coba black box berusaha untuk menemukan kesalahan dalam beberapa kategori, diantaranya : 1. Fungsi-fungsi yang salah atau hilang 2. Kesalahan interface 3. Kesalahan dalam struktur data atau akses database external 4. Kesalahan performa 5. Kesalahan inisialisasi dan terminasi
Tabel 5.2 Hasil Pengujian Blackbox
No 1
Nama Fungsi Yang Di Uji Fungsi Input
Skenario Pengujian Memilih data gambar
Hasil Diharapkan Citra muncul pada aplikasi
Hasil Kenyataan Sesuai Harapan
Kesimpul an Valid
2
Fungsi Simpan
Menyimpan Data
Penyimpanan data Berhasil
Sesuai Harapan
Valid
3
Fungsi Proses
Valid
Fungsi Hapus
Menemukan citra hasil kandidat Penghapusan Data Berhasil
Sesuai Harapan
4
Memproses data gambar dengan perhitungan Menghapus Data
Sesuai Harapan
Valid
5
Fungsi Keluar
Keluar Dari Form / Aplikasi
Berhasil Keluar
Sesuai Harapan
Valid
67
3.
Implementasi Antar Muka Implementasi perangkat lunak ini dilakukan dengan membuat file project dari perangkat lunak yang dibuat yaitu citra1.exe. Suatu file projek merupakan gabungan dari berbagai form program. Form berfungsi untuk melaksanakan pengendalian terhadap proses yang dilakukan. Setiap form program berisi data tentang layer antar muka yang disimpan pada file dengan ekstensi form. Pada implementasi akan dibentuk beberapa file form dimana setiap form membentuk antar muka pemakai seperti beberapa gambar di bawah ini :
Gambar 5.1 Gambar penginputan citra pada aplikasi
68
Gambar 5.2 Gambar penyimpanan citra
Gambar 5.3 Gambar citra pada basis data
69
Gambar 5.4 Proses temu kembali citra 4.
Implementasi waktu pemrosesan Pada analisis waktu pemrosesan akan menjelaskan tentang analisis
yang di lakukan pada temu kembali citra dengan pengukuran waktu proses setiap metodenya. Pada temu kembali citra berdasarkan warna dan bentuk membutuhkan waktu tunggu sesuai dengan banyaknya perbandingan yang dilakukan pada basis data. Semakin banyak data pada basis data, akan menyebabkan waktu tunggu yang lama. Untuk waktu proses berdasarkan warna cenderung lebih cepat jika dibandingkan dengan waktu proses berdasarkan bentuk, karena pada proses warna, nilai yang dibandingkan bernilai maksimal 100, nilai yang dibandingkan bernilai maksimal tidak diketahui, tergantung ukuran jarak daerah deteksi tepiannya.
70
Tabel 5.3 Waktu proses berdasarkan warna Basis data
50
100
200
300
Waktu (detik)
1.1
1.4
3
5.2
Tabel 5.4 Waktu proses berdasarkan bentuk Basis data
50
100
200
300
Waktu (detik)
1.0
1.7
4.8
8.4
Gambar 5.5 Grafik waktu proses berdasarkan warna
Gambar 5.6 Grafik waktu proses berdasarkan warna
71
5.6
Kebutuhan Sistem Pengoperasian
5.6.1 Kebutuhan Perangkat Keras
Sistem yang dikembangkan belum dapat diimplementasikan sebelum adanya perangkat komputer guna menunjang terciptanya sistem baru, yaitu berupa perangkat lunak (software) dan perangkat keras (hardware).Perangkat keras (hardware) terdiri dari alat masukan, alat pemrosesan, alat output, dan media penyimpanan. Sedangkan perangkat lunak (software) digunakan untuk mendukung perangkat keras. Untuk dapat mengoperasikan aplikasi pengolahan data penjualan, pembelian dan service ini dibutuhkan spesifikasi hardware sebagai berikut: a.
Hardisk minimal 40 GB
b.
Memori Minimal 512 MB
c.
Processor intel dual core atau di atasnya.
d.
Monitor 14”
e.
Keyboard
f.
Mouse
5.6.2 Kebutuhan Perangkat Lunak (Software)
a.
Sistem operasi yang di gunakan adalah windows 7.
b.
Aplikasi Microsoft Word 2010 media yang dipakai untuk pengetikan laporan kerja praktek.
72
c.
Aplikasi Microsoft Visio 2007 media yang dipakai untuk membuat gambar laporan kerja praktek.
d.
Aplikasi Microsoft Access
2010 media yang dipakai untuk
pembuatan database aplikasi temu kembali citra. e.
Microsoft Borland Delphi 7 yang dipakai dalam pembuatan sistem temu kembali citra.
5.7
Pemakai (Brainware)
Dalam mengelola sebuah program temu kembali citra ini, diperlukan sumber daya manusia yang akan menjadikan program dapat berjalan dengan baik dan efisien.
BAB VI PENUTUP 6.1
Kesimpulan Dibangunnya aplikasi berupa temu kembali citra atau disebut juga image
retrieval berdasarkan warna dan bentuk, sehingga dapat mempermudah pengguna untuk mengetahui citra yang diimplementasikan. Setelah menjalankan proses temu kembali citra
ini dapat disimpulkan
beberapa hal, antara lain: 1. Menerapkan proses perhitungan kecepatan waktu pada pemrosesan. 2. Mengimplementasikan sistem temu kembali citra untuk citra bunga berdasarkan warna dengan menggunakan metode histogram warna, dengan memasukkan nilai warna abu-abu. 3. Memberitahukan tentang besaran persentasi citra yang memiliki kesamaan maupun kemiripan dengan memanfaatkan perbandingan citra yang ada pada basis data. 4. Mengimplementasikan proses histogram warna dengan menambahkan nilai normalisasinya. 5. Mengimplementasikan sistem temu kembali citra berdasarkan bentuk dengan metode integrated region matching yang tidak fokus dan membutuhkan waktu yang lama dalam proses. 6. Proses kecepatan dalam warna tidak terlalu mengalami perubahan dalam waktu prosesnya jika dibandingkan dengan proses warna lainnya.
73
74
6.2
Saran
Penerapan sistem temu kembali citra, memerlukan banyaknya informasi untuk kemudahan dalam prosesnya. Berdasarkan penelitian, untuk memperbaiki hasil temu kembali citra diperlukan informasi lain, seperti : 1. Pengimplementasian citra berdasarkan tekstur. 2. Penerapan proses bentuk dengan sudut derajat. 3. Karena banyaknya metode dalam prosesnya, diperlukan penggabungan beberapa metode, baik dalam metode warna dan bentuk, sehingga mendapatkan hasil yang maksimal. 4. Pembahasan warna dan bentuk yang tidak terlalu rumit, sehingga mempercepat waktu dalam proses nya.
DAFTAR PUSTAKA Anwar Desi. 2003. Kamus Bahasa Indonesia Terbaru, Surabaya – Awalia. Eakins, John; Graham,Margaret. "Content-based Image Retrieval". University of Northumbria at Newcastle. Retrieved 2014-03-10. H. Jogiyanto, M. Analisis Dan Perancangan Sistem Informasi,Yogyakarta. Heryanto, Imam. 2004. Membuat Database dengan Microsoft Access, Bandung, Penerbit Informatika. J.M.S. Prewitt 1970. "Object Enhancement and Extraction" in "Picture processing and Psychopictorics",Academic Press. Kadir , Abdul (2000). Konsep Dan Tuntunan Praktis Basis Data. Yogyakarta – Andi Lew, Michael (2006). Content-based Multimedia Information Retrieval: State of the Art and Challenges, et al., ACM Transactions on Multimedia Computing, Communications, and Applications, pp. 1–19. Li, Jia and James Z. Wang (2006). Real-time computerized annotation of pictures, Proceedings of the 14th annual ACM international conference on Multimedia, pp. 911920. Lowe, David G. (1999). "Object recognition from local scale-invariant features" . Proceedings of the International Conference on Computer Vision 2 . pp. 1150–1157 Nugroho, Adi .2005. Analisis Dan Perancangan Sistem Dengan Metode Berorientasi Objek, Bandung, Informatika. Shapiro, Linda G. and Stockman, George C (2003). "Computer Vision" Prentice Hall. Andris Faesal, 2009. Mengenal Borland Delphi 7 [ Online ] Available : Http://Andrisfaesal.Blogspot.Com/2009/02/Mengenal-BorlandDelphi70.Html [2011, JUNI 01 / 21.30] Wikipedia. 2006. Content Januari 2006].
Based
Image Retrieval. en.wikipedia.org. [10
LAMPIRAN
Lampiran 1 : Citra pada basis data
Lampiran 2 : Soure Code Aplikasi
program citra1;
uses Forms, Unit1 in 'Unit1.pas' {Form1},
Unit_ban in 'Unit_ban.pas' {Form2}, Unit_data in 'Unit_data.pas' {Form_data}, Unit_preview in 'Unit_preview.pas' {Form_preview};
{$R *.res}
begin Application.Initialize; Application.CreateForm(TForm2, Form2); Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm_data, Form_data); Application.CreateForm(TForm_preview, Form_preview); Application.Run; end.
unit Unit_ban;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, GIFImage, StdCtrls;
type TForm2 = class(TForm) Image1: TImage; Timer1: TTimer; Image_loading: TImage; Label1: TLabel; procedure FormActivate(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form2: TForm2; i : integer; file1 : string;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.FormActivate(Sender: TObject); begin file1 := ExtractFilePath(Application.ExeName)+'\img\'; Image1.Picture.LoadFromFile(file1+'banner.bmp'); Timer1.Enabled := True; i := 0; end;
procedure TForm2.Timer1Timer(Sender: TObject); const Check1 : array[1..6] of string = ('database','icon','BG Image I','BG Image II', 'BG Music','img\False.ico'); Check2 : array[1..6] of string = ('db.mdb','citra1.ico','img\bingkai.bmp','img\bingkai2.bmp', 'img\sound\BGM.mp3','img\False.ico'); begin inc(i); Label1.Caption := Format('Checking %s',[Check1[i]]); if FileExists(Check2[i])=False then begin Timer1.Enabled := False; ShowMessage(Format('Data %s tidak ditemukan',[Check1[i]])); Application.Terminate; end; if i > 5 then begin
Timer1.Enabled:= False; hide; form1.show; form1.button4.click; end; end;
procedure TForm2.FormCreate(Sender: TObject); begin file1 := ExtractFilePath(Application.ExeName)+'\img\'; end;
end.
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ToolWin, ComCtrls, ImgList, ExtCtrls, Buttons, ActnList,
StdActns, JPEG, Gifimage, Pngimage, ExtActns, Menus, TeEngine, Series, TeeProcs, Chart, DbChart, DB, ADODB, StdCtrls, DBTables, MPlayer, ShellAPI;
type TForm1 = class(TForm) ToolBar1: TToolBar; ToolButton1: TToolButton; T_pict1: TToolButton; ImageList1: TImageList; ActionList1: TActionList; s_pict1: TSpeedButton; OpenPicture1: TOpenPicture; Action1: TAction; DataSource1: TDataSource; Button1: TButton; ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; DBChart1: TDBChart; Memo1: TMemo; ADOQuery2: TADOQuery; Button3: TButton; ToolButton2: TToolButton; T_data1: TToolButton; Memo2: TMemo; Button2: TButton; Button4: TButton;
Timer1: TTimer; imgb_1: TImage; Image1: TImage; imgb_2b: TImage; Image1b: TImage; imgb_2c: TImage; Image1c: TImage; Button5: TButton; Label7: TLabel; Label8: TLabel; ImageList2: TImageList; ToolButton3: TToolButton; T_save1: TToolButton; DataSource2: TDataSource; ADOTable1: TADOTable; ToolButton4: TToolButton; T_proses1: TToolButton; MediaPlayer1: TMediaPlayer; ToolButton5: TToolButton; T_music1: TToolButton; Button6: TButton; Image_bentuk1: TImage; Image_bentuk2: TImage; Panel1: TPanel; Label10: TLabel; Image2: TImage; Lab_loading2: TLabel;
GroupBox2: TGroupBox; Series1: TBarSeries; Series3: TBarSeries; Series2: TBarSeries; Series4: TBarSeries; Shape1: TShape; Shape2: TShape; Shape3: TShape; Shape4: TShape; Bevel1: TBevel; Label9: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Bevel2: TBevel; Bevel3: TBevel; Bevel4: TBevel; Bevel5: TBevel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label19: TLabel; Memo3: TMemo; Button7: TButton; Button8: TButton;
GroupBox1: TGroupBox; Shape5: TShape; Lab_nama: TLabel; ProgressBar1: TProgressBar; ToolButton6: TToolButton; ToolButton7: TToolButton; bt_x: TLabel; Label_waktu1: TLabel; Img_hasil: TImage; Label100: TLabel; Label101: TLabel; Label102: TLabel; Label103: TLabel; Label104: TLabel; Label105: TLabel; Label6: TLabel; Label5: TLabel; Label4: TLabel; Label3: TLabel; Label2: TLabel; Label1: TLabel; Img_warna: TImage; Img_hasil2: TImage; Label31: TLabel; Label32: TLabel; Label33: TLabel; Label34: TLabel;
Label35: TLabel; Label36: TLabel; Img_bntuk: TImage; Label_waktu2: TLabel; Label_waktu3: TLabel; procedure T_pict1Click(Sender: TObject); procedure OpenPicture1Accept(Sender: TObject); procedure FormClick(Sender: TObject); procedure Action1Execute(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure T_save1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure histogram1(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button5Click(Sender: TObject); procedure T_data1Click(Sender: TObject); procedure MediaPlayer1Notify(Sender: TObject); procedure T_music1Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure bt_xMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure ToolButton7Click(Sender: TObject); procedure bt_xMouseEnter(Sender: TObject);
procedure bt_xMouseLeave(Sender: TObject); //procedure sobel1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; Bitmap1, Bitmap2 : TBitmap; file1, simpan : string; gs11,gs22,gs33,gs44,gs55,gs10,gs20,gs30,gs40,gs50 : integer; gs01,gs02,gs03,gs04,gs05,gs06,gs07,gs08,gs09,gs010 : integer; r11,r22,r33,r44,r55,g11,g22,g33,g44,g55,b11,b22,b33,b44,b55 : integer; r10,r20,r30,r40,r50,g10,g20,g30,g40,g50,b10,b20,b30,b40,b50,z00 : integer; start, stop, elapsed : cardinal;
type T3x3FloatArray = array[0..2] of array[0..2] of Extended;
implementation
uses Unit_ban, Unit_data;
{$R *.dfm}
function Convolve(ABitmap: TBitmap; AMask: T3x3FloatArray; ABias: Integer): TBitmap; type TRGBTripleArray = array[0..10000] of TRGBTriple; PRGBTripleArray = ^TRGBTripleArray;
var LRow1, LRow2, LRow3, LRowOut: PRGBTripleArray; LRow, LCol: integer; LNewBlue, LNewGreen, LNewRed: Extended; LCoef: Extended;
begin LCoef := 0; for LRow := 0 to 2 do for LCol := 0 to 2 do LCoef := LCoef + AMask[LCol, LRow]; if LCoef = 0 then LCoef := 1;
Result := TBitmap.Create;
Result.Width := ABitmap.Width - 2; Result.Height := ABitmap.Height - 2; Result.PixelFormat := pf24bit;
LRow2 := ABitmap.ScanLine[0]; LRow3 := ABitmap.ScanLine[1];
for LRow := 1 to ABitmap.Height - 2 do begin LRow1 := LRow2; LRow2 := LRow3; LRow3 := ABitmap.ScanLine[LRow + 1];
LRowOut := Result.ScanLine[LRow - 1];
for LCol := 1 to ABitmap.Width - 2 do begin LNewBlue := (LRow1[LCol - 1].rgbtBlue * AMask[0,0]) + (LRow1[LCol].rgbtBlue * AMask[1,0]) + (LRow1[LCol + 1].rgbtBlue * AMask[2,0]) + (LRow2[LCol - 1].rgbtBlue * AMask[0,1]) + (LRow2[LCol].rgbtBlue * AMask[1,1]) + (LRow2[LCol + 1].rgbtBlue * AMask[2,1]) + (LRow3[LCol - 1].rgbtBlue * AMask[0,2]) + (LRow3[LCol].rgbtBlue * AMask[1,2]) + (LRow3[LCol + 1].rgbtBlue * AMask[2,2]); LNewBlue := (LNewBlue / LCoef) + ABias; if LNewBlue > 255 then LNewBlue := 255; if LNewBlue < 0 then LNewBlue := 0;
LNewGreen :=
(LRow1[LCol - 1].rgbtGreen * AMask[0,0]) + (LRow1[LCol].rgbtGreen * AMask[1,0]) + (LRow1[LCol + 1].rgbtGreen * AMask[2,0]) + (LRow2[LCol - 1].rgbtGreen * AMask[0,1]) + (LRow2[LCol].rgbtGreen * AMask[1,1]) + (LRow2[LCol + 1].rgbtGreen * AMask[2,1]) + (LRow3[LCol - 1].rgbtGreen * AMask[0,2]) + (LRow3[LCol].rgbtGreen * AMask[1,2]) + (LRow3[LCol + 1].rgbtGreen * AMask[2,2]); LNewGreen := (LNewGreen / LCoef) + ABias; if LNewGreen >= 255 then LNewGreen := 255; if LNewGreen < 0 then LNewGreen := 0;
LNewRed := (LRow1[LCol - 1].rgbtRed * AMask[0,0]) + (LRow1[LCol].rgbtRed * AMask[1,0]) + (LRow1[LCol + 1].rgbtRed * AMask[2,0]) + (LRow2[LCol - 1].rgbtRed * AMask[0,1]) + (LRow2[LCol].rgbtRed * AMask[1,1]) + (LRow2[LCol + 1].rgbtRed * AMask[2,1]) + (LRow3[LCol - 1].rgbtRed * AMask[0,2]) + (LRow3[LCol].rgbtRed * AMask[1,2]) + (LRow3[LCol + 1].rgbtRed * AMask[2,2]); LNewRed := (LNewRed / LCoef) + ABias; if LNewRed > 255 then LNewRed := 255; if LNewRed < 0 then
LNewRed := 0;
LRowOut[LCol - 1].rgbtBlue := trunc(LNewBlue); LRowOut[LCol - 1].rgbtGreen := trunc(LNewGreen); LRowOut[LCol - 1].rgbtRed := trunc(LNewRed); end; end; end;
//metode bentuk procedure CompareBitmaps(const BitmapA, BitmapB: TBitmap; var Total, M0, M90, M180, M270, Fv, Fh: integer); type TRGBTripleArray = Array[WORD] of TRGBTriple; pRGBTripleArray = ^TRGBTripleArray;
var i,j : integer; rowA,rowB: pRGBTripleArray;
begin BitmapA.PixelFormat := pf24bit; BitmapB.PixelFormat := pf24bit;
Total := BitmapA.height * BitmapA.width; M0 := 0; M90 := 0;
M180 := 0; M270 := 0; Fv := 0; Fh := 0;
if (BitmapA.height=BitmapB.height) and (BitmapA.width=BitmapB.width) then begin //rotasi 0 derajat for j := 0 to BitmapA.height-1 do begin rowA := BitmapA.Scanline[j]; rowB := BitmapB.Scanline[j]; for i := 0 to BitmapA.width-1 do begin if (rowA[i].rgbtRed = rowB[i].rgbtRed) then inc(M0); end; end;
//rotasi 180 for j := 0 to BitmapA.height-1 do begin rowA := BitmapA.Scanline[j]; rowB := BitmapB.Scanline[BitmapB.height-1-j]; for i := 0 to BitmapA.width-1 do begin if (rowA[i].rgbtRed = rowB[BitmapB.width-1-i].rgbtRed) then inc(M180); end;
end;
//terbalik vertikal for j := 0 to BitmapA.height-1 do begin rowA := BitmapA.Scanline[j]; rowB := BitmapB.Scanline[BitmapB.height-1-j]; for i := 0 to BitmapA.width-1 do begin if (rowA[i].rgbtRed = rowB[i].rgbtRed) then inc(Fv); end; end;
//terbalik horizontal for j := 0 to BitmapA.height-1 do begin rowA := BitmapA.Scanline[j]; rowB := BitmapB.Scanline[j]; for i := 0 to BitmapA.width-1 do begin if (rowA[i].rgbtRed = rowB[BitmapA.width-1-i].rgbtRed) then inc(Fh); end; end; end; end;
procedure TForm1.T_pict1Click(Sender: TObject); begin if T_pict1.Down = True then s_pict1.Visible:= True else if T_pict1.Down = False then s_pict1.Visible:= False; end;
procedure TForm1.OpenPicture1Accept(Sender: TObject); var i:integer; begin Lab_nama.Caption := ExtractFileName(OpenPicture1.Dialog.FileName); Lab_loading2.Visible := True; Panel1.Caption := ''; Button3.Enabled := True; Image1.Picture.LoadFromFile(OpenPicture1.Dialog.FileName); Image1b.Picture.LoadFromFile(OpenPicture1.Dialog.FileName); DeleteFile(file1+'data2\temp.bmp'); Bitmap1 := Tbitmap.Create; Bitmap1.Assign(Image1.Picture.Graphic); Bitmap2 := Tbitmap.Create; Bitmap2.Assign(Image1b.Picture.Graphic); Action1Execute(sender); Image1c.Picture.Assign(Image1b.Picture.Graphic); for i:=1 to 6 do begin TLabel(Form1.FindComponent('Label'+IntToStr(i))).Caption := ''; end; Button1.Click;
Button5.Click; end;
procedure TForm1.FormClick(Sender: TObject); begin T_pict1.Down := False; s_pict1.Visible:= False; end;
procedure TForm1.Action1Execute(Sender: TObject); var i,j:integer; ptr:PByteArray; begin if OpenPicture1.Dialog.FileName = '' then else begin try Image1b.Picture.LoadFromFile(OpenPicture1.Dialog.FileName); Screen.Cursor := 2; Application.ProcessMessages; for i:= 0 to (Bitmap2.Height-1) do begin ptr := Bitmap2.ScanLine[i]; for j:=0 to (Bitmap2.Width-1) do begin if Bitmap2.PixelFormat = pf24bit then begin
ptr[3*j]:=round(0.114* ptr[3*j]+0.587*ptr[3*j+1] + 0.299*ptr[3*j+2]); {warna equivalen if (ptr[3*j]>51) and (ptr[3*j]<155) then begin ptr[3*j] := round((ptr[3*j]-51) / 102) * 255; end;} ptr[3*j+1]:=ptr[3*j]; ptr[3*j+2]:=ptr[3*j]; end; end; Image1b.Picture.Graphic := Bitmap2; Image1b.Refresh; end; except ShowMessage('Gagal melanjutkan operasi'); end; end; Screen.Cursor := 1; end;
procedure LihatBitmaps(const BitmapA: TBitmap; r1,r2,r3,r4,r5,g1,g2,g3,g4,g5,b1,b2,b3,b4,b5 : integer); type TRGBTripleArray = Array[WORD] of TRGBTriple; pRGBTripleArray = ^TRGBTripleArray; var i,j : integer;
var
rowA: pRGBTripleArray; begin BitmapA.PixelFormat := pf24bit;
r1:=0; r2:=0; r3:=0; r4:=0; r5:=0; g1:=0; g2:=0; g3:=0; g4:=0; g5:=0; b1:=0; b2:=0; b3:=0; b4:=0; b5:=0;
for j := 0 to BitmapA.height-1 do begin rowA := BitmapA.Scanline[j]; for i := 0 to BitmapA.width-1 do begin if rowA[i].rgbtRed > 204 then inc(r5) else if rowA[i].rgbtRed > 153 then inc(r4) else if rowA[i].rgbtRed > 102 then inc(r3) else if rowA[i].rgbtRed > 51 then inc(r2) else if (rowA[i].rgbtRed > 0) or (rowA[i].rgbtRed = 0) then inc(r1); if rowA[i].rgbtGreen > 204 then inc(g5) else if rowA[i].rgbtGreen > 153 then inc(g4) else if rowA[i].rgbtGreen > 102 then inc(g3) else if rowA[i].rgbtGreen > 51 then inc(g2) else if (rowA[i].rgbtGreen > 0) or (rowA[i].rgbtGreen = 0) then inc(g1); if rowA[i].rgbtBlue > 204 then inc(b5) else if rowA[i].rgbtBlue > 153 then inc(b4) else if rowA[i].rgbtBlue > 102 then inc(b3) else if rowA[i].rgbtBlue > 51 then inc(b2)
else if (rowA[i].rgbtBlue > 0) or (rowA[i].rgbtBlue = 0)then inc(b1); end; end; end;
procedure TForm1.Button1Click(Sender: TObject); var i : integer; warna : array[1..20] of integer; begin LihatBitmaps(Bitmap2,gs11,gs22,gs33,gs44,gs55,gs01,gs02,gs03,gs04,gs05,gs06, gs07,gs08,gs09,gs010); LihatBitmaps(Bitmap1,r11,r22,r33,r44,r55,g11,g22,g33,g44,g55,b11,b22,b33,b44 ,b55);
z00 := 0; warna[1]:=r11; warna[6]:=g11; warna[11]:=b11; warna[16]:=gs11; warna[2]:=r22; warna[7]:=g22; warna[12]:=b22; warna[17]:=gs22; warna[3]:=r33; warna[8]:=g33; warna[13]:=b33; warna[18]:=gs33; warna[4]:=r44; warna[9]:=g44; warna[14]:=b44; warna[19]:=gs44; warna[5]:=r55; warna[10]:=g55; warna[15]:=b55; warna[20]:=gs55; for i:=1 to 20 do begin if z00 < warna[i] then z00:= warna[i]; end;
//histogram warna {r10 := r11; g10 := g11; b10 := b11; gs10 := gs11; r20 := r22; g20 := g22; b20 := b22; gs20 := gs22;
r30 := r33; g30 := g33; b30 := b33; gs30 := gs33; r40 := r44; g40 := g44; b40 := b44; gs40 := gs44; r50 := r55; g50 := g55; b50 := b55; gs50 := gs55; }
r10 := round((r11/z00)*100); r20 := round((r22/z00)*100); r30 := round((r33/z00)*100); r40 := round((r44/z00)*100); r50 := round((r55/z00)*100); g10 := round((g11/z00)*100); g20 := round((g22/z00)*100); g30 := round((g33/z00)*100); g40 := round((g44/z00)*100); g50 := round((g55/z00)*100); b10 := round((b11/z00)*100); b20 := round((b22/z00)*100); b30 := round((b33/z00)*100); b40 := round((b44/z00)*100); b50 := round((b55/z00)*100); gs10 := round((gs11/z00)*100); gs20 := round((gs22/z00)*100); gs30 := round((gs33/z00)*100); gs40 := round((gs44/z00)*100); gs50 := round((gs55/z00)*100); histogram1(sender); end;
procedure TForm1.histogram1(Sender: TObject); begin with ADOQuery1 do begin Edit; FieldByName('R1').AsInteger := r10; FieldByName('R2').AsInteger := r20; FieldByName('R3').AsInteger := r30; FieldByName('R4').AsInteger := r40; FieldByName('R5').AsInteger := r50;
FieldByName('G1').AsInteger := g10; FieldByName('G2').AsInteger := g20; FieldByName('G3').AsInteger := g30; FieldByName('G4').AsInteger := g40; FieldByName('G5').AsInteger := g50;
FieldByName('B1').AsInteger := b10; FieldByName('B2').AsInteger := b20; FieldByName('B3').AsInteger := b30; FieldByName('B4').AsInteger := b40; FieldByName('B5').AsInteger := b50;
FieldByName('Gs1').AsInteger := gs10; FieldByName('Gs2').AsInteger := gs20; FieldByName('Gs3').AsInteger := gs30; FieldByName('Gs4').AsInteger := gs40;
FieldByName('Gs5').AsInteger := gs50; post; end; end;
procedure TForm1.Button3Click(Sender: TObject); const Nama : array[1..20] of string = ('R1','R2','R3','R4','R5','G1','G2','G3','G4','G5', 'B1','B2','B3','B4','B5','Gs1','Gs2','Gs3','Gs4','Gs5'); var i,j,z,cari,temp1 : integer; temp, str2 : string; persen,hasil : array[0..5] of integer; warna : array[1..20] of integer; muncul : array of integer; begin warna[1]:=r10; warna[6]:=g10; warna[11]:=r10; warna[16]:=gs10; warna[2]:=r20; warna[7]:=g20; warna[12]:=b20; warna[17]:=gs20; warna[3]:=r30; warna[8]:=g30; warna[13]:=b30; warna[18]:=gs30; warna[4]:=r40; warna[9]:=g40; warna[14]:=b40; warna[19]:=gs40; warna[5]:=r50; warna[10]:=g50; warna[15]:=b50; warna[20]:=gs50;
Memo1.Lines.Clear; ProgressBar1.Visible := True; ProgressBar1.Position := 0;
start := GetTickCount;
with ADOQuery2 do begin Filtered := True; for i := 1 to 20 do begin ProgressBar1.Position := ProgressBar1.Position + 3; Application.ProcessMessages; sql.Clear; sql.Add('select * from Tabel_data'); open; z := (warna[i]); Filter := Nama[i]+' = '+IntToStr(z); while not eof do begin Memo1.Lines.add(' '+FieldbyName('ID').AsString+' '); next; end; end; Filtered := False; end;
Memo2.Lines.Clear; if Memo1.Lines[0] <> '' then begin for i := 0 to Memo1.Lines.Count-1 do begin cari := pos(Memo1.Lines.Strings[i], Memo2.Text); if cari = 0 then
begin Memo2.Lines.Add(Memo1.Lines.Strings[i]); end; end; SetLength(muncul,Memo2.Lines.Count); for i := 0 to Memo1.Lines.Count-1 do begin for j := 0 to Memo2.Lines.Count-1 do begin if (Memo1.Lines.Strings[i] = Memo2.Lines.Strings[j]) then inc(muncul[j]); end; end;
//bubble sort for i := 0 to Memo2.Lines.Count-2 do begin for j := 0 to Memo2.Lines.Count-2 do begin if muncul[j]<muncul[j+1] then begin temp := Memo2.Lines.Strings[j]; Memo2.Lines.Strings[j] := Memo2.Lines.Strings[j+1]; memo2.Lines.Strings[j+1] := temp; temp1 := muncul[j]; muncul[j] := muncul[j+1]; muncul[j+1] := temp1; end;
end; end;
//kemungkinan persen kemunculan - WARNA persen[0] := 1; persen[1] := 1; persen[2] := 1; persen[3] := 1; persen[4] := 1; persen[5] := 1; for i := 0 to Memo1.Lines.Count-1 do begin for j := 0 to 5 do begin if (Memo1.Lines.Strings[i]=Memo2.Lines.Strings[j]) then inc(persen[j]); end; end; for j := 0 to 5 do begin hasil[j] := round((persen[j]/20)*100); if hasil[j] > 100 then hasil[j] := 100 else if hasil[j] < 70 then hasil[j] := hasil[j]-5; TLabel(Form1.FindComponent('Label'+IntToStr(j+1))).Caption IntToStr(hasil[j]) + ' %'; end; str2 := Memo2.Lines.strings[0]; Setlength(str2, length(str2)-1); Delete(str2,1,1); if hasil[0] > 69 then Img_warna.Picture.LoadFromFile(file1+'data\'+str2+'.bmp') else Img_warna.Picture.LoadFromFile(file1+'data\'+'No.bmp');
:=
end; stop := GetTickCount; elapsed := stop - start; //millidetik Label_waktu1.Caption := 'Waktu proses : '+FormatFloat('#:###',elapsed); Button2.Click; end;
procedure TForm1.T_save1Click(Sender: TObject); var i,nomor:integer; bmp : TBitmap; var value : string ; begin if not InputQuery('Nama bunga','Masukkan nama dan warna bunga',value) then ; if value = '' then ShowMessage('Penyimpanan batal') else if value <> '' then begin nomor := -1; bmp := TBitmap.Create; bmp.Assign(Image1.Picture.Graphic); with ADOQuery2 do begin sql.Clear; sql.add('select * from Tabel_data'); open; repeat nomor := nomor+1; until Locate('ID',IntToStr(nomor),[]) = False;
Append; FieldByName('ID').AsInteger := nomor; FieldByName('Nama').AsString := value; FieldByName('R1').AsInteger := r10; FieldByName('R2').AsInteger := r20; FieldByName('R3').AsInteger := r30; FieldByName('R4').AsInteger := r40; FieldByName('R5').AsInteger := r50;
FieldByName('G1').AsInteger := g10; FieldByName('G2').AsInteger := g20; FieldByName('G3').AsInteger := g30; FieldByName('G4').AsInteger := g40; FieldByName('G5').AsInteger := g50;
FieldByName('B1').AsInteger := b10; FieldByName('B2').AsInteger := b20; FieldByName('B3').AsInteger := b30; FieldByName('B4').AsInteger := b40; FieldByName('B5').AsInteger := b50;
FieldByName('Gs1').AsInteger := gs10; FieldByName('Gs2').AsInteger := gs20; FieldByName('Gs3').AsInteger := gs30; FieldByName('Gs4').AsInteger := gs40; FieldByName('Gs5').AsInteger := gs50; for i:= 0 to 39 do
begin FieldByName('Z'+IntToStr(i)).AsInteger StrToInt(Memo3.Lines.Strings[i]); end; post; bmp.SaveToFile(file1+'data\'+IntToStr(nomor)+'.bmp'); Image1c.Picture.SaveToFile(file1+'data2\'+IntToStr(nomor)+'b.bmp'); ADOTable1.Active := False; ADOTable1.Active := True; end; end; end;
procedure TForm1.Button2Click(Sender: TObject); var bmp_hasil : TBitmap; Gambar_hasil : TImage; x,y, i,hitung : integer; str1, str2 : string; begin bmp_hasil := TBitmap.Create; bmp_hasil.Height := Img_hasil.Height; bmp_hasil.Width := Img_hasil.Width; Gambar_hasil := TImage.Create(Self); bmp_hasil.Canvas.Pen.Color := clBlack; x := 0; y := 0;
:=
Img_hasil.Refresh; hitung := memo2.Lines.Count-1; if hitung > 5 then hitung := 5; str2 := Memo2.Lines.strings[0]; Setlength(str2, length(str2)-1); Delete(str2,1,1); for i := 0 to hitung do begin str1 := Memo2.Lines.strings[i]; Setlength(str1, length(str1)-1); Delete(str1,1,1); if str1='' then begin TLabel(Form1.FindComponent('Label'+IntToStr(i+100))).Caption := '0'; end else begin TLabel(Form1.FindComponent('Label'+IntToStr(i+100))).Caption := str1; Gambar_hasil.Picture.LoadFromFile(file1+'data\'+str1+'.bmp'); bmp_hasil.Canvas.Rectangle(x+9,y+9,x+41,y+41); bmp_hasil.Canvas.StretchDraw(Rect(x+10,y+10,x+40,y+40),Gambar_has il.Picture.Graphic); x := x+40; Img_hasil.Picture.Assign(bmp_hasil); with ADOTable1 do begin Locate('ID',str2,[]);
Panel1.Caption := FieldValues['Nama']; end; end; end; bmp_hasil.Free; Button6.Click; end;
procedure TForm1.Button4Click(Sender: TObject); var i : integer; begin BorderStyle:= bsNone; WindowState:= wsMaximized; Width:= Screen.Width; Height:= Screen.Height;
file1 := ExtractFilePath(Application.ExeName)+'\img\'; //BackGround music MediaPlayer1.FileName := file1+'sound\BGM.mp3'; MediaPlayer1.Open; //Cursor Screen.Cursors[1]:=LoadCursorFromFile('cursor\diamondblue.ani'); Screen.Cursors[2]:=LoadCursorFromFile('cursor\boxblue1.ani'); Screen.Cursor := 1; //bingkai Image1.Picture.LoadFromFile(file1+'No.bmp'); imgb_1.Picture.LoadFromFile(file1+'bingkai2.bmp');
imgb_2b.Picture.LoadFromFile(file1+'bingkai2.bmp'); imgb_2c.Picture.LoadFromFile(file1+'bingkai2.bmp'); Lab_loading2.Visible := False; for i:=1 to 6 do begin TLabel(Form1.FindComponent('Label'+IntToStr(i))).Caption := ''; TLabel(Form1.FindComponent('Label'+IntToStr(i+99))).Caption := ''; end; ProgressBar1.Visible := False; s_pict1.Visible := False; s_pict1.Top := ClientHeight - ToolBar1.Height - s_pict1.Height - 10; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Application.Terminate; end;
procedure TForm1.Button5Click(Sender: TObject); var LMask: T3x3FloatArray; begin LMask[0,0] := -1; LMask[1,0] := -1; LMask[2,0] := -1; LMask[0,1] := -1; LMask[1,1] := 8;
LMask[2,1] := -1; LMask[0,2] := -1; LMask[1,2] := -1; LMask[2,2] := -1; Image1c.Picture.Bitmap := Convolve(Image1c.Picture.Bitmap, LMask, 0); Image1c.Picture.SaveToFile(file1+'data2\temp.bmp'); Button7.Click; Lab_loading2.Visible := False; end;
procedure TForm1.T_data1Click(Sender: TObject); var bmp1 : TBitmap; Gambar : Timage; i,x,y,data1 : integer; begin with ADOTable1 do begin Sort := 'ID'; Last; data1 := StrToInt(FieldValues['ID']); end; with ADOQuery2 do begin sql.Clear; sql.Add('select * from Tabel_data'); open; end;
bmp1 := TBitmap.Create; bmp1.Height := Form_data.ClientHeight; bmp1.Width := Form_data.ClientWidth; Gambar := TImage.Create(Self); bmp1.Canvas.Pen.Color := clBlack; x := 0; y := 0; Form_data.Img0.Refresh; for i:=1 to data1+1 do begin Gambar.Picture.LoadFromFile(file1+'data\'+IntToStr(i-1)+'.bmp'); bmp1.Canvas.Rectangle(x+9,y+9,x+51,y+51); bmp1.Canvas.StretchDraw(Rect(x+10,y+10,x+50,y+50),Gambar.Picture. Graphic); x := x+50; if i mod 20 = 0 then begin y := y+50; x := 0; end; Form_data.Img0.Picture.Assign(bmp1); end; bmp1.Free; Form_data.ShowModal; end;
procedure TForm1.MediaPlayer1Notify(Sender: TObject); begin
if MediaPlayer1.NotifyValue=nvSuccessful then begin MediaPlayer1.Play; MediaPlayer1.Notify := True; end; end;
{procedure TForm1.sobel1Click(Sender: TObject); const sobel : array[0..1,0..2,0..2] of smallint = (((-1,0,1),(-2,0,2),(-1,0,1)), ((-1,-2,-1),(0,0,0),(1,2,1))); smooth : array[0..1,0..2,0..2] of smallint = (((-1,0,1),(-1,0,1),(-1,0,1)), ((-1,-1,-1),(0,0,0),(1,1,1)));
var row : array[0..8] of PByteArray; col : PByteArray; n,m,x,y,ye,xe,i,j,k,peka : smallint; img00 : TBitmap; sum,jum,total,tot : Longint; a,b : integer;
begin for y:=1 to end; end;}
procedure TForm1.T_music1Click(Sender: TObject); begin if T_music1.Caption = 'off' then begin mediaplayer1.AutoRewind:=true; MediaPlayer1.Play; mediaplayer1.Notify:=true; T_music1.Caption := 'on'; end else if T_music1.Caption = 'on' then begin mediaplayer1.Notify:=False; mediaplayer1.AutoRewind:=False; MediaPlayer1.Stop; T_music1.Caption := 'off' end; end;
procedure TForm1.Button6Click(Sender: TObject); var i,j,ben1,ben2,cari,temp1 : integer; temp, str2 : string; persen,hasil : array[0..5] of integer; begin Memo1.Lines.Clear; start := GetTickCount; with ADOQuery2 do
begin Filtered := True; for i := 0 to 39 do begin ProgressBar1.Position := ProgressBar1.Position + 2; Application.ProcessMessages; sql.Clear; sql.Add('select * from Tabel_data'); open; ben1 := StrToInt(Memo3.Lines.Strings[i])-10; ben2 := StrToInt(Memo3.Lines.Strings[i])+10; Filter := '(Z'+IntToStr(i)+' >= '+IntToStr(ben1)+ ') and (Z'+IntToStr(i)+' <= '+IntToStr(ben2)+')'; while not eof do begin Memo1.Lines.add(' '+FieldbyName('ID').AsString+' '); next; end; end; Filtered := False; end;
stop := GetTickCount; elapsed := stop - start; //millidetik Label_waktu2.Caption := 'Waktu proses : '+FormatFloat('#:###',elapsed); Application.ProcessMessages; start := GetTickCount;
Memo2.Lines.Clear; if Memo1.Lines[0] <> '' then begin for i := 0 to Memo1.Lines.Count-1 do begin cari := pos(Memo1.Lines.Strings[i], Memo2.Text); if cari = 0 then begin Memo2.Lines.Add(Memo1.Lines.Strings[i]); end; end; SetLength(muncul,Memo2.Lines.Count); for i := 0 to Memo1.Lines.Count-1 do begin for j := 0 to Memo2.Lines.Count-1 do begin if (Memo1.Lines.Strings[i] = Memo2.Lines.Strings[j]) then inc(muncul[j]); end; end;
//bubble sort for i := 0 to Memo2.Lines.Count-2 do begin for j := 0 to Memo2.Lines.Count-2 do begin if muncul[j]<muncul[j+1] then begin
temp := Memo2.Lines.Strings[j]; Memo2.Lines.Strings[j] := Memo2.Lines.Strings[j+1]; memo2.Lines.Strings[j+1] := temp; temp1 := muncul[j]; muncul[j] := muncul[j+1]; muncul[j+1] := temp1; end; end; end;
stop := GetTickCount; elapsed := stop - start; //millidetik Label_waktu3.Caption := 'Waktu urut : '+FormatFloat('#:###',elapsed);
//kemungkinan persen kemunculan - BENTUK persen[0] := 1; persen[1] := 1; persen[2] := 1; persen[3] := 1; persen[4] := 1; persen[5] := 1; for i := 0 to Memo1.Lines.Count-1 do begin for j := 0 to 5 do begin if (Memo1.Lines.Strings[i]=Memo2.Lines.Strings[j]) then inc(persen[j]); end; end; for j := 0 to 5 do begin hasil[j] := round((persen[j]/40)*100);
if hasil[j] > 100 then hasil[j] := 100 else if hasil[j] < 70 then hasil[j] := hasil[j]-5; TLabel(Form1.FindComponent('Label'+IntToStr(j+31))).Caption IntToStr(hasil[j]) + ' %'; end; end; str2 := Memo2.Lines.strings[0]; Setlength(str2, length(str2)-1); Delete(str2,1,1); if hasil[0] > 69 then Img_bntuk.Picture.LoadFromFile(file1+'data\'+str2+'.bmp') else Img_bntuk.Picture.LoadFromFile(file1+'data\'+'No.bmp');
Button8.Click; end;
procedure TForm1.Button7Click(Sender: TObject); type TRGBTripleArray = Array[WORD] of TRGBTriple; pRGBTripleArray = ^TRGBTripleArray; var i,j,i2,j2, z0 : integer; rowA: pRGBTripleArray; begin Image1c.Picture.Bitmap.PixelFormat := pf24bit;
j:=0;
:=
Memo3.Lines.Clear;
while j+10 < Image1c.Picture.Bitmap.Height-1 do begin rowA := Image1c.Picture.Bitmap.Scanline[j]; j := j+15; i := 0; while i < Image1c.Picture.Bitmap.width-1 do begin if rowA[i].rgbtRed <> 0 then begin z0:=i; Memo3.Lines.Add(IntToStr(z0)); i := Image1c.Picture.Bitmap.width-1; end else if i = Image1c.Picture.Bitmap.width-2 then begin z0:=0; Memo3.Lines.Add(IntToStr(z0)); i := Image1c.Picture.Bitmap.width-1; end else i:= i+1; end; end;
j:=0; while (Image1c.Picture.Bitmap.Height-1) - j > 10 do
begin j2 := (Image1c.Picture.Bitmap.Height-1)-j; rowA := Image1c.Picture.Bitmap.Scanline[j2]; j := j+15; i := 0; while (Image1c.Picture.Bitmap.width-1)-i > 0 do begin i2 := (Image1c.Picture.Bitmap.width-1)-i; if rowA[i2].rgbtRed <> 0 then begin z0 := i2; Memo3.Lines.Add(IntToStr(z0)); i := Image1c.Picture.Bitmap.width-1; end else if i = Image1c.Picture.Bitmap.width-2 then begin z0:=0; Memo3.Lines.Add(IntToStr(z0)); i := Image1c.Picture.Bitmap.width-1; end else i:= i+1; end; end;
with ADOQuery1 do begin Edit;
for i:= 0 to 39 do begin if Memo3.Lines.Strings[i] = '' then Memo3.Lines.Strings[i] := '0'; FieldByName('Z'+IntToStr(i)).AsInteger := StrToInt(Memo3.Lines.Strings[i]); end; Post; end; end;
procedure TForm1.Button8Click(Sender: TObject); var bmp_hasil : TBitmap; Gambar_hasil : TImage; x,y, i,hitung : integer; str1, str2 : string; begin bmp_hasil := TBitmap.Create; bmp_hasil.Height := Img_hasil2.Height; bmp_hasil.Width := Img_hasil2.Width; Gambar_hasil := TImage.Create(Self); bmp_hasil.Canvas.Pen.Color := clBlack; x := 0; y := 0; Img_hasil.Refresh; hitung := memo2.Lines.Count-1; if hitung > 5 then hitung := 5; str2 := Memo2.Lines.strings[0];
Setlength(str2, length(str2)-1); Delete(str2,1,1); for i := 0 to hitung do begin str1 := Memo2.Lines.strings[i]; Setlength(str1, length(str1)-1); Delete(str1,1,1); if str1='' then begin
end else begin
Gambar_hasil.Picture.LoadFromFile(file1+'data\'+str1+'.bmp'); bmp_hasil.Canvas.Rectangle(x+9,y+9,x+41,y+41); bmp_hasil.Canvas.StretchDraw(Rect(x+10,y+10,x+40,y+40),Gambar_has il.Picture.Graphic); x := x+40; Img_hasil2.Picture.Assign(bmp_hasil); end; end; ProgressBar1.Visible := False; end;
procedure TForm1.bt_xMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin Application.Terminate; end;
procedure TForm1.ToolButton7Click(Sender: TObject); begin ShellExecute(Handle, PChar(file1+'help.htm'),nil,nil,SW_SHOWNORMAL) ; end;
procedure TForm1.bt_xMouseEnter(Sender: TObject); begin bt_x.Font.Size := 16; end;
procedure TForm1.bt_xMouseLeave(Sender: TObject); begin bt_x.Font.Size := 14; end; end.
'open',