TEKNIK PENGOLAHAN CITRA Kuliah 2 – Point Processing · PDF fileKULIAH 3 TEKNIK...
Transcript of TEKNIK PENGOLAHAN CITRA Kuliah 2 – Point Processing · PDF fileKULIAH 3 TEKNIK...
TEKNIK PENGOLAHAN CITRA
Kuliah 2 – Point 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 3
TEKNIK PENGOLAHAN CITRA
PENGOLAHAN TITIK (POINT PROCESSING)
Setiap operasi pengolahan citra pada dasarnya adalah alihragam
(transformasi) nilai piksel-piksel yang ada pada citra yang bersangkutan. Operasi ini
dapat dibagi menjadi tiga kelas (dari yang paling rumit hingga yang paling
sederhana), yaitu:
1. Transformasi. Transformasi mengubah nilai piksel menjadi bentuk lain yang
ekivalen. Transformasi biasanya menggunakan algoritma yang efisien dan
powerfull. Misalnya adalah DFT (Discrete Fourier Transform).
2. Neighbourhood processing. Untuk mengubah nilai piksel tertentu maka perlu
diketahui nilai-nilai piksel tetangga (di sekitar piksel yang bersangkutan).
Misalnya adalah operasi penapisan dengan tapis median (median filtering) dengan
jendela 3 x 3 piksel.
3. Operasi titik (Point Operations). Untuk mengubah nilai piksel tertentu maka
tidak perlu diketahui nilai-nilai piksel tetangga (di sekitar piksel yang
bersangkutan).
Operasi titik merupakan operasi yang paling sederhana, namun juga
merupakan operasi pengolahan citra yang paling sering digunakan. Operasi ini
terutama sangat berguna dalam pra-pengolahan cita (image pre-processing), yaitu
proses paling awal dalam pengolahan citra sebelum proses utama dilakukan.
Operasi Aritmatika
Operasi ini dapat dilakukan dengan fungsi sederhana
f(x)y =
pada setiap nilai piksel pada citra, x adalah nilai piksel (input) dan f(x) adalah nilai
piksel output. Operasi ini memetakan nilai piksel dengan domain 0 – 255 pada
kodomain yang sama. Contoh fungsi seperti ini adalah penjumlahan atau
pengurangan nilai piksel dengan suatu konstanta,
Cxy ±=
atau perkalian tiap piksel dengan suatu konstanta,
Cxy =
Yang perlu diperhatikan dalam hal ini adalah hasil f(x) harus merupakan bilangan
bulat dalam jangkauan 0 – 255. Hal ini dapat dilakukan dengan pembulatan hasilnya
(jika perlu) dan kemudian melakukan clipping dengan menentukan,
⎩⎨⎧
<>
=00255255
yjikayjika
y
Berikut adalah contoh hasil penjumlahan dan pengurangan konstanta C = 128 pada
tiap piksel.
y = x + 128 y = x – 128
Dari grafik, dapat disimpulkan secara garis besar bahwa menambahkan dengan suatu
konstanta akan menambah terang citra, dan mengurangkan dengan suatu konstanta
akan menambah gelap citra.
Matlab menyediakan fungsi untuk operasi penjumlahan dan pengurangan
piksel citra, yaitu imadd.m dan imsubtract.m.
Contoh
Untuk melihat perubahan pada citra akibat penambahan nilai setiap piksel
dengan suatu konstanta dapat digunakan m file berikut.
clear all; clc; I = imread('cameraman.tif'); K = imadd(I,50); subplot (1,2,1),imshow (I) title ('citra input') subplot (1,2,2), imshow(K) title ('citra output')
citra input citra output
Contoh
Untuk melihat perubahan pada citra akibat pengurangan nilai setiap piksel
dengan suatu konstanta dapat digunakan m file berikut.
clear all; clc; I = imread('pout.tif'); K = imsubtract(I,75); subplot (2,1,1),imshow (I) title ('citra input') subplot (2,1,2), imshow(K) title ('citra output')
citra input
citra output
Membuat citra menjadi lebih terang atau lebih gelap juga dapat dilakukan
dengan fungsi perkalian dan/atau pembagian. Perhatikan grafik berikut.
Matlab menyediakan fungsi untuk operasi perkalian dan pembagian piksel citra, yaitu
immultiply.m dan imdivide.m.
Contoh clear all; clc; I = imread('pout.tif'); J = immultiply(I,0.5); K = imdivide (I,2); L = immultiply (I,2); subplot (2,2,1),imshow (I) title ('citra input') subplot (2,2,2), imshow(J) title ('citra x 0.5') subplot (2,2,3), imshow(K) title ('citra : 2') subplot (2,2,4), imshow(L) title ('citra x 2')
citra input citra x 0.5
citra : 2 citra x 2
Komplemen
Komplemen dari sebuah citra aras keabuan adalah negatif dari citra tersebut
(photographic negative). Fungsi untuk menghasilkan komplemen sebuah citra aras
keabuan adalah
y = L – x
dengan L adalah aras atau level tertinggi piksel (255) dan x adalah nilai piksel citra
input. Grafik berikut menggambarkan fungsi komplemen sebuah citra aras keabuan.
Matlab menyediakan fungsi untuk menghasilkan komplemen citra, yaitu
imcomplement.m.
Contoh clear all; clc; I = imread('cameraman.tif'); K = imcomplement(I); subplot (1,2,1),imshow (I) title ('citra input') subplot (1,2,2), imshow(K) title ('citra output')
citra input citra output
Efek khusus yang menarik dapat diperoleh dengan melakukan komplemen
sebagian saja, misalnya dengan melakukan komplemen piksel-piksel yang nilainya
kurang atau sama dengan 128 (≤ 128) saja (nilai piksel di atas 128 tidak di-
komplemen-kan). Atau dilakukan sebaliknya. Grafik-grafik berikut menunjukkan
fungsi efek khusus ini. Efek fungsi ini sering disebut solarisasi (solarization).
Histogram Stretching (Contrast Stretching)
Misalkan terdapat sebuah citra memiliki distribusi piksel-piksel sbb.
Nilai Piksel Frekuensi Kemunculan 0 15 1 0 2 0 3 0 4 0 5 70 6 110 7 45 8 70 9 35 10 0 11 0 12 0 13 0 14 0 15 15
Maka histogram citra tersebut dapat digambarkan sbb.
Terlihat bahwa citra tersebut memiliki kontras yang buruk. Kontras citra dapat
diperbaiki dengan cara merentangkan aras keabuannya agar lebih merata, misalnya
dengan menggunakan fungsi linear sebagian-sebagian (piecewise linear function)
pada gambar berikut.
Fungsi pada grafik di atas mempunyai efek merentangkan aras keabuan 5 – 9 ke aras
keabuan 2 – 14 menurut persamaan
25)(i59214j +−
−−
=
Dengan i adalah piksel citra input dan j adalah piksel outputnya. Nilai piksel yang
lain dapat dibiarkan saja (tidak diubah) atau dapat diubah menurut fungsi yang sesuai
dengan grafik di atas. Hasilnya adalah
Piksel Input (i) Piksel Output (j) 5 2 6 5 7 8 8 11 9 14
dan histogram yang dihasilkan setelah transformasi adalah
20
40
60
80
100
120
0 1 2 3 4 5 6 7 8 9 101112131415 j
nj
Yang mengindikasikan bahwa kontras citra menjadi lebih baik (sebaran nilai piksel
lebih merata).
Fungsi dalam Matlab yang digunakan untuk contrast stretching adalah
imadjust.m, menggunakan fungsi yang diperlihatkan pada gambar berikut.
Sintaks yang digunakan adalah
imadjust (im, [a, b], [c, d])
Contoh clear all; clc; I = imread('pout.tif'); K = imadjust(I,[0.25 0.5],[0.1 0.8]); subplot (2,2,1),imshow (I) title ('citra input') subplot (2,2,2), imshow(K) title ('citra output') subplot (2,2,3), imhist(I) subplot (2,2,4), imhist(K)
citra input citra output
0 100 200
0
500
1000
1500
0 100 200
0
1000
2000
3000
Fungsi imadjust.m memberikan opsi parameter gamma yang mendefinisikan
bentuk fungsi di antara koordinat (a,c) dan (b,d). Jika gamma = 1 (default setting)
maka digunakan pemetaan linear seperti grafik sebelumnya. Jika nilai gamma kurang
dari 1 maka dihasilkan fungsi konkaf ke bawah dan jika nilai gamma lebih dari 1
maka dihasilkan fungsi konkaf ke atas seperti gambar berikut.
Fungsi yang digunakan adalah sebagai berikut.
cc)(dabaxy +−⎟⎠⎞
⎜⎝⎛
−−
=
Contoh
clear all; clc; I = imread('pout.tif'); K = imadjust(I,[0.25 0.5],[0.1 0.8]); L = imadjust(I,[0.25 0.5],[0.1 0.8],0.5); subplot (2,3,1),imshow (I) title ('citra input') subplot (2,3,2), imshow(K) title ('citra output gamma = 1') subplot (2,3,3), imshow(L) title ('citra output gamma = 0.5') subplot (2,3,4), imhist(I) subplot (2,3,5), imhist(K) subplot (2,3,6), imhist(L)
citra input citra output gamma = 1 citra output gamma = 0.5
0 100 200
0
500
1000
1500
0 100 200
0
1000
2000
3000
0 100 200
0
1000
2000
3000
Ekualisasi Histogram (Histogram Equalization)
Histogram stretching memerlukan input dari pengguna (nilai a, b, c, dan d,
serta gamma). Prosedur yang kadang lebih cocok adalah ekualisasi histogram yang
merupakan prosedur yang otomatis secara keseluruhan. Caranya adalah dengan
mengubah histogram citra histogram yang seragam atau uniform; yaitu bahwa setiap
batang pada histogram mempunyai tinggi yang sama, atau dengan kata lain bahwa
setiap aras keabuan pada citra memiliki frekuensi kemunculan yang sama. Dalam
prakteknya hal ini tidak mungkin, namun hasil operasi ekualisasi histogram
menunjukkan hasil yang sangat baik.
Misalkan sebuah citra mempunyai L aras keabuan yaitu 0, 1, 2, 3, ..., L - 1 dan
setiap aras keabuan i muncul sebanyak ni kali. Jika jumlah piksel dalam citra adalah n
(sehingga n0 + n1 + n2 + ... + nL-1 = n), maka untuk mentransformasikan aras keabuan
citra menjadi citra dengan kontras yang lebih baik, aras keabuan citra i diubah
menjadi
1)(Ln
n...nn i10 −⎟⎠
⎞⎜⎝
⎛ +++
dan kemudian dibulatkan ke nilai yang terdekat. Misalkan sebuah citra dengan
kontras yang kurang bagus ditunjukkan dengan histgram berikut. Citra mempunyai
16 aras keabuan (0 – 15).
Distribusi frekuensi kemunculan setiap aras keabuan i ditunjukkan pada tabel berikut.
Dari histogramnya diketahui bahwa citra cenderung terang. Untuk ekualisasi
histogram digunakan rumusan di atas, dan hasilnya adalah sbb.
Maka dapat diperoleh
Dengan distribusi awal sbb
Maka distribusi aras keabuan setelah proses ekualisasi histogram adalah
j 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
nj 0 15 0 0 70 0 0 0 110 0 45 0 0 80 0 40
Dan histogramnya dapat digambarkan sbb.
Matlab menyediakan fungsi untuk ekualisasi histogram yaitu histeq.m.
Contoh
clear all; clc; I = imread ('pout.tif'); K = histeq (I); subplot (2,2,1),imshow (I) title ('citra input') subplot (2,2,2), imhist(I) title ('histogram citra input') subplot (2,2,3), imshow(K) title ('citra output') subplot (2,2,4), imhist (K) title ('histogram citra output')
citra input
0 100 200
0
500
1000
1500
histogram citra input
citra output
0 100 200
0
500
1000
1500
histogram citra output