KULIAH 4
TEKNIK PENGOLAHAN CITRA
NEIGHBOURHOOD PROCESSING
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.
m (s, t) p (i + s, j + t)
s = 1 t = 2
Ketiga langkah di atas dilakukan untuk semua piksel pada citra input. Diagram
berikut mengilustrasikan proses spatial filtering tsb.
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
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.
170 240
10
80 150
230
50
70 140 160
40
30
90
20
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.
1
9
1
9
1
9
1
9
1
9
1
9
1
9
1 1 1
1 1
= 1 1 1
9 9
1 1 1
1
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.
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
8 15
23
7 14 16
6 13 20 22
10 12 19 21
11 18 25
s=
7.6667
8.5556
6.5556
6.7778
5.8889
8.5556
8.7778
3.8889
f=
11.1111 10.8889 12.8889
11.0000 13.0000 15.0000
13.1111 15.1111 14.8889
f=
1.8889 4.5556
4.6667
3.6667
2.6667
2.5556 1.6667
4.4444 7.6667
8.5556
6.5556
6.7778
5.8889 3.4444
8.5556 3.7778
8.7778
3.8889 1.3333
1.2222 3.2222
4.0000
1.2222 1.0000
6.0000
5.0000
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
averaging filter
2. 'disk'
3. 'gaussian'
4. 'laplacian'
5. 'log'
6. 'motion'
motion filter
7. 'prewitt'
8. 'sobel'
9. 'unsharp'
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.
citra input
citra output
Separable Filter
Secara garis besar, frekuensi dari sebuah citra merupakan ukuran besarnya
perubahan nilai aras keabuan terhadap jarak. Komponen frekuensi tinggi dicirikan
dengan adanya perubahan nilai aras keabuan yang besar pada jarak yang dekat;
contoh komponen frekuensi tinggi adalah tebing (edges) dan derau (noise).
Komponen frekuensi rendah dicirikan dengan perubahan yang kecil pada nilai aras
keabuan, termasuk di dalamnya misalnya latar belakang (background). Dengan
demikian maka,
HPF akan melewatkan komponen frekuensi tinggi dan mengurangi atau
menghilangkan komponen frekuensi rendah.
LPF akan melewatkan komponen frekuensi rendah dan mengurangi atau
menghilangkan komponen frekuensi tinggi.
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);
fI3 = fI/60;
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')
% terskala 1
% terskala 2
citra input
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
f2 =
0.0448 0.0468 0.0564 0.0468 0.0448
0.0468 0.3167 0.7146 0.3167 0.0468
0.0564 0.7146 -4.9048 0.7146 0.0564
0.0468 0.3167 0.7146 0.3167 0.0468
0.0448 0.0468 0.0564 0.0468 0.0448
Contoh
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')
citra input