Anda di halaman 1dari 148

Bab 7

Perbaikan Kualitas Citra

erbaikan kualitas citra (image enhancement) merupakan salah satu proses

P awal dalam pengolahan citra (image preprocessing). Perbaikan kualitas


diperlukan karena seringkali citra yang dijadikan objek pembahasan
mempunyai kualitas yang buruk, misalnya citra mengalami derau (noise) pada
saat pengiriman melalui saluran transmisi, citra terlalu terang/gelap, citra kurang
tajam, kabur, dan sebagainya. Melalui operasi pemrosesan awal inilah kualitas
citra diperbaiki sehingga citra dapat digunakan untuk aplikasi lebih lanjut,
misalnya untuk aplikasi pengenalan (recognition) objek di dalam citra

7.1 Lingkup Proses Perbaikan Kualitas Citra


Yang dimaksud dengan perbaikan kualitas citra adalah proses mendapatkan citra
yang lebih mudah diinterpretasikan oleh mata manusia. Pada proses ini, ciri-ciri
tertentu yang terdapat di dalam citra lebih diperjelas kemunculannya [DUL97].
Secara matematis, image enhancement dapat diartikan sebagai proses mengubah
citra f(x, y) menjadi f ’(x, y) sehingga ciri-ciri yang dilihat pada f(x, y) lebih
ditonjolkan.

Proses-proses yang termasuk ke dalam perbaikan kualitas citra [DUL97]:


1. Pengubahan kecerahan gambar (image brightness)
2. Peregangan kontras (contrast stretching)
3. Pengubahan histogram citra.
4. Pelembutan citra (image smoothing)
5. Penajaman (sharpening) tepi (edge).
6. Pewarnaan semu (pseudocolouring)
7. Pengubahan geometrik

Bab 7_Perbaikan Kualitas Citra 91


Beberapa operasi image enhancemnent (4 dan 5) dapat dipandang sebagai operasi
penapisan untuk memperoleh citra yang lebih baik. Operasi penapisan adalah
adalah operasi konvolusi citra f(x, y) dengan penapis h(x, y):
f ‘(x, y) = h(x, y) * f(x, y) (7.1)

atau dalam ranah frekuensi:


F ’(u, v) = H(u, v)F(u, v) (7.2)

Pada umumnya, f(x,y) sudah diketahui sehingga persoalannya adalah memilih


h(x,y) sedemikian rupa sehingga f ’(x, y) merupakan citra yang menonjolkan ciri
tertentu dari f(x, y).

7.2 Pengubahan Kecerahan Gambar (Image


Brightness)
Untuk membuat citra lebih terang atau lebih gelap, kita melakukan pengubahan
kecerahan gambar. Kecerahan/kecemerlangan gambar dapat diperbaiki dengan
menambahkan (atau mengurangkan) sebuah konstanta kepada (atau dari) setiap
pixel di dalam citra. Akibat dari operasi ini, histogram citra mengalami
pergeseran.

Secara matematis operasi ini ditulis sebagai


f(x, y)’ = f(x, y) + b (7.3)

Jika b positif, kecerahan gambar bertambah, sebaliknya jika b negatif kecerahan


gambar berkurang.

Algoritma pengubahan kecerahan gambar ditunjukkan pada Algoritma 7.1. Citra


masukan mempunyai 256 derajat keabuan yang nilai-nilainya dari 0 sampai 255.
Intensitas pixel disimpan di dalam Image[0..N-1,0..M-1], sedangkan hasil
pengubahan tetap disimpan di dalam citra Image.

void ImageBrightness(citra Image, int N, int M, int b)


/* Mengubah kecerahan citar Image yang berukuran N × M dengan penambahan
intensitas setiap pixel sebesar b.
*/
{ int i, j, n;

for(i=0;i<=N-1;i++)
for(j=0;j<=M-1;j++)
Image[i][j]+=b;
}

Algoritma 7.1. Perhitungan histogram citra

92 Pengolahan Citra Digital


Nilai pixel hasil pengubahan mungkin ≤ derajat keabuan minimum (0) atau ≥
derajat keabuan maksimum (255). Karena itu, pixel tersebut perlu dilakukan
clipping ke nilai keabuan minimum atau ke nilai keabuan maksimum.

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.

(b) Histogram citra Zelda (orisinil)

(a) Citra Zelda (orisinil)

(d) Histogram citra Zelda setelah


penambahan kecerahan

(c) Citra Zelda setelah penambahan


kecerahan dengan b = 80

Gambar 7.1. Citra Zelda; Atas: sebelum operasi penambahan kecerahan terlihat agak gelap; Bawah:
Zelda setelah operasi penambahan kecerahan dengan b = 80.

Bab 7_Perbaikan Kualitas Citra 93


7.3 Peregangan Kontras
Kontras menyatakan sebaran terang (lightness) dan gelap (darkness) di dalam
sebuah gambar. Citra dapat dikelompokkan ke dalam tiga kategori kontras: citra
kontras-rendah (low contrast), citra kontras-bagus (good contrast atau normal
contrast), dan citra kontras-tinggi (high contrast). Ketiga kategori ini umumnya
dibedakan secara intuitif.

Citra kontras-rendah dicirikan dengan sebagian besar komposisi citranya adalah


terang atau sebagian besar gelap. Dari histogramnya terlihat sebagian besar
derajat keabuannya terkelompok (clustered) bersama atau hanya menempati
sebagian kecil dari rentang nilai-nilai keabuan yang mungkin. Jika pengelompokan
nilai-nilai pixel berada di bagian kiri (yang berisi nilai keabuan yang rendah),
citranya cenderung gelap. Jika pengelompokan nilai-nilai pixel berada di bagian
kanan (yang berisi nilai keabuan yang tinggi), citranya cenderung terang. Tetapi,
mungkin saja suatu citra tergolong kontras-rendah meskipun tidak terlalu terang
atau tidak terlalu gelap bila semua pengelompokan nilai keabuan berada di tengah
histogram.

Citra kontras-bagus memperlihatkan jangkauan nilai keabuan yang lebar tanpa


ada suatu nilai keabuan yang mendominasi. Histogram citranya memperlihatkan
sebaran nilai keabuan yang relatif seragam.

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.

Citra dengan kontras-rendah dapat diperbaiki kualitasnya dengan operasi


peregangan kontras. Melalui operasi ini, nilai-nilai keabuan pixel akan merentang
dari 0 sampai 255 (pada citra 8-bit), dengan kata lain seluruh nilai keabuan pixel
terpakai secara merata.

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.

94 Pengolahan Citra Digital


(a) Citra Lena yang terlalu gelap Histogram
(kontras rendah)

(b) Citra Lena yang terlalu terang Histogram


(kontras tinggi)

(c) Citra Lena yang bagus (normal) Histogram


(kontras bagus)
Gambar 7. 2. Tiga buah citra Lena dengan tiga macam kontras.

Bab 7_Perbaikan Kualitas Citra 95


Algoritma peregangan kontras adalah sebagai berikut:
1. Cari batas bawah pengelompokan pixel dengan cara memindai (scan)
histogram dari nilai keabuan terkecil ke nilai keabuan terbesar (0 sampai 255)
untuk menemukan pixel pertama yang melebihi nilai ambang pertama yang
telah dispesifikasikan.
2. Cari batas atas pengelompokan pixel dengan cara memindai histogram dari
nilai keabuan tertinggi ke nilai keabuan terendah (255 sampai 0) untuk
menemukan pixel pertama yang lebih kecil dari nilai ambang kedua yang
dispesifikasikan.
3. Pixel-pixel yang berada di bawah nilai ambang pertama di-set sama dengan
0, sedangkan pixel-pixel yang berada di atas nilai ambang kedua di-set sama
dengan 255.
4. Pixel-pixel yang berada di antara nilai ambang pertama dan nilai ambang
kedua dipetakan (diskalakan) untuk memenuhi rentang nilai-nilai keabuan
yang lengkap (0 sampai 255) dengan persamaan:

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

Gambar 7. 3 Peregangan kontras

96 Pengolahan Citra Digital


7.4 Pengubahan Histogram Citra
Untuk memperoleh histogram citra sesuai dengan keinginan kita, maka penyebaran
nilai-nilai intensitas pada citra harus diubah. Terdapat dua metode pengubahan
citra berdasarkan histogram:
1. Perataan historam (histogram equalization)
Nilai-nilai intensitas di dalam citra diubah sehingga penyebarannya seragam
(uniform).

2. Spesifikasi histogram (histogram spesification)


Nilai-nilai intensitas di dalam citra diubah agar diperoleh histogram dengan
bentuk yang dispesifikasikan oleh pengguna.

Kedua macam pengubahan histogram citra ini dibahas lebih rinci di dalam
upabab 7.5 dan 7.6 di bawah ini.

7.5 Perataan Histogram


Sebagaimana telah dijelaskan pada pembahasan terdahulu, histogram citra
memberikan informasi tentang penyebaran intensitas pixel-pixel di dalam citra.
Misalnya, citra yang terlalu terang atau terlalu gelap memiliki histogram yang
sempit.

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.

Karena histogram menyatakan peluang pixel dengan derajat keabuan tertentu,


maka rumus menghitung histogram ditulis kembali sebagai fungsi peluang
nk
Pr ( rk ) = (7.5)
n

yang dalam hal ini,


k
rk = ,0≤k ≤L–1 (7.6)
L −1

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.

Bab 7_Perbaikan Kualitas Citra 97


Contohnya, jika L = 8, maka nilai-nilai rk dinyatakan di dalam tabel 7.1.

Tabel 7.1 Nilai-nilai rk jika L = 8

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

Yang dimaksud dengan perataan histogram adalah mengubah derajat keabuan


suatu pixel (r) dengan derajat keabuan yang baru (s) dengan suatu fungsi
transformasi T, yang dalam hal ini s = T(r). Gambar 7.4 memperlihatkan
transformasi r menjadi s.

Dua sifat yang dipertahankan pada transformasi ini:


1. Nilai s merupakan pemetaan 1 ke 1 dari r. Ini untuk menjamin representasi
intensitas yang tetap. Ini berarti r dapat diperoleh kembali dari r dengan
transformasi invers:

r = T −1 ( s ) , 0 ≤s≤1 (7.7)

2. Untuk 0 ≤ r i ≤ 1, maka 0 ≤ T(r) ≤ 1. Ini untuk menjamin pemetaan T


konsisten pada rentang nilai yang diperbolehkan.

sk = T(rk)

r
0 rk 1

Gambar 7. 4 Fungsi transformasi

98 Pengolahan Citra Digital


Untuk fungsi histogram yang menerus,
r


s = T ( r ) = Pr ( w) dw
0
, 0 ≤r≤1 (7.8)

yang dalam hal ini w adalah peubah bantu.

Dalam bentuk diskrit, nilai-nilai s diperoleh dengan persamaan berikut:


k k
nj
s k = T ( rk ) = ∑ n ∑ P (r )= r j (7.9)
j =0 j =0

yang dalam hal ini, 0 ≤ rk ≤ 1, k = 0, 1, 2, …, L – 1

Contoh 7.1. [GON77] Misalkan terdapat citra yang berukuran 64 × 64 dengan


jumlah derajat keabuan (L) = 8 dan jumlah seluruh pixel (n) = 64 × 64 = 4096:

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

Gambar 7.5 adalah histogram citra semula sebelum perataan.


Pr(rk)
0.30

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

Bab 7_Perbaikan Kualitas Citra 99


Perhitungan perataan histogram adalah sbb:
0
s 0 = T ( r0 ) = ∑ P (r ) = P (r ) = 0.19
r j r 0
j= 0
1
s1 = T ( r1 ) = ∑ P (r ) = P (r ) + P (r ) = 0.19 + 0.25 = 0.44
r j r 0 r 1
j =0
2
s 2 = T ( r2 ) = ∑ P (r ) = P (r ) + P (r ) + P (r ) = 0.19 + 0.25 + 0.21 = 0.65
r j r 0 r 1 r 2
j =0

dan seterusnya, diperoleh:


s3 = 0.81 s6 = 0.98
s4 = 0.89 s7 = 1.00
s5 = 0.95

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

100 Pengolahan Citra Digital


Notasi untuk tiap hasil transformasi didefinisi ulang menjadi:
s0 = 1/7, s1 = 3/7, s2 = 5/7, s3 = 6/7, s4 = 1

Karena r0 = 0 dipetakan ke s0 = 1/7, terdapat 790 pixel hasil transformasi yang


memiliki nilai intensitas 1/7. Selanjutnya, s1 = 3/7 memiliki 1023 pixel, s2 =5/7
memiliki 850 pixel. Juga, karena r3 dan r4 dipetakan ke nilai yang sama, s3 = 6/7,
maka jumlah pixel yang bernilai 6/7 adalah 656 + 329 = 985. Jumlah pixel hasil
transformasi diringkas pada tabel di bawah ini:

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

Gambar 7.5 adalah histogram citra hasil perataan. ¾


Ps(sk )

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.

Bab 7_Perbaikan Kualitas Citra 101


Meskipun perataan histogram bertujuan menyebarkan secara merata nilai-nilai
derajat keabuan, tetapi seringkali histogram hasil perataan tidak benar-benar
tersebar secara merata (misalnya pada contoh di atas). Alasannya adalah :
1. Derajat keabuan terbatas jumlahnya. Nilai intensitas baru hasil perataan
merupakan pembulatan ke derajat keabuan terdekat.
2. Jumlah pixel yang digunakan sangat terbatas.

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

Gambar 7. 6. Contoh perataan histogram pada citra anjing collie

102 Pengolahan Citra Digital


Algoritma perataan histogram ditunjukkan pada Algoritma 7.2 [HEN95]. Citra
masukan mempunyai 256 derajat keabuan yang nilai-nilainya dari 0 sampai 255.
Intensitas pixel disimpan di dalam Image[0..N-1][0..M-1]. Histogram citra
semula disimpan di dalam tabel Hist[0..255] yang bertipe riil. Histogram
hasil perataan disimpan di dalam HistEq[0..255] yang bertipe integer.

void PerataanHistogram(citra Image, int N, int M)


/* Mengubah citra Image yang berukuran N × M dengan melakukan perataan
histogram (histogram equalization).
*/
{
int i, j;
float sum, float Hist[256];
int HistEq[256]; /* histogram hasil perataan */

histogram(Image,N,M,Hist); /* hitung histogram citra */


for(i=0;i<256;i++)
{
sum=0.0;
for (j=0;j<=i;j++)
sum=sum+Hist[j];
HistEq[i]=floor(255*sum);
}
/* update citra sesuai histogram hasil perataan */
for(i=0;i<=N-1;i++)
for(j=0;j<=M-1;j++)
Image[i][j]=HistEq[Image[i][j]];

Algoritma 7.2 Perataan histogram citra

7.6 Spesifikasi Histogram


Perataan histogram memetakan histogram citra semula menjadi histogram yang
seragam. Bila histogram yang diinginkan tidak seragam, maka cara ini tidak dapat
digunakan.

Metode spesifikasi histogram (histogram spesification) memberikan cara menghasilkan


histogram yang ditentukan oleh pengguna. Cara pembentukan histogramnya
memanfaatkan sifat pada perataan histogram. Bila fungsi transformasi pada
perataan histogram menghasilkan histogram semula menjadi histogram yang
seragam, maka fungsi balikannya (inverse) memetakan histogram yang seragam
menjadi histogram semula. Sifat ini dapat dimanfaatkan untuk mengubah
histogram citra menjadi histogram lain yang tidak seragam.

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,

Bab 7_Perbaikan Kualitas Citra 103


r


s = T ( r ) = Pr ( w) dw
0

Jika histogram yang diinginkan sudah dispesifikasikan, kita dapat melakukan


perataan histogram pula dengan fungsi transformasi G:
z


v = G ( z ) = Pz ( w) dw
0
(7.10)

Balikan (invers) dari fungsi G,

z = G −1 ( v ) (7.11)

akan menghasilkan histogram yang diinginkan kembali.

Dengan mengganti v dengan s pada persamaan yang terakhir,

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.

Algoritma spesifikasi histogram adalah sebagai berikut:

1. Misalkan Pr(r) adalah histogram citra semula. Lakukan perataan histogram


terhadap citra semula dengan fungsi transformasi T,
r


s = T ( r ) = Pr ( w) dw
0

Dalam bentuk diskrit, nilai-nilai s diperoleh dengan persamaan berikut:


k k
nj
s k = T ( rk ) = ∑ n ∑ P (r )= r j
j =0 j =0

2. Tentukan histogram yang diinginkan, misalkan Pz(z) adalah histogram yang


diinginkan. Lakukan perataan histogram dengan fungsi transformasi G,
z


v = G ( z ) = Pz ( w) dw
0

104 Pengolahan Citra Digital


Dalam bentuk diskrit, nilai-nilai v diperoleh dengan persamaan berikut:

k k
nj
v k = G ( zk ) = ∑ n ∑ P (z )= z j
j =0 j =0

3. Terapkan fungsi transformasi balikan, z = G-1(s) terhadap histogram hasil


langkah 1. Caranya adalah dengan mencari nilai-nilai s yang memberi nilai z
terdekat.

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

Ketiga langkah di dalam algoritma spesifikasi histogram di atas digambarkan


dalam bagan pada Gambar 7.7.

T(r) G-1 (s)


Pr(r) Histogram Seragam Pz(z)

Gambar 7. 7 Langkah-langkah metode spesifikasi histogram

Contoh 7.2. [GON77] Tinjau kembali citra yang berukuran 64 × 64 dengan


jumlah derajat keabuan (L) = 8 dan jumlah seluruh pixel (n) = 64 × 64 = 4096.
Tabel histogram citra semula dan tabel histogram yang diinginkan adalah sebagai
berikut:

Tabel histogram citra semula Tabel histogram yang diinginkan

rk nk Pr(rk) = nk/n zk Pz(zk)


0/7 = 0.00 790 0.19 0/7 = 0.00 0.00
1/7 = 0.14 1023 0.25 1/7 = 0.14 0.00
2/7 = 0.29 850 0.21 2/7 = 0.29 0.00
3/7 = 0.43 656 0.16 3/7 = 0.43 0.15
4/7 = 0.57 329 0.08 4/7 = 0.57 0.20
5/7 = 0.71 245 0.06 5/7 = 0.71 0.30
6/7 = 0.86 122 0.03 6/7 = 0.86 0.20
7/7 = 1.00 81 0.02 7/7 = 1.00 0.15

Bab 7_Perbaikan Kualitas Citra 105


Histogram citra semula dan histogram yang diinginkan diperlihatkan secara grafis
pada Gambar 7.8.
Pz(zk)
Pr(rk )
0.30 0.30
0.25 0.25
0.20 0.20
0.15 0.15
0.10 0.10
0.05 0.05
rk zk
0 1/7 3/7 5/7 1 0 1/7 3/7 5/7 1

Histogram citra semula: Histogram yang diinginkan

Gambar 7. 8 Histogram citra semula dan histogram yang diinginkan

Langkah-langkah pembentukan histogram adalah sebagai berikut:

Langkah 1: Hasil perataan histogram terhadap citra semula,


k k
nj
s k = T ( rk ) = ∑ n ∑ P (r ) = r j
j =0 j =0

telah dilakukan (lihat Contoh 7.1), dan ini hasilnya:

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

Langkah 2: Lakukan perataan terhadap histogram yang diinginkan, Pz(z), dengan


persamaan
k k
nj
v k = G ( zk ) = ∑ n = ∑ P (z ) z j
j =0 j =0

106 Pengolahan Citra Digital


Hasilnya adalah sbb:
v0 = G(z0) = 0.00 v4 = G(z4) = 0.35
v1 = G(z1) = 0.00 v5 = G(z5) = 0.65
v2 = G(z2) = 0.00 v6 = G(z6) = 0.85
v3 = G(z3) = 0.15 v7 = G(z7) = 1.00

Langkah 3: Gunakan transformasi z = G-1(s) untuk memperoleh nilai z dari nilai s


hasil perataan histogram.
s0 = 1/7 ≈ 0.14 paling dekat dengan 0.15 = G(z3), jadi G-1(0.14) = z3 =1/7
s1 = 3/7 ≈ 0.43 paling dekat dengan 0.35 = G(z4), jadi G-1(0.43) = z4 =4/7
s2 = 5/7 ≈ 0.71 paling dekat dengan 0.65 = G(z5), jadi G-1(0.71) = z5 =5/7
s3 = 6/7 ≈ 0.86 paling dekat dengan 0.85 = G(z6), jadi G-1(0.86) = z6 =6/7
s4 = 1 ≈ 1.00 paling dekat dengan 1.00 = G(z7), jadi G-1(1.00) = z7 =1

Diperoleh pemetaan langsung sebagai berikut:


r0 = 0 → z3 = 3/7 r4 = 4/7 → z6 = 6/7
r1 = 1/7 → z4 = 4/7 r5 = 5/7 → z7 = 1
r2 = 2/7 → z5 = 5/7 r6 = 6/7 → z7 = 1
r3 = 3/7 → z6 = 6/7 r7 = 1 → z7 = 1

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.

Selanjutnya, tidak ada pixel yang mempunyai intensitas z0 = 0, z1 = 1/7, dan z2 =


2/7, karena tidak ada rk yang dipetakan ke nilai-nilai z tersebut.

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

Bab 7_Perbaikan Kualitas Citra 107


Histogram yang terbentuk:
Pz(zk)

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.

Dalam praktek, mungkin terdapat ambiguitas pada nilai transformasi balikan, G-


1
(s). Dengan kata lain, nilai transformasi balikan dari s ke z tidak tunggal. Hal ini
terjadi karena: (i) proses pembulatan G-1(s) ke nilai intensitas terdekat, atau (ii)
terdapat nilai intensitas yang tidak terisi di dalam histogram spesifikasi. Solusi
termudah untuk masalah ini adalah memilih nilai z yang terdekat dengan
histogram yang dispesifikasikan.

Algoritma Spesifikasi Histogram ditunjukkan pada Algoritma 7.3. Citra masukan


mempunyai 256 derajat keabuan yang nilai-nilainya dari 0 sampai 255. Intensitas
pixel disimpan di dalam Image[0..N-1][0..M-1]. Hasil perataan
histogram dari citra semula disimpan kembali di dalam matriks Image[0..N-
1][0..M-1]. Histogram yang dispesifikasikan disimpan di dalam
Spec[0..255]. Histogram hasil perataan dari Spec disimpan di dalam tabel
SpecEq[0..255]. Histogram hasil transformasi balikan disimpan di dalam
tabel InvHist[0..255] .

void SpesifikasiHistogram(citra Image, int N, int M, float Spec[256])


/* Mengubah citra Image yang berukuran N × M berdasarkan histogram yang
dispesifikasikan oleh pengguna (Spec).
*/
{
float sum, Hist[256];
int i, j, minj, minval, HistEq[256], SpecEq[256], InvHist[256];

/* lakukan perataan histogram terhadap citra semula */


histogram(Image,N,M,Hist); /* hitung histogram citra */
for(i=0;i<256;i++)
{
sum=0.0;

108 Pengolahan Citra Digital


for (j=0;j<=i;j++)
sum=sum+Hist[j];
HistEq[i]=floor(255*sum);
}

/* lakukan perataan histogram terhadap citra Spec */


for(i=0;i<=255;i++)
{
sum=0.0;
for (j=0;j<=i;j++)
sum=sum+Spec[j];
SpecEq[i]=floor(255*sum);
}

/* lakukan transformasi balikan */


for(i=0;i<=N-1;i++)
{
minval=abs(HistEq[i] – SpecEq[0]);
minj=0;
for(j=0;j<=255;j++)
if (abs(HistEq[i] – SpecEq[j]) < minval)
{
minval = abs(HistEq[i] – SpecEq[j]);
minj=j;
}
InvHist[i]=minj;
}

/* update citra setelah pembentukan histogram */


for(i=0;i<=N-1;i++)
for(j=0;j<=M-1;j++)
Image[i][j]]=InvHist[Image[i][j]];

Algoritma 7.3 Pengubahan citra berdasarkan histogram yang dispesifikasikan

7.7 Pelembutan Citra (Image Smoothing)


Pelembutan citra (image smoothing) bertujuan untuk menekan gangguan (noise)
pada citra. Gangguan tersebut biasanya muncul sebagai akibat dari hasil
penerokan yang tidak bagus (sensor noise, photographic grain noise) atau akibat
saluran transmisi (pada pengiriman data).

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.

Pixel yang mengalami gangguan umumnya memiliki frekuensi tinggi


(berdasarkan analisis frekuensi dengan transformasi Fourier). Komponen citra
yang berfrekuensi rendah umumnya mempunyai nilai pixel konstan atah berubah
sangat lambat. Operasi pelembutan citra dilakukan untuk menekan komponen
yang berfrekuensi tinggi dan meloloskan komponen yang berfrekuensi rendah.

Bab 7_Perbaikan Kualitas Citra 109


Gambar 7.9. Citra Lena yang mengalami gangguan berupa spike

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)

