Teknik Komputasi
Pengenalan Pola Citra Tekstur dengan Metode Jarak Euclidean
Dosen : Dr. Ir. Nazori Az, M.T
Nama : Fransiscus Xaverius Eko Budi Kristanto
NIM : 1111600126
Kelas : XA
MAGISTER ILMU KOMPUTER
UNIVERSITAS BUDI LUHUR JAKARTA
2012
1
Soal: Carilah citra tekstur di Google dengan kata kunci: brodatz_database, kemudian ambil 10
buah tekstur. Selanjutnya diuji kemiripannya dari salah satu tekstur, hasilnya diurutkan dalam
bentuk tabel mulai dari yang paling mirip.
Jawab:
10 buah citra tekstur yang digunakan:
Citra tekstur semuanya berukuran 213x213 pixel dengan format PNG (Portable Network
Graphics), dengan kedalaman warna 8 bit.
tekstur_01.png tekstur_02.png tekstur_03.png tekstur_04.png tekstur_05.png
tekstur_06.png tekstur_07.png tekstur_08.png tekstur_09.png tekstur_uji.png
Sumber tekstur: http://perso.telecom-ristech.fr/~xia/invariant_texture/invariant_texture_brodatz/Brodatz_re.html
10 buah citra akan diuji (tekstur_01.png, tekstur_02.png, ..., tekstur_uji.png), untuk mencari
citra mana yang paling mirip terhadap citra ke-10 (tekstur_uji.png) dengan menggunakan
metode Jarak Euclidean berdasarkan 5 ciri sebagai berikut:
1.
Intensitas warna (σ) →
2. Nilai rata-
rata (μ)
→
3. Entropi (e)
→
4. Energi (E)
→
5. Homogeiniti (H)
→
∑
=−
=
N i i ix
x
N
1 2)
(
1
σ
∑
==
N iX
N
1 11
µ
∑
=−
=
n i i iP
x
x
p
e
1)
(
log
)
(
∑ ∑
= ==
M x N y j jP
x
y
N
x
M
E
1 1 2)]
,
(
[
1
∑∑
+
−
=
i j dj
i
j
i
P
H
1
)
,
(
2
Jarak Euclidean digunakan untuk klasifikasi atau identifikasi suatu vektor ciri yang dimasukkan
dengan ciri pada basis data yang ada. Jarak Euclidean untuk 2 buah vektor ditentukan dengan
rumus sebagai berikut:
Maka jarak Euclidean antara kedua vektor tersebut adalah:
Script Program Matlab untuk Mencari Jarak Euclidean Berdasarkan 5 Ciri:
% PENGENALAN POLA CITRA TEKSTUR DENGAN METODE EUCLIDEAN
clear, close all
Image1=imread('D:\tekstur\tekstur_01.png'); Image2=imread('D:\tekstur\tekstur_02.png'); Image3=imread('D:\tekstur\tekstur_03.png'); Image4=imread('D:\tekstur\tekstur_04.png'); Image5=imread('D:\tekstur\tekstur_05.png'); Image6=imread('D:\tekstur\tekstur_06.png'); Image7=imread('D:\tekstur\tekstur_07.png'); Image8=imread('D:\tekstur\tekstur_08.png'); Image9=imread('D:\tekstur\tekstur_09.png'); Image10=imread('D:\tekstur\tekstur_uji.png'); intensitas_1 = std2(Image1); rata2_1 = mean2(Image1); entropi_1 = entropy(Image1); GLCM_1 = graycomatrix(Image1); %menghitung GLCM
energi1 = graycoprops(GLCM_1,{'energy'}); energi_1= struct2array(energi1);
homogeiniti1 = graycoprops(GLCM_1,{'homogeneity'}); homogeiniti_1= struct2array(homogeiniti1);
C1=[intensitas_1, rata2_1, entropi_1, energi_1, homogeiniti_1]' %Matriks C1
intensitas_2 = std2(Image2); rata2_2 = mean2(Image2); entropi_2 = entropy(Image2);
GLCM_2 = graycomatrix(Image2); %menghitung GLCM
energi2 = graycoprops(GLCM_2,{'energy'}); energi_2= struct2array(energi2);
homogeiniti2 = graycoprops(GLCM_2,{'homogeneity'}); homogeiniti_2= struct2array(homogeiniti2);
C2=[intensitas_2, rata2_2, entropi_2, energi_2, homogeiniti_2]' %Matriks C2
intensitas_3 = std2(Image3); rata2_3 = mean2(Image3);
]
..,
...
,
,
,
[
]
,
...
,
,
,
[
3 2 1 3 2 1 n nb
b
b
b
b
dan
a
a
a
a
a
=
=
2 2 3 3 2 2 2 2 1 1)
(
)
(
)
...(
)
(
a
b
a
b
a
b
a
nb
nab
=
−
+
−
+
−
+
−
3
entropi_3 = entropy(Image3);
GLCM_3 = graycomatrix(Image3); %menghitung GLCM
energi3 = graycoprops(GLCM_3,{'energy'}); energi_3= struct2array(energi3);
homogeiniti3 = graycoprops(GLCM_3,{'homogeneity'}); homogeiniti_3= struct2array(homogeiniti3);
C3=[intensitas_3, rata2_3, entropi_3, energi_3, homogeiniti_3]' %Matriks C3
intensitas_4 = std2(Image4); rata2_4 = mean2(Image4); entropi_4 = entropy(Image4);
GLCM_4 = graycomatrix(Image4); %menghitung GLCM
energi4 = graycoprops(GLCM_4,{'energy'}); energi_4= struct2array(energi4);
homogeiniti4 = graycoprops(GLCM_4,{'homogeneity'}); homogeiniti_4= struct2array(homogeiniti4);
C4=[intensitas_4, rata2_4, entropi_4, energi_4, homogeiniti_4]' %Matriks C4
intensitas_5 = std2(Image5); rata2_5 = mean2(Image5); entropi_5 = entropy(Image5);
GLCM_5 = graycomatrix(Image5); %menghitung GLCM
energi5 = graycoprops(GLCM_5,{'energy'}); energi_5= struct2array(energi5);
homogeiniti5 = graycoprops(GLCM_5,{'homogeneity'}); homogeiniti_5= struct2array(homogeiniti5);
C5=[intensitas_5, rata2_5, entropi_5, energi_5, homogeiniti_5]' %Matriks C5
intensitas_6 = std2(Image6); rata2_6 = mean2(Image6); entropi_6 = entropy(Image6);
GLCM_6 = graycomatrix(Image1); %menghitung GLCM
energi6 = graycoprops(GLCM_6,{'energy'}); energi_6= struct2array(energi6);
homogeiniti6 = graycoprops(GLCM_6,{'homogeneity'}); homogeiniti_6= struct2array(homogeiniti6);
C6=[intensitas_6, rata2_6, entropi_6, energi_6, homogeiniti_6]' %Matriks C6
intensitas_7 = std2(Image7); rata2_7 = mean2(Image7); entropi_7 = entropy(Image7);
GLCM_7 = graycomatrix(Image7); %menghitung GLCM
energi7 = graycoprops(GLCM_7,{'energy'}); energi_7= struct2array(energi7);
homogeiniti7 = graycoprops(GLCM_7,{'homogeneity'}); homogeiniti_7= struct2array(homogeiniti7);
C7=[intensitas_7, rata2_7, entropi_7, energi_7, homogeiniti_7]' %Matriks C7
intensitas_8 = std2(Image8); rata2_8 = mean2(Image8); entropi_8 = entropy(Image8);
4
energi8 = graycoprops(GLCM_8,{'energy'}); energi_8= struct2array(energi8);
homogeiniti8 = graycoprops(GLCM_8,{'homogeneity'}); homogeiniti_8= struct2array(homogeiniti8);
C8=[intensitas_8, rata2_8, entropi_8, energi_8, homogeiniti_8]' %Matriks C8
intensitas_9 = std2(Image9); rata2_9 = mean2(Image9); entropi_9 = entropy(Image9);
GLCM_9 = graycomatrix(Image9); %menghitung GLCM
energi9 = graycoprops(GLCM_9,{'energy'}); energi_9= struct2array(energi9);
homogeiniti9 = graycoprops(GLCM_9,{'homogeneity'}); homogeiniti_9= struct2array(homogeiniti9);
C9=[intensitas_9, rata2_9, entropi_9, energi_9, homogeiniti_9]' %Matriks C9
intensitas_10 = std2(Image10); rata2_10 = mean2(Image10); entropi_10 = entropy(Image10);
GLCM_10 = graycomatrix(Image10); %menghitung GLCM
energi10 = graycoprops(GLCM_10,{'energy'}); energi_10= struct2array(energi10);
homogeiniti10 = graycoprops(GLCM_10,{'homogeneity'}); homogeiniti_10= struct2array(homogeiniti10);
C10=[intensitas_10, rata2_10, entropi_10, energi_10, homogeiniti_10]' %Matriks C10
% MENCARI CITRA YANG PALING MIRIP TERHADAP CITRA UJI (CITRA ke-10)
jarak_1_10=sqrt((C1(1,1)-C10(1,1))^2+(C1(2,1)-C10(2,1))^2+(C1(3,1)-C10(3,1))^2+(C1(4,1)-C10(4,1))^2+(C1(5,1)-C10(5,1))^2) jarak_2_10=sqrt((C2(1,1)-C10(1,1))^2+(C2(2,1)-C10(2,1))^2+(C2(3,1)-C10(3,1))^2+(C2(4,1)-C10(4,1))^2+(C2(5,1)-C10(5,1))^2) jarak_3_10=sqrt((C3(1,1)-C10(1,1))^2+(C3(2,1)-C10(2,1))^2+(C3(3,1)-C10(3,1))^2+(C3(4,1)-C10(4,1))^2+(C3(5,1)-C10(5,1))^2) jarak_4_10=sqrt((C4(1,1)-C10(1,1))^2+(C4(2,1)-C10(2,1))^2+(C4(3,1)-C10(3,1))^2+(C4(4,1)-C10(4,1))^2+(C4(5,1)-C10(5,1))^2) jarak_5_10=sqrt((C5(1,1)-C10(1,1))^2+(C5(2,1)-C10(2,1))^2+(C5(3,1)-C10(3,1))^2+(C5(4,1)-C10(4,1))^2+(C5(5,1)-C10(5,1))^2) jarak_6_10=sqrt((C6(1,1)-C10(1,1))^2+(C6(2,1)-C10(2,1))^2+(C6(3,1)-C10(3,1))^2+(C6(4,1)-C10(4,1))^2+(C6(5,1)-C10(5,1))^2) jarak_7_10=sqrt((C7(1,1)-C10(1,1))^2+(C7(2,1)-C10(2,1))^2+(C7(3,1)-C10(3,1))^2+(C7(4,1)-C10(4,1))^2+(C7(5,1)-C10(5,1))^2) jarak_8_10=sqrt((C8(1,1)-C10(1,1))^2+(C8(2,1)-C10(2,1))^2+(C8(3,1)-C10(3,1))^2+(C8(4,1)-C10(4,1))^2+(C8(5,1)-C10(5,1))^2) jarak_9_10=sqrt((C9(1,1)-C10(1,1))^2+(C9(2,1)-C10(2,1))^2+(C9(3,1)-C10(3,1))^2+(C9(4,1)-C10(4,1))^2+(C9(5,1)-C10(5,1))^2) jarak_10_10=sqrt((C10(1,1)-C10(1,1))^2+(C10(2,1)-C10(2,1))^2+(C10(3,1)-C10(3,1))^2+(C10(4,1)-C10(4,1))^2+(C10(5,1)-C10(5,1))^2)
5
Hasil:
C1 = 65.3775 180.7692 5.3177 0.2414 0.7228 C2 = 60.9682 180.3410 5.3565 0.2527 0.7285 C3 = 64.1793 166.0150 5.7418 0.1597 0.6940 C4 = 62.6913 181.4880 5.3186 0.2462 0.7216 C5 = 63.4781 176.6978 5.4415 0.2290 0.7195 C6 = 65.8256 170.8663 5.6259 0.2414 0.72286
C7 = 58.9760 190.7536 5.0511 0.2888 0.7448 C8 = 61.6821 183.7089 5.2691 0.2692 0.7401 C9 = 63.7068 174.2883 5.5924 0.1972 0.7052 C10 = 62.6913 181.4880 5.3186 0.2462 0.7216 jarak_1_10 = 2.7807 jarak_2_10 = 2.0703 jarak_3_10 = 15.5503 jarak_4_10 = 0 jarak_5_10 = 4.85597
jarak_6_10 = 11.0788 jarak_7_10 = 9.9865 jarak_8_10 = 2.4402 jarak_9_10 = 7.2763 jarak_10_10 = 0Dengan demikian, diperoleh nilai Jarak Euclidean tekstur yang diuji (tekstur_01.png,
tekstur_02.png, ..., tekstur_uji.png) dengan tekstur uji (tekstur_uji.png) adalah:
Tabel Jarak Euclidean Hasil Pengujian 10 Citra Tekstur:
Nama Berkas Tekstur
Jarak Euclidean
tekstur_01.png
2.7807
tekstur_02.png
2.0703
tekstur_03.png
15.5503
tekstur_04.png
0
tekstur_05.png
4.8559
tekstur_06.png
11.0788
tekstur_07.png
9.9865
tekstur_08.png
2.4402
tekstur_09.png
7.2763
tekstur_uji.png
0
Dari hasil pengujian diperoleh bahwa nilai Jarak Euclidean tekstur_01.png dan tekstur_uji.png
adalah 0 karena kedua tekstur tersebut sebenarnya sama persis (penulis sengaja mengcopy file
8
Kemiripan pengenalan diperoleh dengan menghitung jarak terdekat, yaitu nilai Jarak Euclidean
yang paling kecil. Semakin kecil jarak tekstur yang diuji dengan tekstur penguji, maka akan
semakin mirip.
Tabel Urutan Kemiripan Hasil Pengujian Menggunakan 10 Citra Tekstur:
Urutan Kode Tekstur
Jarak Euclidean
1
tekstur_04.png
0
2
tekstur_02.png
2.0703
3
tekstur_08.png
2.4402
4
tekstur_01.png
2.7807
5
tekstur_05.png
4.8559
6
tekstur_09.png
7.2763
7
tekstur_07.png
9.9865
8
tekstur_06.png
11.0788
9
tekstur_03.png
15.5503
Sehingga jika citra tekstur disusun berurutan dari kemiripannya akan menjadi sebagai berikut:
Citra Penguji
1
2
3
4
tekstur_uji.png tekstur_04.png tekstur_02.png tekstur_08.png tekstur_01.png