Kuliah 4 Neighborhood Processing PDF
Kuliah 4 Neighborhood Processing PDF
Pada operasi titik, citra dimodifikasi dengan menerapkan suatu fungsi pada
setiap nilai piksel. Neigbourhood processing dapat dipandang sebagai perluasan dari
operasi pengolahan titik, dimana fungsi diterapkan pada sejumlah piksel yang
bertetangga.
Neigbourhood processing dilakukan dengan menggeser sebuah mask (dapat
berbentuk segiempat atau bentuk lain) pada citra yang akan diolah. Dengan demikian
dapat diperoleh citra baru yang piksel-pikselnya dihitung dari nilai piksel-piksel citra
yang berada di bawah mask, lihat gambar berikut.
Kombinasi antara mask dan fungsi disebut filter (tapis). Jika fungsinya linear maka
disebut filter linear.
Sebuah filter linear dapat diimplementasikan dengan mengalikan semua
elemen pada mask dengan elemen-elemen yang bersesuaian pada piksel yang
bertetangga, dan kemudian menjumlahkan hasilnya. Misalnya mask yang
digunakan berbentuk segiempat 3 x 5 piksel sbb.
Dan nilai-nilai piksel yang bersesuaian pada citra adalah
m (s, t) p (i + s, j + t)
s = 1 t = 2
Operasi yang sejenis dengan spatial filtering adalah konvolusi. Metode yang
diterapkan dalam konvolusi sama dengan yang diterapkan dalam spatial filtering,
namun filter diputar 180 terlebih dahulu sebelum proses perkalian dan penjumlahan.
Dengan notasi yang sama dengan yang digunakan sebelumnya, maka output
konvolusi dengan mask 3 x 5 untuk piksel tunggal adalah
1 2
m (-s,-t) p (i + s, j + t)
s = 1 t = 2
m (s, t) p (i s, j t)
s = 1 t = 2
Pada persamaan yang terakhir, piksel citra diputar 180; sehingga diperoleh hasil
yang sama dengan persamaan sebelumnya. Konvolusi menjadi penting dalam
pembahasan transformasi Fourier dan teori konvolusi. Dalam prakteknya, sebagian
besar mask filter adalah simetris terhadap putaran (rotationally symmetric)
sehingga spatial filtering dan konvolusi akan menghasilkan output yang sama.
Contoh
Satu filter linear yang penting adalah dengan menggunakan mask 3 x 3 dan
mengambil rerata dari semua nilai yang tercakup dalam mask. Nilai rerata ini
akan menjadi nilai aras keabuan pada citra output. Operasinya dapat dijelaskan
sbb.
Dimana e adalah nilai piksel pada citra input, dan rerata aras keabuan akan
menjadi piksel citra output pada posisi piksel yang sama.
Misalnya citra yang piksel-pikselnya sbb.
dan reratanya adalah 111,1111 dan dapat dibulatkan menjadi 111. Selanjutnya
piksel-piksel bertetangga yang kedua adalah
dan reratanya adalah 108,8889 dan dapat dibulatkan menjadi 108 atau 109.
Dengan melakukan operasi yang sama untuk seluruh piksel pada citra, maka
diperoleh hasil sbb.
Cara yang mudah untuk menggambarkan filter linear adalah dengan
menggunakan koefisien-koefisien untuk semua nilai aras keabuan piksel dalam
mask. Untuk filter di atas, output filter dapat dinyatakan sbb.
1
(a + b + c + d + e + f + g + h + i)
9
Sehingga filter dapat dinyatakan dengan matriks sbb.
1 1 1
9 9 9 1 1 1
1 1 1
= 1 1 1
1
9 9 9 9
1 1 1 1 1 1
9 9 9
Contoh
Sebuah filter
1 2 1
2 4 2
1 2 1
Batas atau tepi citra (edges of the image) merupakan suatu hal yang harus
diselesaikan dalam operasi filtering, misalnya bagaimana jika sebagian mask
berada di luar citra. Perhatikan gambar berikut.
Pendekatan untuk menyelesaikan hal ini adalah
1. Tidak mempedulikan batas atau tepi citra.
Dalam hal ini, mask hanya diaplikasikan pada piksel-piksel pada citra dimana
seluruh mask berada dalam citra. Pendekatan ini menghasilkan citra output
yang ukurannya lebih kecil daripada citra input. Jika ukuran mask sangat besar,
akan menyebabkan sejumlah besar informasi menjadi hilang. Pada contoh yang
telah dibahas di atas, digunakan pendekatan jenis ini.
2. Tambahkan piksel-piksel dengan nilai 0 (Pad with zeroes)
Dalam pendekatan ini, diasumsikan bahwa semua piksel yang berada di luar citra
mempunyai nilai aras keabuan nol. Pendekatan ini menghasilkan citra output
yang ukurannya sama dengan citra input, namun kadang mempunyai pengaruh
pada batas-batas tepi citra.
Contoh
>> a = ones(3,3)/9
a=
0.1111 0.1111 0.1111
0.1111 0.1111 0.1111
0.1111 0.1111 0.1111
>> x = magic(5)
x=
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> s = filter2(a, x, 'same')
s=
7.6667 8.5556 6.5556 6.7778 5.8889
8.7778 11.1111 10.8889 12.8889 10.5556
6.6667 11.0000 13.0000 15.0000 10.6667
6.7778 13.1111 15.1111 14.8889 8.5556
5.6667 10.5556 10.7778 8.7778 3.8889
Tidak ada pendekatan tunggal yang terbaik dalam hal memilih jenis filter, pemilihan
harus disesuaikan dengan permasalahan yang dihadapi (problem dependent) dan hasil
yang diinginkan.
Filter yang akan digunakan dapat dibuat sendiri atau dapat pula menggunakan
fungsi fspecial.m; yang menyediakan beberapa pilihan filter termasuk diantaranya
filter pe-rerata (average).
Contoh
>> fspecial (average, [5,7])
membuat filter pe-rerata ukuran 5 x 7
>> fspecial (average, 11)
membuat filter pe-rerata ukuran 11 x 11
Contoh
clear all;
clc;
I = imread ('cameraman.tif');
f = fspecial ('average',[5,5]);
If = filter2 (f,I);
subplot (1,2,1), imshow (I)
title ('citra input')
subplot (1,2,2), imshow (mat2gray(If))
title ('citra output')
citra input citra output
Filter pe-rerata akan mengaburkan citra, makin besar ukuran filter maka citra
cenderung makin kabur. Dengan menggunakan filter berukuran besar maka dapat
terlihat jelas pengaruh padding dengan nilai nol di sekelilling tepi atau batas citra.
Perhatikan hasil filtering dengan filter pe-rerata ukuran 15 x 15 berikut.
Separable Filter
Beberapa filter dapat diimplementasikan sebagai dua filter yang lebih
sederhana secara berurutan.
Misalnya, oleh karena
Sebagai contoh, filter pe-rerata adalah LPF karena cenderung membuat citra menjadi
kabur (tebing-tebing citra menjadi hilang atau kabur). Contoh filter HPF adalah
Pada contoh filter HPF di atas, jumlah semua elemen dalam matriks adalah
nol. Hal ini berarti bahwa pada bagian citra yang berfrekuensi rendah (yaitu nilai aras
keabuannya hampir sama) maka hasil filtering akan mendekati nol.
Contoh
Terlihat bahwa hasil filtering mempunyai nilai yang mendekati nol. Untuk menangani
hasil filtering yang nilainya di luar aras keabuan yang ada (yaitu 0 255) dapat
digunakan pendekatan sbb.
1. Membuat nilai negatif menjadi positif.
Pendekatan ini memang menyelesaikan permasalahan adanya nilai negatif pada
hasil filtering tetapi tidak mengatasi masalah jika ada nilai di atas 255. Sehingga
pendekatan ini hanya digunakan dalam keadaan yang khusus saja, misalnya saat
hanya terdapat beberapa nilai negatif saja dan nilai tersebut dekat dengan nol.
2. Memotong nilai (Clip values)
Pendekatan ini menerapkan operasi pengambangan (thresholding) pada nilai aras
keabuan hasil filtering sehingga nilainya berada pada rentang 0 255.
Oleh karena gradien garis linear di atas adalah 255 / (gH gL), maka persamaan
garis transformasi dapat dinyatakan sbb.
Contoh
clear all;
clc;
I = imread ('cameraman.tif');
f = [1 -2 1;-2 4 -2;1 -2 1];
fI = filter2(f, I);
maks = max(fI(:))
mins = min(fI(:))
fI2 = (fI - mins)/(maks - mins); % terskala 1
fI3 = fI/60; % terskala 2
subplot (1,3,1), imshow (I)
title ('citra input')
subplot (1,3,2), imshow (fI2)
title ('ouput HPF terskala 1')
subplot (1,3,3), imshow (fI3)
title ('ouput HPF terskala 2')
citra input ouput HPF terskala 1 ouput HPF terskala 2
HPF atau filter lolos tinggi sangat penting dalam deteksi tebing dan
peningkatan tebing (edge detection and edge enhancement). Tebing-tebing pada citra
dicirikan atau ditandai dengan perubahan yang mencolok (besar) pada nilai aras
keabuannya. Contoh HPF yang lain adalah filter laplacian dan filter log.
Contoh
>> f1 = fspecial ('laplacian')
f1 =
0.1667 0.6667 0.1667
0.6667 -3.3333 0.6667
0.1667 0.6667 0.1667
clear all;
clc;
I = imread ('cameraman.tif');
f1 = fspecial('laplacian');
f2 = fspecial('log');
I1 = filter2(f1,I);
I2 = filter2(f2,I);
%fI/60;
subplot (1,3,1), imshow (I)
title ('citra input')
subplot (1,3,2), imshow (I1/100)
title ('ouput HPF Laplacian')
subplot (1,3,3), imshow (I2/100)
title ('ouput HPF Log')