Implementation Multiscale Retinex Method For Image Enhancement

(1)

IMPLEMENTASI METODE

MULTISCALE RETINEX

UNTUK

IMAGE ENHANCEMENT

SKRIPSI

SYLVIA DINATA

091401047

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

2014


(2)

IMPLEMENTASI METODE

MULTISCALE RETINEX

UNTUK

IMAGE ENHANCEMENT

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Komputer

SYLVIA DINATA 091401047

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2014


(3)

PERSETUJUAN

Judul : IMPLEMENTASI METODE MULTISCALE

RETINEX UNTUK IMAGE ENHANCEMENT

Kategori : SKRIPSI

Nama : SYLVIA DINATA

Nomor Induk Mahasiswa : 091401047

Program Studi : SARJANA (S1) ILMU KOMPUTER

Departemen : ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI

INFORMASI UNIVERSITAS SUMATERA UTARA (Fasilkom-T I USU)

Diluluskan di Medan, Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Amer Sharif, S.Si, M.Kom Ade Candra, ST, M.Kom

NIP.- NIP. 197909042009121002

Diketahui/Disetujui oleh

Program Studi S1 Ilmu Komputer Ketua,

Dr. Poltak Sihombing, M.Kom NIP. 196203171991031001


(4)

PERNYATAAN

IMPLEMENTASI METODE MULTISCALE RETINEX UNTUK IMAGE ENHANCEMENT

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, 2014

Sylvia Dinata NIM 091401047


(5)

PENGHARGAAN

Segala puji dan syukur Penulis ucapkan kepada Tuhan Yesus Kristus yang senantiasa melimpahkan rahmat dan karunia-Nya sehingga skripsi ini dapat diselesaikan, sebagai syarat untuk memperoleh gelar Sarjana Komputer pada Program Studi S1 Ilmu Komputer Universitas Sumatera Utara.

Ucapan terima kasih Penulis sampaikan kepada semua pihak yang telah membantu Penulis dalam menyelesaikan skripsi ini baik secara langsung maupun tidak langsung, teristimewa untuk kedua orangtua terkasih, Ayahanda Eben Ezer Tarigan dan Ibunda Ernawaty Karosekali.

Penulis ingin menyampaikan rasa hormat dan terima kasih yang sebesar– besarnya kepada :

1. Bapak Prof. Dr. Dr. Syahril Pasaribu, DTM&H, Msc(CTM), Sp.A(K) selaku Rektor Universitas Sumatera Utara.

2. Bapak Prof. Muhammad Zarlis selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

3. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer Universitas Sumatera Utara dan Pembanding I yang telah memberikan kritik dan saran dalam penyempurnaan skripsi ini.

4. Ibu Maya Silvi Lydia, B.Sc., M.Sc selaku Sekretaris Program Studi S1 Ilmu Komputer Universitas Sumatera Utara.

5. Bapak Ade Candra, S. T., M. Kom selaku Dosen Pembimbing I yang telah memberikan bimbingan, saran dan masukan kepada penulis dalam pengerjaan skripsi ini.

6. Bapak Amer Sharif, S. Si, M. Kom selaku Dosen Pembimbing II yang telah memberikan bimbingan, saran dan masukan kepada penulis dalam pengerjaan skripsi ini.

7. Ibu Dian Rachmawati, S.Si, M.Kom selaku Dosen Pembanding II yang telah memberikan bimbingan, saran dan masukan kepada penulis dalam pengerjaan skripsi ini.

8. Abang dan adik Penulis yang tersayang Rhendranoto Tarigan dan Debora Adhyaksa Tarigan.

9. Abang Angga Malau, S. Kom yang telah memberikan semangat dan menjadi teman diskusi penulis dalam menyelesaikan skripsi ini.


(6)

10.Teman-teman seperjuangan mahasiswa S1-Ilmu Komputer stambuk 2009 terkhusus Samuel Tarigan, Ardi Hasiholan, Tian Novita Situngkir, Laila Manja, Oshin Santa Monica, Winda Dian Luca, Insidiny Fawwaz, dan Tika Romauli Siregar yang telah memberikan semangat dan menjadi teman diskusi penulis dalam menyelesaikan skripsi ini.

11.Roy Kristianto Tambunan yang telah memberikan doa, semangat, dukungan saran, dan perhatiannya kepada penulis.

12.Semua pihak yang terlibat langsung ataupun tidak langsung yang tidak dapat penulis ucapkan satu per satu yang telah membantu penyelesaian skripsi ini.

Penulis menyadari bahwa skripsi ini masih terdapat kekurangan. Oleh karena itu, kepada pembaca agar kiranya memberikan kritik dan saran yang bersifat membangun demi kesempurnaan skripsi ini. Sehingga dapat bermanfaat bagi kita semuanya.

Medan, Januari 2014 Penulis,

( Sylvia Dinata)


(7)

ABSTRAK

Penggunaan kamera digital sebagai alat untuk mengambil citra saat ini sudah banyak digunakan karena kepraktisannya, terkadang hasil citra memiliki tampilan visual yang kurang baik. Salah satu faktor yang menghasilkan kualitas citra kurang baik karena adanya citra cacat. Situasi dan kondisi saat pengambilan citra juga berpengaruh terhadap kualitas citra yang membuat citra menjadi terlalu gelap atau terlalu terang. Perbaikan kualitas citra dapat dilakukan dengan berbagai metode, salah satunya adalah metode Multiscale Retinex. Multiscale Retinex adalah pengolahan citra yang bertujuan untuk melakukan normalisasi iluminasi citra. Jenis gambar yang digunakan berformat *.bmp dan *.jpg. Proses diawali dengan citra yang dimasukkan ke dalam program lalu diproses dengan metode Multiscale Retinex. Setelah proses pertama, proses selanjutnya dilakukan adalah peregangan kontras. Parameter citra yang digunakan adalah histogram. Penelitian yang dilakukan menghasilkan aplikasi pengolahan citra untuk meningkatkan kecerahan citra. Hasil penelitian menunjukkan secara visual file *.bmp menghasilkan kualitas citra yang lebih baik dibanding file *.jpg tetapi pada ukurang file *.bmp tidak mengalami perubahan.


(8)

IMPLEMENTATION MULTISCALE RETINEX METHOD FOR IMAGE ENHANCEMENT

ABSTRACT

The use of digital camera as a tool to take images are now widely used because of practicality, but sometimes the images have poor visual appearance. One of the factors which caused poor image quality is due to image defects. Circumstances when taking the picture also affects image quality in that the image may become too dark or too bright. Image quality improvement can be done by various methods, one of which is the Multiscale Retinex method. Multiscale Retinex is image processing which aims to normalize illumination of image. Types of image format used are *.bmp and *.jpg. The process begins with the image included in the program and processed with Multiscale Retinex method. After the first process, the next step is contrast stretching. The image parameters used are histogram. Research conducted resulted in the application of image processing to increase the brightness of the image. The results showed a visual file *.bmp produces better image quality than the *.jpg. but the file size *.bmp unchanged


(9)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstract vii

Daftar Isi viii

Daftar Tabel x

Daftar Gambar xi

Daftar Lampiran xii

Bab 1 Pendahuluan 1

1.1 Latar Belakang Masalah 1 1.2 Rumusan Masalah 2 1.3 Batasan Masalah 3 1.4 Tujuan Penelitian 3 1.5 Manfaat Penelitian 3 1.6 Metodolgi Penelitian 3 1.7 Sistematika Penulisan 4

Bab 2 Landasan Teori 6

2.1 Citra 6

2.1.1 Pengertian Citra 6

2.1.2 Pengertian Citra Digital 6

2.2 Pengolahan Citra 6

2.3 Jenis Citra 10

2.3.1 Citra Biner 10

2.3.2 Citra Grayscale 10

2.3.3 Citra Warna (8 bit) 11

2.3.4 Citra Warna (16 bit) 11

2.3.5 Citra Warna (24 bit) 12

2.4 Citra Warna 12

2.5 Format File Gambar 14

2.5.1 Format File Bitmap (BMP) 14

2.5.2 Format File JPEG 15

2.6 Perbaikan Kualitas Citra (Image Enhancement) 15

2.7 Metode Retinex 16

2.7.1 SSR (Single-scale Retinex) 17

2.7.2 MSR (Multi-scale Retinex) 18

2.7.3 Peregangan Kontras (Contrast Stretching) 19

2.8 Citra Hasil Akhir 20


(10)

Bab 3 Analisis dan Perancangan Sistem 22

3.1Analisis Sistem 22

3.1.1 Analisis Masalah 22

3.1.2 Analisis Persyaratan 23

3.1.2.1 Persyaratan Fungsional 23

3.1.2.2 Persyaratan Non-Fungsional 24

3.1.3 Pemodelan Sistem 24

3.1.3.1 Usecase Diagram 24

3.1.3.1.1 Usecase Metode Multiscale Retinex 25 3.1.3.1.2 Usecase Proses Contrast Stretching 26

3.1.3.1.3 Usecase Proses Analisis 26

3.1.3.2 Activity Diagram 26

3.1.3.2.1 Acitivity Diagram untuk Multiscale Retinex 27 3.1.3.2.2 Acitivity Diagram untuk Proses Contrast Stretching 27 3.1.3.3 Sequence Diagram Proses Multiscale Retinex 28

3.1.4 Flowchart Sistem 29

3.1.4.1 Flowchart Gambaran Umum 29

3.1.4.2 Flowchart Metode Multiscale Retinex 31

3.1.5 Rancangan Antar Muka 32

3.1.5.1 Rancangan Interface Form Cover 32

3.1.5.2 Rancangan Interface Form Utama 33

3.1.5.3 Rancangan Interface Form Analisis 34

3.1.5.4 Rancangan Interface Form Help 35


(11)

Bab 4 Implementasi dan Pengujian 38

4.1 Implementasi Sistem 38

4.1.1 Implementasi Metode Singlescale Retinex 38 4.1.2 Implementasi Metode Multiscale Retinex 46

4.2 Pengujian Sistem 48

4.2.1 Tampilan Halaman Cover 48

4.2.2 Tampilan Halaman Menu Utama 49

4.2.3 Tampilan Halaman Menu Petunjuk Penggunaan 50

4.2.4 Tampilan Halaman Menu Tentang 51

4.2.5 Pengujian Sistem Multiscale Retinex (MSR) 52 4.2.6 Hasil Pengujian Proses Multiscale Retinex 55

Bab 5 Kesimpulan dan Saran 65

5.1 Kesimpulan 65

5.2 Saran 66


(12)

DAFTAR TABEL

Halaman

Tabel 2.1 Kode Warna RGB 14

Tabel 3.1 Spesifikasi Use Case metode Multiscale Retinex 25 Tabel 3.2 Spesifikasi Use Case Proses Contrast Stretching 26

Tabel 3.3 Spesifikasi Use Case Analisis 26

