BAB 14 - rizafennisya.files.wordpress.com · Apabila vektor memiliki dua nilai, jarak city-block...

16
BAB 14 Aplikasi Temu Kembali Citra Setelah bab ini berakhir, diharapkan pembaca dapat memahami berbagai hal yang berhubungan dengan temu kembali citra dan mampu mempraktikkannya. Aplikasi temu kembali citra Perhitungan jarak antardua citra Contoh penerapan jarak

Transcript of BAB 14 - rizafennisya.files.wordpress.com · Apabila vektor memiliki dua nilai, jarak city-block...

BAB 14

Aplikasi

Temu Kembali

Citra

Setelah bab ini berakhir, diharapkan pembaca dapat

memahami berbagai hal yang berhubungan dengan temu

kembali citra dan mampu mempraktikkannya.

Aplikasi temu kembali citra

Perhitungan jarak antardua citra

Contoh penerapan jarak

686 Pengolahan Citra Teori dan Aplikasi

14.1 Pengantar Aplikasi Temu Kembali Citra

Temu kembali citra (image retrieval) merupakan proses untuk

mendapatkan sejumlah citra berdasarkan masukan satu citra. Istilah yang lebih

spesifik lagi adalah content based image retrieval (CBIR) atau temu kembali citra

berdasarkan isinya. Istilah tersebut dikemukakan pertama kali oleh Kato pada

tahun 1992 (Zhang, 2002). Awalnya, CBIR digunakan untuk pencarian citra

secara otomatis di dalam suatu database didasarkan pada fitur warna dan bentuk.

Sejak saat itu, bermunculan berbagai sistem CBIR. Contoh yang terkenal adalah

Query By Image Content (QBIC) yang dikembangkan oleh IBM. Pada

perkembangan selanjutnya, fitur tekstur juga dimasukkan sebagai bagian untuk

melakukan pencarian citra.

Prinsip temu kembali citra ditunjukkan pada Gambar 14.1. Fitur sejumlah

objek telah disimpan di dalam database. Selanjutnya, ketika suatu citra dijadikan

sebagai bahan query, fitur akan dihitung setelah melalui prapemrosesan dan

segmentasi. Fitur yang diperoleh dibandingkan dengan fitur semua objek yang

terdapat di dalam database, melalui perhitungan jarak fitur. Hasil jarak ini sering

disebut sebagai skor atau ranking. Seluruh skor diurutkan dari yang paling

bernilai kecil ke yang paling besar. Objek-objek yang menghasilkan skor rendah

adalah citra yang mirip dengan citra query. Untuk membatasi, hanya n citra yang

disajikan sebagai hasil query. Dalam hal ini, nilai n dapat ditentukan oleh sistem

ataupun pengguna.

Aplikasi Temu Kembali Citra 687

Citra

Masukan

Prapemrosesan dan

Segmentasi

Ekstraksi

Fitur

Database

Perhitungan

Jarak Fitur

Pengurutan

Jarak

Pemilihan n Citra

Hasil

Gambar 14.1 Prinsip temu kembali citra

14.2 Perhitungan Jarak Antara Dua Citra

Jarak merupakan pendekatan yang umum dipakai untuk mewujudkan

pencarian citra. Fungsinya adalah untuk menentukan kesamaan atau

ketidaksamaan dua vektor fitur. Tingkat kesamaan dinyatakan dengan suatu skor

atau ranking. Semakin kecil nilai ranking, semakin dekat kesamaan kedua vektor

tersebut.

Pengukuran jarak dilakukan dengan beberapa cara. Beberapa metode yang

umum dipakai dijelaskan di dalam subbab ini.

14.2.1 Jarak Euclidean

Jarak Euclidean didefinisikan sebagai berikut:

𝑗(𝑣1, 𝑣2 ) = √∑ (𝑣1(𝑘) − 𝑣2 (𝑘))2𝑁𝑘=1 (14.1)

688 Pengolahan Citra Teori dan Aplikasi