110 Pengolahan Citra Digital


Tetangga pixel +

+ +

radius = ∆x
(a)

Tetangga pixel +

+ +

radius = √2 ∆x
(b)

Gambar 7. 10. Skema perata-rataan

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

Algoritma pelembutan citra dengan penapis 3 × 3 ditunjukkan pada Algoritma 7.4.

void PerataanCitra(citra Image, citra ImageResult, int N, int M)


/* Melembutkan citra Image yang berukuran N × M dengan melakukan
konvolusi citra Image dengan penapis rerata yang berukuran 3 × 3. Hasil
pelembutna disimpan di dalam ImageResult.
*/
{ int i, j;

for (i=1; i<=N-1; i++)

Bab 7_Perbaikan Kualitas Citra 111


for(j=1; j<=M-1; j++)
{
ImageResult[i][j]=
Image[i-1][j-1] + Image[i-1][j] + Image[i-1,j+1]+
Image[i][j-1] + Image[i][j] + Image[i,j+1] +
Image[i+1][j-1] + Image[i+1][j] + Image[i+1,j+1];
ImageResult[i][j]=ImageResult[i][j]/9;
}
}

Algoritma 7.4. Operasi pelembutan citra dengan penapis rerata 3 × 3.

Operasi penapisan ini mempunyai efek pemerataan derajat keabuan, sehingga


gambar yang diperoleh tampak lebih kabur kontrasnya. Efek pengaburan ini
disebut efek blurring. Gambar 7.11 adalah hasil pelembutan citra Lena dari
Gambar 7.9 dengan penapis rata-rata 3 × 3.

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)

dengan T adalah nilai ambang yang dispesifikasikan.

Gambar 7. 11. Citra Lena yang sudah dilembutkan dengan penapis rerata 3 × 3

112 Pengolahan Citra Digital


Penapis h(x,y) pada operasi pelembutan citra disebut juga penapis lolos-rendah
(low-pass filter), karena penapis tersebut menekan komponen yang berfrekuensi
tinggi (misalnya pixel gangguan, pixel tepi) dan meloloskan komponen yang
berfrekuensi rendah.

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.

Ilustrasi konvolusi dengan penapis rata-rata 3 × 3 terhadap citra yang


mengandung pixel derau diperlihatkan di bawah ini. Pixel yang mengalami
gangguan dimisalkan bernilai 17, sedangkan nilai pixel tetangganya (yang tidak
mengalami gangguan) bernila i rendah, misalkan 8. Efek dari penapis lolos-rendah
adalah sbb: pixel-pixel tetangga tidak mengalami perubahan (kecuali bila
terdapat perbedaan nilai atau gradien antara pixel-pixel yang bertetangga),
sedangkan pixel derau nilainya turun menjadi 9:

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

Nilai 9 ini diperoleh dari hasil perhitungan konvolusi:


f ’(1,1) = (8 + 8 + 8 + 8 + 17 + 8 + 8 + 8 + 8)/9 = 81/9 = 9

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

Bab 7_Perbaikan Kualitas Citra 113


Jika citra hasil penapisan lolos-rendah dikurangi dari citra semula (yang
mengandung derau), maka yang dihasilkan adalah peningkatan relatif komponen
citra yang berfrekuensi tinggi tanpa peningkatan komponen derau. Akibatnya,
citra hasil pengurangan muncul lebih tajam dari citra semula. Ini dapat digunakan
untuk menonjolkan bagian citra yang tidak jelas, misalnya tertutup oleh kabut
atau awan. Aplikasi ini dapat diterapkan untuk mendapatkan citra kota Jakarta
yang lebih bagus daripada citra kota Jakarta yang tertutup oleh kabut.

Penapis lolos-rendah yang disebutkan di atas merupakan penapis lanjar (linear).


Operasi pelembutan dapat juga dilakukan dengan menggunakan penapis nirlanjar,
yaitu:
a. Penapis minimum (min filter)
b. Penapis maksimum (max filter)
c. Penapis median (median filter)

Penapis nirlanjar sebenarnya tidak termasuk kategori operasi konvolusi yang


lazim. Cara kerja penapis tersebut berbeda dari penapis lanjar. Operasi dengan
penapis nirlanjar dihitung dengan mengurutkan nilai intensitas sekelompok pixel,
lalu mengganti nilai pixel yang sedang diproses dengan nilai tertentu dari
kelompok tersebut (misalnya nilai median dari kelompok pixel, nilai maksimum
atau nilai minimum dari kelompok pixel)

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.

114 Pengolahan Citra Digital


13 10 15 14 18 13 10 15 14 18
12 10 10 10 15 12 10 10 10 15
11 11 35 10 10 11 11 10 10 10
13 9 12 10 12 13 9 12 10 12
13 12 9 8 10 13 12 9 8 10

(a) Pixel bernilai 35 terkena derau (b) 35 diganti dengan median dari
kelompok 3 × 3 pixel

Gambar 7. 12. Penghilangan derau dengan penapis median 3 × 3.

Selain berbentuk kotak, jendela pada penapis median dapat bermacam-macam


bentuknya, seperti palang (cross), lajur vertikal (vertical strip), atau lajur
horizontal (horizontal strip). Gambar 7.13 adalah hasil pelembutan citra dari
Gambar 7.9 dengan penapis median 3 × 3.

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.

Gambar 7. 13. Citra Lena yang dilembutkan dengan penapis median.

Bab 7_Perbaikan Kualitas Citra 115


Cara lain yang dapat dilakukan pada pelembutan citra adalah merata-ratakan
derajat keabuan setiap pixel dari citra yang sama yang diambil berkali-kali.
Misalnya untuk gambar yang sama direkam dua kali, lalu dihitung intensitas rata-
rata untuk setiap pixel:
1
f ‘(x,y) = { f1(x, y) + f2(x, y) } (7.16)
2

7.8 Penajaman Citra (Image Sharpening)


Operasi penajaman citra bertujuan memperjelas tepi pada objek di dalam citra.
Penajaman citra merupakan kebalikan dari operasi pelembutan citra karena
operasi ini menghilangkan bagian citra yang lembut.

Operasi penajaman dilakukan dengan melewatkan citra pada penapis lolos-tinggi


(high-pass filter). Penapis lolos-tinggi akan meloloskan (atau memperkuat)
komponen yang berfrekuensi tinggi (misalnya tepi atau pinggiran objek) dan akan
menurunkan komponen berfrekuensi rendah. Akibatnya, pinggiran objek telihat
lebih tajam dibandingkan sekitarnya.

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

116 Pengolahan Citra Digital


Selain untuk mempertajam gambar, penapis lolos-tinggi juga digunakan untuk
mendeteksi keberadaan tepi (edge detection). Dalam hal ini, pixel-pixel tepi
ditampilkan lebih terang (highlight) sedangkan pixel-pixel bukan tepi dibuat gelap
(hitam). Masalah pendeteksian tepi akan dibahas dalam pokok bahasan tersendiri.

Penapis Lolos-Tinggi
Aturan penapis lolos-tinggi [GAL95]:
1. koefisien penapis boleh positif, negatif, atau nol
2. jumlah semua koefisien adalah 0 atau 1

Jika jumlah koefisien = 0, maka komponen berfrekuensi rendah akan turun


nilainya, sedangkan jika jumlah koefisien sama dengan 1, maka komponen
berfrekuensi rendah akan tetap sama dengan nilai semula.
Contoh-contoh penapis lolos-tinggi:

 − 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.

Gambar 7.15 mempelihatkan konvolusi dengan penapis lolos-tinggi, gambar (a)


adalah citra yang tidak mempunyai pixel tepi, dan gambar (b) adalah citra yang
mempunyai pixel tepi. Penapis lolos-tinggi yang digunakan adalah penapis (i) dan (ii).

Karena koefisien penapis mengandung nilai negatif, maka konvolusi mungkin


saja menghasilkan pixel bernilai negatif. Meskipun intensitas bernilai negatif
menarik, tetapi kita tidak dapat menampilkannya. Untuk alasan terakhir ini,
implementasi konvolusi men-set nilai negatif menjadi nilai 0. Cara lainnya adalah
dengan mengambil nilai mutlaknya atau menskalakan semua nilai-nilai pixel
secara menaik sehingga nilai yang paling negatif menjadi 0.

Bab 7_Perbaikan Kualitas Citra 117


Citra semula: Citra semula:

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

Kurva yang merepresentasikan citra: Kurva yang merepresentasikan citra:


f(x,y) f(x,y)

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

118 Pengolahan Citra Digital


Gambar 7.16 adalah contoh lain penajaman gambar terhadap citra girl, masing-
masing dengan penapis (ii), (iii), dan (iv).

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

Bab 7_Perbaikan Kualitas Citra 119


7.9 Pewarnaan Semu
Pewarnaan semu adalah proses memberi warna tertentu pada nilai-nilai pixel
suatu citra skala-abu pada suatu citra berdasarkan kriteria tertentu, misalnya suatu
warna tertentu untuk suatu interval derajat keabuan tertentu. Hal ini dilakukan
karena mata manusia mudah membedakan banyak jenis warna.

7.10 Koreksi Geometrik


Koreksi geometrik dilakukan pada citra yang memiliki gangguan yang terjadi
pada waktu proses perekaman citra, misalnya pergeseran koordinat citra
(translasi), perubahan ukuran citra, dan perubahan orientasi koordinat citra
(skew). Proses koreksi geometri untuk meningkatkan kualitas citra tersebut
disebut juga koreksi geometri. Koreksi geometri yang sederhana adalah dengan
operasi geometri sederhana seperti rotasi, translasi, dan penskalaan citra.

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.

120 Pengolahan Citra Digital


Bab 8

Pendeteksian Tepi (Edge Detection)

eningkatan kualitas citra (image enhancement) bertujuan menghasilkan citra

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.

Faktor kunci dalam mengekstraksi ciri adalah kemampuan mendeteksi keberadaan


tepi (edge) dari objek di dalam citra. Setelah tepi objek diketahui, langkah
selanjutnya dalam analisis citra adalah segmentasi, yaitu mereduksi citra menjadi
objek atau region, misalnya memisahkan objek-objek yang berbeda dengan
mengekstraksi batas-batas objek (boundary). Langkah terakhir dari analisis citra
adalah klasifikasi, yaitu memetakan segmen-segmen yang berbeda ke dalam kelas
objek yang berbeda pula.

8.1 Definisi Tepi


Yang dimaksud dengan tepi (edge) adalah perubahan nilai intensitas derajat
keabuan yang mendadak (besar) dalam jarak yang singkat (Gambar 8.1).
Perbedaan intensitas inilah yang menampakkan rincian pada gambar. Tepi
biasanya terdapat pada batas antara dua daerah berbeda pada suatu citra. Tepi
dapat diorientasikan dengan suatu arah, dan arah ini berbeda-beda pada
bergantung pada perubahan intensitas.

Bab 8_Pendeteksian Tepi (Edge Detection) 121


jarak

perubahan intensitas
α α = arah tepi

Gambar 8.1 Model tepi satu-matra

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.

3. Tepi yang mengandung derau (noise)


Umumnya tepi yang terdapat pada aplikasi computer vision mengandung
derau. Operasi peningkatan kualitas citra (image enhancement) dapat dilakukan
terlebih dahulu sebelum pendeteksian tepi.

derajat derajat derajat


keabuan keabuan keabuan

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

122 Pengolahan Citra Digital


8.2 Tujuan Pendeteksian Tepi
Pendeteksian tepi merupakan langkah pertama untuk melingkupi informasi di
dalam citra. Tepi mencirikan batas-batas objek dan karena itu tepi berguna untuk
proses segmentasi dan identifikasi objek di dalam citra.

Tujuan operasi pendeteksian tepi adalah untuk meningkatkan penampakan garis


batas suatu daerah atau objek di dalam citra. Karena tepi termasuk ke dalam
komponen berfrekuensi tinggi, maka pendeteksian tepi dapat dilakukan dengan
penapis lolos-tinggi.

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)

8.3 Pendeteksian Tepi dengan Operator Gradien


Pertama
Perubahan intensitas yang besar dalam jarak yang singkat dipandang sebagai
fungsi yang memiliki kemiringan yang besar. Kemiringan fungsi biasanya
dilakukan dengan menghitung turunan pertama (gradient). Karena citra f(x,y)
adalah fungsi dwimatra dalam bentuk diskrit, maka turunan pertamanya adalah
secara parsial, masing-masing dalam arah-x dan dalam arah-y, sebagai berikut:

 ∂f 
  G x 
∇f =  ∂∂fx  =   (8.1)
  G y 
 ∂y 

yang dalam hal ini,


∂f ( x, y ) f ( x + ∆x, y ) − f ( x, y )
Gx = = (8.2)
∂x ∆x
∂f ( x , y ) f ( x , y + ∆y ) − f ( x, y )
Gy = = (8.3)
∂y ∆y

Biasanya ∆x = ∆y = 1 , sehingga persamaan turunan pertama menjadi:

∂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

Bab 8_Pendeteksian Tepi (Edge Detection) 123


Titik-titik yang terlibat dalam perhitungan turunan pertama diperlihatkan pada
Gambar 8.3.

y
(x-1,y+1) (x ,y+ 1) (x+ 1,y+ 1)

(x-1,y) (x,y) (x+ 1,y)

(x-1,y-1) (x,y-1) (x+ 1,y-1)

Gambar 8.3 Titik -titik yang dilibatkan dalam perhitungan gradien

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:

Citra Gradien-x Gradien-y Arah gradien


1 1 1 1 1 0 0 0 0 * 0 0 0 0 0 * * * * *
1 1 1 1 1 0 0 0 0 * * * * b b
  0 0 0 1 1
1 1 1 0 0 0 0 −1 0 * 0 0 1 0 0 * * * *
 
1 1 0 0 0 0 −1 0 0 * 0 0 0 0 0 * ↔ * * *
1 1 0 0 0  0 −1 0 0 * * * * * * * ↔ * * *
¾

124 Pengolahan Citra Digital


Berdasarkan konvolusi dengan kedua mask tersebut, kita menghitung kekuatan
tepi, G[f(x,y)], yang merupakan magnitudo dari gradien, dan arah tepi, α(x,y),
untuk setiap pixel:

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

(i) G[f(x,y)] = G x 2 + G y 2 , atau

(ii) G[f(x,y)] = G x + G y , atau

(iii) G[f(x,y)] = max{ G x 2 , G y 2 } , atau

(iv) G[f(x,y)] = max{ G x , G y } .

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.

Bab 8_Pendeteksian Tepi (Edge Detection) 125


Gambar 8.4 Deteksi semua tepi citra Lena, camera, dan botol

126 Pengolahan Citra Digital


Selain operator gradien yang sudah disebutkan di atas, masih ada beberapa
operator gradien pertama yang lain yang dapat digunakan untuk mendeteksi tepi
di dalam citra, yaitu:
(a) Operator gradien selisih-terpusat (center-difference):
∂f ( x , y ) f ( x + 1, y ) − f ( x − 1, y )
Dx ( x, y ) = = (8.9)
∂x 2

∂f ( x, y ) f ( x, y + 1) − f ( x, y − 1)
Dy ( x, y ) = = (8.10)
∂y 2

yang ekivalen dengan mask berikut:


1
D2 ( x ) = [− 1 0 1] dan D2 ( y ) =  0 
− 1

(b) Operator Sobel


Tinjau pengaturan pixel di sekitar pixel (x,y):

a0 a1 a2 
a ( x, y) a 
 7 3
 a 6 a5 a4 