Tabel 4.1 Hasil Pengujian Multiscale Retinex file .jpg 55 Tabel 4.2 Lanjutan Hasil Pengujian Multiscale Retinex file .jpg 56 Tabel 4.3 Lanjutan Hasil Pengujian Multiscale Retinex file .jpg 57 Tabel 4.4 Lanjutan Hasil Pengujian Multiscale Retinex file .jpg 58 Tabel 4.5 Lanjutan Hasil Pengujian Multiscale Retinex file .jpg 59 Tabel 4.6 Hasil Pengujian Multiscale Retinex file .bmp 60 Tabel 4.7 Lanjutan Hasil Pengujian Multiscale Retinex file .bmp 61 Tabel 4.8 Lanjutan Hasil Pengujian Multiscale Retinex file .bmp 62 Tabel 4.9 Lanjutan Hasil Pengujian Multiscale Retinex file .bmp 63 Tabel 4.10 Kesimpulan Hasil Akhir 63


(13)

DAFTAR GAMBAR

Halaman Gambar 2.1 Tahap-tahap Pengolahan Citra 8

Gambar 2.2 Citra Biner 10

Gambar 2.3 Citra Grayscale 10

Gambar 2.4 bit truecolor 11

Gambar 2.5 16 Bit Highcolor 12

Gambar 2.6 Citra Warna 12

Gambar 2.7 Gambaran Umum Retinex 16 Gambar 3.1 Diagram Ishikawa untuk Analisa Masalah 23 Gambar 3.2 Use case Diagram Sistem 25 Gambar 3.3 Activity Diagram untuk Metode Multiscale Retinex 27 Gambar 3.4 Activity Diagram untuk Proses Contrast Stretching 28 Gambar 3.5 Sequence Diagram Proses Multiscale Retinex 29 Gambar 3.6 Gambaran Umum Sistem 30 Gambar 3.7 Flowchart untuk Proses Multiscale Retinex 31

Gambar 3.8 Rancangan Form Cover 32

Gambar 3.9 Rancangan Interface Form Utama 33

Gambar 3.10 Rancangan Interface Form Analisis 35

Gambar 3.11 Rancangan Interface Form Help 36

Gambar 3.12 Rancangan Interface Form About 37

Gambar 4.1 Perkalian Pixel Citra Awal dan Kernel Gaussian 40 Gambar 4.2 Lanjutan Perkalian Piksel Citra Awal dan Kernel Gaussian 40 Gambar 4.3 Lanjutan Perkalian Piksel Citra Awal dan Kernel Gaussian 40 Gambar 4.4 Hasil Perhitungan Konvolusi 41 Gambar 4.5 Perhitungan Nilai SSR1 41 Gambar 4.6 Hasil Perhitungan Konvolusi 42

Gambar 4.7 Hasil SSR2 43

Gambar 4.8 Hasil Konvolusi 44

Gambar 4.9 Hasil SSR3 44 Gambar 4.10 Coding yang digunakan dalam Metode Singlescale Retinex 45 Gambar 4.11 Hasil Perhitungan Multiscale Retinex 46

Gambar 4.12 Hasil Normalisasi 47

Gambar 4.13 Coding yang digunakan dalam Metode Multiscale Retinex 48

Gambar 4.14 Tampilan Halaman Cover 49

Gambar 4.15 Tampilan Halaman Menu Utama 50

Gambar 4.16 Tampilan Halaman Menu Petunjuk Penggunaan 51

Gambar 4.17 Tampilan Halaman Menu Tentang 51

Gambar 4.18 Tampilan Pop-up Windows Pilih File Citra 52 Gambar 4.19 Tampilan File Citra yang akan diproses 53

Gambar 4.20 Tampilan Pengujian MSR Process 53

Gambar 4.21 Tampilan Pengujian Contrast Stretching 54

Gambar 4.22 Tampilan Pengujian Analisis 55

Gambar 4.23 Tampilan Histogram File .jpg 59


(14)

DAFTAR LAMPIRAN

Halaman

A. Lampiran Listing Program A-1


(15)

ABSTRAK

Penggunaan kamera digital sebagai alat untuk mengambil citra saat ini sudah banyak digunakan karena kepraktisannya, terkadang hasil citra memiliki tampilan visual yang kurang baik. Salah satu faktor yang menghasilkan kualitas citra kurang baik karena adanya citra cacat. Situasi dan kondisi saat pengambilan citra juga berpengaruh terhadap kualitas citra yang membuat citra menjadi terlalu gelap atau terlalu terang. Perbaikan kualitas citra dapat dilakukan dengan berbagai metode, salah satunya adalah metode Multiscale Retinex. Multiscale Retinex adalah pengolahan citra yang bertujuan untuk melakukan normalisasi iluminasi citra. Jenis gambar yang digunakan berformat *.bmp dan *.jpg. Proses diawali dengan citra yang dimasukkan ke dalam program lalu diproses dengan metode Multiscale Retinex. Setelah proses pertama, proses selanjutnya dilakukan adalah peregangan kontras. Parameter citra yang digunakan adalah histogram. Penelitian yang dilakukan menghasilkan aplikasi pengolahan citra untuk meningkatkan kecerahan citra. Hasil penelitian menunjukkan secara visual file *.bmp menghasilkan kualitas citra yang lebih baik dibanding file *.jpg tetapi pada ukurang file *.bmp tidak mengalami perubahan.


(16)

IMPLEMENTATION MULTISCALE RETINEX METHOD FOR IMAGE ENHANCEMENT

ABSTRACT

The use of digital camera as a tool to take images are now widely used because of practicality, but sometimes the images have poor visual appearance. One of the factors which caused poor image quality is due to image defects. Circumstances when taking the picture also affects image quality in that the image may become too dark or too bright. Image quality improvement can be done by various methods, one of which is the Multiscale Retinex method. Multiscale Retinex is image processing which aims to normalize illumination of image. Types of image format used are *.bmp and *.jpg. The process begins with the image included in the program and processed with Multiscale Retinex method. After the first process, the next step is contrast stretching. The image parameters used are histogram. Research conducted resulted in the application of image processing to increase the brightness of the image. The results showed a visual file *.bmp produces better image quality than the *.jpg. but the file size *.bmp unchanged


(17)

BAB 1

PENDAHULUAN

1.1 Latar Belakang Masalah

Penggunaan kamera digital sebagai alat untuk mengambil citra saat ini sudah banyak digunakan karena kepraktisannya, terkadang hasil citra memiliki tampilan visual yang kurang baik. Salah satu faktor yang menghasilkan kualitas citra kurang baik karena adanya citra cacat (noise). Kualitas pencahayaan menjadi terlalu gelap atau terlalu terang.

Kualitas citra (Image Enhancement) merupakan salah satu proses awal dalam pengolahan citra (Image Processing). Dengan pengolahan citra, citra dapat diubah menjadi citra yang sesuai keinginan. Adapun proses-proses yang termasuk dalam perbaikan kualitas citra adalah perubahan kecerahan gambar (image brightness), peregangan kontras (contrast stretching), perubahan histogram (histogram equalization), pelembutan citra (image smoothing), penajaman tepi (sharpening edge), pewarnaan semu (pseudocolouring), perubahan geometrik[6]

Situasi dan kondisi saat pengambilan citra juga berpengaruh terhadap hasil citra yang diperoleh. Perlu suatu metode untuk memperbaiki kualitas citra terutama pada peningkatan kecerahan citra.

Salah satunya adalah metode Multiscale Retinex. Kelebihan dari metode Multiscale Retinex dapat memperbaiki kualitas citra dengan meningkatkan warna asli citra dan kecerahan citra terutama saat pengambilan citra dalam kondisi gelap.

Beberapa penelitian yang berkaitan dengan tugas akhir ini antara lain, Analisis Perbandingan Histogram Equalization dan model Logarithmic Image Processing


(18)

(LIP) untuk Image Enhancement oleh Murinto, dkk pada program studi Teknik Informatika Fakultas Teknologi Industri Universitas Ahmad Dahlan Yogyakarta, disimpulkan bahwa kedua metode tersebut memiliki algoritma yang berbeda. Dari hasil penelitian menunjukkan bahwa ukuran citra mempengaruhi proses dalam metode ini dan hasil output metode Logarithmic Image Processing lebih baik dibandingkan dengan metode Ekualisasi Histogram karena hasil citranya tidak merubah citra asli. Penelitian lainnya yaitu Implementasi Metode Retinex Untuk Pencerahan Citra oleh Eko Aribowo, dkk program studi Teknik Informatika Fakultas Teknologi Industri Universitas Ahmad Dahlan Yogyakarta. Hasil uji coba menunjukkan bahwa aplikasi ini dapat meningkatkan kecerahan dan kualitas citra menjadi lebih baik.

Untuk itu maka dalam tugas akhir ini peneliti tertarik mengangkat suatu metode lain untuk mengatasi masalah-masalah kecerahan pada citra yaitu

“Metode MultiScale Retinex untuk Image Enhancement”.

1.2 Rumusan Masalah

Adapun masalah yang akan dibahas dalam penelitian ini adalah :

1. Bagaimana meningkatkan kualitas citra dengan menggunakan Multiscale Retinex?

2. Bagaimana merancang aplikasi yang mengimplementasikan metode Multiscale Retinex dalam upaya memperbaiki kualitas citra ?

3. Bagaimana kualitas citra setelah melalui proses metode Multiscale Retinex?

1.3 Batasan Masalah

Adapun batasan masalah dalam penelitian ini adalah :

1. Membangun aplikasi Image Enhancement menggunakan metode Retinex khususnya menggunakan metode Multiscale Retinex (MSR)


(19)

3. Jumlah skala yang digunakan Multiscale Retinex pada aplikasi berjumlah tiga

4. Parameter yang digunakan adalah Histogram dan peregangan kontras (Contrast Stretching) digunakan untuk mencerahkan warna RGB

5. Aplikasi ini dibangun menggunakan pemrograman Microsoft Visual C#. Net 2010

6. Ukuran file maksimal 512x512 piksel

1.4 Tujuan Penelitian

Tujuan dari penelitian ini adalah mengembangkan aplikasi berbasis Metode Multiscale Retinex untuk Image Enhancement.

1.5 Manfaat Penelitian

Penelitian ini bermanfaat untuk dapat membedakan kualitas citra sebelum dan sesudah citra tersebut diimplementasikan dengan metode multiscale retinex.

1.6 Metodologi Penelitian

Metodologi penelitian yang digunakan dalam penulisan tugas akhir ini adalah sebagai berikut:

a. Studi Literatur

Melakukan studi kepustakaan melalui penelitian berupa buku mengenai pengolahan citra digital, metode retinex, metode Multiscale Retinex, jurnal dan artikel-artikel yang relevan.


(20)

b. Analisis dan perancangan

Berisi tentang analisis mengenai proses kerja dari metode Multiscale Retinex yang terdiri dari Use Case Diagram, Squential Diagram, Activity Diagram, dan perancangan tampilan form dari aplikasi.

c. Implementasi

Metode ini dilaksanakan dengan mengimplementasikan rancangan sistem yang telah dibuat pada impelementasi sistem menggunakan bahasa pemrograman Microsoft Visual C#. Net 2010.

d. Pengujian

Metode ini dilaksanakan dengan melakukan pengujian terhadap sistem dengan melakukan proses pengolahan citra dan kemudian citra diimplementasikan ke metode Multiscale Retinex.

