Implementasi Dan Perbandingan Optimum Notch Filter Dan Band Reject Filter Untuk Mereduksi Periodic Noise Pada Citra Digital
IMPLEMENTASI DAN PERBANDINGAN OPTIMUM NOTCH
FILTER DAN BAND REJECT FILTER UNTUK MEREDUKSI
PERIODIC NOISE PADA CITRA DIGITAL
SKRIPSI
ISMAN SANTOSO 091401022
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2013
(2)
IMPLEMENTASI DAN PERBANDINGAN OPTIMUM NOTCH FILTER DAN BAND REJECT FILTER UNTUK MEREDUKSI PERIODIC NOISE PADA CITRA
DIGITAL
SKRIPSI
DiajukanuntukmelengkapitugasakhirdanmemenuhisyaratmencapaigelarSarjanaKompu ter
ISMAN SANTOSO 091401022
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2013
(3)
PERSETUJUAN
Judul : IMPLEMENTASI DAN PERBANDINGAN
OPTIMUM NOTCH FILTER DAN BAND REJECT FILTER UNTUK MEREDUKSI PERIODIC NOISE PADA CITRA DIGITAL
Kategori : SKRIPSI
Nama : ISMAN SANTOSO
Nomor Induk Mahasiswa : 091401022
Program Studi : SARJANA (S1) ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI
Diluluskan di
Medan, 27 Juni 2013
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Dian Wirdasari, S.Si, M.Kom Dian Rachmawati, S.Si, M.Kom
NIP 1982 0923 2010 1220 02 NIP1983 0723 2009 1220 04
Diketahui/Disetujui oleh
Program Studi S1 Ilmu Komputer
(4)
PERNYATAAN
IMPLEMENTASI DAN PERBANDINGAN OPTIMUM NOTCH FILTER DAN BAND REJECT FILTER UNTUK MEREDUKSI PERIODIC 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, 27 Juni2013
Isman Santoso
(5)
PENGHARGAAN
Puji dan syukur penulis ucapkan kepada Tuhan Yang Maha Kuasa atas segala berkat dan kasih karunia-Nya 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 Syahriol Sitorus,S.Si, MIT, dan Bapak Ade Candra, ST, M.Kom, selaku Dosen Penguji.
7. Semua dosen pada Departemen Ilmu Komputer FASILKOM-TIUSU, dan pegawai di Ilmu Komputer FASILKOM-TI USU.
8. Bapak saya Tommy Wahab Nainggolan, ibu saya Marlise Simanjuntak, kakak saya Debora Nainggolan, dan abang saya Beynon Roy yang memberikan dorongan kepada penulis selama menyelesaikan skripsi ini.
9. Rekan-rekan kuliah, khususnya Efrienni Tampubolon, Ales Sanro Sotardodo, dan rekan-rekan asisten di IKLC yang telah 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.
(6)
ABSTRAK
Noise pada citra digital dapat berupa periodic noise yang secara visual tampak
terdapat garis-garis pada citra yang penyebarannya merata.Salah satu mekanisme yang digunakan untuk mengurangi noise adalah filter. Periodic Noise dapat dikurangi dengan menggunakan Selective Filter. Adapun metode filter yang digunakan penulis untuk proses pengurangan noise adalah dengan menggunakan Optimum Notch Filter dan Band Reject Filter yang keduanya merupakan jenis dari selective filter. Penggunaan filter dilakukan di dalam domain frekuensi. Untuk itu penulis juga menggunakan metode Fast Fourier Transform untuk menghasil citra transformasi di dalam domain frekuensi. Implementasi sistem menggunakan bahasa pemrograman Visual C#.NET 2012. Hasil dari penelitan ini diperoleh bahwa citra hasil filter dengan menggunakan Band Reject Filter lebih baik kualitasnya dibandingkan dengan citra hasil filter dengan Optimum Nocth Filter. Ukuran citra digital yang di-filter merupakan citra dengan ukuran simetris 2n, n= 7, 8 dan 9.
Kata kunci : Selective Filter, Citra, Optimum Notch Filter, Band Reject Filter, Fast Fourier Transform
(7)
IMPLEMENTATION AND COMPARISON OF OPTIMUM NOTCH FILTER AND BAND REJECT FILTER TO REDUCE PERIODIC NOISE ON DIGITAL
IMAGE
ABSTRACT
Noiseondigital imagecan be periodicnoisewhich visuallyappearsthere arelines on theimagearespreadevenly. Filtering is one of the mechanism to reduce noise. Periodic noise can be reduced by using Selective Filter. The filter method used by the author to reduce the noise is Optimum Notch Filter and Band Reject Filter which are both a type of selective filter. The use of the filter are processed in the frequency domain, because of that author also use the Fast Fourier Transform method to produce the image transformation in frequency domain. System is implemented by using Visual C#.NET 2012. The results ofthis researchshows that theimage hasfilteredby using BandRejectFilteris better thanusing Optimum NotchFilter.The size of digital image that will be filtered is symmetrical with large size 2n, n=7, 8, and 9.
Keyword : Selective Filter, Digital Image,Optimum Notch Filter, Band Reject Filter,
(8)
DAFTAR ISI
Halaman
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak v
Abstract vi
Daftar Isi vii
Daftar Tabel ix
Daftar Gambar x
Daftar Lampiran xi
Bab I Pendahuluan
1.1Latar Belakang 1
1.2Perumusan Masalah 2
1.3Batasan Masalah 2
1.4Tujuan Penelitian 2
1.5Manfaat Penelitian 3
1.6Sistematika Penulisan 3
Bab II Landasan Teori
2.1 Citra Digital 4
2.1.1 Jenis-Jenis Citra Digital 5 2.1.2 Warna 5
2.1.2.1 RGB 6
2.1.2.2 CYMK 6
2.1.2.3 HSV 7
2.1.2.4 YUV 7
2.1.3 Format Citra Digital 8
2.1.3.1 Joint Photographic Experts Group (JPEG) 8 2.1.3.2 Graphics Interchange Format (GIF) 8 2.1.3.3 Portable Network Graphics (PNG) 9
2.2 Noise 9
2.2.1 Periodic Noise 9
2.3 Pengolahan Citra 10
2.3.1 Pengolahan Citra dalam Domain Frekuensi 10 2.3.1.1 Transformasi Fourier Diskrit 2D dan Domain Frekuensi 10
2.3.1.2 DFT Terpusat 11
2.3.1.3 Fast Fourier Transform (FFT) 13 2.3.2 Konsep Filter dalam Domain Frekuensi 14
2.3.3Selective Filter 15
(9)
2.4 Penilaian Kualitas Citra 22 2.4.1 Mean Square Error (MSE) dan Peak Signal to Noise
Ratio (PSNR) 23
Bab III Analisis dan Perancangan Sistem
3.1 Analisis Sistem 24
3.1.1 Analisis Masalah 24
3.1.2 Analisis Persyaratan 25
3.1.2.1 Persyaratan Fungsional 25 3.1.2.2 Persyaratan Nonfungsional 25 3.1.2.3 Pemodelan Persyaratan Sistem dengan Use Case 26
3.1.3 Analisis Proses Sistem 40
3.2 Perancangan Sistem 46
3.2.1 Class Diagram 46
3.2.2 Perancangan Antarmuka 49
3.2.2.1Rancangan Interface Splash Screen 49 3.2.2.2 Rancangan Interface Form Uji Filter ONF dan BRF 49 3.2.2.3 Rancangan Interface Form Implementasi ONF dan BRF 53 3.2.2.4 Rancangna Interface Form Petunjuk Aplikasi 55 3.2.2.5 Rancangan Interface Form Tentang Aplikasi 56
Bab IV Implementasi dan Pengujian
4.1Implementasi 57
4.1.1 FormSplash Screen 57
4.1.2 FormPengujian ONF dan BRF 58
4.1.3 FormImplementasi ONF dan BRF 58 4.1.4 FormPetunjuk Penggunaan Aplikasi 59
4.1.5 FormTentang Aplikasi 60
4.2. Pengujian 60
4.2.1 Pengujian Black Box 61
4.2.1.1 Rencana Pengujian 61
4.2.1.2 Kasus dan Hasil Pengujian Alpha 61 4.2.1.3 Kesimpulan Hasil Pengujian Alpha 62 4.2.1.4 Kasus dan Hasil Pengujian Betha 62 4.2.1.5 Kesimpulan Hasil Pengujian Betha 65 4.2.2Proses Pengubahan Citra RGB Menjadi Citra Grayscale
Ber-noise 66
4.2.3 Proses Pemfilteran Menggunakan ONF dan BRF 67
4.2.3.1 Proses Filter BRF 67
4.2.3.2 Proses Filter ONF 68
4.2.4 Proses Pengujian ONF Dan BRF Untuk Mem-filter Citra Grayscale Dengan Periodic Noise 69
Bab V Kesimpulan dan Saran
(10)
DAFTAR TABEL
Nomor
Tabel Nama Tabel Halaman
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 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 4.14 4.15
Dokumentasi Naratif Use Case Kontrol Proses Filter Citra Digital
Dokumentasi Naratif Use CaseInput Citra Digital
Dokumen Naratif untuk use case periodic noise generate Dokumen Naratif untuk use case Transformasi Fourier Dokumentasi Naratif untuk use
caseGenerateMaskFilterDokumentasi Naratif untuk use case
Konvolusi
Dokumen Naratif untuk use case InversFourier Dokumen naratif use case MSE, PSNR, Runtime. Dokumentasi naratif use case Simpan Citra Kelas dan Atributnya
Rencana Pengujian
Pengujian hasil input citra digital oleh user Pengujian hasil filter oleh sistem
Perbandingan nilai MSE, PSNR dan Runtime antara citra
grayscale asli dengan citra grayscale hasil filter BRF ukuran
128 x 128
Perbandingan nilai MSE, PSNR dan Runtime antara citra
grayscale asli dengan citra grayscale hasil filter ONF ukuran
128 x 128
Perbandingan nilai MSE, PSNR dan Runtime antara citra
grayscale asli dengan citra grayscale hasil filter BRF ukuran
256 x 256
Perbandingan nilai MSE, PSNR dan Runtime antara citra
grayscale asli dengan citra grayscale hasil filter ONF ukuran
256 x 256
Perbandingan nilai MSE, PSNR dan Runtime antara citra
grayscale asli dengan citra grayscale hasil filter BRF ukuran
512 x 512
Perbandingan nilai MSE, PSNR dan Runtime antara citra
grayscale asli dengan citra grayscale hasil filter ONF ukuran
512 x 512
Rata-Rata nilai MSE, PSNR dan runtime citra grayscale 128 x 128
Rata-Rata nilai MSE, PSNR dan runtime citra grayscale 256 x 256
Rata-Rata nilai MSE, PSNR dan runtime citra grayscale 512 x 512
Rata-Rata Keseluruhan nilai MSE, PSNR dan Runtime dari setiap ukuran citra
Perbandingan nilai MSE sebelum difilter dengan sesudah difilter dengan BRF
28 30 31 33 34 36 37 38 39 46 61 61 62 70 73 76 79 82 82 83 88 88 89 89 90 90
(11)
difilter dengan ONF
DAFTAR GAMBAR Nomor
Gambar Nama Gambar Halaman
2.1 2.2 2.3 2.4 2.5
Citra Digital
Kombinasi warna 3 kanal
Kombinasi warna dari tiap kanal CYMK Citra dengan periodik noise
Spektrum Fourier 2D
4 6 7 9 12
(12)
DAFTAR LAMPIRAN
Halaman
A. Listing Program A-1
B. Lembar Kuisioner B-1
2.9 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9
Band Reject Filter
Perspective Plot dari (a) Ideal, (b) Butterworth, dan (c) Gaussian Notch Filters
Use Case Diagram Sistem yang akan dikembangkan Activity Diagram Kontrol Proses Filter Citra Digital Activity Diagram Input Citra Digital
Activity Diagram periodic noise generate
Activity Diagram use case Transformasi Fourier
Activity Diagram use case Mask Filter Generate Optimum Notch Filter
Activity Diagram use case Mask Filter Generate Band Reject Filter
Activity Diagram use case Konvolusi
Activity Diagram untuk use case Invers Fourier Activity Diagram use case MSE, PSNR, dan Runtime
Activity Diagram untuk use case Simpan citra digital Sequence Diagram tahap pertama Filter Citra Digital
Sequence Diagram tahap kedua filter Citra digital
Class Diagram untuk sistem yang akan dibangun Rancangan Interface Splash Screen
Rancangan Interface Form Pengujian ONF dan BRF Rancangan Interface Form Enkripsi Citra
Rancangan Interface Form petunjuk penggunaan aplikasi Rancangan Interface Form Tentang Aplikasi
Form Splash Screen
Form Pengujian ONF dan BRF Form implementasi ONF dan BRF Form Petunjuk penggunaan aplikasi Form Tentang aplikasi
Peringatan apabila ukuran lebar dan tinggi gambar tidak sesuai Pengubahan citra berwarna ke citra grayscale ber-noise
Pemberitahuan proses filter selesai Proses Filter BRF
Proses Filter ONF
22 27 29 31 32 34 35 35 36 37 38 39 40 43 48 49 50 53 55 56 57 58 59 60 60 61 62 63 63
(13)
ABSTRAK
Noise pada citra digital dapat berupa periodic noise yang secara visual tampak
terdapat garis-garis pada citra yang penyebarannya merata.Salah satu mekanisme yang digunakan untuk mengurangi noise adalah filter. Periodic Noise dapat dikurangi dengan menggunakan Selective Filter. Adapun metode filter yang digunakan penulis untuk proses pengurangan noise adalah dengan menggunakan Optimum Notch Filter dan Band Reject Filter yang keduanya merupakan jenis dari selective filter. Penggunaan filter dilakukan di dalam domain frekuensi. Untuk itu penulis juga menggunakan metode Fast Fourier Transform untuk menghasil citra transformasi di dalam domain frekuensi. Implementasi sistem menggunakan bahasa pemrograman Visual C#.NET 2012. Hasil dari penelitan ini diperoleh bahwa citra hasil filter dengan menggunakan Band Reject Filter lebih baik kualitasnya dibandingkan dengan citra hasil filter dengan Optimum Nocth Filter. Ukuran citra digital yang di-filter merupakan citra dengan ukuran simetris 2n, n= 7, 8 dan 9.
Kata kunci : Selective Filter, Citra, Optimum Notch Filter, Band Reject Filter, Fast Fourier Transform
(14)
IMPLEMENTATION AND COMPARISON OF OPTIMUM NOTCH FILTER AND BAND REJECT FILTER TO REDUCE PERIODIC NOISE ON DIGITAL
IMAGE
ABSTRACT
Noiseondigital imagecan be periodicnoisewhich visuallyappearsthere arelines on theimagearespreadevenly. Filtering is one of the mechanism to reduce noise. Periodic noise can be reduced by using Selective Filter. The filter method used by the author to reduce the noise is Optimum Notch Filter and Band Reject Filter which are both a type of selective filter. The use of the filter are processed in the frequency domain, because of that author also use the Fast Fourier Transform method to produce the image transformation in frequency domain. System is implemented by using Visual C#.NET 2012. The results ofthis researchshows that theimage hasfilteredby using BandRejectFilteris better thanusing Optimum NotchFilter.The size of digital image that will be filtered is symmetrical with large size 2n, n=7, 8, and 9.
Keyword : Selective Filter, Digital Image,Optimum Notch Filter, Band Reject Filter,
(15)
BAB I
PENDAHULUAN
1.1Latar Belakang
Citra digital bisa direpresentasikan sebagai sebuah gambar pada bidang dua dimensi. Penggunaan citra digital saat ini semakin meningkat dikarenakan beragamnya alat untuk mendapatkan gambar dan mengolah gambar.
Proses pembentukan citra digital bisa didapatkan melalui alat-alat akuisisi citra digital. Di dalam proses akuisisi tersebut, citra yang dihasilkan pasti memiliki noise.
Noise yang dihasilkan kemungkinan disebabkan oleh kurang fokusnya kamera, atau
getaran yang dihasilkan pada saat pengambilan gambar atau noise yang dihasilkan dari alat yang digunakan untuk mengambil citra digital tersebut(scanner, kamera).
Noise pada citra digital juga dapat berupa periodic noise yang secara visual
tampak terdapat garis-garis pada citra yang penyebarannya merata. Untuk mengatasi noise ini maka diperlukan filter yang bersesuaian yaitu filter yang bekerja pada Domain Frekuensi.
Banyak penelitian telah dilakukan untuk menghasilkan filter yang berguna dalam perbaikan citra digital yang memiliki noise, seperti yang dilakukan Feng-Ju Chang juga telah membahas penggunaan Notch Filter yang dapat juga diterapkan dalam pengolahan citra digital khususnya untuk mereduksi periodik noise dalam jurnalnya yang berjudul: Advanced Digital Signal Processing: Notch Filter[5].
Berdasarkan uraian di atas, penulis tertarik untuk mengimplementasikan
Optimum Notch Filter dan Band Reject Filter di mana kedua selective filter tersebut
(16)
tetangga yang didefinisikan terhadap pusat frekuensi. Penulis mencoba membandingkan sejauh mana efektivitas dari kedua filter untuk mengurangi noise pada citra digital yang telah ditambahkan dengan periodic noise
1.2 Perumusan Masalah
Adapun masalah yang akan dibahas dalam penelitian ini adalah: 1. Bagaimana cara mereduksi periodic noise pada citra digital.
2. Bagaimana merancang aplikasi perbaikan citra digital dengan menggunakan
Optimum Notch Filter dan Band Reject Filter.
3. Bagaimana penilaian kualitas citra secara objektif.
1.3 Batasan Masalah
Adapun batasan masalah dalam penelitian ini adalah :
1. Citra digital yang digunakan sebagai input adalah format citra digital JPEG(.jpg) .
2. Citra digital yang diolah adalah citra Grayscale.
3. Citra ber-noise diperoleh dengan menambahkan periodic noiseyang sama pada citra grayscale.
4. Ukuran dimensi citra yang akan digunakan m x m pixel dimana m= 2n dan n=7,8, dan 9 dengan lebar dan tinggi citra harus simetris.
5. Tipe filter untuk kedua selective filter yang digunakan adalah Ideal,
Butterworth, dan Gaussian.
6. Aplikasi berbasis desktop dan bahasa pemrograman yang digunakan untuk membangun aplikasi adalah bahasa pemrograman Visual C#.NET 2012.
7. Parameter pembanding kualitas citra diukur dengan MSE (Mean Square Error),PSNR(Peak Signal to Noise Ratio), dan waktu akses.
(17)
Penelitian ini dilaksanakan dengan tujuan :
1. Mengetahui cara kerja filter yang bekerja dalam domain frekuensi.
2. Membangun aplikasi perbaikan citra digital dengan menggunakan Optimum
Notch Filter dan Band Reject Filter.
3. Dengan aplikasi yang telah dibangun diperoleh citra digital dengan nilai guna yang lebih baik sebelum citra di filter.
1.5 Manfaat Penelitian
Penelitian ini diharapkan dapat membantu masyarakat dalam memperbaiki citra digital yang mereka miliki dan penelitian ini menjadi topik yang dikembangkan lebih lanjut oleh peneliti lainnya yang tertarik di bidang pengolahan citra.
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 citra digital, pengolahan citra, domain frekuensi dan selectivefilter.
Bab III Analisis dan Perancangan
Berisi tentang analisis mengenai proses kerja
selectivefilter(Band Reject Filter dan Optimum Notch Filter)
dan perancangan tampilan form dari aplikasi. Bab IV Implementasi dan Pengujian
Berisi tentang algoritma dan implementasi dari aplikasi. Bab V Kesimpulan dan Saran
Berisi tentang kesimpulan yang dapat ditarik setelah menyelesaikantugas akhir ini dan saran-saran yang dapat
(18)
BAB II
LANDASAN TEORI
2.1. Citra Digital
Citra adalah suatu representasi(gambaran), kemiripan, atau imitasi dari suatu objek. Citra sebagai keluaran suatu sistem perekaman data dapat bersifat optik berupa foto, bersifat analog berupa sinyal-sinyal video seperti gambar pada monitor televisi atau bersifat digital yang dapat langsung disimpan pada suatu media penyimpan[11].
Citra digital adalah citra yang dapat diolah oleh komputer. Seperti pada Gambar 2.1, sebuah citra grayscale ukuran 150 x 150 pixel(elemen terkecil dari sebuah citra) diambil sebagian berukuran 9 x 9 pixel. Maka monitor akan menampilkan sebuah kotak kecil. Namun, yang disimpan dalam memori komputer hanyalah angka-angka yang menunjukkan besar intensitas pada masing-masing pixel tersebut [3].
Gambar 2.1 Citra Digital
Sebuah citra digital adalah kumpulan pixel-pixel yang disusun dalam larik dua dimensi. Jumlah pixel dalam ukuran lebar dan tinggi dari sebuah citra digital disebut dengan dimensi pixel dari sebuah citra. Jumlah pixel per unit panjang dari sebuah citra
55 43 25 23 27 36 35 32 37 64 53 24 15 20 43 45 36 38 63 55 30 16 16 44 46 36 42 62 52 40 11 12 38 46 36 44 54 56 26 22 5 36 51 34 43 56 73 69 115 53 61 68 39 49 105 112 99 85 63 104 94 40 56 75 69 61 66 59 107 94 39 58 57 64 55 60 47 96 97 44 49
(19)
dikenal sebagai resolusi citra, biasanya dalam satuan pixel per inchi(ppi). Sebuah citra dengan resolusi tinggi terdiri atas banyak pixel kecil daripada citra dengan resolusi rendah. Citra digital ukuran 1 inchi x 1 inchi dengan resolusi 72ppi memiliki total pixel 72 x 72 atau 5184 pixel. Citra digital dengan ukuran yang sama dan resolusinya 300ppi memiliki total pixel 90000 pixel [9].
2.1.1. Jenis-Jenis Citra Digital
Citra Biner, adalah citra digital yang hanya memilik dua kemungkinan nilai pixel
yaitu hitam dan putih. Citra biner juga disebut sebagai citra B&W (Black and White) atau citra monokrom. Hanya dibutuhkan 1 bit untuk mewakili nilai setiap pixel dari citra biner.
Citra Grayscale merupakan citra digital yang hanya memiliki satu nilai kanal
pada setiap pixelnya, dengan kata lain nilai bagian Red = Green = Blue. Nilai tersebut digunakan untuk menunjukkan tingkat intensitas. Warna yang dimiliki adalah warna dari hitam, keabuan, dan putih. Tingkatan keabuan di sini merupakan warna abu dengan berbagai tingkatan dari hitam hingga mendekati putih.
Citra Warna(24 bit) adalah citra yang setiap pixel dari citra warna 24 bit
diwakili dengan 24 bit sehingga total 16.777.216 variasi warna. Variasi ini sudah lebih dari cukup untuk memvisualisasikan seluruh warna yang dapat dilihat penglihatan manusia. Setiap informasi warna disimpan ke dalam 1 byte data. 8 bit pertama menyimpan nilai biru, kemudian diikuti dengan nilai hijau pada 8 bit kedua dan 8 bit terakhir merupakan nilai warna merah [4].
2.1.2. Warna
Isi dari sebuah citra digital adalah pixel atau kotak warna. Manusia dapat melihat radiasi elektromagnetik dengan panjang gelombang 400 sampai 700 nanometers(nm) sebagai warna. Hewan juga bisa melihat sisi yang berbeda dari spectrum
(20)
Pengalaman warna secara natural adalah proses kombinasi dari mata dan otak. Mata bertindak sebagai penerima cahaya dan otak menginterpretasikan data dari mata sebagai informasi visual dan menerjemahkan data tersebut sebagai warna.
Penglihatan manusia didasarkan atas tiga penerima, satu untuk merah, yang lain untuk hijau, sisanya untuknya biru. Ada banyak representasi warna dari banyak perbedaan lingkup warna, atau model yang biasanya memiliki tiga atau empat channel.
2.1.2.1. RGB
Salah satu dari model warna yang paling banyak digunakan adalah RGB. Dalam model warna ini, ada tiga kanal: merah, hijau, dan biru. Setiap warna dalam model ini dibuat menggunakan kombinasi dari ketiga kanal ini.
Setiap pixel dalam model warna RGB di definisikan sebagai (r,g,b) di mana r,g, dan b adalah nilai dari masing channel. Nilai yang mungkin untuk masing-masing kanal dimulai dari 0 (tidak ada cahaya) samapai dengan 255. Perpaduan warna setiap kanal menghasilkan warna yang berbeda-beda seperti pada gambar 2.2
Gambar 2.2 Kombinasi warna 3 kanal
2.1.2.2. CYMK
Model warna ini biasanya digunakan untuk percetakan. CYMK pada dasarnya terdiri atas empat kanal: cyan, magenta, yellow dan key. Warna-warna dalam model ini
(21)
dibentuk menggunakan substrak pencampuran warna, yang menunjukkan bagaimana
pigment warna bekerja.
Mulai dari kertas putih, pewarna tinta substrak cahaya dari kertas mengandung warna yang berbeda. Hanya tiga kanal yang dibutuhkan untuk merepresentasikan semua warna(cyan,magenta, dan yellow), tetapi untuk alasan praktikal, hitam juga ditambahkan ke dalam model warna. Dengan mengganti nilai dari tiap kanal, semua perbedaan warna yang dihasilkan dari model warna ini ditunjukkan dalam gambar 2.3
Gambar 2.3 Kombinasi warna dari tiap kanal CYMK
2.1.2.3. HSV
HSV singkatan dari Hue, Saturation dan Value. Dalam model warna ini, Hue merepresentasikan warna utama, dan saturation serta value merepresentasikan bayangan spesifik dari Hue. Penggunaan utama dari model warna ini untuk membuat interaksi yang lebih baik dengan manusia karena manusia biasanya me-recognize perbedaan warna dan kemudian memilih bayangan spesifik untuk HSV.
2.1.2.4. YUV
YUV merupakan model warna yang mengkomposisikan kanal luma(Y) yang merupakan kecerahan citra dan dua kanal chrominance (U dan V) yang mendeskripsikan warna spesifik dari citra[7].
(22)
2.1.3.Format Citra Digital
2.1.3.1. Joint Photographic Experts Group(JPEG)
JPG, atau JPEG(Joint Photographic Experts Group), adalah format file yang paling popular di dalam digital fotografi. JPEG mendukung kedalaman warna 24 bit (3 saluran warna masing-masing 8 bit). Hampir setiap kamera digital mampu menyimpancitra menggunakan format ini dan secara luas didukung dalam berbagai program penampil citra.
JPEG menghasilkan file dengan ukuran kecil menggunakan kompresi lossy. Setiap kali menyimpan gambar dalam format ini, kualitas terdegradasi oleh kompresi
lossy. Kompresi lossy menghilangkan detail gambar sehingga dapat direpresentasikan
dengan kurangnya informasi.
JPEG juga menggunakan analisis matematis yang komples untuk menghapus bit yang paling terlihat pada gambar sehingga mata manusia tidak dapat membedakannya. Format ini juga mendukung fitur yang disebut progresif JPEG.
Fitur ini memungkinkan untuk menyimpan gambar sehingga informasi yang diperintahkan dengan cara tertentu dari berbagai resolusi gambar yang disajikan kepada pengguna sampai kepada gambar yang lengkap diterima. Hal ini sangat berguna untuk gambar besar yang sedang ditransfer ke komputer melalui koneksi yang lambat.
2.1.3.2. Graphics Interchange Fomat (GIF)
Merupakan format citra digital yang dapat menyimpan kedalaman warna hanya 8 bit (256 warna). GIF dapat menangani transparansi dalam bentuk yang sangat dasar. Keuntungan utama penggunaan GIF adalah GIF dapat digunakan untuk menyimpan animasi. GIF juga format citra digital yang tua dan sangat cocok dengan versi web terdahulu dan beberapa perangkat lunak lainnya.
(23)
2.1.3.3. Portable Network Graphics (PNG)
Format citra digital ini secara publik tersedia dan pengembangan dari format citra digital GIF. PNG dapat menangani kedalaman warna sampai dengan 48 bit (3 kanal warna dengan tiap kanal 16 bit).
Format ini memiliki dukungan yang lebih baik untuk transparansi daripada Format citra digital GIF. Secara keseluruhan PNG format yang lebih baik daripada GIF karena menawarkan kompresi yang lebih baik selain itu dapat menyimpan lebih banyak warna [7].
2.2. Noise
Sumber noise pada citra digital bisa terjadi sejak pengambilan dan atau transmisi citra. Kinerja dari sensor citra dipengaruhi oleh banyak faktor seperti kondisi lingkungan selama pengambilan citra dan oleh kualitas sensitivas elemen itu sendiri. Sebagai contoh, dalam pengambilan citra dengan kamera CCD, level pencahayaan dan suhu sensor adalah faktor utama yang mempengaruhi tingkat noise pada citra yang dihasilkan [10].
2.2.1. Periodic Noise
Noise periodik merupakan noise yang sifatnya periodik(bukan acak). Citra yang
terkorupsi oleh noise periodik secara visual tampak terdapat garis-garis pada citra. Garis-garis tersebut tersebar secara merata dengan periode tertentu. Pada Gambar 2.4 terlihat banyak terkorupsi oleh noise periodik .
(24)
2.3. Pengolahan Citra
Ada dua prinsip daerah aplikasi pengolahan citra digital: peningkatan informasi pictorial untuk interpretasi manusia dan pengolahan citra digital untuk penyimpanan, transmisi dan representasi bagi peralatan persepsi. Tujuan utama dari pengolahan citra digital adalah memperbolehkan manusia untuk mendapatkan kualitas tinggi atau karakteristik deskriptif dari citra asli [15].
2.3.1. Pengolahan Citra dalam Domain Frekuensi
2.3.1.1. Transformasi Fourier Diskrit 2-D dan Domain Frekuensi
f(x,y) untuk x=0,1,2,…M-1 dan y=0,1,2,…N-1 menyatakan citra M x N. Discrete
Fourier Transformation(DFT) 2-D dari f dinyatakan oleh F(u,v) yang diberikan oleh
formula 2.1:
�(�,�) =∑�−�=01∑��−=01�(�,�)�−�2�(���+���) ... 2.1 [10]
untuk u=0,1,2,..,M-1 dan v=0,1,2,..N-1. Domain frekuensi adalah rentang sistem koordinat oleh F(u,v) dengan u dan v sebagai variable frekuensi. Ini merupakan analogi domain spasial di mana rentang sistem koordinat oleh f(x,y) dengan x dan y sebagai variabel spasial. Region persegi panjang M x N didefinisikan oleh u=0,1,2,…M-1 dan v= 0,1,2,…N-1 sering disebut sebagai rentang frekuensi yang memiliki ukuran yang sama dengan citra input.
Invers dari transformasi Fourier diberikan oleh formula 2:
�(�,�) = 1
��∑ ∑ �(�,�)� −�2����
�+����
�−1
�=0
�−1
�=0 ... (2.2)[10]
untuk x=0,1,2,…,M-1 dan y=0,1,2,…,N-1. Jadi dengan F(u,v) bisa mendapatkan f(x,y) kembali dengan merata-rata invers DFT. Nilai F(u,v) dalam formula ini kadang disebut sebagai Fourier coefficients dari ekspansi.
(25)
F(u,v) : nilai intensitas spectrum fourier pada titik (u,v) f(x,y) : nilai intensitas citra noise pada titik(x,y) e : natural number(2.718281828459045….) M,N : M lebar citra, N tinggi citra
j : bilangan imajiner(konstanta fourier)
Nilai transformasi pada origin domain frekuensi [F(0,0)] disebut dengan komponen dc transformasi Fourier. Jika f(x,y) adalah real, transformasinya secara umum kompleks. Metode prinsip analisis secara visual sebuah transformasi adalah untuk menghitung spektrum dan menampilkannya sebagai citra. Jika R(u,v) dan I(u,v) merepresentasikan real dan komponen imaginary F(u,v), spektrum Fourier didefinisikan sebagai:
�(�,�) =��2(�,�) + �2(�,�) ...(2.3)[6]
2.3.1.2. DFT Terpusat
Perhitungan DFT 2-D sekarang mentransformasikan titik-titik ke dalam interval persegi panjang seperti ditunjukkan pada gambar 2.3. Persegi panjang dengan garis putus-putus adalah pengulangan periodik. Daerah dengan garis utuh menunjukkan nilai F(u,v) yang sekarang meliputi empat back-to-back perempatan periode yang bertemu pada titik yang ditunjukkan pada gambar 2.3(a). Analisis visual spektrum hanya dengan memindahkan nilai origin transformasi ke pusat dari persegi panjang frekuensi.
Nilai spektrum di (M/2, N/2) dalam gambar 2.3(b) adalah sama dengan nilai di (0, 0) dalam gambar 2.3(a) dan nilai di (0, 0) dalam gambar 2.3(b) sama dengan nilai di (-M/2, -N/2) dalam gambar 2.3(a). Dengan cara yang sama, nilai di (M-1, N-1) dalam gambar 2.3(b) adalah sama dengan nilai di (M/2-1, N/2-1) dalam gambar 2.5(a). Proses ini dinamakan dengan proses shifting. [10]
(26)
Gambar 2.5 Spektrum Fourier 2D, (a) kiri, (b) kanan [10]
Berdasarkan penjelasan di atas dapat diambil kesimpulan untuk mendapatkan DFT terpusat dapat dihitung dengan menggunakan formula 2.4:
�(�′,�′) ≡ � �� −�
2,� −
�
2�
... (2.4)[11 ]
cara lain untuk menghitung DFT terpusat adalah dengan mengasumsikan bahwa DFT F(u,v) dari f(x,y) telah diperoleh dengan menggunakan formula DFT, kemudian menukarkan kuadran pertama dari F(u,v) dengan kuadran ketiga dan menukarkan kuadran kedua dengan kuadran keempat seperti yang ditunjukkan pada gambar 2.4. Cara ini lebih efektif dari pada menggunakan formula sebelumnya karena menghemat proses komputasi yang dilakukan.
(27)
Gambar 2.6 Proses pemusatan DFT dapat dilakukan dengan menukarkan kuadran 1 dengan 3, dan 2 dengan 4 [11]
2.3.1.3. Fast Fourier Transform (FFT)
Banyaknya perkalian dan penjumlahan bilangan kompleks untuk menghitung Diskrit Fourier Transform adalah �(�2). Dengan mengadopsi pendekatan algoritma
divide-and-conquer proses penghitungan bilangan kompleks menjadi �( ����2�).
Algoritma ini dikenal sebagai Fast Fourier Transform (FFT) [2]. Berdasarkan hal inilah untuk mendapatkan transformasi Fourier dan inversnya, penulis menggunakan FFT untuk mendapatkan hasil transformasi dan invers Fourier.
Untuk menghitung DFT satu dimensi digunakan formula 2.5,
�(�) = 1
�∑�−�=01�(�)���� ... (2.5)[2]
Dimana
�� = exp[ −��2�]
Asumsikan bahwa N adalah nilai pangkat dari bilangan 2 maka untuk mendapatkan
Fast Fourier Transformation satu dimensi diperoleh dengan formula 2.6,
�(�) = 1
�∑�− �(�)�−�� 2 �� /�
1
�=0 ... (2.6)[2]
sedangkan untuk menghitung invers Fast Fourier Transformation diperoleh dengan formula 7,
�(�) =∑�−�=01 �(�)�−�� 2 �� /� ... (2.7)[2] Untuk menghitung FFT2D dapat dilakukan dengan menghitung nilai kompleks FFT 1D dari tiap baris citra digital kemudian dilanjutkan dengan menghitung nilai kompleks FFT 1D dari tiap kolom citra digital. Begitu juga untuk menghitung nilai invers dari Fast Fourier Transform 2D.
(28)
2.3.2. Konsep Filter dalam Domain Frekuensi
Dasar untuk filter linier dalam domain spasial dan frekuensi adalah teori konvolusi, yang dapat dituliskan dengan:
�(�,�)∗ ℎ(ℎ,�) ⟺ �(�,�)�(�,�)
dan sebaliknya:
�(�,�)ℎ(ℎ,�)⟺ �(�,�)∗ �(�,�)
Simbol * menunjukkan konvolusi dari dua fungsi dan pernyataan di sisi panah dobel mengatur pasangan transformasi Fourier. Sebagai contoh, formula yang pertama adalah konvolusi dua fungsi spasial yang bisa didapatkan dengan menghitung invers transformasi Fourier dari perkalian dua fungsi transformasi Fourier. Sebaliknya transformasi Fourier dari konvolusi dua fungsi spasial memberikan hasil transformasi dua fungsi [10].
Pemfilteran dalam domain spasial berisi konvolusi citra f(x,y) mask filter h(x,y). Seperti halnya teori konvolusi, juga bisa mendapatkan hasil yang sama dalam domain frekuensi dengan perkalian antara F(u,v) dengan H(u,v), transformasi Fourier
filter. Biasanya H(u,v) disebut sebagai filter transfer function[10].
Keuntungan melakukan pemfilteran di dalam domain frekuensi adalah proses konvolusi dapat diterapkan dalam bentuk perkalian langsung. Untuk melakukan pemfilteran dalam domain frekuensi harus mengikuti diagram pada gambar 2.7:
Pre-Processing
Transformasi Fourier
Fungsi Filter H(u,v)
Invers Transformasi
Fourier
Pre-Processing
F(u,v) H(u,v)F(u,v)
f(x,y) Citra Input
g(x,y) Citra ter-enhance
(29)
Penjelasan gambar 2.7:
1. Input citra digital berupa citra *.jpg dengan ukuran lebar = ukuran tinggi serta lebar dan tinggi merupakan nilai dari 2�.
2. Lakukan proses transformasi fourier dari citra input dengan menggunakan FFT 2D untuk mendapatkan F(u,v) yang merupakan nilai kompleks dari transformasi fourier.
3. Hitung filter mask H(u,v) dengan ukuran lebar dan tinggi sama dengan ukuran citra input. Filter mask yang dibahas di dalam skripsi ini adalah Band Reject Filter dan Optimum Notch Filter.
4. Kalikan F(u,v) dengan H(u,v) untuk mendapatkan G(u,v) yang merupakan hasil perkalian antara transformasi dengan filter mask.
5. Lakukan proses invers transformasi fourier dari G(u,v) menggunakan invers FFT2D sehingga diperolehlah citra hasil g(x,y).
2.3.3. Selective Filter
Noise periodik dapat dianalisis dan difilter dengan sangat efektif menggunakan teknik domain frekuensi. Ide dasar noise periodik dimunculkan sebagai konsentrasi ledakan energi dalam transformasi Fourier, pada lokasi yang bersesuaian dengan frekuensi dari interferensi periodik. Pendekatannya adalah menggunakan selective filter untuk mengisolasi noise [10].
Selective Filteradalah filter yang bekerja dengan cara melakukan seleksi pada
area citra digital yang akan dilakukan proses filter. Dalam skripsi ini, selective filter yang akan uji adalah Band Reject Filter dan Optimum Notch Filter. Berdasarkan tingkatkan kelembutan dari sebuah filter, Filter dapat dibedakan menjadi tiga kategori yaitu:
(30)
1. Ideal, merupakan tipe filter yang sangat tajam. Artinya penerapannya sangat
tajam di dalam proses filter.
2. Butterworth, merupakan filter antara dimana untuk nilai yang tinggi,
Butterworth Filter mendekati bentuk dari ideal filter. Sementara untuk nilai yang rendah, Butterworth lebih lembut mendekati bentuk dari Gaussian filter
3. Gaussian, merupakan filter yang sangat lembut di dalam proses penerapan
filternya.
Masing-masing dari selective filter memiliki kriteria dari kategori filter tersebut. Sehingga di dalam implementasinya, Band Reject Filter dan Optimum Notch
Filter diterapkan dan ujicoba untuk masing-masing ideal, butterworth, dan gaussian.
2.3.3.1. Band Reject Filter (BRF)
Band Reject Filter adalah filter yang memproses pada band frekuensi tertentu atau
region kecil dari persegi panjang frekuensi.
Formula untuk Ideal Bandreject Filter
�(�,�) =�0 �����0− �
2 ≤ � ≤ �0+
�
2
1 ������� ...(2.8)[10]
Formula untuk Butterworth Bandreject Filter
�(�,�) = 1
1+� ��
�2−� 0 2�
2� ...(2.9)[10]
Formula untuk Gaussian Bandreject Filter
�(�,�) = 1− �−� �2−�
0 2
�� �
2
(31)
Gambar 2.8Perspective plot dari (a)Ideal, (b)Butterworth, dan (c)Gaussian Band Reject Filter [11]
Keterangan formula 2.8, 2.9 dan 2.10:
H(u,v) : merupakan nilai intensitas filter mask pada pixel (u,v) D0 : radius filter
D atau D(u,v): merupakan jarak antara titik (u,v) dalam domain frekuensi W : lebar pita (band)
M, N : menyatakan lebar dan tinggi citra n : orde (khusus untuk Butterworth)
Filter ini nantinya akan menghasilkan filter mask H(u,v) yang sebelumnya telah disinggung pada Gambar 2.5. Nilai dari tiap-tiap elemen pada filter mask yang dihasilkan tidak dipengaruhi oleh intensitas citra digital asli melainkan dipengaruhi oleh dimensi sebuah citra digital itu sendiri.
Sebagai contoh, sebuah citra input dengan ukuran dimensi citra 3 x 3. Maka untuk filter mask dari Band Reject Filter akan menghasilkan filter mask dengan ukuran yang sama yaitu 3 x 3. Banyaknya elemen dari filtermask diketahui dengan mengalikan jumlah lebar dan tinggi citra input. Pada contoh ini akan menghasilkan 9 elemen filter mask.
Dengan D0=80 dan W=10 maka sebelum melakukan pemfilteran terlebih dahulu menghitung nilai array jarak dari D.
Perhitungan array jarak dari D
(32)
�(0,2) = �02+ 22 = 2
�(1,0) = �12+ 02 = 1
�(1,1) = �12+ 12 = 1.414214
�(1,2) = �12+ 22 = 2.236068
�(2,0) = �22+ 02 = 2
�(2,1) = �22+ 12 = 2.236068
�(2,2) = �22+ 22 = 2.828427
maka diperolehlah array dari jarak D hasil perhitungan :
0 1 2
1 1.41 2.24 2 2.24 2.83
Perhitungan filter mask untuk ideal Band Reject Filter
1. Hitung nilai untuk a1= �0−�
2
a1= 80−10
2 = 75
2. Hitung nilai untuk a2= �0 +�
2
a2= 80 +10
2 = 85
3. Hitung nilai intensitas untuk tiap elemen pixel filter mask
H(0,0) D(0,0)= 0
75 ≤ �(0,0)≤85 (salah) maka H(0,0)= 1 H(0,1) D(0,1)= 1
75 ≤ �(0,1)≤85 (salah) maka H(0,1)= 1 H(0,2) D(0,2)= 2
(33)
75 ≤ �(0,2)≤85 (salah) maka H(0,2)= 1 H(1,0) D(1,0)= 1
75 ≤ �(1,0)≤85 (salah) maka H(1,0)= 1 H(1,1) D(1,1)= 1.41
75 ≤ �(1,1)≤85 (salah) maka H(1,1)= 1 H(1,2) D(1,2)= 2.23
75 ≤ �(1,2)≤85 (salah) maka H(1,2)= 1 H(2,0) D(2,0)= 2
75 ≤ �(2,0)≤85 (salah) maka H(2,0)= 1 H(2,1) D(2,1)= 2.23
75 ≤ �(2,1)≤85 (salah) maka H(2,1)= 1 H(2,2) D(2,2)= 2.28
75 ≤ �(2,2)≤85 (salah) maka H(2,2)= 1
maka diperolehlah mask filter dari ideal band reject filter sebagai berikut:
1 1 1 1 1 1 1 1 1
Perhitungan filter mask untuk Butterworth Band Reject Filter dengan n=1
�(0,0) = 1
1 + � �(0,0)∗� �(0,0)2−�02�
2 =
1 1 + � 0
0−6400�
2 = 1
�(0,1) = 1
1 + � �(0,1)∗� �(0,1)2−�02�
2 =
1 1 + � 10
1−6400�
(34)
�(1,0) = 1 1 + � �(1,0)∗�
�(1,0)2−�02�
2 =
1 1 + � 10
1−6400�
2 = 0.999
�(1,1) = 1
1 + ���(1,1)∗�
(1,1)2−�02�
2 =
1 1 + � 14.14
2−6400�
2 = 0.999
�(1,2) = 1
1 + � �(1,2)∗� �(1,2)2−�02�
2 =
1 1 + � 22.36
5−6400�
2 = 0.999
�(2,0) = 1
1 + � �(2,0)∗� �(2,0)2−�02�
2 =
1 1 + � 20
4−6400�
2 = 0.999
�(2,1) = 1
1 + � �(2,1)∗� �(2,1)2−�02�
2 =
1 1 + � 22.36
5−6400�
2 = 0.999
�(2,2) = 1
1 + � �(2,2)∗� �(2,2)2−�02�
2 =
1 1 + � 28.28
8−6400�
2 = 0.999
maka diperolehlah mask filter butterworth Band Reject Filter sebagai berikut:
1 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
Perhitungan filter mask untuk Gaussian Band Reject Filter
�(0,0) = 1− �−�
(�2(0,0)−�02
�(0,0)� � 2
= 1− �−�
0−6400 0 ∗0 �
2
= 0
�(0,1) = 1− �−�
(�2(0,1)−�02
�(0,1)� �
2
= 1− �−�
1−6400 1 ∗10 �
2
= 1 �(0,2) = 1− �−�
(�2(0,2)−�02
�(0,2)� �
2
= 1− �−�
4−6400 2 ∗10 �
2
= 1
�(1,0) = 1− �−�
(�2(1,0)−�02
�(1,0)� �
2
= 1− �−�
1−6400 1 ∗10 �
2
= 1
�(1,1) = 1− �−�
(�2(1,1)−�02
�(1,1)� �
2
= 1− �−�
2−6400 1.41 ∗10�
2
(35)
�(1,2) = 1− �−�
(�2(1,2)−�02
�(1,2)� �
2
= 1− �−�
5−6400 2.23 ∗10�
2
= 1
�(2,0) = 1− �−�
(�2(2,0)−�02
�(2,0)� �
2
= 1− �−�
4−6400 2 ∗10 �
2
= 1
�(2,1) = 1− �−�
(�2(2,1)−�02
�(2,1)� �
2
= 1− �−�
5−6400 2.23 ∗10�
2
= 1 �(2,2) = 1− �−�
(�2(2,2)−�02
�(2,2)� �
2
= 1− �−�
8−6400 2.82 ∗10�
2
= 1
maka diperolehlah mask filter GaussianBand Reject Filter sebagai berikut:
0 1 1 1 1 1 1 1 1
2.3.3.2.Optimum Notch Filter (ONF)
Optimum Notch Filter sama halnya dengan Notch Reject Filter menolakfrekuensi dalam tetangga yang didefinisikan terhadap pusat frekuensi. Filter notch reject dibuat sebagai hasil filter highpass yang pusatnya telah ditranslasikan ke pusat notch. Format umum Notch Reject Filter bisa dilihat pada formula 2.11:
���(�,�) = ��(�,�)�−�(�,�) ...(2.11)[6]
Di mana Hk(u,v) dan H-k(u,v) adalah filter highpass yang pusatnya pada lokasi(uk, vk).
Q adalah jumlah pasangan notch dalam filter. Komputasi jarak untuk setiap filter dilakukan dengan formula 2.12 dan formula 2.13:
Dk(u,v) =[(u –M/2 – uk)2 + v – N/2 - vk)2]1/2 ... (2.12)[6]
dan
(36)
Gambar 2.9. perspective plot dari (a) Ideal, (b) Butterworth, dan (c) Gaussian Notch Filters [6]
Formula Ideal Notch Reject Filter diperoleh dengan:
���(�,�) =�0 1 ���������(�,�) ≤ �0 ���� �−�(�,�) ≤ �0 ...(2.14)[6]
Formula Butterworth Notch Reject Filterdiperoleh dengan:
���(�,�) = �1+ [���/�1�(�,�)]2�� �
1
1+ [���/�−�(�,�)]2�� ...(2.15)[6]
Formula Gaussian Notch Reject Filter diperoleh dengan:
���(�,�) = �1− �−
��(�,�)2
2 �02 � �1− �−
�−�(�,�)2
2 �02 � ...(2.16)[6]
2.4. Penilaian Kualitas Citra
Hasil evaluasi mengenai kegunaan sejumlah langkah kualitas objektif untuk gambar menggunakan perhitungan numerik dapat digunakan untuk menspesifikasikan besarnya degradasi dalam gambar yang direkonstruksi. Kombinasi dari perhitungan numerik dan grafis terbukti lebih berguna dalam menilai kualitas gambar [1].
Model Human Visual System (HVS) yang digunakan untuk pengukuran kualitas didasarkan pada pengolahan yang lebih rendah urutan dalam system visual yaitu pemodelan fungsi optik, retina, dan korteks striate. Setiap manusia memiliki kemampuan visual yang berbeda-beda dan pandangan yang berbeda terhadap suatu
(37)
objek gambar. Hal ini yang menjadi kelemahan dari penilaian kualitas gambar menggunakan HVS. Untuk itulah penulis menggunakan perhitungan numerik MSE dan PSNR sebagai parameter penilai kualitas citra hasil pemfilteran [14].
2.4.1. Mean Square Error(MSE) dan Peak Signal to Noise Ratio(PSNR)
MSE adalah rata-rata kuadrat nilai kesalahan antara citra asli dengan citra hasil pengolahan yang secara matematis dapat dirumuskan pada formula 2.17:
��� = 1
��∑ ∑�− |(�(�,�)− �(�,�))2|
1
�=0
�−1
�=0 ...(2.17)[12]
Keterangan:
F(x,y): intensitas citra asli
g(x,y): intensitas citra hasil filter
Semakin kecil nilai MSE,maka semakin bagus kualitas citra hasil filter.
PSNR merupakan nilai perbandingan antara harga maksimum warna pada citra hasil filtering dengan kuantitas gangguan(noise) yang dinyatakan dalam satuan decibel(dB), noise yang dimaksud adalah akar rata-rata kuadrat nilai kesalahan
(√���). Secara matematis, nilai PSNR dapat dirumuskan pada formula 2.18:
���� = 20 . log 10 ( 255
√���) ...(2.18) [13]
(38)
BAB III
ANALISIS DAN PERANCANGAN SISTEM
3.1. Analisis Sistem
Analisis sistem pada dasarnya merupakan tahapan yang dilakukan untuk menghasilkan pemahaman yang menyeluruh terhadap kebutuhan sistem sehingga diperoleh tugas-tugas yang akan dikerjakan sistem. Hal ini akan sangat membantu di dalam merancang pemodelan sistem yang akan diimplementasikan.
3.1.1. Analisis Masalah
Masalah utama yang di dalam penelitian ini adalah perbaikan kualitas citra digital yang terkorupsi oleh periodic noise. Dalam sistem ini, citra digital yang akan diperbaiki adalah citra grayscale. Proses filter dilakukan dalam domain frekuensi dengan menghasilkan bilangan kompleks hasil dari transformasi fourier g(u,v).
Citra digital tersebut akan diberikan filter menggunakan Optimum Notch Filter dan Band Reject Filter. Citra digital yang sudah diubah ke dalam domain frekuensi menjadi lebih mudah untuk melakukan proses filter karena proses filter dalam domain frekuensi dilakukan dengan mengalikan tiap nilai intensitas pixel citra digital hasil transformasi fourier g(u,v) dengan nilai intensitas mask filterh(u,v). Hasil perkalian antara g(u,v) dengan h(u,v) kemudian dilakukan invers untuk mendapatkan citra digital yang sudah difilter sehingga diperoleh citra digital yang lebih baik daripada citra sebelum difilter.
(39)
3.1.2. Analisis Persyaratan
Analisis persyaratan sebuah sistem dibagi ke dalam dua kategori besar yaitu: analisis persyaratan fungsional dan analisis persyaratan nonfungsional.
3.1.2.1. Persyaratan Fungsional
Persyaratan fungsional adalah segala sesuatu yang harus dimiliki oleh sistem. Dalam sistem perbaikan citra digital dengan Optimum Notch Filter dan Band Reject Filter ini memiliki persyaratan fungsional yang harus dipenuhi, antara lain:
1. Citra digital yang akan diperbaiki atau yang akan diberikan filter adalah citra digital berformat JPEG dan ukuran citra harus simetris 2n.
2. Citra digital yang di-input-kan akan diubah kedalam citra grayscale untuk mempermudah proses transformasi,
3. Citra digital yang input-kan diubah ke dalam domain frekuensi sebelum
di-filter dengan menggunakan Transformasi Fourier.
4. Metode Filter menggunakan Optimum Notch Filter dan Band Reject Filter 5. Citra digital hasil perbaikan disimpan dalam format JPEG.
3.1.2.2. Persyaratan Non-Fungsional
Persyaratan non-fungsional adalah persyaratan apa yang harus dilakukan sistem. Beberapa persyaratan non-fungsional yang harus dipenuhi oleh sistem yang dirancang adalah sebagai berikut.
1. Performa
Sistem yang akan dibangun harus dapat menunjukkan hasil dari proses filter citra digital.
2. Mudah dipelajari dan digunakan
Sistem yang akan dibangun harus sederhana dan mudah dipelajari oleh pengguna (user).
(40)
Sistem yang akan dibangun dapat menyimpan citra digital hasil dari proses
filter.
4. Kontrol
Sistem yang akan dibangun harus memiliki pesan error jika pengguna tidak lengkap memasukkan nilai inputan atau inputan yang dimasukkan salah.
5. Hemat biaya
Sistem yang akan dibangun tidak memerlukan perangkat tambahan dalam proses eksekusinya.
3.1.2.3. Pemodelan Persyaratan Sistem dengan Use Case
Pada penelitian ini, penulis menggunakan UML untuk memodelkan sistem. Model UML yang digunakan antara lainUse Case Diagram, Activity Diagram, Sequence
Diagram dan Class Diagram [8]. Pemodelan sistem dilakukan untuk mendapatkan
gambaran yang lebih jelas mengenai apa saja objek yang nantinya akan berinteraksi dengan sistem dan hal-hal apa saja yang dilakukan oleh sebuah sistem sehingga sistem yang akan dibangun dapat memenuhi persyaratan fungsionalitasnya.
Perancangan fungsionalitas sistem dimodelkan dengan diagram use case. Aktor yang akan berinteraksi dengan sistem adalah pengguna (user). Sesuai dengan analisis kebutuhan sistem, beberapa hal yang harus dilakukan oleh sistem adalah:
1. Mengontrol dimensi masukan citra digital agar sesuai dengan 2n sebelum diproses dengan n=7.8. dan 9
2. Menghasilkan periodic noise pada halaman pengujian filter dengan tujuan sistem memiliki data citra awal sebelum terkorupsi noise sehingga dapat dibandingkan dengan parameter pembanding MSE, PSNR dan runtime.
3. Menghasilkan bilangan kompleks dari citra digital masukan dengan menggunakan Transformasi Fourier.
4. Menghasilkan mask filter untuk masing-masing Optimum Notch Filter dan
Band Reject Filter.
5. Melakukan proses konvolusi pada citra digital dengan mengalikan bilangan kompleks masukan citra digital dengan mask filter. Hasil perkalian kedua
(41)
matriks citra digital tersebut dilakukan invers Fourier untuk mendapatkan citra digital yang sudah diperbaiki.
Berdasarkan informasi kebutuhan sistem dan aktor yang berperan, berikutini diagram use case yang dirancang sebagai pemodelan persyaratan sistem.
Perangkat lunak perbaikan citra digital dengan menggunakan Optimum Notch Filter dan Band Reject Filter
pengguna
Kontrol Proses Filter Citra Digital
Transformasi Fourier Periodic Noise
Generate
Input Citra Digital «extends»
«uses» «uses»
Generate Mask Filter «uses»
Konvolusi «uses»
Invers Fourier «uses»
Simpan citra digital «uses»
MSE,PSNR,Runtime «extends»
Gambar 3.1 Use Case Diagram Sistem yang akan dikembangkan
Pada gambar 3.1 tampak bahwa seorang pengguna hanya bekerja dengan mengakses
use case kontrol proses Filter citra digital. Pengguna tidak mengetahui proses apa saja
yang dilakukan oleh sistem pada setiap tahapannya. Oleh karena itu proses apa yang akan dieksekusi pada setiap tahapan merupakan tanggung jawab dari sistem.
(42)
membangkitkan proses ini. Proses periodic noise generatemerupakan proses tambahan sistem untuk kebutuhan penelitian dalam membandingkan kualitas citra hasil filter dengan citra asli sebelum diberikan noise oleh sistem. Sedangkan proses MSE, PSNR, dan runtime merupakan proses untuk menghitung nilai objektif kualitas citra digital. Proses input citra digital dan proses simpan citra digital dilakukan oleh pengguna.
Berikut ini merupakan dokumentasi naratif untuk use case kontrol proses filter citra digital.
Tabel 3.1 Dokumentasi Naratif Use Case Kontrol Proses Filter Citra Digital
Nama use case Kontrol Proses filter citra digital Aktor Pengguna
Deskripsi
Use case yang mendeskripsikan proses Filter citra digital
menggunakan Optimum Notch Filter dan Band Reject Filter
Pre-condition Aplikasi dalam keadaan stand-by siap untuk menerima masukan
citra digital
Typcical course of event
Aksi actor Respon sistem Langkah 1: Pengguna
memilih Sub menu Buka
Berkas dari menu Berkas Langkah 2: Sistem menerima masukan citra digital dan memeriksa parameter yang
dibutuhkan.
Langkah 3: Sistem melakukan rangkaian proses yang dilakukan sesuai dengan parameter yang diperoleh
Langkah 5: Pengguna melanjutkan proses selanjutnya
Langkah 4: Sistem memberitahu kepada pengguna bahwa proses telah berhasil dilakukan.
Alternate course Aksi actor Respon sistem
- -
Post condition
Citra digital telah diproses sesuai dengan tahapan dalam proses
(43)
Activity diagram untuk use case kontrol prosesfilter citra digital terlihat sebagai
berikut.
sistem pengguna
mengambil informasi Citra Digital
memanggil modul yang diperlukan mengecek proses yang harus dilakukan
menampilkan citra digital hasil filter
mengkonfirmasi keberhasilan proses menginput citra digital dari sub menu buka berkas
menginputkan citra digital ukuran simetris
Validasi kesesuaian proses
ya Tidak
Gambar 3.2 Activity Diagram Kontrol Proses Filter Citra Digital
Pada dokumen naratif use case serta activity diagram terlihat bahwa kontrol proses dilakukan dengan menjaga setiap langkah tahapan dalam Filter citra digital supaya berlangsung sebagaimana mestinya.
Tabel berikut ini merupakan dokumentasi naratif untuk use case input citra digital.
(44)
Tabel 3.2 Dokumentasi Naratif Use CaseInput Citra Digital
Nama use
case Input Citra Digital
Aktor Pengguna
Deskripsi
Use Case mendeskripsikan fungsi dari input citra digital yang
mengawasi citra masukan sebelum diproses oleh sistem
Pre-Condition Citra digital telah di ubah ukurannya dan siap untuk di masukkan ke dalam sistem
Typical course of
event
Aksi aktor Respon Sistem Langkah 1: Pengguna
meng-input citra digital melalui sub
menu Buka Berkas dari menu Berkas
Langkah 2: Sistem menerima citra digital dan memeriksa ukuran citra digital, apabila memenuhi prasyarat, sistem akan melanjutkan proses berikutnya
Alternate
course Aksi aktor Respon Sistem
- -
Post condition Citra digital siap untuk di-filter.
Pada use caseinput citra digital, citra yang akan dimasukkan adalah citra yang memiliki ukuran dimensi citra digital m x m dimana nilai m merupakan 2n. Apabila terdapat ukuran dimensi citra digital yang tidak sesuai dengan syarat maka sistem memberitahu pengguna agar mengubah ukuran citra digitalnya sebelum dimasukkan ke dalam sistem.
Setelah melewati proses pemeriksaan ukuran dimensi citra digital, sistem kemudian mengkonversi warna citra digital dari RGB menjadi grayscale. Ukuran dimensi citra digital yang simestris sangat penting untuk proses transformasi karena di dalam proses transformasi dilakukan proses shifting yang menuntut kesimestrisan dimensi citra digital.
(45)
sistem pengguna
menerima masukan citra digital
memeriksa kesimestrisan ukuran citra digital
memasukkan kembali citra ukuran simestris
tidak
mengkonversi RGB ke Grayscale
ya
Gambar 3.3 Activity Diagram Input Citra Digital
Tabel berikut ini merupakan dokumentasi naratif untuk use case periodic
noise generate.
Tabel 3.3 Dokumen Naratif untuk use case periodic noise generate
Nama use
case Periodic noise generate
Aktor -
Deskripsi
Use Case mendeskripsikan fungsi penambahan periodic noise
pada citra grayscale
Pre-Condition
Citra yang telah dimasukkan dan diubah ke dalam grayscale siap untuk ditambahkan periodic noise
Typical course of
event
Aksi aktor Respon Sistem
Langkah 1: Sistem menentukan periode dari noise
Langkah 2: Sistem menentukan fade dari noise yang akan ditambahkan ke dalam citra
Alternate cource
Aksi aktor Respon Sistem
- -
(46)
Pada use caseperiodic noise generate merupakan proses perluasan yang ditujukan untuk analisis fungsionalitas kedua filter (Optimum Notch Filter dan Band Reject
Filter). Setelah citra digital konversi ke dalam grayscale, citra tersebut ditambahkan
periodic noise dengan menggunakan kelas Sinu_noise yang merupakan sebuah kelas untuk membangkitkan periodic noise. Parameter yang dibutuhkan kelas ini adalah periode dan fade untuk mengenerate noise. Berikut ini activity diagram untuk use case
periodic noise generate.
sistem pengguna
menerima hasil konversi citra grayscale
memanggil modul pembuatan noise
mengirimkan nilai period dan fade
menerima citra digital dengan noise tertambah
Gambar 3.4 Activity Diagram periodic noise generate
Tabel berikut ini merupakan dokumentasi naratif untuk use case Transformasi
(47)
Tabel 3.4 Dokumentasi Naratif untuk use case Transformasi Fourier
Nama use case Transformasi Fourier
Aktor -
Deskripsi
Use Case yang mendeskripsikan fungsi dari
Tranformasi Fourier sebagai bagian penting didalam
proses filter domain frekuensi.
Pre-Condition Citra grayscale dengan periodic noise siap untuk
ditransformasi.
Typical course of event
Aksi aktor Respon Sistem
Langkah 1: Sistem menerima citra
grayscale yang sudah memiliki periodic noise
Langkah 2: Sistem memanggil modul untuk melakukan proses Transformasi Fourier dengan metode FFT
Langkah 3: Modul mengembalikan hasil transformasi Fourier kepada sistem.
Alternate cource Aksi aktor Respon Sistem
- -
Post condition Citra transformasi fourier dengan bilangan kompleks
yang siap dikonvolusi
Use case Transformasi Fourier merupakan proses untuk mengubah nilai-nilai
intensitas dari tiap pixel citra digital ke dalam transformasi Fourier yang menghasilkan matriks dengan ukuran lebar dan tinggi sama dengan citra digital masukan. Masing-masing nilai intensitas pixel dalam transformasi Fourier merupakan bilangan kompleks yang terdiri atas bilangan real dan bilangan imajiner.
Proses transformasi menggunakan modul FFT2D dengan langkah-langkah transformasi yang telah dijelaskan di dalam Bab dua. Proses FFT2D menghasilkan transformasi dengan cara melakukan transformasi FFT1D terhadap tiap baris pixel citra terlebih dahulu kemudian dilanjutkan dengan tiap kolom pixel dalam citra digital. Berikut ini merupakan activity diagram dari use case Transformasi Fourier.
(48)
sistem pengguna
menerima citra grayscale dengan noise
memanggil modul FFT2D
Modul FFT2D melakukan FFT1D untuk tiap baris pixel
Modul FFT2D melakukan FFT1D untuk tiap kolom pixel
Modul FFT2D mengembalikan matriks berisi bilangan kompleks
Melakukan Shifting untuk menampilkan spektrum fourier
Gambar 3.5 Activity Diagram use case Transformasi Fourier
Tabel berikut adalah Dokumentasi Naratif dari use case Generate Mask Filter.
Tabel 3.5 Dokumentasi Naratif untuk use caseGenerateMaskFilter
Nama use
case Generate Mask Filter
Aktor -
Deskripsi
Use case yang mendeskripsikan proses pembuatan maskfilterOptimum Notch Filter dan Band Reject Filter Pre-condition MaskFilter dan citra digital hasil transformasi Fourier
Typcical course of event
Aksi aktor Respon sistem
Langkah 1: Sistem membuat
matriks untuk menyimpan
maskfilter
Langkah 2: Sistem menghitung nilai mask filter sesuai dengan formula Optimum Notch Filter dan Band Reject Filter
Alternate course
Aksi aktor Respon sistem
- -
(49)
Proses pembuatan maskfilter menggunakan formula dari Optimum Notch dan Band
Reject Filter yang telah dibahas sebelumnya pada bab dua. Berikut ini activity diagram dari use case Generate Mask Filter.
sistem pengguna
ya ya
Ketajaman Filter :Ideal ?
Ketajaman Filter: Butterworth ?
Ketajaman Filter: Gaussian ?
Generate Ideal Mask Filter
Generate Butterworth Mask Filter
Generate Gaussian Mask Filter
ya tidak
tidak
tidak
memanggil modul ONF
Gambar 3.6 Activity Diagram use case Mask Filter Generate Optimum Notch Filter
sistem pengguna
ya ya
Ketajaman Filter :Ideal ?
Ketajaman Filter: Butterworth ?
Ketajaman Filter: Gaussian ?
Generate Ideal Mask Filter
Generate Butterworth Mask Filter
Generate Gaussian Mask Filter
ya tidak
tidak
tidak
(50)
Tabel berikut merupakan dokumentasi naratif dari use case konvolusi.
Tabel 3.6 Dokumentasi Naratif untuk use case Konvolusi
Nama use
case Konvolusi
Aktor -
Deskripsi Use case yang mendeskripsikan proses konvolusi citra digital di dalam domain frekuensi.
Pre-condition MaskFilter dan citra digital hasil transformasi Fourier
Typcical course of
event
Aksi aktor Respon sistem
Langkah 1: Sistem menerima
maskfilter dari modul yang
menghasilkan maskfilter
Langkah 2: Sistem menerima citra digital hasil transformasi Fourier yang diperoleh dari modul Transformasi Fourier
Langkah 3: Sistem mengalikan
nilai tiap-tiap elemen maskfilter dengan bilangan kompleks hasil transformasi fourier
Alternate course
Aksi aktor Respon sistem
- -
Post condition
Citra digital hasil konvolusi maskfilter dengan bilangan kompleks transformasi fourier.
Activity diagram untuk use case konvolusi terlihat sebagai berikut.
sistem pengguna
melakukan shifting pada spektrum fourier
mengalikan nilai elemen mask filter dengan bilangan kompleks
memeriksa semua elemen sudah dikalikan?
ya tidak
(51)
Tabel berikut ini merupakan dokumentasi naratif dari use case Invers Fourier
Tabel 3.7 Dokumen Naratif untuk use case InversFourier
Nama use case Invers Fourier
Aktor -
Deskripsi
Use Case yang mendeskripsikan fungsi invers Fourier
untuk mengembalikan citra spektrum fourier ke bentuk citra aslinya.
Pre-Condition Matriks bilangan kompleks hasil konvolusi
Typical course of event
Aksi aktor Respon Sistem
Langkah 1: Sistem memanggil modul untuk melakukan invers Fourier
Langkah 2: Modul melakukan invers dengan Invers FFT2D
Alternate cource Aksi aktor Respon Sistem
- -
Post condition Citra digital hasil konvolusi yang telah dilakukan
invers Fourier.
Activity diagram untuk use case invers Fourier terlihat sebagai berikut.
sistem pengguna
memanggil modul Invers FFT 2D
Modul mengembalikan citra transformasi ke bentuk asalnya
menampilkan citra hasil invers FFT
Gambar 3.9Activity Diagram untuk use case Invers Fourier
Tabel berikut ini merupakan dokumentasi naratif dari use case MSE, PSNR,
(52)
Tabel 3.8 Dokumen naratif use case MSE, PSNR, Runtime.
Nama use
case MSE,PSNR,Runtime
Aktor -
Deskripsi Use case yang mendeskripsikan prose perhitungan parameter pembanding kualitas citra secara objektif
Pre-condition citra digital grayscale dan citra digital grayscale bernoise
Typcical course of
event
Aksi aktor Respon sistem
Langkah 1: Sistem mengambil
data matriks dari citra grayscale yang tidak terkena noise.
Langkah 2: Sistem memanggil modul untuk menghitung MSE dengan parameter data matriks citra grayscale
Langkah 3: Sistem memanggil modul PSNR dan runtime
Alternate course
Aksi aktor Respon sistem
- -
Post condition
Nilai Objektif setiap filter telah dihitung dan siap dibandingkan.
Activity diagram untuk use case MSE, PSNR, dan runtime terlihat pada gambar
berikut.
sistem pengguna
memeriksa data citra awal dan data citra noise
memanggil modul MSE
memanggil modul PSNR
memanggil rekaman waktu terakhir
(53)
Tabel berikut merupakan dokumentasi naratif dari use case Simpan Citra digital.
Tabel 3.9 Dokumentasi naratif use case Simpan Citra
Nama use
case Simpan Citra Digital Aktor Pengguna
Deskripsi Use Case mendeskripsikan fungsi dari simpan citra digital yang telah di-filter.
Pre-Condition Citra digital yang sudah di-filter.
Typical course of
event
Aksi aktor Respon Sistem
Langkah 1: Pengguna menekan tombol Simpan pada gambar tertentu.
Langkah 2: Sistem melakukan aksi untuk mengambil data citra digital sesuai dengan posisi tombol dan meminta lokasi direktori untuk menyimpan citra digital.
Alternate
course Aksi aktor Respon Sistem
- -
Post condition Proses filter selesai, citra hasil filter sudah disimpan.
Activity diagram untuk use case simpan citra digital terlihat pada gambar
berikut ini.
sistem pengguna
mengambil data citra digital untuk disimpan
meminta lokasi penyimpan kepada user
pengguna menekan tombol Save?
menyimpan citra pada lokasi terpilih true
(54)
3.1.3. Analisis Proses Sistem
Berdasarkan activity diagram dan use case diagram pada sub Bab sebelumnya maka proses yang terjadi di dalam sistem dapat dibagi ke dalam dua proses utama. Proses pertama yang berlangsung pada penerapan filterOptimum Notch dan Filter Band
Reject Filter ini digambarkan di dalam sequence diagram berikut.
Gambar 3.12 Sequence Diagram tahap pertama Filter Citra Digital
Pada tahap pertama Filter Citra Digital proses yang berlangsung secara berurut adalah citra yang di-input dikonversi ke dalam citra grayscale, hasil konversi kemudian ditambahkan periodik noise dengan memberikan nilai untuk period dan fade tertentu sebagai parameter noise.
Implementasi proses konversi ke citra grayscale dituliskan pada pseudocode dibawah ini.
b citrainput grayx null
for y = 0 to b.Height-1 do for x = 0 to b.Width-1 do
grayx[x, y] (b[x,y].R + b[x,y].G + b[x,y].B) /3 endfor
(55)
Pada pseudoce di atas untuk mendapatkan nilai grayscale dari citra RGB dilakukan dengan menjumlahkan nilai R, G dan B dari tiap pixel dan merata-ratakan hasil penjumlahannya. Itulah nilai grayscale untuk dari R, G dan B tersebut. Setelah dikonversi menjadi citra grayscale, proses berikutnya citra tersebut ditambahkan
periodic noise. Proses penambahan noise dilakukan seperti pada pseudocode berikut.
fade0.2 period200
for i = 0 to sourceBitmap.Width – 1 do
for j = 0 to sourceBitmap.Height – 1 do k fade * Sin(j * period);
color sourceBitmap.GetPixel(i, j); resultImage.SetPixel(i, j,
DrawUtils.SuperpositionColor(DrawUtils.GetGrayColor(color), color, k));
endfor endfor
Pseudocode di atas digunakan untuk menambahkan noise pada citra digital.
Penambahan noise disini menggunakan gelombang sinus di mana gelombang sinus merupakan gelombang periodik yang nilainya akan berulang jika mencapai nilai amplitudo maksimum. Pada formula k = fade * Sin(j * period), fade merupakan amplitudo maksimum sedangkan j*period merupakan sudut. Pemberian gelombang periodik dilakukan pada tiap baris nilai intensitas pada citra digital.
Setelah citra grayscale memiliki noise, citra tersebut dikirimkan ke FFT untuk menghasilkan bilangan kompleks dari citra digital tersebut dan hasil dari transformasi
Fourier ditampilkan kepada pengguna. Berdasarkan pembahasan mengenai FFT2D
pada Bab dua, proses FFT2D dimulai dengan melakukan transformasi FFT1D tiap-tiap baris citra kemudian dilanjutkan dengan tiap-tiap-tiap-tiap kolom pada citra. Proses tersebut dijelaskan dalam pseudocode untuk menghitung FFT2D(COMPLEX[,] c, int nx, int ny, int dir)
nn 1
for i = 0 to m-1 do nn *= 2
endfor
i2 nn >> 1; j 0;
(56)
x[i] x[j] y[i] y[j] x[j] tx y[j] ty endif
k i2
while (k <= j) do j j- k k kk >> 1 endwhile
j j + k endfor c1 -1.0
c2 0.0 l2 1
for l = 0 to m-1 do l1 l2 l2 l2 << 1 u1 1.0 u2 0.0
for j = 0 to l1-1 do
for i = j to nn-1, i += l2 do i1 i + l1
t1 u1 * x[i1] - u2 * y[i1] t2 u1 * y[i1] + u2 * x[i1] x[i1] x[i] - t1
y[i1] y[i] - t2 x[i] x[i] + t1 y[i] y[i] + t2 endfor
z u1 * c1 - u2 * c2 u2 u1 * c2 + u2 * c1 u1 z;
endfor
c2 Sqrt((1.0 - c1) / 2.0) if (dir == 1) then
c2 = -c2 endif
c1 Sqrt((1.0 + c1) / 2.0) endfor
if (dir == 1) then
for i = 0 to nn-1 do x[i] x[i] / nn y[i] y[i] / nn endfor
endif
Nilai variabel dir di dalam pseudocodediperoleh dari argument fungsi FFT2D dan juga menjadi penentu apakah suatu proses melakukan transformasi atau invers
(57)
Proses yang berlangsung pada tahap kedua proses filter citra digital digambarkan pada sequence diagram berikut
Gambar 3.13 Sequence Diagram tahap kedua filter Citra digital
Pada tahap kedua filter citra digital setelah dilakukan proses transformasi
Fourier, sistem menghasilkan filter mask sesuai dengan kebutuhan pengguna, apabila
pengguna menekan tombol untuk filterBand Reject maka akan dihasilkan filtermask untuk Band Reject. Apabila pengguna menekan tombol untuk filterOptimum Notch maka akan dihasilkan maskfilter untuk Optimum Notch. Algoritma dari mask filter untuk kedua selectivefilter dituliskan pada pseudocode berikut.
(58)
for u = 0 to x-1 do
D[u, v] Sqrt((u * u) + (v * v)); endfor
endfor
for v = 0 to y-1 do for u = 0 to x-1 do if (tipe == 1)then
if ((D[u, v] < (D0 - (W / 2))) || (D[u, v] > (D0 + (W / 2))))
H[u, v] 1; Else
H[u, v] 0; endif
if (tipe == 2) then
H[u, v] 1 / (1 + Pow((D[u, v] * W) / (Math.Pow(D[u, v], 2) - Math.Pow(D0, 2)), 2 * n));
endif
if (tipe == 3)then
H[u, v] 1 - (Pow(Math.E, -(Math.Pow((Math.Pow(D[u, v], 2) - Math.Pow(D0, 2) / (D[u, v] * W)), 2))));
Endif endfor endfor
Pseudoce Optimum Notch Filter:
D1[x,y] null D2[x,y] null H1[x,y] null H2[x,y] null for v = 0 to y-1 do
for u = 0 to x-1 do
D1[u, v] Sqrt((Pow((u + K[0, 0]), 2)) + (Pow((v + K[0, 1]), 2)));
D2[u, v] Sqrt((Pow((u - K[1, 0]), 2)) + (Pow((v - K[1, 1]), 2)));
Endfor endfor for v = 0 to y-1 do
for u = 0 to x-1 do
if (tipe == 1) then
if ((D1[u, v] <= D0) || D2[u, v] <= D0) H[u, v] = 0; else
H[u, v] = 1; endif
if (tipe == 2) then
H1[u, v] = 1 / (1 + Math.Pow((D0 / D1[u, v]), 2 * n));
H2[u, v] = 1 / (1 + Math.Pow((D0 / D2[u, v]), 2 * n));
H[u, v] = H1[u, v] * H2[u, v]; Endif
if (tipe == 3) then
H1[u, v] = 1 - Math.Pow(Math.E, -((D1[u, v] * D1[u, v]) / (2 * D0 * D0)));
(59)
H[u, v] = H1[u, v] * H2[u, v]; Endif
endfor endfor
Setelah mask filter diperoleh proses berikutnya adalah melakukan konvolusi
mask filter dengan bilangan kompleks citra digital hasil transformasi Fourier. Proses
perkalian ini mengalikan tiap elemen(x,y) pada mask filter dengan bilangan kompleks ( real(x,y) dan imajiner(x,y)). Hasil dari perkalian ini didapatlah citra hasil filter, namun harus dilakukan invers Fourieruntuk mendapatkan citra digital hasil filter. Pseudocode untuk invers Fourier sudah dijelaskan pada tahapn pertama.
Langkah terakhir adalah melakukan perhitungan MSE, PSNR serta Runtime. MSE dan PSNR digunakan sebagai parameter penilaian objektif untuk menentukan citra mana yang lebih baik atau mendekati ke citra aslinya sebelum terkena noise. Algoritma untuk menghitung MSE dan PSNR dapat dituliskan pada pseudocode berikut.
Pseudocode menghitung MSE
total 0
for i = 0 to a.GetLength(1)-1 do
for j = 0 to a.GetLength(1)-1 do
total total + Abs(Pow(a[i, j] - b[i, j], 2)) endfor
endfor
MSE total / Pow(a.GetLength(1), 2)
Pada pseudocode menghitung MSE dilakukan perulangan untuk mendapatkan nilai total dimana total adalah hasil penjumlahan dari kuadrat nilai pixel citra asli a pada titik (i, j) dikurangkan dengan kuadrat nilai pixel citra hasil b pada titik (i, j).
Pseudocode menghitung PSNR
x hitungMSE2(a,b) kali (255) / Sqrt(x) PSNR 20 * Log10(kali)
(1)
public void RemoveFFTShift() {
int i, j;
FFTNormal = new COMPLEX[nx, ny]; for (i = 0; i <= (nx / 2) - 1; i++) for (j = 0; j <= (ny / 2) - 1; j++) {
FFTNormal[i + (nx / 2), j + (ny / 2)] = FFTShifted[i, j];
FFTNormal[i, j] = FFTShifted[i + (nx / 2), j + (ny / 2)];
FFTNormal[i + (nx / 2), j] = FFTShifted[i, j + (ny / 2)];
FFTNormal[i, j + (nx / 2)] = FFTShifted[i + (nx / 2), j];
} return; }
public void FFTPlot(COMPLEX[,] Output) {
int i, j; float max;
FFTLog = new float[nx, ny]; FFTPhaseLog = new float[nx, ny]; FourierMagnitude = new float[nx, ny]; FourierPhase = new float[nx, ny]; FFTNormalized = new int[nx, ny]; FFTPhaseNormalized = new int[nx, ny]; for (i = 0; i <= Width - 1; i++) for (j = 0; j <= Height - 1; j++) {
FourierMagnitude[i, j] = Output[i, j].Magnitude();
FourierPhase[i, j] = Output[i, j].Phase(); FFTLog[i, j] = (float)Math.Log(1 +
FourierMagnitude[i, j]);
FFTPhaseLog[i, j] = (float)Math.Log(1 + Math.Abs(FourierPhase[i, j]));
}
//Generating Magnitude Bitmap max = FFTLog[0, 0];
for (i = 0; i <= Width - 1; i++) for (j = 0; j <= Height - 1; j++) {
if (FFTLog[i, j] > max) max = FFTLog[i, j]; }
for (i = 0; i <= Width - 1; i++) for (j = 0; j <= Height - 1; j++) {
FFTLog[i, j] = FFTLog[i, j] / max; }
(2)
for (i = 0; i <= Width - 1; i++) for (j = 0; j <= Height - 1; j++) {
FFTNormalized[i, j] = (int)(2000 * FFTLog[i, j]); }
//Transferring Image to Fourier Plot
FourierPlot = Displayimage(FFTNormalized); //generating phase Bitmap
FFTPhaseLog[0, 0] = 0; max = FFTPhaseLog[1, 1];
for (i = 0; i <= Width - 1; i++) for (j = 0; j <= Height - 1; j++) {
if (FFTPhaseLog[i, j] > max) max = FFTPhaseLog[i, j]; }
for (i = 0; i <= Width - 1; i++) for (j = 0; j <= Height - 1; j++) {
FFTPhaseLog[i, j] = FFTPhaseLog[i, j] / max; }
for (i = 0; i <= Width - 1; i++) for (j = 0; j <= Height - 1; j++) {
FFTPhaseNormalized[i, j] = (int)(255 * FFTPhaseLog[i, j]);
}
//Transferring Image to Fourier Plot
PhasePlot = Displayimage(FFTPhaseNormalized);
}
public void FFTPlot() {
int i, j; float max;
FFTLog = new float[nx, ny]; FFTPhaseLog = new float[nx, ny]; FourierMagnitude = new float[nx, ny]; FourierPhase = new float[nx, ny]; FFTNormalized = new int[nx, ny]; FFTPhaseNormalized = new int[nx, ny]; for (i = 0; i <= Width - 1; i++) for (j = 0; j <= Height - 1; j++) {
FourierMagnitude[i, j] = Output[i, j].Magnitude();
FourierPhase[i, j] = Output[i, j].Phase(); FFTLog[i, j] = (float)Math.Log(1 +
FourierMagnitude[i, j]);
FFTPhaseLog[i, j] = (float)Math.Log(1 + Math.Abs(FourierPhase[i, j]));
}
//Generating Magnitude Bitmap max = FFTLog[0, 0];
(3)
for (i = 0; i <= Width - 1; i++) for (j = 0; j <= Height - 1; j++) {
if (FFTLog[i, j] > max) max = FFTLog[i, j]; }
for (i = 0; i <= Width - 1; i++) for (j = 0; j <= Height - 1; j++) {
FFTLog[i, j] = FFTLog[i, j] / max; }
for (i = 0; i <= Width - 1; i++) for (j = 0; j <= Height - 1; j++) {
FFTNormalized[i, j] = (int)(1000 * FFTLog[i, j]); }
//Transferring Image to Fourier Plot
FourierPlot = Displayimage(FFTNormalized); //generating phase Bitmap
max = FFTPhaseLog[0, 0];
for (i = 0; i <= Width - 1; i++) for (j = 0; j <= Height - 1; j++) {
if (FFTPhaseLog[i, j] > max) max = FFTPhaseLog[i, j]; }
for (i = 0; i <= Width - 1; i++) for (j = 0; j <= Height - 1; j++) {
FFTPhaseLog[i, j] = FFTPhaseLog[i, j] / max; }
for (i = 0; i <= Width - 1; i++) for (j = 0; j <= Height - 1; j++) {
FFTPhaseNormalized[i, j] = (int)(2000 * FFTLog[i, j]);
}
//Transferring Image to Fourier Plot
PhasePlot = Displayimage(FFTPhaseNormalized);
}
public void InverseFFT() {
//Initializing Fourier Transform Array int i, j;
//Calling Forward Fourier Transform Output = new COMPLEX[nx, ny];
Output = FFT2D(Fourier, nx, ny, -1); Obj = null;
for (i = 0; i <= Width - 1; i++) for (j = 0; j <= Height - 1; j++) {
(4)
}
Obj = Displayimage(GreyImage); return;
}
public void InverseFFT(COMPLEX[,] Fourier) {
//Initializing Fourier Transform Array int i, j;
Output = new COMPLEX[nx, ny];
Output = FFT2D(Fourier, nx, ny, -1); for (i = 0; i <= Width - 1; i++) for (j = 0; j <= Height - 1; j++) {
GreyImage[i, j] = (int)Output[i, j].Magnitude(); }
Obj = Displayimage(GreyImage); return;
}
public COMPLEX[,] FFT2D(COMPLEX[,] c, int nx, int ny, int dir)
{
int i, j;
int m;//Power of 2 for current number of points double[] real;
double[] imag;
COMPLEX[,] output;//=new COMPLEX [nx,ny]; output = c; // Copying Array
// Transform the Rows real = new double[nx]; imag = new double[nx]; for (j = 0; j < ny; j++) {
for (i = 0; i < nx; i++) {
real[i] = c[i, j].real; imag[i] = c[i, j].imag; }
m = (int)Math.Log((double)nx, 2); FFT1D(dir, m, ref real, ref imag); for (i = 0; i < nx; i++)
{
output[i, j].real = real[i]; output[i, j].imag = imag[i]; }
}
// Transform the columns real = new double[ny];
(5)
imag = new double[ny]; for (i = 0; i < nx; i++) {
for (j = 0; j < ny; j++) {
real[j] = output[i, j].real; imag[j] = output[i, j].imag; }
// Calling 1D FFT Function for Columns m = (int)Math.Log((double)ny, 2); FFT1D(dir, m, ref real, ref imag); for (j = 0; j < ny; j++)
{
output[i, j].real = real[j]; output[i, j].imag = imag[j]; }
}
// return(true); return (output); }
private void FFT1D(int dir, int m, ref double[] x, ref double[] y)
{
long nn, i, i1, j, k, i2, l, l1, l2; double c1, c2, tx, ty, t1, t2, u1, u2, z; /* Calculate the number of points */ nn = 1;
for (i = 0; i < m; i++) nn *= 2;
/* Do the bit reversal */ i2 = nn >> 1;
j = 0;
for (i = 0; i < nn - 1; i++) {
if (i < j) {
tx = x[i]; ty = y[i]; x[i] = x[j]; y[i] = y[j]; x[j] = tx; y[j] = ty; }
k = i2;
while (k <= j) {
j -= k; k >>= 1; }
j += k; }
/* Compute the FFT */ c1 = -1.0;
c2 = 0.0; l2 = 1;
(6)
for (l = 0; l < m; l++) {
l1 = l2; l2 <<= 1; u1 = 1.0; u2 = 0.0;
for (j = 0; j < l1; j++) {
for (i = j; i < nn; i += l2) {
i1 = i + l1;
t1 = u1 * x[i1] - u2 * y[i1]; t2 = u1 * y[i1] + u2 * x[i1]; x[i1] = x[i] - t1;
y[i1] = y[i] - t2; x[i] += t1;
y[i] += t2; }
z = u1 * c1 - u2 * c2; u2 = u1 * c2 + u2 * c1; u1 = z;
}
c2 = Math.Sqrt((1.0 - c1) / 2.0); if (dir == 1)
c2 = -c2;
c1 = Math.Sqrt((1.0 + c1) / 2.0); }
/* Scaling for forward transform */ if (dir == 1)
{
for (i = 0; i < nn; i++) {
x[i] /= (double)nn; y[i] /= (double)nn; }
}
return; }
} }