Operator Sobel adalah magnitudo dari gradien yang dihitung dengan

M= s 2x + s 2y

yang dalam hal ini, turunan parsial dihitung dengan

s x = ( a2 + ca3 + a 4 ) − (a 0 + ca 7 + a 6 ) (8.11)

s y = ( a 0 + ca1 + a 22 ) − ( a 6 + ca5 + a4 ) (8.12)

dengan konstanta c = 2. Dalam bentuk mask, sx dan sy dapat dinyatakan


sebagai

 − 1 0 1 1 2 1
S x =  − 2 0 2 dan 
Sy =  0 0 0 
 − 1 0 1 − 1 − 2 − 1

Bab 8_Pendeteksian Tepi (Edge Detection) 127


Arah tepi dihitung dengan persamaan

S 
α(x,y) = tan-1  y  (8.13)
 Sx 

Contoh 8.2. Contoh berikut ini memeperlihatkan pendeteksian tepi dengan


operator Sobel. Konvolusi pertama dilakukan terhadap pixel yang bernilai 1 (di
titik pusat mask):

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  

(i) citra semula (ii) hasil konvolusi

Nilai 18 pada citra hasil konvolusi diperoleh dengan perhitungan berikut:


Sx = (3)(-1) + (2)(-2) + (3)(-1) + (2)(1) + (6)(2) + (7)(1) = 11
Sy = (3)(1) + (4)(2) + (2)(1) + (3)(-1) + (5)(-2) + (7)(-1) = -7

M= s 2x + s 2y = 112 + ( −7 ) 2 ≅ S x + S y = 11 + − 7 = 18

Pada contoh ini, nilai M = s 2x + s 2y dihampiri dengan menghitung


M ≅ Sx + S y . ¾

Contoh 8.3. Di bawah ini contoh lain pendeteksian tepi dengan operator Sobel,
dimana hasil konvolusi diambangkan dengan T = 12.

Citra: gradien - x + gradien - y :

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 * * * * * * * * * *

128 Pengolahan Citra Digital


Hasil pengambangan dengan T = 12:
* * * * * * * * *
*
* 4 6 10 14 12 14 4 *
4
 
* 6 8 10 20 16 12 6 0 *
 
* 4 10 14 10 2 4 2 4 *
* 2 12 12 2 2 4 6 8 *
 
* * * * * * * * * *
¾

(c) Operator Prewitt


Persamaan gradien pada operator Prewitt sama seperti operator Sobel, tetapi
menggunakan nilai c = 1:

 − 1 0 1 1 1 1
Px =  − 1 0 1 dan

Py =  0 0 0 
 − 1 0 1 − 1 − 1 − 1

(d) Operator Roberts


Operator Roberts sering disebut juga operator silang (gambar 8.5). Gradien
Roberts dalam arah-x dan arah-y dihitung dengan rumus:
R+ ( x , y ) = f ( x + 1, y + 1) − f ( x , y ) (8.14)

R− ( x , y ) = f ( x, y + 1) − f ( x + 1, y ) (8.15)

f(x, y+1) f(x + 1, y+1)

f(x, y) f(x + 1, y)

Gambar 8. 5 Operator silang

Bab 8_Pendeteksian Tepi (Edge Detection) 129


Operator R+ adalah hampiran turunan berarah dalam arah 45°, sedangkan R-
adalah hampiran turunan berarah dalam arah 135°.

Dalam bentuk mask konvolusi, operator Roberts adalah:

1 0   0 1
R+ =   dan R− =  
0 − 1  − 1 0

Khusus untuk operator Roberts, arah tepi dihitung dengan rumus


π R
α ( x, y ) = + tan −1 ( − ) (8.17)
4 R+

Sedangkan kekuatan tepi umumnya dihitung dengan rumus

G[f(x,y)] = R+ + R−

Contoh 8.4. Contoh berikut ini memeperlihatkan pendeteksian tepi dengan


operator Roberts.

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  * * * * *

(i) citra semula (ii) hasil konvolusi

Nilai 4 pada pojok kiri atas pada citra hasil konvolusi diperoleh dengan perhitungan
sebagai berikut:
f ’[0,0] = ¦ 3 – 1 ¦ + ¦ 4 – 2 ¦ = 4

8.4 Pendeteksian Tepi dengan Operator Turunan


Kedua
Operator turunan kedua disebut juga operator Laplace. Operator Laplace
mendeteksi lokasi tepi lebih akurat khususnya pada tepi yang curam. Pada tepi
yang curam, turunan keduanya mempunyai persilangan nol (zero-crossing), yaitu
titik di mana terdapat pergantian tanda nilai turunan kedua (Gambar 8.6),

130 Pengolahan Citra Digital


sedangkan pada tepi yang landai tidak terdapat persilangan nol. Persilangan nol
merupakan lokasi tepi yang akurat.

Turunan kedua fungsi dengan dua peubah adalah:

∂2 f ∂2 f
∇2 f = + (8.18)
∂x 2 ∂y 2

f(x)

∂f /∂x

∂ 2f /∂x2

(a) Tepi landai (b) Tepi curam

Gambar 8. 6 Deteksi tepi dengan operator turunan kedua

Dengan menggunakan definisi hampiran selisih-mundur (backward difference


approximation):
∂f ( x, y ) f ( x , y ) − f ( x − ∆x, y )
G3 ( x) = = (8.19)
∂x ∆x
∂f ( x, y ) f ( x , y ) − f ( x , y − ∆y )
G3 ( y) = = (8.20)
∂y ∆y

Bab 8_Pendeteksian Tepi (Edge Detection) 131


maka
∂2 f ∂2 f
∇2 f = +
∂x 2 ∂y 2
= G1 (G3 ( x )) + G1 (G3 ( y ))
1 1
= G1 ( f ( x , y )) − G1 ( f ( x − ∆x , y )) + G1 ( f ( x , y )) − G1 ( f ( x , y − ∆y ))
∆x ∆y

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

Dengan mengasumsikan ∆x = ∆y = 1, maka diperoleh:

∇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 

132 Pengolahan Citra Digital


Kadang-kadang diinginkan memberi bobot yang lebih pada pixel tengah di antara
pixel tetangganya. Operator Laplace yang digunakan untuk tujuan ini adalah

1 4 1
 4 − 20 4 
 
 1 4 1 

Operator Laplace termasuk ke dalam penapis lolos-tinggi sebab jumlah seluruh


koefisiennya nol dan koefisiennya mengandung nilai negatif maupun positif.

Contoh 8.5. [GAL90] Contoh berikut ini memperlihatkan pendeteksian tepi


vertikal dengan operator Laplace:

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 * * * * * * *

(i) Citra semula (ii) Hasil konvolusi

8 +4

4 0

0 -4

Satu baris dari hasil pendeteksian tepi:


0 +4 –4 0 0

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 “|”. ¾

Bab 8_Pendeteksian Tepi (Edge Detection) 133


Contoh 8.6. [GAL90] Pendeteksian tepi diagonal (miring) dengan operator Laplace:

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 * * * * * * * *

(i) Citra semula (ii) Hasil konvolusi

Contoh 8.7. Pendeteksian tepi landai dengan operator Laplace:

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 * * * * * * * *

(i) Citra semula (ii) Hasil konvolusi

Satu baris dari hasil pendeteksian tepi:


0 +3 0 –3 0

Pada contoh di atas tidak terdapat persilangan nol; lokasi tepi yang sesungguhnya
ditentukan secara interpolasi. ¾

Kadangkala pendeteksian tepi dengan operator Laplace menghasilkan tepi-tepi


palsu yang disebabkan oleh gangguan pada gambar [DUL97]. Untuk mengurangi
kemunculan tepi palsu, citra disaring dulu dengan fungsi Gaussian (Gambar 8.7).

134 Pengolahan Citra Digital


f(x,y)

dihaluskan dengan
fungsi Gauss, G(x,y)

h(x,y)

operator Laplace,
∇2

k(x,y)

Gambar 8. 7 Skema pendeteksian tepi untuk citra yang mengalami gangguan.

Berdasarkan skema pada Gambar 8.7:

k ( x , y ) = ∇ 2h ( x, y ) (8.22)

dan
h ( x, y ) = f ( x , y ) * G ( x, y ) (8.23)

maka dapat dibuktikan bahwa

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

yang dalam hal ini,


( x 2 + y2 )
 x 2 + y 2 − 2σ 2  −
∇ G ( x, y ) = 
2
 e 2σ 2
(8.26)
 σ4 

Bab 8_Pendeteksian Tepi (Edge Detection) 135


Fungsi ∇2G(x,y) merupakan turunan kedua dari fungsi Gauss, kadang-kadang
disebut juga fungsi Laplacian of Gaussian (LoG) atau fungsi topi orang Mexico
(Mexican Hat), karena bentuk kurvanya seperti topi Meksiko.

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.

Contoh penapis LoG yang berukuran 5 × 5:

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 

Hasil pendeteksian tepi dengan operator Laplace dan Laplacian of Gaussian


diperlihatkan pada Gambar 8.8.

(a) (b)

136 Pengolahan Citra Digital


(c) (d)

Gambar 8. 8 (a) citra botol; (b) Laplace; (c) Laplace dengan bobot lebih; (d) Laplacian of Gaussian
(LoG)

8.5 Pendeteksian Tepi dengan Operator Kompas


Operator kompas (compass operator) digunakan untuk mendeteksi semua tepi
dari berbagai arah di dalam citra. Operator kompas yang dipakai untuk
pendeteksian tepi menampilkan tepi dari 8 macam arah mata angin: Utara, Timur
Laut, Timur, Tenggara, Selatan, Barat Daya, dan Barat Laut. Pendeteksian tepi
dilakukan dengan mengkonvolusikan citra dengan berbagai mask kompas, lalu
dicari nilai kekuatan tepi (magnitude) yang terbesar dan arahnya. Jika misalnya
digunakan sebanyak p buah mask kompas dan nilai kekuatan tepi pada pixel (x, y)
untuk semua mask adalah G1[f(x,y)], G2[f(x,y)], …, Gp[f(x,y)], maka besar
kekuatan tepi adalah:
G [ f ( x , y )] = max{Gi [ f ( x , y )] i = 1,2,..., p} (8.27)
i

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:

Bab 8_Pendeteksian Tepi (Edge Detection) 137


Utara Timur Laut Timur Tenggara
1 1 1 1 1 1 − 1 1 1  − 1 − 1 1
 1 −2 1   − 1 − 2 1 − 1 − 2 1  − 1 − 2 1
      
 − 1 − 1 − 1  − 1 − 1 1  − 1 1 1  1 1 1

Selatan Barat Daya Barat Barat Laut


 − 1 − 1 − 1 1 − 1 − 1 1 1 − 1 1 1 1
 1 −2 1  1 − 2 − 1 1 − 2 − 1 1 − 2 − 1
       
 1 1 1  1 1 1  1 1 − 1 1 − 1 − 1

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.

Tepi horizontal Tepi vertikal

Gambar 8. 9 Deteksi tepi horizontal dan vertikal dari citra San Fransisco

138 Pengolahan Citra Digital


Gambar 8. 10. Citra WTC1109

Tepi vertikal

Bab 8_Pendeteksian Tepi (Edge Detection) 139


Tepi horizontal
Gambar 8.10 (lanjutan).

140 Pengolahan Citra Digital


Bab 9

Kontur dan Representasinya

endeteksi tepi menghasilkan citra tepi yang berupa citra biner (pixel tepi

P berwarna putih, sedangkan pixel bukan-tepi berwarna hitam). Tetapi, tepi


belum memberikan informasi yang berguna karena belum ada keterkaitan
antara suatu tepi dengan tepi lainnya. Citra tepi ini harus diproses lebih lanjut
untuk menghasilkan informasi yang lebih berguna yang dapat digunakan dalam
mendeteksi bentuk-bentuk sederhana (misalnya garis lurus, lingkaran, elips, dan
sebagainya) pada proses analisis citra.

Rangkaian pixel-pixel tepi yang membentuk batas daerah (region boundary)


disebut kontur (contour) [JAI95]. Kontur dapat terbuka atau tertutup. Kontur
tertutup berkoresponden dengan batas yang mengelililingi suatu daerah lihat
Gambar 9.1(a). Pixel-pixel di dalam daerah dapat ditemukan dengan algoritma
pengisian (filling algorithm). Batas daerah berguna untuk mendeskripsikan
bentuk objek dalam tahap analisis citra (misalnya untuk mengenali objek).

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

Bab 9_Kontur dan Representasinya 141


9.1 Representasi Kontur
Representasi kontur dapat berupa senarai tepi (edge list) atau berupa kurva.
Senarai tepi merupakan himpunan terurut pixel-pixel tepi. Representasi kontur ke
dalam kurva merupakan representasi yang kompak dan mangkus untuk analisis
citra. Misalnya, rangkaian pixel tepi yang membentuk garis dapat direpresentasikan
hanya dengan sebuah persamaan garis lurus. Representasi semacam ini
menyederhanakan perhitungan selanjutnya seperti arah dan panjang garis.

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.

142 Pengolahan Citra Digital


Titik awal

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

Kode rantai: (A), 22222332244466666666667700221

Gambar 9.3 Contoh pengkodean batas objek dengan kode rantai.

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.

9.2 Transformasi Hough


Transformasi Hough menspesifikasikan kurva dalam bentuk parametrik. Kurva
dinyatakan sebagai bentuk parametrik
(x(u), y(u))

Bab 9_Kontur dan Representasinya 143


dari parameter u. Bentuk parametrik tersebut menspesifikasikan titik-titik
sepanjang kurva dari titik awal kurva p1 = (x(u1), y(u1) ke titik akhir p2 = (x(u2), y(u1).

Panjang kurva adalah


u2 2 2
 dx   dy 
L= ∫
u1
  +   du
 du   du 
(9.1)

Transformasi Hough menggunakan mekanisme voting untuk mengestimasi nilai


parameter. Setiap titik di kurva menyumbang suara untuk beberapa kombinasi
parameter. Parameter yang memperoleh suara terbanyak terpilih sebagai pemenang.

Pada awalnya, Transformasi Hough digunakan untuk mendeteksi garis lurus.


Namun, ia juga dapat digunakan untuk mendeteksi kurva sederhana lainnya
seperti lingkaran dana elips. Pembahasan dimulai dengan transformasi Hough
untuk mendeteksi keberadaan garis lurus di dalam citra tepi.

Mendeteksi Garis Lurus


Misalkan citra tepi berukuran n = N × M pixel. Cara yang paling sederhana
mendeteksi garis lurus adalah menemukan semua garis yang ditentukan oleh dua
buah pixel dan memeriksa apakah sebagian dari pixel tepi termasuk ke dalam
garis tersebut (cara exhaustive search).

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.

Transformasi Hough mengurangi kompleksitas komputasi dengan menggunakan


bentuk parametrik dan menggunakan mekanisme pemungutan suara terbanyak
(voting) untuk menentukan nilai parameter yang tepat.

Tinjau persamaan garis lurus:


y = mx + c (9.2)

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.

144 Pengolahan Citra Digital


Tinjau 3 buah titik pada sebuah garis lurus pada Gambar 9.4(a). Sembarang garis
yang melalui titik (x1,y1) berkoresponden dengan garis c = y1 – mx1 pada ruang
parameter m-c. Begitu juga, sembarang garis lurus yang melalui (x2,y2)
berkoresponden dengan garis c = y2 – mx2 dan sembarang garis lurus yang
melalui (x3,y3) berkoresponden dengan garis c = y3 – mx3 pada ruang m-c.
Perpotongan (m’,c’) dari ketiga garis pada ruang m-c tersebut menentukan garis
unik yang melalui (xi,yi), i = 1, 2, 3, di bidang X-Y.

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.

Karena itu, prosedur mendeteksi garis lurus adalah sebaga i berikut:


1. Ruang parameter didiskritkan sebagai matriks P(m, c), yang dalam hal ini m1
≤ m ≤ mK dan c1 ≤ c ≤ cL.
2. Tiap elemen pada ruang parameter diasumsikan sebagai akumulator.
Inisialisasi setiap elemen P(m, c) dengan 0.
3. Untuk setiap pixel tepi (xi, yi) –pixel tepi dicirikan mempunyai nilai intensitas
putih (1) dalam skala 0 - 1)– hitung nilai c = yi – mxi. Untuk setiap nilai
parameter m, m1 ≤ m ≤ mK, yang berkoresponden dengan nilai c, maka elemen
matriks P(m, c) yang bersesesuaian dinaikkan satu:
P(m, c) = P(m, c) + 1 (9.4)

Dengan kata lain, tambahkan satu suara pada ruang parameter m-c.

Bab 9_Kontur dan Representasinya 145


4. Ulangi langkah 3 sampai seluruh pixel di dalam citra tepi ditelusuri.
5. Pada akhir prosedur, tiap elemen matriks P(m, c) menyatakan jumlah pixel
tepi yang memenuhi persamaan (1). Tentukan elemen matriks yang memiliki
penumpukan suara cukup besar (yang nilainya di atas nilai ambang tertentu).
Misalkan tempat-tempat itu adalah
{(m1, c1), (m2, c2), …, {(mk, ck ),

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

Gambar 9.5 Representasi polar dari garis lurus

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–θ.

146 Pengolahan Citra Digital


Prosedur yang sama untuk mendeteksi garis lurus dapat digunakan kembali
dengan mengganti ruang parameter m–c menjadi ruang parameter r–θ, yang
dalam hal ini,

− N2 + M 2 ≤ r ≤ N2 + M 2
-π/2 ≤ θ ≤ π/2

Algoritma Transformasi Hough diperlihatkan pada Algoritma 9.1 [PIT93].


Algoritma tersebut mengasumsikan citra tepi (citra hasil pendeteksian tepi)
disimpan di dalam matriks Edge[0..N-1,0..M-1]. Ruang parameter r–θ
dinyatakan sebagai matriks P yang berukuran n × m. Nilai cosinus dan sinus
disimpan di dalam lookup table COS[0..p-1] dan SIN[0..p-1] yang
dibentuk dengan Algoritma 9.2.

void Hough(citra Edge, int N, int M, imatriks P, int n, int m,


float *COS, float *SIN)
/* prosedur yang melakukan Transformasi Hough.
Masukan: citra tepi Edge yang berukuran N x M.
Keluaran: matriks parameter P yang berukuran n x m
*/
{
int k, l, i, j, kk, ll;
float r, b;
float SQRTD =sqrt((float)N*(float)N + (float)M*(float)M);

/* inisialisasi P[0..p-1, 0,,q-1] dengan 0 */


for(kk=0;kk<=p-1;kk++)
for(ll=0;ll<=q-1;ll++)
P[kk][ll]=0;

/*telusuri citra tepi. Jika pixel merupakan tepi, lakukan pemungutan


suara pada elemen matriks P yang bersesuaian.
tetha dari –pi/2 sampai pi/2.
r dari –sqrt(N*N+M*M) sampai sqrt(N*N+M*M).
*/

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]++;
}
}
}
}

Algoritma 9.1 Transformasi Hough

Bab 9_Kontur dan Representasinya 147


void LookUpTable(float *COS, *SIN, int m)
/* Membuat tabel cosinus dan sinus untuk fungsi COS dan SIN.
Masukan: m adalah jumlah baris tabel
Keluaran: tabel COS dan tabel SIN
*/
{
int i;
float th, R_TO_D = 0.017453

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);
}

Algoritma 9.2 Transformasi Hough

Setelah Transformasi Hough selesai dilakukan, langkah berikutnya adalah