e. Dokumentasi

Metode ini dilaksanakan dengan membuat dokumentasi dalam bentuk laporan tugas akhir.

1.7 Sistematika Penulisan

BAB 1: PENDAHULUAN

Bab ini membahas konsep dasar penyusunan Skripsi, yaitu mengenai latar belakang pemilihan judul “Implementasi metode multiscale retinex untuk image enhancement”, rumusan masalah, batasan masalah, tujuan penulisan, manfaat penulisan, metodologi penelitian dan sistematika penulisan.

BAB 2: TINJAUAN PUSTAKA

Bab ini membahas dasar teori yang menunjang penulisan Skripsi mengenai teori-teori yang mendukung penelitian. Teori yang diangkat adalah pengolahan citra, protokol Implementasi Metode Multiscale Retinex untuk Image Enhancement.


(21)

BAB 3: ANALISIS DAN PERANCANGAN

Bab ini membahas analisis terhadap implementasi metode Multiscale Retinex untuk Image Enhancement. Analisis masalah yang dimulai dengan tahap mengindentifikasikan masalah, memahami kerja sistem yang akan dibuat, dan membuat laporan tentang hasil analisis, dan perancangan yang dimaksud adalah dengan membuat rancangan dan interface sistem dengan protokol Multiscale Retinex.

BAB 4: IMPLEMENTASI DAN PENGUJIAN

Bab ini membahas implementasi dan pengujian aplikasi yang telah selesai dibangun dengan metode Multiscale Retinex dan melakukan peregangan kontras (Contrast Stretching) serta histogram antara citra awal, Multiscale Retinex, dan Contrast Stretching.

BAB 5: KESIMPULAN DAN SARAN

Bab ini membahas kesimpulan isi dari keseluruhan uraian bab-bab sebelumnya dan saran-saran dari hasil yang diperoleh yang diharapkan dapat bermanfaat untuk pengembangan selanjutnya.


(22)

BAB 2

LANDASAN TEORI

2.1 Citra

2.1.1 Pengertian Citra

Citra adalah suatu representasi (gambaran), kemiripan, atau imitasi dari suatu objek[11]. Suatu citra diperoleh dari penangkapan kekuatan sinar yang dipantulkan oleh objek. Citra merupakan output alat perekaman, seperti kamera yang bersifat analog maupun digital. Citra analog berupa sinyal-sinyal video seperti gambar pada televisi, sedangkan citra digital dapat langsung disimpan pada suatu media penyimpanan.

2.1.2 Pengertian Citra Digital

Citra digital merupakan sebuah larik (array) yang berisi nilai-nilai real maupun komplek yang direpresentasikan dengan deretan bit tertentu[8]. Citra yang disimpan dalam memori komputer hanyalah angka-angka yang menunjukkan besar intensitas pada masing-masing piksel tersebut.

2.2 Pengolahan Citra

Di dalam bidang komputer, ada 3 bidang studi yang berkaitan dengan citra, namun tujuan ketiganya berbeda, yaitu :

1. Grafika Komputer (Computer Graphics) 2. Pengolahan Citra (Image Processing)

3. Pengenalan Pola (Pattern Recognition/Image Interpretation)

Disini akan dibahas tentang pengolahan citra. Seiring waktu semakin meningkatnya ilmu pengetahuan maka semakin meningkat juga kebutuhan analisisnya.


(23)

Tetapi kebanyakan citra tidak sesuai yang diharapkan, salah satu faktor adanya cacat (noise) saat pengambilan gambar. Maka, proses pengolahan citra sangat diperlukan dalam kehidupan sehari-hari.

Tujuan dari pengolahan citra digital sebagai berikut :

1. Memperbaiki kualitas gambar dilihat dari aspek radiometrik (peningkatan kontras, transformasi warna, restorasi citra) dan dari aspek geometrik (rotasi, translasi, skala, transformasi geometrik).

2. Melakukan proses penarikan informasi atau deskripsi objek atau pengenalan objek yang terkandung pada citra.

3. Melakukan kompresi atau reduksi data untuk tujuan penyimpanan data, transmisi data, dan waktu proses data.

Proses citra, khususnya dengan menggunakan komputer akan menghasilkan hasil yang lebih baik dari sebelumnya. Berikut adalah alur dari pengolahan citra.

Citra Asli Proses → Pengolahan Citra → Citra Hasil

Pada umumnya, operasi-operasi pengolahan citra diterapkan pada citra apabila: 1. Perbaikan atau modifikasi citra untuk meningkatkan kualitas visual atau

menonjolkan beberapa aspek informasi yang terkandung dalam citra. 2. Elemen di dalam citra perlu dikelompokkan, dicocokkan, atau diukur. 3. Sebagian citra perlu di gabung dengan bagian citra yang lain.

Pengolahan citra juga mempunyai manfaat-manfaat pada bidang tertentu, antara lain:

1. Bidang perdagangan a. Pembacaan barcode

b. Pengenalan huruf atau angka pada suatu formulir secara otomatis 2. Bidang militer

a. Mengenali sasaran peluru kendali melalui sensor visual. b. Mengidentifikasi jenis pesawat musuh

3. Bidang kedokteran a. Mammografi

b. Rekontruksi foto janin hasil USG 4. Bidang biologi


(24)

5. Komunikasi data

a. Kompresi citra yang akan ditansmisikan 6. Hiburan

a. Game

b. Kompresi video 7. Hukum

a. Pengenalan sidik jari b. Pengenalan foto narapidana

Dalam pengolahan citra terdapat langkah-langkah penting. Gambar 2.1 merupakan tahapan dalam pengolahan citra[11].

Akuisisi Citra

Basis Pengetahuan Preprocessing

Pengenalan dan Interpretasi Representasi

dan Deskripsi Segmentasi

Domain masalah

Hasil

Gambar 2.1Tahap-tahap pengolahan citra 1. Akuisisi citra

Akuisisi citra adalah tahap awal untuk mendapatkan citra digital. Tujuan akuisisi citra untuk menentukan data yang diperlukan dan memilih metode perekaman citra digital. Tahap ini dimulai dari objek yang akan diambil gambarnya, persiapan alat-alat, dan pada pencitraannya. Dimana pencitraan adalah kegiatan transformasi dari citra tampak (foto, gambar, lukisan, dll) menjadi citra digital.

2. Preprocessing

Preprocessing memerlukan tahapan untuk menjamin kelancaran pada proses berikutnya, antara lain:

a. Peningkatan kualitas citra (kontras, kecerahan, dll) b. Menghilangkan noise


(25)

c. Perbaikan citra (image restoration) d. Transformasi (image transformation)

e. Menentukan bagian citra yang akan diobservasi 3. Segmentasi

Segmentasi bertujuan untuk mempartisi citra menjadi bagian-bagian pokok yang mengandung informasi penting, misalnya pada pemisahan objek dan latar belakang.

4. Representasi dan deskripsi

Representasi adalah suatu proses untuk merepresentasikan suatu wilayah sebagai suatu daftar titik-titik koordinat dalam kurva yang tertutup, dengan deskripsi luasan dan perimeternya. Proses selanjutnya dilakukan deskripsi citra dengan cara seleksi ciri dan ekstrasi ciri (Feature Extraction and Selection). Dimana seleksi ciri bertujuan untuk memilih informasi kuantitatif dari ciri yang ada, dan dapat membedakan kelas-kelas objek dengan baik, sedangkan ektrasi ciri mempunyai tujuan untuk mengukur besaran kuantitatif ciri setiap piksel, misalnya rata-rata, standar deviasi, dan lain-lain.

5. Pengenalan dan interpretasi

Tahap pengenalan bertujuan untuk memberi label pada sebuah objek yang informasinya disediakan oleh descriptor, berbeda dengan tahap interpretasi yang bertujuan untuk memberi arti atan makna kepada kelompok objek-objek yang dikenali.

6. Basis pengetahuan

Basis pengetahuan bertujuan untuk memandu operasi dari masing-masing modul proses dan mengkontrol interaksi antara modul-modul tersebut, dan dapat sebagai referensi pada proses pengenalan pola (template matching). 2.3 Jenis Citra

Nilai suatu piksel memiliki nilai dalam rentang tertentu, dari nilai minimum sampai nilai maksimum, jangkauan yang digunakan berbeda-beda tergantung dari jenis warnanya. Secara umum jangkauannya adalah 0-255. Berikut adalah jenis-jenis citra berdasarkan nilai pikselnya.


(26)

Citra biner adalah citra digital yang hanya memiliki dua kemungkinan nilai piksel yaitu hitam dan putih[8]. Citra biner hanya membutuhkan satu bit untuk mewakili nilai setiap piksel dari citra biner.

Gambar 2.2 Citra Biner 2.3.2 Citra Grayscale

Citra grayscale adalah citra digital yang hanya memiliki satu nilai kanal pada setiap pikselnya, dengan kata lain nilai bagian red = green = blue[8]. Citra grayscale memiliki kedalaman warna 8 bit (256 kombinasi warna keabuan).

Gambar 2.3 Citra Grayscale

2.3.3 Citra Warna (8 bit)

Setiap piksel dari citra warna (8 bit) dengan jumlah warna maksimum yang dapat digunakan adalah 256 warna. Setiap titik (piksel) pada citra warna mewakili warna yang merupakan kombinasi dari tiga warna dasar yaitu merah, hijau, dan biru yang biasa disebut citra RGB (Red, Green, Blue). Ada dua jenis citra warna 8 bit. Pertama, citra warna 8 bit dengan menggunakan palet warna 256 dengan setiap paletnya memiliki pemetaan nilai (colormap) RGB tertentu. Model ini lebih sering digunakan. Kedua, setiap piksel memilki format 8 bit sebagai berikut[8].

Bit-7 Bit-6 Bit-5 Bit-4 Bit-3 Bit-2 Bit-1 Bit-0


(27)

Bentuk kedua dinamakan 8 bit truecolor. Dapat dilihat pada gambar 2.4.

Gambar 2.4 Bit Truecolor

2.3.4 Citra Warna (16 bit)

Citra warna 16 bit biasanya disebut sebagai citra highcolor. Setiap pikselnya diwakili dengan 2 byte memory (16 bit). Warna 16 bit memiliki 65.536 warna. Dalam formasi bitnya, nilai merah dan biru mengambil tempat di 5 bit di kanan dan kiri. Komponen hijau memiliki 5 bit ditambah 1 bit ekstra. Pemilihan komponen hijau dengan deret 6 bit dikarenakan penglihatan manusia lebih sensitive terhadap warna hijau[8].

Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

R R R R R G G G G G G B B B B B

Gambar 2.5 menampilkan deret warna yang dihasilkan dari warna 16 bit.


(28)

2.3.5 Citra Warna (24 bit)

Setiap piksel dari citra warna 24 bit diwakili dengan 24 bit sehingga total 16.777.216 variasi warna. Variasi ini tentunya sudah sangat memvisualisasikan seluruh warna yang dapat dilihat oleh penglihatan manusia. Setiap poin informasi piksel (RGB) disimpan ke dalam 1 byte data. 8 bit pertama menyimpan nilai biru, kemudian diikuti dengan nilai hijau pada 8 bit kedua dan pada 8 bit terakhir merupakan warna merah.

