tugas tkpp afri yudamson
DESCRIPTION
hby hbygy bygvtyt hbiuTRANSCRIPT
TUGAS MATA KULIAH TEKNIK KLASIFIKASI DAN PENGENALAN POLA
EKSTRAKSI CIRI CITRA BERDASARKAN JARAK KOMPONEN WAJAH DAN
PERANCANGAN PROGRAM PERCEPTRON PEMBELAJARAN TERBMBING
OLEH :
AFRI YUDAMSON
11/322869/PTK/7542
PROGRAM STUDI S2 RREGULER
JURUSAN TEKNIK ELEKTRO DAN TEKNIK INFORMASI
FAKULTAS TEKNIK
UNIVERSITAS GADJAH MADA
2012
Latar belakang
Identifikasi wajah tiga dimensi dengan menggunakan dua buah kamera sebagai
perangkat untuk menangkap citra input dari dua sudut yang berbeda. Berikut gambaran
skema peletakkan webcam terhadap sampel wajah.
Gambar 1. Skema peletakkan webcam terhadap wajah sampel.
Dari masing- masing webcam didapatkan citra sampel berupa wajah dari sudut
pandang yang berbeda. Citra tersebut akan melalui proses filterisasi, normalisasi range
kecerahan(brightness) dan kontras, normalisasi posisi, dan segmentasi. Filterisasi
dimaksdukan untuk menghasilkan citra dengan noise yang minimum. Normalisasi range
kecerahan dan kontras bertujuan menghasilkan citra dengan tingkat kecerahan dan
kontras yang sesuai dengan standar yang diinginkan. Normalisasi posisi dilakukan
dengan rotasi citra agar menghasilkan citra dengan kemiringan sesuai standar yang
diinginkan.
Setelah didapatkan citra yang terstandarisasi, akan dilakukan ekstraksi ciri. Proses
ini dilakukan dengan menghitung nilai perbandingan nilai proyeksi jarak mata kiri-
hidung terhadap jarak mata kiri-mata kanan. Nilai yang didapat dari dua gambar yang
dihasilkan dari masing-masig webcam akan menjadi masukkan bagi Perceptron. Proses
ini dapat diperjelas dari gambar berikut.
d1’
d2’
mata hidung
wajah sampel
webcam
webcam
Gambar 2. Model citra sampel
Keterangan:
= vektor jarak mata kiri-mata kanan (d)
= vektor jarak mata kiri-hidung (d1)
= proyeksi vektor jarak mata kiri-hidung terhadap vektor jarak mata kiri-mata kanan
(d1’)
Dari citra yang dihasilkan oleh masing-masing webcam didapatkan nilai | d | dan
nilai | d1’ |. Kemudian dihitung nilai x1 dan x2 dengan persamaan berikut.
�1 =|���|
|�| dari citra hasil webcam pertama
�2 =|���|
|�| dari citra hasil webcam kedua
x1 dan x2 berikutnya akan menjadi masukkan untuk Perceptron. Output yang dihasilkan
dari perceptron berupa bobot-bobot akhir yang dapat mengidentifikasi masukan
sebagai wajah 3 dimensi atau bukan.
Untuk mengetahui titik-titik pusat komponen wajah(mata dan hidung) diperlukan
proses pemotongan gambar berdasarkan letak komponen wajah. Pada tugas
matakuliah ini dilakukan eksperimen pemotongan citra wajah dua dimensi sebagai
sampel untuk mengetahui letak komponen wajah(mata dan hidung) dan mengekstraksi
ciri citra berdasarkan jarak komponen-komponen wajah yang akan digunakan sebagai
input untuk perceptron.
hidung
mata mata
Wajah sampel
Tujuan
Tujuan dari eksperimen yang dilakukan adalah untuk mengetahui letak komponen
wajah yang selanjutnya akan dicari titik pusat koordinat masing-masing komponen wajah
dan menghitung nilai perbandingan jarak antar komponen wajah. Selain itu, eksperimen ini
bertujuan untuk merancang program berbasis perceptron pembelajaran terbimbing.
Metode penelitian
Langkah-langkah yang dilakukan antara lain:
1. Mempersiapkan file citra sampel.
2. Mempersiapkan software Matlab.
3. Membuat program untuk mengambil dan mengolah citra sampel.
4. Menguji program.
5. Membuat program perceptron pembelajaran terbimbing.
6. Menguji program untuk mendapatkan nilai bobot-bobot akhir.
Untuk langkah pertama, file citra sampel yang dipakai adalah citra jpeg berukuran 1377x945
pixel. Citra sampel dapat dilihat pada gambar berikut.
Gambar 3. Citra sampel.
Listing program yang ditulis sebagai berikut:
clc
clear
Foto=imread('D:\Do n Wo\PICTURE\PICTURE\mine\edit\pas foto
4x6.jpg');
G=rgb2gray(Foto);
Blck=im2bw(Foto);
Crp1=imcrop(G,[300 450 150 100]);
Crp2=imcrop(G,[500 450 150 100]);
Crp3=imcrop(G,[425 575 100 100]);
subplot(2,2,1);
imshow(Foto);
subplot(2,2,2);
imshow(Crp1);
subplot(2,2,3);
imshow(Crp2);
subplot(2,2,4);
imshow(Crp3);
Program tersebut pertama-tama mengambil citra sampel dengan alamat direktori
tertentu kemudian mengubah citra sampel dari range warna RGB ke Grayscale. Setelah itu
memotong citra sampel berdasarkan letak komponen wajah(mata dan hidung). Kemudian
menampilkan citra asli, citra mata kiri, citra mata kanan, dan citra hidung. Untuk mata kiri
dan mata kanan diatur citra berukuran 150x100 piksel sedangkan citra hidung berukuran
100x100 piksel.
Hasil pengujian program sebagai berikut:
Gambar 4. Citra hasil running program.
Setelah citra terpotong berdasarkan komponen wajahnya, akan dicari letak titik-titik pusat
masing-masing komponen wajah tersebut. Dapat dilihat pada gambar berikut.
Gambar 5. Letak titik pusat komponen wajah.
Ket:
= vektor antar pusat mata kanan dan kiri ��̅�
= vektor antara pusat mata kiri dengan pusat hidung �������
= vektor proyeksi����� terhadap �̅ ���̅
� �
Untuk mengetahui jarak antar komponen wajah diperlukan nilai letak komponen
wajah yaitu �̅, ��, dan �̅ berdasarkan citra yang sebelumnya telah dipotong. Karena objek
berupa citra 2 dimensi, maka masing-masing vektor pusat memiliki 2 komponen penyusun
yaitu �̅ dan ��. Jika dimisalkan jarak antara titik awal citra komponen mata kiri dengan titik
awal citra komponen mata kanan adalah �� dan jarak antara titik awal citra komponen mata
kiri dengan titik awal citra komponen hidung adalah �� maka,
�̅ = ���
���
�� = ���
���
D
E
�̅ = ���
���
�� = (��)
�� = ���
���
Dari vektor-vektor di atas dapat dicari nilai ��̅� dan �������� sebagai berikut.
�̅ = �� + �� − �̅
��̅� = �(�� + �� − �� )� + (�� − �� )�
����� = �� + �̅ − �̅
������� = �(�� + �� − �� )� + (�� + �� − �� )�
�������� =
�̅
|�|���� ∙ �����
�������� =
(�� + �� − �� )(�� + �� − �� ) + (�� − �� )(�� + �� − �� )
�(�� + �� − �� )� + (�� − �� )�
Langkah berikutnya adalah menghitung perbandingan antara nilai proyeksi vektor
jarak mata kiri-hidung terhadap vektor jarak mata kiri-kanan dengan nilai vektor jarak mata
kiri-kanan. Nilai ini akan dijadikan input pada Perceptron dengan dua buah citra masukan.
Untuk itu, nilai ini dilambangkan sebagai X1 (untuk citra hasil penangkapan webcam1) dan
X2 (untuk citra hasil penangkapan webcam2). Dengan demikian dapat dibuat persamaan
sebagai berikut.
X =���
�����
��̅�
X =(�� + �� − �� )(�� + �� − �� ) + (�� − �� )(�� + �� − �� )
(�� + �� − �� )� + (�� − �� )�
Pada pemrograman dengan Matlab terdapat permasalahan yang belum dapat
terpecahkan yaitu mencari letak/indeks titik pusat masing-masing komponen wajah. Dengan
demikian pencarian letak titik pusat masing-masing komponen wajah dilakukan dengan
manual sehingga didapatkan data sebagai berikut.
�̅ = �8257
�
�� = �8250
�
�̅ = �5552
�
�� = (200)
�� = �125125
�
Dari data di atas dapat dihitung nilai X sebagai berikut.
X =(200 + 82 − 82)(125 + 55 − 82) + (50 − 57)(125 + 52 − 57)
(200 + 82 − 82)� + (50 − 57)�
X =200.98 + (−7)120
200� + (−7)�
X =18760
40049
X = 0,4684
Langkah berikutnya adalah merancang program identifikasi pola wajah tiga dimensi berbasis
perceptron. Karena target sudah jelas, maka jenis pembelajaran yang digunakan adalah
pembelajaran terbimbing. Input in1 akan bernilai 1 apabila X1<0,4, selain itu akan bernilai 0
sedangkan Input in2 akan bernilai 1 apabila X1>0,6, selain itu akan bernilai 0. Berikut table
yang merepresentasikan hubungan input dengan target.
Table 1. Tabel hubungan input dengan target.
In1 In2 Target
1 1 1
1 0 0
0 1 0
0 0 0
Dari tabel 1 dirancang sebuah program yang dapat memberikan nilai bobot-bobot
akhir untuk perceptron agar dapat menghasilkan output yang sesuai dengan target. Diagram
alir pembelajaran program dapat dilihat pada gambar berikut.
Gambar 6. Diagram alir pembelajaran perceptron.
Berikut listing program perceptron dengan menggunakan software Matlab.
clear
clc
X1=input('masukkan input X1 = ');
X2=input('masukkan input X2 = ');
T=input('masukkan target T = ');
bias=1;
alpha=input('masukkan konstanta pembelajaran = ');
w1=0; %penentuan nilai awal bobot untuk X1
w2=0; %penentuan nilai awal bobot untuk X2
t=1; %penentuan nilai awal waktu
w0=0; %penentuan nilai awal bobot untuk bias
error=[1 1 1 1]; %penentuan nilai awal error
epoch=1; %penentuan nilai awal epoch
fprintf('X1 X2 w0 w1 w2 T Y error
dw0 dw1 dw2\n');
while error(1)~=0 || error(2)~=0 || error(3)~=0 || error(4)~=0
sigma=X1(t)*w1+X2(t)*w2+bias*w0; %menghitung jumlah input
dikalikan bobot + bias
if sigma > 0 %menghitung nilai keluaran
Y=1;
else
Y=0;
end
error(t)=T(t)-Y;
dw0=error(t)*alpha*bias;
dw1=error(t)*alpha*X1(t);
dw2=error(t)*alpha*X2(t);
w0=w0+dw0; %update bobot untuk bias
w1=w1+dw1; %update bobot untuk X1
w2=w2+dw2; %update bobot untuk X2
fprintf('%2d %2d %2.1f %2.1f %2.1f %2d
%2d %2.1f %2.1f %2.1f %2.1f\n', X1(t), X2(t), w0,
w1, w2, T(t), Y, error(t), dw0, dw1, dw2);
t=t+1; %penambahan nilai waktu
if t==5 %penambahan nilai epoch
t=1;
epoch=epoch+1;
end
end
Epoch=epoch
w0_akhir=w0
w1_akhir=w1
w2_akhir=w2
Hasil running program dengan data sesuai table 1 dan nilai konstanta pembelajaran sebesar
0,3 adalah sebagai berikut.
masukkan input X1 = [1 1 0 0]
masukkan input X2 = [1 0 1 0]
masukkan target T = [1 0 0 0]
masukkan konstanta pembelajaran = 0.3
X1 X2 w0 w1 w2 T Y error dw0 dw1 dw2
1 1 0.3 0.3 0.3 1 0 1.0 0.3 0.3 0.3
1 0 0.0 0.0 0.3 0 1 -1.0 -0.3 -0.3 0.0
0 1 -0.3 0.0 0.0 0 1 -1.0 -0.3 0.0 -0.3
0 0 -0.3 0.0 0.0 0 0 0.0 0.0 0.0 0.0
1 1 0.0 0.3 0.3 1 0 1.0 0.3 0.3 0.3
1 0 -0.3 0.0 0.3 0 1 -1.0 -0.3 -0.3 0.0
0 1 -0.3 0.0 0.3 0 0 0.0 0.0 0.0 0.0
0 0 -0.3 0.0 0.3 0 0 0.0 0.0 0.0 0.0
1 1 0.0 0.3 0.6 1 0 1.0 0.3 0.3 0.3
1 0 -0.3 0.0 0.6 0 1 -1.0 -0.3 -0.3 0.0
0 1 -0.6 0.0 0.3 0 1 -1.0 -0.3 0.0 -0.3
0 0 -0.6 0.0 0.3 0 0 0.0 0.0 0.0 0.0
1 1 -0.3 0.3 0.6 1 0 1.0 0.3 0.3 0.3
1 0 -0.3 0.3 0.6 0 0 0.0 0.0 0.0 0.0
0 1 -0.6 0.3 0.3 0 1 -1.0 -0.3 0.0 -0.3
0 0 -0.6 0.3 0.3 0 0 0.0 0.0 0.0 0.0
1 1 -0.3 0.6 0.6 1 0 1.0 0.3 0.3 0.3
1 0 -0.6 0.3 0.6 0 1 -1.0 -0.3 -0.3 0.0
0 1 -0.6 0.3 0.6 0 0 0.0 0.0 0.0 0.0
0 0 -0.6 0.3 0.6 0 0 0.0 0.0 0.0 0.0
1 1 -0.6 0.3 0.6 1 1 0.0 0.0 0.0 0.0
1 0 -0.6 0.3 0.6 0 0 0.0 0.0 0.0 0.0
Epoch =
6
w0_akhir =
-0.6000
w1_akhir =
0.3000
w2_akhir =
0.6000
Dari hasil running didapatkan nilai bobot yang sesuai untuk table 1 adalah
�0 = −0,6; �1 = 0,3; �2 = 0,6. Nilai bobot ini akan menjadi dasar untuk mengenali
masukan sebagai citra wajah tiga dimensi atau citra wajah dua dimensi. Berikut diagram alir
program untuk identifikasi pola wajah tiga dimensi.
Gambar 7. Diagram alir perceptron pengambilan keputusan.
Berikut listing program perceptron untuk mengenali citra masukan.
clear
clc
X1=input('masukkan nilai input X1 = ');
X2=input('masukkan nilai input X2 = ');
w0=-0.6;
w1=0.3;
w2=0.6;
if X1 < 0.4
In1=1;
else
In1=0;
end
if X2 > 0.6
In2=1;
else
In2=0;
end
In1
In2
sigma=In1*w1+In2*w2+w0
if sigma > 0
Y=1
fprintf('\n citra masukkan adalah CITRA WAJAH 3
DIMENSI\n');
else
Y=0
fprintf('\n citra masukkan adalah CITRA WAJAH 2
DIMENSI\n');
end
Hasil running dengan masukkan X1 = 0,3 dan X2 = 0,65 adalah sebagai berikut.
masukkan nilai input X1 = 0.3
masukkan nilai input X2 = 0.65
In1 =
1
In2 =
1
sigma =
0.3000
Y =
1
citra masukkan adalah CITRA WAJAH 3 DIMENSI
Hasil running dengan masukkan X1 = 0,3 dan X2 = 0, 5 adalah sebagai berikut.
masukkan nilai input X1 = 0.3
masukkan nilai input X2 = 0.5
In1 =
1
In2 =
0
sigma =
-0.3000
Y =
0
citra masukkan adalah CITRA WAJAH 2 DIMENSI
Kesimpulan
Kesimpulan yang dapat diambil dari eksperimen yang telah dilakukan adalah citra
sampel dapat dipotong sesuai dengan letak komponen wajah yaitu mata dan hidung. Nilai
input untuk Perceptron telah dapat dihitung dan dapat diujikan untuk mengenali citra
masukan sebagai citra wajah tiga dimensi atau bukan. Namun terdapat permasalahan yang
belum dapat terpecahkan yaitu merancang program yang dapat memberikan nilai koordinat
masing-masing pusat komponen citra wajah.