NIM : 2210131210018
NAMA : Taufik Raihandani
TUJUAN PRAKTIKUM:
1. Mahasiswa mampu memahami dan menerapkan Image Filtering secara manual.
AKTIVITAS PRAKTIKUM
Berikut adalah data piksel gambar yang akan digunakan:
125 71 69 77 79
168 130 69 54 76
155 162 143 68 47
142 155 155 157 80
130 140 149 161 161
Dari data piksel di atas, lakukan filtering pada data tersebut. Filter yang digunakan yaitu:
- Lowpass Filtering
- Highpass Filtering
-1 -1 -1
-1 8 -1
-1 -1 -1
- Highboost Filtering
0 -1 0
-1 4 -1
0 -1 0
- Bandpass Filtering
0 -1 0
-1 5 -1
0 -1 0
- Median Filtering
- Gaussian Blur
- Gaussian Basic
1 2 1
2 4 2
1 2 1
Buatlah function-function yang akan menerapkan tiap filter tersebut. Function dibuat dari
awal menggunakan perulangan, tanpa menggunakan fungsi filtering bawaan dari Octave.
Source code dibawah ini :
inputGambar = [125 71 69 77 79;
];
2
function [HasilHighPass, HasilLowPass, HasilboundPass,
HasilHighboost, HasilGausian, HasilG_basic, HasilMedian] =
filterGambar(Gambar)
-1 8 -1;
-1 -1 -1];
boundpass = [0 -1 0;
-1 5 -1;
0 -1 0];
highboost = [0 -1 0;
-1 4 -1;
0 -1 0];
Gbasic = [1 2 1;
2 4 2;
[N, M] = size(Gambar);
HasilHighboost = zeros(N,M);
3
HasilGausian = zeros(N,M);
HasilG_basic = zeros(N,M);
for i = 2:N-1
for j = 2:M-1
HasilLowPass(i, j) = round(hasilLowPass);
HasilGausian(i, j) = round(hasilGau);
HasilG_basic(i, j) = min(max(round(hasilG_basic),
0),255) ;
4
#Median Filter
for k = 1 : 8
for l = k + 1 : 9
temp = data(k);
data(k) = data(l);
data(l) = temp;
end
end
end
HasilMedian(i, j) = data(5);
end
end
end
5
disp("Matrix Gambar setelah high-pass filtering:");
disp(HasilHighPass);
disp(HasilLowPass);
disp(HasilboundPass);
disp(HasilHighboost);
disp(HasilGausian);
disp(HasilG_basic)
disp(HasilMedian)
6
Lalu, berikut adalah output tampilan menggunakan disp(variabel) nya di command
window
7
Untuk 3 cara/metode diatas, saya memilih untuk menjadikan padding/nilai tepinya
menjadi 0 (dihitamkan) pada seluruh padding
Pada hasil praktikum, jelaskan algoritma dari kode yang dibuat dan tampilkan
perbandingan tiap hasil filtering!
Berikut adalah algoritma dari kode yang dibuat yang bukan merupakan fungsi dari octave ,
kemudian disusul dengan perbandingan tiap hasil filtering
Filtering yang dimaksud merupakan :
1. Lowpass filtering
Kernel lowpass filtering pada umumnya sebelum pengoperasian / 9:
1 1 1
1 1 1
1 1 1
Hasil data piksel gambar dikalikan dengan kernel lowpass diatas,
kemudian hasilnya dijumlahkan lalu dibagi 9
Contoh sederhana nya :
Data piksel gambar 5x5:
125 71 69 77 79
168 130 69 54 76
125 71 69
168 130 69
8
d. Hasilnya merupakan bilangan desimal 121,3 . Karena
pembulatannya kebawah, maka kita bulatkan menjadi 121
Berikut pembuktiannya pada coding octave
e. Setelah itu, lakukan hal yang sama pada citra dimensi 3x3 bergeser
kekanan
125 71 69 77 79
168 130 69 54 76
71 69 77
130 69 54
162 143 68
(data piksel diatas (3x3) dijumlahkan semua lalu dibagi 9) =843/9 = 93,6 ~=
94
f. Setelah kita dapatkan nilai tersebut, geser lagi untuk mendapatkan
nilai terakhir pada baris pertama
g. Lakukan hal yang sama sedemikian rupa hingga membentuk data
piksel lowpass filtering dengan dimensi 3x3
h. Untuk metode padding yang digunakan adalah menjadikan nilai tepi
menjadi 0 semua seperti sisipan tabel dibawah ini :
0 0 0 0 0
0 121 94 76 0
0 142 121 94 0
0 0 0 0 0
9
Keterangan : Untuk nilai data pikesl 0 di citra / gambar merupakan
berwarna hitam Highpass filtering
(saya harap contoh tadi mewakilkan semua filtering pada
penggunaan padding 0)
2. Highpass filtering
Kernel Highpass filtering
-1 -1 -1
-1 8 -1
-1 -1 -1
Algoritma untuk menghitung secara manual dan sederhana nya adalah
ambil nilai tengah matriks lalu dikalikan dengan 8, contohnya :
Data piksel gambar yang diambil 3x3 dari matriks keseluruhan 5x5:
125 71 69
168 130 69
-1 -1 -1
-1 8 -1
-1 -1 -1
Lanjutan : Hasil dari 130 x 8 adalah 1040, maka kita simpan 1040 menjadi
patokan untuk pengurangan yang lain, berikut lanjutan spesifiknya :
= (1040) - (125+71+69+168+69+155+162+142)
= 1040 - 962
= 78
10
3. Highboost filtering
Kernel Highboost filtering
0 -1 0
-1 4 -1
0 -1 0
Algoritma filtering ini pengoperasiannya kurang lebih sama kerja
manualnya dengan high filtering tadi, namun tentu berbeda pada data piksel
kernel nya. Contohnya :
Data piksel gambar yang diambil 3x3 dari matriks keseluruhan 5x5
125 71 69
168 130 69
0 -1 0
-1 4 -1
0 -1 0
Lanjutan : Pada kernel ini, bedanya dengan highpass filtering tadi, kita
hanya cukup mengoperasikan perkalian pada nilai data kernel yang memiliki nilai
-1 pada kernel high pass (yang berbackground aqua). Begini pengoperasiannya :
= 130 x 4 = 520
= 520 - (71 + 168 + 69 + 162)
= 520 - 470
= 50
11
4. Bandpass filtering
Kernel Bandpass filtering
0 -1 0
-1 5 -1
0 -1 0
Algoritma filtering Bandpass ini umumnya menyerupai sama dengan
highboost filtering tadi , namun disini nilai tengah dimensi 3x3 nya adalah
5. Kalau begini cara pengoperasiannya tetap sama seperti contoh saya
dibawah ini :
125 71 69
168 130 69
0 -1 0
-1 5 -1
0 -1 0
Operasinya sama dengan highpass tadi, jadi kita langsung saja ke
pengoperasiannya
= 130 x 5 = 650
= 650 - (71 + 168 + 69 + 162)
= 650 - 470
= 180
12
5. Median filtering
Untuk algoritma Median filtering ini tidak memiliki kernel atau apapun itu,
untuk mencari nya, kita hanya perlu menggunakan sorting pada
implementasi koding octave, dan secara manualnya kita bisa urutkan
kemudian dapatkan nilai tengah nya. Begini implementasi kodingnya :
manualnya :
125 71 69 77 79
Nilai tengah baris 1 kolom 1 : 69, 69, 71, 125, 130, 143, 155, 162, 168
125 71 69 77 79
168 130 69 54 76 71 69 77
Nilai tengah baris 1 kolom 2 : 54, 68, 69, 69, 71, 77, 130, 143, 162
13
125 71 69 77 79
69 77 79
168 130 69 54 76
69 54 76
155 162 143 68 47
143 68 47
142 155 155 157 80
Nilai tengah baris 1 kolom 3 : 47, 54, 68, 69, 69, 76, 77, 79, 143
125 71 69 77 79
125 71 69 77 79
130 69 54
168 130 69 54 76
162 143 68
155 162 143 68 47
155 155 157
142 155 155 157 80
Nilai tengah baris 2 kolom 2 : 54, 68, 69, 130, 143, 155, 155, 157, 162
14
125 71 69 77 79
69 54 76
168 130 69 54 76
143 68 47
155 162 143 68 47
155 157 80
142 155 155 157 80
Nilai tengah baris 2 kolom 3 : 47, 54, 68, 69, 76, 80, 143, 155, 157
125 71 69 77 79
155 162 143
168 130 69 54 76
142 155 155
155 162 143 68 47
130 140 149
142 155 155 157 80
Nilai tengah baris 3 kolom 1 : 130 140 142 143 149 155 155 155 162
125 71 69 77 79
Nilai tengah baris 3 kolom 2 : 68 140 143 149 155 155 157 161 162
15
125 71 69 77 79
Nilai tengah baris 3 kolom 3 : 47 68 80 143 149 155 157 161 161
Hasil citra dari data piksel dengan median filtering :
0 0 0 0 0
0 130 71 69 0
0 155 143 76 0
0 0 0 0 0
6. Gaussian blur
Kernel Gaussian blur
1/8 8 1/8
125 71 69 77 79
168 130 69 54 76
16
Pengoperasiannya :
125 71 69
168 130 69
= 130 x 1/4 = 32
(Pengoperasian 1/16 terlebih dahulu)
= (125+69+155+143)/16
= 30,75 ~= 31
(Pengoperasian 1/8 )
= (71+168+69+162)/8
= 58,75 ~= 59
Setelah operasi 1/4 , 1/16 dan 1/8 selesai, lalu kita jumlahkan semuanya
menjadi (32 + 31 + 59 ) = 122
Kemudian, operasi gaussian blur ini juga beroperasi kurang lebih sama dengan
gausian basic, gaussian basic malah lebih mudah dan simpel karena bukan bilangan pecahan
17