Gambar 2.6 Citra Warna

2.4 Citra Warna

Warna adalah persepsi yang dirasakan oleh sistem visual manusia terhadap panjang gelombang cahaya yang dipantulkan oleh objek[2]. Setiap warna mempunyai panjang gelombang yang berbeda. Warna merah mempunyai panjang gelombang paling tinggi, sedangkan warna ungu mempunyai panjang gelombang paling rendah.

Citra warna adalah citra dengan sistem grafik yang memiliki satu set nilai tersusun yang menyatakan berbagai tingkat warna[10]. Setiap piksel pada citra warna mewakili warna yang merupakan kombinasi dari tiga warna dasar (RGB = Red Green Blue).

Manusia punya 5-7 juta sel yang dibagi menjadi tiga kategori sensor (merah, hijau, dan biru). 65% sel kerucut sensitif pada warna merah, 33% pada warna hijau, dan 2% pada warna biru. Pada karakteristik mata manusia warna terlihat seperti kombinasi warna variabel yang disebut primer, yaitu merah (red), hijau (green), dan biru (blue).


(29)

1. Magenta = merah + biru 2. Cyan = hijau + biru 3. Kuning = merah + hijau

Warna-warna yang diterima oleh mata merupakan hasil kombinasi cahaya dengan panjang gelombang berbeda. Kombinasi warna yang memberikan rentang warna yang paling lebar adalah red(R), green(G) dan blue(B) dan warna bukan merupakan besaran fisik tetapi warna merupakan suatu sensasi yang dihubungkan dengan sistem saraf kita, seperti halnya rasa maupun bau. Sensasi warna diperoleh dengan adanya interaksi antara warna dengan sistem saraf sensitive warna kita.

Sistem RGB digabungkan untuk memperoleh warna tertentu. Misalnya warna putih diperoleh dari hasil gabungan warna merah = 255, hijau = 255, dan biru = 255. Dalam sistem RGB, warna putih cerah dinyatakan dengan RGB (255, 255, 255). Nilai dari setiap primer adalah 0 sampai 255. Sehingga kemungkinan warna yang didapat adalah 256 x 256 x 256yakni kurang lebih 16.7 juta warna.

Pada tabel 2.1 akan diperlihatkan beberapa hasil penggabungan kode warna RGB.

Tabel 2.1 Kode Warna RGB

Colour Red Green Blue

Black 0 0 0

Blue 0 0 255

Green 0 255 0

Cyan (Blue+Green) 0 255 255

Red 255 0 0

Magenta (Red+Blue) 255 0 255

Yellow (Red+Green) 255 255 0

White (Red+Green+Blue) 255 255 255


(30)

2.5 Format File Gambar

File gambar berfungsi untuk menyimpan sebuah gambar yang dapat ditampilkan di layar ke dalam suatu media penyimpanan data. Untuk penyimpanan tersebut digunakan format gambar. Setiap format gambar memiliki karakteristik masing-masing. Beberapa format umum saat ini, yaitu bitmap (.bmp), tagged image format (.tif, tiff), portable network graphics (.png), graphics interchange format (.gif), jpeg (.jpg), mpeg (.mpg), dll.

2.5.1 Format File Bitmap (BMP)

Format file bitmap adalah sebuah format file citra standard untuk komputer-komputer yang menjalankan sistem operasi[10]. Dasarnya format BMP tidak dikompresi sehingga ukuran filenya relatif lebih besar dari file JPG.

Kelebihan dari format file ini, yaitu mampu menyimpan gambar dalam model warna RGB, Grayscale, Indexed Color, dan Bitmap. Serta citra dalam format bitmap menghasilkan gambar yang lebih bagus daripada citra dalam format yang lainnya, karena citra dalam format bitmap umumnya tidak dimampatkan sehingga tidak ada informasi yang hilang. Format ini dapat menyimpan informasi dengan kualitas tingkat 1 bit sampai 24 bit. Terjemahan bebas bitmap adalah pemetaan bit. Artinya, nilai intensitas piksel di dalam citra dipetakan ke sejumlah bit tertentu. Peta bit yang umum adalah 8, artinya setiap piksel panjangnya 8 bit. Delapan bit ini merepresentasikan nilai intensitas piksel. Dengan demikian ada sebanyak 28= 256 derajat keabuan, mulai dari 0 sampai 255.

2.5.2 Format File JPEG (Joint Photographic Experts Group)

Format file JPEG dapat mengkompres objek dengan tingkat kualitas sesuai dengan pilihan yang disediakan dan dapat dimanfaatkan untuk menyimpan gambar yang akan digunakan untuk keperluan halaman web, multimedia, dan publikasi elektronik lainnya. Format file JPEG ini juga mampu menyimpan gambar dengan model warna RGB, CMYK, dan Grayscale serta mampu menyimpan alpha channel, namun karena orientasinya ke publikasi elektronik maka format ini berukuran relatif lebih kecil dibandingkan dengan format file lainnya.


(31)

Perbaikan kualitas citra (image enhancement) merupakan sebuah proses awal dalam pengolahan citra (image preprocessing)[2]. Salah satu penyebab terjadinya perbaikan kualitas citra karena citra seringkali mengalami penurunan mutu (degradasi) disebabkan karena citra cacat (noise). Noise atau derau adalah titik pada citra yang sebenarnya bukan merupakan bagian pada citra tersebut, melainkan tercampur karena suatu sebab[6].

Operasi-operasi yang termasuk pada perbaikan kualitas citra antara lain kecerahan gambar (image brightness), peregangan kontras (contrast stretching), perataan histogram (histogram equalization), pelembutan citra (image smoothing), penajaman (sharpening) tepi (edge), pewarnaan semu (pseudocolouring), pengubahan geometrik, dll. Peningkatan kualitas citra dibagi dalam dua kategori, antara lain metode domain spasial (ruang atau waktu) dan metode frekuensi. Teknik metode domain spasial yaitu berdasarkan manipulasi langsung dari piksel di dalam citra, sedangkan pada teknik metode frekuensi yaitu berdasarkan perubahan transformasi fourier pada citra[11].

2.7 Metode Retinex

Metode Retinex ini dikemukakan oleh Edwin Land pada tahun 1971. Melalui eksperimen yang dilakukan olehnya, terlihat bahwa sistem penglihatan manusia mampu secara praktis mengenal dan mencocokkan warna-warna di bawah sebuah range illumination berbeda yang luas, hal ini dikenal dengan Color Constancy Phenomenon. Color Constancy atau ketetapan warna adalah salah satu keistimewaan dari sistem penglihatan manusia, yang mengusahakan agar warna yang diterima dari suatu benda terlihat sama meskipun berada pada kondisi pencahayaan yang berbeda beda[5].

Teori Retinex berhubungan dengan kompensasi untuk efek illumination (pencahayaan) pada citra. Tujuan utama dalam metode Retinex adalah untuk memisahkan image S ke dalam dua buah image yang berbeda, yaitu reflectance image R dan illumination image L, di mana pada setiap titik (x,y) dalam image domain[12].


(32)

Gambar 2.7Gambaran Umum Retinex

Proses pada gambar 2.4 terjadinya pembuangan efek cahaya dari pencahayaan yang didapat dari depan atau belakang citra atau gambar dan memperbaiki warna warna dalam citra dengan membuang illuminasi yang membuat warna berubah.

2.7.1 SSR (Single-Scale Retinex)

Single-Scale Retinex (SSR) merupakan Retinex versi dinamis yang dikemukan oleh Land untuk meniru sistem kerja neuron pada sistem persepsi warna manusia. Berikut ini adalah formulasi Single-Scale Retinex[4].

Ri(x,y) =log Ii (x,y) – log[F(x,y)*Ii(x,y)] ... (2.2)

Dimana Ri(x,y) merupakan output Retinex Ii (x,y) adalah distribusi citra pada

piksel ke (x,y). Simbol “*” menyatakan operator konvolusi. Simbol i menyatakan channel warna, misalnya Red(R), Green(G), dan Blue(B). F(x,y) merupakan fungsi Gaussian yang didefinisikan sebagai berikut[14]:

�(�,�) = 1

2��2 �− �2+�2

2�2 ... (2.3)

Dimana , G(x,y) merupakan Gaussian kernel pada piksel (x,y). Simbol � atau pi merupakan konstanta yaitu 22/7. Simbol � merupakan nilai sigma. Simbol (x,y) adalah kordinat piksel. Sedangkan simbol e merupakan ketetapan yaitu 2.7182818246

Gaussian filter digunakan pada citra supaya citra lebih halus dalam memproses gambar. Gaussian filter juga bertujuan untuk menghilangkan noise pada citra dan meningkatkan kualitas detail citra.


(33)

Konvolusi merupakan perkalian total dari dua buah fungsi matriks f dan kernel g. Untuk mengaplikasikan penapis/filter pada citra, digunakan metode konvolusi. Konvolusi bisa dinyatakan dalam matriks, dimana setiap elemen matriks penapis merupakan koefisien konvolusi. Operasi konvolusi merupakan penggeseran kernel piksel per piksel dan hasil disimpan dalam matriks baru.

Berikut merupakan ilustrasi konvolusi, yaitu:

A1 A2 A3 A4 A5 A6 A7 A8 A9

f(x,y)

Maka proses perhitungan konvolusi dapat dilakukan dengan : f(x,y)*g(x,y) ... (2.5)

f (x,y) = AA1 + BA + CA + DA + EA + FA + GA +HA + IA

2.7.2 MSR (Multi-Scale Retinex)

Multi-Scale Retinex (MSR) perkembangan dari Singlescale Retinex karena keterbatasan yang dimiliki oleh Single-Scale Retinex (SSR), yaitu sebagai berikut.

1. SSR dapat melakukan kompresi jarak dinamis pada citra dengan skala rendah, sehingga memungkinkan citra dengan jarak dinamis sangat lebar dikompresi dengan melakukan penguatan bagian gelap dan melemahkan bagian yang terang. Sedangkan skala besar, SSR dapat menghasilkan citra lebih alami. Tetapi SSR tidak dapat melakukan kedua hal tersebut sekaligus.

A B C

D E F

G H I


(34)

2. SSR cenderung menghasilkan area berwarna sama menjadi berwana abu-abu, terutama jika digunakan skala rendah.

Ide dari dasar Multi-Scale Retinex untuk masalah SSR terdapat pada skala yang berbeda yang digunakan dan diberi bobot yang berbeda untuk menggabungkan kelebihan dan menghilangkan kelemahan yang dimiliki dari skala rendah dan skala besar. Berikut adalah formulasi original Multiscale Retinex[4].

1

i i

N

msr n n

n

R W R

=

=

... (2.6)

i MSR

R merupakan output dari Multi-Scale Retinex (MSR) yang merupakan jumlah dari output SSR yang masing-masing diberi bobot. N adalah jumlah skala yang digunakan. wn adalah bobot yang diasosiasikan dengan skala ke- n. Rnimerupakan