melakukan operasi pengambangan (thresholding) untuk menentukan tempat-
tempat pada ruang paramater r–θ yang mempunyai penumpukan suara lebih besar
dari nilai ambang T. Elemen matriks P yang nilainya di atas nilai ambang tersebut
menyatakan parameter garis lurus. Misalkan tempat-tempat itu adalah {(m1, c1),
(m2, c2), …, {(mk , ck ), hal ini berarti terdapat k garis lurus yang terdeteksi pada
citra. Algoritma pengambangan ditunjukkan pada Algoritma 9.3.

void threshold(imatriks P, int n, in m, int T)


/* Melakukan pengambangan pada matriks parameter P.
Setiap elemen matriks P yang nilainya di atas T menyatakan parameter
garis lurus.
Masukan: matriks parameter P yang berukuran n x m.
Keluaran: matriks parameter P yang sudah di-threshold.
*/
{ int i, j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if (P[i][j]>T)
P[i][j]=1;
else
P[i][j=0;
}

Algoritma 9.3 Pengambangan hasil transformasi Hough

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,

148 Pengolahan Citra Digital


garis lurus yang bersesuaian (yang intensitasnya 1) digambarkan pada matriks
keluaran Out. Operasi and dengan citra tepi dilakukan untuk mengklarifikasi
keberadaan pixel tepi.

Algoritma Transformasi Hough Balikan diperlihatkan pada Algoritma 9.4


[PIT93]. Algoritma tersebut mengasumsikan citra tepi (citra hasil pendeteksian
tepi) disimpan di dalam matriks Edge[0..N-1,0..M-1]. Ruang parameter
r–θ dinyatakan sebagai matriks P yang berukuran n × n. Citra keluaran yang
berisi pixel-pixel tepi pembentuk garis lurus disimpan di dalam matriks
Out[0..N-1,0..M-1].

void InverseHough(citra Edge, citra Out, int N, int M, imatriks P,


int n, int m, float *COS, float *SIN)
/* prosedur yang melakukan Transformasi Hough Balikan
Masukan: 1. citra tepi Edge yang berukuran N x M.
2. matriks parameter P yang berukuran n x m
Keluaran: citra Out yang berisi pixel-pixel pembentuk garis lurus.
*/
{
int k, l, i, j;
float r, y;
float SQRTD =sqrt((float)N*(float)N + (float)M*(float)M);
/* inisialisasi citra keluaran dengan 0 */
for(kk=0;kk<=p-1;kk++)
for(ll=0;ll<=q-1;ll++)
Out[p][q]=0;
/* Matriks parameter P telah dilakukan operasi thresholding.
Untuk setiap elemen P yang bernilai 1, garis lurus yang
bersesuaian digambarkan ke dalam matriks Out.
Operasi and dengan citra tepi dikerjakan.

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]++;
}
}
}
}

Algoritma 9.4 Transformasi Hough Balikan

Bab 9_Kontur dan Representasinya 149


Mendeteksi Lingkaran
Transformasi Hough dapat juga digunakan untuk mendeteksi bentuk lingkaran di
dalam citra tepi. Persamaan lingkaran yang berpusat di titik (a, b) dengan jari-jari
r adalah

( x − a)2 + ( y − b)2 = r 2 (9.5)

Jadi, ruang parameter untuk lingkaran adalah r–a–b , sehingga matriks trimatra
P(r, a, b) dibutuhkan untuk menyimpan perhitungan suara.

Persamaan polar untuk setiap titik (x, y) di lingkaran:


x = a + r cos θ (9.6)
y = b + r sin θ (9.7)

Persamaan (9.6) dan (9.7) dapat ditulis menjadi persamaan


a = x – r cos θ (9.8)
b = y – r sin θ (9.9)

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.

Kasus 1: Jari-jari lingkaran diketahui


Jika jari-jari jari-jari lingkaran diketahui r = R, maka ruang parametrik trimatra,
P(r,a,b), dapat direduksi menjadi ruang dwimatra, P(a,b).

(a,b) (x i,yi)
R

Gambar 9. 5 Proses penumpukan suara untuk mendeteksi lingkaran

150 Pengolahan Citra Digital


Titik pusat lingkaran, (a,b), yang mempunyai jari-jari r = R dan melalui titik (x i,
yi) dapat dihitung dengan persamaan
a = xi – R cos θ (9.10)
b = yi – R sin θ (9.11)

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.

Kasus 2: Jari-jari lingkaran tidak diketahui


Jika jari-jari lingkaran tidak diketahui, maka penumpukan suara dilakukan untuk
semua nilai r, 0 < r ≤ r max, nilai a dan b untuk pixel tepi (xi, yi) dihitung dengan
persamaan
a = xi – r cos θ (9.12)
b = yi – r sin θ (9.13)

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.

Persamaan (9.12) dan (9.13) dapat dimanipulasi dengan mengeliminasi r dari


kedua persamaan:
(x − a)
a = x – r cos θ → r =
cos θ
( x − a)
b = y – r sin θ → b = y − sin θ = y − ( x − a ) tan θ
cos θ

b = a tan θ – x tan θ + y (9.14)

Dengan demikian, maka ruang parametrik trimatra, P(r,a,b), dapat direduksi


menjadi ruang dwimatra, P(a,b). Untuk untuk semua nilai r, yang dalam hal ini a1
< a ≤ aK, nilai ordinat b dari titik pusat lingkaran (a,b) yang melalui titik (xi, yi)
dapat dihitung dengan persamaan (11), 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.

Gambar 9.6 memperlihatkan hasil transformasi Hough untuk mendeteksi


lingkaran dari citra slope dengan menggunakan nilai ambang T = 30.

Bab 9_Kontur dan Representasinya 151


(a) (b)

Gambar 9. 6 (a) Citra slope, (b) hasil deteksi lingkaran dengan Transformasi Hough (Terima kasih
kepada Danu Pranantha atas izin menggunakan output program tugasnya)

Transformasi Hough untuk Mendeteksi Bentuk Sembarang


Transformasi Hough dapat dirampatkan untuk mendeteksi sembarang kurva yang
berbentuk f(x, a) = 0, yang dalam hal ini x adalah vektor peubah dan a adalah
vektor parameter. Memori yang dibutuhkan untuk matriks parametrik P(a)
meningkat menjadi Kq, yang dalam hal ini q adalah jumlah parameter. Tahapan
yang dilakukan adalah [DUL97]:
1. tentukan lokasi pusat penumpukan suara;
2. tentukan fungsi jarak dari setiap pixel tepi ke pusat pemungutan suara.

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)

Gambar 9. 7 Pendeteksian bentuk kurva sembarang dengan


Transformasi Hough rampatan

152 Pengolahan Citra Digital


Bab 10

Pemampatan Citra

ada umumnya, representasi citra digital membutuhkan memori yang besar.

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.

Saat ini, kebanyakan aplikasi menginginkan representasi citra dengan kebutuhan


memori yang sesedikit mungkin. Pemampatan citra atau kompresi citra (image
compression) bertujuan meminimalkan kebutuhan memori untuk merepresentasikan
citra digital. Prinsip umum yang digunakan pada proses pemampatan citra adalah
mengurangi duplikasi data di dalam citra sehingga memori yang dibutuhkan
untuk merepresentasikan citra menjadi lebih sedikit daripada representasi citra
semula.

10.1 Pemampatan Citra versus Pengkodean Citra


Pemampatan citra kadang-kadang disalahmengertikan dengan pengkodean citra
(image encoding), yaitu persoalan bagaimana pixel-pixel di dalam citra dikodekan
dengan representasi tertentu. Pengkodean citra tidak selalu menghasilkan
representasi memori yang minimal. Pengkodean citra yang menghasilkan

Bab 10_Pemampatan Citra 153


representasi memori yang lebih sedikit daripada representasi aslinya itulah yang
dinamakan pemampatan citra.

Ada dua proses utama dalam persoalan pemampatan citra:


1. Pemampatan citra (image compression).
Pada proses ini, citra dalam representasi tidak mampat dikodekan dengan
representasi yang meminimumkan kebutuhan memori. Citra dengan format
bitmap pada umumnya tidak dalam bentuk mampat. Citra yang sudah
dimampatkan disimpan ke dalam arsip dengan format tertentu. Kita mengenal
format JPG dan GIF sebagai format citra yang sudah dimampatkan.

2. Penirmampatkan citra (image decompression).


Pada proses ini, citra yang sudah dimampatkan harus dapat dikembalikan
lagi (decoding) menjadi representasi yang tidak mampat. Proses ini
diperlukan jika citra tersebut ditampilkan ke layar atau disimpan ke dalam
arsip dengan format tidak mampat. Dengan kata lain, penirmampatan citra
mengembalikan citra yang termampatkan menjadi data bitmap.

10.2 Aplikasi Pemampatan Citra


Pemampatan citra memberikan sumbangsih manfaat yang besar dalam industri
multimedia saat ini. Pemampatan citra bermanfaat untuk aplikasi yang
melakukan:

1. Pengiriman data (data transmission) pada saluran komunikasi data


Citra yang telah dimampatkan membutuhkan waktu pengiriman yang lebih
singkat dibandingkan dengan citra yang tidak dimampatkan. Contohnya
aplikasi pengiriman gambar lewat fax, videoconferencing, pengiriman data
medis, pengiriman gambar dari satelit luar angkasa, pengiriman gambar via
telepon genggam. download gambar dari internet, dan sebagainya.

2. Penyimpanan data (data storing) di dalam media sekunder (storage)


Citra yang telah dimampatkan membutuhkan ruang memori di dalam media
storage yang lebih sedikit dibandingkan dengan citra yang tidak
dimampatkan. Contoh aplikasi nya antara lain aplikasi basisdata gambar,
office automation, video storage (seperti Video Compact Disc), dll.

10.3 Kriteria Pemampatan Citra


Saat ini sudah banyak ditemukan metode-metode pemampatan citra. Kriteria
yang digunakan dalam mengukur metode pemampatan citra adalah [LOW91]:

154 Pengolahan Citra Digital


1. Waktu pemampatan dan penirmampatan (decompression).
Waktu pemampatan citra dan penirmampatannya sebaiknya cepat. Ada
metode pemampatan yang waktu pemampatannya lama, namun waktu
penirmampatannya cepat. Ada pula metode yang waktu pemampatannya
cepat tetapi waktu penirmampatannya lambat. Tetapi ada pula metode yang
waktu pemampatan dan penirmampatannya cepat atau keduanya lambat.

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

3. Kualitas pemampatan (fidelity)


Informasi yang hilang akibat pemampatan seharusnya seminimal mungkin
sehingga kualitas hasil pemampatan tetap dipertahankan. Kualitas pemampatan
dengan kebutuhan memori biasanya berbanding terbalik. Kualitas pemampatan
yang bagus umumnya dicapai pada proses pemampatan yang menghasilkan
pengurangan memori yang tidak begitu besar, demikian pula sebaiknya.
Dengan kata lain, ada timbal balik (trade off) antara kualitas citra dengan
ukuran hasil pemampatan.

Kualitas sebuah citra bersifat subyektif dan relatif, bergantung pada


pengamatan orang yang menilainya. Seseorang dapat saja mengatakan
kualitas suatu citra bagus, tetapi orang lain mungkin mengatakan kurang
bagus, jelek, dan sebagainya.

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:

Bab 10_Pemampatan Citra 155


N M

∑∑ ( 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.

10.4 Jenis Pemampatan Citra


Ada empat pendekatan yang digunakan dalam pemampatan citra [LOW91]:
1. Pendekatan statistik.
Pemampatan citra didasarkan pada frekuensi kemunculan derajat keabuan
pixel di dalam seluruh bagian gambar.
Contoh metode: Huffman Coding.

156 Pengolahan Citra Digital


2. Pendekatan ruang
Pemampatan citra didasarkan pada hubungan spasial antara pixel-pixel di
dalam suatu kelompok yang memiliki derajat keabuan yang sama di dalam
suatu daerah di dalam gambar.
Contoh metode: Run-Length Encoding.

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.

10.5 Klasifikasi Metode Pemampatan


Metode pemampatan citra dapat diklasifiksikan ke dalam dua kelompok besar:
1. Metode lossless
Metode lossless selalu menghasilkan citra hasil penirmampatan yang tepat
sama dengan citra semula, pixel per pixel. Tidak ada informasi yang hilang
akibat pemampatan. Sayangnya nisbah (ratio) pemampatan citra metode
lossless sangat rendah.
Contoh metode lossless adalah metode Huffman.

Nisbah pemampatan citra dihitung dengan rumus


ukuran citra hasil pempatatan
Nisbah = 100 % − ( × 100%) (10.3)
ukuran citra semula

Metode lossless cocok untuk memampatkan citra yang mengandung


informasi penting yang tidak boleh rusak akibat pemampatan. Misalnya
memampatkan gambar hasil diagnosa medis.

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.

Bab 10_Pemampatan Citra 157


Gambar 10.1 Citra kapal sebelum dimampatkan

Gambar 10.2 Citra kapal setelah dimampatkan dengan sebuah metode lossy

158 Pengolahan Citra Digital


10.6 Metode Pemampatan Huffman
Metode pemampatan Huffman menggunakan prinsip bahwa nilai (atau derajat)
keabuan yang sering muncul di dalam citra akan dikodekan dengan jumlah bit
yang lebih sedikit sedangkan nilai keabuan yang frekuensi kemunculannya
sedikit dikodekan dengan jumlah bit yang lebih panjang.

Algoritma metode Huffman:


1. Urutkan secara menaik (ascending order) nilai-nilai keabuan berdasarkan
frekuensi kemunculannya (atau berdasarkan peluang kemunculan, pk , yaitu
frekuensi kemunculan (nk ) dibagi dengan jumlah pixel di dalam gambar (n)).
Setiap nilai keabuan dinyatakan sebagai pohon bersimpul tunggal. Setiap
simpul di-assign dengan frekuensi kemunculan nilai keabuan tersebut.
2. Gabung dua buah pohon yang mempunyai frekuensi kemunculan paling kecil
pada sebuah akar. Akar mempunyai frekuensi yang merupakan jumlah dari
frekuensi dua buah pohon penyusunnya.
3. Ulangi langkah 2 sampai tersisa hanya satu buah pohon biner.

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.

Bab 10_Pemampatan Citra 159


Contoh 10.1. Misalkan terdapat citra yang berukuran 64 × 64 dengan 8 derajat
keabuan (k) dan jumlah seluruh pixel (n) = 64 × 64 = 4096

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

160 Pengolahan Citra Digital


1. 7:0.02 6:0.03 5:0.06 4:0.08 3:0.16 0:0.19 2:0.21 1:0.25

2. 76:0.05 5:0.06 4:0.08 3:0.16 0:0.19 2:0.21 1:0.25

7:0.02 6:0.03

3. 4:0.08 765:0.11 3:0.16 0:0.19 2:0.21 1:0.25

76:0.05 5:0.06

7:0.02 6:0.03

4. 4765:0.19 3:0.16 0:0.19 2:0.21 1:0.25

4:0.08 765:0.11

76:0.05 5:0.06

7:0.02 6:0.03

5. 0:0.19 2:0.21 1:0.25 34765:0.35

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

Bab 10_Pemampatan Citra 161


6. 1:0.25 34765:0.35 02:0.40

3:0.16 4765:0.19 0:0.19 2:0.21

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

0:0.19 2:0.21 1:0.25 34765:0.35

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

0:0.19 2:0.21 1:0.25 34765:0.35

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 (lanjutan)

162 Pengolahan Citra Digital


10.7 Metode Pemampatan Run-Length Encoding
(RLE)
Metode RLE cocok digunakan untuk memampatkan citra yang memiliki
kelompok-kelompok pixel berderajat keabuan sama. Pemampatan citra dengan
metode RLE dilakukan dengan membuat rangkaian pasangan nilai (p, q) untuk
setiap baris pixel, nilai pertama (p) menyatakan derajat keabuan, sedangkan nilai
kedua (q) menyatakan jumlah pixel berurutan yang memiliki derajat keabuan
tersebut (dinamakan run length).

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

semuanya ada 100 buah nilai.

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)

semuanya ada 31 pasangan nilai atau 31 × 2 = 62 nilai.

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

Bab 10_Pemampatan Citra 163


217
Nisbah pemampatan = (100% − × 100%) = 27 .67% , yang artinya 27.67%
300
dari citra semula telah dimampatkan. ¾

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

Nyatakan sebagai barisan nilai derajat keabuan:


1 2 1 1 1 1 3 4 4 4 4 1 1 3 3 3 5 1 1 1 1 3 3

semuanya ada 24 nilai.

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

semuanya ada 20 nilai. Jadi, kita sudah menghemat 4 buah nilai.

Metode RLE dapat dikombinasikan dengan metode Huffman untuk mengkodekan


nilai-nilai hasil pemampatan RLE guna meningkatkan nisbah pemampatan. Mula-
mula lakukan pemampatan RLE, lalu hasilnya dimampatkan lagi dengan metode
Huffman.

10.8 Metode Pemampatan Kuantisasi (Quantizing


Compression)
Metode ini mengurangi jumlah derajat keabuan, misalnya dari 256 menjadi 16,
yang tentu saja mengurangi jumlah bit yang dibutuhkan untuk merepresentasikan citra.

Misalkan P adalah jumlah pixel di dalam citra semula, akan dimampatkan


menjadi n derajat keabuan. Algoritmanya adalah sebagai berikut:

Algoritma metode kuantisasi:


1. Buat histogram citra semula (citra yang akan dimampatkan).
2. Identifikasi n buah kelompok di dalam histogram sedemikian sehingga setiap
kelompok mempunyai kira-kira P/n buah pixel.

164 Pengolahan Citra Digital


3. Nyatakan setiap kelompok dengan derajat keabuan 0 sampai n –1. Setiap
pixel di dalam kelompok dikodekan kembali dengan nilai derajat keabuan
yang baru.

Contoh 10.3. [LOW91] Tinjau citra yang berukuran 5 × 13 pixel:


2 9 6 4 8 2 6 3 8 5 9 3 7
3 8 5 4 7 6 3 8 2 8 4 7 3
3 8 4 7 4 9 2 3 8 2 7 4 9
3 9 4 7 2 7 6 2 1 6 5 3 0
2 0 4 3 8 9 5 4 7 1 2 8 3

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

Ada 65 pixel, dikelompokkan menjadi 4 kelompok derajat keabuan. Tiap


kelompok ada sebanyak rata-rata 65/4 = 16.25 pixel per kelompok:
------------------------------------------------------
0 **
13 1 ** 0
2 *********
------------------------------------------------------
20 3 ***********
4 ********* 1
-----------------------------------------------------
5 ****
17 6 ***** 2
7 ********
-----------------------------------------------------
15 8 ********* 3
9 ******
-----------------------------------------------------

Bab 10_Pemampatan Citra 165


Citra setelah dimampatkan menjadi:
0 3 2 1 3 0 2 1 3 2 3 1 2
1 3 2 1 2 2 1 3 0 3 1 2 1
1 3 1 2 1 3 0 1 3 0 2 1 3
1 3 1 2 0 2 2 0 0 2 2 1 0
0 0 1 1 3 3 2 1 2 0 0 3 0

Ukuran citra sebelum pemampatan (1 derajat keabuan = 4 bit):


65 × 4 bit = 260 bit

Ukuran citra setelah pemampatan (1 derajat keabuan = 2 bit):


65 × 2 bit = 130 bit

130
Nisbah pemampatan = (100% − × 100%) = 50% , yang artinya 50% dari citra
260
semula telah dimampatkan. ¾

Kelemahan metode pemampatan kuantisasi adalah banyaknya informasi yang


hilang, tapi kehilangan informasi ini dapat diminimalkan dengan menjamin
bahwa tiap kelompok mempunyai jumlah pixel yang hampir sama.

10.9 Metode Pemampatan Fraktal


Metode pemampatan fraktal adalah metode yang relatif baru. Prinsipnya adalah
mencari bagian di dalam citra yang memiliki kemiripan dengan bagian lainya
namun ukurannya lebih besar (self similarity). Kemudian dicari matriks yang
mentransformasikan bagian yang lebih besar tersebut dengan bagian yang lebih
kecil. Kita cukup hanya menyimpan elemen-elemen dari sekumpulan matriks
transformasi tersebut (yang disebut matriks transformasi affine). Pada proses
penirmampatan, matriks ransformasi affine di-iterasi sejumlah kali terhadap
sembarang citra awal. Hasil iterasi akan konvergen ke citra semula. Metode ini
menghasilkan nisbah pemampatan yang tinggi namun waktu pemampatannya
relatif lama, sedangkan waktu penirmamoatannya berlangsung cepat. Metode
pemampatan fraktal akan dijelaskan secara panjang lebar di dalam Bab tersendiri
(Bab 14).

166 Pengolahan Citra Digital


Bab 11

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.

(a) Citra logo (b) Citra lukisan mobil

Bab 11_Citra Biner 167


23942 41480
0 3

(c) Citra teks (hasil pemindaian (d) Citra kode batang (bar code)
dokumen)

Gambar 11.1 Beberapa contoh citra biner

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.

Meskipun komputer saat ini dapat memproses citra hitam-putih (greyscale)


maupun citra berwarna, namun citra biner masih tetap dipertahankan
keberadaannya. Alasan penggunaan citra biner adalah karena ia memiliki
sejumlah keuntungan sebagai berikut:
1. Kebutuhan memori kecil karena nilai derajat keabuan hanya membutuhkan
representasi 1 bit. Kebutuhan memori untuk citra biner masih dapat
berkurang secara berarti dengan metode pemampatan run-length encoding
(RLE). Metode RLE akan dijelaskan kemudian.
2. Waktu pemrosesan lebih cepat dibandingkan dengan citra hitam-putih karena
banyak operasi pada citra biner yang dilakukan sebagai operasi logika (AND,
OR, NOT, dll) ketimbang operasi aritmetika bilangan bulat.

168 Pengolahan Citra Digital


Aplikasi yang menggunakan citra biner sebagai masukan untuk pemrosesan
pengenalan objek, misalnya pengenalan karakter secara optik, analisis kromosom,
pengenalan sparepart komponen industri, dan sebagainya.

11.2 Konversi Citra hitam-putih ke Citra Biner


Pengkonversian citra hitam-putih (greyscale) menjadi citra biner dilakukan untuk
alasan-alasan sebagai berikut:
1. Untuk mengidentifikasi keberadaan objek, yang direpresentasikan sebagai
daerah (region) di dalam citra. Misalnya kita ingin memisahkan (segmentasi)
objek dari gambar latar belakangnya. Pixel-pixel objek dinyatakan dengan
nilai 1 sedangkan pixel lainnya dengan 0. Objek ditampilkan seperti gambar
siluet. Untuk memperoleh siluet yang bagus, objek harus dapat dip isahkan
dengan mudah dari gambar latar belakangnya.
2. Untuk lebih memfokuskan pada analisis bentuk morfologi, yang dalam hal
ini intensitas pixel tidak terlalu penting dibandingkan bentuknya. Setelah
objek dipisahkan dari latar belakangnya, properti geometri dan morfologi/
topologi objek dapat dihitung dari citra biner. Hal ini berguna untuk pengambilan
keputusan.
3. Untuk menampilkan citra pada piranti keluaran yang hanya mempunyai
resolusi intensitas satu bit, yaitu piranti penampil dua-aras atau biner seperti
pencetak (printer).
4. Mengkonversi citra yang telah ditingkatkan kualitas tepinya (edge enhancement)
ke penggambaran garis-garis tepi. Ini perlu untuk membedakan tepi yang
kuat yang berkoresponden dengan batas-batas objek dengan tepi lemah yang
berkoresponden dengan perubahan illumination, bayangan, dll.

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.

Dua pendekatan yang digunakan dalam operasi pengambangan adalah pengambangan


secara global dan pengambangan secara lokal.

a. Pengambangan secara global (global image thresholding)


Setiap pixel di dalam citra dipetakan ke dua nilai, 1 atau 0 dengan fungsi
pengambangan:

1, f g ( i, j ) ≤ T
f B (i , j ) =  (11.1)
0, lainnya

Bab 11_Citra Biner 169


yang dalam hal ini, fg(i, j) adalah citra hitam-putih, fB(i, j) adalah citra biner, dan
T adalah nilai ambang yang dispesifikasikan. Dengan operasi pengambangan
tersebut, objek dibuat berwarna gelap (1 atau hitam) sedangkan latar belakang
berwarna terang (0 atau putih).

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)

170 Pengolahan Citra Digital


(c) (d)
Gambar 11.4 (a) Citra botol, (b) histogram, (c) T = 90, dan (d) T = 100

(a) Citra Lena (b) Histogram citra Lena

(c) T = 128 (d) T = 150


Gambar 11.5 Operasi pengambangan pada citra Lena

Bab 11_Citra Biner 171


Jika nilai intensitas objek diketahui dalam selang [T1, T2], maka kita dapat
menggunakan fungsi pengambangan:
1, T1 ≤ f g ( i, j ) ≤ T2
f B ( i, j ) =  (11.2)
0, lainnya

b. Pengambangan secara lokal adaptif (locally adaptive image thresholding)


Pengambangan secara global tidak selalu tepat untuk seluruh macam gambar.
Beberapa informasi penting di dalam gambar mungkin hilang karena pengambangan
global ini. Lagipula, tidak ada harga nilai ambang yang berlaku secara global
untuk seluruh daerah citra (misalnya pada citra kedokteran, citra pemandangan
alam, dsb).

Pengambangan secara lokal dilakukan terhadap daerah-daerah di dalam citra.


Dalam hal ini citra dipecah menjadi bagian-bagian kecil, kemudian proses
pengambangan dilakukan secara lokal. Nilai ambang untuk setiap bagian belum
tentu sama dengan bagian lain. Sebagai contoh, pengambangan dilakukan
terhadap daerah citra yang berukuran 3 × 3 atau 5 × 5 pixel. Nilai ambangnya
ditentukan sebagai fungsi rata-rata derajat keabuan di dalam dearah citra tersebut.
Intensitas pixel yang berbeda secara signifikan dari nilai rata-rata tersebut
dianggap mengandung informasi kontras dan ini harus dipertahankan di dalam
citra biner.

Dengan pengambangan secara lokal adaptif, secara subjektif citra biner yang
dihasilkan terlihat lebih menyenangkan dan sedikit informasi yang hilang.

11.3 Penapis Luas


Proses pengambangan menghasilkan citra biner. Seringkali citra biner yang
dihasilkan mengandung beberapa daerah yang dianggap sebagai gangguan.
Biasanya daerah gangguan itu berukuran kecil. Penapis luas dapat digunakan
untuk menghilangan daerah gangguan tersebut [JAI95]. Misalkan objek yang
dianalisis diketahui mempunyai luas yang lebih besar dari T. Maka, pixel-pixel
dari daerah yang luasnya di bawah T dinyatakan dengan 0. Dengan cara ini,
daerah yang berupa gangguan dapat dihilangkan (Gambar 11.6 dan 11.7).

172 Pengolahan Citra Digital


Gambar 11.6 Kiri: gangguan pada citra biner yang mengandung huruf “i”; Kanan: citra yang
dihasilkan setelah dilakukan penapisan (T = 10) [JAI95].

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

11.4 Pengkodean Citra Biner


Citra biner umumnya dikodekan dengan metode run-length encoding (RLE).
Metode pengkodean ini menghasilkan representasi citra yang mampat.

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.

Bab 11_Citra Biner 173


Contoh 11.1. Misalkan citra binernya adalah sebagai berikut

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

Hasil pengkodean dengan metode RLE:


(i) pendekatan pertama:
(1, 3) (7, 2) (12, 4) (17, 2) (20, 3)
(5, 13) (19, 4)
(1, 3) (17, 6)

(ii) pendekatan kedua


3, 3, 2, 3, 4, 1, 2, 1, 3
0, 4, 13, 1, 4
3, 13, 6 ¾

11.5 Segmentasi Citra Biner


Proses awal yang dilakukan dalam menganalisis objek di dalam citra biner adalah
segmentasi objek. Proses segmentasi bertujuan mengelompokkan pixel-pixel
objek menjadi wilayah (region) yang merepresentasikan objek.

Ada dua pendekatan yang digunakan dalam segmentasi objek:


1. Segmentasi berdasarkan batas wilayah (tepi dari objek).
Pixel-pixel tepi ditelusuri sehingga rangkaian pixel yang menjadi batas
(boundary) antara objek dengan latar belakang dapat diketahui secara
keseluruhan (algoritma boundary following).
2. Segmentasi ke bentuk-bentuk dasar (misalnya segmentasi huruf menjadi
garis-garis vertikal dan horizontal, segmentasi objek menjadi bentuk lingkaran,
elips, dan sebagainya).

Kita hanya akan membahas pendekatan pertama.

174 Pengolahan Citra Digital


Segmentasi berdasarkan batas wilayah.
Pada citra biner, batas antara objek dengan latar belakang terlihat jelas. Pixel
objek berwarna hitam sedangkan pixel latar belakang berwarna putih. Pertemuan
antara pixel hitam dan putih dimodelkan sebagai segmen garis. Penelusuran batas
wilayah dianggap sebagai pembuatan rangkaian keputusan untuk bergerak lurus,
belok kiri, atau belok kanan seperti yang diperlihatkan pada Gambar 11.8.

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.

Algoritma menentukan arah berikutnya:


if DepanTidakSama(arah,x,y) then
Belok kanan (arah,x,y)
else
if SilangSama(arah,x,y) then
Belok kiri (arah,x,y)
else
Lurus (arah,x,y)
endif
endif

Metode pendeteksian batas wilayah yang lain adalah pendeteksian secara


topologi. Pada metode topologi, setiap kelompok 4-pixel bertetangga diperiksa,
dan bila kelompok tersebut sama dengan salah satu bentuk pada Gambar 11.9,
maka pada titik tengah dari kelompok pixel tersebut terdapat tepi.

Bab 11_Citra Biner 175


Gambar 11.9 Bentuk -bentuk yang menghasilkan titik tepi [MEN89].

Titik tepi yang dideteksi selanjutnya dihubungkan oleh garis-garis penghubung.


Arah garis penghubung dikodekan dengan kode rantai (chain code).

11.6 Representasi Wilayah


Wilayah (region) di dalam citra biner dapat direpresentasikan dalam beberapa
cara. Salah satu cara yang populer adalah representasi wilayah dengan pohon-
empatan (quadtree). Setiap simpul di dalam pohon-empatan merupakan salah
satu dari tiga ketagori: putih, hitam, dan abu-abu. Pohon-empatan diperoleh
dengan membagi citra secara rekursif. Wilayah di dalam citra dibagi menjadi
empat buah upa-wilayah yang berukuran sama. Untuk setiap upa-wilayah, bila
pixel-pixel di dalam wilayah tersebut semuanya hitam atau semuanya putih, maka
proses pembagian dihentikan. Sebaliknya, bila pixel-pixel di dalam upa-wilayah
mengandung baik pixel hitam mapupun pixel putih (kategori abu-abu), maka upa-
wilayah tersebut dibagi lagi mejadi empat bagian. Demikian seterusnya sampai
diperoleh upa-wilayah yang semua pixel-nya hitam atau semua pixel-nya putih.
Proses pembagian tersebut digambarkan dengan pohon-empatan. Dinamakan
pohon-empatan karena setiap simpul mempunyai tepat empat anak, kecuali
simpul daun. Gambar 10.10 memperlihatkan contoh representasi wilayah dengan
pohon empatan.

176 Pengolahan Citra Digital


B C

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

(a) Citra biner (b) Pohon-empatan

Gambar 11.10 Representasi wilayah dengan pohon-empatan

11.7 Properti Geometri


Setelah proses segmentasi objek selesai dilakukan, maka proses berikutnya adalah
menganalisis objek untuk mengenali objek tersebut. Analisis objek didasarkan
pada ciri khas (feature) geometri pada objek tersebut. Kita asumsikan di dalam
citra biner hanya terdapat 1 buah objek.

Ada dua kelompok ciri khas pada objek [JAI95]:


a. Global feature, yaitu ciri khas keseluruhan objek.
b. Local feature, yaitu ciri khas bagian tertentu dari objek.

Besaran yang termasuk global feature:


(i) Luas atau ukuran objek (A)
n m
A= ∑∑ f (i, j ) (11.3)
i=1 j=1

Catatan: f(i, j) = 1 jika (i, j) adalah pixel objek

Bab 11_Citra Biner 177


(ii) Pusat massa
Berguna untuk menentukan posisi objek.
n m

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

(iii) Momen inersia (M)


n m

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

(iv) Keliling objek (K)


Menghitung panjang batas wilayah. Pixel dalam batas wilayah horizontal atau
vertikal dianggap satu satuan panjang, sedangkan pixel pada arah diagonal
panjangnya √2 satuan.

(v) Tinggi (T)


Dihitung dari jarak vertik al dari pixel tertinggi dan terendah dari objek. Jarak
antara pixel (i 1, j1) dan pixel (i 2, j2) dapat dihitung dengan bermacam-macam
rumus:
- Euclidean

d Euclidean = (i1 − i2 )2 + ( j1 − j2 ) 2 (11.8)

- City-block

d city = i1 − i2 + j1 − j2 (11.9)

178 Pengolahan Citra Digital


- Chessboard

d chess = max ( i1 − i2 , j1 − j2 ) (11.10)

(vi) Lebar (L)


Dihitung dari jarak horizontal dari pixel tertinggi dan terendah dari objek.

(vii) Diameter
Dihitung dari jarak paling jauh dari dua titik pada objek.

(viii) Kompleksitas bentuk


Menyatakan seberapa rumitnya suatu bentuk. Didefinisikan sebagai K2/A,
yang dalam hal ini K = keliling, A = luas.

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

Sedangkan besaran yang termasuk local feature antara lain:


(i) Arah dan panjang segmen garis lurus
Arah garis dinyatakan dengan kode Freeman, sedangkan panjang garis
dihitung sebagai jarak antara ujung-ujung garis.

(ii) Sudut antar garis


Menyatakan besar sudut antara dua garis lurus yang berpotongan.

(iii) Jarak relatif


Dihitung sebagai jarak antara dua titik.

(iv) Object signature


Menyatakan jarak dari pusat massa ke tepi suatu objek pada arah 0 sampai
360 derajat.

Bab 11_Citra Biner 179


11.8 Penipisan Pola
Pada aplikasi pencocokan pola, banyak bentuk terutama bentuk yang
mengulur/memanjang yang dapat dinyatakan dalam versi yang lebih tipis. Bentuk
yang lebih tipis terdiri dari garis-garis terhubung yang disebut rangka (skeleton)
atau tulang atau garis inti. Idealnya, rangka tersebut membentang sepanjang garis
sumbu objek.

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

(a) Huruf “R” (b) Hasil penipisan huruf “R

Gambar 11.11 Penpisan pola huruf “R”

Penipisan pola merupakan proses yang iteratif yang menghilangkan pixel-pixel


hitam (mengubahnya menjadi pixel putih) pada tepi-tepi pola. Jadi, algoritma
penipisan mengelupas pixel-pixel pinggir objek, yaitu pixel-pixel yang terdapat
pada peralihan 0→1. Algoritma penipisan pola harus memenuhi persyaratan
sebagai berikut [PIT93]:
1. Mempertahankan keterhubungan pixel-pixel objek pada setiap lelaran. Dengan
kata lain, tidak menyebabkan bentuk objek menjadi terputus (Gambar
11.12(a)).
2. Tidak memperpendek ujung lengan dari bentuk yang ditipiskan (Gambar
11.12(b)).

180 Pengolahan Citra Digital


p8 p1 p2

p7 p0 p3

p6 p5 p4
(a) (b) (c)

Gambar 11.12 (a) Penghapusan pixel pinggir menyebabkan ketidakterhubungan,


(b) penghapusan pixel pinggir memperpendek lengan objek,
(c) notasi pixel yang digunakan untuk memeriksa keterhubungan.

Algoritma penipisan yang umum adalah memeriksa pixel-pixel di dalam jendela


yang berukuran 3 × 3 pixel dan mengelupas satu pixel pada pinggiran (batas)
objek pada setiap lelaran, sampai objek berkurang menjadi garis tipis. Notasi
pixel di dalam jendela 3 × 3 diperlihatkan pada Gambar 11.12(c). Algoritma
bekerja secara iteratif, pada setiap lelaran dilakukan premrosesan pada jendela
yang berukuran 3 × 3 pixel.

Algoritmanya adalah sebagai berikut [PIT93]:


1. Mula-mula diperiksa jumlah pixel objek (yang bernilai 1), N, di dalam
jendela 3 × 3 pixel.
2. Jika N kurang atau sama dengan 2, tidak ada aksi yang dilakukan karena di
dalam jendela terdapat ujung lengan objek.
3. Jika N lebih besar dari 7, tidak ada aksi yang dilakukan karena dapat
menyebabkan pengikisan (erosion) objek.
4. Jika N lebih besar dari 2, periksa apakah penghilangan pixel tengah
menyebabkan objek tidak terhubung. Ini dilakukan dengan membentuk
barisan p1p2p3…p8p1. Jika jumlah peralihan 0 → 1 di dalam barisan tersebut
sama dengan 1, berarti hanya terdapat satu komponen terhubung di dalam
jendela 3 × 3. Pada kasus ini, dibolehkan menghapus pixel tengah yang
bernilai 1 karena penghapusan tersebut tidak mempengaruhi keterhubungan.

Algoritma penipisan pola dalam bahasa C diperlihatkan pada Algoritma 11.1.

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

Bab 11_Citra Biner 181


do
{
OK=1;
for(k=N1+1;k<N2-1;k++)
for(l=M1+1;l<M2-1;l++)
if (f[k][l]==1)
{/* hitung jumlah 1 di dalam jendela 3 × 3 */
count=0;
for(i=-1;i<=1;i++)
for(j=-1;j<=1;j++)
if(f[k+i][j+l]==1) count++;
if((count>2)&&(count<8))
{ /* hitung jumlah peralihan 0->1 */
y[0]=f[k-1][l-11]; y[1]=f[k-1][l];y[2]=f[k-1][l+1];
y[3]=f[k][l+1]; y[4]=f[k+1]l+1];y[5]=f[k+1][l];
y[6]=f[k+1][l-1]; y[7]=f[k][l-1];y[8]=f[k-1][l-1];
trans=0;
for(m=0;m<=7;m++)
if (y[m]==0 && y[m+1]==1) trans++;
/* jika jumlah peralihan sama dengan 1, hapus pixel
yang sedang diacu (current) */
if (trans==1) {f[k][l]=0; OK=0;}
}
}
} while (OK=0);
}

