BAB III ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem
Analisis sistem merupakan tahapan yang dilakukan untuk menghasilkan pemahaman yang menyeluruh terhadap kebutuhan sistem sehingga diperoleh tugas-tugas yang
akan dikerjakan sistem. Analisis sistem terdiri dari fase-fase berbeda yang mendeskripsikan pengembangan sistem. Dalam tugas akhir ini, ada tiga fase analisis
yaitu: analisis masalah, analisis persyaratan dan analisis proses. Analisis masalah bertujuan untuk memahami kelayakan masalah. Analisis persyaratan dilakukan untuk
menjelaskan fungsi-fungsi yang ditawarkan dan mampu dikerjakan sistem. Sedangkan analisis proses untuk memodelkan tingkah laku sistem.
3.1.1 Analisis Masalah
Masalah yang akan diselesaikan dengan menggunakan sistem ini adalah perbaikan pada citra digital yang terkena Gaussian Noise, Salt and Pepper Noise, Speckle Noise,
dan Exponential Noise menjadi citra yang lebih bagus dengan melakukan filtering pada citra tersebut. Dalam sistem ini citra yang terkena noise-noise tersebut akan
direduksi dengan menggunakan teknik kombinasi dari Mean Filter dan Median filter.
Untuk mengidentifikasi masalah tersebut digunakan diagram Ishikawa fishbone diagram. Diagram Ishikawa adalah sebuah alat grafis yang digunakan
untuk mengeksplorasi dan menampilkan pendapat tentang komponen inti suatu kondisi di dalam organisasi. Diagram ini juga dapat menyusuri sumber-sumber
penyebab atas suatu masalah. Diagram Ishikawa pada sistem ini dapat dilihat pada gambar 3.1.
Gambar 3.1 Diagram Ishikawa
3.1.2 Analisis Persyaratan
Analisis persyaratan terbagi dua bagian, yaitu persyaratan fungsional dan persyaratan nonfungsional. Persyaratan fungsional mendeskripsikan aktivitas yang disediakan
suatu sistem. Sedangkan Persyaratan nonfungsional mendeskripsikan fitur, karakteristik dan batasan lainnya.
3.1.2.1 Persyaratan Fungsional
Dalam sistem perbaikan citra yang terkena noise pada citra digital dengan metode kombinasi Mean Filter dan Median Fiter ini terdapat beberapa hal yang menjadi
persyaratan fungsional yang harus dipenuhi, antara lain : 1. Citra digital yang digunakan adalah Citra berwarna dan menggunakan
format .BMP dengan ukuran dimensi maksimal 300 x 300 pixel. 2. Noise yang digunakan untuk perbandingan adalah Gaussian Noise, Salt and
Pepper Noise, Speckle Noise dan Exponential Noise, dengan probabilitas noise 1 - 50.
3. Parameter untuk analisis adalah Mean Squared Error MSE, Peak Signal to Noise Rasio PSNR sebelum terkena noise dan setelah mengalami reduksi noise dan
Running Time pada saat reduksi noise.
4. Menggunakan kernel 3x3 dari matriks nilai pixel citra. 5. Aplikasi yang digunakan adalah Matlab R2012b.
3.1.2.2 Persyaratan Nonfungsional
Kebutuhan nonfungsional mencakup karakteristik berikut: 1. Performa
Sistem yang akan dibangun harus dapat menunjukkan hasil dari proses pembangkitan noise pada citra dan proses reduksi noise pada citra digital yang
terkena noise. 2. Mudah dipelajari dan digunakan
Sistem yang akan dibangun memiliki tampilan yang user friendly sehingga pengguna dapat mengakses sistem dengan mudah.
3. Hemat biaya Sistem yang dibangun tidak memerlukan perangkat tambahan ataupun perangkat
pendukung lainnya yang dapat mengeluarkan biaya. 4. Dokumentasi
Sistem yang dibangun dapat menyimpan citra digital yang merupakan hasil reduksi noise dari citra yang memiliki noise dengan format file .bmp.
5. Kontrol Sistem yang akan dibangun memiliki kontrol berupa enable and disable, yaitu
ketika citra belum di-input maka tombol fungsi pada sistem dalam keadaan tidak aktif atau disable, setelah citra di-input, maka tombol fungsi tertentu yang
merupakan bagian dari fungsi generate noise ataupun reduksi noise akan aktif.
3.1.3 Analisis Proses
Dalam sistem ini, teknik filtering yang digunakan untuk mereduksi noise pada citra digital adalah metode kombinasi Mean Filter dan Median Filter. Terdapat 4 jenis
noise yang akan di-generate pada sistem ini diantaranya Gaussian Noise, Salt and Pepper Noise, Speckle Noise, dan Exponential Noise. Pada sistem ini juga terdapat
perbandingan antara metode kombinasi Mean Filter dan Median Filter yang dibandingkan dengan Mean Filter atau Median Filter sebelum dikombinasikan.
Proses Mean Filter mencari nilai rata-rata matriks 3x3 dari nilai pixel citra, kemudian
mengganti nilai pusat pixel dengan nilai rata-rata dari nilai intensitas pixel citra tersebut. Proses Median Filter mencari nilai median matriks 3x3 dari nilai pixel citra,
kemudian mengganti nilai pusat pixel dengan nilai median dari nilai intensitas pixel citra yang telah diurutkan. Proses metode kombinasi Mean Filter dan Median Filter
mencari nilai tengah antara Mean dan Median Filter , kemudian mengganti nilai pusat pixel dengan nilai hasil dari perhitungan tersebut.
1. Use Case Diagram
Use Case Diagram adalah sebuah diagram yang dapat merepresentasikan interaksi yang terjadi antara user dengan sistem. Use Case Diagram mendeskripsikan interaksi
tipikal antara pengguna sistem dengan sistem itu sendiri, dengan member sebuah narasi tentang bagaimana sistem tersebut digunakan. Use Case Diagram dari sistem
yang akan dibangun dapat ditunjukkan pada Gambar 3.2.
Gambar 3.2 Use Case Diagram system
2. Squance Diagram
Squence Diagram merupakan diagram yang menunjukkan bagaimana kelompok- kelompok objek saling berkolaborasi dalam beberapa behavior. Squence diagram
secara khusus, menjabarkan behavior sebuah skenario tunggal. Diagram tersebut menunjukkan sejumlah objek contoh dan pesan-pesan yang melewat objek-objek
tersebut didalam use case [8]. Gambar 3.3 berikut ini merupakan Sequence Diagram tahap pertama dari sistem yang akan dibangun.
Gambar 3.3 Squence Diagram Tahap Pertama
Pada tahap pertama proses yang berlangsung adalah implementasi metode kombinasi Mean Filter dan Median Filter dalam mereduksi Gaussian Noise, Salt and
Pepper Noise, Speckle Noise, dan Exponential Noise. Pada tahap ini, proses pertama yang dilakukan adalah meng-input citra, kemudian men-generate noise pada citra
yang di-inputkan, setelah itu melakukan filtering untuk mereduksi noise pada citra. Setelah hasil reduksi noise pada citra ditampilkan, dihitung nilai MSE dan PSNR lalu
tampilkan.
Pada tahap kedua proses yang berlangsung adalah perbandingan metode kombinasi Mean Filter dan Median Filter dengan Mean Filter atau Median Filter
sebelum dikombinasikan dalam mereduksi Gaussian Noise, Salt and Pepper Noise, Speckle Noise, dan Exponential Noise. Gambar 3.4 berikut ini merupakan Sequence
Diagram tahap kedua dari sistem yang akan dibangun.
Gambar 3.4 Squence Diagram Tahap Kedua
3. Activity Diagram
Activity Diagram adalah teknik untuk menggambarkan logika procedural atau jalur kerja sistem. Diagram ini menggambarkan berbagai alur kerja dalam sistem yang
sedang dirancang, bagaimana masing-masing alur kerja berawal, decision yang mungkin terjadi, dan bagaimana aktifitas atau alur kerja berakhir. Activity Diagram
juga dapat menggambarkan proses paralel yang mungkin terjadi pada beberapa eksekusi. Dalam beberapa hal, diagram ini memainkan peran mirip sebuah diagram
alir. Activity Diagram memungkinkan siapapun yang melakukan proses untuk memilih urutan dalam melakukannya. Dengan kata lain diagram hanya menyebutkan
aturan-aturan rangkaian dasar yang harus diikuti [8]. Gambar 3.5 berikut ini merupakan Activity Diagram dari sistem yang akan dibangun.
Perbandingan Implementasi
Citra Bernoise Citra Tanpa Noise
Input Citra Input Citra
Generate Noise
Filtering Gaussian Noise
Salt and Pepper Speckle Noise
Exponential Noise Tampil Citra
terkena Noise
Mean Filter Median Filter
Kombinasi Mean dan Median Filter
Hitung MSE danPSNR
Hitung MSE danPSNR
Tampil nilai MSE dan PSNR
Tampil nilai MSE dan PSNR
Tampil hasil filtering
Generate Noise
Gaussian Noise Salt and Pepper
Speckle Noise Exponential Noise
Tampil Citra terkena Noise
Hitung MSE danPSNR
Tampil nilai MSE dan PSNR
Tampil hasil filtering
Hitung MSE danPSNR
Tampil nilai MSE dan PSNR
Kombinasi Mean dan Median Filter
I = gaussian I = no gaussian
I = salt pepper I = no salt pepper
I = speckle I = no speckle
I = exponential switch noise
I = no noise I = noise
switch inputan switch noise
I = no gaussian
I = no salt pepper I = no speckle
I = gaussian
I = salt pepper I = speckle
I = exponential
Switch Menu
Gambar 3.5 Activity Diagram
4. Flowchart Sistem
Flowchart merupakan gambar atau bagan yang memperlihatkan urutan dan hubungan antar proses beserta pernyataannya. Gambaran ini dinyatakan dengan simbol. Dengan
demikian setiap simbol menggambarkan proses tertentu. Sedangkan antara proses digambarkan dengan garis penghubung.
Gambar 3.6 berikut ini merupakan Flowchart dari sistem yang akan dibangun.
Input Citra Tanpa Noise
.bmp Generate Gaussian, Salt
Pepper, Speckle, dan Exponential Noise
Citra dengan Noise
Hitung MSE dan PSNR Citra dengan
Noise
Mean Filter Proses Mean Filter
Citra dengan noise
tereduksi Hitung MSE dan
PSNR Citra dengan noise Tereduksi
Selesai Median Filter
Proses Median Filter Kombinasi
Mean dan Median Filter
Proses Kombinasi Mean dan Median Filter
yes
no yes
yes no
Tampilkan nilai MSE dan
PSNR
Tampilkan nilai MSE dan
PSNR Input Citra
Bernoise? Input Citra
Bernoise .bmp
Filtering yes
no no
Pilih Form Perbandingan?
Mulai
Perbandingan Implementasi
Input Citra Tanpa Noise
.bmp Generate Gaussian, Salt
Pepper, Speckle, dan Exponential Noise
Citra dengan Noise
Hitung MSE dan PSNR Citra dengan
Noise Tampilkan
nilai MSE dan PSNR
Proses KombinasiMean dan Median Filter
Citra dengan noise
tereduksi Hitung MSE dan
PSNR Citra dengan noise Tereduksi
Tampilkan nilai MSE dan
PSNR yes
no
Gambar 3.6 Flowchart Sistem
3.2
Pseudocode Program
Pseudocode merupakan algoritma yang diterjemahkan dari bahasa pemrograman yang sulit dimengerti manusia menjadi bahasa yang lebih mudah dimengerti manusia.
Pseudocode bertujuan untuk memudahkan manusia dalam memahami prinsip-prinsip dari suatu algoritma pada bahasa pemrograman. Berikut adalah pseudocode dari
Gaussian Noise, Salt and Pepper Noise, Speckle Noise, Exponential Noise, Mean Filter, Median Filter, kombinasi Mean dengan Median Filter, MSE dan PSNR.
3.2.1 Pseudocode Gaussian Noise
Gaussian Noise merupakan jenis noise yang mengikuti distribusi normal standar dengan rata-rata 0 dan standar deviasi 1. Gaussian Noise dibangkitkan dengan cara
membangkitkan bilangan acak dengan nilai berkisar antara 0 dan 1. Gaussian noise diperoleh dengan menambahkan citra asli dengan rumus pembangkit Gaussian Noise.
Pseudocode Gaussian Noise dapat dilihat pada gambar 3.7.
Gambar 3.7 Pseudocode Gaussian Noise
Keterangan: 1. Menginisialisasi inpu-tan citra dengan nama yang berbeda
2. Menetapkan nilai deviasi yang digunakan untuk men-generate noise 3. Menetapkan nilai mean yang digunakan untuk men-generate noise
4. Membaca matriks pada citra yang di-input-kan 5. Men-generate Gaussian noise
1. citra - citraAsli 2. deviasi - 0.1;
3. mean - 0; 4. citra -im2doublecitra;
5. generate_gaussian - citra + sqrtdeviasirandnsizecitra+mean;
3.2.2 Pseudocode Salt And Pepper Noise
Salt and Pepper Noise
dapat dibangkitkan dengan cara membangkitkan bilangan 255 warna putih dan bilangan 0 warna hitam pada titik-titik yang secara probabilitas lebih
kecil dari nilai probabilitas noise.
Pseudocode Salt and Pepper Noise dapat dilihat pada gambar 3.8.
Gambar 3.8 Pseudocode Salt and Pepper Noise
Keterangan: 1. Menginisialisasi input-an citra dengan nama yang berbeda
2. Menetapkan nilai probabilitas yang digunakan untuk men-generate noise 3. Membaca matriks pada citra yang di-input-kan
4. Menginisialisasi citra yang telah diinisialisasi sebelumnya 5. Membangkitkan bilangan acak pada nilai matriks citra
6. Men-generate noise Pepper berwarna hitam 7. Men-generate noise Salt berwarna Putih
3.2.3 Pseudocode Speckle Noise
Speckle Noise merupakan model noise yang memberikan warna hitam pada titik yang terkena noise. Proses pembangkitan Speckle noise sangat bergantung pada
probabilitas noise dan bilangan acak. Pseudocode Speckle Noise dapat dilihat pada gambar 3.9.
Gambar 3.9 Pseudocode Speckle Noise
1. citra - citraAsli 2. probabilitas - 0.1;
3. citra -im2doublecitra; 4. Generate - citra;
5. bilAcak - randsizecitra; 6. GeneratebilAcak probabilitas2 - 0;
7. GeneratebilAcak = probabilitas2 bilAcak probabilitas - 255;
1. citra - citraAsli 2. probabilitas - 0.1;
3. citra - im2doublecitra; 4. Noise - citra + sqrt12probabilitascitra.randsizecitra-.5;
Keterangan: 1. Menginisialisasi input-an citra dengan nama yang berbeda
2. Menetapkan nilai probabilitas yang digunakan untuk men-generate noise 3. Membaca matriks pada citra yang di-input-kan
4. Men-generate Speckle noise
3.2.4 Pseudocode Exponential Noise
Exponential Noise merupakan noise yang diperoleh dengan menambahkan citra asli dengan rumus pembangkit Speckle noise. Proses pembangkitan Exponential noise
sangat bergantung pada probabilitas noise dan bilangan acak. Pseudocode Exponential Noise dapat dilihat pada gambar 3.10.
Gambar 3.10 Pseudocode Exponential Noise
Keterangan: 1. Menginisialisasi input-an citra dengan nama yang berbeda
2. Menetapkan nilai probabilitas yang digunakan untuk men-generate noise 3. Membaca matriks pada citra yang di-input-kan
4. Men-generate Exponential noise
3.2.5 Pseudocode Mean Filter
Mean Filter adalah nilai intensitas pada beberapa pixel lokal dimana setiap pixel akan digantikan nilainya dengan mean dari nilai intensitas pixel tersebut dengan pixel-pixel
tetangganya. Pseudocode Mean Filter dapat dilihat pada gambar 3.11.
citra - citraAsli probabilitas - 0.1;
citra - im2doublecitra; Noise - citra + -1probabilitaslog1 - randsizecitra;
Gambar 3.11 Pseudocode Mean Filter
Keterangan: 1. Menginisialisasi citra dengan nama yang berbeda
2. Membaca nilai matriks berdasarkan size pixel pada citra 3. Mendeklarasikan matriks kernel dan melakukan perhitungan Mean Filtering
1. pixel - citra_asli; 2. [r, g, b] -size pixel;
3. for
x - 1:1:r for
y - 1:1:g for
z - 1:1:b try
nilaipixel1,1 - pixelx-1,y-1,z; catch
nilaipixel1,1 - 0; end
try nilaipixel1,2 - pixelx-1,y,z;
catch nilaipixel1,2 - 0;
end try
nilaipixel1,3 - pixelx-1,y+1,z; catch
nilaipixel1,3 - 0; end
try nilaipixel2,1 - pixelx,y-1,z;
catch nilaipixel2,1 - 0;
end try
nilaipixel2,2 - pixelx,y,z; catch
nilaipixel2,2 - 0; end
try nilaipixel2,3 - pixelx,y+1,z;
catch nilaipixel2,3 - 0;
end try
nilaipixel3,1 - pixelx+1,y-1,z; catch
nilaipixel3,1 - 0; end
try nilaipixel3,2 - pixelx+1,y,z;
catch nilaipixel3,2 - 0;
end try
nilaipixel3,3 - pixelx+1,y+1,z; catch
nilaipixel3,3 - 0; end
filterx,y,z - meanmeannilaipixel; end
end end
3.2.6 Pseudocode Median Filter
Median Filter adalah nilai intensitas pada beberapa pixel lokal dimana setiap pixel akan digantikan nilainya dengan median dari nilai intensitas pixel tersebut dengan
pixel-pixel tetangganya. Pseudocode Median Filter dapat dilihat pada gambar 3.12.
Gambar 3.12 Pseudocode Median Filter
1. pixel - citra_asli; 2. [r, g, b] -size pixel;
3. for
x - 1:1:r for
y - 1:1:g for
z - 1:1:b try
nilaipixel1,1 - pixelx-1,y-1,z; catch
nilaipixel1,1 - 0; end
try nilaipixel1,2 - pixelx-1,y,z;
catch nilaipixel1,2 - 0;
end try
nilaipixel1,3 - pixelx-1,y+1,z; catch
nilaipixel1,3 - 0; end
try nilaipixel2,1 - pixelx,y-1,z;
catch nilaipixel2,1 - 0;
end try
nilaipixel2,2 - pixelx,y,z; catch
nilaipixel2,2 - 0; end
try nilaipixel2,3 - pixelx,y+1,z;
catch nilaipixel2,3 - 0;
end try
nilaipixel3,1 - pixelx+1,y-1,z; catch
nilaipixel3,1 - 0; end
try nilaipixel3,2 - pixelx+1,y,z;
catch nilaipixel3,2 - 0;
end try
nilaipixel3,3 - pixelx+1,y+1,z; catch
nilaipixel3,3 - 0; end
filterx,y,z - medianmediannilaipixel; end
end end
Keterangan: 1. Menginisialisasi citra dengan nama yang berbeda
2. Membaca nilai matriks pada citra 3. Mendeklarasikan matriks kernel dan melakukan perhitungan Median Filtering
3.2.6 Pseudocode Kombinasi Mean Filter dan Median Filter
Pseudocode Median Filter dapat dilihat pada gambar 3.13.
Gambar 3.13 Pseudocode Kombinasi dari Mean dan Median Filter
pixel - citra_asli; [r, g, b] -size pixel;
for x - 1:1:r
for y - 1:1:g
for z - 1:1:b
try nilaipixel1,1 - pixelx-1,y-1,z;
catch nilaipixel1,1 - 0;
end try
nilaipixel1,2 - pixelx-1,y,z; catch
nilaipixel1,2 - 0; end
try nilaipixel1,3 - pixelx-1,y+1,z;
catch nilaipixel1,3 - 0;
end try
nilaipixel2,1 - pixelx,y-1,z; catch
nilaipixel2,1 - 0; end
try nilaipixel2,2 - pixelx,y,z;
catch nilaipixel2,2 - 0;
end try
nilaipixel2,3 - pixelx,y+1,z; catch
nilaipixel2,3 - 0; end
try nilaipixel3,1 - pixelx+1,y-1,z;
catch nilaipixel3,1 - 0;
end try
nilaipixel3,2 - pixelx+1,y,z; catch
nilaipixel3,2 - 0; end
try nilaipixel3,3 - pixelx+1,y+1,z;
catch nilaipixel3,3 - 0
end mean_filterx,y,z - meanmeannilaipixel;
median_filterx,y,z - medianmediannilaipixel; combine - mean_filter + median_filter2;
end end
end
Keterangan: 1. Menginisialisasi citra dengan nama yang berbeda
2. Membaca nilai matriks berdasarkan size pixel pada citra 3. Mendeklarasikan matriks kernel dan melakukan perhitungan kombinasi Mean
dan Median Filtering
3.2.6 Pseudocode MSE
MSE adalah rata-rata kuadrat nilai kesalahan antara citra asli dengan citra hasil pengolahan. MSE bertujuan untuk mendapatkan selisih nilai antara keduanya, apabila
selisih nilainya kecil maka metode tersebut sangat baik dalam mereduksi noise. Pseudocode MSE dapat dilihat pada gambar 3.14.
Gambar 3.14 Pseudocode MSE
Keterangan: 1. Mendeklarasikan rumus perhitumgan MSE
2. Membaca nilai matriks berdasarkan size pixel pada citra 3. Melakukan perhitungan nilai MSE
3.2.6 Pseudocode PSNR
PSNR merupakan nilai perbandingan antara harga maksimum warna pada citra hasil filtering dengan akar rata-rata kuadrat nilai kesalahan MSE . Pseudocode PSNR
dapat dilihat pada gambar 3.15.
Gambar 3.15 Pseudocode PSNR
1. mse - doublecitra_asli- doublecitra_hasil . 2; 2. [b, k, c] - sizecitra_hasil;
3. Nilai_mse - summse: b k c;
1. mse - doublecitra_asli- doublecitra_hasil . 2; 2. [b, k, c] - sizecitra_hasil;
3. nilai_mse - summse: b k c; 4. psnr - 10 log10 2552 nilai_mse;
Keterangan: 1. Mendeklarasikan rumus perhitumgan MSE
2. Membaca nilai matriks berdasarkan size pixel pada citra 3. Melakukan perhitungan nilai MSE
4. Melakukan perhitungan nilai PSNR
3.3 Perancangan Sistem