Dalam hal ini, v1 dan v2 adalah dua vektor yang jaraknya akan dihitung dan N

menyatakan panjang vektor. Apabila vektor memiliki dua nilai, jarak Euclidean

dapat dibayangkan sebagai sisi miring segitiga (Gambar 14.2(a)).

(a) jarak Euclidean (b) Jarak city-block (c) Jarak Chebychef

y

x x x

y y

max(y, x) y+x √𝑥2 + 𝑦2

Gambar 14.2 Gambaran jarak Euclidean, City-block, dan Chebychef

Sebagai contoh, terdapat dua vektor seperti berikut:

𝑣1 = [ 4,3, 6]

𝑣2 = [ 2,3, 7]

Jarak Euclidean kedua vektor adalah:

𝑗𝑎𝑟𝑎𝑘 = √(4 − 2)2 + (3 − 3)2 + (6 − 7)2 = √5 = 2,2361

Jarak Euclidean merupakan jarak yang umum dipakai dalam temu kembali

citra. Beberapa penelitian yang memanfaatkan jarak ini antara lain dilakukan oleh

Hastuti, dkk. (2009) dan Kadir, dkk. (2011a).

14.2.2 Jarak City-Block

Jarak city-block didefinisikan sebagai berikut:

𝑗(𝑣1, 𝑣2 ) = ∑ |𝑣1(𝑘) − 𝑣2 (𝑘)|𝑁𝑘=1 (14.2)

Aplikasi Temu Kembali Citra 689

Dalam hal ini, v1 dan v2 adalah dua vektor yang jaraknya akan dihitung dan N

menyatakan panjang vektor. Apabila vektor memiliki dua nilai, jarak city-block

dapat dibayangkan sebagai jarak vertikal plus horizontal dari vektor pertama ke

vektor kedua (Gambar 14.2(b)).

Sebagai contoh, terdapat dua vektor seperti berikut:

𝑣1 = [ 4,3, 6]

𝑣2 = [ 2,3, 7]

Jarak city-block kedua vektor tersebut berupa

𝑗𝑎𝑟𝑎𝑘 = |4 − 2| + |3 − 3| + |6 − 7| = 3

14.2.3 Jarak Kotak Catur

Jarak kotak catur atau dikenal pula dengan nama jarak Chebychef

didefinisikan sebagai berikut:

𝑗(𝑣1, 𝑣2 ) = max𝑘=1→𝑁 (|𝑣1(𝑘) − 𝑣2 (𝑘)|) (14.3)

Dalam hal ini, v1 dan v2 adalah dua vektor yang jaraknya akan dihitung dan N

menyatakan panjang vektor. Apabila vektor memiliki dua nilai, jarak dapat

dibayangkan sebagai jarak terpanjang antara jarak horizontal dan jarak vertikal

(Gambar 14.2(c)).

Sebagai contoh, dengan dua vektor yang sama dengan di depan (𝑣1 =

[ 4,3, 6] dan 𝑣2 = [ 2,3, 7]), jarak kotak catur kedua vektor tersebut berupa

𝑗𝑎𝑟𝑎𝑘 = max (|4 − 2|, |3 − 3|, |6 − 7|) = 2

14.2.4 Jarak Minkowski

Jarak Minkowski didefinisikan sebagai berikut:

690 Pengolahan Citra Teori dan Aplikasi