output dari SSR yang diasosiasikan dengan skala ke- n. Simbol i menyatakan channel warna, misalnya Red(R), Green(G), dan Blue(B).

Berdasarkan formula MSR tersebut, konstruksi MSR ditentukan oleh parameter-parameter berikut ini.

1. Jumlah Skala (N)

Jumlah skala yang digunakan adalah 3 sebagai jumlah skala minimun yang menyediakan output yang baik berdasarkan persepsi visual dan waktu komputasi yang cepat.

2. Sigma yang digunakan (�n)

Sigma yang digunakan sebaiknya kombinasi dari tiga tingkatan yaitu rendah, sedang, dan tinggi tergantung dengan dimensi pada citra.

3. Bobot untuk setiap input SSR (wn)

Bobot yang digunakan dalam proses MSR harus sama dengan satu. Jika N=3, maka Wn = W1+W2+W3 dimana Wn = 1. Nilai W1, W2, dan W3 bisa disesuaikan dengan kebutuhan.

2.7.3 Peregangan Kontras (Contrast Stretching)

Kontras adalah tingkat penyebaran piksel-piksel ke dalam intensitas warna[11]. Citra dikelompokkan ke dalam tiga kategori kontras, antara lain :


(35)

Citra Kontras-Rendah memiliki ciri dengan sebagian besar komposisi citranya adalah terang atau sebagian besarnya adalah gelap. Citra kontras-rendah dapat diperbaiki kualitasnya dengan operasi peregangan kontras. Nilai-nilai keabuan piksel akan merentang dari 0 sampai 255.

2. Citra Kontras-Bagus

Citra Kontras-Bagus memperlihatkan jangkauan nilai keabuan yang lebar tanpa ada nilai keabuan yang mendominasi.

3. Citra Kontras-Tinggi

Citra Kontras-Tinggi memiliki jangkauan nilai keabuan yang lebar, tetapi terdapat area yang lebar dengan didominasi oleh warna gelap dan terang.

Proses peregangan kontras termasuk proses perbaikan citra yang hanya tergantung dari nilai intensitas satu piksel, tidak tergantung dari piksel lain yang ada disekitarnya. Cara kerja proses peregangan kontras antara lain:

1. Cari batas bawah pengelompokkan piksel dengan memindai histogram dari nilai keabuan terkecil ke nilai keabuan terbesar (0 sampai 255) untuk mendapatkan piksel pertama.

2. Cari batas atas pengelompokkan piksel dari nilai keabuan terbesar ke nilai keabuan terkecil (255 sampai 0).

3. Piksel-piksel yang berada di bawah diset sama dengan 0, sedangkan piksel-piksel yang berada di atas di set sama dengan 255.

4. Piksel-piksel yang berada di antara nilai pertama dan kedua diskalakan untuk memenuhi rentang nilai-nilai keabuan yang lengkap dengan persamaan sebagai berikut[13]:

S = �−����

����−���� � 255 ... (2.7)

Dimana, r adalah nilai keabuan dalam citra semula, s adalah nilai keabuan yang baru, rminadalah nilai keabuan terendah dari kelompok piksel, dan rmax adalah


(36)

2.8 Citra Hasil Akhir 2.8.1 Analisis Histogram

Histogram adalah grafik yang menunjukkan frekuensi kemunculan setiap nilai gradasi warna[11]. Bila digambarkan pada koordinat maka sumbu x (absis) menunjukkan tingkat warna, sedangkan sumbu Y(ordinat) menunjukkan frekuensi kemunculan titik dan diagram yang menunjukkan jumlah kemunculan nilai grey-level pada suatu citra, dimana sumbu x diagram menggambarkan nilai grey-level dan sumbu y mewakili jumlah kemunculan grey-level tertentu.

Histogram mempunyai manfaat, antara lain:

1. Sebagai indikasi visual untuk menentukan skala keabuan yang tepat sehingga diperoleh kualitas citra yang diinginkan.

Contoh : pengubahan kontras, kecemerlangan, dan lain-lain. 2. Untuk pemilihan batas ambang (threshold)

Contoh : proses segmentasi citra (memisahkan objek dari latar belakangnya) pada hakikatnya adalah menentukan batas-batas nilai keabuan dari objek dan batas-batas nilai keabuan latar belakangnya sehingga antara objek dan latar belakang dipisahkan.


(37)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Sistem

Analisis sistem merupakan tahapan awal untuk membangun perancangan sebuah sistem. Tahap analisis sistem bertujuan untuk mempelajari masalah masalah yang ada dalam pembuatan sistem dan akhirnya dapat membantu proses perancangan model pada suatu sistem yang akan diimplementasikan.

3.1.1 Analisis Masalah

Masalah yang akan dibahas pada penelitian ini adalah perbaikan kualitas citra (Image Enhancement) dimana citra digital yang memiliki kualitas rendah akan diproses menjadi citra digital yang memiliki kualitas lebih baik. Citra digital yang akan diperbaiki adalah citra warna, dimana citra digital tersebut akan diimplementasikan pada metode Multiscale Retinex dimana kelebihan metode ini dapat menerangkan warna asli gambar.

Analisis masalah digambarkan dengan Diagram Ishikawa (fishbone Diagram) berikut ini. Bagian kepala atau segiempat yang berada di sebelah kanan merupakan masalah. Sementara di bagian tulang-tulangnya merupakan penyebab.

User

Material Machine/tools

Metode

Perbaikan Kualitas Citra Ketidakpuasan user

Terhadap citra yang memilliki Kualitas rendah

C# File .jpeg dan .bmp

Sebagai input

Multiscale Retinex

Picture box, Pop-up untuk menerima

input Menu MSR, menu Analisis,

Menu Help, menu About


(38)

3.1.2 Analisis Persyaratan

Analisis ini bertujuan untuk mengidentifikasi dan menyatakan persyaratan apa saja yang akan dibutuhkan oleh sistem agar dapat berjalan sesuai dengan yang diharapkan. Analisis persyaratan terdiri atas dua bagian yaitu analisis fungsional (functional requirement) dan analisis nonfungsional (nonfunctional requirement).

3.1.2.1 Persyaratan Fungsional

Dalam perancangan sebuah perangkat lunak diperlukan rekayasa persyaratan yang merupakan sebuah proses untuk menemukan, menganalisis,mendokumentasikan, dan memeriksa layanan serta batasan sistem. Didalam rekayasa aplikasi berbasis web, ada 4 (empat) tipe analisis yang sering digunakan, yaitu :

Terdapat beberapa hal yang harus dipenuhi pada persyaratan fungsional, antara lain:

1. Sistem akan melakukan perbaikan citra digital berformat BMP dan JPEG yang memiliki kualitas rendah.

2. Sistem melakukan perbaikan citra menggunakan metode Multiscale Retinex.

3. Sistem akan melakukan proses peregangan kontras setelah proses Multiscale Retinex.

4. Sistem akan melakukan hasil histogram dari citra awal dan citra hasil.

3.1.2.2 Persyaratan Non-Fungsional

Berbeda dengan persyaratan fungsional, persyaratan non-fungsional adalah persyaratan apa yang harus dilakukan oleh sistem. Beberapa persyaratan non-fungsional pada sistem yang akan dirancang, antara lain:

1. Performa

Sistem yang dibangun harus dapat menunjukkan hasil dari perbaikan citra digital dengan menggunakan metode Multi-Scale Retinex.

2. Mudah digunakan dan dipelajari

Sistem yang dibangun harus sederhana maka pengguna (user) dapat menggunakan dan mempelajarinya dengan mudah.


(39)

Perangkat lunak yang dibangun akan menampilkan pesan error untuk setiap input yang tidak sesuai.

4. Dokumentasi

Sistem yang dibangun dapat menyimpan hasil akhir dari citra digital yang sudah mengalami perbaikan kualitas dengan format file .jpeg dan .bmp.

5. Hemat biaya

Perangkat lunak yang dibangun akan mempermudah pengguna untuk efesiensi waktu, sehingga hemat biaya.

3.1.3 Pemodelan Sistem

3.1.3.1 Use Case Diagram

Sebuah diagram use case adalah sebuah diagram yang menunjukkan hubungan antara aktor dan kasus penggunaan dalam sistem.

Berdasarkan analisis kebutuhan sistem, secara garis besar sistem melakukan proses perbaikan kualitas citra dengan metode Multiscale Retinex.

Gambar 3.2 adalah diagram use case yang dirancang sebagai pemodelan persyaratan sistem berdasarkan informasi kebutuhan sistem dan user yang berperan didalamnya.

Sistem Metode Multiscale Retinex

<<depend on>>

<<extends>>

User

Gambar 3.2 Use Case Diagram Sistem

3.1.3.1.1 Use Case Metode Multiscale Retinex

Tabel 3.1 merupakan spesifikasi use case metode Multiscale Retinex Tabel 3.1 Spesifikasi Use Case Metode Multiscale Retinex

Name Multiscale Retinex

Multiscale Retinex

Contrast


(40)

Actors User

Trigger User menginputkan citra untuk diproses dengan metode Multiscale

Retinex

Preconditions Aplikasi dalam keadaan stand-by siap untuk menerima masukan

citra digital

Post Conditions Aplikasi akan menampilkan hasil metode Multiscale Retinex Success Scenario 1. User telah menginputkan file dengan format .jpg dan .bmp

2. User mengakses tombol msr process

3. Sistem akan menampilkan hasil dari metode Multiscale Retinex Alternative Flows -

3.4.2.2.1. Use Case proses Contrast Stretching

Tabel 3.2 merupakan spesifikasi use case untuk proses Contrast Stretching Tabel 3.2 Spesifikasi Use Case Proses Contrast Stretching

Name Proses Contrast Stretching

Actors User

Trigger User mengakses tombol Contrast Stretching

Preconditions Aplikasi dalam keadaan stand-by menampilkan hasil metode

Multiscale Retinex

Post Conditions Aplikasi akan menampilkan hasil dari Contrast Stretching

Success Scenario 1. User mengakses tombol Contrast Stretching

2. Sistem akan menampilkan hasil dari proses Contrast Stretching

Alternative Flows -

3.4.2.2.2. Use Case Proses Analisis

Tabel 3.3 merupakan use case proses Analisis


(41)

Name Proses Analisis

Actors User

Trigger User mengakses tombol Analisis

Preconditions Aplikasi telah menampilkan hasil metode Multiscale Retinex

dan Contrast Stretching

Post Conditions Aplikasi akan menampilkan hasil Histogram

Success Scenario 1. User mengakses tombol Analisis

2. Sistem akan menampilkan hasil Histogram dari citra akhir

Alternative Flows -

3.4.2.3. Activity Diagram

Activity Diagram adalah teknik untuk menggambarkan logika procedural, jalur kerja sistem. Dalam beberapa hal, diagram memainkan peran mirip seperti diagram alir. Activity diagram memungkinkan siapapun yang melakukan proses untuk memilih urutan dalam melakukannya.

3.1.3.2.1Activity DiagramuntukAplikasi Metode Multiscale Retinex


(42)

User System