Algoritma 11.1 Penipisan pola.

182 Pengolahan Citra Digital


Bab 12

Warna

ersepsi visual citra berwarna (color images) umumnya lebih kaya

P dibandingkan dengan citra hitam putih (greyscale), karena itu citra


berwarna lebih disenangi daripada citra hitam putih. Citra berwarna
menampilkan warna objek seperti warna aslinya (meskipun tidak selalu tepat
demikian). Bab ini akan menguraikan konsep warna, model warna, dan
transformasi warna dari satu model ke model lainnya.

12.1 Dasar-dasar Warna


Warna yang diterima oleh mata dari sebuah objek ditentukan oleh warna sinar
yang dipantulkan oleh objek tersebut. Sebagai contoh, suatu objek berwarna hijau
karena objek tersebut memantulkan sinar biru dengan panjang gelombang 450
sampai 490 nanometer (nm).

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.

10-5 10-1 1 10 400 700 2500 nm 1000 m

Bab 12_Warna 183


sinar sinar sinar ultra Infra micro TV radio electr.
kosmik gamma X violet merah wave wave wave power

ultra violet sinar tampak infra merah

400 nm 700 nm

Gambar 12.1 Spektrum cahaya

Warna-warna yang diterima oleh mata manusia merupakan hasil kombinasi


cahaya dengan panjang gelombang berbeda. Penelitian memperlihatkan bahwa
kombinasi warna yang memberikan rentang warna yang paling lebar adalah red
(R), green (G), dan blue (B). Ketiga warna tersebut dinamakan warna pokok
(primaries), dan sering disingkat sebagai warna dasar RGB. Warna-warna lain
dapat diperoleh dengan mencampurkan ketiga warna pokok tersebut dengan
perbandingan tertentu (meskipun tidak sepenuhnya benar, karena tidak semua
kemungkinan warna dapat dihasilkan dengan kombinasi RGB saja), sesuai
dengan teori Young (1802) yang menyatakan bahwa sembarang warna dapat
dihasilkan dari percampuran warna-warna pokok C1, C2, dan C3 dengan
persentase tertentu [PIT93]:
C = a C1 + b C2 + c C3 (12.1)

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.

12.2 Atribut Warna


Selain RGB, warna juga dapat dimodelkan berdasarkan atribut warnanya. Setiap
warna memiliki 3 buah atribut, yaitu intensity (I), hue (H), dan saturation (S).
a. Intensity/brigthness/luminance
Atribut yang menyatakan banyaknya cahaya yang diterima oleh mata tanpa
mempedulikan warna. Kisaran nilainya adalah antara gelap (hitam) dan
terang (putih).

