Anda di halaman 1dari 18

TEKNIK PENGOLAHAN CITRA

Kuliah 4 Neighborhood Processing

Indah Susilawati, S.T., M.Eng.

Program Studi Teknik Elektro


Program Studi Teknik Informatika
Fakultas Teknik dan Ilmu Komputer
Universitas Mercu Buana Yogyakarta
2009

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.

Dan nilai-nilai piksel yang bersesuaian pada citra adalah

Kemudian dikalikan dan dijumlahkan.


1

m (s, t) p (i + s, j + t)

s = 1 t = 2

Dengan demikian dibutuhkan tiga langkah dalam filtering, yaitu:


1. menempatkan mask pada piksel yang akan diproses,
2. mengalikan elemen-elemen pada mask dengan elemen yang bersesuaian
pada piksel-piksel tetangga pada citra,
3. menjumlahkan seluruh hasil perkalian.

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

Hasil yang sama dapat diperoleh dengan

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

60 130 200 220

100 120 190 210

30

110 180 250

90

20

Maka piksel-piksel yang bertetangga pada sudut kanan atas adalah

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

Akan bekerja pada piksel-piksel sbb.

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.

Filtering Menggunakan Matlab

Matlab menyediakan fungsi untuk melakukan linear filtering, yaitu fungsi


filter2.m dengan sintaks
filter2 (filter, image, shape)
Parameter shape bersifat opsional, digunakan untuk mendefinisikan metode atau
pendekatan untuk menangani batas atau tepi citra, yaitu:

filter2 (filter, image, same)


Merupakan default Matlab; menghasilkan matriks yang sama ukurannya
dengan matiks citra input. Digunakan padding dengan nilai nol.

filter2 (filter, image, valid)


Hanya mengaplikasikan filter pada piksel-piksel di dalam citra saja, tidak
mempedulikan piksel-piksel pada batas atau tepi citra. Ukuran citra output
lebih kecil daripada citra input.

filter2 (filter, image, full)


Menghasilkan matriks yang ukurannya lebih besar daripada matiks citra input.
Digunakan padding dengan nilai nol, dan diterapkan pada semua wilayah
dimana masih terdapat overlap antara citra dan filter.

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 = 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

>> v = filter2(a, x, 'valid')

f=
11.1111 10.8889 12.8889
11.0000 13.0000 15.0000
13.1111 15.1111 14.8889

>> f = filter2(a, x, 'full')

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

4.8889 8.7778 11.1111 10.8889 12.8889 10.5556 5.8889


4.1111 6.6667 11.0000 13.0000 15.0000 10.6667 4.5556
2.7778 6.7778 13.1111 15.1111 14.8889

8.5556 3.7778

2.3333 5.6667 10.5556 10.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

Jenis-jenis filter yang dapat dipilih antara lain adalah


1. 'average'

averaging filter

2. 'disk'

circular averaging filter

3. 'gaussian'

Gaussian lowpass filter

4. 'laplacian'

filter approximating the 2-D Laplacian operator

5. 'log'

Laplacian of Gaussian filter

6. 'motion'

motion filter

7. 'prewitt'

Prewitt horizontal edge-emphasizing filter

8. 'sobel'

Sobel horizontal edge-emphasizing filter

9. 'unsharp'

unsharp contrast enhancement filter

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

Filter pe-rerata penting dalam permasalahan-permasalahan di mana aspek citra yang


menjadi perhatian adalah bukan detail citra, misalnya pengamat hanya tertarik pada
berapa jumlah objek yang ada pada citra, atau hanya tertarik pada luas daerah gelap
dan daerah terang pada citra.

Separable Filter

Beberapa filter dapat diimplementasikan sebagai dua filter yang lebih


sederhana secara berurutan.
Misalnya, oleh karena

maka filter pe-rerata 3 x 3 dapat diimplementasikan dengan menerapkan filter 3 x 1,


kemudian diikuti dengan menerapkan filter 1 x 3 pada hasil filtering yang pertama.
Dengan demikian maka dikatakan bahwa filter pe-rerata dapat dibagi (separable)
menjadi dua filter yang lebih kecil. Separabilitas menghasilkan penghematan waktu
pengolahan. Misalkan filter n x n dapat dibagi menjadi 2 filter ukuran n x 1 dan 1 x n.
Penerapan filter n x n membutuhkan sejumlah n2 perkalian dan (n2 1) penjumlahan
untuk setiap piksel citra. Dengan menggunakan filter n x 1, hanya dibutuhkan
sejumlah n perkalian dan (n 1) penjumlahan. Karena dilakukan dua kali, jumlah
total operasi yang dibutuhkan adalah 2n perkalian dan 2(n 1) penjumlahan. Jika n
cukup besar, maka penghematan waktu pengolahan bisa menjadi pertimbangan
tersendiri.
Semua filter pe-rerata merupakan filter yang separable. Filter yang lain yang
separable adalah filter laplacian,

LPF dan HPF

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.

3. Penyekalaan (scaling transformation)


Misalkan nilai aras keabuan hasil filtering berada pada rentang gL gH dengan gL
adalah nilai terendah dan gH adalah nilai tertinggi. Maka semua nilai pada rentang

gL gH tersebut dapat ditransformasikan ke rentang 0 255 menggunakan


transformasi linear sbb.

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

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

>> f2 = fspecial ('log')

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

ouput HPF Laplacian

ouput HPF Log

Anda mungkin juga menyukai