Memilih menu file

Menampilkan citra User mengakses

Buka file

*.bmp *.jpg

User mengisi nilai sigma Dan weight

User mengakses tombol MSR Process

Menampilkan hasil citra SSR Dan hasil citra MSR

Gambar 3.3 Activity Diagram untuk Aplikasi Multiscale Retinex

3.1.3.2.2Activity DiagramuntukAplikasi Contrast Stretching


(43)

User System

User mengakses tombol Contrast Stretching

Menampilkan citra *tidak

User mengakses Tombol Histogram

Menampilkan hasil Histogram *ya

User mengubah rentang Kontras 0-255

Gambar 3.4 Activity Diagram untuk Aplikasi Contrast Stretching

3.4.2.4. Sequence Diagram Proses Multiscale Retinex

Berdasarkan activity diagram dan use case pada sub Bab sebelumnya, maka proses yang berlangsung dapat digambarkan di dalam sequence diagram berikut.


(44)

: Contrast Stretching

)

Proses Contrast Stretching

Proses Image Enhancement

Hasil Citra Perbaikan Input Citra

Proses MSR

Proses Analisis Akhir

: Analisis Akhir

: Ambil Citra

:MSR Process

Gambar 3.5 Sequence Diagram Proses MSR

3.1.4. Flowchart Sistem

3.1.4.1. Flowchart Gambar Umum

Secara umum proses yang dilakukan ini dapat dilihat pada flowchart gambaran umum pada gambar 3.6.


(45)

Mulai

Masukkan citra BMP atau JPG

Contrast Stretching

Multiscale Retinex

Stop Citra hasil

SSR dan MSR

Hasil

Contrast Stretching

Ubah

Contrast Stretching

Citra hasil

Contrast Stretching

NO

YES


(46)

3.1.4.2 Flowchart Metode Multiscale Retinex

Proses image enhancement dilakukan dengan metode Multiscale Retinex. Pada Gambar 3.7 merupakan langkah-langkah proses Multiscale Retinex.

Mulai

N=3, n=1 Input citra I, W1, W2, W3 (W1+W2+W3=1), Sigma1, sigma2, sigma 3

SSRn = log I(x,y) – log Gn(x,y)

Citra SSRn Gn = [F(x,y)*I(x,y)]

End N=n?

MSR = SSR1+SSR2+SSR3

Citra MSR yes

no

n=n+1

Gambar 3.7 Flowchart untuk proses Multiscale Retinex


(47)

Sistem dibangun dengan menggunakan bahasa pemrograman C# Microsoft Visual Studio 2010. Rancangan antar muka akan disesuaikan dengan kebutuhan dan software yang digunakan. Antar muka menggunakan lima form, form cover, form utama, form analisis, form petunjuk, dan form tentang.

3.1.5.1 Rancangan Interface Form Cover

Pada saat aplikasi dijalankan maka form pertama yang akan muncul adalah form cover yang memberikan informasi mengenai judul skripsi dan penulis. Berikut adalah rancangan tampilan form cover digambarkan pada gambar 3.8:

X

IMPLEMENTASI METODE MULTISCALE RETINEX (MSR)

UNTUK IMAGE ENHANCEMENT SYLVIA DINATA

091401047

Lambang USU

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

1

2

3

APLIKASI MULTISCALE RETINEX (MSR)

MASUK

KELUAR 4

5

Gambar 3.8 Rancangan Form Cover Keterangan:

1) Merupakan Label untuk judul skripsi, nama, dan nip

2) Merupakan PictureBox berfungsi untuk menampilkan logo USU 3) Merupakan Label untuk jurusan

4) Merupakan Button untuk masuk ke form selanjutnya 5) Merupakan Button untuk keluar dari program


(48)

Halaman untuk pengujian metode Multiscale Retinex akan ditampilkan apabila user memilih button masuk. Berikut ini merupakan rancangan interface form utama digambarkan pada gambar 3.9.

X

MULTISCALE RETINEX

1

APLIKASI MULTISCALE RETINEX (MSR)

2 3 4 5

Weight Weight Weight

Sigma Sigma Sigma

6 7

8 9

10 11

12 13 14

15 16

19 18

17 20

File Bantuan

21 22

Gambar 3.9 Rancangan Interface Form Utama Keterangan:

1) Merupakan Label untuk judul metode

2) Merupakan PictureBox untuk menunjukkan citra awal 3) Sampai dengan 5) merupakan Label untuk judul scale

6),8), dan 10) merupakan TextBox untuk menunjukkan nilai weight 7), 9), dan 11) merupakan TextBox untuk menunjukkan nilai sigma

12), 13), dan 14) merupakan PictureBox untuk menunjukkan hasil citra gaussian blur

15) merupakan PictureBox untuk menampilkan citra hasil Multiscale Retinex 16) merupakan PictureBox untuk menampilkan citra hasil Multiscale Retinex +

Contrast Stretching

17) merupakan Button untuk menjalankan MSR Process


(49)

19) merupakan Button untuk menampilakan hasil analisis di form baru 20) merupakan TrackBar untuk mengatur nilai contrast stretching 21) dan 22) merupakan Menu Strip yang memiliki sub menu 3.1.5.3 Rancangan Interface Form Analisis

Halaman interface form analisis akan ditampilkan apabila user memilih button analisis. Interface form analisis digunakan untuk menampilkan hasil histogram citra awal, hasil citra Multiscale Retinex dan hasil dari Contrast Stretching. Berikut adalah rancangan interface untuk form analisis pada gambar 3.10:

X

1

Form Analisis

Histogram Citra Asli (Red) Histogram Citra MSR (Red)

Histogram Citra Asli (Blue) Histogram Citra Asli (Green)

Histogram Citra MSR (Green)

Histogram Citra MSR (Blue)

Histogram Citra CS (Red)

Histogram Citra CS (Blue) Histogram Citra CS (Green)

4

3 2

9 8

7

6 5

Gambar 3.10 Rancangan Interface Form Analisis Keterangan :

1) Merupakan Chart untuk menampilkan grafik citra asli pada warna merah (red)

2) Merupakan Chart untuk menampilkan hasil grafik citra multiscale retinex pada warna merah (red)

3) Merupakan Chart untuk menampilkan hasil grafik citra multiscale retinex + contrast stretching pada warna merah (red)


(50)

5) Merupakan Chart untuk menampilkan hasil grafik citra multiscale retinex pada warna hijau (green)

6) Merupakan Chart untuk menampilkan hasil grafik multiscale retinex + contrast stretching pada warna hijau (green)

7) Merupakan Chart untuk menampilkan grafik citra asli pada warna biru (blue)

8) Merupakan Chart untuk menampilkan hasil grafik citra multiscale retinex pada warna biru (blue)

9) Merupakan Chart untuk menampilkan hasil grafik multiscale retinex + contrast stretching pada warna biru (blue)

3.1.5.4 Rancangan Interface FormHelp

Halaman interface form help akan ditampilkan apabila user memilih bantuan dan petunjuk penggunaan. Interface form help digunakan untuk menampilkan petunjuk penggunaan program Multiscale Retinex. Berikut adalah rancangan interface untuk form help pada gambar 3.11:

X

Petunjuk Penggunaan

3

formHelp

File Bantuan

1 2

__

4

Gambar 3.11 Rancangan Interface Form help

Keterangan:

1) dan 2) merupakan Menu Strip yang memiliki beberapa sub menu 4) merupakan Label untuk judul pada form help


(51)

5) merupakan Label untuk petunjuk penggunaan program Multiscale Retinex

3.1.5.5 Rancangan Interface Form Tentang

Halaman interface form tentang akan ditampilkan apabila user memilih bantuan dan tentang. Interface form help digunakan untuk menampilkan tentang penulis skripsi ini. Berikut adalah rancangan interface untuk form help pada gambar 3.12:

X

formAbout

File Bantuan

1 2

__

3

Gambar 3.12 Rancangan Interface Form About Keterangan :

1) dan 2) merupakan Menu Strip yang memiliki beberapa sub menu 3) merupakan Label untuk tentang penulis


(52)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

4.1 Implementasi Sistem

4.1.1 Implementasi Metode Single Scale Retinex

Tahap awal yang akan dilakukan untuk perbaikan citra menggunakan metode Multiscale Retinex (MSR), harus terlebih dahulu melewati tahap Singlescale Retinex (SSR), dengan melewati tiga tahap SSR. Seperti telah dibahas pada bab sebelumnya bahwa SSR adalah Retinex versi dinamis untuk meniru sistem kerja neuron pada sistem persepsi warna manusia. Berbeda dengan Retinex statis, Retinex versi dinamis tidak menggunakan jalur, tetapi menggunakan fungsi sekitar (surround function) untuk meradiasikan intensitas ke piksel sekitarnya, dengan rumus:

SSRn(x,y) =log In (x,y) – log Gn (x,y) ... (4.1)

Berikut contoh pengujian perhitungan manual :

Langkah pertama yang dilakukan adalah mencari nilai Gaussian, yaitu:

�(�,�) = 1

2��2 �− �2+�2

2�2 ... (4.2)

Dimana : σ = sebuah sigma

�= 22 7

e = 2,71828182846


(53)

1

2�(5,5)2�

−−12+122(5,5)2 1

2�(5,5)2�

202+12(5,5)2 1

2�(5,5)2�

212+12(5,5)2 1

2�(5,5)2�

−−12+022(5,5)2 1

2�(5,5)2�

202+02(5,5)2 1

2�(5,5)2�

212+02(5,5)2

1

2�(5,5)2�

−−12+2(5,5−12)2 1

2�(5,5)2�

−02+−122(5,5)2 1

2�(5,5)2�

−12+−122(5,5)2

0.0050902359 0.0051750712 0.0050902359 0.0051750712 0.0052613204 0.0051750712 0.0050902359 0.0051750712 0.0050902359

Total : 0.046322549

Total dari seluruh elemen matriks yang dihasilkan harus sama dengan 1, jika tidak memenuhi maka percobaan akan diulang kembali dengan rumus baru yaitu :

����= �� �����1 ... (4.3)

Contoh :

New (1,1) = 0.0050902359 � 0 1

.046322549 = 0.10988678

New (1,2) = 0.0051750712 � 0 1

.046322549 = 0.11171819

Perhitungan dilakukan pada setiap elemen matriks, sehingga didapatkan hasil sebagai berikut:

0.10988678 0.11171819 0.10988678 0.11171819 0.11358011 0.11171819 0.10988678 0.11171819 0.10988678

 Hasil konvolusi yang didapatkan dari perkalian antara pixel citra awal dan kernel gaussian dapat dilihat pada Gambar 4.1, 4.2, dan 4.3.

8 8 1 3 2

4 3 5 2 1

1 1 5 4 3

F(x,y )=


(54)

6 7 6 5 8

2 4 6 8 7

Gambar 4.1Perkalian Piksel Citra awal dan Kernel Gaussian

2.5789195

Gambar 4.2 Lanjutan Perkalian Piksel Citra awal dan Kernel Gaussian

2.5789195 3.23824018

Gambar 4.3 Lanjutan Perkalian Piksel Citra awal dan Kernel Gaussian

