Implementasi Order-Statistic Filters Untuk Mereduksi Noise Pada Citra Digital
IMPLEMENTASI ORDER-STATISTIC FILTERS UNTUK
MEREDUKSI NOISE PADA CITRA DIGITAL
SKRIPSI
JUNI SANTO SIHOTANG 091401017
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2013
(2)
IMPLEMENTASI ORDER-STATISTIC FILTERS UNTUK MEREDUKSI NOISE PADA CITRA DIGITAL
SKRIPSI
Diajukan untuk melengkapi tugas akhir dan memenuhi syarat mencapai gelar Sarjana Komputer
JUNI SANTO SIHOTANG 091401017
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2013
(3)
PERSETUJUAN
Judul : IMPLEMENTASI ORDER-STATISTIC FILTERS
UNTUK MEREDUKSI NOISE PADA CITRA DIGITAL
Kategori : SKRIPSI
Nama : JUNI SANTO SIHOTANG
Nomor Induk Mahasiswa : 091401017
Program Studi : SARJANA (S1) ILMU KOMPUTER
Departemen : ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI Diluluskan di Medan, Juli 2013 Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Dian Wirdasari, S.Si, M.Kom Dian Rachmawati, S.Si, M.Kom NIP 198209232010122002 NIP. 198307232009122004
Diketahui/Disetujui oleh
Program Studi S1 Ilmu Komputer Ketua,
Dr. Poltak Sihombing, M.Kom NIP. 196203171991031001
(4)
PERNYATAAN
IMPLEMENTASI ORDER-STATISTIC FILTERS UNTUK MEREDUKSI NOISE PADA CITRA DIGITAL
SKRIPSI
Saya menyatakan bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, 20 Mei 2013
Juni Santo Sihotang 091401017
(5)
PENGHARGAAN
Puji dan syukur penulis ucapkan kepada Tuhan Yang Maha Kuasa atas segala berkat dan kasih karuniaNya sehingga penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer, pada Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
Ucapan terima kasih penulis sampaikan kepada :
1. Bapak Prof.Dr.dr.Syahril Pasaribu, DTM&H, MSc(CTM). Sp.A(K) selaku Rektor Universitas Sumatera Utara
2. Bapak Prof.Dr.Muhammad Zarlis, selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
3. Bapak Dr. Poltak Sihombing, M.Kom, selaku Ketua Departemen Ilmu Komputer Universitas Sumatera Utara.
4. Ibu Maya Silvi Lydia, B.Sc, M.Sc, selaku Sekretaris Departemen Ilmu Komputer Universitas Sumatera Utara.
5. Ibu Dian Rachmawati, S.Si, M.Kom, dan Ibu Dian Wirdasari, S.Si, M.Kom, selaku Dosen Pembimbing.
6. Bapak Dr.Poltak Sihombing, M.Kom dan Bapak Handizal, S.Si, M.Comp. Sc, selaku Dosen Penguji.
7. Bapak saya Rejion Sihotang , ibu saya Ubat Munthe, kakak saya Ade Irma Sihotang, abang saya Steven Sihotang, S.Kom dan adik-adik saya yang selalu memberikan cinta kasihnya dan dukungannya baik material dan spiritual serta seluruh sahabat saya Renti Meliwati Purba dan kerabat yang berjasa memberikan dorongan kepada penulis selama menyelesaikan skripsi ini.
(6)
8. Rekan-rekan kuliah, khususnya Ales Sotardodo Panjaitan, Isman Santoso Nainggolan, Jhonri Sibarani, Samuel Tarigan, Jakup Ginting, Septian Panjaitan, Santo Nainggolan dan teman-teman di UKM KMK USU kak Debora Nainggolan, S.Kom, Bertua Novita Simanjuntak, yang selalu memberikan semangat dan dorongan kepada penulis.
Semoga Tuhan Yang Maha Kuasa memberikan berkat yang berlimpah kepada semua pihak yang telah memberikan bantuan, perhatian, serta dukungan kepada penulis dalam menyelesaikan skripsi ini.
Medan, 05 Juni 2013
(7)
ABSTRAK
Noise Salt-and-pepper atau Noise Gaussian adalah noise yang sering ada dijumpai pada citra digital. Citra yang memiliki noise biasanya terjadi karena kesalahan teknik dalam pengambilan citra atau karena citra sudah disimpan terlalu lama. Untuk mereduksi noise dibutuhkan suatu metode filter yang tepat agar citra yang dihasilkan sesuai dengan aslinya. Metode Order-Statistic Filters merupakan filter non-linier yang hasilnya ditentukan sesuai pada pengurutan pixel yang bmengisi area citra yang berada diruang lingkup filter dan kemudian mengganti nilai dari pusat pixel dengan nilai yang ditentukan dari hasil perangkingan. Metode Order-Statistic Filters salah satu metode untuk mereduksi noise, yang terdiri dari Median Filter, Mean Filter, Max Filter, Min Filter dan Midpoint Filter. Dengan metode Order-Statistic Filters
dibangunlah aplikasi filtering yang digunakan untuk mereduksi Noise Salt-and-pepper
atau Noise Gaussian. Hasil implementasi dengan menggunakan teknik Median Filter
dapat mereduksi Noise Salt-and-pepper lebih baik dibandingkan dengan teknik filter
yang lain dalam Order-Statistic Filters. Sedangkan Mean Filter dapat mereduksi
Noise Gaussian lebih baik dibandingkan dengan teknik filter yang lain dalam Order-Statistic Filters.
Kata kunci : Pengolahan Citra, Order-Statistic Filters, Noise, Mean Squared Error, Peak Signal Noise to Ratio
(8)
IMPLEMENTATION OF ORDER-STATISTIC FILTERS TO REDUCE NOISE IN DIGITAL IMAGES
ABSTRACT
Salt-and-pepper Noise or Gaussian Noise is noise there is usually found in digital images. Noise on the image usually occurs due to errors in image acquisition technique or because the image has been stored too long. To reduce noise we need a proper filter method so that the image resulted in accordance with the original. Order-Statistic Filters method is a non-linear filter whose results determined in accordance with the sorting image pixels that fil the area that are in the scope of the filter and then change the value of the center pixel with the value determined from the results of the rangking. Order-Statistic Filters method is one method to reduce noise, which consists of the Median Filter, Mean filter, Max filter, Min filter and Midpoint filter. By Order-Statistic Filters method built filtering application used to reduce Salt-and-pepper Noise or Gaussian Noise. Implementation results using Median filter technique can reduce Noise Salt-and-pepper id better then the other filter techniques in the Order-Statistic Filters.While the Mean filter to reduce noise better than other filters techniques in the Order-Static Filters.
Keyword : Image Processing
, Order-Statistic Filters, Noise, Mean Squared Error, Peak Signal Noise to Ratio
(9)
DAFTAR ISI
Halaman
Persetujuan ii
Pernyataan iii Penghargaan iv Abstrak v Abstract vi Daftar Isi vii Daftar Tabel x Daftar Gambar xii Daftar Lampiran xiv Bab I Pendahuluan 1.1 Latar Belakang 1
1.2 Rumusan Masalah 2
1.3 Batasan Masalah 2
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 3
1.6 Sistematika Penulisan 4
Bab II Landasan Teori 2.1 Pengolahan Citra 5
2.1.1 Defenisi Pengolahan Citra 5
2.1.2 Tujuan Pengolahan Citra 5
2.1.3 Manfaat Pengolahan Citra 6
2.2 Citra Digital 7
2.2.1 Citra Digital Berformat Bitmap 8
2.2.2 Picture Elements (Pixel) 9
2.2.2 Dimensi dan Resolusi 9
2.3 Noise 9
2.3.1 Gaussian Noise 10
2.3.2 Salt-and-Pepper Noise 11
2.4 Filtering 12
2.5 Order-Statistic Filters 13
2.5.1 Median Filter 14 2.5.2 Mean Filter 17
2.5.3 Max Filter 18
2.2.1 Min Filter 19
2.2.2 Midpoint Filter 20
2.6 Mean Squared Error dan Peak Signal to Noise Ratio 21
(10)
2.6.2 Peak Signal to Noise Ratio 21
Bab III Analisis dan Perancangan Sistem
3.1 Analisis Sistem 22
3.1.1 Analisis Masalah 22
3.1.2 Analisis Persyaratan 22
3.1.2.1 Persyaratan Fungsional 23
3.1.2.2 Persyaratan Nonfungsional 23
3.1.3 Analisis Proses 24
3.1.3.1 Use Case Diagram 25
3.1.3.2 Squence Diagram 26
3.1.3.3 Activity Diagram 26
3.2 Pseudocode Program 27
3.2.1 Pseudocode Mean Filter 28
3.2.2 Pseudocode Median Filter 29
3.2.3 Pseudocode Max Filter 30
3.2.4 Pseudocode Min Filter 31
3.2.5 Pseudocode Midpoint Filter 32
3.2.6 Pseudocode Mean Squared Error 33
3.2.7 Pseudocode Peak Signal to Noise Ratio 34
3.3 Perancangan Sistem 34
3.3.1 Perancangan Flowchart Sistem 34 3.3.2 Rancangan Interface Aplikasi 36 3.3.2.1 Rancangan interfaceformpreloader 36 3.3.2.2 Rancangan interfaceform utama 37 3.3.2.3 Rancangan interfaceform membangkitkan Noise
Salt-and-pepper 39
3.3.2.4 Rancangan interfaceform membangkitkan Noise
Gaussian 41
3.3.2.5 Rancangan interfaceform hitung nilai MSE & PSNR 42 3.3.2.6 Rancangan interfaceform bantuan 44 3.3.2.7 Rancangan interfaceform programmer 44 Bab IV Implementasi dan Pengujian
4.1 Implementasi 46
4.1.1 FormPreloader 46
4.1.2 Form Menu Utama 47
4.1.3 Form Membangkitkan Noise Salt-and-Pepper 48 4.1.4 Form Membangkitkan Noise Gaussian 48
4.1.5 Form Menghitung Nilai MSE dan PSNR 49
4.1.6 Form Cara Menggunakan Sistem 50
4.1.7 FormProgrammer 51
4.2. Pengujian 51
4.2.1 Proses Pembangkitan Noise Salt-and-Pepper 52 4.2.2 Proses Pembangkitan Noise Gaussian 52
4.2.3 Proses Order-Statistic Filters 55
(11)
4.2.3.2 Proses Mean Filter 58
4.2.3.3 Proses Max Filter 59
4.2.3.4 Proses Min Filter 61
4.2.3.5 Proses Midpoint Filter 63
4.2.3.4 Proses Perhitungan Nilai MSE dan PSNR 64 Bab V Kesimpulan dan Saran
5.1 Kesimpulan 90
5.2. Saran 92
(12)
DAFTAR TABEL
Nomor
(13)
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13
Perbandingan Citra Digital yang memiliki Noise Salt-and-pepper dengan probabilitas Noise yang berbeda dan setelah
Noise direduksi dengan Median Filter
Lanjutan perbandingan Citra Digital yang memiliki Noise Salt-and-pepper dengan probabilitas Noise yang berbeda dan setelah
Noise direduksi dengan Median Filter
Perbandingan Citra Digital yang memiliki Noise Salt-and-pepper dengan probabilitas Noise yang berbeda dan setelah
Noise direduksi dengan Mean Filter
Lanjutan perbandingan Citra Digital yang memiliki Noise Salt-and-pepper dengan probabilitas Noise yang berbeda dan setelah
Noise direduksi dengan Mean Filter
Perbandingan Citra Digital yang memiliki Noise Salt-and-pepper dengan probabilitas Noise yang berbeda dan setelah
Noise direduksi dengan Max Filter
Lanjutan perbandingan Citra Digital yang memiliki Noise Salt-and-pepper dengan probabilitas Noise yang berbeda dan setelah
Noise direduksi dengan Max Filter
Perbandingan Citra Digital yang memiliki Noise Salt-and-pepper dengan probabilitas Noise yang berbeda dan setelah
Noise direduksi dengan Min Filter
Lanjutan perbandingan Citra Digital yang memiliki Noise Salt-and-pepper dengan probabilitas Noise yang berbeda dan setelah
Noise direduksi dengan Median Filter
Perbandingan Citra Digital yang memiliki Noise Salt-and-pepper dengan probabilitas Noise yang berbeda dan setelah
Noise direduksi dengan Midpoint Filter
Lanjutan perbandingan Citra Digital yang memiliki Noise Salt-and-pepper dengan probabilitas Noise yang berbeda dan setelah
Noise direduksi dengan Midpoint Filter
Perbandingan Citra Digital yang memiliki Noise Gaussian
dengan probabilitas Noise yang berbeda dan setelah Noise
direduksi dengan Median Filter
Lanjutan perbandingan Citra Digital yang memiliki Gaussian
dengan probabilitas Noise yang berbeda dan setelah Noise
direduksi dengan Median Filter
Perbandingan Citra Digital yang memiliki Noise Gaussian
dengan probabilitas Noise yang berbeda dan setelah Noise
direduksi dengan Mean Filter
65 66 67 68 69 70 71 72 73 74 75 76 77
(14)
Nomor
Tabel Nama Tabel Halaman
4.14 4.15 4.16 4.17 4.18 4.19 4.20 4.21 4.22 4.23 4.24
Lanjutan perbandingan Citra Digital yang memiliki Noise Gaussian dengan probabilitas Noise yang berbeda dan setelah
Noise direduksi dengan Mean Filter
Perbandingan Citra Digital yang memiliki Noise Gaussian
dengan probabilitas Noise yang berbeda dan setelah Noise
direduksi dengan Max Filter
Lanjutan perbandingan Citra Digital yang memiliki Noise Gaussian dengan probabilitas Noise yang berbeda dan setelah
Noise direduksi dengan Max Filter
Perbandingan Citra Digital yang memiliki Noise Gaussian
dengan probabilitas Noise yang berbeda dan setelah Noise
direduksi dengan Min Filter
Lanjutan perbandingan Citra Digital yang memiliki Noise Gaussian dengan probabilitas Noise yang berbeda dan setelah
Noise direduksi dengan Min Filter
Perbandingan Citra Digital yang memiliki Noise Gaussian
dengan probabilitas Noise yang berbeda dan setelah Noise
direduksi dengan Midpoint Filter
Lanjutan perbandingan Citra Digital yang memiliki Noise Gaussian dengan probabilitas Noise yang berbeda dan setelah
Noise direduksi dengan Midpoint Filter
Perbandingan Rata-rata Nilai MSE dari Order-Statistic Filter
untuk Mereduksi Noise Salt-and-pepper pada Citra Bitmap ukuran 250x250 pixel
Perbandingan Rata-rata Nilai PSNR dari Order-Statistic Filter
untuk Mereduksi Noise Salt-and-pepper pada Citra Bitmap ukuran 250 x 250 pixel
Perbandingan Rata-rata Nilai MSE dari Order-Statistic Filter
untuk Mereduksi Noise Gaussian dengan Citra Bitmap 250 x 250 pixel
Perbandingan Rata-rata Nilai PSNR dari Order-Statistic Filter
untuk Mereduksi Noise Gaussian dengan Citra Bitmap 250 x 250 pixel
78 79 80 81 82 83 84 85 85 86 86
(15)
DAFTAR GAMBAR
Nomor
Gambar Nama Gambar Halaman
2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 2.16 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10
Citra ukuran 200 x 300 pixel Rajawali.bmp
Citra yang terkena Gaussian Noise Citra yang terkena Salt-and-Pepper Noise
Matriks citra ukuran 10x8 dengan 8 skala keabuan
Matriks citra 3 x 3 dari citra ukuran 10x8 dengan 8 skala keabuan
Pemilihan kernel 3x3 dan mengurutkan nilai pixel
Hasil median filter untuk kernel 3x3 pertama Penggeseran dan pengurutan 1 pixel ke kanan
Penempatan hasil filter median pada matriks baru untuk tahap kedua
Penempatan hasil median filter 1 baris ke kanan Hasil median filter sampai pada pojok kanan Proses mean filter dengan matriks 3x3 Proses max filter dengan matriks 3x3 Proses min filter dengan matriks 3x3 Proses midpoint filter dengan matriks 3x3
Use case diagram sistem
Squence diagram sistem
Activity diagram sistem
Flowchart sistem
Rancangan Interface Form Preloader
Rancangan Interface Form Utama
Rancangan Interface Form Membangkitkan Noise Salt-and-Pepper
Rancangan Interface Form Membangkitkan Noise Gaussian
Rancangan Interface Form Menghitung Nilai MSE dan PSNR Rancangan Interface Form Bantuan
Rancangan Interface Form Programmer Form Preloader
Form Menu Utama
Form Membangkitkan Noise Salt-and-Pepper Form Membangkitkan Noise Gaussian
Form Menghitung nilai MSE dan PSNR
Form Cara menggunakan sistem
FormProgrammer
Juns.bmp
Penginputan citra tanpa noise dan probabilitas noise Salt-and-Pepper
Hasil pembangkitan Noise Salt-and-pepper pada citra
8 8 10 12 13 13 15 15 15 16 16 17 18 19 20 20 25 26 27 35 37 37 40 41 42 44 44 46 47 48 48 50 50 51 52 52 53
(16)
4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 4.20 4.21 4.22 4.23 4.24 4.25 4.26 4.27 4.28 4.29
Penginputan citra tanpa noise dan probabilitas Noise Gaussian
Hasil Pembangkitan Noise Gaussian Pada citra
Tampilan penginputan citra dengan Noise Salt-and-pepper
Tampilan penginputan citra dengan Noise Gaussian
Proses median filter pada citra dengan Noise Salt-and-pepper
Proses median filter pada citra dengan Noise Gaussian
Proses mean filter pada citra dengan Noise Salt-and-pepper
Proses mean filter pada citra dengan Noise Gaussian
Proses max filter pada citra dengan Noise Salt-and-pepper
Proses max filter pada citra dengan Noise Gaussian
Proses min filter pada citra dengan Noise Salt-and-pepper
Proses min filter pada citra dengan Noise Gaussian
Proses midpoint filter pada citra dengan Noise Salt-and-pepper
Proses midpoint filter pada citra dengan Noise Gaussian
Proses perhitungan nilai MSE dan PSNR
Grafik perbandingan Rata-rata Nilai MSE dari Order-Statistic Filter untuk Mereduksi Noise Salt-and-pepper pada Citra Bitmap ukuran 250 x 250 pixel
Grafik perbandingan Rata-rata Nilai PSNR dari Order-Statistic Filter untuk Mereduksi Noise Salt-and-pepper pada Citra Bitmap ukuran 250 x 250 pixel
Grafik perbandingan Rata-rata Nilai MSE dari Order-Statistic Filter untuk Mereduksi Noise Gaussian pada Citra Bitmap ukuran 250 x 250 pixel
Grafik perbandingan Rata-rata Nilai PSNR dari Order-Statistic Filter untuk Mereduksi Noise Gaussian pada Citra Bitmap ukuran 250 x 250 pixel
54 55 56 56 57 57 58 59 60 60 61 62 63 63 64 86 87 87 89
(17)
DAFTAR LAMPIRAN
1. Listing Program A-1
(18)
ABSTRAK
Noise Salt-and-pepper atau Noise Gaussian adalah noise yang sering ada dijumpai pada citra digital. Citra yang memiliki noise biasanya terjadi karena kesalahan teknik dalam pengambilan citra atau karena citra sudah disimpan terlalu lama. Untuk mereduksi noise dibutuhkan suatu metode filter yang tepat agar citra yang dihasilkan sesuai dengan aslinya. Metode Order-Statistic Filters merupakan filter non-linier yang hasilnya ditentukan sesuai pada pengurutan pixel yang bmengisi area citra yang berada diruang lingkup filter dan kemudian mengganti nilai dari pusat pixel dengan nilai yang ditentukan dari hasil perangkingan. Metode Order-Statistic Filters salah satu metode untuk mereduksi noise, yang terdiri dari Median Filter, Mean Filter, Max Filter, Min Filter dan Midpoint Filter. Dengan metode Order-Statistic Filters
dibangunlah aplikasi filtering yang digunakan untuk mereduksi Noise Salt-and-pepper
atau Noise Gaussian. Hasil implementasi dengan menggunakan teknik Median Filter
dapat mereduksi Noise Salt-and-pepper lebih baik dibandingkan dengan teknik filter
yang lain dalam Order-Statistic Filters. Sedangkan Mean Filter dapat mereduksi
Noise Gaussian lebih baik dibandingkan dengan teknik filter yang lain dalam Order-Statistic Filters.
Kata kunci : Pengolahan Citra, Order-Statistic Filters, Noise, Mean Squared Error, Peak Signal Noise to Ratio
(19)
IMPLEMENTATION OF ORDER-STATISTIC FILTERS TO REDUCE NOISE IN DIGITAL IMAGES
ABSTRACT
Salt-and-pepper Noise or Gaussian Noise is noise there is usually found in digital images. Noise on the image usually occurs due to errors in image acquisition technique or because the image has been stored too long. To reduce noise we need a proper filter method so that the image resulted in accordance with the original. Order-Statistic Filters method is a non-linear filter whose results determined in accordance with the sorting image pixels that fil the area that are in the scope of the filter and then change the value of the center pixel with the value determined from the results of the rangking. Order-Statistic Filters method is one method to reduce noise, which consists of the Median Filter, Mean filter, Max filter, Min filter and Midpoint filter. By Order-Statistic Filters method built filtering application used to reduce Salt-and-pepper Noise or Gaussian Noise. Implementation results using Median filter technique can reduce Noise Salt-and-pepper id better then the other filter techniques in the Order-Statistic Filters.While the Mean filter to reduce noise better than other filters techniques in the Order-Static Filters.
Keyword : Image Processing
, Order-Statistic Filters, Noise, Mean Squared Error, Peak Signal Noise to Ratio
(20)
BAB I
PENDAHULUAN
1.1Latar Belakang
Penggunaan citra pada perkembangan teknologi informasi saat ini semakin meningkat, yaitu penggunaan citra untuk media cetak ataupun media online yang bertujuan untuk menarik minat masyarakat untuk mengetahui informasi yang disajikan. Kualitas citra yang disajikan sangat mempengaruhi informasi, sehingga pengambilan dan pengolahan citra harus dilakukan dengan teknik yang baik. Ketika capturing atau pengambilan sebuah citra dengan kamera atau citra yang telah disimpan dalam waktu cukup lama, seringkali tidak dapat langsung digunakan sebaigaimana yang diinginkan karena kualitasnya belum memenuhi standar untuk kebutuhan pengolahan [1].
Dalam pengambilan citra dengan kamera sering terjadi hal-hal yang tidak sesuai dengan yang diharapkan karena adanya gangguan yang terjadi pada citra hasil
capture. Beberapa kemungkinan gangguan yang terjadi pada hasil pengambilan citra dengan kamera yaitu adanya kabut yang menghalangi objek yang sedang di capture, lensa kamera kotor, adanya bintik-bintik yang disebabkan oleh proses capturing yang tidak sempurna, lensa kamera tidak fokus atau gangguan yang disebabkan oleh kotoran-kotoran yang menempel pada citra, dan lain sebagainya. Setiap gangguan yang terjadi pada citra tersebut dinamakan Noise. Secara umum citra yang demikian dapat dikatakan kualitasnya masih rendah, baik oleh karena adanya noise, maupun oleh sebab lainnya seperti pencahayaan yang belum sempurna atau karena citra yang sudah tersimpan dengan waktu yang cukup lama. Citra yang memiliki kualitas seperti ini membutuhkan langkah-langkah perbaikan dan kualitasnya perlu ditingkatkan untuk memfasilitasi pengolahan yang akan dilakukan.
Beberapa penelitian yang berkaitan dengan tugas akhir ini antara lain, Implementasi Adaptive Median Filter Sebagai Reduksi Noise Pada Citra Digital, oleh
(21)
Eva Listiyani, S1- Sistem Komputer, Sekolah Tinggi Manajemen Informatika & Teknik Komputer Surabaya dan Perbandingan Metode Low-Pass Filter Dan Median Filter Dalam Penghalusan Citra (Image Smoothing) Untuk Peningkatan Kualitas Citra (Image Enhancement) oleh Anisa Fitri, Jurusan Teknik Informatika, Fakultas Teknik dan Ilmu Komputer, Universitas Komputer Indonesia. Penelitian lain juga oleh Ana Wahyu Hakim yaitu Penghapusan Noise Pada Citra Dengan Filter Adaptive-Hierarchical, Fakultas Teknologi Informasi Institute Teknologi Sepuluh Nopember. Untuk itu maka dalam tugas akhir ini peneliti tertarik mengangkat suatu teknik lain untuk mengatasi masalah-masalah noise pada citra yaitu “Implementasi
Order-Statistic Filters untuk Mereduksi Noise pada Citra Digital”.
1.2 Perumusan Masalah
Berdasarkan uraian pada latar belakang masalah, maka penulis membuat rumusan masalah yang nantinya akan diselesaiakan pada penulisan skripsi ini, yaitu :
1. Bagaimana cara mereduksi noise dengan teknik Order-Statistic Filters pada citra digital yang memiliki noise?
2. Bagaimana perbandingan kualitas citra sebelum dan sesudah proses reduksi noise dengan beberapa filter yang merupakan bagian dari Order-Statistic Filters?
3. Filter apa yang lebih baik untuk mereduksi Noise Salt-and-pepper atau Noise Gaussian dalam Order-Statistic Filters?
1.3 Batasan Masalah
Batasan masalah penelitian dalam tugas akhir ini adalah :
1. Order-Statistic Filters yang dibahas dalam tugas akhir ini adalah Median Filter, Mean Filter, Max Filter, Min Filter, dan Midpoint Filter.
2. Citra digital yang digunakan adalah citra (image) yang berektensi *BMP dengan ukuran dimensi maksimal 300 x 300 pixel.
3. Noise yang akan direduksi adalah Gaussian Noise dan Salt and PaperNoise. 4. Sistem tidak membahas noise yang terdapat dalam citra.
5. Menggunakan perhitungan dengan metode Mean Squared Error (MSE) dan Peak Signal to Noise Ratio (PSNR) sebagai pembanding kualitas file citra.
(22)
6. Menggunakan kernel 3x3 dari matriks nilai pixel citra.
7. Bahasa pemrograman yang digunakan untuk sistem yaitu membangkitkan dan mereduksi noise adalah Microsoft Visual C# .Net 2010.
1.4 Tujuan Penelitian
Penelitian ini dilaksanakan dengan tujuan sebagai berikut :
1. Mengetahui filter apa saja dari Order-Statistic Filters yang dapat mereduksi Noise
dengan baik.
2. Membuat aplikasi untuk memberikan solusi terhadap masyarakat dalam memperbaiki citra (image) yang terkena noise.
3. Membandingkan hasil reduksi citra yang memiliki noise dari Median Filter, Mean Filter, Max Filter, Min Filter, dan Midpoint Filter.
1.5 Manfaat Penelitian
Tugas akhir ini diharapkan akan mampu memberikan solusi berupa aplikasi dan informasi bagaimana cara mereduksi noise pada citra digital yang dapat memberikan kemudahan untuk memperbaiki citra menjadi citra yang lebih bagus dan lebih bermanfaat. Melalui penelitian ini juga dapat diketahui bagaimana perbandingan kualitas citra hasil reduksi dengan beberapa teknik atau metode yang merupakan bagian dari teknik Order-Statistic Filters.
1.6 Sistematika Penulisan
Agar pembahasan lebih sistematis, maka tulisan ini dibuat dalam lima bab, yaitu :
Bab I Pendahuluan
Berisi latar belakang, perumusan masalah, batasan masalah, tujuan dan manfaat penelitian dan sistematika penulisan.
Bab II Landasan Teori
Berisi tentang penjelasan singkat mengenai definisi pengolahan citra, noise dan metode Order-Statistic Filters.
(23)
Bab III Analisis dan Perancangan
Berisi tentang analisis mengenai proses kerja dari teknik Order-Statistic Filters yang terdiri dari Use Case Diagram, Squential Diagram, Activity Diagram, Pseudocode Program, Flowchart
dan perancangan tampilan form dari aplikasi. Bab IV Implementasi dan Pengujian
Pada tahap ini dilakukan pembuatan sistem dan coding sesuai dengan analisis dan perancangan. Kemudian melakukan pengujian sistem.
Bab V Kesimpulan dan Saran
Berisi tentang kesimpulan yang dapat ditarik setelah menyelesaikan tugas akhir ini dan saran-saran yang dapat diberikan untuk pengembangan aplikasi lebih lanjut.
(24)
BAB II
LANDASAN TEORI
2.1 Pengolahan Citra
2.1.1 Definisi Pengolahan Citra
Pengolahan citra adalah sebuah disiplin ilmu yang mempelajari hal-hal yang berkaitan dengan perbaikan kualitas gambar (peningkatan kontras, transformasi warna, restorasi citra), transformasi gambar (rotasi, translasi, skala, transformasi geometri), melakukan pemilihan ciri citra (feature images) yang optimal untuk tujuan analisis, melakukan proses penarikan informasi atau dekripsi objek atau pengenalan objek yang terkandung dalam citra, melakukan kompresi atau reduksi data untuk tujuan penyimpanan data, transmisi data, dan waktu proses data. Input dari pengolahan citra adalah citra, dan output-nya adalah citra hasil pengolahan [10].
2.1.2 Tujuan Pengolahan Citra
Kebutuhan akan ilmu pengetahuan semakin meningkat, demikian juga halnya dengan alat-alat yang diperlukan untuk kebutuhan analisisnya. Seperti kebutuhan dalam bidang kedokteran, pengindraan bumi jarak jauh, fotografi, meteorology dan geofisika dan lain-lain. Bidang tersebut membutuhkan alat/kamera yang bisa digunakan untuk merekam keadaan yang diperlukan untuk kebutuhan analisis sehingga memungkinkan peneliti mendapatkan informasi yang diperlukan. Output alat-alat ini biasanya berupa citra dan citra inilah yang nantinya akan dianalisis untuk mendapatkan informasi yang berguna.
(25)
Namun sayangnya, kebanyakan citra belum sesuai dengan hasil yang diharapkan. Hal ini dapat terjadi karena beberapa kemungkinan, misalnya adanya
noise, adanya kabut yang menghalangi objek yang sedang di-capture, lensa kamera kotor dan lain-lain. Oleh karena itu, maka proses pengolahan citra sangat diperlukan. Disiplin ilmu yang melahirkan teknik-teknik untuk mengolah citra dinamakan Pengolahan Citra Digital (Digital Image Processing).
2.1.3 Manfaat Pengolahan Citra
Manfaat pengolahan citra terdapat dalam berbagai bidang tertentu yang dapat dijelaskan sebagai berikut.
1. Pengolahan Citra Digital dalam dunia Komunikasi
Pengolahan Citra dalam dunia komunikasi dapat digunakan untuk dapat memperjelas foto permukaan bumi yang dihasilkan dari satelit cuaca atau memperjelas foto planet-planet yang dihasilkan satelit penyelidik. Foto-foto tersebut pada umunya hampir tidak dapat dilihat karena pada saat foto tersebut dikirim ke stasiun bumi melalui gelombang terjadi banyak gangguan di perjalanan. Gangguan ini disebabkan oleh gelombang lain, misalnya gelombang radio, televisi dan lain-lain yang bercampur dengan gelombang data tersebut sehingga menyebabnya terjadinya noise (gangguan). Selain itu pengolahan citra juga bermanfaat untuk proses transmisi data.
2. Pengolahan Citra Digital dalam dunia Fotografi
Dalam dunia fotografi pengolahan citra digunakan sebagai pengganti kamera filter. Filter kamera digunakan untuk membuat film hitam putih, memberi efek berkabut, dan memberi cahaya pada bagian tertentu pada foto dan berbagai fungsi yang dapat memberikan manfaat yang penting bagi dunia fotografi.
3. Pengolahan Citra Digital dalam dunia Kedokteran
Dalam dunia kedokteran pengolahan citra digunakan untuk memperjelas foto hasil X-ray organ tubuh manusia, pengolahan hasil CT- scan dan lainnya yang bertujuan untuk memberikan kemudahan untuk mendeteksi gangguan dan penyakit manusia. 4. Pengolahan Citra Digital dalam dunia Film
Pengolahan citra dapat dimanfaatkan untuk menghaluskan gambar, menajamkan gambar, memberi efek terang dan gelap. Memberi kesan timbul, memberi efek morphing dan lain-lain.
(26)
5. Pengolahan Citra Digital dalam Keamanan Data dan proteksi Hak Cipta
Seringkali data yang dikirim dari suatu tempat ke tempat lain merupakan data rahasia sehingga keamanannya perlu dijamin. Teknik keamanan data dan proteksi hak cipta yang biasanya digunakan adalah Steganografi dan Watermarking.
6. Pengolahan Citra Digital dalam Pengenalan Pola
Pengolahan citra yang termasuk dalam bidang ini adalah jaringan saraf tiruan seperti pengenalan pola huruf, pola wajah, pola sidik jari, pola iris mata, dan sebagainya [10].
2.2 Citra Digital
Sebuah citra dapat didefenisikan sebagai fungsi dua dimensi f(x,y), dimana x dan y adalah koordinat spasial, dan amplitude dari f pada sembarang pasangan koordinat (x,y) disebut intensity (intensitas) atau gray level (level keabuan) dari citra pada titik tersebut. Ketika (x,y) dan nilai intensitas dari f adalah semua terbatas maka itu disebut
digital image (citra digital). Citra digital terdiri dari sejumlah elemen tertentu, setiap elemen memiliki lokasi dan nilai tertentu. Elemen-elemen ini disebut picture elements,
image elements, dan pixels. Pixel adalah istilah yang sudah digunakan secara meluas untuk menyatakan elemen citra digital [9].
Citra digital adalah citra yang dapat diolah oleh komputer. Citra yang disimpan dalam memori komputer hanyalah angka-angka yang menunjukkan besar intensitas pada masing-masing pixel tersebut. Sebagai contoh berikut sebuah citra dengan ukuran 200 x300 pixel diambil sebagian (kotak kecil) berukuran 9x9 pixel. Maka monitor akan menampilkan sebuah kotak kecil untuk bagian citra dari citra 200x300
(27)
Gambar 2.1. Citra ukuran 200 x 300 pixel
2.2.1 Citra Digital Berformat Bitmap (.bmp)
Citra Bitmap menyimpan data kode citra secara digital dan lengkap (cara penyimpanannya adalah per pixel). Citra bitmap sering disebut juga dengan citra
raster. Citra bitmap direpresentasikan dalam bentuk matriks atau dipetakan dengan menggunakan bilangan biner atau sistem bilangan lain. Citra ini memiliki kelebihan untuk manipulasi warna dan tampilan bitmap mampu menunjukkan kehalusan gradasi bayangan dan warna dari sebuah gambar. Bitmap merupakan media elektronik yang paling tepat untuk gambar-gambar dengan perpaduan gradasi warna yang rumit, seperti foto dan lukisan digital. Citra bitmap biasanya diperoleh dengan cara Scanner,
CameraDigital, Video Capture dan lain-lain [10]. Berikut ini ada contoh sebuah citra bitmap.
(28)
2.2.2 Picture Elements (Pixel)
Pixel (Picture Elements) adalah nilai tiap-tiap entri matriks pada bitmap[6]. Rentang nilai-nilai pixel pada citra dipengaruhi oleh banyaknya warna yang bisa ditampilkan. Suatu bitmap dapat menampilkan 256 warna sehingga nilai-nilai pixel -nya dibatasi dari 0-255. Suatu citra bitmap akan mampu menampilkan warna lebih banyak, karena bitmap mempunyai kerapatan pixel yang tinggi.
2.2.3 Dimensi dan Resolusi
Dimensi bitmap merupakan ukuran bitmap yang dinotasikan dengan menulis lebar x tinggi bitmap. Satuan ukur dimensi bitmap adalah berupa satuan ukur metris maupun pixel. Dimensi yang digunakan oleh bitmap mewakili ordo matriks citra itu sendiri. Model matriks untuk bitmap dipengaruhi oleh kerapatan pixel atau resolusi. Kerapatan pixel ini digunakan bitmap dalam mendekati kekontinyuan. Semakin besar resolusi suatu bitmap, obyek yang ditampilkan citra tersebut semakin akurat. Resolusi merupakan kerapatan titik-titik pada citra, yang menunjukkan seberapa tajam citra akan mampu ditampilkan[6].
2.3 Noise
Pada saat proses capture (pengambilan gambar), ada beberapa gangguan yang mungkin terjadi, seperti kamera tidak fokus atau munculnya bintik-bintik yang bisa jadi disebabkan oleh proses capture yang tidak sempurna. Setiap gangguan pada citra dinamakan dengan noise. Noise pada citra tidak hanya terjadi karena ketidak-sempurnaan dalam proses capturing, tetapi bisa juga disebabkan oleh kotoran-kotoran yang terjadi pada citra. Berikut ini adalah jenis-jenis noise dan penjelasannya.
2.3.1 Gaussian Noise
Gaussian Noise merupakan titik-titik berwarna pada citra yang jumahnya sama dengan persentase noise. Noise Gaussian dapat dibangkitkan dengan cara membangkitkan bilangan acak [0,1]. Kemudian titik-titik yang terkena noise, nilai
(29)
fungsi citra ditambahkan dengan noise yang ada, atau dapat dirumuskan sebagai berikut.
f(i,j) = g(i,j) +p.a
………... (1)Keterangan : a = nilai bilangan acak berdistribusi gaussian
p = prosentase noise
f(i,j) = nilai citra terkena noise
g(i,j) = nilai citra sebelum terkena noise
Untuk mengenali bagaimana jenis noise gaussian maka Gambar 2.3 berikut ini adalah contoh gambar yang terkena NoiseGausssian.
Gambar 2.3 Citra yang terkena Gaussian Noise
2.3.2 Salt-And-Pepper Noise
Fungsi Probabilitas Kepadatan (Probability Density Function (PDF)) noise
(bipolar) impulse diberikan oleh :
�
(
�
) =
�
�
�
��0
………..………... (2)
Dimana, p(z) adalah fungsi probabilitas kepadatan noise, Pa adalah probabilitas
noise jenis a (pepper) dan Pb adalah probabilitas noise b (salt). Jika b > a, intensitas b
untuk z = a untuk z = b lainnya
(30)
akan tampak sebagai titik terang pada citra. Sebaliknya, level a akan tampak seperti titik gelap. Jika selain Pa atau Pb nol, impulse noise disebut juga unipolar. Jika
probability selain nol, dan khususnya diperkirakan sama, nilai impulse noise akan mirip butiran Salt-and-pepper secara acak yang terdistribusi pada citra. Dengan alasan inilah noise bipolar impulse disebut juga dengan Noise Salt-and-pepper[4].
Noise impulse bisa negatif atau positif. Penskalaan biasanya adalah bagian dari proses digitasi citra. Karena korupsi impulse biasanya besar dibandingkan dengan kekuatan sinyal citra, noise impulse umumnya didigitasi sebagai nilai ekstrem ( hitam atau putih) dalam citra. Sebagai hasilnya, impulse negatif tampak sebagai titik hitam (pepper /merica) dalam citra sedangkan impulse positif tampak sebagai titik putih (
salt /garam) [4]. Untuk mengenali bagaimana Noise Salt-and-pepper, Gambar 2.4 berikut ini contoh citra yang terkena Noise Salt-and-pepper.
Gambar 2.4 Citrayang terkena Salt-and-pepper Noise
Noise salt & pepper dapat dibangkitkan dengan cara membangkitkan bilangan 255 (warna putih) pada titik-titik yang secara probabilitas lebih kecil dari nilai probabilitas noise, dan dirumuskan dengan:
f(x,y)=255 jika p(x,y) < ProbNoise ...………. (3)
f(x,y)=Tetap jika p(x,y) > ProbNoise
Dimana, f (x,y) adalah nilai pixel citra pada titik (x,y) dan p(x,y) adalah probabilitas acak [4].
(31)
2.4 Sorting
Sorting merupakan pengurutan suatu data dengan cara atau metode tertentu untuk mengurutkan data yang sebelumnya tidak berurutan. Berikut ini ada beberapa metode sorting yang biasa dipakai untuk mengurutkan data.
2.4.1 Bubble Sorting
Bubble Sort merupakan algoritma pengurutan yang paling sederhana. Proses pengurutan bubble sort ini berangsur-angsur berpindah pada posisi yang tepat seperti gelembung yang naik keatas didalam gelas yang berisi air bersoda. Bubble Sort
mengurutkan data dengan cara membandingkan elemen pertama dengan elemen berikutnya. Jika elemen yang pertama lebih besar dari elemen berikutnya maka kedua elemen tersebut ditukar, cara ini merupakan metode bubble sorting secara ascending. Tetapi jika elemen yang pertama lebih kecil dari elemen berikutnya, maka kedua elemen tersebut ditukar, cara ini merupakan metode pengurutan bubble sorting secara
descending. Proses bubble sort selesai jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang dapat dilakukan.
2.4.2 Selection Sort
Metode pengurutan secara selection sort merupakan kombinasi antara sorting dan searching. Dalam setiap proses, akan dicari elemen-elemen yang belum terurut yang memiliki nilai terkecil atau terbesar akan dipertukarkan ke posisi yang tepat di dalam array. Pembandingan dan pengubahan dilakukan hanya pada indeks pembanding dan pertukaran nilai data secara fisik terjadi pada akhir proses sorting.
2.4 Filtering
Filtering merupakan suatu proses pengambilan sebagian sinyal dari frekwensi tertentu, dan menempatkan sinyal tersebut pada frekwensi yang lain. Filtering pada citra juga menggunakan prinsip yang sama, yaitu mengambil fungsi citra pada
(32)
piksel tertentu dan menempatkan atau mengantikan fungsi citra tersebut pada piksel-piksel tertentu. Dalam pengolahan citra ada beberapa teknik filtering yang dapat digunakan untuk memperbaiki kualitas citra yaitu Order-Statistic Filters, Adaptive Median Filter dan teknik filter lainnya. Teknik-teknik filtering ini pada umumnya bertujuan untuk menghilangkan noise yang terdapat dalam citra dan juga untuk menghaluskan citra.
2.5 Order-Statistic Filters
Order-statisticfilter pada umumnya adalah filter spasial non-linier yang hasilnya didasarkan pada urutan (rangking) pixel yang mengisi area citra yang diapit filter dan kemudian mengganti nilai dari pusat pixel dengan nilai yang ditentukan oleh hasil perangkingan. Beberapa Order-Statistic Filter yang digunakan adalah Median Filter
yang berguna untuk memilih nilai tengah , Mean Filter yaitu dengan menghitung nilai rata-rata yang diliputi filter, Max Filter untuk memilih nilai terbesar, Min Filter untuk memilih nilai terkecil , dan Midpoint Filter menghitung titik tengah antara nilai maksimum dan minimum dalam daerah yang diliputi filter tersebut [3]. Berikut ini merupakan contoh pengurutan nilai pixel citra dengan Order-statistic. Citra keabuan
(f(x,y) yang berukuran 10x8 mempunyai 8 skala keabuan akan diurutkan menggunakan Order-Statistic dengan contoh kernel 3 x 3.
Gambar 2.5 Matriks citra ukuran 10x8 dengan 8 skala keabuan
Dari contoh gambar 2.5 dapat diambil kernel citra 3 x 3 dari pojok kiri atas, dan diurutkan dengan Order-statistic. Hasil pengurutan nilai pixel-nya adalah 0, 1, 2, 3, 3, 3, 4, 5, 6. Bagian citra 3 x3 dari matriks citra 10 x 8 tersebut dapat dilihat pada Gambar 2.6 berikut.
(33)
5 3 3
4 2 1
6 3 0
Gambar 2.6 Matriks citra 3 x 3 dari citra ukuran 10x8 dengan 8 skala keabuan
2.5.1 Median Filter
Filter yang paling dikenal dalam kategori Order-Statistic adalah Median filter. Sesuai dengan namannya, filter ini mengganti nilai pixel dengan Median dari nilai intensitas dalam tetangga dari pixel tersebut. (nilai asli dari pixel tersebut termasuk dalam perhitungan median). Filter median sangat terkenal karena untuk jenis tertentu dari
random noise, filter median memberikan kemampuan untuk pengurangan noise yang sangat bagus dengan memperhatikan bluring. Pada bagian tertentu median filter juga baik untuk menghilangkan Salt-and-pepper Noise karena sifat median yang menjauhi hitam dan putih.
Median dari sekumpulan nilai adalah nilai yang berada ditengah dari sekumpulan nilai yang diurutkan. Untuk tujuan melakukan filter median pada sebuah titik pada citra maka yang pertama dilakukan adalah mengurutkan nilai pixel dalam tetangga (termasuk titik pusatnya) menentukan median dan memasukkan nilai hasilnya pada pixel yang berkorespondensi (titik pusat tetangga) dalam citra yang di-filter [8]. Formula yang digunakan untuk Median filter adalah :
�′(�,�) = ������ { �(�,�)}………...……….… (4) (s,�) ∈ ���
Dimana,
f ’(x,y) : hasil median filter g (s,t) : sub-image Sxy
S
xy : window daerah yang diliputi oleh filter
Dari contoh gambar 2.5 dapt dilakukan proses median filter dengan kernel 3 x 3, hasil proses f’(x,y) dihitung sebagai berikut. Pilih f(x,y) ukuran 3x3, dimulai dari pojok kiri
(34)
atas. Kemudian diurutkan dan cari nilai tengah dari pixel-pixel tersebut. Proses untuk mendapatkan f’(x,y) dapat diperlihatkan seperti pada gambar berikut.
Gambar 2.7 Pemilihan kernel 3x3 dan mengurutkan nilai pixel
Hasil filter median pada f(1,1) adalah f’(1,1) = 3, sehingga 2 diganti dengan 3, ditempatkan pada matriks yang baru, hasilnya dapat diperlihatkan seperti pada Gambar 2.8 berikut.
Gambar 2.8 Hasil Median filter untuk kernel 3x3 pertama
Selanjutnya geser f(x,y) ukuran 3x3 satu pixel ke kanan, kemudian diurutkan dan cari nilai tengah dari pixel-pixel tersebut. Proses penggeseran, pengurutan dan pencarian nilai tengah dapat diperlihatkan pada Gambar 2.9 berikut.
(35)
Gambar 2.9 Penggeseran dan pengurutan 1 pixel ke kanan
Hasil filter medianf(1,2) adalah f’(1,2) = 3, sehingga 1 digati dengan 3, ditempatkan pada matriks yang baru. Proses untuk mendapatkan f’(x,y) dapat diperlihatkan seperti pada gambar berikut.
5 3 3 0 4 4 0 5 2 2 4 3 3 3 6 0 7 0 7 0 7 4 6 2 6 5 1 3 2 4 4 1 0 0
Gambar 2.10 Penempatan hasil Median filter pada matriks baru untuk tahap kedua
Proses perhitungan dilakukan terus hingga f(x,y) ukuran 3x3 sampai pada ujung paling kanan. Hasil f’(x,y) selanjutnya sampai satu baris kekanan dapat diperlihatkan seperti pada Gambar 2.11.
(36)
5 3 3 0 4 4 0 5 2 2 4 3 3 3 3 4 2 3 2 3 6 0 7 0 7 0 7 4 6 2 6 5 1 3 2 4 4 1 0 0
Gambar. 2.11 Penempatan hasil Median filter 1 baris ke kanan Selanjutnya geser f(x,y) ukuran 3x3 kebawah satu pixel, dan mulai lagi mengurutkan dan mencari nilai tengah dari pixel-pixel tersebut. Kemudian, geser f(x,y)
ukuran 3x3 ke kanan, demikian seterusnya hingga f(x,y) ukuran 3x3 sampai pada pojok kanan bawah. Hasilnya dapat diperlihatkan pada gambar sebagai berikut.
5 3 3 0 4 4 0 5 2 2 4 3 3 3 3 4 2 3 2 3 6 3 1 1 2 3 2 3 2 0 7 4 1 1 1 3 2 3 2 0 7 5 4 1 2 3 3 3 3 0 7 5 4 5 5 6 3 3 2 4 6 5 4 4 4 6 4 2 2 2 6 5 1 3 2 4 4 1 0 0
Gambar 2.12 Hasil Median filter sampai pada pojok kanan
2.5.2 Mean Filter
Pada Mean filter (filter rata-rata) nilai intensitas setiap pixel diganti dengan rata-rata dari nilai intensitas pixel tersebut dengan pixel-pixel tetangganya. Filter ini biasanya disebut sebagai filter penghalus (smoothing filters). Filter ini biasa digunakan untuk mengaburkan (blurring) citra untuk mereduksi noise. Blurring
biasanya digunakan untuk menghilangkan detail kecil dari suatu citra sebelum dilakukan ekstraksi objek dan untuk menghubungkan celah kecil yang memisahkan
(37)
garis atau kurva dan juga bisa digunakan untuk mereduksi noise [10]. Untuk filter ini dapat menggunakan rumus berikut.
�
′(
�
,
�
) =
1��
∑
{
�
(
�
,
�
)}
……….………(5)(s,�) ∈ ���
Keterangan,
f ’(x,y) : hasil median filter
mn : ukuran panjang dan lebar window g (s,t) : sub-image Sxy
S
xy
Hasil pemilihan filter rata-rata dari contoh pemilihan kernel sebelumnya pada Gambar 6 diperlihatkan pada gambar berikut.
: window daerah yang diliputi oleh filter
Gambar 2.13. Proses Mean filter dengan matriks 3x3
2.5.3 Max Filter
Dalam Order-Statistic, median merepresentasikan urutan ke 50% dari rangking sejumlah angka. Dari situ dapat diambil pengertian bahwa ada urutan ke 100% yang merupakan nilai terbesar dari rangking sejumlah angka ( selanjutnya menjadi Max Filter). Untuk filter ini dapat menggunakan rumus:
�′(�,�) = max { �(�,�)}………..………….………(6)
(s,�) ∈ ���
Keterangan,
f ’(x,y) : hasil max filter g (s,t) : sub-image Sxy
(38)
Sxy
max : nilai tertinggi dari citra yang diliput filter
: window daerah yang diliputi oleh filter
Dari proses pengurutan pertama diatas contoh sebelumya pada Gambar 6, dapat diperoleh nilai maksimumnya adalah 6. Proses pengurutan dan pemilihan nilai terbesar dapat diperlihatkan pada gambar berikut.
Gambar 2.14 Proses max filter dengan matriks 3x3
2.5.4 Min Filter
Dalam Order-Statistic, median merepresentasikan urutan ke 50% dari rangking sejumlah angka. Dari situ dapat diambil pengertian bahwa ada urutan 0% yang merupakan nilai terkecil dari rangking sejumlah angka (selanjutnya menjadi min filter).
Untuk filter ini dapat menggunakan rumus:
�′(�,�) = min { �(�,�)}……….………(7) (s,�) ∈ ���
Keterangan,
f ’(x,y) : hasil min filter g (s,t) : sub-image Sxy
S
xy
min : nilai terkecil dari citra yang diliput filter
: window daerah yang diliputi oleh filter
Dari proses pemilihan dan pengurutan kernel pertama pada Gambar 6, dapat diperoleh nilai minimumnya adalah 0. Proses pengurutan dan pemilihan nilai terkecil dapat diperlihatkan pada gambar berikut.
(39)
Gambar 2.15 Proses min filter dengan matriks 3x3
2.5.5 Midpoint Filter
Secara sederhana filtermidpoint bertujuan untuk menghitung titik tengah antara nilai maksimum dan nilai minimum dalam daerah citra yang diliputi oleh filter. Untuk filter ini dapat menggunakan rumus :
�′(�,�) =1
2 [ max { �(�,�)} + min { �(�,�)}]………..….…(8)
(s,�) ∈ ��� (s,�)∈ ���
Dari proses pemilihan dan pengurutan kernel pertama pada Gambar 6, dapat diperoleh hasil midpoint-nya adalah 3. Proses pengurutan dan pemilihan nilai tengah antara nilai maksimum dan nilai minimum dapat diperlihatkan pada gambar berikut.
(40)
2.6 Mean Squared Error (MSE) dan Peak Signal to Noise Ratio (PSNR)
Mean Squared Error dan Peak Signal to Noise Ratio adalah dua parameter yang sering digunakan untuk mengetahui perbandingan kualitas hasil citra filter. Berikut ini merupakan penjelasan dari kedua parameter tersebut.
2.6.1 Mean Squared Error (MSE)
Perbaikan citra pada dasarnya merupakan proses yang berifat objektif sehingga parameter keberhasilannya bersifat objektif pula. Untuk itu perlu adanya tolak ukur kuantitif yang bisa digunakan untuk mengukur kinerja prosedur perbaikan citra. Tolak ukur ini disebut MSE (Mean Squared Error) yang dinyatakan dengan persamaan berikut.
���
=
1���
∑
��=1.
∑
��=1(
�
�(i,j) -
�
�(i,j))
2
………...………(9)
M dan N adalah ukuran panjang dan lebar citra.
��(i,j) = intensitas citra di titik (i,j) sebelum citra terkena noise ��(i,j) = intensitas citra di titik (i,j) setelah noise dihilangkan.
Semakin kecil nilai MSE, semakin bagus prosedur perbaikan citra yang digunakan. Artinya, kualitas citra setelah mengalami perbaikan noise hampir sama dengan kualitas citra aslinya [10].
2.6.2 Peak Signal to Noise Ratio (PSNR)
PSNR merupakan nilai perbandingan antara harga maksimum warna pada citra hasil filtering dengan kuantitas gangguan (noise), yang dinyatakan dalam satuan desibel (dB), noise yang dimaksud adalah akar rata-rata kuadrat nilai kesalahan (√��� ). Semakin besar nilai PSNR, semakin bagus prosedur perbaikan citra yang digunakan. Artinya, kualitas citra setelah mengalami perbaikan noise hampir sama
(41)
dengan kualitas citra aslinya. Secara matematis, nilai PSNR dapat dirumuskan sebagai berikut:
����
=
20Keterangan,
log 10
�
255√���
�
………..………...(10)PSNR : nilai Peak Sgnal to Noise Ratio
MSE : nilai Mean Squared Error
(42)
BAB III
ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Sistem
Sebelum melakukan tahap perancangan sebuah sistem, hal pertama yang perlu dilakukan adalah analisis sistem yang akan dibangun. Analisis sistem merupakan istilah yang secara kolektif mendeskripsikan fase-fase awal pengembangan sistem. Fase awal dalam analisis sistem ini adalah fase analisis masalah yang bertujuan untuk mempelajari dan memahami masalah yang akan diselesaikan dengan menggunakan sistem ini. Kemudian dilanjutkan dengan fase analisis persyaratan yang akan memenuhi kebutuhan dan permintaan pengguna (user). Analisis selanjutnya dan merupakan analisis terakhir adalah analisis proses yang akan dikerjakan sistem.
3.1.1 Analisis Masalah
Masalah yang akan diselesaikan dengan menggunakan sistem ini adalah masalah reduksi noise pada citra digital yang memiliki noise gaussian dan Noise Salt-and-pepper menjadi citra yang lebih bagus tanpa memiliki noise. Dalam sistem ini file citra yang memiliki noise tersebut akan direduksi dengan menggunakan teknik Order-Statistic Filter yang didalamnya terdapat beberapa teknik filtering yaitu, Median Filter, Mean Filter, MaxFilter,Min Filter dan Midpoint Filter.
3.1.2 Analisis Persyaratan
Analisis persyaratan adalah analisis yang bertujuan untuk mengidentifikasi dan menyatakan persyaratan suatu sistem yang akan dibangun. Dalam suatu sistem analisis persyaratan dibagi menjadi dua bagian yaitu persyaratan fungsional
(43)
(functional requirement) dan persyaratan non-fungsional (nonfunctionalrequirement). Persyaratan fungsional merupakan deskripsi mengenai aktivitas dan layanan yang harus diberikan/ disediakan oleh sebuah sistem, dan persyaratan non-fungsional merupakan deskripsi mengenai fitur, karakteristik, dan batasan lainnya yang menentukan apakah sistem memuaskan atau tidak.
3.1.2.1 Persyaratan Fungsional
Dalam sistem reduksi noise pada citra digital dengan teknik Order-Statistic Filters ini terdapat beberapa hal yang menjadi persyaratan fungsional yang harus dipenuhi, antara lain :
1. Citra digital yang akan direduksi adalah citra digital berformat BMP yang memiliki Noise Gaussian atau Noise Salt-and-pepper.
2. Ukuran citra yang akan direduksi noise-nya adalah citra yang berukuran ≤ 300 x 300 pixel
3. Menggunakan kernel 3x3 dari matriks nilai pixel citra.
4. Menggunakan perhitungan dengan metode Mean Squared Error (MSE) dan Peak
Signal to Noise Ratio (PSNR) sebagai pembanding kualitas file citra sebelum dan sesudah noise direduksi.
5. Hasil reduksi noise dapat disimpan dengan citra yang berekstensi .jpg dan .bmp.
3.1.2.2 Persyaratan Nonfungsional
Persyaratan fungsional meliputi performa, mudah untuk dipelajari dan digunakan, hemat biaya, dokumentasi, manajemen kualitas, dan kontrol.
1. Performa
Sistem atau perangkat lunak yang dibangun harus dapat menunjukkan hasil dari proses pembangkitan noise pada citra dan proses reduksi noise pada citra digital yang memiliki noise.
2. Mudah digunakan (User friendly)
Sistem atau perangkat lunak yang dibangun harus sederhana agar mudah digunakan oleh pengguna (user).
(44)
Sistem yang dimaksud adalah sistem yang memiliki interface yang menarik dan memiliki cara penggunaan yang mudah dalam pengoperasian sistem.
3. Hemat biaya
Sistem atau perangkat lunak yang dibangun tidak memerlukan perangkat tambahan ataupun perangkat pendukung lainnya yang dapat mengeluarkan biaya. 4. Dokumentasi
Sistem atau perangkat lunak yang dibangun dapat menyimpan citra digital yang merupakan hasil reduksi noise dari citra yang memiliki noise dengan format file
jpg atau bmp.
5. Manajemen kualitas
Sistem atau perangkat lunak yang dibangun harus memiliki kualitas yang baik yaitu proses reduksi noise-nya memiliki nilai MSE yang kecil dan nilai PSNR yang besar.
6. Kontrol
Perangkat lunak yang dibangun memiliki kontrol berupa enable and disable, yaitu ketika citra belum di-input maka tombol fungsi pada sistem dalam keadaan tidak aktif atau disable, setelah citra di-input, maka tombol fungsi tertentu yang merupakan bagian dari fungsi reduksi noise akan aktif.
3.1.3 Analisis Proses
Dalam sistem ini ada lima teknik yang merupakan bagian dari teknik Order-Statistic Filters untuk mereduksi noise pada citra digital yang memiliki noise gaussian atau citra digital yang memiliki Noise Salt-and-pepper. Kelima teknik dari Order-Statistic Filters tersebut adalah Median filter, Mean filter, Max filter, Min filter, dan Midpoint filter. Proses median filter yaitu mencari nilai tengah matriks 3x3 dari nilai pixel citra yang sudah diurutkan, kemudian mengganti nilai dari pusat pixel dengan nilai yang ditentukan oleh hasil perangkingan. Proses Mean filter yaitu mencari nilai rata-rata matriks 3x3 dari nilai pixel citra, kemudian mengganti nilai dari pusat pixel dengan nilai yang ditentukan oleh hasil rata-rata. Proses Max filter yaitu mencari nilai tertinggi matriks 3x3 dari nilai pixel citra yang sudah diurutkan, kemudian mengganti nilai dari pusat pixel dengan nilai yang ditentukan oleh hasil perangkingan. Proses
(45)
diurutkan, kemudian mengganti nilai dari pusat pixel dengan nilai yang ditentukan oleh hasil perangkingan. Kemudian proses Midpoint filter yaitu mencari nilai tengah antara Max filter dengan Min filter, kemudian mengganti nilai dari pusat pixel
tersebut.
3.1.3.1 Use Case Diagram
Use case adalah tehnik untuk merekam persyaratan fungsional sebuah sistem. Use case mendeskripsikan interaksi tipikal antara pengguna sistem dengan sistem itu sendiri, dengan member sebuah narasi tentang bagaimana sistem tersebut digunakan[8]. Gambar 3.1 berikut ini merupakan use case diagram dari sistem yang telah dibangun.
User
Menghitung MSE & PSNR Membangkitkan Noise Order-statistic filter * * * * * *
System
«extends»Median Filter Mean Filter
«extends» Max Filter «extends» Min Filter «extends» Midpoint Filter «extends» Salt-and-pepper «extends» Gaussian «extends» Citra «uses»
(46)
3.1.3.2 SquenceDiagram
Squence diagram merupakan diagram yang menunjukkan bagaimana kelompok-kelompok objek saling berkolaborasi dalam beberapa behavior. Squence diagram
secara khusus, menjabarkan behavior sebuah skenario tunggal. Diagram tersebut menunjukkan sejumlah objek contoh dan pesan-pesan yang melewat objek-objek tersebut didalam use case[7]. Gambar 3.2 berikut ini merupakan sequence diagram
dari sistem yang telah dibangun.
{} Top Package::User
Input Add_Noise
Input citra bernoise
Input citra tanpa noise
Bangkitkan noise
Order-Statistic Filters
Reduksi Noise Tampilkan citra bernoise
{} {}
Hitung MSE & PSNR
Menghitung MSE & PSNR
Menampilkan nilai MSE & PSNR Citra hasil filter ditampilkan
{} {}
Gambar 3.2 Squence diagram sistem
3.1.3.4 Activity Diagram
Activity Diagram adalah teknik untuk menggambarkan logika procedural, jalur kerja sistem. Dalam beberapa hal, diagram ini memainkan peran mirip sebuah diagram alir. Activity diagram memungkinkan siapapun yang melakukan proses untuk memilih urutan dalam melakukannya. Dengan kata lain diagram hanya menyebutkan aturan-aturan rangkaian dasar yang harus diikuti[7]. Gambar 3.3 berikut ini merupakan activity diagram dari sistem yang telah dibangun.
(47)
User System
Bangkitkan Noise
Reduksi Noise
Menampilkan citra hasil filter
Menghitung MSE & PSNR Menginput Citra
Citra Bernoise Citra Tidak Bernoise
Input Probabilitas Noise
Hitung MSE & PSNR Input Citra Asli
Input citra Hasil Filter
Menampilkan Nilai MSE & PSNR
Gambar 3.3 Activity diagram sistem
3.2 PseudocodeProgram
Pseudocode merupakan algoritma yang diterjemahkan dengan bahasa tingkat tinggi, yaitu bahasa yang dimengerti manusia dan dideskripsikan dengan mudah untuk bisa lebih mudah dipahami.
(48)
3.2.1 Pseudocode Mean Filter
Pada Mean filter (filter rata-rata) nilai intensitas setiap pixel diganti dengan rata-rata dari nilai intensitas pixel tersebut dengan pixel-pixel tetangganya. Berikut ini merupakan pseudocode program untuk Mean filter.
Pada pseudocode Mean filter memiliki perulangan bersarang yaitu untuk mengambil matriks ukuran 3x3 dari ukuran matriks citra, kemudian melakuan perhitungan rata-rata untuk keseluruhan nilai pixel citra yang terdapat dalam matriks 3x3 tersebut. Setelah nilai rata-rata didapatkan maka akan di-replace pada nilai titik pusat matriks pada titik (i, j). Program akan berulang terus sampai pada ukuran citra yang akan di-filter.
3.2.2 Pseudocode Median Filter
Filter yang paling dikenal dalam kategori Order-Statistic adalah Median filter. Sesuai dengan namannya, filter ini mengganti nilai pixel dengan median dari nilai intensitas dalam tetangga dari pixel tersebut. Berikut ini merupakan pseudocode
program median filter
for j := 1 to y - 1 do for i := 1 to x – 1
biru(i,j) pixelbiru(i-1,j-1)+ pixelbiru(i,j-1)pixelbiru
(i+1,j-1)pixelbiru(i-1,j)+ pixelbiru(i,j)+ pixelbiru(i+1,j)+pixelbiru(i-1,j+1)+ pixelbiru (i,j+1)+pixelbiru(i+1,j+1) / 9;
hijau(i,j) pixelhijau(i-1,j-1)+ pixelhijau(i,j-1)+pixelhijau
(i+1,j-1)+ pixelhijau(i-1,j)+ pixelhijau(i,j)+ pixelhijau(i+1,j)+pixelhijau(i-1,j+1)+pixelhijau
(i,j+1)+ pixelhijau(i+1,j+1)/ 9;
merah(i,j) pixelmerah(i-1,j-1)+ pixelmerah(i,j-1)+pixelmerah
(i+1,j-1)+ pixelmerah(i-1,j)+ pixelmerah(i,j)+ pixelmerah(i+1,j)+pixelmerah(i-1,j+1)+pixelmerah (i,j+1)+ pixelmerah(i+1,j+1) / 9;
endfor endfor
(49)
Pada pseudocode program Median filter, pertama nilai pixel citra diambil dari layer R , B atau G, dari kernel 3x3 selanjutnya dilakukan pengurutan secara ascending dan diambil nilai mediannya kemudian di-replace pada posisi pusat kernel 3x3 tersebut. Demikian seterusnya berulang-ulang sampai pada lebar dan tinggi citra yang dapat dicakup filter.
3.2.3 Pseudocode Max Filter
Dalam Order-Statistic, median merepresentasikan urutan ke 50% dari rangking sejumlah angka. Dari situ dapat diambil pengertian bahwa ada urutan ke 100% yang merupakan nilai terbesar dari rangking sejumlah angka ( selanjutnya menjadi max filter). Berikut ini merupakan pseudocode program max filter.
int temp,temp2 int x,y
for j := 1 to y – 1 do for I := 1 to x – 1 do
temp2[0, 0] pixel of image (i - 1, j - 1)
temp[0] temp2[0, 0]
temp2[1, 0] pixel of image (i, j - 1)
temp[1] temp2[1, 0]
temp2[2, 0] pixel of image (i + 1, j - 1)
temp[2] temp2[2, 0]
temp2[3, 0] pixel of image (i - 1, j)
temp[3] temp2[3, 0]
temp2[4, 0] pixel of image (i, j)
temp[4] temp2[4, 0]
temp2[5, 0] pixel of image(i + 1, j)
temp[5] temp2[5, 0]
temp2[6, 0] pixel of image (i - 1, j + 1)
temp[6] temp2[6, 0]
temp2[7, 0] pixel of image(i, j + 1)
temp[7] temp2[7, 0]
temp2[8, 0] pixel of image(i + 1, j + 1)
temp[8] temp2[8, 0]
endfor endfor
Ascending Bubble Sorting
(50)
Pada pseudocode program max filter, pertama nilai pixel citra diambil dari layer R , B atau G, dari kernel 3x3 selanjutnya dilakukan pengurutan secara ascending dan diambil nilai mediannya kemudian di-replace pada posisi pusat kernel 3x3 tersebut. Demikian seterusnya berulang-ulang sampai pada lebar dan tinggi citra yang dapat dicakup filter
3.2.4 Pseudocode Min Filter
Dalam Order-Statistic, median merepresentasikan urutan ke 50% dari rangking sejumlah angka. Dari situ dapat diambil pengertian bahwa ada urutan 0% yang
int temp,temp2 int x,y
for j 1 to y – 1 do
for I 1 to x – 1 do
temp2[0, 0] pixel of image (i - 1, j - 1)
temp[0] temp2[0, 0]
temp2[1, 0] pixel of image (i, j - 1)
temp[1] temp2[1, 0]
temp2[2, 0] pixel of image (i + 1, j - 1)
temp[2] temp2[2, 0]
temp2[3, 0] pixel of image (i - 1, j)
temp[3] temp2[3, 0]
temp2[4, 0] pixel of image (i, j)
temp[4] temp2[4, 0]
temp2[5, 0] pixel of image(i + 1, j)
temp[5] temp2[5, 0]
temp2[6, 0] pixel of image (i - 1, j + 1)
temp[6] temp2[6, 0]
temp2[7, 0] pixel of image(i, j + 1)
temp[7] temp2[7, 0]
temp2[8, 0] pixel of image(i + 1, j + 1)
temp[8] temp2[8, 0]
endfor endfor
Ascending Bubble Sorting
(51)
merupakan nilai terkecil dari rangking sejumlah angka (selanjutnya menjadi min filter). Berikut ini merupakan pseudocode program Min filter.
Pada pseudocode program Min filter, pertama nilai pixel citra diambil dari layer R , B atau G, dari kernel 3x3 selanjutnya dilakukan pengurutan secara ascending dan diambil nilai mediannya kemudian di-replace pada posisi pusat kernel 3x3 tersebut. Demikian seterusnya berulang-ulang sampai pada lebar dan tinggi citra yang dapat dicakup filter
int temp,temp2 int x,y
for j := 1 to y – 1 do for I := 1 to x – 1 do
temp2[0, 0] pixel of image (i - 1, j - 1)
temp[0] temp2[0, 0]
temp2[1, 0] pixel of image (i, j - 1)
temp[1] temp2[1, 0]
temp2[2, 0] pixel of image (i + 1, j - 1)
temp[2] temp2[2, 0]
temp2[3, 0] pixel of image (i - 1, j)
temp[3] temp2[3, 0]
temp2[4, 0] pixel of image (i, j)
temp[4] temp2[4, 0]
temp2[5, 0] pixel of image(i + 1, j)
temp[5] temp2[5, 0]
temp2[6, 0] pixel of image (i - 1, j + 1)
temp[6] temp2[6, 0]
temp2[7, 0] pixel of image(i, j + 1)
temp[7] temp2[7, 0]
temp2[8, 0] pixel of image(i + 1, j + 1)
temp[8] temp2[8, 0]
endfor endfor
Ascending Bubble Sorting
(52)
3.2.5 Pseudocode Midpoint Filter
Secara sederhana filter midpoint bertujuan untuk menghitung titik tengah antara nilai maksimum dan nilai minimum dalam daerah citra yang diliputi oleh filter. Berikut ini merupakan pseudocode program midpoint filter.
Pada pseudocode program midpoint filter, pertama nilai pixel citra diambil dari layer R , B atau G, dari kernel 3x3 selanjutnya dilakukan pengurutan secara ascending dan diambil nilai mediannya kemudian di-replace pada posisi pusat kernel 3x3 tersebut. Demikian seterusnya berulang-ulang sampai pada lebar dan tinggi citra yang dapat dicakup filter
int temp,temp2 int x,y
for j := 1 to y – 1 do for I := 1 to x – 1 do
temp2[0, 0] pixel of image (i - 1, j - 1)
temp[0] temp2[0, 0]
temp2[1, 0] pixel of image (i, j - 1)
temp[1] temp2[1, 0]
temp2[2, 0] pixel of image (i + 1, j - 1)
temp[2] temp2[2, 0]
temp2[3, 0] pixel of image (i - 1, j)
temp[3] temp2[3, 0]
temp2[4, 0] pixel of image (i, j)
temp[4] temp2[4, 0]
temp2[5, 0] pixel of image(i + 1, j)
temp[5] temp2[5, 0]
temp2[6, 0] pixel of image (i - 1, j + 1)
temp[6] temp2[6, 0]
temp2[7, 0] pixel of image(i, j + 1)
temp[7] temp2[7, 0]
temp2[8, 0] pixel of image(i + 1, j + 1)
temp[8] temp2[8, 0]
endfor endfor
Ascending Bubble Sorting
(53)
3.2.6 Pseudocode Mean Squared Error (MSE)
Berikut ini merupakan pseudocode dari program mean squared error.
double nilai_mse = 0
int a1, b1, c1, a2, b2, c2 int x,y
int temp1, temp2, temp3, temp4
x width of data citra asli
x1 height of data citra asli
y width of data citra hasil
y1 height of data citra hasil
if (x == y & x1 == y1) then
for i 0 < x do
for j 0 < x1 do
endfor endfor
a1 GetPixel(i, j) for Red from data_citraAsli
b1 GetPixel(i, j) for Green from data_citraAsli
c1 GetPixel(i, j) for Blue from data_citraAsli
a2 GetPixel(i, j) for Red from data_citraHasil
b2 GetPixel(i, j) for Green from data_citraHasil
c2 GetPixel(i, j) for Blue from data_citraHasil
temp1 a1 - a2
temp2 b1 - b2
temp3 c1 - c2
temp1 (temp1 * temp1)
temp2 (temp2 * temp2)
temp3 (temp3 * temp3)
if (temp1 < 0) then
temp1 temp1 * (-1)
if (temp2 < 0) then temp2 = temp2 * (-1) if (temp3 < 0) then temp3 = temp3 * (-1)
temp4 (temp1 + temp2 + temp3) / 3
nilai_mse += temp4 endif endif endif
(54)
3.2.6 Pseudocode Peak Signal Noise to Ratio (PSNR)
Berikut ini merupakan pseudocode dari program Peak Signal Noise to Ratio.
3.3 Perancangan Sistem
Hal yang pertama dilakukan dalam perancangan sistem untuk tugas akhir ini adalah membuat flowchart sistem. Selanjutnya dapat melakukan perancangan aplikasi.
3.3.1 Perancangan Flowchart Sistem
Pada bagian ini akan dijelaskan urutan dan langkah-langkah pembuatan sistem yang dijelaskan pada flowchart sistem kemudian akan dijelaskan dalam bagian-bagian
flowchart teknik filter yang digunakan. Kemudian dilanjutkan dengan membuat rancangan interface sistem yang dibangun.
Flowchart merupakan gambar atau bagan yang memperlihatkan urutan dan hubungan antar proses beserta pernyataannya. Gambaran ini dinyatakan dengan simbol. Dengan demikian setiap simbol menggambarkan proses tertentu. Sedangkan antara proses digambarkan dengan garis penghubung. Dengan menggunkan flowchart
akan memberikan kemudahan dalam melakukan pengecekan bagian-bagian yang terlupakan dalam analisis masalah. Disamping itu flowchart juga berguna sebagai fasilitas untuk berkomunikasi antara pemrogram yang bekerja dalam tim suatu proyek [12]. Gambar 3.4 berikut ini merupakan flow chart dari sistem yang akan dibangun.
double nilai_PSNR, cross
cross (10 * 255) / Sqrt(nilai_mse)
(55)
Mulai
Buka file citra bernoise
Hitung nilai MSE & PNSR
Selesai
Tampilkan Nilai MSE dan PSNR Order-Statistic Filters
Median Filter f’(x,y) = median g(s,t) (s,t) € S
xy
Ya
Mean Filter f’(x,y) =1/mn ∑ g(s,t) (s,t) € Sxy
Ya Tidak
Max Filter f’(x,y) = max g(s,t) (s,t) € Sxy
Tidak
Ya
Min Filter f’(x,y) = min g(s,t) (s,t) € Sxy
f’(x,y) =(∑ max g(s,t) +
∑ min g(s,t))/2 (s,t) € Sxy
Tidak
Ya
Tidak Hitung MSE & PSNR ?
Input Citra Asli ( Sebelum Terkena
Noise)
Tidak
Ya Tampilkan Citra Hasil
Reduksi Mau input citra bernoise?
Ya
Input citra tanpa noise Tidak
Bangkitkan Noise Salt-and-pepper atau Noise Gaussian Tampilkan Citra Bernoise Midpoint Filter Tidak Ya
(56)
Keterangan flowchart sistem :
Dalam sistem ini terdapat teknik filter yang digunkan untuk mereduksi noise pada citra digital yang memiliki noise yaitu teknik Order-Statistic Filters. Proses untuk mereduksi noise dengan sistem yang akan dibangun yaitu hal yang pertama dilakukan adalah menginputkan file citra berekstensi bmp yang memiliki noise gausssian atau noise salt-and-pepper , kemudian melakukan proses filtering dengan teknik median filter, mean filter, max filter, min filter atau midpoint filter. Selanjutnya setelah proses filtering maka citra hasil reduksi akan ditampilkan, kemudian untuk proses perhitungan nilai MSE dan PSNR user sebelumnya harus memiliki citra asli yaitu citra sebelum terkena noise, jika ada citra asli maka citra asli terlebih dahulu dibuka dan proses perhitungan dapat dilakukan sistem, kemudian sistem akan menampilkan hasil MSE dan PSNR citra. Jika user tidak memiliki citra asli (citra sebelum terkena noise) maka prosess kerja sistem selesai, karena sistem tidak akan dapat melakukan perhitungan nilai MSE dan PSNR tanpa citra asli.
3.3.2 Rancangan Interface Aplikasi
Sistem ini dirancang dalam 7 form yaitu form preloader, form utama, form membangkitkan noise salt-and-pepper, form membangkitkan noise gaussian, form
Menghitung MSE dan PSNR , form bantuan dan form programmer.
3.3.2.1 Rancangan interfaceformPreloader
Pada saat sistem atau aplikasi dijalankan maka form pertama yang akan muncul adalah form preloader. Di dalam form preloader terdapat timer yaitu selang waktu untuk masuk ke form utama. Gambar 3.5 berikut rancangan tampilan form preloader
(1)
{ {
double hasill, kalii;
kalii = (10 * 255) / Math.Sqrt(nilai_mseMax); hasill = Math.Log(kalii, 20);
textBox6.Text = hasill.ToString(); }
} }
catch { }
// Menghitung MSE & PSNR hasil Min Filter try
{
Bitmap data_citraAsli3 = new Bitmap(citraAsli.Image); Bitmap data_HasilMin = new Bitmap(HasilMin.Image); double nilai_mseMin = 0;
int k, l, m, kk, ll, mm;
int tempk, templ, tempm, tempn;
if (data_citraAsli3.Width == data_HasilMin.Width & data_citraAsli3.Height == data_HasilMin.Height)
{
for (int i = 0; i < data_citraAsli3.Width; i++) {
for (int j = 0; j < data_citraAsli3.Height; j++) {
k = data_citraAsli3.GetPixel(i, j).R; l = data_citraAsli3.GetPixel(i, j).G; m = data_citraAsli3.GetPixel(i, j).B; kk = data_HasilMin.GetPixel(i, j).R; ll = data_HasilMin.GetPixel(i, j).G; mm = data_HasilMin.GetPixel(i, j).B; tempk = k - kk;
templ = l - ll; tempm = m - mm;
tempk = (tempk * tempk); templ = (templ * templ); tempm = (tempm * tempm); if (tempk < 0)
tempk = tempk * (-1); if (templ < 0)
templ = templ * (-1); if (tempm < 0)
tempm = tempm * (-1);
tempn = (tempk + templ + tempm) / 3; nilai_mseMin += tempn;
} }
nilai_mseMin = nilai_mseMin / (data_citraAsli3.Width * data_citraAsli3.Height); textBox7.Text = nilai_mseMin.ToString();
(2)
} else {
MessageBox.Show("Resolusi citra yang di input harus sama !"); }
{ {
double results, crossx;
crossx = (10 * 255) / Math.Sqrt(nilai_mseMin); results = Math.Log(crossx, 20);
textBox8.Text = results.ToString(); }
} }
catch { }
// Menghitung MSE & PSNR hasil Midpoint Filter try
{
Bitmap data_citraAsli4 = new Bitmap(citraAsli.Image); Bitmap data_HasilMid = new Bitmap(HasilMidpoint.Image); double nilai_mseMidpoint = 0;
int p, q, r, p2, q2, r2;
int tempp, tempq, tempr, temps;
if (data_citraAsli4.Width == data_HasilMid.Width & data_citraAsli4.Height == data_HasilMid.Height)
{
for (int i = 0; i < data_citraAsli4.Width; i++) {
for (int j = 0; j < data_citraAsli4.Height; j++) {
p = data_citraAsli4.GetPixel(i, j).R; q = data_citraAsli4.GetPixel(i, j).G; r = data_citraAsli4.GetPixel(i, j).B; p2 = data_HasilMid.GetPixel(i, j).R; q2 = data_HasilMid.GetPixel(i, j).G; r2 = data_HasilMid.GetPixel(i, j).B; tempp = p - p2;
tempq = q - q2; tempr = r - r2;
tempp = (tempp * tempp); tempq = (tempq * tempq); tempr = (tempr * tempr); if (tempp < 0)
tempp = tempp * (-1); if (tempq < 0)
tempq = tempq * (-1); if (tempr < 0)
(3)
temps = (tempp + tempq + tempr) / 3; nilai_mseMidpoint += temps;
} }
nilai_mseMidpoint = nilai_mseMidpoint / (data_citraAsli4.Width * data_citraAsli4.Height);
textBox9.Text = nilai_mseMidpoint.ToString(); }
else {
MessageBox.Show("Resolusi citra yang di input harus sama !"); }
{ {
double hasils, kalis;
kalis = (10 * 255) / Math.Sqrt(nilai_mseMidpoint); hasils = Math.Log(kalis, 20);
textBox10.Text = hasils.ToString(); }
MessageBox.Show("Perhitungan MSE & PSNR berhasil"); }
}
catch { } }
private void button4_Click(object sender, EventArgs e) {
Close(); }
private void button5_Click(object sender, EventArgs e) {
OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.InitialDirectory = " ";
openFileDialog.Filter = "Bitmap files (*.bmp)|*.bmp"; openFileDialog.FilterIndex = 1;
openFileDialog.RestoreDirectory = true;
if (DialogResult.OK == openFileDialog.ShowDialog()) {
Bitmap aa = new Bitmap(openFileDialog.FileName); HasilMean.Image = aa;
} }
private void button6_Click(object sender, EventArgs e) {
OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.InitialDirectory = " ";
openFileDialog.Filter = "Bitmap files (*.bmp)|*.bmp"; openFileDialog.FilterIndex = 1;
openFileDialog.RestoreDirectory = true;
if (DialogResult.OK == openFileDialog.ShowDialog()) {
(4)
HasilMax.Image = aa; }
}
private void button7_Click(object sender, EventArgs e) {
OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.InitialDirectory = " ";
openFileDialog.Filter = "Bitmap files (*.bmp)|*.bmp"; openFileDialog.FilterIndex = 1;
openFileDialog.RestoreDirectory = true;
if (DialogResult.OK == openFileDialog.ShowDialog()) {
Bitmap aa = new Bitmap(openFileDialog.FileName); HasilMin.Image = aa;
} }
private void button8_Click(object sender, EventArgs e) {
OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.InitialDirectory = " ";
openFileDialog.Filter = "Bitmap files (*.bmp)|*.bmp"; openFileDialog.FilterIndex = 1;
openFileDialog.RestoreDirectory = true;
if (DialogResult.OK == openFileDialog.ShowDialog()) {
Bitmap aa = new Bitmap(openFileDialog.FileName); HasilMidpoint.Image = aa;
} } } }
3.
Form
Bangkitkan
Noise Salt-And-Pepper
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data;
using System.Drawing; using System.Linq; using System.Text;
using System.Windows.Forms; namespace Order_Statistic_Filters {
public partial class Form7 : Form {
public Form7() {
InitializeComponent(); }
private void button2_Click(object sender, EventArgs e) {
try {
(5)
Bitmap citra = new Bitmap(Gambar.Image); int x, y, i, x1, y1, pilih, prob;
y = citra.Height; x = citra.Width;
prob = Convert.ToInt32(persen.Text); if (prob > 100 || prob < 0)
{
MessageBox.Show(" Probabilitas Noise Hanya mulai dari 1 - 100 %"); }
else {
prob = Convert.ToInt32(x * y * prob * 0.01); Random rand = new Random();
for (i = 0; i < prob; i++) {
x1 = rand.Next(0, x - 1); y1 = rand.Next(0, y - 1); pilih = rand.Next(1,10); if (pilih <=5)
{
citra.SetPixel(x1, y1, Color.FromArgb(255, 0, 0, 0)); }
else {
citra.SetPixel(x1, y1, Color.FromArgb(255, 255, 255, 255)); }
}
Gambar.Image = citra; button3.Enabled = true;
MessageBox.Show("Prosess Pembangkitan Noise Berhasil"); }
} catch {
MessageBox.Show("Pastikan inputan probabilitas noisenya benar!"); }
}
private void button1_Click(object sender, EventArgs e) {
OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.InitialDirectory = " ";
openFileDialog.Filter = "Bitmap files (*.bmp)|*.bmp"; openFileDialog.FilterIndex = 1;
openFileDialog.RestoreDirectory = true;
if (DialogResult.OK == openFileDialog.ShowDialog()) {
Bitmap aa = new Bitmap(openFileDialog.FileName); Gambar.Image = aa;
persen.Enabled = true; }
}
private void button3_Click(object sender, EventArgs e) {
Bitmap citra = new Bitmap((Bitmap)this.Gambar.Image); SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.InitialDirectory = " ";
(6)
saveFileDialog.Filter = "Bitmap Files (*.bmp)|*.bmp | Jpeg files (*.jpg) | *.jpg";
saveFileDialog.FilterIndex = 1;
saveFileDialog.RestoreDirectory = true;
if (DialogResult.OK == saveFileDialog.ShowDialog()) {
citra.Save(saveFileDialog.FileName);
MessageBox.Show("Hasil Penambahan Noise pada citra berhasil disimpan."); }
button4.Enabled = true; }
private void button4_Click(object sender, EventArgs e) {
Close(); }
private void persen_TextChanged(object sender, EventArgs e) {
button2.Enabled = true; }
} }
4.
Form
Bangkitkan
Noise Gaussian
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.Windows.Forms;
using System.Runtime.InteropServices; namespace Order_Statistic_Filters {
public class RestorasiCitra {
Bitmap citra = null; IntPtr Iptr = IntPtr.Zero; BitmapData bmpData = null;
GaussianRandom gaussgen = new GaussianRandom(); public byte[] Pixels { get; set; }
public int Depth { get; private set; } public int Width { get; private set; } public int Height { get; private set; } public RestorasiCitra(Bitmap citra) {
this.citra = citra; }