𝑗(𝑣1, 𝑣2 ) = √∑ |(𝑣1(𝑘) − 𝑣2 (𝑘)|𝑝𝑁𝑘 =1

1/𝑝 (14.4)

Dalam hal ini, v1 dan v2 adalah dua vektor yang jaraknya akan dihitung dan N

menyatakan panjang vektor. Apabila p bernilai 1, jarak berupa city-block. Apabila

p bernilai 2, jarak berupa Euclidean.

Sebagai contoh, dengan dua vektor yang sama dengan di depan (𝑣1 =

[ 4,3, 6] dan 𝑣2 = [ 2,3, 7]), jarak Minkowski kedua vektor tersebut untuk p

berupa 3 berupa:

𝑗𝑎𝑟𝑎𝑘 = √(4 − 2)3 + (3 − 3)3 + (6 − 7)31/3

= √91/3

= 2,0801

14.2.5 Jarak Canberra

Jarak Canberra didefinisikan sebagai berikut:

𝑗(𝑣1, 𝑣2 ) = ∑|𝑣1(𝑘)−𝑣2(𝑘)|

|𝑣1(𝑘)|+|𝑣1(𝑘)|𝑁𝑘 =1 (14.5)

Dalam hal ini, v1 dan v2 adalah dua vektor yang jaraknya akan dihitung dan N

menyatakan panjang vektor.

Sebagai contoh, dengan dua vektor yang sama dengan di depan (𝑣1 =

[ 4,3, 6] dan 𝑣2 = [ 2,3, 7]), jarak Canberra kedua vektor tersebut berupa

𝑗𝑎𝑟𝑎𝑘 =|4 − 2|

4 + 2+

|3 − 3|

3 + 3+

|6 − 7|

6 + 7=

2

6+

0

6+

1

13= 0,4103

14.2.6 Jarak Bray Curtis

Jarak Bray Curtis atau jarak Sorensen (Putra, 2010) didefinisikan sebagai

berikut:

𝑗(𝑣1, 𝑣2 ) = ∑ |𝑣1(𝑘)−𝑣2(𝑘)|𝑁

𝑘=1

∑ 𝑣1(𝑘)+𝑁𝑘=1

∑ 𝑣2(𝑘)𝑁𝑘=1

(14.6)

Aplikasi Temu Kembali Citra 691

Dalam hal ini, v1 dan v2 adalah dua vektor yang jaraknya akan dihitung dan N

menyatakan panjang vektor.

Sebagai contoh, dengan dua vektor yang sama dengan di depan (𝑣1 =

[ 4,3, 6] dan 𝑣2 = [ 2,3, 7]), jarak Bray Curtis kedua vektor tersebut berupa

𝑗𝑎𝑟𝑎𝑘 =|4−2|+|3−3|+|6−7|

4+2+3+3+6+7=

2+1

25= 0,12

14.2.7 Divergensi Kullback Leibler

Divergensi Kullback Leibler (Deselaers, 2003) didefinisikan sebagai

berikut:

𝐾𝐿(𝑣1, 𝑣2 ) = ∑ 𝑣1(𝑘)𝑁𝑘=1 𝑙𝑜𝑔

𝑣1(𝑘)

𝑣2(𝑘) (14.6)

Dalam hal ini, v1 dan v2 adalah dua vektor yang jaraknya akan dihitung dan N

menyatakan panjang vektor.

Sebagai contoh, dengan dua vektor yang sama dengan di depan (𝑣1 =

[ 4,3, 6] dan 𝑣2 = [ 2,3, 7]), jarak menurut divergensi Kullback Leibler kedua

vektor tersebut berupa

𝑗𝑎𝑟𝑎𝑘 = 4 ∗ log (4

2) + 3 ∗ log (

3

3) + 6 ∗ log (

6

7) = 1,8477

14.2.8 Divergensi Jensen Shannon

Divergensi Jensen Shannon (Deselaers, 2003) didefinisikan sebagai

berikut:

𝐽𝐷(𝑣1, 𝑣2) = ∑ 𝑣1(𝑘)𝑁𝑘=1 . 𝑙𝑜𝑔

2 ∗ 𝑣1(𝑘)

𝑣1(𝑘) + 𝑣2(𝑘)+ 𝑣2 (𝑘). 𝑙𝑜𝑔

2 ∗ 𝑣2(𝑘)

𝑣1(𝑘) + 𝑣2(𝑘) (14.6)

Dalam hal ini, v1 dan v2 adalah dua vektor yang jaraknya akan dihitung dan N

menyatakan panjang vektor.

692 Pengolahan Citra Teori dan Aplikasi

Sebagai contoh, dengan dua vektor yang sama dengan di depan (𝑣1 =

[ 4,3, 6] dan 𝑣2 = [ 2,3, 7]), jarak menurut divergensi Jensen Shannon kedua

vektor tersebut berupa

𝑗𝑎𝑟𝑎𝑘 = 4 ∗ log (2∗4

4+2) + 3 ∗ log (

2∗3

3+3) + 6 ∗ log (

2∗6

6+7) +

2 ∗ log (2∗2

4+2) + 3 ∗ log (

2∗3

3+3) + 7 ∗ log (

2∗7

6+7) = 0,3783

14.3 Contoh Penerapan Jarak

Untuk memahami manfaat jarak dua vektor dalam pengolahan citra,

perhatikan contoh berikut.

Program : queryzer.m

function queryzer(berkas)

% QUERYZER Berguna untuk melakukan query dengan

% menggunakan momen Zernike.

% Citra yang akan menjadi acuan

Citra{1} = 'C:\Image\ikan-4.png';

Citra{2} = 'C:\Image\ikan-2.png';

Citra{3} = 'C:\Image\ikan-3.png';

Citra{4} = 'C:\Image\ikan-1.png';

Citra{5} = 'C:\Image\guppi-4.png';

Citra{6} = 'C:\Image\guppi-2.png';

Citra{7} = 'C:\Image\guppi-3.png';

Citra{8} = 'C:\Image\guppi-1.png';

% Proses momen Zernike dan hitung jarak City-block

Query = im2bw(imread(berkas), 0.5);

ZQuery = zermoment(Query, 10);

Hasil = [];

for i=1 : length(Citra)

disp(sprintf('proses terhadap citra %s', Citra{i}));

Ref = im2bw(imread(Citra{i}), 0.5);

ZRef = zermoment(Ref, 10);

jarak = 0;

for j=1 : length(ZRef)

jarak = jarak + abs(ZRef(j) - ZQuery(j));

end

Hasil(i).nama = Citra{i};

Hasil(i).jarak = jarak;

end

Aplikasi Temu Kembali Citra 693

% Urutkan data pada array Hasil

jum = length(Hasil);

for p = 2: jum

x = Hasil(p);

% Sisipkan x ke dalam data[1..p-1]

q = p - 1;

ketemu = 0;

while ((q >= 1) && (~ketemu))

if (x.jarak < Hasil(q).jarak)

Hasil(q+1) = Hasil(q);

q = q - 1;

else

ketemu = 1;

end

Hasil(q+1) = x;

end

end

% Tampilkan hasil

disp('Hasil pencocokan: ');

for i=1 : jum

disp(sprintf('Citra %s - Jarak: %f',Hasil(i).nama, ...

Hasil(i).jarak));

end

Akhir Program

Fungsi queryzer memerlukan masukan berupa nama citra. Citra

tersebutlah yang akan dibandingkan dengan delapan citra yang berfungsi sebagai

citra referensi (database). Jarak citra masukan terhadap kedelapan citra dihitung

dengan menggunakan jarak city-block. Selanjutnya, dilakukan pengurutan dari

jarak terkecil ke jarak terbesar. Hasilnya menyatakan kesamaan dengan citra

masukan. Semakin kecil nilai jarak berarti semakin dekat dengan citra masukan.

Berikut adalah contoh pemanggilan fungsi queryzer:

>> queryzer('C:\Image\ikan-5.png')

proses terhadap citra C:\Image\ikan-4.png

proses terhadap citra C:\Image\ikan-2.png

proses terhadap citra C:\Image\ikan-3.png

proses terhadap citra C:\Image\ikan-1.png

694 Pengolahan Citra Teori dan Aplikasi

proses terhadap citra C:\Image\guppi-4.png

proses terhadap citra C:\Image\guppi-2.png

proses terhadap citra C:\Image\guppi-3.png

proses terhadap citra C:\Image\guppi-1.png

Hasil pencocokan:

Citra C:\Image\ikan-3.png - Jarak: 0.311540

Citra C:\Image\ikan-2.png - Jarak: 0.317283

Citra C:\Image\ikan-1.png - Jarak: 0.317283

Citra C:\Image\ikan-4.png - Jarak: 1.063666

Citra C:\Image\guppi-2.png - Jarak: 1.896431

Citra C:\Image\guppi-1.png - Jarak: 1.901020

Citra C:\Image\guppi-3.png - Jarak: 1.908009

Citra C:\Image\guppi-4.png - Jarak: 1.913503

>>

Sebagai pembanding, guppi-5.png dapat dipakai sebagai bahan query. Akan

terlihat bahwa ikan guppi-1.png hingga guppi-4.png akan memiliki jarak yang

lebih pendek dibanding dengan kelompok ikan-1.png hingga ikan-4.png.

14.4 Pengembangan Lebih Lanjut

Contoh temu kembali citra yang dicontohkan di Subbab 14.3 mempunyai

kelemahan yaitu lama untuk memperoleh fitur citra. Untuk mempercepat

pencarian, fitur untuk semua citra referensi dapat dihitung terlebih dulu melalui

suatu skrip dan kemudian disimpan di dalam suatu database. Dengan demikian,

pembandingan fitur dilakukan secara langsung, tanpa perlu menyiapkan perolehan

fitur.

Sebagai gambaran, perhatikan skrip berikut.

Program : dbfitur.m

% DBFITUR Berguna untuk menghitung fitur

Aplikasi Temu Kembali Citra 695

% menggunakan momen Zernike dan kemudian

% menyimoannya ke dalaa file .MAT

% Citra yang akan menjadi acuan

Citra{1} = 'C:\Image\ikan-4.png';

Citra{2} = 'C:\Image\ikan-2.png';

Citra{3} = 'C:\Image\ikan-3.png';

Citra{4} = 'C:\Image\ikan-1.png';

Citra{5} = 'C:\Image\guppi-4.png';

Citra{6} = 'C:\Image\guppi-2.png';

Citra{7} = 'C:\Image\guppi-3.png';

Citra{8} = 'C:\Image\guppi-1.png';

% Proses menghitung momen Zernike

Fitur = [];

for i=1 : length(Citra)

disp(sprintf('Menghitung fitur citra %s', Citra{i}));

Image = im2bw(imread(Citra{i}), 0.5);

Z.momen = zermoment(Image, 10);

Z.nama = Citra(i);

Fitur(i).momen = Z.momen;

Fitur(i).nama = Z.nama;

end

% Simpan ke file dbfitur.mat

save('dbfitur', 'Fitur');

clear Citra Fitur;

Akhir Program

Skrip di atas cukup dipanggil sekali, seperti berikut:

>> dbfitur

Menghitung fitur citra C:\Image\ikan-4.png

Menghitung fitur citra C:\Image\ikan-2.png

Menghitung fitur citra C:\Image\ikan-3.png

Menghitung fitur citra C:\Image\ikan-1.png

Menghitung fitur citra C:\Image\guppi-4.png

Menghitung fitur citra C:\Image\guppi-2.png

Menghitung fitur citra C:\Image\guppi-3.png

Menghitung fitur citra C:\Image\guppi-1.png

>>

696 Pengolahan Citra Teori dan Aplikasi

Dengan cara seperti itu, fitur kedelapan citra akan tersimpan di file dbfitur.mat.

Selanjutnya, temu kembali citra dapat dilakukan melalui fungsi

queryzer2. Isinya seperti berikut.

Program : queryzer2.m

function queryzer2(berkas)

% QUERYZER2 Berguna untuk melakukan query dengan

% menggunakan momen Zernike dengan membaca

% data acuan dari file dbfitur.

load dbfitur; % Memuat database fitur

% Proses momen Zernike dan hitung jarak City-block

Query = im2bw(imread(berkas), 0.5);

ZQuery = zermoment(Query, 10);

Hasil = [];

jumFitur = length(Fitur(1).momen);

for i=1 : length(Fitur)

nama = Fitur(i).nama;

jarak = 0;

for j=1 : jumFitur

jarak = jarak + abs(ZQuery(j) - Fitur(i).momen(j));

end

Hasil(i).nama = Fitur(i).nama;

Hasil(i).jarak = jarak;

end

% Urutkan data pada array Hasil

jum = length(Hasil);

for p = 2: jum

x = Hasil(p);

% Sisipkan x ke dalam data[1..p-1]

q = p - 1;

ketemu = 0;

while ((q >= 1) && (~ketemu))

if (x.jarak < Hasil(q).jarak)

Hasil(q+1) = Hasil(q);

q = q - 1;

else

ketemu = 1;

end

Hasil(q+1) = x;

end

end

Aplikasi Temu Kembali Citra 697

% Tampilkan hasil secara visual

disp('Hasil pencocokan dapat dilihat pada jendela gambar');

subplot(3,3,1);

G = imread(berkas); imshow(G);

title('Query');

for i=1 : jum

subplot(3,3, i+1);

G = imread(char(Hasil(i).nama)); imshow(G);

title(num2str(Hasil(i).jarak));

end

Akhir Program

Contoh penggunaan fungsi queryzer2 seperti berikut.

>> queryzer2('C:\Image\ikan-5.png')

Hasil pencocokan dapat dilihat pada jendela gambar

>>

Hasilnya dapat dilihat pada Gambar 14.3. Gambar tersebut memperlihatkan citra

query dan citra-citra hasil yang dilengkapi dengan nilai jarak antara citra

bersangkutan terhadap citra query, yang telah diurutkan dari jarak terpendek ke

jarak terpanjang.

698 Pengolahan Citra Teori dan Aplikasi

Gambar 14.3 Hasil query secara visual berdasar urutan besar jarak

1. Jelaskan pengertian temu kembali citra.

2. Terdapat dua vektor seperti berikut:

𝑣1 = [ 3,8, 6,5]

𝑣2 = [ 4,6, 7,8]

Hitunglah jarak menurut:

a) jarak City-block