Hasil konvolusi, didapatkan dengan perhitungan sebagai berikut:

 (0 x 0.10988678) + (0 x 0.11171819) + (0 x 0.10988678) + (0 x 0.11171819) + (8 x 0.11358011) + (8 x 0.11171819) + (0 x 0.10988678) + (4 x 0.11171819) + (3 x 0.10988678) = 2.5789195

0.10988678 0.11171819 0.10988678 0.11171819 0.11358011 0.11171819 0.10988678 0.11171819 0.10988678

0 0 0 0 0 0 0

0 8 8 1 3 2 0

0 4 3 5 2 1 0

0 1 1 5 4 3 0 0 6 7 6 5 8 0 0 2 4 6 8 7 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 8 8 1 3 2 0 0 4 3 5 2 1 0 0 1 1 5 4 3 0 0 6 7 6 5 8 0 0 2 4 6 8 7 0 0 0 0 0 0 0 0


(55)

(0 x 0.10988678) + (0 x 0.11171819) + (0 x 0.10988678) + (8 x 0.11171819) + (8 x 0.11358011) + (1 x 0.11171819) + (4 x 0.10988678) + (3 x 0.11171819) + (5 x 0.10988678) = 3.23824018

Seluruh hasil perhitungan konvolusi dapat dilihat pada Gambar 4.4.

2.5789195 3.23824018 2.45050505 1.55865196 0.89380654 2.44876517 3.99996945 3.55499807 2.88825127 1.6648149 2.441348 4.20869353 4.22346685 4.32782889 2.56228426 2.3491983 4.23268492 5.11907429 5.78019587 3.90305509 2.11354958 3.44873465 4.01105512 4.45798322 3.13199707

Gambar 4.4. Hasil perhitungan Konvolusi

 Hasil SSR1

SSRn(x,y) = log In (x,y) – log Gn (x,y)

Dimana, log In(x,y) merupakan piksel citra awal. Contoh :

 8 – 2.5789195 = 5.4210805  8 – 3.23824018 = 4.76175982

Seluruh perhitungan nilai SSR1 dapat dilihat pada Gambar 4.5.

5.4210805 4.76175982 -1.45050505 1.44134804 1.10619346 1.5512348 -0.99996945 1.44500193 -0.88825127 -0.6648149 -1.441348 -3.20869353 0.77653315 -0.31782889 0.43771574 3.6508017 2.76731508 0.88092571 -0.78019587 4.09694491 -0.1135496 0.55126535 1.98894488 3.54201678 3.86800293

Gambar 4.5 Perhitungan Nilai SSR1


(56)

1 2�(6,5)2�

−−12(62,+15)22 1

2�(6,5)2�

20(26+1,5)22 1

2�(6,5)2�

21(26+1,5)22

1 2�(6,5)2�

−−12(62,+05)22 1

2�(6,5)2�

20(26+0,5)22 1

2�(6,5)2�

21(26+0,5)22

1 2�(6,5)2�

−−12(26+,5−1)22 1

2�(6,5)2�

−022(+−16,5)22 1

2�(6,5)2�

−122(+−16,5)22

0.00368074 0.00372456 0.00368074 0.00372456 0.0037689 0.00372456 0.00368074 0.00372456 0.00368074

Total seluruh elemen matriks = 0.0333901, karena tidak sama dengan 1 maka dihitung kembali dengan rumus:

����= �� 1

�����

New a =

0.11023447 0.11154683 0.11023447 0.11154683 0.11287477 0.11154683 0.11023447 0.11154683 0.11023447

 Hasil konvolusi yang didapatkan dari perkalian antara piksel citra awal dan kernel gaussian dapat dilihat pada Gambar 4.6

2.57226353 3.23367035 2.44879629 1.55776528 0.89109344 2.78217127 3.99998429 3.55514049 1.99996878 1.66534387 2.4422346 4.21254792 4.22310912 4.32939093 2.56037439 2.34388927 4.22970208 5.1168117 5.77951525 3.89901425 2.11285913 3.44751516 4.0079052 4.45412368 3.12604502

Gambar 4.6Hasil Perhitungan Konvolusi

 Hasil SSR2

SSRn(x,y) =log In (x,y) – log Gn (x,y)

Perhitungan nilai SSR2 dapat dilihat pada Gambar 4.7 berikut ini.


(57)

1.21782873 -0.9999843 1.44485951 0.00003122 -0.66534387 -1.4422346 -3.2125479 0.77689088 -0.32939093 0.43962561 3.65611073 2.77029792 0.8831883 -0.77951525 4.10098575 -0.1128591 0.55248484 1.9920948 3.54587632 3.87395498

Gambar 4.7 Hasil SSR2

Misal σ = 7.5

1 2�(7,5)2�

−−12(72,+15)22 1

2�(7,5)2�

20(27+1,5)22 1

2�(7,5)2�

21(27+1,5)22

1 2�(7,5)2�

−−12(72,+05)22 1

2�(7,5)2�

20(27+0,5)22 1

2�(7,5)2�

21(27+0,5)22

1 2�(7,5)2�

−−12(27+,5−1)22 1

2�(7,5)2�

−022(+−17,5)22 1

2�(7,5)2�

−122(+−17,5)22

0.002881575 0.002805749 0.002881575 0.002805749 0.002830856 0.002805749 0.002881575 0.002805749 0.002881575

Total seluruh elemen matriks = 0.02558, karena tidak sama dengan satu, maka dihitung kembali dengan rumus:

����= �� 1

�����

New a =

0.11264953 0.10968526 0.11264953 0.10968526 0.11066677 0.10968526 0.11264953 0.10968526 0.11264953

 Hasil konvolusi yang didapatkan dari perkalian antara pixel citra awal dan kernel gaussian dapat dilihat pada Gambar 4.8 dibawah ini.

2.53950587 3.2140305 2.42887858 1.55632379 0.88537364 2.77273597 3.99607793 3.56226419 2.88638675 1.66301123 2.44369993 4.23127106 4.22334002 4.34093658 2.5464554


(58)

2.32410087 4.21641023 5.10180361 5.77079074 3.88240742 2.10673285 3.43974034 3.99012966 4.43676226 3.0928792

Gambar 4.8 Hasil Konvolusi

 Hasil SSR2

SSRn(x,y) =log In (x,y) – log Gn (x,y)

Perhitungan nilai SSR2 dapat dilihat pada Gambar 4.9 berikut ini.

5.46049413 4.78459695 -1.42887858 1.44367621 1.11462636 1.22726403 -0.9960779 1.43773581 -0.88638675 -0.6630112 -1.4436999 -3.2312711 0.77665998 -0.34093658 0.4535446 3.67589913 2.78358977 0.89819639 -0.77079074 4.11759258 -0.10673285 0.56025966 2.00987034 3.56323774 3.9071208

Gambar 4.9Hasil SSR3

Pada Gambar 4.10 dapat dilihat coding yang digunakan dalam metode Singlescale Retinex.

Gaussian gaussian = newGaussian();

BitmapData sourceData = source.LockBits(newRectangle(0, 0, source.Width, source.Height),

ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);

byte[] pixelBuffer = newbyte[sourceData.Stride * sourceData.Height]; byte[] bluredBitmap = newbyte[sourceData.Stride * sourceData.Height];

byte[] resultBuffer = newbyte[sourceData.Stride * sourceData.Height]; Marshal.Copy(sourceData.Scan0, pixelBuffer, 0, pixelBuffer.Length); source.UnlockBits(sourceData);

int bytePosition; int pixelPosition;

double[] blues = newdouble[pixelBuffer.Length / 3]; double[] greens = newdouble[pixelBuffer.Length / 3]; double[] reds = newdouble[pixelBuffer.Length / 3]; for (int index = 0; index < pixelBuffer.Length / 3; index++) {

blues[index] = 0.0f; greens[index] = 0.0f; reds[index] = 0.0f; }

bluredBitmap = gaussian.GetBytes(gaussian.GaussianImplementation(source, sigma)); for (int pixelY = 0; pixelY < source.Height; pixelY++)

{

for (int pixelX = 0; pixelX < source.Width; pixelX++) {


(59)

pixelPosition = pixelY * source.Width + pixelX;

blues[pixelPosition] += (weight * Math.Log((pixelBuffer[bytePosition] + 1.0) / (bluredBitmap[bytePosition] + 1.0)));

greens[pixelPosition] += (weight * Math.Log((pixelBuffer[bytePosition + 1] + 1.0) / (bluredBitmap[bytePosition + 1] + 1.0)));

reds[pixelPosition] += (weight * Math.Log((pixelBuffer[bytePosition + 2] + 1.0) / (bluredBitmap[bytePosition + 2] + 1.0)));

} }

Gambar 4.10Coding yang digunakan dalam Metode Singlescale Retinex

4.1.2 Implementasi Metode Multiscale Retinex

Tahap selanjutnya yang dilakukan untuk perbaikan citra (Image Enhancement) adalah metode Multiscale Retinex (MSR), dimana metode MSR merupakan pengembangan dari SSR, dengan rumus:

1

i i

N

msr n n

n

R W R

=

=

... (4.4)

i MSR

R merupakan output dari Multi-Scale Retinex (MSR) yang merupakan jumlah dari output SSR yang masing-masing diberi bobot. N adalah jumlah skala yang digunakan. wn adalah bobot yang diasosiasikan dengan skala ke- n. Rnimerupakan output dari

SSR yang diasosiasikan dengan skala ke- n. Simbol i menyatakan channel warna, misalnya Red(R), Green(G), dan Blue(B).

Contoh :

Perhitungan manual pada Multiscale Retinex didapatkan dengan menjumlahkan pixel dari SSR1, SSR2 dan SSR3 dan dikalikan dengan nilai bobot yaitu 1. Hasil penjumlahan MSR tersebut dapat dilihat pada Gambar 4.11 berikut ini.

16.3093111 14.31268642 -4.32817992 4.32725897 3.32972638 3.99632759 -2.99603167 3.66652142 -1.7746068 -1.99317 -4.32728253 -9.65251251 2.33008401 -0.9981564 1.33088592 10.98281156 8.32120277 2.6623104 -2.33050186 12.31552324 -0.33314156 1.66400985 5.99091002 10.65113084 11.64907871


(60)

Setelah mendapat hasil Multiscale Retinex, pixel Multiscale Retinex dinormalisasikan, dengan rumus:

New value : ��� (�����−���)

(max −���) ∗255 ... (4.5)

Dari piksel hasil perhitungan Multiscale Retinex didapat, Nilai max = 16.3093111

Nilai min = -9.65251251

Sesuai dengan rentang warna dari yang minimal sampai dengan nilai maksimal yaitu 0 – 255 maka nilai piksel maksimal 16.3093111 diubah menjadi 255 dan nilai minimal -9.65251251 diubah menjadi 0.

Misalnya : abs(16.3093111−(−9.65251251))