184 Pengolahan Citra Digital


b. Hue
Menyatakan warna sebenarnya, seperti merah, violet, dan kuning. Hue
digunakan untuk membedakan warna-warna dan menentukan kemerahan
(redness), kehijauan (greenness), dsb, dari cahaya. Hue berasosiasi dengan
panjang gelombang cahaya, dan bila kita menyebut warna merah, violet, atau
kuning, kita sebenarnya menspesifikasikan hue-nya.

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

Gambar 12.2 Model IHS

Bab 12_Warna 185


12.3 Sistem Koordinat Warna
CIE (Commission International de l’Eclairage) atau International Lighting
Committee adalah lembaga yang membakukan warna pada tahun 1931. CIE
mula-mula menstandarkan panjang gelombang warna-warna pokok sebagai
berikut [MEN89]:
R : 700 nm
G : 546.1 nm
B : 435.8 nm

Warna-warna lain dapat dihasilkan dengan mengkombinasikan ketiga warna


pokok tersebut. Model warna yang digunakan sebagai acuan dinamakan model
RGB.

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

Karena itu CIE mendefinisikan model warna dengan menggunakan warna-warna


fiktif (yaitu, warna yang secara fisik tidak dapat direalisasikan), yang
dilambangkan dengan X, Y, dan Z. Model warna tersebut dinamakan model XYZ.
Warna-warna dispesifikasikan dengan jumlah relatif warna pokok fiktif.
Keuntungan utama dari model ini adalah luminance atau brigntness sinyal
disediakan langsung oleh Y. Jadi, nilai Y memberikan citra greyscale dari citra
berwarnanya.

Kromatisitas (chromaticity of color) masing-masing warna pokok, menunjukkan


persentase relatif suatu warna pokok di antara warna pokok lainnya pada warna
yang diberikan, yang definisikan sebagai
X
x= (12.2)
X +Y + Z
Y
y= (12.3)
X +Y + Z
Z
z= (12.4)
X +Y + Z

Warna putih acuan dinyatakan dengan X = Y = Z = 1. Jumlah seluruh nilai


kromatisitas warna adalah satu:
x+y+z=1 (12.5)

186 Pengolahan Citra Digital


atau
z = 1 – (x + y) (12.6)

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.

Garis lurus yang menghubungkan dua titik di dalam diagram mendefinisikan


semua variasi warna berbeda yang dapat diperoleh dengan mengkombinasikan
dua warna ini. Sebagai contoh, garis lurus dari red ke green. Jika lebih banyak
cahaya red daripada green, maka titik warna baru terletak pada segmen garis,
tetapi ia akan lebih dekat ke red daripada ke green.

Bab 12_Warna 187


y
520
0.9 Spectral energy locus
(wavelength in nanometers)
540
0.8

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

0.2 deep blue

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.

188 Pengolahan Citra Digital


12.4 Transformasi Sistem Koordinat Warna
Transformasi warna dari basis CIE RGB ke CIE XYZ dapat dilakukan sebagai
berikut: Diberikan triplet RGB (Ri, Gi, Bi) untuk pixel i, maka triplet XYZ (Xi, Yi,
Zi) dihitung dengan

 X i  0 .490 0 .310 0.200   Ri 


 Y  = 0.177 0.813 0.011 G  (12.8)
 i    i
 Z i  0 .000 0 .010 0.99   Bi 

Transformasi sebaliknya dari CIE XYZ ke CIE RGB dapat dilakukan dengan
persamaan

 Ri   2.365 − 0.3896 − 0.468 Xi 


G  =  − 0.515 1 .425 0.088  Y  (12.9)
 i   i
 Bi   0.005 − 0.014 1.009   Z i 

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.

int cieRGB_toXYZ(citra r, citra g, citra b,


citra x, citra y, citra z, int N, int M)
/* Transformasi citra dari model warna CIE RGB ke model CIE XYZ
Masukan: citra dengan kompoenen RGB masing-masing disimpan di dalam
matriks r, g, dan b. Ketga mtariks ini berukuran N × M.
Keluaran: citra dengan komponen XYZ masing-masing disimpan di dalam
matriks x, y, dan z.
*/
{
int i, j; double R, G, B; double X, Y, Z;

for (i=0; i<=N-1; i++)


for (j=0; j<=M-1; j++)
{
R = (double)r[i][j]; G=(double)g[i][j]; B=(double)b[i][j];
X = 0.490*R+0.310*G+0.200*B;
Y = 0.177*R+0.813*G+0.011*B;
Z = 0.010*G+0.990*B;
if (X > 255.0) x[i][j]=255; else x[i][j]=(unsigned char)X;
if (Y > 255.0) y[i][j]=255; else y[i][j]=(unsigned char)Y;
if (Z > 255.0) z[i][j]=255; else z[i][j]=(unsigned char)ZX;
}
}

Algoritma 12.1 Transformasi citra dari model warna CIE RGB ke model CIE XYZ

Bab 12_Warna 189


int XYZ_to_cieRGB(citra x, citra y, citra z,
citra r, citra g, citra b, int N, int M)
/* Transformasi citra dari model warna CIE XYZ ke model CIE RGB
Masukan: citra dengan komponen XYZ masing-masing disimpan di dalam
matriks x, y, dan z. Ketga mtariks ini berukuran N × M.
Keluaran: citra dengan komponen RGB masing-masing disimpan di dalam
matriks r, g, dan b.
*/
{
int i, j; double R, G, B; double X, Y, Z;

for (i=0; i<=N-1; i++)


for (j=0; j<=M-1; j++)
{ X = (double)x[i][j]; Y =(double)y[i][j]; Z =(double)z[i][j];
R = 2.365*X-0.896*Y-0.468*Z;
G = -0.515*X+1.425*Y+0.088*Z;
B = 0.005*X-0.014*Y+1.009*Z;
if (R > 255.0) r[i][j]=255;
else if (R<0.0) r[i][j]=0;
else r[i][j]=(unsigned char)R;
if (G > 255.0) g[i][j]=255;
else if (G<0.0) g[i][j]=0;
else g[i][j]=(unsigned char)G;
if (B > 255.0) b[i][j]=255;
else if (B<0.0) b[i][j]=0;
else b[i][j]=(unsigned char)B;
}

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

 Yi  0.299 0.857 0 .114   Ri 


 I  = 0.596 − 0.274 − 0.322  G  (12.10)
 i    i
Qi   0.211 − 0.523 0 .312   Bi 

190 Pengolahan Citra Digital


Nilai NTSC RGB semula dapat dihitung dengan menggunakan transformasi
balikan:

 Ri  1.000 0 .956 0.621   Yi 


G  = 1.000 − 0 .273 − 0.647  I  (12.11)
 i    i
 Bi  1.000 − 1 .104 1.701  Qi 

Transformasi dari NTSC RGB ke CIE RGB dihitung dengan persamaan:

 Ri   1.167 − 0.146 − 0 .151  R _ NTSCi 


G  =  0.114 0.753 0.159  G _ NTSC  (12.12)
 i   i
 Bi   − 0.001 0.059 1.128   B _ NTSCi 

Sistem NTSC RGB dapat ditransformasikan ke sistem CIE XYZ dengan persamaan:

 X i  0 .607 0.174 0.201  R _ NTSCi 


 Y  = 0 .299 0.587 0.114  G _ NTSC  (12.13)
 i    i

 Z i   0.000 0.066 1.117   B _ NTSCi 

sedangkan transformasi dari CIE XYZ ke NTSC RGB dihitung dengan persamaan:

 R _ NTSCi   1 .910 − 0.533 − 0.288 X i 


G _ NTSC  =  − 0.985 2.000 − 0.028 Y  (12.14)
 i    i
 B _ NTSCi   0.058 − 0.118 0.896   Z i 

12.5 Model Warna CMY dan CMYK


Warna cyan (C) , magenta (M), dan yellow (Y) adalah warna komplementer
terhadap red, green, dan blue. Dua buah warna disebut komplementer jika
dicampur dengan perbandingan yang tepat menghasilkan warna putih. Misalnya,
magenta jika dicampur dengan perbandingan yang tepat dengan green
menghasilkan putih, karena itu magenta adalah komplemen dari dari green.

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

Bab 12_Warna 191


dengan baik. Karena itu, model CMY disempurnakan menjadi model CMYK, yang
dalam hal ini K menyatakan warna keempat, dengan perhitungan sebagai berikut
[PIT93]:
K = min(C, M, Y) (12.18)
C=C–K (12.19)
M=M–K (12.20)
Y=Y–K (12.21)

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 RGB_toCMYK(citra r, citra g, citra b,


citra c, citra m, citra y, citra k,
int N, int M)

/* Transformasi citra dari model warna RGB ke model CMYK.


Masukan: citra dengan komponen RGB masing-masing disimpan di dalam
matriks r, g, dan b. Ketga mtariks ini berukuran N × M.
Keluaran: citra dengan komponen CMYK masing-masing disimpan di dalam
matriks c, y, m, dan k.
*/

{
int i, j;

for (i=0; i<=N-1; i++)


for (j=0; j<=M-1; j++)
{
c[i][j]=(unsigned char)255 – r[i][j];
m[i][j]=(unsigned char)255 – g[i][j];
y[i][j]=(unsigned char)255 – b[i][j];
k[i][j]=c[i][j];
if (m[i][j]<k[i][j]) k[i][j]=m[i][j];
if (y[i][j]<k[i][j]) k[i][j]=y[i][j];
c[i][j]=c[i][j]-k[i][j];
m[i][j]=m[i][j]-k[i][j];
y[i][j]=y[i][j]-k[i][j];
}
}

Algoritma 12.3 Transformasi citra dari model warna RGB ke model CMYK.

192 Pengolahan Citra Digital


int CMYKtoRGB(citra c, citra y, citra m, citra k,
citra r, citra g, citra b,
int N, int M)

/* Transformasi citra dari model warna CMYK ke model RGB.


Masukan: citra dengan komponen CMYK masing-masing disimpan di dalam
matriks c, y, m, dan k. Ketga mtariks ini berukuran N × M.
Keluaran: citra dengan komponen RGB masing-masing disimpan di dalam
matriks r, g, dan b.
*/
{
int i, j;

for (i=0; i<=N-1; i++)


for (j=0; j<=M-1; j++)
{ c[i][j]=c[i][j]+k[i][j];
m[i][j]=m[i][j]+k[i][j];
y[i][j]=y[i][j]+k[i][j];
k[i][j]=c[i][j];
r[i][j]=(unsigned char)255 – c[i][j];
g[i][j]=(unsigned char)255 – m[i][j];
b[i][j]=(unsigned char)255 – y[i][j];
}
}

Algoritma 12.4 Transformasi citra dari model warna CMYK ke model RGB

17.6 Transformasi Warna RGB ke IHS


Meskipun basis RGB bagus untuk menampilkan informasi warna, tetapi ia tidak
cocok untuk beberapa aplikasi pemrosesan citra. Pada aplikasi pengenalan objek,
lebih mudah mengidentifikasi objek dengan perbedaan hue-nya dengan cara
memberikan nilai ambang pada rentang nilai-nilai hue (panjang helombang
spektrum) yang melingkupi objek. Masalahnya, bagaimana melakukan pengambangan
pada ruang warna RGB dan apa rumus untuk mengaplikasikannya? Masalah ini
lebih mudah dipecahkan bila nilai RGB dikonversi ke nilai intensity (I), hue (H),
dan saturation (S).

Aplikasi yang lain misalnya dalam pemampatan citra. Melakukan pemampatan


secara terpisah pada setiap nilai R, G, dan B tidak disarankan, karena data yang
dimampatkan 3 kali lebih banyak dan waktu pemampatannya 3 kali lebih lama
daripada waktu pemampatan citra skala-abunya. Pemampatan citra berwarna
lebih relevan bila warna RGB-nya dikonversikan ke IHS karena algoritma
pemampatan pada citra skala-abu dilakukan pada komponen I, sedangkan nilai H
dan S dikodekan dengan cara yang lain dengan sedikit atau sama sekali tidak ada
degradasi.

Bab 12_Warna 193


Model warna IHS merepresentasikan warna dalam terminologi intensity, hue, dan
saturation. Dari diagram kromatisitas, buatlah segitiga yang menghubungkan tiga
warna pokok red, green, blue (Gambar 12.4). Titik-titik pada segitiga menyatakan
warna yang dihasilkan dari pencampuran warna titik sudut, sedangkan titik-titik
di dalam segitiga menyatakan warna yang dapat dihasilkan dengan
mengkombinasikan tiga warna titik sudut. Titik tengah segitiga menyatakan
warna putih, yaitu pencampuran warna pokok dengan fraksi yang sama.

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

Persamaan 12.22 di atas sering digunakan untuk mengubah citra berwarna


menjadi citra skala -abu.

H dihitung dengan rumus:


2R − G − B
H = cos − 1 (12.23)
2 ( R − G ) 2 + ( R − B )(G − B )

194 Pengolahan Citra Digital


Nilai S dihitung dengan rumus:
3
S = 1− min( R, G , B ) (12.24)
R+G+ B

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

Langkah kedua adalah menghitung H dan S dari koordinat (V1, V2):


H = tan-1(V2/V1) (12.26)

S = (V12 + V22)1/2 (12.27)

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.

Bab 12_Warna 195


Transformasi citra dari basis RGB ke basis IHS dilakukan sebelum pemrosesan
citra. Citra yang sudah diproses dapat dikonversikan kembali ke basis RGB untuk
tujuan display.

National Television Systems Committee (NTSC) menggunakan model YIQ untuk


mentransformasikan model RGB ke IHS, yang dalam hal ini Y menyatakan
intensity, I menyatakan hue, dan Q menyatakan saturation [PIT93].

196 Pengolahan Citra Digital


Bab 13

Steganografi dan Watermarking pada


Citra Digital

teganografi (steganography) adalah teknik menyembunyikan data rahasia di

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.

Penggunaan steganografi antara lain bertujuan untuk menyamarkan eksistensi


(keberadaan) data rahasia sehingga sulit dideteksi, dan melindungi hak cipta suatu
produk. Steganografi dapat dipandang sebagai kelanjutan kriptografi. Jika pada
kriptografi, data yang telah disandikan (ciphertext) tetap tersedia, maka dengan
steganografi cipherteks dapat disembunyikan sehingga pihak ketiga tidak mengetahui
keberadaannya. Data rahasia yang disembunyikan dapat diekstraksi kembali persis
sama seperti keadaan aslinya.

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

Bab 13_Steganografi dan Watermarking pada Citra Digital 197


13.1 Sejarah Steganografi
Steganografi sudah dikenal oleh bangsa Yunani. Penguasa Yunani dalam
mengirimkan pesan rahasia menggunakan kepala budak atau prajurit sebagai
media. Dalam hal ini, rambut budak dibotaki, lalu pesan rahasia ditulis pada kulit
kepala budak. Ketika rambut budak tumbuh, budak tersebut diutus untuk
membawa pesan rahasia di kepalanya.

Bangsa Romawi mengenal steganografi dengan menggunakan tinta tak-tampak


(invisible ink) untuk menuliskan pesan. Tinta tersebut dibuat dari campuran sari
buah, susu, dan cuka. Jika tinta digunakan untuk menulis maka tulisannya tidak
tampak. Tulisan di atas kertas dapat dibaca dengan cara memanaskan kertas
tersebut.

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.

198 Pengolahan Citra Digital


LETTER OF RECOMMENDATION
To Whom It May Concern,
Herewith I highly recommend Mr. R. Hendro
Wicaksono continue his postgraduate study at
your university. My recommendation is based
on my experience as his lecturer in several
courses for the past four years.
He has shown me his excellent attitude and
personality. He is a hard working person and he
has a lot of creative ideas. He is also a very
intelligent student and he cooperates very well
with his peers whenever they had to work
together.
During his study, he showed diligence and
eagerness to achieve his goal. He sets very high
standard for himself and organizes himself very
well to achieve the standard. I am confident that
if he can maintain his goal work, he should be
able to complete the postgraduate program well
within the stipulated time.
I am sure that his abilities and his personal
qualities along with his academic capabilities
(a) Citra peppers asli will help his to obtain his Master’s degree at
your university, which will be very useful for
our country.
Bandung, November 15, 2002
Yours Sincerely,
Ir. Rinaldi Munir, M.Sc.
Senior Lecturer
Informatics Engineering Department,
Institute Technology of Bandung (ITB)
Jl. Ganesha No. 10, Bandung 40132
Email : rinaldi@informatika.org
Phone +62-22-2508135
Indonesia

(b) Dokumen hendro.doc yang akan


disembunyikan ke daalm citra lada

(c) Citra peppers setelah “diisi” dengan data teks hendro.doc

Gambar 13.1 Contoh penyembunyian data di dalam citra digital

Bab 13_Steganografi dan Watermarking pada Citra Digital 199


13.2 Kriteria Steganografi yang Bagus
Seperti sudah disebutkan pada bagian awal bab, data yang disembunyikan tidak
hanya berupa teks, tetapi juga berupa citra, audio, atau video. Selain citra digita,
media penampung data rahasia juga bisa berupa teks, audio, atau video. Namun di
sini kita membatasi media penampung hanya citra digital saja.

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.

2. Robustness. Data yang disembunyikan harus tahan (robust) terhadap berbagai


operasi manipulasi yang dilakukan pada citra penampung, seperti pengubahan
kontras, penajaman, pemampatan, rotasi, perbesaran gambar, pemotongan
(cropping), enkripsi, dan sebagainya. Bila pada citra penampung dilakukan
operasi-operasi pengolahan citra tersebut, maka data yang disembunyikan
seharusnya tidak rusak (tetap valid jika diekstraksi kembali)

3. Recovery. Data yang disembunyikan harus dapat diungkapkan kembali


(reveal). Karena tujuan steganografi adalah data hiding, maka sewaktu-waktu
data rahasia di dalam citra penampung harus dapat diambil kembali untuk
digunakan lebih lanjut.

13.3 Teknik Penyembunyian Data


Penyembunyian data dilakukan dengan mengganti bit-bit data di dalam segmen
citra dengan bit-bit data rahasia. Hingga saat ini sudah banyak dikemukakan oleh
para ilmuwan metode-metode penyembunyian data. Metode yang paling
sederhana adalah metode modifikasi LSB (Least Significant Bit Modification).
Pada susunan bit di dalam sebuah byte (1 byte = 8 bit), ada bit yang paling berarti
(most significant bit atau MSB) dan bit yang paling kurang berarti (least
significant bit atau LSB). Sebagai ilustrasi, di bawah ini dijelaskan metode
modifikasi LSB untuk menyisipkan watermark pada citra (gambar) digital.

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.

200 Pengolahan Citra Digital


Misalkan segmen pixel-pixel citra sebelum penambahan bit-bit watermark adalah
00110011 10100010 11100010 01101111

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

Untuk memperkuat penyembunyian data, bit-bit data tidak digunakan untuk


mengganti byte-byte yang berurutan, namun dipilih susunan byte secara acak.
Misalnya jika terdapat 50 byte dan 6 bit data yang akan disembunyikan, maka
byte yang diganti bit LSB-nya dipilih secara acak, misalkan byte nomor 36, 5, 21,
10, 18, 49.

Bilangan acak dibangkitkan dengan pseudo-random-number-generator (PRNG).


PRNG menggunakan kunci rahasia untuk membangkitkan posisi pixel yang akan
digunakan untuk menyembunyikan bit-bit. PRNG dibagun dalams ejumlah cara,
salah satunya dengan menggunakan algoritma kriptografi DES (Data Encryption
Standard), algoritma hash MD5, dan mode kriptografi CFB (Chiper-Feedback
Mode). Tujuan dari enkripsi adalah menghasilkan sekumpulan bilangan acak
yang sama untuk setiap kunci enkripsi yang sama. Bilangan acak dihasilkan
dengan cara memilih bit-bit dari sebuah blok data hasil enkripsi.

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.

Teknik Penggantian Bit pada Citra bukan 24-bit.


Sebelum melakukan penggantian bit LSB, semua data citra yang bukan tipe 24-bit
diubah menjadi format 24-bit. Jadi, setiap data pixel sudah mengandung
komponen RGB. Setiap byte di dalam data bitmap diganti satu bit LSB-nya
dengan bit data yang akan disembunyikan. Jika byte tersebut merupakan
komponen hijau (G), maka penggantian 1 bit LSB-nya hanya mengubah sedikit
kadar warna hijau, dan perubahan ini tidak terdeteksi oleh mata manusia.

Bab 13_Steganografi dan Watermarking pada Citra Digital 201


Teknik Penggantian Bit pada Citra 24-bit.
Karena data bitmap pada citra 24-bit sudah tersusun atas komponen RGB, maka
tidak perlu dilakukan perubahan format. Setiap byte di dalam data bitmap diganti
satu bit LSB-nya dengan bit data yang akan disembunyikan.

Perubahan Jumlah Warna


Pada citra 8-bit, jumlah warna terbatas, hanya 256 warna. Pengubahan format
citra 8-bit menjadi 24-bit akan menghasilkan warna baru (yang semula tidak
terdapat di dalam palet RGB). Setiap elemen RGB pada tabel palet berpotensi
menjadi 8 warna berbeda setekah proses penggantian bit LSB. Hal ini karena
setiap data bitmap terdiri atas 3 byte, maka tersedia 3 bit LSB untuk penggantian.
Penggantian 3 bit LSB menghasilkan 23 = 8 kombinasi warna. Dengan demikian,
steganografi pada citra 256 warna berpotensi menghasilkan 256 × 8 = 2048
warna.

Untuk menghindari kelebihan warna dari 256, maka sebelum proses


penyembunyian data, warna citra 8-bit diturunkan terlebih dahulu menjadi 32
warna (jika jumlah warnanya kurang dari 32, tidak perlu dilakukan penurunan
warna). Dengan demikian, jika setiap warna menghasilkan 8 warna baru, jumlah
warna seluruhnya maksimum 32 × 8 = 256 warna.

Penurunan jumlah warna dilakukan dengan cara kuantisasi warna (color


quantization). Penurunan jumlah warna harus tetap menghasilkan citra yang
tampak persis seperti citra semula. Algoritma kuantisasi warna ada beberapa
buah, antara lain algoritma diversity. Prinsip algoritma diversity adalah
memaksimumkan perbedaan warna.

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.

202 Pengolahan Citra Digital


13.4 Ukuran Data Yang Disembunyikan
Ukuran data yang akan disembunyikan bergantung pada ukuran citra penampung.
Pada citra 8-bit yang berukuran 256 × 256 pixel terdapat 65536 pixel, setiap pixel
berukuran 1 byte. Setelah diubah menajdi citra 24-bit, ukuran data bitmap
menjadi 65536 × 3 = 196608 byte. Karena setiap byte hanya bisa
menyembunyikan satu bit di LSB-nya, maka ukuran data yang akan
disembunyikan di dalam citra maksimum 196608/8 = 24576 byte. Ukuran data ini
harus dikurangi dengan panjang nama berkas, karena penyembunyian data
rahasia tidak hanya menyembunyikan isi data tersebut, tetapi juga nama
berkasnya.

Semakin besar data disembunyikan di dalam citra, semakin besar pula


kemungkinan data tersebut rusak akibat manipulasi pada citra penampung.

13.5 Teknik Pengungkapan Data


Data yang disembunyikan di dalam citra dapat dibaca kembali dengan cara
pengungkapan (reveal atau extraction). Posisi byte yang menyimpan bit data
dapat diketahui dari bilangan acak yang dibangkitkan oleh PRNG. Karena
algoritma kriptografi yang digunakan menggunakan kunci pada proses enkripsi,
maka kunci yang sama digunakan untuk membangkitkan bilangan acak. Bilangan
acak yang dihasilkan sama dengan bilangan acak yang dipakai pada waktu
penyembunyian data. Dengan demikian, bit-bit data rahasia yang bertaburan di
dalam citra dapat dikumpulkan kembali.

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.

Bab 13_Steganografi dan Watermarking pada Citra Digital 203


Gambar 13.2 Tampilan awal program DATAhide [POL98].

Contoh-contoh Hasil Steganografi


1. Citra penampung: citra 24 bit (berwarna)
Data yang disembunyikan: citra berwarna

(a) Penampung: citra peppers.bmp (b) Data yang disembunyikan: citra


(512 × 512 pixel, 769 KB) handshak.bmp (44 KB)

204 Pengolahan Citra Digital


(c) Hasil penyembunyian data (d) Berkas handshak-stega.bmp (44
(peppers.bmp + handshak.bmp): KB) hasil pengungkapan:

Gambar 13.4 Penyembunyian citra handshaking ke dalam citra berwarna 24 bit (peppers.bmp)

2. Citra penampung: citra 24 bit (berwarna)


Data yang disembunyikan: teks

(a) Penampung: citra peppers.bmp (512 × (b) Data yang disembunyikan:


512 pixel, 769 KB) hendro.doc (20 KB)
LETTER OF RECOMMENDATION
To Whom It May Concern,
Herewith I highly recommend Mr. R. Hendro
Wicaksono continue his postgraduate study at
your university. My recommendation is based
on my experience as his lecturer in several
courses for the past four years.
He has shown me his excellent attitude and
personality. He is a hard working person and he
has a lot of creative ideas. He is also a very
intelligent student and he cooperates very well
with his peers whenever they had to work
together.
During his study, he showed diligence and
eagerness to achieve his goal. He sets very high
standard for himself and organizes himself very
well to achieve the standard. I am confident
that if he can maintain his goal work, he should
be able to complete the postgraduate program
well within the stipulated time.
I am sure that his abilities and his personal
qualities along with his academic capabilities
will help his to obtain his Master’s degree at
your university, which will be very useful for
our country.

Bab 13_Steganografi dan Watermarking pada Citra Digital 205


Bandung, November 15, 2002
Yours Sincerely,
Ir. Rinaldi Munir, M.Sc.
Senior Lecturer
Informatics Engineering Department,
Institute Technology of Bandung (ITB)
Jl. Ganesha No. 10, Bandung 40132
Email : rinaldi@informatika.org
Phone +62-22-2508135
Indonesia

(c) Hasil penyembunyian data (d) Hasil pengungkapan data


(peppers.bmp + hendro.doc): (hendro-stega.doc, 20 KB):
LETTER OF RECOMMENDATION

To Whom It May Concern,

Herewith I highly recommend Mr. R. Hendro


Wicaksono continue his postgraduate study at
your university. My recommendation is based
on my experience as his lecturer in several
courses for the past four years.

He has shown me his excellent attitude and


personality. He is a hard working person and he
has a lot of creative ideas. He is also a very
intelligent student and he cooperates very well
with his peers whenever they had to work
together.

During his study, he showed diligence and


eagerness to achieve his goal. He sets very high
standard for himself and organizes himself very
well to achieve the standard. I am confident
that if he can maintain his goal work, he should
be able to complete the postgraduate program
well within the stipulated time.

I am sure that his abilities and his personal


qualities along with his academic capabilities
will help his to obtain his Master’s degree at
your university, which will be very useful for
our country.

Bandung, November 15, 2002


Yours Sincerely,

Ir. Rinaldi Munir, M.Sc.


Senior Lecturer
Informatics Engineering Department,
Institute Technology of Bandung (ITB)
Jl. Ganesha No. 10, Bandung 40132
Email : rinaldi@informatika.org
Phone +62-22-2508135
Indonesia

Gambar 13.5 Penyembunyian dokumen teks ke dalam citra berwarna 24 bit (peppers.bmp)

206 Pengolahan Citra Digital


2. Citra penampung: citra 8 bit (greyscale)
Data yang disembunyikan: audio

(a) Penampung: citra barbara.bmp (512 × 512 (b) Data yang


pixel, 258 KB) disembunyikan: chord.wav
(95 KB), yaitu berkas
musik dari Windows.

(dimainkan dengan media


player)

(c) Hasil penyembunyian data (barbara.bmp +


chord.wav)
(d) Berkas chord-stega.wav
(95 KB) hasil
pengungkapan:

(dimainkan dengan media


player)

Pada kasus ini, terjadi penurunan kualitas gambar karena


pengaruh penurunan jumlah warna (color quantization)!

Gambar 13.6 Penyembunyian data audio ke dalam citra greyscale 8-bit

Bab 13_Steganografi dan Watermarking pada Citra Digital 207


13.6 Watermarking
Salah satu karya intelektual yang dilindungi adalah barang dalam bentuk digital,
seperti software dan produk multimedia seperti teks, musik (dalam format MP3
atau WAV), gambar/citra (image), dan video digital (VCD). Selama ini
penggandaan atas produk digital tersebut dilakukan secara bebas dan leluasa.
Hasil penggandaan persis sama dengan aslinya. Pemegang hak cipta atas produk
digital tersebut tentu dirugikan karena ia tidak mendapat royalti dari usaha
penggandaan tersebut.

Sebenarnya masalah penyalahgunaan hak cipta pada bidang multimedia tidak


hanya mengenai penggandaan dan pendistribusiannya saja, tetapi juga mengenai
label kepemilikan. Kebanyakan produk digital tersebut tidak mencantumkan siapa
pemegang hak ciptanya. Kalaupun bukti kepemilikan itu ada, biasanya informasi
kepemilikan disertakan pada sampul pembungkus yang menerangkan bahwa
produk multimedia tersebut adalah milik pembuatnya. Masalahnya, distribusi
produk multimedia saat ini tidak hanya secara offline, tetapi juga dapat dilakukan
lewat internet. Jika anda masuk ke situs-situs web di internet, anda dapat
menemukan informasi berupa teks, gambar, suara, dan video. Semua produk
digital tersebut dapat anda download dengan mudah. Anda pun juga dapat
mempertukarkan data digital dengan layanan internet seperti e-mail.

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.

208 Pengolahan Citra Digital


Pada dasarnya, teknik watermarking adalah proses menambahkan kode identifikasi
secara permanen ke dalam data digital. Kode identifikasi tersebut dapat berupa
teks, gambar, suara, atau video. Selain tidak merusak data digital produk yang
akan dilindungi, kode yang disisipkan seharusnya memiliki ketahanan (robustness)
dari berbagai pemrosesan lanjutan seperti pengubahan, transformasi geometri,
kompresi, enkripsi, dan sebagainya. Sifat robustness berarti data watermark tidak
terhapus akibat pemrosesan lanjutan 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].

