IMPLEMENTASI SUPPORT VECTOR MACHINE
UNTUK KLASIFIKASI PIKSEL PADA SEGMENTASI
CITRA
(Kata kunci:
segmentasi citra, gabor filter, local homogeneity, fuzzy c-means,
support vector machine
)
PRESENTASI TUGAS AKHIR – KI091391
Penyusun Tugas Akhir :
Irawati Nurmala Sari
(NRP : 5108.100.030)
Dosen Pembimbing
:
Yudhi Purwananto, S.Kom, M.Kom
Rully Soelaiman, S.Kom, M.Kom
Segmentasi citra adalah suatu metode dari pengolahan citra
digital yang bertujuan untuk membagi citra menjadi beberapa
region yang homogen berdasarkan kriteria kemiripan tertentu.
Segmentasi
citra
merupakan
masalah
klasifikasi,
yaitu
bagaimana memprediksikan suatu piksel termasuk edge atau
non-edge.
Pada umumnya, suatu metode segmentasi citra hanya
menggunakan classifier yang linier sehingga menghasilkan
boundary citra yang kurang optimal.
Dibutuhkan suatu metode segmentasi citra yang dapat
memisahkan
piksel
secara
non-linear
sehingga
dapat
menghasilkan boundary citra yang optimal dapat mengurangi
noise disekitar objek yang diamati.
RUMUSAN MASALAH
1.
Bagaimana memahami metodologi segmentasi citra berdasarkan
metode
Support Vector Machine.
2.
Bagaimana cara membedakan antara piksel
edge
dan
non-edge
.
3.
Mengidentifikasi
parameter-parameter
yang
dapat
mempengaruhi hasil segmentasi citra berdasarkan metode
Support Vector Machine.
4.
Berapa tingkat keberhasilan yang dihasilkan dari segmentasi
citra dengan menggunakan metode
Support Vector Machine
jika
BATASAN MASALAH
1.
Prinsip kerja SVM pada sistem ini hanya menangani klasifikasi dua
kelas, yaitu edge dan non-edge.
2.
Menggunakan nilai convergence error = 1e-5 pada proses clustering
piksel dengan metode FCM.
3.
Menggunakan kernel polynomial pada proses klasifikasi.
4.
Pada proses klasifikasi dengan metode support vector machine
menggunakan toolbox Steve R Gunn [Steve02].
5.
Hanya mendeteksi edge pada citra berwarna yang statis pada
database berkeley [Berke06].
6.
Sistem perangkat lunak yang digunakan dalam melakukan sistem ini
adalah Matlab versi 7.6.0.
1. Mengetahui bentuk objek dari suatu citra dengan
cara melakukan proses segmentasi citra
menggunakan metode support vector machine.
2. Mengidentifikasi parameter-parameter yang dapat
mempengaruhi hasil segmentasi citra.
GAMBARAN UMUM APLIKASI
(a)
Citra Berwarna
(b)
Citra Ground Truth
(c)
Citra boundary
(d)
Citra hasil segmentasi
d
c
b
a
DESAIN MODEL APLIKASI
Ekstraksi Fitur Tekstur
Clustering Piksel
Pemilihan Training Set
Dan Testing Set
Training Model Classifier
Citra asal
Citra hasil segmentasi
Ekstraksi Fitur Warna
PROSES CLUSTERING PIKSEL
DENGAN METODE FUZZY C-MEANS
MULAI Menentukan matriks mambership secara random sesuai dengan batasan Menentukan pusat cluster pada setiap cluster
Hitung nilai fungsi objektif pada iterasi ke-t Memperbaiki nilai membership setiap piksel terhadap semua cluster Menentukan anggota setiap cluster SELESAI Menentukan training sample Menggabungkan training sample dari semua cluster
Training set Inisialisasi parameter jumlah cluster, w, t, dan convergence error Fungsi objektif menghasilkan nilai yang konstan pada
iterasi ke-t iya Menentukan testing sample Training sample Testing sample Menggabungkan testing sample dari semua cluster
Testing set Data piksel dari gabungan hasil ekstraksi fitur warna dan ekstraksi fitur tekstur
Data piksel yang memiliki atribut (L, A, B, M) 1. Training set yang memiliki atribut (L, A, B, M) 3. Testing set yang memiliki atribut (L, A, B, M) 2. Training set dengan label kelas edge dan non-edge
Hasil ekstraksi fitur warna
(L, A, B)
Hasil ekstraksi fitur tekstur (M)
PROSES INISIALISASI KURVA
PROSES TRAINING MODEL CLASSIFIER
(HYPERPLANE OPTIMAL) DENGAN METODE
SUPPORT VECTOR MACHINE
Memetakan training set dari input space ke feature space dengan menggunakan fungsi kernel polynomial
Menemukan nilai margin yang maksimal
Mencari hyperplane yang optimal
1. Training set yang
memiliki atribut (L, A, B, M)
Nilai alpha, bias, dan support vector 2. Training set dengan
label kelas edge dan non-edge
PROSES INISIALISASI KURVA
PROSES TESTING KLASIFIKASI PIKSEL DENGAN
DENGAN METODE SUPPORT VECTOR MACHINE
Memetakan training set dari input space ke feature space dengan menggunakan fungsi kernel polynomial
Mengklasifikasikan testing set dengan menggunakan hyperplane optimal
1. Testing set dengan label kelas edge dan non-edge
4. Nilai alpha, bias, dan support vector
2. Training set yang
memiliki atribut (L, A, B, M) 3. Training set dengan label kelas edge dan non-edge
Hasil klasifikasi testing set ke dalam kelas edge dan non-edge
PROSES DEFORMASI
Piksel edge dan non-edge
Training set (hasil FCM)
Citra hasil segmentasi
PROSES MENGGABUNGKAN PIKSEL EDGE DAN
NON-EDGE DARI TRAINING SET DAN TESTING SET
Piksel edge dan non-edge
Testing set (hasil SVM)
1.
Perbandingan ukuran local window yang akan digunakan pada
proses ekstraksi fitur warna dengan menggunakan ukuran
yang berbeda-beda, yaitu 3x3, 5x5, dan 7x7.
2.
Perbandingan nilai scale yang akan digunakan pada proses
ekstraksi fitur tekstur, yaitu dengan menggunakan nilai 0, 0.5,
1 ; 0.5, 1, 2 ; dan 3, 4, 5.
3.
Perbandingan nilai orientation yang akan digunakan pada
proses ekstraksi fitur tekstur, yaitu dengan menggunakan nilai
0, 15, 20, 30 ; 0, 45, 90, 135 ; dan 90, 120, 180, 270.
4.
Perbandingan jumlah scale yang akan digunakan pada proses
ekstraksi fitur tekstur, yaitu dengan menggunakan jumlah scale
1, 3, dan 6.
5.
Perbandingan jumlah orientation yang akan digunakan pada
proses ekstraksi fitur tekstur, yaitu menggunakan jumlah
orientation 2, 4, dan 6.
6.
Perbandingan jumlah cluster yang akan digunakan pada proses
clustering piksel, yaitu menggunakan jumlah cluster 3, 4, dan
6.
7.
Perbandingan derajat polinom sebagai parameter dari kernel
polynomial pada proses klasifikasi piksel, yaitu menggunakan
derajat polinom 1 dan 3.
8.
Perbandingan parameter toleransi C yang digunakan untuk
menentukan besar penalti akibat kesalahan dalam klasifikasi
piksel (misclassification), yaitu menggunakan parameter C
1000, 1e-9, dan 1e-999
9. Perbandingan threshold training set dengan menggunakan nilai
0.9 dan 0.8, sedangkan threshold testing set
dengan
menggunakan nilai 0.9, 0.8, 0.7, 0.6, 0.5, 0.4. 0.3, 0.2, 0.1, 0,
-0.1, -0.2, -0.3, -0.4, -0.5, -0.6, -0.7, -0.8, -0.9. Kedua
perbandingan ini sangat berkaitan erat dan tidak dapat
dipisahkan satu dengan yang lain. Perbandingan ini digunakan
untuk menentukan boundary citra yang optimal.
TINGKAT KEBERHASILAN (1)
Gambar 1 merupakan citra ground truth dan batasan obyek yang akan
dihitung akurasinya adalah Gambar 2.
Mencari error rate dari citra hasil segmentasi terhadap citra ground
truth dengan persamaan dibawah ini :
2
1
TINGKAT KEBERHASILAN (2)
Apabila error rate telah diketahui maka nilai tingkat kebenaran
dapat dihitung dengan persamaan :
SKENARIO 1
Perbandingan ukuran local window
Perbandingan dilakukan pada citra bunga.jpg
dengan ukuran 289x193 dengan ukuran local
window 3x3, 5x5, dan 7x7.
Parameter yang digunakan adalah threshold
training set = 0.8, threshold testing set 0.6
Local window ukuran 3x3 (akurasi = 93.24% ; 27 menit)
Hasil analisa: Ukuran local window
mempengaruhi hasil citra boundary dan
waktu komputasi dari proses
segmentasi citra. Semakin besar
ukuran local window, maka akan
semakin memiliki waktu komputasi
yang lebih cepat tetapi memiliki hasil
citra boundary yang terputus-putus.
Sedangkan, jika ukuran local window
semakin kecil, maka memiliki waktu
komputasi yang lama tetapi memiliki
citra boundary yang terhubung dengan
lebih baik.
Local window ukuran 5x5 (akurasi = 93.24% ; 26 menit)
Local window ukuran 3x3 (akurasi = 93.04% ; 23 menit)
Citra Asal
Citra Ground Truth
SKENARIO 2
Perbandingan nilai scale
Perbandingan dilakukan pada citra bunga.jpg
dengan ukuran 289x193 dengan nilai scale
(0, 0.5, 1), (0.5, 1, 2), dan (3, 4, 5).
Parameter yang digunakan adalah threshold
training set = 0.9, threshold testing set = 0.6
Nilai scale = 0, 0.5, 1 (akurasi = 92.07%)
Hasil analisa: Nilai scale
mempengaruhi hasil citra boundary dari
proses segmentasi citra. Nilai akurasi
yang tinggi tidak menjamin suatu citra
menghasilkan citra boundary yang
sempurna. Semakin kecil nilai scale,
maka semakin menghasilkan citra
boundary yang terputus-putus, namun
apabila nilai scale telah mencapai nilai
optimal maka menghasilkan citra
boundary yang terhubung dengan lebih
baik.
Citra Asal Citra Ground Truth Nilai scale = 0.5, 1, 2 (akurasi = 92.1%) Nilai scale = 3, 4, 5 (akurasi = 92.09%)SKENARIO 3
Perbandingan nilai orientation
Perbandingan dilakukan pada citra gereja
putih.jpg dengan ukuran 289x193 dengan nilai
orientation (0, 15, 20, 30), (0, 45, 90, 135),
dan (90, 120, 180, 270).
Parameter yang digunakan adalah threshold
training set = 0.9, threshold testing set = 0.6.
Nilai orientation = 0, 15, 20, 30 (akurasi = 93.16% ; 25 menit)
Hasil analisa: Nilai orientation
mempengaruhi hasil citra boundary
dari proses segmentasi citra.
S
emakin
besar nilai orientation, maka akan
semakin menghasilkan nilai akurasi
yang tinggi , namun hal itu tidak
menjamin suatu citra menghasilkan
citra boundary yang terhubung dengan
sempurna. Apabila nilai orientation
telah mencapai nilai optimal maka
menghasilkan citra boundary yang
terhubung dengan lebih baik.
Citra Asal Citra Ground Truth Nilai orientation = 0, 45, 90, 135 (akurasi = 93.16%) Nilai orientation = 90, 120, 180, 270 (akurasi = 93.24%)
SKENARIO 4
Perbandingan jumlah scale
Perbandingan dilakukan pada citra gereja
putih.jpg dengan ukuran 289x193 dengan
jumlah scale 1, 3, dan 6.
Parameter yang digunakan adalah threshold
training set = 0.8, threshold testing set = 0.8.
Jumlah scale = 1 (akurasi = 93.26%)
Hasil analisa: Jumlah scale
mempengaruhi hasil citra dari proses
segmentasi citra.
S
emakin besar
jumlah scale, maka akan semakin
menghasilkan nilai akurasi yang tinggi ,
namun hal itu tidak menjamin suatu
citra menghasilkan citra boundary yang
sempurna. Apabila jumlah scale telah
mencapai nilai optimal maka
menghasilkan citra boundary yang
terhubung dengan lebih baik.
Citra Asal Citra Ground Truth Jumlah scale = 3 (akurasi =93.27%) Jumlah scale = 6 (akurasi = 93.27%)
SKENARIO 5
Perbandingan jumlah orientation
Perbandingan dilakukan pada citra gereja.jpg
dengan ukuran 289x193 dengan jumlah
orientation 2, 4, dan 6.
Parameter yang digunakan adalah threshold
training set = 0.8, threshold testing set = 0.8.
Jumlah orientation = 2 (akurasi = 97.24%)
Hasil analisa: Jumlah orientation
mempengaruhi hasil citra boundary
dari proses segmentasi citra.
S
emakin
besar jumlah orientation, maka akan
semakin menghasilkan nilai akurasi
yang tinggi , namun hal itu tidak
menjamin suatu citra menghasilkan
citra boundary yang terhubung yang
sempurna. Apabila jumlah orientation
telah mencapai nilai optimal maka
menghasilkan citra boundary yang
terhubung dengan lebih baik.
Citra Asal Citra Ground Truth Jumlah orientation= 4 (akurasi =97.25%) Jumlah orientation = 6 (akurasi = 97.25%)
SKENARIO 6
Perbandingan jumlah cluster
Perbandingan dilakukan pada citra burung.jpg
dengan ukuran 215x195 dengan jumlah cluster
3, 4, dan 6.
Parameter yang digunakan adalah threshold
training set = 0.8, threshold testing set = -0.7.
Jumlah cluster = 3 (akurasi = 97.07% ; 25 menit)
Hasil analisa: Jumlah cluster
mempengaruhi hasil citra boundary
dan waktu komputasi dari proses
segmentasi citra.
S
emakin besar
jumlah cluster, maka akan semakin
menghasilkan nilai akurasi yang
rendah dan citra boundary yang
terputus-putus. Selain itu, juga
memiliki waktu komputasi yang lebih
lama . Namun , hal itu tidak dapat
digeneralisasi untuk semua citra
warna lainnya karena setiap citra
Citra Asal Citra Ground Truth Jumlah cluster= 4 (akurasi =97.06% ; 30 menit) Jumlah cluster = 6 (akurasi = 96.95% ; 60 menit)
SKENARIO 7
Perbandingan derajat polinom
Perbandingan dilakukan pada citra bunga.jpg
dengan ukuran 289x193 dengan derajat
polinom 1, 3, dan 4.
Parameter yang digunakan adalah threshold
training set = 0.8, threshold testing set = 0.8.
Derajat polinom = 1 (akurasi = 93.24% ; 20 menit)
Hasil analisa: Derajat polinom
mempengaruhi hasil citra boundary dan
waktu komputasi dari proses
segmentasi citra. Semakin kecil derajat
polinom, maka memiliki waktu
komputasi yang semakin cepat namun ,
memiliki nilai akurasi yang lebih rendah
dan citra boundary yang terputus-putus.
Sebaliknya, semakin ke besar derajat
polinom, maka memiliki waktu
komputasi yang semakin lama tetapi
memiliki nilai akurasi yang lebih tinggi
dan citra boundary yang lebih baik.
Citra Asal Citra Ground Truth Derajat polinom = 3 (akurasi =93.28% ; 25 menit) Derajat polinom = 4 (akurasi = 93.29% ; 120 menit)
SKENARIO 8
Perbandingan parameter toleransi C
Perbandingan dilakukan pada citra elang.jpg
dengan ukuran 235x218 dengan parameter
toleransi C 1e-999, 1e-9, dan 1000.
Parameter yang digunakan adalah threshold
training set = 0.8, threshold testing set = 0.8.
Parameter toleransi C = 1e-999 (akurasi = 98.14% ; 22 menit)
Hasil analisa: Parameter toleransi C
hanya mempengaruhi waktu komputasi
dari proses segmentasi citra. Semakin
besar parameter toleransi C, maka akan
semakin memiliki waktu komputasi yang
lama namun tidak mempengaruhi hasil
citra boundary dan nilai akurasi.
Citra Asal
Citra Ground Truth
Parameter toleransi C = 1e-9 (akurasi =98.14% ; 23 menit)
SKENARIO 9 (Bagian 1)
Perbandingan threshold training set dan threshold
testing set
Perbandingan dilakukan pada citra
gereja.jpg dengan ukuran 289x193.
Parameter yang digunakan adalah nilai
scale = 0.5, 1, 2 dan nilai orientation = 0,
45, 90, 135.
Threshold training set = 0.95 dan threshold testing set = 0.1
(akurasi = 92.36%)
Hasil analisa: Threshold training set
dan threshold testing set
mempengaruhi hasil segmentasi citra
untuk menentukan citra boundary. Nilai
akurasi yang tinggi tidak menjamin
suatu citra menghasilkan citra
boundary yang terhubung yang
sempurna. Setiap citra memiliki nilai
threshold training set dan threshold
testing set yang berbeda untuk
menghasilkan boundary yang optimal.
Citra Asal
Citra Ground Truth
Threshold training set = 0.8 dan threshold testing set = 0.9
(akurasi = 92.17%)
Threshold training set = 0.9 dan threshold testing set = -0.1
SKENARIO 9 (Bagian 2)
Perbandingan threshold training set dan threshold
testing set
Threshold training set = 0.9 dan threshold testing set = -0.7
(akurasi = 92.16%)
Citra Asal
Citra Ground Truth
Threshold training set = 0.8 dan threshold testing set = -0.6
(akurasi = 93.09%)
Threshold training set = 0.9 dan threshold testing set = -0.2
Citra Asal
Citra Ground Truth
Threshold training set = 0.9 dan threshold testing set = -0.6
(akurasi = 92.15%)
Threshold training set = 0.9 dan threshold testing set = 0.6
(akurasi = 93.48%)
Threshold training set = 0.8 dan threshold testing set = 0.8
1.
Segmentasi dengan metode
Support Vector Machine
dapat
melakukan seluruh proses segmentasi citra secara otomatis. Hal
ini dibuktikan dengan tidak dibutuhkannya keterlibatan pengguna
selama proses segmentasi.
2.
Untuk membedakan suatu piksel termasuk
edge
dan
non-edge
ditentukan oleh parameter
threshold training set
dan
threshold
testing set
. Setiap citra memiliki nilai
threshold training set
dan
threshold testing set
yang berbeda untuk menghasilkan citra
boundary
yang optimal.
3. Ekstraksi fitur warna dengan menggunakan metode
Local
Homogeneity
dipengaruhi oleh parameter ukuran
local window
dalam menentukan citra
boundary
yang sempurna. Selain itu,
ukuran
local window
juga mempengaruhi waktu komputasi pada
proses segmentasi citra. Semakin besar ukuran
local window
,
maka akan semakin memiliki waktu komputasi yang lebih cepat
tetapi memiliki hasil citra
boundary
yang terputus-putus.
Sedangkan, jika ukuran
local window
semakin kecil, maka memiliki
waktu komputasi yang lama tetapi memiliki citra
boundary
yang
terhubung dengan lebih baik.
4.
Ekstraksi fitur tekstur dengan menggunakan metode
Gabor Filter
dipengaruhi oleh parameter nilai
scale
, nilai
orientation,
jumlah
scale
dan jumlah
orientation
dalam menentukan citra
boundary
yang sempurna. Parameter tersebut dapat dinaikkan apabila
belum mencapai nilai optimal. Apabila sudah optimal, maka akan
menghasilkan citra
boundary
yang terhubung dengan baik.
5.
Proses
clustering
piksel dengan menggunakan metode
Fuzzy
C-Means
dipengaruhi oleh jumlah
cluster
dalam menentukan citra
boundary
yang sempurna. Selain itu, jumlah
cluster
juga
mempengaruhi waktu komputasi pada proses segmentasi citra.
Jika hasil citra
boundary
yang diperoleh masih kurang sesuai,
maka perlu dilakukan penambahan jumlah
cluster.
Sedangkan,
jika jumlah
cluster
berlebih atau besar, maka hasilnya akan
mengikuti hasil segmentasi dengan jumlah
cluster
yang hasilnya
paling baik.
6. Proses training SVM dipengaruhi oleh parameter derajat polinom
dalam menentukan citra
boundary
yang sempurna. Selain itu,
derajat polinom juga mempengaruhi waktu komputasi pada proses
segmentasi citra. Parameter derajat polinom dibutuhkan pada
proses pemetaan
training set
dari
input space
ke
feature space
dengan menggunakan kernel
polynomial.
Jika hasil citra
boundary
yang diperoleh masih kurang sesuai, maka perlu dilakukan
penambahan derajat polinom. Jika jumlah derajat polinom
berlebih atau besar, maka hasilnya akan mengikuti hasil
segmentasi dengan derajat polinom yang hasilnya paling baik.
Selain itu, pada proses ini juga dipengaruhi oleh parameter
toleransi C yang digunakan untuk menentukan besar penalti akibat
kesalahan dalam klasifikasi piksel
(misclassification).
Parameter
toleransi C hanya mempengaruhi waktu komputasi dari proses
segmentasi citra. Semakin besar parameter toleransi C, maka akan
semakin membutuhkan waktu komputasi yang lama.
7. Tidak dapat dipastikan bahwa semakin besar hasil akurasi dari
parameter-parameter yang telah diujicobakan, maka semakin baik
pula hasil citra
boundary
. Karena nilai akurasi juga dipengaruhi oleh
error
dari segmentasi citra yang dihasilkan. Untuk mendapatkan
hasil yang akurat, pengguna dapat melakukan beberapa uji coba
dengan variasi parameter yang berbeda-beda. Sehingga didapatkan
citra segmentasi yang bagus secara visual. Nilai akurasi digunakan
untuk memastikan apakah citra segmentasi yang dihasilkan sudah
sesuai dengan
ground truth
yang ada atau tidak.
8. Dari hasil uji coba terhadap metode ini memiliki tingkat akurasi
hingga mencapai 98%.
1.
Perlu dikembangkan metode deteksi tepi yang lebih baik untuk
mereduksi noise yang ada pada sekitar objek yang diamati
sehingga akan menghasilkan segmentasi citra yang baik dan
tidak terganggu oleh objek lain di sekitarnya.
2.
Perlu dikembangkan metode yang dapat mengeneralisasi
parameter-parameter yang dibutuhkan secara otomatis,
sehingga user tidak perlu mencari nilai parameter yang paling
optimal.
3.
Perlu dilakukan uji coba yang lebih variatif dan mendalam
untuk mengetahui hasil segmentasi citra yang lebih optimal
berdasarkan metode SVM.
SELESAI
α
: Parameter lagrange multiplier yang digunakan untukmenentukan jumlah
support vector.
b
: Posisi bidang relatif terhadap pusat koordinat.
nsv : Jumlah support vector pada kedua kelas.
C
: Parameter yang menentukan besar penalti akibat kesalahan dalam klasifikasi
piksel (misclassification). Parameter C ini ditentukan oleh pengguna.
X
: Training set yang memiliki atribut berupa hasil ekstraksi fitur warna dan
ekstraksi fitur tekstur yang digunakan untuk memprediksi piksel termasuk
edge atau non-edge.
Y
: Training set yang memiliki atribut hasil prediksi klasifikasi berupa edge dan
non-edge yang digunakan sebagai data input untuk mencari hyperplane yang
optimal.
tstX : Testing set yang memiliki atribut berupa hasil ekstraksi fitur warna dan
ekstraksi fitur tekstur yang digunakan untuk memprediksi piksel termasuk
edge atau non-edge
KONVERSI RGB KE CIELAB
Dalam melakukan konversi warna RGB ke CIELAB terlebih dahulu dilakukan
proses konversi model warna RGB ke CIEXYZ, yaitu :
R’ = R / 255 G’ = G / 255 B’ = B / 255
Konversi dari CIEXYZ ke CIELAB, yaitu :
MENGHITUNG STANDAR DEVIASI
Standar deviasi dari komponen warna seperti CIELAB dapat
dirumuskan sebagai berikut ini :
Dimana :
M x N = ukuran citra
i,j = indeks piksel citra ; 0 ≤ i, m ≤ M–1 ; 0 ≤ j, n ≤ N-1 d x d = ukuran local window
m,n = indeks piksel pada local window
(k = L,a,b) = piksel pada local window dengan indeks m,n pada komponen CIELAB color space. (k = L,a,b) = nilai rata-rata pada piksel citra dengan indeks i,j pada komponen CIELAB color space
.
Nilai rata-rata pada piksel citra dengan indeks i,j pada komponen warna
CIELAB dapat dirumuskan sebagai berikut :
Menggunakan operator sobel dengan rumus seperti berikut ini :
Untuk menentukan magnitude dari gradien horisontal dan vertikal pada citra
dengan persamaan seperti berikut ini :
MENENTUKAN DISCOUNTINUITY
Perbedaan hasil deteksi edge menggunakan operator sobel dan canny.
Citra Asal
Citra dengan operator Sobel
MENGHITUNG EKSTRAKSI FITUR WARNA
DENGAN METODE LOCAL HOMOGENEITY
Hasil dari standar deviasi dan discountinuity dinormalisasikan :
Sehingga, dapat ditentukan hasil ekstraksi fitur warna dengan
menggunakan metode local homogeneity, yaitu :
KONVERSI RGB KE YCBCR
YCbCr color space mengubah nilai RGB menjadi Luminance (Y) dan
Chrominance (CbCr). Formulasi konversi RGB ke YCbCr ditunjukkan
sebagai berikut :
MENENTUKAN KOEFISIEN
GABOR WAVELET
Menentukan koefisien gabor wavelet dengan cara dilatasi dan rotasi,
yaitu :
Dimana :
n = nilai orientation m = nilai scale
Gabor filter 2D dapat dinyatakan sebagai ruang sinusoida dari frekuensi, scale dan
orientation yang dimodulasikan dengan fungsi gaussian 2D, sehingga gabor filter 2D
dengan frekuensi W dapat dirumuskan sebagai berikut :
Dimana :
= fungsi gaussian 2D (envelope)
= sinusoida kompleks (carrier)
Sehingga, gabor filter 2D dapat dinyatakan sebagai berikut :
MENGHITUNG GABOR FILTER
BILANGAN REAL DAN IMAJINER (Bagian 1)
Dengan menerapkan persamaan Euler yang ada pada domain frekuensi,yaitu :
Jadi, persamaan sinusoida kompleks dapat menjadi seperti berikut ini :
Sehingga, persamaan Gabor Filter 2D menjadi :
MENGHITUNG GABOR FILTER
BILANGAN REAL DAN IMAJINER (Bagian 2)
Mengingat bahwa adalah bilangan imajiner, maka bentuk persamaan
diatas adalah bilangan kompleks dengan bentuk Oleh karena itu,
koefisien pada output gabor filter adalah bilangan kompleks.
Gabor filter bilangan real :
Menghitung gabor wavelet untuk gabor fulter bilangan real dan imajiner menggunakan
koefisien gabor wavelet yang telah diperoleh pada proses sebelumnya, sehingga dapat
dinyatakan sebagai berikut ini :
Gabor wavelet pada komponen bilangan real, yaitu :
Gabor wavelet pada komponen bilangan imajiner, yaitu :
MENGHITUNG GABOR WAVELET UNTUK GABOR FILTER
BILANGAN REAL DAN IMAJINER
KONVOLUSI CITRA INPUT DENGAN GABOR WAVELET
Pada konsep konvolusi menggunakan operator (*) sebagai tanda proses
konvolusi antara input berupa citra dengan gabor wavelet .
Hasil konvolusi citra dengan gabor wavelet menggunakan operator (*), yaitu :
Agar operator (*) dapat diganti dengan operator perkalian (x), maka dan
dimasukkan ke dalam domain frekuensi dengan cara mentransformasikan
MENGHITUNG NILAI MAGNITUDE
PADA HASIL CITRA KONVOLUSI
Karena output pada gabor filter merupakan bilangan kompleks, maka output
pada juga merupakan bilangan kompleks sehingga harus diabsolutkan
melalui operator magnitude untuk menjadi bilangan nyata dan menggunakan
persamaan seperti berikut :
ALGORITMA CLUSTERING PIKSEL
DENGAN METODE FCM (Bagian 1)
1. Tentukan :
a. Matriks input Y yang berukuran m x n, dimana m adalah jumlah piksel dan n adalah jumlah atribut (kriteria).
b. Jumlah cluster yang akan dibentuk (C ≥ 2). c. Pangkat pembobotan (m > 1).
d. Iterasi awal (t = 1).
e. Kriteria penghentian iterasi / convergence error (ξ = nilai positif yang sangat kecil).
2. Membuat matriks partisi awal yaitu matriks yang berisi nilai membership setiap piksel terhadap semua cluster secara random sesuai dengan batasan.
3. Tentukan pusat cluster untuk setiap cluster
ALGORITMA CLUSTERING PIKSEL
DENGAN METODE FCM (Bagian 2)
5. Update nilai membership setiap piksel terhadap semua cluster (matriks partisi )
6. Cek kondisi berhenti,
a. Jika fungsi objektif menghasilkan nilai yang tidak berubah lagi (konstan) yaitu maka iterasi akan berhenti.
b. Jika fungsi objektif menghasilkan nilai yang masih berubah (continue), yaitu maka ulangi langkah ke-3.
MENENTUKAN PERSAMAAN
MEMBERSHIP (Bagian 1)
Pada algoritma FCM, fungsi objektif diminimalkan dengan tujuan untuk mencari parameter
membership dan pusat cluster. Dalam meminimalkan suatu fungsi objektif diperlukan suatu metode yang dapat meminimalkan fungsi tersebut, yaitu dengan menggunakan metode Langrange Multiplier. Fungsi objektif yang digunakan FCM adalah
Dengan batasan :
Sehingga, fungsi minimum dari fungsi objektif tersebut adalah :
Persamaan Lagrange Multiplier diatas, diminimumkan terhadap u dan dimaksimalkan terhadap λ (1)
(2)
Dari persamaan (1) diatas, maka diperoleh persamaan :
(3)
MENENTUKAN PERSAMAAN
MEMBERSHIP (Bagian 2)
-= - --=Substitusi persamaan (2) terhadap persamaan (3), maka diperoleh persamaan :
(4)
Substitusi persamaan (4) terhadap persamaan (3), maka diperoleh persamaan membership :
MENENTUKAN PERSAMAAN
MEMBERSHIP (Bagian 3)
=-
--Hasil dari persamaan
Lagrange Multiplier
harus diminimalkan terhadapMaka, diperoleh persamaan :
Sehingga, diperoleh persamaan pusat cluster, yaitu :
MENENTUKAN PERSAMAAN PUSAT CLUSTER
=-
--Nilai margin antara bidang pembatas kedua kelas, dapat dicari dengan cara perhitungan jarak dari titik x terhadap hyperplane (w,b), yaitu :
Dengan batasan, yaitu :
Karena margin merupakan jarak bidang pembatas antara piksel terdekat (support vector) dari kedua kelas, maka diperoleh persamaan margin seperti berikut ini :
MENCARI NILAI MARGIN YANG MAKSIMAL
=-
--Memaksimalkan sama dengan meminimumkan .Oleh karena itu, hyperplane yang memisahkan data piksel secara optimal dapat diperoleh dengan meminimalkan persamaan berikut ini :
(1)
Dengan batasan :
Persoalan minimalisasi pada persamaan (1) dapat diselesaikan dengan menggunakan lagrange multiplier. Sehingga, diperoleh persamaan :
(2)
Persamaan lagrangian diatas harus diminimalkan terhadap w, b dan dimaksimalkan terhadap : (3)
(4)
MENCARI HYPERPLANE YANG OPTIMAL PADA DATA PIKSEL
YANG DIPISAHKAN SECARA LINIER (Bagian 1)
-Primal lagrangian pada persamaan (2) memungkinkan untuk diubah ke bentuk dual lagrangian (quadratic programming) agar lebih mudah dalam penyelesaiannya. Sehingga, diperoleh dual lagrangian problem, yaitu :
(5)
Dari persamaan (2), (3), (4), dan (5), maka diperoleh persamaan dual lagrangian seperti berikut ini :
Sehingga, diperoleh solusi dari persamaan dual lagrangian diatas, yaitu mendapatkan nilai yang digunakan untuk menentukan nilai w.
Dengan batasan :
Dimana :
Piksel yang memiliki nilai adalah support vector.
MENCARI HYPERPLANE YANG OPTIMAL PADA DATA PIKSEL
YANG DIPISAHKAN SECARA LINIER (Bagian 2)
-Setelah diperoleh nilai , maka fungsi klasifikasi pada piksel yang dapat dipisahkan secara linier dapat dirumuskan seperti berikut ini :
Kedua bidang pembatas, harus diubah sehingga lebih fleksibel dengan menambahkan variabel ξ. Sehingga, menghasilkan batasan baru, yaitu :
Pencarian hyperplane optimal dengan penambahan variabel sering disebut juga sebagai soft margin hyperplane. Dengan demikian, formula pencarian hyperplane optimal dapat berubah menjadi:
Meminimumkan variabel ekuivalen dengan meminimumkan error pada training set
MENCARI HYPERPLANE YANG OPTIMAL PADA DATA PIKSEL
YANG DIPISAHKAN SECARA NON-LINEAR (Bagian 1)
Selanjutnya, bentuk primal lagrangian pada permasalahan data piksel yang dipisahkan secara linier berubah menjadi :
Pengubahan persamaan primal lagrangian diatas ke dalam bentuk dual lagrangian dilakukan dengan cara yang hampir sama dengan kasus data piksel yang dipisahkan secara linier tetapi bedanya pada rentang nilai adalah 0 ≤ ≤
C
. Sehingga, menghasilkan solusi dari dual lagrangian, yaitu :MENCARI HYPERPLANE YANG OPTIMAL PADA DATA PIKSEL
YANG DIPISAHKAN SECARA NON-LINEAR (Bagian 2)
-Setelah diperoleh nilai , maka fungsi klasifikasi pada piksel yang dapat dipisahkan secara linier dapat dirumuskan seperti berikut ini :
Contoh data piksel yang tidak dapat dipisahkan secara linier :
SVM menggunakan kernel trick. Dengan demikian, fungsi klasifikasi pada masalah data piksel yang dipisahkan secara
non-linear
dapat dirumuskan menjadi :Metode kernel yang digunakan untuk memetakan dari
input space
kefeature space
pada proses klasifikasi adalah metode kernelpolynomial
. Fungsi kernelpolynomial
memiliki persamaan seperti berikut ini :dimana adalah
support vector
, adalah data piksel yang diklasifikasikanMEMETAKAN DATA PIKSEL
DARI INPUT SPACE KE FEATURE SPACE
-CONTOH PROSES TRAINING SVM
-x
(i,1)
x
(i,2)
x
(i,3)
y
i
α
i
0.09691
0.09691
0.22185
+1
0
0.09691
0.12608
0.22185
+1
5
0.09691
0.09691
0.22185
+1
0
0.12608
0.09691
0.22185
-1
5
0.09691
0.09691
0.22185
+1
0
w
1= 5 x (+1) x
0.09691
+ 5 x (-1) x
0.12608
=
-0.14585
w
2= 5 x (+1) x
0.12608
+ 5 x (-1) x
0.09691
=
0.14585
w
3= 5 x (+1) x
0.22185
+ 5 x (-1) x
0.22185
=
0
b
(1)= (+1) – {
-0.14585
x 0.09691 +
0.14585
x 0.12608 +
0
x 0.22185} = 0.9957506
b
(2)= (-1) – {
-0.14585
x 0.12608 +
0.14585
x 0.09691 +
0
x 0.22185} = -0.9957456
2.5216E-06
IMPLEMENTASI
Ekstraksi Fitur Warna
1 functionfitur=homogeneity(rgb)
2 cform = makecform('srgb2lab');
3 lab = applycform(rgb,cform);
4 nPad = 2;
5 d = (nPad*2+1);
6 padding=uint8(zeros(x+nPad*2,y+nPad*2, z));
7 fori=nPad+1 : x+nPad
8 forj=nPad+1 : y+nPad
9 padding(i,j,:)=lab(i-nPad,j-nPad,:);
10 end 11 End
12 fori=nPad+1 : x+nPad
13 forj=nPad+1 : y+nPad
14 localWindow = uint32( padding(i-nPad:i+nPad,j-nPad:j+nPad,:) );
15 rata=sum(sum(localWindow(:,:,:)))/(d^2); 16 form=1:d 17 forn=1:d 18 sumV(1)=sumV(1)+(localWindow(m,n,1) - rata(1)) ^2; 19 sumV(2)=sumV(2)+(localWindow(m,n,2) - rata(2)) ^2; 20 sumV(3)=sumV(3)+(localWindow(m,n,3) - rata(3)) ^2; 21 end 22 end 23 stDv(i-nPad,j-nPad,1)= sqrt(sumV(1)/(d^2)); 24 stDv(i-nPad,j-nPad,2) = sqrt(sumV(2)/(d^2)); 25 stDv(i-nPad,j-nPad,3) = sqrt(sumV(3)/(d^2)); 26 end 27 end
IMPLEMENTASI
Ekstraksi Fitur Tekstur
1 function newMatrix = GaborfilterBaru(image)
2 image = 0.2989*R + 0.5866*G + 0.114*B;
3 scale = [0.5 , 1.0 , 2.0];
4 orientation =[0 , 1/4*pi , 1/2*pi , 3/4*pi];
5 for m=1: K 6 for n=1: L 7 teta = (orientation(n)*pi)/L; 8 Xbar=a^((scale(m)))*(x*cos(teta)+y*sin( teta)); 9 Ybar = a^(-(scale(m)))*(x*-sin(teta) + y*cos(teta)); 10 GaussianReal=(1/(2*pi*stdx*stdy))*exp(-0.5*((Xbar^2/stdx^2)+ (Ybar^2/stdy^2))); 11 real = cos(W*Xbar); 12 GaborReal = real*GaussianReal; 13 GaussianImag=(1/(stdx*stdy))*exp(-0.5*((Xbar^2/stdx^2)+ (Ybar^2/stdy^2))) 14 imag = sin(W*Xbar); 15 GaborImag = imag.*GaussianImag; 16 gReal = a^(-(scale(m)))*GaborReal; 17 gImag = a^(-(scale(m)))*GaborImag; 18 WReal=conv2(double(image),gReal,'same' ); 19 WImag=conv2(double(image),gImag,'same' );
20 for i=1: xImage
21 for j=1 :yImage 22 magnitude=abs(sqrt((WReal(i,j)^2 + WImag(i,j)^2))) ; 23 if(magnitude > newMatrix(i,j)) 24 newMatrix(i,j) = magnitude; 25 end 26 end 27 end 28 end 29 end
IMPLEMENTASI
Clustering Piksel
1 function [trainLABM,testLABM] = fcmtes(fitur, magnitudeMatrix) 2 for x=1:xSize 3 for y=1:ySize 4 matDataset(counter,1) = counter; 5 matDataset(counter,2:4)=fitur(x,y,1:3); 6 matDataset(counter,5)=magnitudeMatrix(x,y); 7 counter = counter+1; 8 end 9 end 10 [center,U,objFcn] = fcm(matDataset,3); 11 maxU = max(U);12 cluster1 = find(U(1,:) == maxU);
13 cluster2 = find(U(2,:) == maxU);
14 cluster3 = find(U(3,:) == maxU);
15 sumCluster1 = length(cluster1); 16 sumCluster2 = length(cluster2); 17 sumCluster3 = length(cluster3); 18 ceilDiv1 = ceil(sumCluster1/10); 19 ceilDiv2 = ceil(sumCluster2/10); 20 ceilDiv3 = ceil(sumCluster3/10); 21 for i = 1: sumCluster1 22 poscluster1(1,i) = cluster1(1,i); 23 poscluster1(2,i) = U(1,i); 24 end 25 for j = 1 :sumCluster2 26 poscluster2(1,j) = cluster2(1,j); 27 poscluster2(2,j) = U(2,j); 28 end 29 for k = 1 :sumCluster3 30 poscluster3(1,k) = cluster3(1,k); 31 poscluster3(2,k) = U(3,k); 32 end 33 sortpos1 = sortrows(poscluster1,2); 34 sortpos2 = sortrows(poscluster2,2); 35 sortpos3 = sortrows(poscluster3,2); 36 bigtrain1 = sortpos1(sumCluster1-ceilDiv1+1:sumCluster1, :); 37 bigtrain2 = sortpos2(sumCluster2-ceilDiv2+1:sumCluster2, :); 38 bigtrain3 = sortpos3(sumCluster3-ceilDiv3+1:sumCluster3, :); 39 trainingset= [bigtrain1; bigtrain2;bigtrain3]; 40 testingset1 = sortpos1(1:sumCluster1-ceilDiv1, :); 41 testingset2 = sortpos2(1:sumCluster2-ceilDiv2, :); 42 testingset3 = sortpos3(1:sumCluster3-ceilDiv3, :);
43 testset = [testingset1 ; testingset2; testingset3];
IMPLEMENTASI
Training Hyperplane SVM
1 function [nsv, alpha, b0] = svc(X,Y,ker,C)
2 n = size(X,1);
3 % mengeset toleransi (C) untuk mendeteksi adanya support vector
4 epsilon = svtol(C);
5 % memetakan piksel dari input space ke feature space dengan menggunakan metode kernel polynomial
6 fprintf('Constructing ...\n'); 7 for i=1:n 8 for j=1:n 9 H(i,j)= Y(i)*Y(j)*svkernel(ker,X(i,:),X(j,:)); 10 end 11 end 12 c = -ones(n,1); 13 H = H+1e-10*eye(size(H));
14 % menentukan parameter untuk perhitungan optimasi 15 vlb = zeros(n,1); 16 vub = C*ones(n,1 17 x0 = zeros(n,1); 18 neqcstr = nobias(ker); 19 if neqcstr 20 A = Y';, b = 0; 21 else 22 A = [];, b = []; 23 end
24 % menyelesaikan masalah optimasi untuk mencari hyperplane yang optimal
25 fprintf('Optimising ...\n')
26 st = cputime
27 [alpha lambda how] = qp(H, c, A, b, vlb, vub, x0, neqcstr);
28 fprintf('Execution time: %4.1f seconds\n',cputime - st)
29 fprintf('Status : %s\n',how)
30 w2 = alpha'*H*alpha;
32 fprintf('Margin : %f\n',2/sqrt(w2))
33 fprintf('Sum alpha : %f\n',sum(alpha))
34 % menghitung jumlah support vector
35 svi = find( alpha > epsilon);
36 nsv = length(svi);
37 fprintf('Support Vectors : %d (%3.1f%%)\n',nsv,100*nsv/n);
38 % implisit bias
39 b0 = 0;
40 % eksplisit bias
41 if nobias(ker) ~= 0
42 svii = find( alpha > epsilon & alpha < (C - epsilon));
43 if length(svii) > 0
44 b0 = (1/length(svii))*sum(Y(svii) -H(svii,svi)*alpha(svi).*Y(svii));
45 else
46 fprintf('No support vectors on margin - cannot compute bias.\n');
47 end
48 end
IMPLEMENTASI
Testing Klasifikasi Piksel dengan SVM
1 function predictedY =
svcoutput(trnX,trnY,tstX,ker,alpha,bias, actfunc)
2 n = size(trnX,1);
3 m = size(tstX,1);
4 % memetakan piksel dari input space ke
feature space dengan menggunakan metode kernel polynomial 5 H = zeros(m,n); 6 for i=1:m 7 for j=1:n 8 H(i,j)= trnY(j)*svkernel(ker,tstX(i,:),tr nX(j,:)); 9 end 10 end
11 % klasifikasi testing set ke dalam kelas edge atau non-edge
12 if (actfunc) 13 % soft classifier 14 predictedY = softmargin(H*alpha + bias); 15 else 16 % hard classifier
17 predictedY = sign(H*alpha + bias);
18 end
IMPLEMENTASI
Menghitung Tingkat Keberhasilan (Akurasi)
1 tp = 0; 2 fn = 0; 3 tn = 0; 4 fp = 0; 5 for i=1:xImg 6 for j=1:yImg
7 if himage(i,j) == 1 && img(i,j) == 1 8 tp = tp + 1; 9 end 10 end 11 end 12 for i=1:xImg 13 for j=1:yImg
14 if himage(i,j) == 0 && img(i,j)
== 1 15 fp = fp + 1; 16 end 17 end 18 end 19 for i=1:xImg 20 for j=1:yImg
21 if himage(i,j) == 1 && img(i,j)
== 0 22 fn = fn + 1; 23 end 24 end 25 end 26 for i=1:xImg 27 for j=1:yImg
28 if himage(i,j) == 0 && img(i,j)
== 0 29 tn = tn + 1; 30 end 31 end 32 end 33 34 akurasi = (tp+tn)/(tp+tn+fp+fn)*100;
IMPLEMENTASI
Perhitungan Nilai Alpha dengan Library
Quadratic Programming
1 vlb = zeros(n,1); 2 vub = C*ones(n,1); 3 x0 = zeros(n,1); 4 neqcstr = nobias(ker); 5 if neqcstr 6 A = Y';, b = 0; 7 Else 8 A = [];, b = []; 9 End 10 st = cputime;11 [alpha lambda how] = qp(H, c, A, b, vlb,
IMPLEMENTASI
Kernel Polynomial
1 function k = svkernel(ker,u,v) 2 global p1; 3 k = (u*v' + 1)^p1; 4 endSehingga, kode dimplementasikan pada training set adalah
1 n = size(X,1); 2 epsilon = svtol(C); 3 H = zeros(n,n); 4 for i=1:n 5 for j=1:n 6 H(i,j)=Y(i)*Y(j)*svkernel(ker,X(i,:),X(j,:)); 7 End 8 End