(16.3093111−(−9.65251251) ∗255

= 255

Maka, hasil normalisasi dapat dilihat pada Gambar 4.12 berikut ini : 255 235 52 137 127

134 65 131 77 75

52 0 118 85 108

203 176 121 72 216 91 111 154 199 209 Gambar 4.12Hasil Normalisasi

Pada Gambar 4.13 dapat dilihat coding yang digunakan dalam metode MSR. BitmapData sourceData = source.LockBits(newRectangle(0, 0,

source.Width, source.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);

byte[] pixelBuffer = newbyte[sourceData.Stride * sourceData.Height]; byte[] bluredBitmap = newbyte[sourceData.Stride * sourceData.Height]; byte[] resultBuffer = newbyte[sourceData.Stride * sourceData.Height]; Marshal.Copy(sourceData.Scan0, pixelBuffer, 0, pixelBuffer.Length); source.UnlockBits(sourceData);

int bytePosition; int pixelPosition;

double[] blues = newdouble[pixelBuffer.Length / 3]; double[] greens = newdouble[pixelBuffer.Length / 3]; double[] reds = newdouble[pixelBuffer.Length / 3]; for (int index = 0; index < pixelBuffer.Length / 3; index++) {


(1)

Graphics grfx = Graphics.FromImage(imgGdi);

grfx.InterpolationMode = InterpolationMode.HighQualityBicubic; grfx.PixelOffsetMode = PixelOffsetMode.HighQuality;

grfx.DrawImage(originalBitmap, grfx.Dispose();

return imgGdi; }

} }

Kode Program

Class Save Image

using System;

using System.Collections.Generic; using System.Linq;

using System.Text;

using System.Threading.Tasks; using System.Drawing;

using System.Drawing.Imaging; namespace MSR_Application {

class SaveImage {

public void SimpanBitmap(String Path, Bitmap bitmap) {

bitmap.Save(Path, ImageFormat.Bmp); }

public void SimpanJpeg(String Path, Bitmap bitmap, long quality) {

System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality; EncoderParameters myEncoderParameters = new EncoderParameters(1);

EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, quality); myEncoderParameters.Param[0] = myEncoderParameter;

bmp1.Save(@Path, jgpEncoder, myEncoderParameters); }

private ImageCodecInfo GetEncoder(ImageFormat format) {

if (codec.FormatID == format.Guid) {

return codec; }

}

return null; }

} }


(2)

Kode Program

Form

Utama

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Drawing;

using System.Drawing.Imaging; using System.Linq;

using System.Text;

using System.Threading.Tasks; using System.Windows.Forms; using System.Runtime.InteropServices; using System.IO;

/*

* Form Utama MSR */

namespace MSR_Application {

public partial class FormUtama : Form {

Bitmap CitraAsli; Bitmap CitraMSR; Bitmap CitraCS; Bitmap SSR1; Bitmap SSR2; Bitmap SSR3; string FormatCitra; public FormUtama() {

InitializeComponent(); }

private void exitToolStripMenuItem_Click(object sender, EventArgs e) {

Application.Exit(); }

private void FormUtama_FormClosed(object sender, FormClosedEventArgs e) {

Application.Exit(); }

private void bukaToolStripMenuItem_Click(object sender, EventArgs e) {

OpenFileDialog openFile = new OpenFileDialog(); openFile.Title = "Pilih File Citra";

openFile.Filter = "Image Files (*.bmp, *.jpg)|*.bmp;*.jpg"; DialogResult result = openFile.ShowDialog();

if (result == DialogResult.OK) {

StreamReader streamReader = new StreamReader(openFile.FileName); CitraAsli = (Bitmap)Bitmap.FromStream(streamReader.BaseStream); streamReader.Close();

PicBoxAsli.Image = CitraAsli;

FormatCitra = Path.GetExtension(openFile.FileName); PicBoxSSR1.Image = null;

PicBoxSSR2.Image = null; PicBoxSSR3.Image = null; PicBoxMSR.Image = null;


(3)

PicBoxCS.Image = null; }

}

private void button2_Click(object sender, EventArgs e) {

if (CitraAsli == null) {

MessageBox.Show("Citra Asli Masih Kosong !", "Proses MSR Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error);

return; }

if (CitraAsli.PixelFormat == PixelFormat.Format24bppRgb) {

double[] weights = new double[3]; double[] sigmas = new double[3];

weights[0] = Convert.ToDouble(TextWeight1.Text); weights[1] = Convert.ToDouble(TextWeight2.Text); weights[2] = Convert.ToDouble(TextWeight3.Text); if (!((weights[0] + weights[1] + weights[2]).Equals(1.0))) {

MessageBox.Show("Total Bobot harus sama dengan 1 !", "Proses MSR Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error);

return; }

sigmas[0] = Convert.ToDouble(TextSigma1.Text); sigmas[1] = Convert.ToDouble(TextSigma2.Text); sigmas[2] = Convert.ToDouble(TextSigma3.Text); MSR msr = new MSR();

SSR1 = msr.CalculateSSR(CitraAsli, sigmas[0], weights[0]); PicBoxSSR1.Image = SSR1;

SSR2 = msr.CalculateSSR(CitraAsli, sigmas[1], weights[1]); PicBoxSSR2.Image = SSR2;

SSR3 = msr.CalculateSSR(CitraAsli, sigmas[2], weights[2]); PicBoxSSR3.Image = SSR3;

CitraMSR = msr.Calculate(CitraAsli, sigmas, 3, weights); PicBoxMSR.Image = CitraMSR;

PicBoxCS.Image = null; } else {

MessageBox.Show("Aplikasi Hanya Mendukung Citra Dengan Format 24 Bit. Citra Hasil adalah " +

CitraAsli.PixelFormat.ToString() + " ", "Citra Tidak Didukung", MessageBoxButtons.OK, MessageBoxIcon.Warning);

} }

private void button3_Click(object sender, EventArgs e) {

if (CitraMSR == null) {

MessageBox.Show("Citra Hasil MSR Masih Kosong !", "Contrast Stretching Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error);

return; }


(4)

ContrastStretching cs = new ContrastStretching();

double BatasBawah = Convert.ToDouble(TextBtsBawah.Text); double BatasAtas = Convert.ToDouble(TextBtsAtas.Text); CitraCS = cs.Calculate(CitraMSR, BatasBawah, BatasAtas); PicBoxCS.Image = CitraCS;

}

private void button1_Click(object sender, EventArgs e) {

if (CitraMSR == null || CitraAsli == null || CitraCS == null) {

MessageBox.Show("Citra Hasil MSR, Citra Asli atau Citra Contrast Stretching Masih Kosong !", "Analisis Gagal",

MessageBoxButtons.OK, MessageBoxIcon.Error); return;

}

BitmapData sourceDataAsli = CitraAsli.LockBits(new Rectangle(0, 0, CitraAsli.Width, CitraAsli.Height),

ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);

BitmapData sourceDataMSR = CitraMSR.LockBits(new Rectangle(0, 0, CitraMSR.Width, CitraMSR.Height),

ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);

BitmapData sourceDataCS = CitraCS.LockBits(new Rectangle(0, 0, CitraCS.Width, CitraCS.Height),

ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);

byte[] pixelBufferAsli = new byte[sourceDataAsli.Stride * sourceDataAsli.Height]; byte[] pixelBufferMSR = new byte[sourceDataMSR.Stride * sourceDataMSR.Height]; byte[] pixelBufferCS = new byte[sourceDataCS.Stride * sourceDataCS.Height]; Marshal.Copy(sourceDataAsli.Scan0, pixelBufferAsli, 0, pixelBufferAsli.Length); CitraAsli.UnlockBits(sourceDataAsli);

Marshal.Copy(sourceDataMSR.Scan0, pixelBufferMSR, 0, pixelBufferMSR.Length); CitraMSR.UnlockBits(sourceDataMSR);

Marshal.Copy(sourceDataCS.Scan0, pixelBufferCS, 0, pixelBufferCS.Length); CitraCS.UnlockBits(sourceDataCS);

FormAnalisis formAnalisis = new FormAnalisis(); formAnalisis.pixelBufferAsli = pixelBufferAsli; formAnalisis.pixelBufferMSR = pixelBufferMSR; formAnalisis.pixelBufferCS = pixelBufferCS; formAnalisis.HeightBitmap = CitraAsli.Height; formAnalisis.WidthBitmap = CitraAsli.Width;

formAnalisis.sourceDataStride = sourceDataAsli.Stride; formAnalisis.ShowDialog();

}

private void saveFileToolStripMenuItem_Click(object sender, EventArgs e) {

if (CitraCS == null) {

MessageBox.Show("Citra Contrast Stretching Masih Kosong !", "Penyimpanan Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error);

return; }

SaveImage saveImage = new SaveImage(); SaveFileDialog saveFile = new SaveFileDialog(); saveFile.Title = "Pilih File Citra";


(5)

saveFile.Filter = "Bitmap Image (.bmp)|*.bmp|JPEG Image (.jpeg)|*.jpg"; DialogResult result = saveFile.ShowDialog();

if (result == DialogResult.OK) {

switch (FormatCitra) {

case ".bmp":

saveImage.SimpanBitmap(saveFile.FileName, CitraCS); break;

case ".jpeg": case ".jpg":

saveImage.SimpanJpeg(saveFile.FileName, CitraCS, 75L); break;

default:

throw new NotSupportedException("File extension is not supported"); }

MessageBox.Show("Citra Contrast Stretching Berhasil Disimpan", "Penyimpanan Berhasil", MessageBoxButtons.OK, MessageBoxIcon.Information);

} }

private void trackBar2_Scroll(object sender, EventArgs e) {

TextBtsAtas.Text = trackBar2.Value.ToString(); }

private void trackBar1_Scroll(object sender, EventArgs e) {

TextBtsBawah.Text = trackBar1.Value.ToString(); }

private void petunjukPenggunaanToolStripMenuItem_Click(object sender, EventArgs e) {

formHelp tolong = new formHelp(); tolong.Show();

this.Hide(); }

private void tentangToolStripMenuItem_Click(object sender, EventArgs e) {

formAbout tentang = new formAbout(); tentang.Show();

this.Hide(); }

private void label2_Click(object sender, EventArgs e) {

}

private void label6_Click(object sender, EventArgs e) {

}

private void label3_Click(object sender, EventArgs e) {

} } }


(6)

77

CURICULUM VITAE

Nama

: Sylvia Dinata

Tempat/Tanggal Lahir : Medan, 6 Oktober 1991

Agama

: Kristen

Alamat Sekarang

: Jl. Sedap malam X No. 17, Medan 20131

Alamat Orang Tua

: Jl. Sedap malam X No. 17, Medan 20131

Telp/ Hp

: 085763493877

Email

: sylviadinata91@gmail.com

Riwayat Pendidikan

2006 – 2009

: SMA Negeri 17 Medan

2003 – 2006

: SMP Swasta Katolik Budi Murni-2 Medan

1997 – 2003

: SD Swasta Katolik Assisi Medan

Pengalaman Organisasi dan Kegiatan Ilmiah

Anggota Departemen di bagian Minat dan Bakat Ikatan Mahasiswa S1 Ilmu

Komputer (IMILKOM), 2010-2011

Praktek Kerja Lapangan di PLN Marelan, Juli-Agustus 2012