Ide watermarking pada data digital (sehingga disebut digital watermarking)


dikembangkan di Jepang tahun 1990 dan di Swiss tahun 1993. Digital watermarking
semakin berkembang seiring dengan semakin meluasnya penggunaan internet,
objek digital seperti video, citra, dan suara yang dapat dengan mudah digandakan
dan disebarluaskan.

Perbedaan Steganografi dengan Watermarking


Watermarking merupakan aplikasi dari steganografi, namun ada perbedaan antara
keduanya. Jika pada steganografi informasi rahasia disembunyikan di dalam
media digital dimana media penampung tidak berarti apa-apa, maka pada
watermarking justru media digital tersebut yang akan dilindungi kepemilikannya
dengan pemberian label hak cipta (watermark).

Meskipun steganografi dan watermarking tidak sama, namun secara prinsip


proses penyisipan informasi ke dalam data digital tidak jauh berbeda. Beberapa
metode yang sudah ditemukan untuk penyisipan watermark adalah metdoe LSB
(seperti pada penjelasan steganografi di atas), metode adaptif, metode spread
spectrum, dan sebagainya.

Bab 13_Steganografi dan Watermarking pada Citra Digital 209


Data watermark yang lazim disisipkan ke dalam data digital adalah teks, citra,
atau suara. Watermark berupa teks mengandung kelemahan karena kesalahan satu
bit akan menghasilkan hasil teks yang berbeda pada waktu verifikasi (ektraksi).
Watermark berupa suara atau citra lebih disukai karena kesalahan pada beberapa
bit watermark tidak menghasilkan perubahan yang berarti pada waktu verifikasi.
Hasil ekstraksi watermark yang mengandung kesalahan tersebut masih dapat
dipersepsi secara visual (atau secara pendengaran jika watermark-nya berupa
suara). Citra yang sering digunakan sebagai watermark biasanya logo atau lambang.

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

Citra Encoding Citra ber-


watermark

Watermark

Gambar 13.7 Proses penyisipan watermark pada citra digital

Gambar 13.8 memperlihatkan sebuah gambar (image) paprika yang disisipi


dengan watermark berupa gambar hitam putih yang menyatakan identifikasi
pemiliknya (Shanty) [HEN03]. Perhatikanlah bahwa setelah disisipi watermark,
gambar paprika tetap kelihatan mulus, seolah-olah tidak pernah disisipi
watermark sebelumnya. Sebenarnya tidaklah demikian, gambar paprika tersebut
mengalami sedikit perubahan akibat watermarking, 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
watermark.

210 Pengolahan Citra Digital


+ =

Watermark

Citra asli Citra ter-watermark

Gambar 13.8 Memberi watermark pada citra peppers

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

Gambar 13.9 Proses verifikasi watermark pada citra digital

Bab 13_Steganografi dan Watermarking pada Citra Digital 211


Selain untuk tujuan pelabelan hak cipta (copyright labelling), watermarking juga
dimanfaatkan untuk tujuan-tujuan lain sebagai berikut [SUP00]:
1. Tamper-proofing. Watermarking digunakan sebagai alat untuk mengidentifikasi
atau menunjukkan bahwa data digital telah mengalami perubahan dari aslinya.
2. Feature location. Watermarking digunakan untuk mengidentifikasi isi dari
data digital pada lokai-lokasi tertentu.
3. Annotation/caption. Watermarking digunakan hanya sebagai keterangan tentang
data digital itu sendiri.

212 Pengolahan Citra Digital


Bab 14

Pemampatan Citra Fraktal

etode pemampatan cira fraktal (fractal image compression) adalah

M metode lossy compression yang relatif baru. Metode ini mengeksploitasi


kemiripan bagian-bagian di dalam citra dan menghitung transformasi
yang memetakan bagian-bagian caitra yang memiliki kemiripan tersebut.
Pembahasan di dalam Bab 14 ini dimulai dari teori mengenai fraktal, kemudian
konsep pemampatan fraktal, lalu aplikasi pemampatan fraktal untuk memampatkan
sembarang citra.

14.1 Definisi Fraktal


Sejarah fraktal dapat dirunut dari buku Benoit Mandelbrot yang berjudul The
Fractal Geometry of Nature. Jika geometri Euclidean digunakan untuk
merepresentasikan bentuk-bentuk yang dibuat oleh manusia (bujursangkar,
lingkaran, bloa, dsb), maka geometri fraktal merupakan cara yang alami untuk
merepresentasikan bentuk-bentuk objek di alam.

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.

Bab 14_Pemampatan Citra Faktral 213


Gambar 14.1 Segitiga Sierpinski, daun pakis Barsnsley, dan pohon fractal

14.2 Iterated Function System (IFS)


Michael Barnsley (1988) merepresentasikan fraktal ke dalam model matematika
yang dinamakan IFS (Iterated Function System), melalui buku, Fractals
Everywhere. IFS dimetaforakan sebagai sebuah mesin foto copy yang disebut
Multiple Reduction Copy Machine (MRCM). MRCM memiliki banyak lensa dan
setiap lensa melakukan pengecilan gambar dalam jumlah yang banyak. Gambar
dihasilkan dari mesin copy dioperasikan kembali sebagai masukan untuk
membuat salinan berikutnya (Gambar 14.2).

Salinan ke-1

Gambar masukan

Mesin copy

Salinan ke-2
...

Gambar 14.2 Multiple Reduction Copy Machine (MRCM)

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

214 Pengolahan Citra Digital


disusun oleh tiga buah lensa, setiap lensa memiliki faktor pengecilan setiap lensa
adalah ½. Gambar akhir yang dihasilkan selalu segitiga Sierpinski.

Gambar awal Salinan 1 Salinan 2 Salinan 3 Salinan 20

Gambar 14.3 Apapun gambar awalnya, MRCM selalu menghasilkan segitiga Sierpienski .

Secara matematis, sistem lensa pada MRCM dapat dinyatakan dengan


sekumpulan transformasi affine w1, w2, …, wn. Setiap transformasi wi melakukan
pencondongan, pemutaran, pengecilan, dan penggeseran terhadap salinan (copy)
citra masukan.

Setiap transformasi affine dinyatakan sebagai matriks dengan enam buah elemen:

a b e
w=
f 
(14.1)
c d

Sembarang titik (x,y) pada gambar masukan ditansformasikan oleh w menjadi

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

Bab 14_Pemampatan Citra Faktral 215


W, yang dinamakan operator Hutchinson, adalah gabungan (collage) dari
sejumlah transformasi individual wi, yaitu
n
W = w1 U w2 U ... U wn = Uw i (14.4)
i =1

Setiap transformasi affine wi bersifat kontraktif, yaitu wi memetakan dua buah


titik menjadi lebih dekat. Ini berlaku untuk semua titik di bidang citra. Akibatnya,
MRCM selalu menghasilkan salinan gambar yang ukurannya lebih kecil daripada
ukuran gambar semula.

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)

A3 = W(A2) = W(W(A1)) = W(W(W(A0))) = W3(A0)


M
An = Wn(A0)

Jika W seluruhnya kontraktif, maka untuk n → ∞ lelarannya konvergen ke sebuah


citra yang unik, A∞. Citra A∞ disebut titik-tetap (fixed-point) atau invariant dari
proses lelaran, dan attractor dari W. Titik-tetap adalah citra A∞ sedemikian
sehingga
A∞ = W(A∞) (14.5)

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.

Tansformasi affine yang menghasilkan citra titik-tetap segitiga Sierpinski adalah

 0.5 0.0 0.0   0.5 0.0 0.5  0.5 0 .0 0.25


w1 =   w2 =   w3 =  
 0.0 0.5 0.0   0.0 0.5 0.0   0.0 0.5 0.5 

216 Pengolahan Citra Digital


Skema pembentukan segitiga Sierspinski dengan ketiga transformasi w1, w2, dan
w3 ditunjukkan pada Gambar 14.4.

w3

w1

w2

Gambar 14.4. Cetak biru MRCM untuk membentuk segitiga Sierpinski.

Jika jumlah transformasi affine meningkat menjadi empat dengan setiap w i adalah
sebagai berikut:

 0.85 0.04 0.0  0.20 − 0.26 0 .0 


w1 =   w2 =  
 − 0.04 0.85 1.6   0.23 0 .22 1.6 

 − 0.15 0.28 0.0   0.0 0.0 0.0 


w3 =   w4 =  
 0 .26 0.52 0.44  0.0 0.16 0.0 

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

Gambar 14.5 Pakis Barnsley dan empat buah transformasi affine-nya

Bab 14_Pemampatan Citra Faktral 217


14.3 Pengkodean Citra dengan IFS
Menyimpan citra sebagai kumpulan pixel membutuhkan memori yang besar,
namun bila yang disimpan adalah transformasi affine-nya, maka memori yang
dibutuhkan jauh lebih sedikit. Cara ini melahirkan gagasan pengkodean citra
dengan nisbah pemampatan yang tinggi.

Pakis Barnsley misalnya, dibangkitkan dengan empat buah transformasi affine,


masing-masingnya terdiri atas enam buah bilangan riil (4 byte), sehingga
dibutuhkan 4 × 6 × 4 byte = 96 byte untuk menyimpan keempat transformasi itu.
Bandingkan bila citra pakis Barnsley disimpan dengan representasi pixel hitam
putih (1 pixel = 1 byte) berukuran 550 × 480 membutuhkan memori sebesar
264.000 byte. Maka, nisbah pemampatan citra pakis adalah 264.000 : 96 = 2750 : 1,
suatu nisbah yang sangat tinggi.

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.

Terobosan penting dibuat oleh Arnaud D. Jacquin, mahasiwa Barnsley. Melalui


tulisan monumentalnya pada tahun 1992, Jacquin meyajikan skema otomatis
pengkodean citra yang dikenal dengan nama Partitoned Iterated Function System
(PIFS). PIFS dapat digunakan untuk memampatkan sembarang citra, baik citra
skala-abu maupun citra berwarna, dan tidak terbatas untuk citra fraktal saja.

14.4 Partitioned Iterated Function System (PIFS)