b) jarak Euclidean

c) jarak Canberra

d) jarak Chebychef

e) jarak Bray Curtis

Latihan

Aplikasi Temu Kembali Citra 699

3. Tunjukkan bahwa rumus jarak Chebychef

𝑗(𝑣1, 𝑣2 ) = ∑ |𝑣1(𝑘) − 𝑣2 (𝑘)|𝑁

𝑘=1

∑ 𝑣1(𝑘) +𝑁𝑘=1

∑ 𝑣2 (𝑘)𝑁𝑘=1

identik dengan

𝑗(𝑣1, 𝑣2 ) = ∑ |𝑣1(𝑘) − 𝑣2 (𝑘)|𝑁

𝑘 =1

∑ (𝑣1(𝑘) + 𝑣2 (𝑘))𝑁𝑘=1

4. Buatlah fungsi semacam queryzer, tetapi fitur yang digunakan berupa

momen Hu.

5. Buatlah fungsi semacam queryzer, tetapi fitur yang digunakan

menggunakan deskriptor Fourier dengan jumlah:

(a) 30 buah

(b) 40 buah

(c) 50 buah

Amati hasilnya. Adakah kesimpulan yang dapat diambil?

6. Cobalah untuk membuat tiga fungsi yang melakukan perhitungan jarak

melalui momen Zernike dengan menggunakan pendekatan:

a) jarak Euclidean

b) jarak Canberra

c) jarak Chebychef

d) jarak Bray Curtis

Amati hasil yang didapatkan. Apakah dapat ditarik sesuatu kesimpulan dari

situ?

700 Pengolahan Citra Teori dan Aplikasi

6. Cobalah pula untuk melakukan pengukuran jarak terhadap fitur tekstur.

Bandingkan beberapa metode untuk memperoleh fitur tekstur yang dibahas

dalam Bab 13.