Implementasi Dan Perbandingan Optimum Notch Filter Dan Band Reject Filter Untuk Mereduksi Periodic Noise Pada Citra Digital

(1)

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.

fade0.2 period200

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; }

} }