for(i=0;i<=N-1;i++)
for(j=0;j<=M-1;j++)
Image[i][j]+=b;
}
Sebagai contoh, Gambar 7.1(a) adalah citra Zelda (beserta histogramnya) yang tampak
gelap, sedangkan Gambar 7.1(b) adalah citra Zelda (beserta histogramnya) yang
lebih terang (nilai b = 80). Perhatikan histogramnya. Sebelum operasi
penambahan kecerahan, histogramnya menumpuk di bagian kiri. Setelah
penambahan kecerahan, histogramnya bergeser ke bagian kanan.
Gambar 7.1. Citra Zelda; Atas: sebelum operasi penambahan kecerahan terlihat agak gelap; Bawah:
Zelda setelah operasi penambahan kecerahan dengan b = 80.
Citra kontras-tinggi, seperti halnya citra kontras bagus, memiliki jangkauan nilai
keabuan yang lebar, tetapi terdapat area yang lebar yang didominasi oleh warna
gelap dan area yang lebar yang didominasi oleh warna terang. Gambar dengan
langit terang denganlatar depan yang gelap adalah contoh citra kontras-tinggi.
Pada histogramnya terlihat dua puncak, satu pada area nilai keabuan yang rendah
dan satu lagi pada area nilai keabuan yang tinggi.
Gambar 7.2 memperlihatkan tiga buah citra Lena yang masing-masing memiliki
kontras-rendah, kontras-tinggi, dan kontras-bagus. Ketiga histogram ini
dihasilkan dengan program Adobe Photoshop.
r − rmax
s= × 255 (7.4)
rmin − rmax
yang dalam hal ini, r adalah nilai keabuan dalam citra semula, s adalah nilai
keabuan yang baru, rmin adalah nilai keabuan terendah dari kelompok pixel,
dan rmax adalah nilai keabuan tertinggi dari kelompok pixel (Gambar 7.3).
rmax
0 s
Kedua macam pengubahan histogram citra ini dibahas lebih rinci di dalam
upabab 7.5 dan 7.6 di bawah ini.
Agar kita memperoleh citra yang baik, maka penyebaran nilai intensitas harus
diubah. Teknik yang lazim dipakai adalah perataan histogram (histogram
equalization). Tujuan dari perataan histogram adalah untuk memperoleh
penyebaran histogram yang merata, sedemikian sehingga setiap derajat keabuan
memiliki jumlah pixel yang relatif sama.
yang artinya, derajat keabuan (k) dinormalkan terhadap derajat keabuan terbesar
(L – 1). Nilai rk = 0 menyatakan hitam, dan rk = 1 menyatakan putih dalam skala
keabuan yang didefinisikan.
k rk
0 0/7 = 0
1 1/7
2 2/7
3 3/7
4 4/7
5 5/7
6 6/7
7 7/7 = 1
r = T −1 ( s ) , 0 ≤s≤1 (7.7)
sk = T(rk)
r
0 rk 1
∫
s = T ( r ) = Pr ( w) dw
0
, 0 ≤r≤1 (7.8)
k rk nk Pr(rk ) = nk /n
0 0/7 = 0.00 790 0.19
1 1/7 = 0.14 1023 0.25
2 2/7 = 0.29 850 0.21
3 3/7 = 0.43 656 0.16
4 4/7 = 0.57 329 0.08
5 5/7 = 0.71 245 0.06
6 6/7 = 0.86 122 0.03
7 7/7 = 1.00 81 0.02
0.25
0.20
0.15
0.10
0.05
rk
0 1/7 3/7 5/7 1
Gambar 7. 5. Histogram citra sebelum perataan
Karena pada citra ini hanya ada 8 nilai intensitas, maka nilai-nilai sk harus
dibulatkan ke nilai-nilai r yang terdekat:
s0 = 0.19 lebih dekat ke nilai 1/7 ( = 0.14), maka s0 = 1/7
s1 = 0.44 lebih dekat ke nilai 3/7 ( = 0.43), maka s1 = 3/7
s2 = 0.65 lebih dekat ke nilai 5/7 ( = 0.71), maka s2 = 5/7
s3 = 0.81 lebih dekat ke nilai 6/7 ( = 0.86), maka s3 = 6/7
s4 = 0.89 lebih dekat ke nilai 6/7 ( = 0.86), maka s4 = 6/7
s5 = 0.95 lebih dekat ke nilai 7/7 ( = 1.00), maka s5 = 7/7
s6 = 0.98 lebih dekat ke nilai 7/7 ( = 1.00), maka s6 = 7/7
s7 = 1.00 lebih dekat ke nilai 7/7 ( = 1.00), maka s7 = 7/7
Hasil transformasinya :
k rk sk
0 0 1/7
1 1/7 3/7
2 2/7 5/7
3 3/7 6/7
4 4/7 6/7
5 5/7 1
6 6/7 1
7 1 1
Terlihat dari contoh di atas hanya lima nilai intensitas yang terisi (1/7, 3/7, 5/7,
6/7, dan 1).
sk nk Ps(sk) = nk/n
1/7 790 0.19
3/7 1023 0.25
5/7 850 0.21
6/7 656 + 329 = 958 0.23
7/7 245 + 122 + 81 = 448 0.11
0.30
0.25
0.20
0.15
0.10
0.05
sk
0 1/7 3/7 5/7 1
Gambar 7.5. Histogram citra hasil perataan
Gambar 7.6 memperlihatkan perataan histogram pada citra anjing collie. Pada
mulanya citra collie terlihat terlalu gelap. Histogramnya menumpuk pada daerah
derajat keabuan bagian kiri. Dengan teknik perataan histogram, citra anjing collie
terlihat lebih bagus. Hal ini dapat dilihat juga pada histogramnya yang tersebar
merata di seluruh daerah derajat keabuan.
Agar hasil perataan benar-benar seragam sebarannya, maka citra yang diolah
haruslah dalam bentuk malar (continue), yang dalam praktek ini jelas tidak
mungkin.
(a) Kiri: citra anjing collie yang terlalu gelap; Kanan: histogramnya
(b) Kiri: citra anjing collie setelah perataan histogram; kanan: histogramnya
Dasar teorinya adalah sebagai berikut: misalkan Pr(r) dan Pz(z) masing-masing
adalah histogram citra semula dan histogram yang diinginkan. Fungsi transformasi T
mula-mula memetakan intensitas citra semula menjadi histogram yang seragam
dengan cara perataan histogram,
∫
s = T ( r ) = Pr ( w) dw
0
∫
v = G ( z ) = Pz ( w) dw
0
(7.10)
z = G −1 ( v ) (7.11)
z ≈ G −1 ( s ) (7.12)
maka kita dapat memperoleh nilai intensitas yang diinginkan. Hasil yang
diperoleh merupakan hampiran karena kita mencoba menemukan nilai s yang
transformasinya mendekati nilai z.
∫
s = T ( r ) = Pr ( w) dw
0
∫
v = G ( z ) = Pz ( w) dw
0
k k
nj
v k = G ( zk ) = ∑ n ∑ P (z )= z j
j =0 j =0
Dengan kata lain, histogram nilai-nilai intensitas pada citra semula dipetakan
menjadi intensitas z pada citra yang diinginkan dengan fungsi
z = G-1[T(r)]
rj → sk nk Ps(sk) = nk/n
r0 → s0 = 1/7 790 0.19
r1 → s1 = 3/7 1023 0.25
r2 → s2 = 5/7 850 0.21
r3, r4 → s3 = 6/7 656 + 329 = 958 0.23
r5, r6, r7 → s4 = 7/7 245 + 122 + 81 = 448 0.11
Penyebaran pixel:
Karena r0 = 0 dipetakan ke z3 = 3/7, maka terdapat 790 pixel hasil transformasi
yang memiliki nilai intensitas 3/7.
Karena r1 = 1/7 dipetakan ke z4 = 4/7, maka terdapat 1023 pixel hasil transformasi
yang memiliki nilai intensitas 4/7.
Karena r2 = 2/7 dipetakan ke z5 = 5/7, maka terdapat 850 pixel hasil transformasi
yang memiliki nilai intensitas 5/7.
Karena r3 = 3/7 dan r4 = 4/7 dipetakan ke z6 = 6/7, terdapat 245 + 122 + 81 = 448
pixel hasil transformasi yang memiliki nilai intensitas 1.
zk nk Pz(zk) = nk/n
0 0 0.00
1/7 0 0.00
2/7 0 0.00
3/7 790 0.19
4/7 1023 0.25
5/7 850 0.21
6/7 985 0.24
1 448 0.11
0.30
0.25
0.20
0.15
0.10
0.05
zk
0 1/7 3/7 5/7 1
Seperti yang sudah disebutkan sebelum ini, histogram yang diperoleh merupakan
hampiran dari histogram yang dispesifikasikan karena kita mencoba menemukan
nilai s yang transformasinya mendekati nilai z.
Gangguan pada citra umumnya berupa variasi intensitas suatu pixel yang tidak
berkorelasi dengan pixel-pixel tetangganya. Secara visual, gangguan mudah
dilihat oleh mata karena tampak berbeda dengan pixel tetangganya. Gambar 7.9
adalah citra Lena yang mengalami gangguan berupa spike atau speckle yang
tampil pada gambar dalam bentuk bercak putih atau hitam seperti beras.
Operasi pelembutan dapat dilakukan pada ranah spsial maupun pada ranah
frekuensi. Pada ranah spasial, operasi pelembutan dilakukan dengan mengganti
intensitas suatu pixel dengan rata-rata dari nilai pixel tersebut dengan nilai pixel-
pixel tetangganya. Jadi, diberikan citra f(x,y) yang berukuran N × M. Citra hasil
pelembutan, g(x,y), didefinisikan sebagai berikut:
m2 n2
∑∑ f (x + r, y + s)
1
g( x, y ) = (7.13)
d r = m1 s = n1
yang dalam hal ini d adalah jumlah pixel yang terlibat dalam perhitungan rata-
rata. Gambar 7.10 memperlihatkan dua buah skema perata-rataan [GON77]. Pada
skema pertama, tetangga sebuah pixel adalah pixel-pixel yang berjarak ∆x,
sedangkan pada skema kedua tetangga sebuah pixel adalah pixel-pixel yang
berjarak paling jauh √2 ∆x.
Operasi perata-rataan di atas dapat dipandang sebagai konvolusi antara citra f(x,y)
dengan penapis h(x,y):
g(x,y) = f(x,y) ∗ h(x,y) (7.14)
Penapis h disebut penapis rerata (mean filter). Dalam ranah frekuensi, operasi
konvolusi tersebut adalah
G(u,v) = F(u,v)H(u,v) (7.15)
+ +
radius = ∆x
(a)
Tetangga pixel +
+ +
radius = √2 ∆x
(b)
Contoh penapis rerata yang berukuran 3 × 3 dan 2 × 2 adalah seperti di bawah ini
(elemen yang bertanda • menyatakan posisi (0, 0) dari pixel yan dikonvolusi)):
1 / 9 1 / 9 1 / 9
• 1 / 4 1 / 4
(i) 1 / 9 • 1 / 9 1 / 9
(ii)
1 / 4 1 / 4
1 / 9 1 / 9 1 / 9
Efek pengaburan yang dihasilkan dari penapis rata-rata dapat dikurangi dengan
prosedur pengambangan berikut:
1 m2 n2
1 m2 n2
g( x, y ) = d ∑∑
r =m1 s= n1
f ( x + r, y + s ) jika f ( x, y ) − ∑∑
d r=m1 s=n1
f ( x + r, y + s )
>T
f ( x, y ),
lainnya
(7.16)
Gambar 7. 11. Citra Lena yang sudah dilembutkan dengan penapis rerata 3 × 3
Penapis Lolos-Rendah
Penapis rata-rata adalah salah satu penapis lolos-rendah yang paling sederhana.
Aturan untuk penapis lolos-rendah adalah [GAL95]:
1. Semua koefisien penapis harus positif
2. Jumlah semua koefisien harus sama dengan 1
Jika jumlah semua koefisien lebih besar dari 1, maka konvolusi menghasilkan
penguatan (tidak diinginkan). Jika jumlah semua koefisien kurang dari 1, maka
yang dihasilkan adalah penurunan, dan nilai mutlak setiap pixel di seluruh bagian
citra berkurang. Akibatnya, citra hasil pelembutan tampak lebih gelap.
8 8 8 8 8 8 8 8
8 17 8 8 8 9 9 8
8 8 8 8 8 8 8 8
(i) sebelum konvolusi (ii) setelah konvolusi
Selain dengan penapis rata-rata, penapis lolos-rendah lain yang dapat digunakan
pada operasi pelembutan adalah:
1 / 16 1 / 8 1 / 16 1 / 10 1 / 10 1 / 10 1 / 16 1 / 8 1 / 16
(i) 1 / 8 1 / 4 1 / 8 (ii) 1 / 10 1 / 5 1 / 10 (iii) 1 / 8 1 / 4 1 / 8
1 / 16 1 / 8 1 / 16 1 / 10 1 / 10 1 / 10 1 / 16 1 / 8 1 / 16
Penapis Median
Penapis nirlanjar yang akan dijelaskan adalah penapis median. Penapis ini
dikembangkan oleh Tukey. Pada penapis median, suatu “jendela” (window)
memuat sejumlah pixel (ganjil). Jendela digeser titik demi titik pada seluruh
daerah citra. Pada setiap pergeseran dibuat jendela baru. Titik tengah dari jendela
ini diubah dengan nilai median dari jendela tersebut.
Sebagai contoh, tinjau jendela berupa kelompok pixel (berbentuk kotak diarsir)
pada sebuah citra pada Gambar 7.12(a). Pixel yang sedang diproses adalah yang
mempunyai intensitas 35. Urutkan pixel-pixel tersebut:
9 10 10 10 10 10 11 12 35
Median dari kelompok tersebut adalah 10 (dicetak tebal). Titik tengah dari
jendela (35) sekarang diganti dengan nilai median (10). Hasil dari penapis median
diperlihatkan pada Gambar 7.12(b). Jadi, penapis median menghilangkan nilai
pixel yang sangat berbeda dengan pixel tetangganya.
(a) Pixel bernilai 35 terkena derau (b) 35 diganti dengan median dari
kelompok 3 × 3 pixel
Dari kedua contoh penapis (penapis rerata dan penapis median), dapat dilihat
bahwa penapis median memberikan hasil yang lebih baik dibandingkan penapis
rerata untuk citra yang mengalami gangguan dalam bentuk spike berupa bercak-
bercak putih.
Karena penajaman citra lebih berpengaruh pada tepi (edge) objek, maka
penajaman citra sering disebut juga penajaman tepi (edge sharpening) atau
peningkatan kualitas tepi (edge enhancement). Gambar 7.14 adalah citra Lena
setelah ditajamkan gambarnya.
(a) (b)
Gambar 7.14 (a) Citra Lena semula, (b) Citra Lena setelah penajaman
Penapis Lolos-Tinggi
Aturan penapis lolos-tinggi [GAL95]:
1. koefisien penapis boleh positif, negatif, atau nol
2. jumlah semua koefisien adalah 0 atau 1
− 1 − 1 − 1 − 1 − 1 − 1 0 −1 0
(i) − 1 8 − 1
(ii) − 1 9 − 1
(iii) − 1 5 − 1
− 1 − 1 − 1 − 1 − 1 − 1 0 − 1 0
∑= 0 ∑=1 ∑=1
1 −2 1 1 −2 1 0 1 0
(iv) − 2 5 − 2
(v) − 2 4 − 2
(vi) 1 − 4 1
1 − 2 1 1 − 2 1 0 1 0
∑= 1 ∑=0 ∑=0
Nilai koefisien yang besar di titik pusat penapis memainkan peranan kunci dalam
proses konvolusi. Pada komponen citra dengan frekuensi tinggi (yang berarti
perubahan yang besar pada nilai intensitasnya), nilai tengah ini dikalikan dengan
nilai pixel yang dihitung. Koefisien negatif yang lebih kecil di sekitar titik
tengah penapis bekerja untuk mengurangi faktor pembobotan yang besar. Efek
nettonya adalah, pixel-pixel yang bernilai besar diperkuat, sedangkan area citra
dengan intensitas pixel konstan tidak berubah nilanya.
4 4 4 4 4 4 4 4 4 4 8 8 8 8
4 4 4 4 4 4 4 4 4 4 8 8 8 8
4 4 4 4 4 4 4 4 4 4 8 8 8 8
4 4 4 4 4 4 4 4 4 4 8 8 8 8
4 4 4 4 4 4 4 4 4 4 8 8 8 8
8 8
4 4
x x
0 0
Hasil konvolusi dengan penapis (i): Hasil konvolusi dengan penapis (i):
x x x x x x x x x x x x x x
x 0 0 0 0 0 x x 0 − 12 + 12 0 0 x
x 0 0 0 0 0 x x 0 − 12 + 12 0 0 x
x 0 0 0 0 0 x x 0 − 12 + 12 0 0 x
x x x x x x x x x x x x x x
Hasil konvolusi dengan penapis (ii) : Hasil konvolusi dengan penapis (ii):
x x x x x x x x x x x x x x
x 4 4 4 4 4 x x 4 − 8 + 20 8 8 x
x 4 4 4 4 4 x x 4 − 8 + 20 8 8 x
x 4 4 4 4 4 x x 4 − 8 + 20 8 8 x
x x x x x x x x x x x x x x
(a) (b)
Gambar 7. 15 Hasil konvolusi dengan penapis lolos-tinggi: (a) citra yang tidak memiliki pixel tepi, (b)
citra yang mengandung pixel-pixel tepi
(a) (b)
(c) (d)
Gambar 7. 16 (a) citra girl sebelum penajaman; (b), (c), dan (d) masing-masing adalah hasil
penajaman dengan penapis lolos-tinggi (ii), (iii), dan (iv)
Gambar 7.17 kiri adalah citra kota San Fransisco yang condong (skew) ke kanan.
Rotasi sejauh 6° berlawanan arah jarum jam menghasilkan perbaikan yang
ditunjukkan pada Gambar 8.11 kanan.
(a) (b)
Gambar 7. 17 (a) Citra San Fransisco yang condong ke kanan; (b) Hasil rotasi sejauh 6° berlawanan
arah jarum jam.
P dengan kualitas yang lebih baik dibandingkan dengan citra semula. Langkah
selanjutnya dalam pengolahan citra adalah analisis citra (image analysis).
Analisis citra bertujuan mengidentifikasi parameter-parameter yang diasosiasikan
dengan ciri (feature) dari objek di dalam citra, untuk selanjutnya parameter
tersebut digunakan dalam menginterpretasi citra. Analisis citra pada dasarnya
terdiri dari tiga tahapan: ekstrakasi ciri (feature extraction), segmentasi, dan
klasifikasi.
perubahan intensitas
α α = arah tepi
Perhatikan Gambar 8.2. Ada tiga macam tepi yang terdapat di dalam citra digital.
Ketiganya adalah:
1. Tepi curam
Tepi dengan perubahan intensitas yang tajam. Arah tepi berkisar 90°.
2. Tepi landai
Disebut juga tepi lebar, yaitu tepi dengan sudut arah yang kecil. Tepi landai
dapat dianggap terdiri dari sejumlah tepi-tepi lokal yang lokasinya berdekatan.
0 x 0 x 0 x
(a) Tepi curam (b) tepi l andai (c) tepi curam dengan derau
4 4 4 8 8 8 8 8 4 4 5 6 7 8 8 8
4 4 4 8 8 8 8 8 4 4 5 6 7 8 8 8
derajat keabuan
4 4 4 8 8 8 8 8 4 4 5 6 7 8 8 8
4 4 4 8 8 8 8 8 4 4 5 6 7 8 8 8
x 4 4 4 8 8 8 8 8 4 4 5 6 7 8 8 8
(d) break down tepi landai (e) citra dengan tepi (f) citra dengan tepi landai
curam
Gambar 8. 2 Jenis-jenis tepi
Terdapat beberapa teknik yang digunakan untuk mendeteksi tepi, antara lain:
1. Operator gradien pertama (differential gradient)
2. Operator turunan kedua (Laplacian)
3. Operator kompas (compass operator)
∂f
G x
∇f = ∂∂fx = (8.1)
G y
∂y
∂f ( x, y )
Gx = = f ( x + 1, y ) − f ( x , y ) (8.4)
∂x
∂f ( x , y )
Gy = = f ( x, y + 1) − f ( x, y ) (8.5)
∂y
y
(x-1,y+1) (x ,y+ 1) (x+ 1,y+ 1)
Kedua turunan tersebut dapat dipandang sebagai dua buah mask konvolusi
sebagai berikut:
1
G1 ( x ) = [− 1 1] dan G1 ( y ) =
− 1
Contoh 8.1. [LOW91] Misalkan terdapat sebuah 5 × 5 citra dengan dua derajat
keabuan sebagai berikut:
1 1 1 1 1
1 1 1 1 1
1 1 1 0 0
1 1 0 0 0
1 1 0 0 0
Hasil perhitungan gradien setiap pixel di dalam citra adalah sebagai berikut:
Gx + G y
2 2
G[f(x,y)]= (8.6)
Gy
α(x,y) = tan-1 (8.7)
Gx
Karena menghitung akar adalah persoalan rumit dan menghasilkan nilai riil, maka
dalam praktek kekuatan tepi biasanya disederhanakan perhitungannya dengan
menggunakan salah satu dari alternatif rumus berikut [DUL97]:
Dalam praktek, persamaan (ii) dan (iv) biasanya lebih disukai dan lebih mudah
dikerjakan karena mengandung jumlah operasi aritmetika yang lebih sedikit.
Hasil pendeteksian tepi adalah citra tepi (edges image) g(x,y), yang nilai setiap
pixel-nya menyatakan kekuatan tepi:
g ( x , y ) = G [ f ( x , y )]
Keputusan apakah suatu pixel merupakan tepi atau bukan tepi dinyatakan dengan
operasi pengambangan berikut:
1, jika G [ f ( x , y )] ≥ T
g( x, y) = (8.8)
0, lainnya
yang dalam hal ini T adalah nilai ambang, pixel tepi dinyatakan putih sedangkan
pixel bukan tepi dinyatakan hitam. Gambar 8.4 adalah contoh hasil deteksi
semua tepi citra Lena, citra Camera, dan citra botol.
∂f ( x, y ) f ( x, y + 1) − f ( x, y − 1)
Dy ( x, y ) = = (8.10)
∂y 2
a0 a1 a2
a ( x, y) a
7 3
a 6 a5 a4
M= s 2x + s 2y
s x = ( a2 + ca3 + a 4 ) − (a 0 + ca 7 + a 6 ) (8.11)
− 1 0 1 1 2 1
S x = − 2 0 2 dan
Sy = 0 0 0
− 1 0 1 − 1 − 2 − 1
S
α(x,y) = tan-1 y (8.13)
Sx
3 4 2 5 1 * * * * *
2 1 6 4 2 * 18
3 5 7 1 3
4 2 5 7 1
2 5 1 3 2
M= s 2x + s 2y = 112 + ( −7 ) 2 ≅ S x + S y = 11 + − 7 = 18
Contoh 8.3. Di bawah ini contoh lain pendeteksian tepi dengan operator Sobel,
dimana hasil konvolusi diambangkan dengan T = 12.
0 0 0 0 0 0 2 0 3 3 * * * * * * * * *
*
0 * 10 14 12 14 4 *
0 0 1 0 0 0 2 4 3
4 6 4
0 0 2 0 2 4 3 3 2 3 * 6 8 10 20 16 12 6 0 *
0 0 1 3 3 4 3 3 3 3 * 4 10 14 10 2 4 2 4 *
0 1 0 4 3 3 2 4 3 2 * 2 12 12 2 2 4 6 8 *
0 0 1 2 3 3 4 4 4 3 * * * * * * * * * *
− 1 0 1 1 1 1
Px = − 1 0 1 dan
Py = 0 0 0
− 1 0 1 − 1 − 1 − 1
R− ( x , y ) = f ( x, y + 1) − f ( x + 1, y ) (8.15)
f(x, y) f(x + 1, y)
1 0 0 1
R+ = dan R− =
0 − 1 − 1 0
G[f(x,y)] = R+ + R−
3 4 2 5 1 4 3 3 6 *
2 1 6 4 2 5 7 8 2 *
3 5 7 1 3 2 5 4 4 *
4 2 5 7 1 1 1 8 7 *
2 5 1 3 2 * * * * *
Nilai 4 pada pojok kiri atas pada citra hasil konvolusi diperoleh dengan perhitungan
sebagai berikut:
f ’[0,0] = ¦ 3 – 1 ¦ + ¦ 4 – 2 ¦ = 4
∂2 f ∂2 f
∇2 f = + (8.18)
∂x 2 ∂y 2
f(x)
∂f /∂x
∂ 2f /∂x2
1 f ( x + ∆x , y ) − f ( x , y ) − f ( x, y ) + f ( x − ∆ x, y )
= { }
∆x ∆x
1 f ( x , y + ∆y ) − f ( x , y ) − f ( x , y ) + f ( x, y − ∆y )
+ { }
∆y ∆y
f ( x + ∆x , y ) − 2 f ( x, y ) + f ( x − ∆ x, y )
=
( ∆x ) 2
f ( x , y + ∆y ) − 2 f ( x , y ) + f ( x, y − ∆ y )
+
( ∆y )2
∇2 f ( x , y ) = f ( x + 1, y ) − 2 f ( x , y ) + f ( x − 1, y ) + f ( x , y + 1) − 2 f ( x, y ) + f ( x, y − 1)
= f ( x , y − 1) + f ( x − 1, y ) − 4 f ( x, y ) + f ( x + 1, y ) + f ( x, y + 1)
(8.21)
atau dapat dinyatakan sebagai mask:
0 1 0
1 − 4 1
0 1 0
Selain mask di atas, masih ada dua hampiran operator Laplace yang lain, yaitu
− 1 − 1 − 1 1 −2 1
− 1 8 − 1 dan − 2 4 − 2
− 1 − 1 − 1 1 − 2 1
1 4 1
4 − 20 4
1 4 1
4 4 4 8 8 8 8 * * * * * * *
4 4 4 8 8 8 8 * 0 + 4 − 4 0 0 *
4 4 4 8 8 8 8 * 0 + 4 − 4 0 0 *
4 4 4 8 8 8 8 * 0 + 4 − 4 0 0 *
4 4 4 8 8 8 8 * * * * * * *
8 +4
4 0
0 -4
Pada contoh di atas, persilangan nol bersesuaian dengan tepi pada citra semula,
yang terdapat pada titik tengah antara dua buah pixel yang bersesuaian. Pixel tepi
seharusnya ditandai secara konsisten, apakah pixel di sebelah kiri atau di sebelah
kanan garis “|”. ¾
4 4 8 8 8 8 8 8 * * * * * * * *
4 4 4 8 8 8 8 8 * 0 +8 − 4 0 0 0 *
4 4 4 4 8 8 8 8 * 0 0 + 8 − 4 0 0 *
4 4 4 4 4 8 8 8 * 0 0 0 + 8 − 4 0 *
4 4 4 4 4 4 8 8 * * * * * * * *
2 2 2 5 8 8 8 8 * * * ** * *
*
2 2 2 5 8 8 8 8 * 0 + 3 0 − 3 0 0 *
2 2 2 5 8 8 8 8 * 0 + 3 0 − 3 0 0 *
2 2 2 5 8 8 8 8 * 0 + 3 0 − 3 0 0 *
2 2 2 5 8 8 8 8 * * * * * * * *
Pada contoh di atas tidak terdapat persilangan nol; lokasi tepi yang sesungguhnya
ditentukan secara interpolasi. ¾
dihaluskan dengan
fungsi Gauss, G(x,y)
h(x,y)
operator Laplace,
∇2
k(x,y)
k ( x , y ) = ∇ 2h ( x, y ) (8.22)
dan
h ( x, y ) = f ( x , y ) * G ( x, y ) (8.23)
∇2 [ f ( x , y ) * G ( x , y )] = f ( x , y ) * ∇ 2G ( x, y ) (8.24)
Jadi,
k ( x , y ) = f ( x , y ) * ∇ 2G ( x, y ) (8.25)
Jadi, untuk mendeteksi tepi dari citra yang mengalami gangguan, kita dapat
melakukan salah satu dari dua operasi ekivalen di bawah ini:
1. Konvolusi citra dengan fungsi Gauss G(x,y), kemudian lakukan operasi
Laplacian terhadap hasilnya, atau
2. Konvolusi citra dengan penapis LoG.
0 0 −1 0 0
0 −1 − 2 −1 0
− 1 − 2 16 − 2 − 1
0 −1 − 2 −1 0
0 0 −1 0 0
(a) (b)
Gambar 8. 8 (a) citra botol; (b) Laplace; (c) Laplace dengan bobot lebih; (d) Laplacian of Gaussian
(LoG)
Jika mask k adalah mask yang memberikan kekuatan terbesar, maka arah tepi
ditentukan dari mask k tersebut.
Operator kompas yang dipakai untuk pendeteksian tepi menampilkan tepi dari 8
macam arah mata angin:
Operator kompas yang tersedia dapat juga digunakan untuk mendeteksi tepi
dalam arah tertentu saja. Misalnya diinginkan mendeteksi tepi dalam arah
horizontal dan vertikal, seperti hasil pendeteksian tepi citra San Fransisco
(Gambar 8.9) dan citra WTC1109.
Gambar 8. 9 Deteksi tepi horizontal dan vertikal dari citra San Fransisco
Tepi vertikal
endeteksi tepi menghasilkan citra tepi yang berupa citra biner (pixel tepi
Kontur terbuka dapat berupa fragmen garis atau bagian dari batas daerah yang
tidak membentuk sirkuit (Gambar 9.1(b)).
(a) (b)
Gambar 9.1 (a) kontur tertutup, (b) kontur terbuka
Kode Rantai
Kode rantai (chain code)adalah notasi untuk mengkodekan senarai tepi yang
membentuk batas daerah. Kode rantai menspesifikasikan arah setiap pixel tepi di
dalam senarai tepi. Arah yang digunakan adalah 8 arah mata angin seperti yang
terlihat pada pada Gambar 9.2 (a).
0 batas
7
1
6 2
objek
titik awal
5 3
4
(a) (b)
Gambar 9.2 (a) Kode rantai, (b) representasi batas objek dengan kode rantai.
Dimulai dari sebuah pixel tepi dan searah jarum jam, arah setiap pixel tepi yang
membentuk batas objek dikodekan dengan salah satu dari delapan kode rantai.
Kode rantai merepresentasikan batas objek dengan koordinat pixel tepi pertama
lalu diikuti dengan senarai kode rantai. Karena ada 8 arah, maka cukup 3 bit
untuk mengkodekan setiap arah. Gambar 9.3 memperlihatkan contoh pengkodean
batas objek dengan kode rantai.
1 2 2 2 2 2
0 2 2 3
0 3 2 2
7 4
7 4
6 6 6 6 6 6 6 6 6 6 4
Pencocokan Kurva
Kurva yang merepresentasikan kontur dicari dengan teknik pencocokan kurva
(curve fitting). Ada dua macam teknik pencocakan kurva: interpolasi dan
penghampiran (approximation). Interpolasi kurva adalah mencari kurva yang
melalui semua pixel tepi, sedangkan penghampiran kurva adalah mencari kurva
yang paling dekat melalui pixel-pixel tepi, tetapi tidak perlu melalui semua pixel
tersebut.
Di dalam bab ini kita hanya membahas teknik pencocokan kurva dengan
penghampiran. Salah satu metode penghampiran kurva yang populer dalam
pengolahan citra adalah transformasi Hough. Transformasi Hough akan dibahas
dalam upa-bab 9.3 di bawah ini.
Jumlah maksimum garis yang dideteksi adalah n (n – 1)/2. Karena setiap pixel
harus diperiksa apakah ia termasuk ke dalam suatu garis, maka kompleksitas
algoritma pendeteksian garis lurus untuk kasus terburuk adalah O(n3). Untuk
aplikasi praktis, jelas metode pendeteksian dengan cara ini tidak mangkus.
Dalam bentuk parametrik, setiap garis dinyatakan sebagai (m’, c’) di dalam ruang
parameter m-c. Persamaan 9.2 dapat ditulis menjadi
c = y – mx (9.3)
Sembarang titik (x,y) pada bidang planar X-Y berkoresponden dengan sebuah
garis lurus pada ruang parameter m–c.
Dengan cara ini, maka setiap pixel pada garis lurus di bidang citra
berkoresponden dengan sejumlah garis lurus yang melalui satu ititik tertentu di
ruang parameter m-c. Sifat ini dimanfaatkan untuk mendeteksi garis lurus. Jika
setiap pixel tepi melakukan “pemungutan suara” pada ruang parameter, maka
keberadaan garis lurus pada citra ditandai dengan penumpukan suara pada
tempat-tempat tertentu di ruang parameter.
y c
c = y - mx 1 c = y - mx 3
(x1,y1)
(x2,y2)
(x3,y3)
c = y - mx 2
x m
(a) (b)
Gambar 9. 4 (a) Garis lurus pada ruang X-Y; (b) representasinya dalam ruang parameter m-c.
Dengan kata lain, tambahkan satu suara pada ruang parameter m-c.
Hal ini berarti terdapat k garis lurus yang terdeteksi pada citra.
Tingkat ketelitian dari Transformasi Hough bergantung pada ukuran matriks P(m,
c), yaitu K × L. Kompleksitas komputasi Transformasi Hough pada kasus
terburuk adalah O(Kn), yang dalam hal ini K adalah jumlah pembagian parameter
m, dan n adalah jumlah pixel di dalam citra tepi. Karena O(Kn) < O(n3), maka
pendeteksian garis lurus dengan Transformasi Hough lebih cepat daripada metode
exhaustive search.
Model parametrik pada persamaan 9.2 tidak dapat digunakan untuk mendeteksi
garis vertikal atau hampir vertikal karena gradiennya (m) menuju nilai tak-
berhingga. Karena itu, garis dinyatakan dalam representasi polar:
r = x cos θ + y sin θ (9.4)
yang dalam hal ini r adalah jarak garis ke titik asal (Gambar 9.5).
y θ
( r, θ )
θ
x r
Sembarang garis yang melalui (x1,y1) pada ruang x–y berkoresponden dengan
kurva sinusoida r = x1 cos θ + y1 sin θ pada ruang r–θ. Pixel-pixel yang terletak
segaris pada citra tepi berkoresponden dengan titik potong seluruh kurva
sinusoidanya pada ruang parameter r–θ.
− N2 + M 2 ≤ r ≤ N2 + M 2
-π/2 ≤ θ ≤ π/2
for (k=0;k<=N-1;k++)
for (l=0;l<=M-1;l++)
{
if (Edge[k][l]==1)
{
for (i=0;i<=p-1;i++)
{
r = k*COS[i] + l*SIN[i];
b = SQRTD;
r+=b; r/=(SQRTD*2.0); r*=(m-1); r+=0.5;
j=floor(r);
P[i][j]++;
}
}
}
}
for(i=0;i<=p-1;i++)
{
th = (float)i * 180.0/(m-1)-90.0;
th = th * R_TO_D;
COS[i] = (double) cos((double)th);
SIN[i] = (double) sin((double)th);
}
Pixel-pixel tepi yang termasuk di dalam garis lurus hasil deteksi Transformasi
Hough dapat dihasilkan dengan algoritma Transformasi Hough Balikan
(inverse Hough Transform). Untuk setiap elemen matriks Par yang bernilai 1,
for (k=0;k<=p-1;k++)
for (l=0;l<=q-1;l++)
{
y=(float)0.0;
if (P[k][l]==1) /* atau P[k][l]== 255 */
{
for (i=0;i<=N-1;i++)
{
r = (float)l * 2.0 * SQRTD/(m-1) – SQRTD;
if (SIN[k]==(float)0.0)
y++;
else
y=(r – (float)i * COS[k])/SIN[k];
y+=0.5; j=floor(y);
if (j >=0 && j < M)
if (Edge[i][j]==1) Out[i][j]++;
}
}
}
}
Jadi, ruang parameter untuk lingkaran adalah r–a–b , sehingga matriks trimatra
P(r, a, b) dibutuhkan untuk menyimpan perhitungan suara.
Pada operasi deteksi tepi, selain magnitudo pixel tepi, juga dihasilkan arah tepi, θ.
Karena itu, cos θ dan sin θ dapat dihitung.
Misalkan (x i, yi) adalah pixel tepi dan θ adalah arah tepi . Ada dua kasus yang
akan ditinjau:
(i) jika jari-jari lingkaran diketahui, (ii) jika jari-jari lingkaran tidak diketahui.
(a,b) (x i,yi)
R
seperti yang ditunjukkan pada Gambar 9.5, lalu tambahkan elemen P(a, b) yang
bersesuaian dengan satu. Proses ini diulangi untuk pixel-pixel tepi yang lain.
Elemen matriks P(a, b) yang memiliki jumlah suara di atas nilai ambang tertentu
menyatakan lingkaran yang terdapat di dalam citra tepi.
dan elemen P(r, a, b) yang bersesuaian dinaikkan satu. Proses ini diulangi untuk
pixel-pixel tepi yang lain. Elemen matriks P(r, a, b) yang memiliki jumlah suara
di atas nilai ambang tertentu menyatakan lingkaran yang terdapat di dalam citra
tepi.
Gambar 9. 6 (a) Citra slope, (b) hasil deteksi lingkaran dengan Transformasi Hough (Terima kasih
kepada Danu Pranantha atas izin menggunakan output program tugasnya)
Jika kurva berbentuk lingkaran, maka lokasi pusat penumpukan suara adalah titik
pusat lingkaran, sedangkan fungsi jarak dari setiap pixel tepi ke titik pusat
lingkaran adalah fungsi konstan (yaitu akar pangkat dua dari persamaan (4) ).
Sebagai contoh, pada Gambar 9.7 titik (a, b) adalah lokasi pusat penumpukan
suara. Fungsi jarak r dari setiap titik (x, y) dan nilai α merupakan fungsi dari arah
vektor normal N.
Untuk setiap pixel tepi (x,y) dengan sudut arah tepi θ, lokasi pusat penumpukan
suara dihitung dengan rumus N
a = x − r(θ ) cos(α (θ )) (9.15) (x,y)
b = y − r (θ ) sin( α (θ )) (9.16) α
(a,b)
Pemampatan Citra
P Sebagai contoh, citra Lena dalam format bitmap yang berukuran 512 × 512
pixel membutuhkan memori sebesar 32 KB (1 pixel = 1 byte) untuk
representasinya. Semakin besar ukuran citra tentu semakin besar pula memori
yang dibutuhkannya. Pada sisi lain, kebanyakan citra mengandung duplikasi
data. Duplikasi data pada citra dapat berarti dua hal. Pertama, besar kemungkinan
suatu pixel dengan pixel tetanggganya memiliki initensitas yang sama, sehingga
penyimpanan setiap pixel memboroskan tempat. Kedua, citra banyak
mengandung bagian (region) yang sama, sehingga bagian yang sama ini tidak
perlu dikodekan berulang kali karena mubazir atau redundan.
2. Kebutuhan memori.
Memori yang dibutuhkan untuk merepresentasikan citra seharusnya berkurang
secara berarti. Ada metode yang berhasil memampatkan dengan persentase
yang besar, ada pula yang kecil. Pada beberapa metode, ukuran memori hasil
pemampatan bergantung pada citra itu sendiri. Cira yang mengandung
banyak elemen duplikasi (misalnya citra langit cerah tanpa awan, citra lantai
keramik) umumnya berhasil dimampatkan dengan memori yang lebih sedikit
dibandingkan dengan memampatkan citra yang mengandung banyak objek
(misalnya citra pemandangan alam).
Kita dapat membuat ukuran kualitas hasil pemampatan citra menjadi ukuran
kuantitatif dengan menggunakan besaran PSNR (peak signal-to-noise ratio).
PSNR dihitung untuk mengukur perbedaan antara citra semula dengan citra
hasil pemampatan (tentu saja citra hasil pemampatan harus dinirmampatkan
terlebih dahulu) dengan citra semula, dengan rumus:
b
PSNR = 20 × log 10 (10.1)
rms
dengan b adalah nilai sinyal terbesar (pada citra hitam-putih, b = 255) dan
rms adalah akar pangkat dua dari selisih antara citra semula dengan citra hasil
pemampatan. Nila rms dihitung dengan rumus:
∑∑ ( f
1
rms = − f ' ij ) 2 (10.2)
Lebar × Tinggi
ij
i =1 j =1
yang dalam hal ini, f dan f ' masing-masing menyatakan nilai pixel citra
semula dan nilai pixel citra hasil pemampatan. PSNR memiliki satuan decibel
(dB). Persamaan (10.2) menyatakan bahwa PSNR hanya dapa dihitung
setelah proses pernirmapatan citra. Dari persamaan (10.2) terlihat abhwa
PSNR berbanding terbalik dengan rms. Nilai rms yang rendah yang
menyiratkan bahwa citra hasil pemampatan tidak jauh berbeda dengan citra
semula akan menghasilkan PSNR yang tinggi, yang berarti kualitas
pemampatannya bagus. Semakin besar nilai PSNR, semakin bagus kualitas
pemampatannya. Seberapa besar nilai PSNR yang bagus tidak dapat
dinyatakan secara eksplisit, bergantung pada citra yang dimampatkan. Namun
kita dapat mengetahui hal ini jika kita melakukan pengujian dengan mencoba
berbagai kombinasi parameter pemampatan yang digunakan. Jika nilai PSNR
semakin membesar, itu berarti parameter pemampatan yang digunakan sudah
menuju nilai yang baik. Parameter pemampatan citra bergantung pada metode
pemamapatan yang digunakan.
4. Format keluaran
Format citra hasil pemampatan sebaiknya cocok untuk pengiriman dan
penyimpanan data. Pembacaan citra bergantung pada bagaimana citra
tersebut direpresentasikan (atau disimpan).
Pemilihan kriteria yang tepat bergantung pada pengguna dan aplikasi. Misalnya,
apakah pengguna menginginkan pemampatan yang menghasilkan kualitas yang
bagus, namun pengurangan memori yang dibutuhkan tidak terlalu besar, atau
sebaliknya. Atau jika waktu pemampatan dapat diabaikan dari pertimbangan
(dengan asumsi bahwa pemampatan hanya sekali saja dilakukan, namun
pernirmampatan dapat berkali-kali), maka metode yang menghasilkan waktu
penirmampatan yang cepat yang perlu dipertimbangkan.
3. Pendekatan kuantisasi
Pemampatan citra dilakukan dengan mengurangi jumlah derajat keabuan
yang tersedia.
Contoh metode: metode pemampatan kuantisasi.
4. Pendekatan fraktal
Pemampatan citra didasarkan pada kenyataan bahwa kemiripan bagian-
bagian di dalam citra dapat dieksploitasi dengan suatu matriks transformasi.
Contoh metode: Fractal Image Compression.
2. Metode lossy
Metode lossy menghasilkan citra hasil pemampatan yang hampir sama
dengan citra semula. Ada informasi yang hilang akibat pemampatan, tetapi
dapat ditolerir oleh persepsi mata. Mata tidak dapat membedakan perubahan
kecil pada gambar. Metode pemampatan lossy menghasilkan nisbah
pemampatan yang tinggi daripada metode lossless. Gambar 10.1 adalah citra
sebelum dimampatkan, dan Gambar 10.2 adalah hasil pemampatan citra
kapal dengan metode lossy.
Contoh metode lossy adalah metode JPEG dan metode fraktal.
Gambar 10.2 Citra kapal setelah dimampatkan dengan sebuah metode lossy
Agar pemilihan dua pohon yang akan digabungkan berlangsung cepat, maka
semua pohon yang ada selalu terurut menaik berdasarkan frekuensi.
4. Beri label setiap sisi pada pohon biner. Sisi kiri dilabeli dengan 0 dan sisi
kanan dilabeli dengan 1.
Simpul-simpul daun pada pohon biner menyatakan nilai keabuan yang terdapat di
dalam citra semula. Untuk mengkodekan setiap pixel di dalam di dalam citra,
lakukan langkah kelima berikut:
5. Telusuri pohon biner dari akar ke daun. Barisan la bel-label sisi dari akar ke
daun menyatakan kode Huffman untuk derajat keabuan yang bersesuaian.
Setiap kode Huffman merupakan kode prefiks, yang artinya tidak ada kode biner
suatu nilai keabuan yang merupakan awalan bagi kode biner derajat keabuan
yang lain. Dengan cara ini, tidak ada ambiguitas pada proses penirmampatan
citra.
k nk p(k) = nk/n
0 790 0.19
1 1023 0.25
2 850 0.21
3 656 0.16
4 329 0.08
5 245 0.06
6 122 0.03
7 81 0.02
Proses pembentukan pohon Huffman yang terbentuk dapat dilihat pada Gambar
10.3. Setiap simpul di dalam pohon berisi pasangan nilai a:b, yang dalam hal ini
a menyatakan nilai keabuan dan b menyatakan peluang kemunculan nilai
keabuan tersebut di dalam citra. Dari pohon Huffman tersebut kita memperoleh
kode untuk setiap derajat keabuan sebagai berikut:
0 = 00 2 = 01 4 = 1110 6 = 111101
1 = 10 3 = 110 5 = 11111 7 = 111100
Ukuran citra sebelum pemampatan (1 derajat keabuan = 3 bit) adalah 4096 × 3 bit
= 12288 bit, sedangkan Ukuran citra setelah pemampatan:
(790 × 2 bit) + (1023 × 2 bit) + (850 × 2 bit) +
(656 × 3 bit) + (329 × 4 bit) + (245 × 5 bit) +
(122 × 6 bit) + (81 × 6 bit) = 11053 bit
Jadi, kebutuhan memori telah dikurangi dari 12288 bit menjadi 11053 bit. Jelas
ini tidak banyak menghemat, tetapi jika 256 nilai keabuan yang digunakan
(dibanding dengan 8 derajat keabuan deperti pada contoh di atas) , penghematan
memori dapat bertambah besar.
11053
Nisbah pemampatan = (100% − × 100 %) = 10% , yang artinya 10% dari
12288
citra semula telah dimampatkan. ¾
7:0.02 6:0.03
76:0.05 5:0.06
7:0.02 6:0.03
4:0.08 765:0.11
76:0.05 5:0.06
7:0.02 6:0.03
3:0.16 4765:0.19
4:0.08 765:0.11
76:0.05 5:0.06
7:0.02 6:0.03
Gambar 10.3 Tahapan pembentukan pohon Huffman untuk Contoh 10.1 di atas
4:0.08 765:0.11
76:0.05 5:0.06
7:0.02 6:0.03
7. 02:0.40 134765:0.60
3:0.16 4765:0.19
4:0.08 765:0.11
76:0.05 5:0.06
7:0.02 6:0.03
8. 02134765:
1.00
02:0.40 134765:0.60
3:0.16 4765:0.19
4:0.08 765:0.11
76:0.05 5:0.06
7:0.02 6:0.03
Contoh 10.2. [LOW91] Tinjau citra 10 × 10 pixel dengan 8 derajat keabuan yang
dinyatakan sebagai matriks derajat keabuan sebagai berikut
0 0 0 0 0 2 2 2 2 2
0 0 0 1 1 1 1 2 2 2
1 1 1 1 1 1 1 1 1 1
4 4 4 4 3 3 3 3 2 2
3 3 3 5 5 7 7 7 7 6
2 2 6 0 0 0 0 1 1 0
3 3 4 4 3 2 2 2 1 1
0 0 0 0 0 0 0 0 1 1
1 1 1 1 0 0 0 2 2 2
3 3 3 2 2 2 1 1 1 1
Pasangan nilai untuk setiap baris run yang dihasilkan dengan metode pemampatan
RLE:
(0, 5), (2, 5)
(0, 3), (1, 4), (2, 3)
(1, 10)
(4, 4), (3, 4), (2 2)
(3, 3), (5, 2), (7, 4), (6, 1)
(2, 2), (6, 1), (0, 4), (1, 2), (0, 1)
(3, 2), (4, 2), (3, 1), (2, 2), (1, 2)
(0, 8), (1, 2)
(1, 4), (0, 3), (2, 3)
(3, 3), (2, 3), (1, 4)
Ukuran citra sebelum pemampatan (1 derajat keabuan = 3 bit) adalah 100 × 3 bit
= 300 bit, sedangkan ukuran citra setelah pemampatan (derajatk keabuan = 3 bit,
run length = = 4 bit):
(31 × 3) + (31 × 4) bit = 217 bit
Versi lain dari metode RLE adalah dengan menyatakan seluruh baris citra
menjadi sebuah baris run, lalu menghitung run-length untuk setiap derajat
keabuan yang berurutan. Sebaga i contoh, tinjau sebuah citra sebagai berikut:
1 2 1 1 1 1
1 3 4 4 4 4
1 1 3 3 3 5
1 1 1 1 3 3
Pasangan nilai dari run yang dihasilkan dengan metode pemampatan RLE:
(1, 1) (2, 1) (1, 5) (3, 1) (4, 4) (1, 2) (3, 3) (5, 1) (1, 4) (3, 2)
Hasil pengkodean:
1 1 2 1 1 5 3 1 4 4 1 2 3 3 5 1 1 4 3 2
yang akan dimampatkan menjadi citra dengan 4 derajat keabuan (0 s/d 3), jadi
setiap derajat keabuan direpresentasikan dengan 2 bit.
Histogram citra semula:
0 **
1 **
2 *********
3 ***********
4 *********
5 ****
6 *****
7 ********
8 *********
9 ******
130
Nisbah pemampatan = (100% − × 100%) = 50% , yang artinya 50% dari citra
260
semula telah dimampatkan. ¾
Citra Biner
itra biner (binary image) adalah citra yang hanya mempunyai dua nilai
C derajat keabuan: hitam dan putih. Meskipun saat ini citra berwarna lebih
disukai karena memberi kesan yang lebih kaya daripada citra biner, namun
tidak membuat citra biner mati. Pada beberapa aplikasi citra biner masih tetap
dibutuhkan, misalnya citra logo instansi (yang hanya terdiri atas warna hitam dan
putih), citra kode batang (bar code) yang tertera pada label barang, citra hasil
pemindaian dokumen teks, dan sebagainya. Bab 10 ini akan memaparkan beberapa
konsep dan teknik pengolahan citra biner.
11.1 Pendahuluan
Seperti yang sudah disebutkan di awal Bab, citra biner hanya mempunyai dua
nilai derajat keabuan: hitam dan putih. Pixel-pixel objek bernilai 1 dan pixel-pixel
latar belakang bernilai 0. Pada waktu menampilkan gambar, 0 adalah putih dan 1
adalah hitam. Jadi, pada citra biner, latar belakang berwarna putih sedangkan
objek berwarna hitam. Gambar 11.1 memperlihatkan beberapa contoh citra biner,
sedangkan Gambar 11.2 adalah contoh pengkodean citra biner.
(c) Citra teks (hasil pemindaian (d) Citra kode batang (bar code)
dokumen)
0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 1 0 0 0
0 0 1 1 0 0 0 1 0 0
0 0 1 1 0 0 0 1 0 0
0 0 1 1 1 1 1 0 0 0
0 0 1 1 0 0 0 1 0 0
0 0 1 1 0 0 0 0 1 0
0 0 1 1 0 0 0 0 1 0
0 1 1 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0
Gambar 11.2 Huruf “B” dan representasi biner dari derajat keabuannya.
Pengambangan
Konversi dari citra hitam-putih ke citra biner dilakukan dengan operasi
pengambangan (thresholding). Operasi pengambangan mengelompokkan nilai
derajat keabuan setiap pixel ke dalam 2 kelas, hitam dan putih.
1, f g ( i, j ) ≤ T
f B (i , j ) = (11.1)
0, lainnya
Nilai ambang T dipilih sedemikian sehingga galat yang diperoleh sekecil mungkin.
Cara yang umum menentukan nilai T adalah dengan membuat histogram citra.
Jika citra mengandung satu buah objek dan latar belakang mempunyai nilai
intensitas yang homogen, maka citra tersebut umumnya mempunyai histogram
bimodal (mempunyai dua puncak atau dua buah maksimum lokal) seperti yang
ditunjukkan pada Gambar 11.3. Nilai T dipilih pada nila i minimum lokal yang
terdapat di antara dua puncak. Dengan cara seperti ini, kita tidak hanya mengkonversi
citra hitam-putih ke citra biner, tetapi sekaligus melakukan segmentasi objek dari
latar belakangnya.
Gambar 11.4 memperlihatkan segmentasi objek (botol dan apel) dari latar
belakangnya dengan cara mengkonversikan citra hitam-putihnya menjadi citra
biner dengan menggunakan nilai ambang T = 90 dan T = 100. Gambar 11.5
memperlihatkan konversi citra Lena menjadi citra biner dengan T = 128 dan T = 150.
P(r)
kelas 0
T kelas 1
r
Gambar 11.3 Penentuan nilai ambang T
(a) (b)
Dengan pengambangan secara lokal adaptif, secara subjektif citra biner yang
dihasilkan terlihat lebih menyenangkan dan sedikit informasi yang hilang.
Gambar 11.7 Kesalahan yang diperoleh dari pengambilan nilai T0 yang tidak tepat (T = 25).
Perhatikan bahwa “titik” di atas huruf “i” hilang karena luasnya, sehingga huruf “i” terlihat seperti
angka “1” [JAI95].
Dua pendekatan yang digunakan dalam penerapan RLE pada citra biner:
a. Posisi awal kelompok nilai 1 dan panjangnya (length of runs)
b. Panjang run, dimulai dengan panjang run 1.
1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 0 1 1 0 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
Gambar 11.8 Proses penelusuran batas wilayah dalam citra biner [DUL97].
Pixel yang bertanda • menyatakan pixel yang sedang ditelaah. Penelusur harus
menentukan arah pixel tepi berikutnya bergantung pada pixel-pixel sekitarnya.
E D A F
G H
B C D E G H M
F
I J
M
L K
I J K L
Kode: gwgwbbwbgwwgwwgwwbbb
Di-decode sebagai: g(wg(wbbw)bg(wwg(wwbb)b))
Keterangan: b = black , w = white, g = gray
∑∑ j. f (i , j )
i =1 j =1
x= (11.4)
A
n m
∑∑i. f (i , j )
i =1 j =1
y= (11.5)
A
∑∑ j . f (i , j )
i =1 j =1
2
Mx = (11.6)
A
n m
∑∑i . f (i , j )
i = 1 j =1
2
My = (11.7)
A
- City-block
d city = i1 − i2 + j1 − j2 (11.9)
(vii) Diameter
Dihitung dari jarak paling jauh dari dua titik pada objek.
(ix) Proyeksi
Menyatakan bentuk yang diperoleh dari hasil proyeksi objek terhadap garis
sumbu.
Proyeksi citra biner terhadap garis horizontal dan garis vertikal dihitung
dengan rumus:
m
H (i) = ∑ f (i , j ) (11.11)
j=1
n
V (i ) = ∑ f (i, j)
i =1
(11.12)
Penipisan (thinning) adalah operasi pemrosesan citra biner yang dalam hal ini
objek (region) direduksi menjadi rangka yang menghampiri garis sumbu objek.
Tujuan penipisan adalah mengurangi bagian yang tidak perlu (redundant)
sehingga hanya dihasilkan informasi yang esensial saja. Pola hasil penipisan
harus tetap mempunyai bentuk yang menyerupai pola asalnya. Sebagai contoh,
Gambar 11.11 adalah huruf “R” dan hasil penipisan polanya menjadi rangka “R”.
p7 p0 p3
p6 p5 p4
(a) (b) (c)
void penipisan(citra f, int N1, int M1, int N2, int M2)
/* Prosedur yang mengimplementasikan penipisan pola
Masukan :
f : citra biner
N1, M1 : koordinat awal (sudut kiri atas)
N2, M2 : koordinat akhir (sudut kanan bawah)
Keluaran: citra bienrf
*/
{
int k, l, i, j, count=0, y[9], trans=0, m, OK=1
Warna
Warna sinar yang direspon oleh mata adalah sinar tampak (visible spectrum)
dengan panjang gelombang berkisar dari 400 (biru) sampai 700 nm (merah).
Lihat Gambar 12.1.
400 nm 700 nm
Bila citra warna didigitasi, maka tiga buah filter digunakan untuk mengekstraksi
intensitas warna merah, hijau, dan biru, dan bila ketiganya dikombinasikan kita
memperoleh persepsi warna.
c. Saturation
Menyatakan tingkat kemurnian warna cahaya, yaitu mengindikasikan
seberapa banyak warna putih diberikan pada warna. Sebagai contoh, warna
merah adalah 100% warna jenuh (saturated color), sedangkan warna pink
adalah warna merah dengan tingkat kejenuhan sangat rendah (karena ada
warna putih di dalamnya). Jadi, jika hue menyatakan warna sebenarnya,
maka saturation menyatakan seberapa dalam warna tersebut.
Dalam praktek, hue dikuantisasi dengan nilai dari 0 sampai 255; 0 menyatakan
merah, lalu memutar nilai-nilai spektrum tersebut kembali lagi ke 0 untuk
menyatakan merah lagi. Ini dapat dipandang sebagai sudut dari 0° sampai 360°.
Jika suatu warna mempunyai saturation = 0, maka warna tersebut tanpa hue,
yaitu dibuat dari warna putih saja. Jika saturation = 255, maka tidak ada warna
putih yang ditambahkan pada warna tersebut. Saturation dapat digambarkan
sebagai panjang garis dari titik pusat lingkaran ke titik warna.
Intensity nilainya dari gelap sampai terang (dalam praktek, gelap = 0, terang =
255). Intensity dapat digambarkan sebagai garis vertikal yang menembus pusat
lingkaran.
Ketiga atribut warna (I, H, dan S) digambarkan dalam model IHS (ada juga yang
menyebutnya model HSV, dengan V = Value = I) yang diperlihatkan pada
Gambar 12.2.
Terang
I
Biru Titik warna
n
ratio
Satu
S θ = hue
H
Merah Hijau
Gelap
RGB bukan satu-satunya warna pokok yang dapat digunakan untuk menghasilkan
kombinasi warna. Warna lain dapat juga digunakan sebagai warna pokok
(misalnya C = Cyan, M = Magenta, dan Y = Yellow).
Jelas hanya dua nilai x dan y yang dibutuhkan untuk menspesifikasikan kromatisitas
warna, karena jika x dan y diketahui, z dapat dihitung dengan persamaan 12.6.
Warna lebih tepat dinyatakan dengan kromatisitas x dan y dan luminansi Y.
Koordinat kromatisitas (12.2 dan 12.3) digunakan untuk menggambarkan diagram
kromatisitas pada Gambar 12.3.
Titik yang ditandai “green” pada diagram Gambar 12.3 memiliki kira-kira 62%
green dan 25% red. Ini sesuai dengan persamaan 12.6 bahwa kompisisi blue kira-
kira 13%. Posisi bermacam-macam spektrum warna, dari violet 380 nm sampai
red 780 nm dinyatakan pada sisi (boundary) diagram yang berbentuk setengah
elips. Ini adalah warna-warna “pure”. Titik yang tidak terletak pada sisi tetapi
masih di dalam diagram menyatakan campuran spektrum warna. Titik energi
setara (equal energy) berkoresponden dengan nilai fraksi yang sama dari ketiga
warna pokok X, Y, Z. Titik energi setara menyatakan bakuan CIE untuk cahaya
putih. Sembarang titik yang terletak pada sisi diagram dikatakan jenuh
(saturated). Semakin jauh titik-titik itu meninggalkan sisi dan mendekati titik
energi setara, itu berarti semakin banyak cahaya putih ditambahkan pada warna
dan ia menjadi kurang jenuh (less saturated). Kejenuhan titik energi setara adalah
nol.
510
0.7
green 560
0.6
gold
0.5 500
warm white
600
cool white
0.4
pink 620
daylight red
0.3 780
490
480 blue
Point of
0.1
470 equal energy
380
x
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8
Gambar 12.3 Diagram kromatisitas CIE
Hue dari warna tertentu diperoleh dengan menarik garis dari putih ke sisi elips
melalui warna tersebut. Misalkan digambar garis dari posisi W (putih) melalui
warna tertentu, P, ke sisi elips pada posisi H. Nilai hue adalah H, dan saturation
adalah panjang WP relatif terhadap WH. Warna P dapat dipandang sebagai
campuran warna putih dan hue:
P = SH + (1 – S) W (12.7)
yang dalam hal ini S mengendalikan perbandingan relatif warna putih dan hue.
Transformasi sebaliknya dari CIE XYZ ke CIE RGB dapat dilakukan dengan
persamaan
Algoritma transformasi citra dari model warna CIE RGB ke model warna CIE
XYZ diperlihatkan pada Algoritma 12.1, sedangkan algoritma transformasi
balikan dari model warna CIE XYZ ke model warna CIE RGB diperlihatkan pada
Algoritma 12.2 [PIT93]. Kedua algoritma tersebut mengasumsikan bahwa
komponen RGB disimpan masing-masing di dalam matriks r, g, dan b. Hasil
transformasi masing-masing disimpan di dalam matriks x, y, dan z. Ukuran citra
adalah N × M.
Algoritma 12.1 Transformasi citra dari model warna CIE RGB ke model CIE XYZ
Algoritma 12.2 Transformasi citra dari model warna CIE XYZ ke model CIE RGB
Model warna RGB dan XYZ yang dikemukakan di atas adalah bakuan dari CIE.
Ada juga model warna yang diusulkan untuk platform perangkat keras tertentu
untuk menampilkan gambar. Misalnya National Television Systems Committee
(NTSC) menggunakan model warna RGB khusus untuk menampilkan citra
berwarna pada layar CRT. Format NTSC digunakan pada televisi di Amerika
Serikat. Salah satu keuntungan utama dari format ini adalah data greyscale
dipisahkan dari data warnanya, sehingga sinyal yang sama dapat digunakan baik
untuk layar berwarna maupun layar hitam putih.
Pada format NTSC, data citra terdiri atas tiga komponen, yaitu luminance (Y), hue
(I), dan saturation (Q). Komponen pertama, yaitu Y menyatakan data greyscale,
sedangkan dua komponen terakhir membentuk chrominance. Jika dib erikan
triplet NTSC RGB (Ri, Gi, Bi) untuk pixel i, maka nilai YIQ untuk pixel yang
bersangkutan dihitung dengan
Sistem NTSC RGB dapat ditransformasikan ke sistem CIE XYZ dengan persamaan:
sedangkan transformasi dari CIE XYZ ke NTSC RGB dihitung dengan persamaan:
Model CMY dapat diperoleh dari model RGB dengan perhitungan berikut:
C=1–R (12.15)
M=1–G (12.16)
Y=1–B (12.17)
Model CMY dapat digunakan untuk mencetak citra berwarna, tetapi karena
ketidaksempurnaan tinta, model CMY tidak dapat menghasilkan warna hitam
Algoritma transformasi citra dari model RGB ke model CMYK ditunjukkan pada
Algoritma 12.3, sedangkan algoritma transformasi balikan dari model CMYK ke
model RGB ditunjukkan pada Algoritma 12.4 [PIT93]. Kedua algoritma tersebut
mengasumsikan komponen RGB disimpan masing-masing di dalam matriks r, g,
dan b. Hasil transformasi masing-masing disimpan di dalam matriks c, m, y dan
k. Ukuran citra adalah N × M.
{
int i, j;
Algoritma 12.3 Transformasi citra dari model warna RGB ke model CMYK.
Algoritma 12.4 Transformasi citra dari model warna CMYK ke model RGB
H
S
R G
Gambar 12.4 Segitiga HIS
Komponen RGB dari citra berwarna dapat dikonversikan ke model warna IHS.
Dengan mengasumsikan komponen RGB telah dinormalisasikan ke 1, maka I
dihitung dengan rumus:
1
I = (R + G + B) (12.22)
3
Alternatif lain mengubah model RGB ke model IHS adalah sebagai berikut.
Konversi dari model RGB ke model IHS dilakukan dalam dua tahap. Tahap
pertama adalah merotasikan koordinat RGB ke sistem koordinat (I, V1, V2) dengan
transformasi:
I 3/3 3 /3 3 /3 R
V = 0 − 1/ 2
G
1 1/ 2 (12.25)
V2 2 / 6 − 1 / 6 − 1 / 6 B
Nilai H adalah dalam selang [0,2π] atau setara dengan [0, 360°].
Transformasi dari model IHS ke model RGB dapat dilakukan dengan prosedur
balikan:
V1 = S cos(H) (12.28)
V2 = S sin(H) (12.29)
R 3 / 3 0 2/ 6 I
G =
3 / 3 1/ 2 − 1 / 6 V1 (12.30)
B 3 / 3 − 1 / 2 − 1 / 6 V2
Dengan transformasi RGB ke IHS, maka algoritma pemrosesan citra yang semula
untuk citra skala-abu dapat diterapkan pada komponen intensity, sedangkan
algoritma segmentasi citra dapat dilakukan pada komponen H.
S dalam wadah (media) digital sehingga keberadaan data rahasia tersebut tidak
diketahui oleh orang. Steganografi membutuhkan dua properti: wadah
penampung dan data rahasia yang akan disembunyikan. Steganografi digital
menggunakan media digital sebagai wadah penampung, misalnya citra, suara
(audio), teks, dan video. Data rahasia yang disembunyikan juga dapat berupa
citra, suara, teks, atau video.
Bab ini akan memaparkan steganografi dan watermarking pada citra digital.
Watermarking adalah aplikasi dari steganografi, di mana citra digital diberi suatu
penanda yang menunjukkan label kepemilikan citra tersebut. Sebagian besar dari
materi bab ini dikutip dari [POL98].
Sebagai contoh ilustrasi, Gambar 13.1.a adalah citra lada (peppers.bmp) yang
akan digunakan untuk menyembunyikan sebuah dokumen teks (Gambar 13.1.b)
yang berukuran 20 KB). Perhatikanlah citra lada sebelum penyembuan data
(13.1.a) dan citra setelah disisipi data teks (13.1.c). Citra lada tetap kelihatan
mulus, seolah-olah tidak pernah disisipi data sebelumnya. Sebenarnya tidaklah
demikian, gambar lada tersebut mengalami sedikit perubahan akibat steganografi,
namun mata manusia mempunyai sifat kurang peka terhadap perubahan kecil ini,
sehingga manusia sukar membedakan mana gambar yang asli dan mana gambar
yang sudah disisipi data.
Penyembunyian data rahasia ke dalam citra digital akan mengubah kualitas citra
tersebut. Kriteria yang harus diperhatikan dalam penyembunyian data adalah:
1. Fidelity. Mutu citra penampung tidak jauh berubah. Setelah penambahan data
rahasia, citra hasil steganografi masih terlihat dengan baik. Pengamat tidak
mengetahui kalau di dalam citra tersebut terdapat data rahasia.
Misalnya pada byte 11010010, bit 1 yang pertama (digarisbawahi) adalah bit
MSB dan bit 0 yang terakhir (digarisbawahi) adalah bit LSB. Bit yang cocok
untuk diganti adalah bit LSB, sebab penggantian hanya mengubah nilai byte
tersebut satu lebih tinggi atau satu lebih rendah dari nilai sebelumnya. Misalkan
byte tersebut di dalam gambar menyatakan warna tertentu, maka perubahan satu
bit LSB tidak mengubah warna tersebut secara berarti. Lagi pula, dan ini
keuntungan yang dimanfaatkan, mata manusia tidak dapat membedakan perubahan
yang kecil.
Misalkan data rahasia (yang telah dikonversi ke sistem biner) adalah 0111. Setiap
bit dari watermark menggantikan posisi LSB dari segmen data citra menjadi:
00110010 10100011 11100011 01101111
Teknik penyembunyian data untuk citra 8-bit berbeda dengan citra 24-bit. Seperti
sudah dijelaskan di dalam Bab 3, berkas citra bitmap terdiri atas bagian header,
palet RGB, dan data bitmap.
Pada citra 8-bit, setiap elemen data bitmap menyatakan indeks dari peta warnanya
di palet RGB. Pada citra 24-bit, tidak terdapat palet RGB, karena nilai RGB
langsung diuraikan dalam data bitmap. Setiap elemen data bitmap panjangnya 3
byte, masing-masing byte menyatakan komponen R, G, dan B.
Algoritma Diversity:
1. Buat histogram citra. Warna yang frekuensi kemunculannya 0 dibuang karena
tidak akan digunakan.
2. Pilih warna dengan frekuensi kemunculan tertinggi sebagai warna patokan.
Masukkan warna ini ke dalam senarai warna terpilih.
3. Cari warna yang mempunyai perbedaan terjauh dengan warna patokan.
Masukkan warna tersebut ke dalam senarai warna terpilih. Perbedaan dua
buah warna dihitung dengan rumus jarak Euclidean:
d = { (r1 – r2)2 + (g1 – g2)2 + (b1 – b2)2 }1/2
yang dalam hal ini, r1, g1, dan b1 adalah komponen RGB dari warna pertama,
dan r2, g2, dan b2 adalah komponen RGB dari warna kedua.
4. Untuk setiap warna yang tersisa di dalam list, hitung jaraknya dari masing-
masing warna di dalam senarai warna terpilih. Ambil warna yang paling jauh
berbeda dengan warna yang sudah dipilih. Lakukan langkah 4 ini berulang
kali sampai k warna sudah terpilih.
Di bawah ini ditampilkan contoh steganografi yang diambil dari program Tugas
Akhir Lazarus Poli [POL98] yang diberi nama DATAhide. Untuk setiap contoh,
digunakan kunci yang sama: informatika. Tampilan awal program diperlihatkan
pada Gambar 13.2. Upa-menu yang ada pada menu Operasi adalah Penyembunyian
data dan Pengungkapan data.
Gambar 13.4 Penyembunyian citra handshaking ke dalam citra berwarna 24 bit (peppers.bmp)
Gambar 13.5 Penyembunyian dokumen teks ke dalam citra berwarna 24 bit (peppers.bmp)
Masalahnya, hampir semua data digital yang bertebaran di dunia internet tidak
mencantumkan informasi pemiliknya. Seseorang yang telah mendapatkan produk
digital dapat mengklaim bahwa produk tersebut adalah hasil karyanya. Berhubung
tidak ada bukti kepemilikan sebelumnya, maka klaim tersebut mungkin saja
dipercaya.
Salah satu cara untuk melindungi hak cipta multimedia adalah dengan menyisipkan
informasi ke dalam data multimedia tersebut dengan teknik watermarking.
Informasi yang disisipkan ke dalam data multimedia disebut watermark, dan
watermark dapat dianggap sebagai sidik digital (digital signature) dari pemilik
yang sah atas produk multimedia tersebut. Dengan kata lain, watermark yang
disisipkan menjadi label hak cipta dari pemiliknya. Pemberian signature dengan
teknik watermarking ini dilakukan sedemikian sehingga informasi yang
disisipkan tidak merusak data digital yang dilindungi. Sehingga, seseorang yang
membuka produk multimedia yang sudah disisipi watermark tidak menyadari
kalau di dalam data multimedia tersebut terkandung label kepemilikan pembuatnya.
Jika ada orang lain yang mengklaim bahwa produk multimedia yang
didapatkannya adalah miliknya, maka pemegang hak cipta atas karya multimedia
tersebut dapat membantahnya dengan mengekstraksi watermark dari dalam data
multimedia yang disengketakan. Watermark yang diekstraksi dibandingkan dengan
watermark pemegang hak cipta. Jika sama, berarti memang dialah pemegang hak
cipta produk multimedia tersebut.
Sejarah Watermarking
Watermarking sudah ada sejak 700 tahun yang lalu. Pada akhir abad 13, pabrik
kertas di Fabriano, Italia, membuat kertas yang diberi watermark atau tanda-air
dengan cara menekan bentuk cetakan gambar atau tulisan pada kertas yang baru
setengah jadi. Ketika kertas dikeringkan terbentuklah suatu kertas yang ber-
watermark. Kertas ini biasanya digunakan oleh seniman atau sastrawan untuk
menulis karya mereka. Kertas yang sudah dibubuhi tanda-air tersebut sekalius
dijadikan identifikasi bahwa karya seni di atasnya adalah milik mereka [HEN03].
Penyisipan Watermark
Di sini kita hanya meninjau watermarking pada citra digital. Proses penyisipan
watermark ke dalam citra disebut encoding dan ditunjukkan Gambar 13.7.
Encoding dapat disertai dengan pemasukan kunci atau tidak memerlukan kunci.
Kunci diperlukan agar watermark hanya dapat diekstraksi oleh pihak yang sah.
Kunci juga dimaksudkan untuk mencegah watermark dihapus oleh pihak yang
tidak berhak.
kunci
Watermark
Watermark
Verifikasi Watermark
Verifikasi watermark dilakukan untuk membuktikan status kepemilikan citra
digital yang disengketakan. Verifikasi watermark terdiri atas dua sub-proses,
yaitu ekstraksi watermark dan pembandingan. Sub-proses ekstraksi watermark
disebut juga decoding, bertujuan mengungkap watermark dari dalam citra.
Decoding dapat mengikutsertakan citra asal (yang belum diberi watermark) atau
tidak sama sekali, karena beberapa skema watermarking memang menggunakan
citra asal dalam proses decoding untuk meningkatkan unjuk kerja yang lebih baik
[HEN03]. Sub-proses pembandingan bertujuan membandingkan watermark yang
diungkap dengan watermark asli dan memberi keputusan tentang watermark
tersebut. Proses verifikasi watermark ditunjukkan pada Gambar 13.9.
kunci
watermark
Citra yang
Decoding yang Pembandingan keputusan
diuji
terekstraksi
watermark
Citra asal asli
Fraktal dapat didefinisikan dari dua buah properti [MUN99]: 1) self similarity,
dan 2) matra (dimension).
1. Fraktal adalah obyek yang memiliki kemiripan dirinya-sendiri (self-similarity)
namun dalam skala yang berbeda. Ini artinya, bagian-bagian dari obyek akan
tampak sama dengan obyek itu sendiri bila dilihat secara keseluruhan.
Gambar 14.1 memperlihatkan tiga buah contoh fraktal, yaitu segitiga
Sierpinski, daun pakis Barnsley, dan pohon fraktal.
2. Fraktal adalah objek yang memiliki matra bilangan riil atau pecahan
(fractional). Kata terakhir inilah yang menurunkan kata fraktal.
Salinan ke-1
Gambar masukan
Mesin copy
Salinan ke-2
...
Hal yang menarik dari MRCM adalah, apapun gambar awal yang digunakan,
MRCM selalu konvergen ke gambar akhir yang sama. Gambar 14.3
memperlihatkan hasil salinan setelah beberapa kali lelaran dari MRCM yang
Gambar 14.3 Apapun gambar awalnya, MRCM selalu menghasilkan segitiga Sierpienski .
Setiap transformasi affine dinyatakan sebagai matriks dengan enam buah elemen:
a b e
w=
f
(14.1)
c d
x' x a b x e
y ' = w y = c d y + f = Ax + t (14.2)
Setiap transformasi affine wi menghasilkan salinan citra yang lebih kecil; yaitu,
untuk sembarang citra awal A yang diberikan, dihasilkan salinan affine, w1(A),
w2(A), …, wn(A). Gabungan dari seluruh salinan tersebut adalah W(A), yang
merupakan keluaran dari mesin,
W(A) = w1(A) + w2(A) + … + wn(A) (14.3)
Sifat kontraktif saja tidak begitu penting. Sifat ini menjadi penting bila MRCM
dijalankan dengan skema kalang umpan-balik terhadap gambar awal. Yaitu,
diberikan citra awal A0, diperoleh
n
A1 = W(A0) = Uw (A )i 0
i =1
A2 = W(A1) = W(W(A0)) = W2(A0)
Jadi, jika A∞ dipilih sebagai citra awal, maka tidak ada perubahan pada hasil
transformasinya. Sedangkan attractor dari W adalah citra A∞ sedemikian sehingga
A∞ = lim Wn(A0 ) untuk sembarang citra awal A0 . (14.6)
n →∞
Persamaan yang terakhir ini menyatakan bahwa tidak peduli apa pun citra awal
yang digunakan, limit lelarannya selalu menghasilkan citra akhir yang sama.
Dengan kata lain, citra attractor adalah unik.
w3
w1
w2
Jika jumlah transformasi affine meningkat menjadi empat dengan setiap w i adalah
sebagai berikut:
maka MRCM konvergen ke citra fraktal yang terkenal, yang dinamakan tanaman
pakis Barnsley (Barnsley’s fern) – Gambar 14.5. Di sini, w1 mengendalikan
keseluruhan bentuk, w2 membangkitkan daun kiri, w3 membangkitkan daun
kanan, dan w4 menghasilkan batang.
w1
w2
w3
w4
Kesulitan utama pemampatan dengan IFS adalah menemukan bagian citra yang
mirip dengan keseluruhan citra. Intervensi manusia diperlukan untuk memandu
menemukan bagian citra yang mirip dengan citra secara keseluruhan. Selain itu,
pemampatan citra dengan IFS yang telah dikemukakan di atas hanya dapat
diterapkan untuk citra yang memiliki self-similarity saja. Citra alami, disamping
mempunyai warna, hampir tidak pernah self-similar secara keseluruhan. Karena
itu, pemampatan sembarang citra (baik citra berwarna maupun citra greyscale)
dengan IFS tidak dapat dilakukan.
Kemiripan lokal yang banyak terdapat pada citra alami bersifat self-
transformability, yaitu bagian citra yang lebih kecil dapat diperoleh dengan
Kemiripan antara dua buah (blok) citra diukur dengan metrik jarak. Metrik jarak
yang banyak digunakan dalam praktek adalah metrik rms (root mean square):
n n
∑∑ ( z'
1
d rms = ij − z ij ) 2 (14.7)
n i =1 j =1
dengan z dan z’ adalah nilai intensitas pixel dari dua buah citra, dan n adalah
jumlah pixel di dalam citra.
Seperti yang sudah dijelaskan, blok ranah dan blok jelajah keduanya berbentuk
bujursangkar, tetapi ukuran blok ranah diambil dua kali blok jelajah. Untuk blok
jelajah berukuran 8×8 pixel dan blok ranah berukuran 16×16 pixel, citra 256×256
misalnya, dapat dibagi menjadi 1024 buah blok jelajah yang tidak saling beririsan
dan (256 – 16 + 1)2 = 58.081 buah blok ranah berbeda (yang beririsan).
Himpunan blok ranah yang digunakan dalam proses pencarian kemiripan
dimasukkan ke dalam pul ranah (domain pool). Pul ranah yang besar
menghasilkan kualitas pemampatan yang lebih baik, tetapi membutuhkan waktu
pencocokan yang lebih lama.
Transformasi affine wi untuk citra berskala-abu disusun oleh bagian spasial yang
memetakan posisi pixel di blok ranah Di ke posisi pixel di blok jelajah Ri, dan
bagian intensitas yang mengubah nilai intensitas pixel. Titik (x,y) dengan
intensitas z yang termasuk di dalam blok ranah dipetakan oleh w i menjadi:
x' x ai bi 0 x ei
y' = w y = c di 0 y + f (14.8)
i i i
z ' z 0 0 si z oi
Dengan pemetaan wi di atas, intensitas tiap pixel juga diskalakan dan digeser,
yaitu
z’ = si z + oi (14.9)
Untuk menjamin efek kontraktif dalam arah spasial, maka blok ranah harus
berukuran lebih besar daripada blok jelajah. Untuk alasan praktis, ukuran blok
ranah diambil dua kali ukuran blok jelajah (perbandingannya 2:1). Jadi, jika
ukuran blok jelajah adalah B×B pixel, maka ukuran blok ranah adalah 2B×2B
pixel. Perbandingan ini membuat transformasi affine menjadi lebih sederhana, yaitu
x' x 0.5 0 0 x ei
y' = w y = 0 0.5 0 y + f (14.10)
i i
z ' z 0 0 si z oi
Nilai minimum E terjadi bila turunan parsialnya terhadap s dan o adalah nol,
yang terjadi bila turunan pertama E sama dengan 0, atau
E’=0
dan
1 n n
o= ∑
n i =1
ri − s di ∑ (14.13)
i =1
Algoritma pencocokan blok yang dijelaskan di atas adalah algoritma brute force,
karena untuk setiap blok jelajah pencocokan dilakukan dengan seluruh blok ranah
di dalam pul untuk memperoleh pencocokan terbaik.
1 2 3 Pul ranah
1 2 3 4
1
2 E
T 5 7 8
6
3
9 10 11 12
w
13 15 14 16
Gambar 14.8. Blok jelajah 5 dibandingkan dengan blok ranah 3 di dalam pul ranah. Transformasi w
ditentukan, lalu blok ranah 3 ditransformasikan dengan w menghasilkan T. Jarak antara T dengan
blok jelajah 5 diukur.
Tabel 14.1 Perbandingan ukuran berkas citra sebelum dan sesudah dimampatkan
Tabel 14.2 Perbandingan ukuran citra berformat BMP, JPG, GIF, dan fraktal
(FRA)
Nama Citra Format BMP Format JPG Format GIF Format FRA
(byte) (byte) (byte) (byte)
Kapal.bmp 263.222 24.367 242.452 8.956
Lena.bmp 66.614 7.126 70.292 8.137
Collie.bmp 66.614 7.021 69.965 9.150
Potret.bmp 128.782 16.377 136.377 17.437
Pengenalan Pola
M dalam pokok bahasan buku ini, namun sebagai bab penutup Penulis akan
menjelaskan secara singkat mengenai pengenalan pola.
Sebagai contoh,
Pola Ciri
huruf tinggi, tebal, titik sudut,
lengkungan garis, dll
p ( x wi ) , i = 1, 2, …, N
dapat dihitung.
Sebagai contoh, misalkan diketahui fungsi kerapatan dari diameter buah jeruk dan
apel yang diperlihatkan pada Gambar 15.1.
0 a b diameter
Gambar 15.1. Grafik fungsi kerapatan dari ciri diameter jeruk dan apel.
Jika sebuah objek diukur dan diperoleh diameternya adalah a cm, maka kita
mengklasifikasikan objek tersebut sebagai “jeruk”, karena
dan jika hasil pengukuran diameter adalah b cm, kita mengklasifikasikan objek
tersebut sebagai “apel”, karena
p(b | jeruk) < p(b | apel)
Pola Feature
Preprocessing Classification
Extraction
Pengenalan ( recognition)
Pelatihan ( training)
Preprocessing
Proses awal yang dilakukan untuk memperbaiki kualitas citra (edge enhancement)
dengan menggunakan teknik-teknik pengolahan citra yang sudah diejelaskan
pada bab-bab sebelum ini.
Feature Extraction
Proses mengambil ciri-ciri yang terdapat pada objek di dalam citra. Pada proses
ini objek di dalam citra mungkin perlu dideteksi seluruh tepinya, lalu menghitung
properti-properti objek yang berkaitan sebagai ciri. Beberapa proses ekstraksi ciri
mungkin perlu mengubah citra masukan sebagai citra biner, melakukan penipisan
pola, dan sebagainya.
Classification
Proses mengelompokkan objek ke dalam kelas yang sesuai.
Feature Selection
Proses memilih ciri pada suatu objek agar diperoleh ciri yang optimum, yaitu ciri
yang dapat digunakan untuk membedakan suatu objek dengan objek lainnya.
Learning
Proses belajar membuat aturan klasifikasi sehingga jumlah kelas yang tumpang
tindih dibuat sekecil mungkin.
Kumpulan ciri dari suatu pola dinyatakan sebagai vektor ciri dalam ruang
bahumatra (multi dimensi). Jadi, setiap pola dinyatakan sebagai sebuah titik
dalam ruang bahumatra. Ruang bahumatra dibagi menjadi sejumlah uparuang
(sub-ruang). Tiap uparuang dibentuk berdasarkan pola-pola yang sudah dikenali
kategori dan ciri-cirinya (melalui fase pelatihan). Lihat Gambar 15.3.
batas kelas
batas keputusan
ciri 1 ciri 1
Pengenalan pola secara sintaktik lebih dekat ke strategi pengenalan pola yang
dilakukan manusia, namun secara praktek penerapannya relatif sulit dibandingkan
pengenalan pola secara statistik.
Pola Primitive
Preprocessing Classification
Extraction
Pengenalan (recognition)
Pelatihan (training)
∑ = {a, b, c, d, e}
N = {S, T, A, B, C, D, E, F}
S = { S, T}
(a)
a a
b b b e b
b
c c
b b a
d b
d
b c a
b b
b ebabcbab
a
a
abcbabdbabcbabdb
(b)
∑ ={a ,b ,c ,d }
N = {S, A1, A2, A3, A4, A5}
S = { S}
t
h
d c + (~d) d + (c+(~d))
(a) (b) (c)
t h
h
t h t
a+d (a + b) *c (d + (c + (~d)))*((a+b)*c)
(d) (e) (f)