Citra alami (natural image) umumnya hampir tidak pernah self-similar secara
keseluruhan. Karena itu, citra alami pada umumnya tidak mempunyai
transformasi affine terhadap dirinya sendiri. Tetapi, untunglah citra alami
seringkali memiliki self-similarity lokal, yaitu memiliki bagian citra yang mirip
dengan bagian lainnya, misalnya citra berskala-abu (greyscale) Lena pada
Gambar 14.6 (bagian yang mirip ditandai di dalam kotak putih. Sebagai contoh,
bagian topi Lena mirip dengan bagian topi di dalam bayangan cermin, bagian
bahu mirip dengan bagian bahu yang lebih besar, dan sebagainya).

Kemiripan lokal yang banyak terdapat pada citra alami bersifat self-
transformability, yaitu bagian citra yang lebih kecil dapat diperoleh dengan

218 Pengolahan Citra Digital


mentransformasikan bagian citra yang lebih besar namun mirip dengan bagian
citra yang lebih kecil itu [FIS94]. Setiap transformasi itu disebut IFS lokal.
Gabungan dari seluruh hasil transformasi itu adalah citra fraktal yang menyerupai
(atau menghampiri) citra semula.

Gambar 14.6 Kemiripan lokal pada citra Lena

Langkah pertama yang dilakukan dalam proses pemampatan adalah membagi


citra atas sejumlah blok yang berukuran sama dan tidak saling berir isan, yang
disebut blok jelajah (range). Untuk menyederhanakan masalah, blok jelajah
diambil berbentuk bujursangkar. Untuk setiap blok jelajah, dicari bagian citra
yang berukuran lebih besar dari blok jelajah –yang disebut blok ranah (domain)-
dan paling mirip (cocok) dengan blok jelajah tersebut (Gambar 14.7), kemudian
turunkan transformasi affine (IFS lokal) wi yang memetakan blok ranah ke blok
jelajah. Hasil dari semua pemasangan ini adalah Partitioned Iterated Function
System (PIFS).

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.

Bab 14_Pemampatan Citra Faktral 219


Blok ranah Blok jelajah

Gambar 14.7 Pemetaan dari blok ranah ke blok jelajah

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.

Sebelum proses pencarian kemiripan dimulai, setiap blok ranah diskalakan


sehingga ukurannya sama dengan ukuran blok jelajah. Penskalaan ini dimaksudkan
agar jarak antara blok jelajah dan blok ranah mudah dihitung dengan persamaan
14.7. Penskalaan dilakukan dengan menjadikan 2×2 buah pixel menjadi satu buah
pixel. Nilai satu buah pixel tersebut adalah rata-rata nilai keempat pixel.

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)

220 Pengolahan Citra Digital


Parameter si menyatakan faktor kontras pixel (seperti tombol kontras di TV). Bila
si bernilai 0, maka pixel menjadi gelap, bila si sama dengan 1 kontrasnya tidak
berubah; antara 0 dan 1 pixel berkurang kontrasnya, di atas 1 kontrasnya
bertambah. Parameter o i menyatakan ofset kecerahan (brightness) pixel (seperti
tombol kecerahan di TV. Nilai oi positif mencerahkan gambar dan nilai oi negatif
menjadikannya gelap. Kedua parameter tersebut dapat memetakan secara akurat
blok jelajah berskala abu ke blok jelajah berskala abu.

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

Parameter ei dan fi mudah dihitung karena keduanya menyatakan pergeseran


sudut kiri blok ranah ke sudut kiri blok jelajah yang bersesuaian. Sedangkan si
dan oi dihitung dengan menggunakan rumus regresi berikut [FIS94]: Diberikan
dua buah blok citra yang mengandung n buah pixel dengan intensitas d1, d2, …, dn
(dari blok ranah D i) dan r1, r2, …, rn (dari R i). Nilai s dan o diperoleh dengan
meminimumkan total kuadrat selisih antara intensitas pixel blok Di yang
diskalakan dengan s lalu digeser sejauh o dan intensitas pixel blok R i :
n n
E= ∑ (d '
i =1
i − ri ) 2 = ∑ (s ⋅ d
i=1
i + o − ri )2 (14.11)

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

yang dipenuhi oleh


n
∑ d r −∑ d ∑ 
n n n
 i i i r 
i =1 i
s= 
i =1 i =1
(14.12)
 ∑ d − (∑ d )
n n 2 n 2
i =1 i i =1 i 

dan

1 n n

o=  ∑
n  i =1
ri − s di ∑ (14.13)
i =1 

Bab 14_Pemampatan Citra Faktral 221


∑ ∑ ∑
n n 1 n
Jika n d2 −(
i =1 i
d ) 2 = 0 maka s = 0 dan o =
i =1 i
ri . Dengan nilai s dan
n i =1
o yang telah diperoleh, maka kuadrat galat antara blok jelajah dan blok ranah
adalah
 n  n n n   n 
∑ r 2i + s s ∑ ∑ ∑ d i  + o no − 2 ∑ ri 
1
E= d i2 − 2 d i ri + 2o (14.14)
n    
 i =1  i =1 i =1 i =1   i =1 

Metriks rms, drms , tidak lain adalah


drms = E /n (14.15)

Selanjutnya, transformasi affine wi diuji terhadap blok ranah D i untuk


menghasilkan blok uji Ti = wi (Di) (Gambar 14.8). Jarak antara T dan Ri dihitung
dengan persamaan 14.15. Transformasi affine yang terbaik ialah transformasi w
yang meminimumkan jarak antara Ri dan T.

Runtunan pencarian dilanjutkan untuk blok jelajah berikutnya sampai seluruh


blok jelajah sudah dipasangkan dengan blok ranah. Hasil dari proses pemampatan
adalah sejumlah IFS lokal yang disebut PIFS. Seluruh parameter PIFS di-pak dan
disimpan di dalam berkas eksternal. Parameter PIFS yang perlu disimpan hanya
ei, fi, si, oi, dan jenis operasi simetri untuk setiap blok jelajah. Dalam praktek,
parameter ei dan fi diganti dengan posisi blok ranah yang dipetakan ke blok
jelajah. Parameter ai, bi, ci, dan di tidak perlu disimpan karena nilainya sudah
tetap, yaitu ½ untuk ai dan di, dan 0 untuk bi dan ci.

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

Blok ranah Blok jelajah

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.

222 Pengolahan Citra Digital


14.5 Rekonstruksi Citra
Rekonstruksi (decoding) citra dilakukan dengan melelarkan PIFS dari citra awal
sembarang. Karena setiap IFS lokal kontraktif, baik kontraktif dalam matra
intensitas maupun kontraktif dalam matra spasial maka lelarannya akan konvergen
ke citra titik-tetap PIFS. Kontraktif intensitas penting untuk menjamin konvergensi
ke citra semula, sedangkan kontaktif spasial berguna untuk membuat rincian pada
citra untuk setiap skala. Jika PIFS yang ditemukan selama proses pemampatan
bagus, yaitu gabungan dari transformasi seluruh blok ranah dekat dengan citra
semula (diukur dengan persamaan 14.7), maka titik-tetap PIFS juga dekat dengan
citra semula tersebut.

Selama proses pemulihan, setiap IFS lokal mentransformasikan sekumpulan blok


ranah menjadi sekumpulan blok jelajah. Karena blok jelajah tidak saling beririsan
dan mencakup keseluruhan pixel citra, maka gabungan seluruh blok jelajah
menghasilkan citra titik -tetap yang menyerupai citra semula. Gambar 14.8
memperlihatkan hasil rekonstruksi citra Lena setelah 1, 2, dan 6 lelaran
[MUN99]. Citra awal yang digunakan adalah citra adalah citra dengan nilai pixel
yang dibangkitkan secara acak.

Konvergensi ke citra titik-tetap berlangsung cepat. Konvergensi umumnya dapat


diperoleh dalam 8 sampai 10 kali lelaran [MUN99]. Karena transformasi affine
kontraktif dalam arah spasial, maka semakin banyak rincian citra yang dibuat
pada setiap lelaran

(a) Citra awal (b) Lelaran ke-1

Bab 14_Pemampatan Citra Faktral 223


(c) Lelaran ke-2 (d) Lelaran ke-6
Gambar 14.8 Rekonstruksi citra Lena [MUN99].

Contoh-contoh hasil pemampatan citra fraktal [MUN99]:

Citra asli (256 × 256 pixel) Citra hasil pemampatan fraktal


Lena.bmp (66 KB) Lena.fra (7 KB)

224 Pengolahan Citra Digital


Citra asli (256 × 256 pixel) Citra hasil pemampatan fraktal
Collie.bmp (66 KB) Collie.fra (9 KB)

Citra asli (512 × 512 pixel)


Kapal.bmp (258 KB)

Bab 14_Pemampatan Citra Faktral 225


Citra hasil pemampatan fraktal
Kapal.fra (9 KB)

226 Pengolahan Citra Digital


Citra asli (316 × 404 pixel) Citra hasil pemampatan fraktal
Potret.bmp (126 KB) Potret.fra (17 KB)

Tabel 14.1 Perbandingan ukuran berkas citra sebelum dan sesudah dimampatkan

No. Citra BMP Ukuran Citra FRA Ukuran Nisbah


(byte) (byte) (byte) (%)
1 Kapal.bmp 263.222 KAPAL512.FRA 8.956 96,6
2 Lena.bmp 66.614 LENA256.FRA 8.137 87,6
3 Collie.bmp 66.614 COLLI256.FRA 9.150 86,3
4 Potret.bmp 128.782 POTRET.FRA 17.437 86,5

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

Bab 14_Pemampatan Citra Faktral 227


14.6 Pemampatan Citra Berwarna
Penelitian yang dilakukan tentang pemampatan citra fraktal kebanyakan ditujukan
pada citra hitam-putih (greyscale). Karena citra berwarna terdiri atas 3 komponen
(RGB), maka pemampatan fraktal dilakukan secara terpisah untuk masing-masing
komponen. Tetapi, cara ini tidak dianjurkan karena membuat waktu pemampatan
tiga kali lebih lama daripada cira skala-abunya, begitu pula ukuran berkas hasil
pemampatannya tiga kali lebih besar. Teknik yang mangkus adalah dengan
mentransformasi model RGB ke model YIQ, XYZ, atau IHS. Pemampatan fraktal
cukup dilakukan terhadap komponen luminansinya (Y pada model YIQ, Y pada
model XYZ, atau I pada model IHS) [FIS94]. Dua komponen sisanya
dimampatkan dengan metode berbeda (misalnya dengan metode Huffman). Pada
proses rekonstruksi citra, model YIQ, XYZ, atau IHS ditransformasikan kembali
ke model RGB.

228 Pengolahan Citra Digital


Bab 15

Pengenalan Pola

eskipun materi pengenalan pola (pattern recognition) tidak termasuk ke

M dalam pokok bahasan buku ini, namun sebagai bab penutup Penulis akan
menjelaskan secara singkat mengenai pengenalan pola.

15.1 Pengertian Pola dan Ciri


Pola adalah entitas yang terdefinisi dan dapat diidentifikasi melalui ciri-cirinya
(features) [HEN95]. Ciri-ciri tersebut digunakan untuk membedakan suatu pola
dengan pola lainnya. Ciri yang bagus adalah ciri yang memiliki daya pembeda
yang tinggi, sehingga pengelompokan pola berdasarkan ciri yang dimiliki dapat
dilakukan dengan keakuratan yang tinggi.

Sebagai contoh,

Pola Ciri
huruf tinggi, tebal, titik sudut,
lengkungan garis, dll

suara amplitudo, frekuensi, nada,


intonasi, warna, dll

tanda tangan panjang, kerumitan, tekanan, dll

sidik jari lengkungan, jumlah garis, dll

Bab 15_Pengenalan Pola 229


Ciri pada suatu pola diperoleh dari hasil pengukuran terhadap objek uji. Khusus
pada pola yang terdapat di dalam citra, ciri-ciri yang dapat diperoleh berasal dari
informasi:
a. Spasial: intensitas pixel, histogram, …
b. Tepi: arah, kekuatan, …
c. Kontur: garis, elips, lingkaran, …
d. Wilayah/bentuk: keliling, luas, pusat massa, …
e. Hasil transformasi Fourier: frekuensi, …

15.2 Sistem Pengenalan Pola


Pengenalan pola bertujuan menentukan kelompok atau kategori pola berdasarkan
ciri-ciri yang dimiliki oleh pola tersebut. Dengan kata lain, pengenalan pola
membedakan suatu objek dengan objek lain. Terdapat dua pendekatan yang
dilakukan dalam pengenalan pola: pendekatan secara statistik dan pendekatan
secara sintaktik atau struktural [HEN95].

(a) Pengenalan Pola secara Statistik


Pendekatan ini menggunakan teori-teori ilmu peluang dan statistik. Ciri-ciri yang
dimiliki oleh suatu pola ditentukan distribusi statistiknya. Pola yang berbeda
memiliki distribusi yang berbeda pula. Dengan menggunakan teori keputusan di
dalam statistik, kita menggunakan distribusi ciri untuk mengklasifikasikan pola.

Contoh teori keputusan:


Misalkan ada N pola yang dikenali, yaitu w1, w2, …, wN dan fungsi peluang atau
kerapatan dari ciri-ciri pada pola diketahui. Jika x merupakan hasil pengukuran
ciri-ciri, maka

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.

230 Pengolahan Citra Digital


peluang
1
p(diameter | jeruk)
p(diameter | apel)

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

p(a | jeruk) > p(a | apel)

dan jika hasil pengukuran diameter adalah b cm, kita mengklasifikasikan objek
tersebut sebagai “apel”, karena
p(b | jeruk) < p(b | apel)

Sistem pengenalan pola dengan pendekatan statistik ditunjukkkan oleh diagram


pada Gambar 15.2.

Pola Feature
Preprocessing Classification
Extraction

Pengenalan ( recognition)
Pelatihan ( training)

Pola terokan Feature


Learning
Selection

Gambar 15.2. Sistem pengenalan pola dengan pendekatan statistik.

Bab 15_Pengenalan Pola 231


Ada dua fase dalam sistem pengenalan pola: (i) fase pelatihan dan (ii) fase
pengenalan. Pada fase pelatihan, beberapa contoh citra dipelajari untuk menentukan
ciri yang akan digunakan dalam proses pengenalan serta prosedur klasifikasinya.
Pada fase pengenalan, citra diambil cirinya kemudian ditentukan kelas kelompoknya.

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.

232 Pengolahan Citra Digital


3 kelas 2 kelas yang beririsan
ciri 2 ciri 2

batas kelas

batas keputusan

ciri 1 ciri 1

Gambar 15.3. Contoh pembagian kelas pola

(b) Pengenalan Pola secara Sintaktik


Pendekatan ini menggunakan teori bahasa formal. Ciri-ciri yang terdapat pada
suatu pola ditentukan primitif dan hubungan struktural antara primitif kemudian
menyusun tata bahasanya. Dari aturan produksi pada tata bahasa tersebut kita
dapat menentukan kelompok pola. Gambar 15.4 memperlihatkan sistem
pengenalan pola dengan pendekatan sintaktik.

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)

Pola terokan Primitive


Learning
Selection

Gambar 15.4. Sistem pengenalan pola dengan pendekatan sintaktik.

Bab 15_Pengenalan Pola 233


Pendekatan yang digunakan dalam membentuk tata bahasa untuk mengenali pola
adalah mengikuti kontur (tepi batas) objek dengan sejumlah segmen garis
terhubung satu sama lain, lalu mengkodekan setiap garis tersebut (misalnya
dengan kode rantai). Setiap segmen garis merepresentasikan primitif pembentuk
objek.

Contoh 15.1. [GON77] Pembentukan tata bahasa (grammar) untuk mengenali


kromosom (lihat Gambar 15.5) yang diusulkan oleh Ledley (1964, 1965). Tata
bahasa untuk mengenali kromosom adalah G = (N, ∑, P, S), yang dalam hal ini

∑ = {a, b, c, d, e}
N = {S, T, A, B, C, D, E, F}
S = { S, T}

dan himpunan aturan produksi P:


1) S → CC 10) A → Ab
2) T → AC 11) A → e
3) C → BC 12) B → bB
4) C → CB 13) B → Bb
5) C → FD 14) B → b
6) C → EF 15) B → d
7) E → Fc 16) F → bF
8) D → cF 17) F → Fb
9) A → bA 18) F → a

234 Pengolahan Citra Digital


a b c d e

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

Gambar 15.5 (a) Primitif grammar kromosom, (b) pengkodean kromosom.

Contoh 15.2. [GON77] Pembentukan grammar dengan Picture Description


Language (PDL) yang diusulkan oleh Shaw (1970). Lihat Gambar 15.6. Tata
bahasa untuk mengenali bentuk “rumah” adalah G = (N, ∑, P, S), yang dalam hal
ini

∑ ={a ,b ,c ,d }
N = {S, A1, A2, A3, A4, A5}
S = { S}

dan himpunan aturan produksi P:


S → d + A1
A1 → c + A2
A2 → ~d*A2
A3 → a + A4
A4 → b*A5
A5 → c

Bab 15_Pengenalan Pola 235


t h t h

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)

Gambar 15.6 Langkah-langkah pembentukan struktur PDL

236 Pengolahan Citra Digital


Daftar Pustaka

[BAL82] Ballard, Dana H., Computer Vision, Prentice-Hall, 1982.


[DAV90] Davies, E. R., Machine Vision: Theory, Algorithms, Practicalities,
Academic Press, 1990.
[DUL97] Dulimarta, Hans S., Diktat Kuliah Pengolahan Citra, Jurusan Teknik
Informatika ITB, 1997.
[FIS94] Fisher, Yuval, Fractal Image Compression: Theory & Application,
Springer-Verlag, 1994.
[GAL90] Galbiati, Louis J., Machine Vision and Digital Image Processing
Fundamentals, Prentice Hall, 1990.
[GON77] Gonzalez, Rafael C., Digital Image Processing, Addison-Wesley
Publishing, 1977.
[HEN95] Hendradjaya, Bayu, Catatan Kuliah Pengolahan Citra, 1995.
[HEN03] Hendrawan, Shanty Meliani, Robust and Non Blind Watermarking pada
Citra Dijital dengan Teknik Spread Spectrum, Tugas Akhir Departemen
Teknik Informatika, 2003.
[JAI89] Jain, Anil K, Fundamentals of Digital Image Processing, Prentice-Hall
International, 1989.
[JAI95] Jain, Ramesh, Machine Vision, McGraw-ill, 1995.
[KER88] Kernighan, Brian W., The C Programming Language 2Th , Prentice Hall,
1988.
[LOW91] Low, Adrian, Introductory Computer Vision and Image Processing,
McGraw-Hill, 1991.
[MEN89] Mengko, Richard, Workshop On Image Processing & Pattern
Recognition, PAU Mikroelektronika ITB, 1989.
[MUN99] Munir, Rinaldi, Pengelompokan Blok Ranah Berdasarkan Rata-rata dan
Variansi Intensitas Pixel pada Pemampatan Citra dengan Transformasi
Fraktal, Tesis Magister Informatika ITB, 1999.
[MUR92] Murni, Aniati, Pengantar Pengolahan Citra, Elex Media Komputindo,
1992.
[PIT93] Pitas, Ioannis, Digital Image Processing Algorithms, Prentice-Hall
International, 1993.

Daftar Pustaka 247


[POL98] Poli, Lazarus, Penerapan Steganografi dengan Citra Dijital Sebagai File
Penampung, Tugas Akhir Jurusan Teknik Informatika, 1998.
[SCH89] Schalkoff, Robert J., Digital Image Processing and Computer Vision,
John Wiley & Sons, 1989.
[SID95] Sid-Ahmed, A. A, Image Processing, Theory, Algorithms, &
Architectures, McGraw-Hill, 1995.
[SUP00] Supangkat, Suhono H., Watermarking Sebagai Teknik Penyembunyian
Label Hak Cipta pada Data Digital, Jurnal Teknik Elektro, Vo. 6, No. 3,
2000.
[WIC01] Wicaksono, R Hendro dkk, Tugas IF473 Pengolahan Citra, Departemen
Teknik Informatika, 2001.
[WOR93] Works, The Math, Image Processing Toolbox For Use with MATLAB,
The Math Works Inc, 1993.

248 Pengolahan Citra Digital

Anda mungkin juga menyukai