- BAB 3
ANALISIS DAN PERANCANGAN SISTEM
Bab ini akan membahas tentang implementasi metode yang digunakan untuk mengenali pola karakter mandarin sebagai pengidentifikasian karakter mandarin yang
terdapat pada biji catur cina. Adapun 2dua tahap yang akan dibahas pada bab ini, yaitu tahap analisis dan tahap perancangan sistem. Pada tahap analisis akan dilakukan
analisa terhadap data yang digunakan untuk diproses dan analisis terhadap teknik maupun metode yang digunakan pada setiap langkah pemrosesan data. Pada tahap
perancangan sistem akan dibahas mengenai perancangan tampilan antarmuka sistem.
3.1. Data yang digunakan
Data yang digunakan dalam penelitian ini adalah citra yang diambil oleh kamera webcam. Adapun beberapa aspek yang berhubungan dengan pengambilan data yang
digunakan adalah resolusi kamera webcam, pencahayaan lighting, jarak pengambilan dan posisi pengambilan citra.
Pada penelitian ini, penulis menggunakan kamera webcam eksternal beresolusi tinggi, yaitu 15 megapixel dengan resolusi gambar 640x480 pixel. Pengambilan
gambar dilakukan dengan pencahayaan ± 200 lux. Jarak pengambilan gambar berada pada jarak antara 15-20 cm dari kamera webcam. Posisi pengambilan gambar berada
pada satu titik yaitu tengah-tengah kamera webcam dan pemgabilan gambar dilakukan tegak lurus. Hal ini dilakukan agar sistem dapat menangkap gambar dari objek yang
akan dikenali dengan baik.
3.2. Analisis Sistem
Metode yang diajukan untuk mengenali pola karakter cina pada biji catur cina melalui kamera webcam pada penelitian ini terdiri dari beberapa langkah. Langkah-langkah
yang dimaksud adalah sebagai berikut: pengambilan citra atau gambar melalui kamera
Universitas Sumatera Utara
webcam; konversi warna RGB menjadi grayscale; proses Gaussian Blur; pendeteksian cincin catur cina dengan Hough Circle Detection; mengubah nilai
grayscale; citra mengalami Dilation; resizing citra; proses binerisasi citra; normalisasi citra; penajaman nilai pixel pada citra dengan Min-Max Linear Contrast Streching;
proses thinning pada citra; proses binerisasi citra thinning; data biner citra mengalami ekstraksi fitur Direction Feature dan pada akhirnya diklasifikasi dengan jaringan saraf
tiruan Backpropagation. Setelah langkah-langkah tersebut dilakukan maka akan didapatkan hasil klasifikasi jenis catur cina berdasarkan jenis font yang berbeda-beda.
Setiap tahapan yang dilakukan akan dijelaskan lebih terperinci pada bagian-bagian selanjutnya. Adapun arsitektur umum yang menggambarkan metode pada penelitian
ini ditunjukkan pada Gambar 3.1.
Gambar 3.1 Arsitektur umum
Neural Network
CITRA
INPUT
Image Enhancement
Gaussian Blur
Canny Edge Detection
Hough Circles Detection
Colour Space Conversion
RGB2Grayscale
ERASE CIRCLES
Dilation Thresholding
Image Normalization
Resizing Image
MinMax Linear Contrast Stretching
Thinning ZhangSuen
Binerization
Feature Extraction
Direction Feature
Extraction
BACKPROPAGATION
Database Output Chess Name
CROPPING
Universitas Sumatera Utara
3.2.1. Colour Space Conversion Tahap awal dalam pengenalan karakter mandarin pada biji catur cina adalah
pendeteksian warna pada huruf dan cincin yang terdapat pada biji catur cina. Warna yang terdapat pada biji catur cina adalah warna merah atau hitam. Tahap ini bertujuan
untuk memisahkan warna background dan foreground yang tidak diperlukan dari citra yang ditangkap oleh kamera webcam.
3.2.1.1. RGB2Grayscale Dalam menghilangkan warna background dan foreground yang tidak diperlukan pada
citra yang tertangkap kamera webcam, proses perubahan citra RGB menjadi citra keabuaan dilakukan agar pengidentifikasian lebih mudah dan cepat dengan
menggunakan citra yang memiliki rentang nilai 0-255 dengan jumlah rentang 256 nilai, 2
8
8 bit. Adapun contoh perhitungan konversi nilai RGB pada citra berukuran 3x3 pixel yang akan diubah menjadi citra keabuaan ditunjukkan oleh tabel 3.1.
Tabel 3.1 Matriks RGB pada citra 3x3 pixel x,y
1 2
50,60,70 180,0,25
250,0,0 1
100,0,0 40,150,90 0,0,100
2 0,30,0
0,90,0 0,0,80
Proses pengkorvensian matriks1,1 citra RGB menjadi citra Grayscale adalah seperti berikut:
Y = 0.299R + 0.588G + 0.114B Y = 0.29940 + 0.588150 + 0.11490
Y = 11.49 + 89.20 + 10.26 Y = 110.95
Universitas Sumatera Utara
Dengan melakukan perhitungan yang sama secara raster pada semua pixel yang terdapat pada citra RGB, maka didapatkan hasil yang ditunjukkan oleh tabel 3.2.
Tabel 3.2 Matriks Grayscale pada citra 3x3 pixel x,y
1 2
58 57
75 1
30 111
11 2
18 53
9
Proses konversi citra RGB menjadi Grayscale yang tertangkap oleh kamera webcam ditunjukkan oleh gambar 3.2.
a Citra RGB 640x480 px dari webcam
b Citra grayscale 640x480 px hasil konversi
Gambar 3.2 Citra RGB webcam dan Citra grayscale hasil konversi
3.2.2. Image Enhancement Citra yang dihasilkan terkadang masih memiliki noise dan tingkat kecerahan yang
tidak diinginkan. Citra hasil penangkapan oleh webcam yang diubah menjadi grayscale masih memiliki noise yang dapat mengganggu pendeteksian citra. Oleh
karena itu, pada tahap ini citra mengalami perbaikan dengan teknik Gaussian Blur. Penggunaan Gaussian Blur pada citra grayscale akan mempermudah peneliti dalam
mendeteksi bentuk dari citra pada tahap selanjutnya.
Universitas Sumatera Utara
3.2.2.1. Gaussian Blur SmoothGaussian GaussianBlur digunakan di dalam penelitian ini berfungsi untuk menghilangkan noise
pada citra grayscale yang telah dikonversi dari citra berwarna. Tujuan dari penggunaan GaussianBlur adalah untuk mendapatkan bentuk dari cincin dan karakter
cina yang terdapat pada citra grayscale. Persamaan GaussianBlur dapat dilihat pada persamaan 2.2. Persamaan ini dapat digunakan pada salah satu fungsi EmguCV yaitu
fungsi SmoothGaussian. Berikut adalah penjelasan dari penggunaan fungsi SmoothGaussian beserta dengan parameter yang dibutuhkan untuk menjalankan
fungsi ini. SmoothGaussiankernersize
Parameter : - kernelsize = ukuran kernel yang digunakan, dalam penelitian ini adalah 9x9.
3.2.2.2. Dilation Proses Dilation digunakan pada akhir dari proses penangkapan citra. Proses Gaussian
Blur menyebabkan pixel pada contour karakter cina terkikis. Proses Dilation mampu mempertebal contour pada karakter cina yang terdapat pada citra grayscale sehingga
dapat mempermudah proses selanjutnya dengan data citra yang baik. Berikut adalah penjelasan dari penggunaan fungsi Dilation pada salah satu fungsi yang terdapat di
EmguCV. Dilationiterations
Parameter :
- iterations = jumlah iterasi untuk proses dilasimempertebal pada citra grayscale, dalam penelitian ini iterasi dilasi yang digunakan
bervariasi bergantung pada warna dan set sampel biji catur. 3.2.3. Canny Edge Detection
Proses Canny Edge Detection dapat mendeteksi bentuk seperti persegi, lingkaran maupun polygon. Di dalam penelitian ini, pendeteksian lingkaran yang digunakan
oleh penulis. Pada penelitian sebelumnya oleh Canny pada tahun 1986, telah
Universitas Sumatera Utara
dijabarkan edge detection dapat mengurangi jumlah data yang akan diproses dan juga menyediakan elemen struktural yang dapat digunakan untuk proses yang lebih
mendalam. Pendeteksian lingkaran digunakan untuk mendeteksi lingkaran atau cincin yang terdapat pada biji catur cina.
3.2.3.1. Hough Circle Detection Penggunaan Hough Circle Detection bertujuan untuk menemukan cincin yang
terdapat pada permukaan biji catur cina. Beberapa sampel yang ditemukan oleh penulis tidak memiliki kualitas cat yang baik sehingga dengan mendeteksi dan
menghapus lingkaran yang terdapat pada permukaan biji catur cina dapat membantu dalam proses klasifikasi. Dalam mendapatkan hasil dari pendeteksian circles didalam
fungsi HoughCircles yang terdapat di dalam EmguCV, peneliti menggunakan citra grayscale yang telah mengalami proses thresholdbinary untuk mendeteksi lingkaran
yang terdapat pada citra tersebut. Berikut adalah penjelasan dari penggunaan fungsi HoughCircles pada penelitian ini.
HoughCirclescannyThreshold, accumulatorThreshold, dp, minDist, minRadius, maxRadius
Parameter :
- cannyThreshold = threshold untuk bentuk-bentuk canny yang akan
dideteksi, di dalam penelitian ini threshold yang digunakan 100.
- accumulatorThreshold = threshold penentu bentuk lingkaran; semakin
kecil nilai accumulatorThreshold, semakin banyak lingkaran yang salah yang akan
terdeteksi; di dalam penelitian ini threshold yang digunakan 50.
- dp = resolusi accumulator untuk mendeteksi pusat lingkaran, di dalam
penelitian ini digunakan 2.
Universitas Sumatera Utara
- minDist = jarak minimal lingkaran dengan ukuran dari citra, di dalam
penelitian ini minDist adalah satu perempat 14 dari tinggi citra.
- minRadius = jari-jari minimal lingkaran yang akan terdeteksi, di dalam
penelitian ini minRadius adalah 10. -
maxRadius = jari-jari maksimal lingkaran yang akan terdeteksi, di dalam penelitian ini maxRadius adalah 400.
Pendeteksian jari-jari lingkaran menghasilkan tiga buah variabel yaitu posisi x pusat lingkaran, posisi y pusat lingkaran dan besar radius lingkaran. Berikut adalah
pseudocode pendeteksian lingkaran pada biji catur cina.
Langkah 1: Menentukan posisi x, y dan radius lingkaran terdeteksi
Initialisasi Circles, PosisiX, PosisiY, RadiusLingkaran Initialisasi CannyThreshold = 100, AccThresold = 50, dp = 2, RadiusMin =10,
RadiusMax = 400 Circles = CitraGrayscale.HoughCirclesCannyThreshold, AccThreshold, dp, Tinggi
Citra Grayscale4, RadiusMin, RadiusMax
For Each LingkaranDitemukan In Circles { VariabelHitungLingkaran++
If HitungLingkaran = 1{
PosisiX = nilai titik pusat x di dalam LingkaranDitemukan PosisiY = nilai titik pusat y di dalam LingkaranDitemukan
RadiusLingkaran = nilai radius di dalam LingkaranDitemukan
} }
Langkah 2 : Mengisi lingkaran yang terdeteksi dengan warna biru dan hijau sebagai
parameter yang mempermudah dalam penghapusan cincin pada citra biji catur cina. Initialisasi MinRadius, MaxRadius
Initialisasi Xpoint = lebarCitra300, Ypoint = tinggiCitra300 Initialisasi HitungLingkaran
Universitas Sumatera Utara
For Each LingkaranDitemukan In Circles{
HitungLingkaran++
If HitungLingkaran = 1{ Set dimana LingkaranDitemukan dengan radius = MaxRadius menjadi
warna RGB0,255,0 atau warna hijau
} }
For Each LingkaranDitemukan In Circles{
HitungLingkaran++
If HitungLingkaran = 1{ Set dimana LingkaranDitemukan dengan radius = MinRadius menjadi
warna RGB0,0,255 atau warna biru
} }
Hasil dari proses Hough Circles Detection ditunjukkan pada gambar 3.3.
Gambar 3.3 Hasil pendeteksian Hough Circles Detection dan parameter warna pada citra terdeteksi
3.2.4. Cropping Setelah mendapatkan posisi x, y dan radius dari lingkaran yang terdapat pada citra biji
catur cina. Pada tahap ini, citra akan mengalami cropping yang bertujuan untuk mengurangi jumlah data yang dikelolah. Hasil cropping pada citra biji catur akan
selalu menghasilkan ukuran yang sama yaitu 300x300 pixel dengan beracuan pada titik pusat yang merupakan titik x dan y dari lingkaran yang ditemukan pada citra.
Universitas Sumatera Utara
Pada proses ini juga terdapat fungsi drawImage dari library C.Net yang bertujuan untuk mengambarkan citra hasil cropping.
drawImageimage, destRect, srcRect, srcUnit Parameter
: -
image = citra yang akan dicrop -
destRect = bangun persegi panjang untuk menletakkan hasil dari crop -
srcRect = bangun persegi panjang untuk mencari area untuk dicrop -
srcUnit = unit atau satuan hitung grafik, di dalam penelitian ini srcUnit adalah pixel
Kedua parameter srcRect dan destRect membutuhkan sebuah objek bangun persegi panjang. Oleh sebab itu, dibutuhkan pendeklarasian objek baru dan mengisi parameter
yang diperlukan pada konstruktor class Rectangle yang terdapat pada library C.Net. Rectangle x, y, widthImage, heightImage
Parameter :
- x = titik x pada sudut kiri atas pada bangun persegi panjang
- y = titik y pada sudut kiri atas pada bangun persegi panjang
- widthImage = lebar persegi panjang terhitung dari titik x sebagai titik awal
- heightImage = tinggi persegi panjang terhitung dari titik y sebagai titik awal
Berikut penggunaan fungsi drawImage dan objek dari class Rectangle pada pseudocode proses cropping biji catur cina.
Initialisasi Xpusat, Ypusat, lebarCitra = 300, tinggiCitra = 300 Init
ialisasi x’ = Xpusat – lebarCitra2 Initialiasisi y’ = Ypusat – tinggiCitra2
Initialisasi BitmapRGB, BitmapGrayscale dengan width = lebarCitra, height = tinggiCitra
Universitas Sumatera Utara
Intialisasi srcRect, destRect
Using graphic dari BitmapRGB{
srcRect = new Rectangle x = x’, y = y’, widthImage = lebarCitra, heightImage
= tinggiCitra destRect = new Rectanglex = 0, y = 0, widthImage = lebarCitra, heightImage
= tinggiCitra graphic.drawImageCitraRGB, destRect, srcRect, GraphicUnit.pixel
} Using graphic dari BitmapGrayscale{
srcRect dengan x = x’, y = y’, widthImage = lebarCitra, heightImage = tinggiCitra
destRect dengan x = 0, y = 0, widthImage = lebarCitra, heightImage = tinggiCitra
graphic.drawImageCitraGrayscale, destRect, srcRect, GraphicUnit.pixel
}
Hasil dari proses cropping pada citra RGB dan grayscale ditunjukkan oleh gambar 3.4.
a Gambar RGB yang tercrop
b Gambar
grayscale yang
tercrop
Gambar 3.4 Citra RGB dan grayscale yang tercrop dengan dimensi 300x300 pixel
Universitas Sumatera Utara
3.2.5. Erase Circles Proses penghapusan cincin lingkaran yang terdapat pada biji catur cina bertujuan
untuk proses pengklasifikasian yang lebih akurat. Peneliti mempertimbangkan hasil akurasi yang didapatkan pada tahap akhir dikarenakan tidak semua kualitas cat pada
biji catur baik. Oleh sebab itu, proses pengklasifikasian dapat terganggu apabila fitur yang terkandung di dalam citra biji catur masih memiliki cincin. Teknik penghapusan
yang dilakukan oleh penulis adalah dengan membandingkan dua buah citra yaitu citra RGB dan grayscale. Penulis menggubah nilai pixel dari citra grayscale pada posisi x
dan y menjadi putih secara raster apabila pada posisi x dan y dari citra RGB bukan berwarna biru. Berikut pseudocode proses penghapusan cincin lingkaran pada citra
300x300 pixel bijic catur cina. Initialisasi x, y
Initialisasi r,g,b
For y = 0 To tinggiCitra-1{ For x = 0 To lebarCitra-1{
r = nilai Red citra RGB g = nilai Green citra RGB
b = nilai Blue citra RGB
If r = 0 g = 0 b = 255 {
CitraGrayscale pada posisi x,y diubah menjadi intentsitas 255 atau warna putih
} }
}
Hasil dari penghapusan cincin yang terdapat pada biji catur cina melalui teknik penggubahan dan pembandingan nilai pixel kedua citra RGB dan grayscale
ditunjukkan oleh gambar 3.5.
Universitas Sumatera Utara
Gambar 3.5 Cincin pada citra grayscale yang telah terbuang dan hanya karakter cina 3.2.6. Thresholding
Pada citra sebelumnya masih terkandung informasi yang tidak diperlukan. Oleh sebab itu, penulis melakukan proses thresholding untuk mengambil informasi yang
diperlukan yang terdapat pada foreground citra atau karakter cina pada citra. Proses thresholding menggunakan nilai threshold yang pada akhir proses ini akan
menghasilkan file biner dari citra grayscale. Berikut pseudocode proses thresholding yang menghasilkan file biner.
Intialisasi x,y Initialisasi r, g, b, AveRGB
Initialisasi ThresholdValue, BinaryValue[,] Citra RGB = Citra Grayscale dimana citra grayscale diubah menjadi rgb agar bisa
mendapatkan nilai r,g,b dari citra keabuan y = 0
While y = CitraRGB.Tinggi -1 {
x = 0
While x = CitraRGB.Lebar - 1 {
r = CitraRGB.NilaiRed g = CitraRGB.NilaiGreen
b = CitraRGB.NilaiBlue AveRGB = r + g + b 3
IfAveRGB = 0 AveRGB= ThresholdValue {
BinaryValue[x,y] = 1
}Else If AveRGB ThresholdValue AveRGB= 255{
Universitas Sumatera Utara
BinaryValue[x,y] = 0
}
x++
}
y++
} WriteBinaryValue proses akhir adalah melakukan filestream untuk menyimpan data
biner 3.2.7. Image Normalization
Normalisasi citra pada penelitian ini bertujuan untuk mengurangi citra background yang tidak berada pada jangkauan citra foreground secara kordinat maupun ordinat.
Perbedaan hasil akurasi sangat dipengaruhi oleh proses normalisasi dimana proses normalisasi dapat membantu penulis untuk mendapatkan nilai fitur yang dapat
diklasifikasi dengan baik. Citra yang telah mengalami binerisasi akan digunakan oleh peneliti sebagai matriks pembanding untuk menormalkan citra yang masih berukuran
300x300 pixel yang masih belum dinormalisasikan. Proses ini akan menghasilkan ukuran yang bervariasi tergantung dari lebar dan tinggi dari setiap karakter cina pada
citra. Berikut pseudocode untuk menormalisasikan citra.
Langkah 1 : Pengecekan empat 4 sisi dari citra secara raster yaitu : sisi kiri, sisi
kanan, sisi atas, sisi bawah. Initilisasi FirstFoundBool = false
Intialisasi lebarCitra, tinggiCitra Intialisasi BinaryData[,] = Data Biner yang ditarik kembali dengan filestream
Fungsi Left2Right berfungsi untuk mengecek dari sisi kiri ke kanan dan untuk mendapatkan nilai x paling kiri untuk normalisasi.
Function Left2Right{
Initialisasi a,b,x
For b = 0 To lebarCitra-1{ For a = 0 To tinggiCitra
– 1{
If BinaryData[a,b] = 1 FirstFoundBool = false{
Universitas Sumatera Utara
x = b FirstFoundBool = true
} }
}
FirstFoundBool = false
Return x }
Fungsi Right2Left berfungsi untuk mengecek dari sisi kanan ke kiri dan mendapatkan nilai x paling kanan untuk normalisasi
Function Right2Left{
Initialisasi a,b,x
For b = lebarCitra-1 To 0{ For a = tinggiCitra
– 1 To 0{ If BinaryData[a,b] = 1 FirstFoundBool = false{
x = b FirstFoundBool = true
} }
}
FirstFoundBool = false
Return x }
Fungsi Up2Down berfungsi untuk mengecek dari sisi atas ke bawah dan mendapatkan nilai y paling atas untuk normalisasi
Function Up2Down{
Initialisasi a,b,x
For a = 0 To tinggiCitra
– 1{
Universitas Sumatera Utara
For b = 0 To lebarCitra-1{ If BinaryData[a,b] = 1 FirstFoundBool = false{
y = a FirstFoundBool = true
} }
}
FirstFoundBool = false
Return y }
Fungsi Down2Up berfungsi untuk mengecek sisi bawah ke atas dan mendapatkan y paling bawah untuk normalisasi
Function Down2Up{
Initialisasi a,b,x
For a = tinggiCitra – 1 To 0{
For b = lebarCitra-1 To 0{ If BinaryData[a,b] = 1 FirstFoundBool = false{
y = a FirstFoundBool = true
} }
}
FirstFoundBool = false
Return y }
Langkah 2 : Proses normalisasi membutuhkan empat titik yaitu x paling kiri, x paling
kanan, y paling atas dan y paling bawah untuk proses cropping selanjutnya. Berikut pseudocode proses cropping pada tahap normalisasi citra.
Initialisasi PosX
Universitas Sumatera Utara
Intialisasi PosY Initialisasi WidthCrop
Initialisasi HeightCrop
Function Cropping{
PosX = x paling kiri PosY = y paling atas
WidthCrop = x paling kanan – x paling kiri + 1
HeightCrop = y paling bawah – y paling atas + 1
Initialisasi BitmapNormalisasi dengan lebar = WidthCrop dan tinggi = HeightCrop
Using Grafikdari BitmapNormalisasi {
srcRect = new RectanglePosX, PosY, lebar WidthCrop, tinggi HeightCrop
destRect = new Rectangle 0, 0, lebar WidthCrop, tinggi HeightCrop graphic.DrawImageCitra Grayscale, destRect, srcRect, UnitGrafik
Pixel
} }
Langkah 3 : Pertama sekali memanggil ke empat fungsi pengecekan sisi dan pada akhirnya memanggil fungsi Cropping.
Function Normalization{
Panggil Function Left2Right Panggil Function Right2Left
Panggil Function Up2Down Panggil Function Down2Up
Panggil Function Cropping
}
Hasil dari proses normalisasi ditunjukkan oleh gambar 3.6 dengan ukuran citra yang bervariasi sesuai dengan rentang foreground secara horizontal ataupun vertikal.
Universitas Sumatera Utara
Gambar 3.6 Citra hasil normalisasi dengan ukuran yang bervariasi
3.2.8. Resizing Image Setelah citra mengalami normalisasi dengan ukuran yang bervariasi, penulis
melakukan proses resize citra supaya proses selanjutnya dapat berjalan lebih stabil dan efisien. Citra hasil normalisasi yang memiliki ukuran yang bervariasi akan diubah
menjadi 24x24 pixel. Proses pengecilan tersebut menyebabkan bentuk maupun intensitas pixel menjadi berkurang. Oleh sebab itu, penulis menggunakan fungsi
smoothing dan interpolation dalam library C.Net. Peniliti juga memperbaiki kualitas citra pada proses selanjutnya. Berikut penggunaan fungsi smoothing dan interpolation
dalam pseudocode resizing image. Initialisasi BitmapAsli
Initialiasasi BitmapCitraResize = Bitmap dengan ukuran 24x24 Intialisasi Graphic = Graphic Dari BitmapCitraResize
Set Graphic.SmoothingMode menjadi HighQuality Set Graphic.InterpolationMode menjadi HighQualityBicubic
Set Graphic.PixelOffSetMode menjadi HighQuality
Graphic.DrawImageBitmapAsli, 0, 0, lebarBitmapCitraResize + 1, tinggiBitmapCitraResize + 1
CitraResize = AutoSize Citra Resize = BitmapCitraResize
Hasil proses resizing citra dengan ukuran 24x24 pixel ditunjukkan oleh gambar 3.7 di bawah ini.
Gambar 3.7 Citra resize berukuran 24x24 pixel
Universitas Sumatera Utara
3.2.9. Min-Max Linear Contrast Stretching Pada tahap ini, citra yang telah mengalami proses resize masih memiliki pixel-pixel
dengan intensitas yang tidak begitu kontras. Oleh sebab itu, peneliti menggunakan MinMax Linear Contrast Stretching dengan menggunakan persamaan 2.3. Di dalam
melaksanakan proses ini, pixel yang berdominan atau hampir berwarna hitam akan memiliki intensitas warna keabuaan yang tetap yaitu 0 dan pixel yang berdominan
atau hampir berwarna putih akan memiliki intensitas warna keabuaan yang tetap yaitu 255. Tujuan dari proses ini adalah untuk mendapatkan hasil yang baik pada proses
selanjutnya yaitu proses thinning. Berikut pseudocode proses MinMax Linear Contrast Stretching pada citra berukuran 24x24 pixel hasil resize pada proses sebelumnya.
Intitialisasi x, y Initialisasi NilaiAbu
Initialisasi NilaiThreshold = 250
For y = 0 To TinggiCitra
– 1{
For x = 0 To LebarCitra
– 1{ NilaiAbu = Nilai grayscale pada citra dengan matriksx,y
If NilaiAbu = NilaiThreshold{
CitraKontras pada matriksx,y = 255
}Else IfNilaiAbu NilaiThreshold{
CitraKontras pada matriksx,y = 0
} }
}
Hasil dari MinMax Linear Contrast Stretching ditunjukkkan pada gambar 3.8 di bawah ini memiliki perbedaan kontras dengan gambar 3.7.
Gambar 3.8 Citra 24x24 pixel hasil MinMax Linear Contrast Stretching
Universitas Sumatera Utara
3.2.10. Thinning Pada tahap ini, citra yang telah mengalami perubahan kontras dengan pixel yang
berketebalan lebih dari satu pixel tidak dapat di proses oleh ekstraksi fitur yang memerlukan citra dengan ketebalan satu pixel. Oleh sebab itu, penulis menggunakan
algoritma Thinning. Algoritma Thinning yang digunakan dalam penelitian ini adalah algoritma Thinning Zhang Suen. Alasan penulis menggunakan algoritma Thinning
Zhang Suen adalah hasil dari Thinning yang bersifat baik dan pola yang tidak berubah secara signifikan dari citra awal. Berikut pseudocode algoritma Thinning Zhang Suen
yang digunakan di dalam penelitian ini.
Langkah 1 : Menggubah citra asli menjadi matriks boolean yang menggantikan peran
matriks biner. Pengubahan ini bertujuan untuk mempermudah proses perhitungan nantinya.
Function ImageConvertToBoolean{ For y = 0 To TinggiCitra
– 1{
For x = 0 To LebarCitra
– 1{ MatriksBool[x,y] adalah Jika Citra[x,y] = 0 maka true : Jika
bukan maka false
} }
} Langkah 2 : Mengcopy MatriksBool ke dalam MatriksTemp dimana kedua matriks
memiliki tipe data yang sama, yaitu Boolean.
Function CopyArray{ For y = 0 To TinggiCitra
– 1{
For x = 0 To LebarCitra
– 1{ MatriksTemp
pada elemenx,y
= MatriksBool
pada elemenx,y
} }
}
Universitas Sumatera Utara
Langkah 3 : Melakukan proses utama yang berulang selama masih dapat ditemukan
matriks yang masih bersebelahan atau memiliki neighbour yang lebih dari 1 pixel. Intialisasi Hitung = 0
Lakukan
Hitung = nilai dari fungsi Langkah1, Pembanding = Matriks Temp, MatriksBool mengalami modifikasi
MatriksTemp = CopyArray dari MatriksBool yang telah termodif di Langkah1
Hitung = nilai dari fungsi Langkah2, Pembanding = MatriksTemp dari Langkah1, MatriksBool mengalami modifikasi
MatriksTemp = CopyArray dari MatriksBool yang telah termodif di Langkah2
Selama Masih ditemukan neighbour lebih dari 1 pixel atau Hitung masih lebih besar dari 1
Langkah 4 : Menggunakan fungsi Langkah untuk menggembalikan nilai hitung dari
pixel yang masih bertetanggaan atau berpixel lebih dari 1 dari Matriks.
Function LangkahAngka, MatriksTemp, MatriksBool{ For y = 0 To TinggiMatriksTemp
– 1{
For x = 0 To LebarMatriksTemp
– 1{
If Angka = 1 maka Genap = false Else ifAngka = 2 maka Genap = true
If Nilai Balik dari Function AlgoritmaThinning adalah true dengan paramter x,y,MatriksTemp dan nilai bool Genap{
Maka di cek
If Nilai pada MatriksBool pada elemenx,y adalah true maka
Hitung++. Dimana masih terdapat pixel tetangga 1.
Nilai MatriksBoolx,y diSet menjadi false. }
} }
Universitas Sumatera Utara
} Langkah 5 : Memanggil Algoritma Thinning untuk mengecek tetangga pada pixel di
elemen x dan y dari perulangan pada fungsi Langkah dengan sembilan pengecekan yaitu, sudut kiri atas, sudut kiri bawah, sudut kanan atas, sudutu kanan bawah, sisi
kiri, sisi kanan, sisi atas, sisi bawah, seluruh pixel yang bukan sudut maupun sisi dari matriks. Adapun urutan pixel di dalam matriks yang akan dicek ditunjukkan oleh tabel
3.3 untuk memperjelas pseudocode algoritma Thinning. X9 X2 X3
X8 O
X4 X7 X6 X5
Tabel 3.3 Urutan elemen pixel tetangga pada matriks boolean
Function AlgoritmaThinning{
Intialiasai X2 sampai X9 sebagai boolean X2 = MatriksBool posisix, y - 1
X3 = MatriksBool posisix+1, y- 1 X4 = MatriksBool posisix+1, y
X5 = MatriksBool posisix+1, y+1 X6 = MatriksBool posisix, y+1
X7 = MatriksBool posisix-1, y+1 X8 = MatriksBool posisix-1, y
X9 = MatriksBool posisix-1, y-1 CekNol = Nilai return dengan mengecek elemen MatriksBool pada elemen x
dan y dengan fungsi CekTetanggaBukanNol dengan parameter = x, y dan MatriksBool sendiri
If CekNol diantara 2 dan 6{ IfNilai Return Fungsi TransisiNolkeSatudi posisi x, y, pada
MatriksBool adalah 1{ Apabila Genap = true maka
If X2 X4 X8{
Universitas Sumatera Utara
If X2 X6 X8{ Nilai Balik fungsi Algoritmathinning =
true
} }
Apabila Genap = false maka
If X2 X4 X6{ If X4 X6 X8{
Nilai Balik fungsi Algoritmathinning = true
} }
} }
Apabila CekNilaiNol bukan di antara 2 sampai 6, maka Nilai Balik fungsi Algoritmathinning adalah false
} Langkah 6: Mengecek apakah masih terdapat tetangga yang bernilai bukan nol
dengan mengecek nilai true pada tetangga.
Function CekNilaiBukanNol{
If Sudut kanan bawah dari MatriksBool true Hitung++ IfSudut kanan atas dari MatriksBool true Hitung++
IfSudut kiri atas dari MatriksBool true Hitung++ IfSudut kiri bawah dari MatriksBool true Hitung++
IfSisi kiri dari MatriksBool true Hitung++ IfSisi kanan dari MatriksBool true Hitung++
IfSisi atas dari MatriksBool true Hitung++ IfSisi bawah dari MatriksBool true Hitung++
IfPosisi elemen matriks bukan pada sudut atau sisi dari MatriksBool Hitung++
Universitas Sumatera Utara
Nilai Balik Hitung }
Langkah 7 : Menghitung Angka transisi dari nol menuju satu pada MatriksBool.
Apabila matriks tetangga yang mengelilingi elemen matriks sekarang masih memiliki transisi atau perbedaan true-false atau false-true dan apabila true-true maka akan
mengembalikan bilangan 1. Apabila transisi menciptakan bilangan 1 lebih dari satu maka nilai return berjumlah lebih besar dari 1. Fungsi akan mengembalikan nilai balik
1 apabila pada matriksx,y tidak memiliki tetangga bersebelahan lebih dari satu buah.
Function TransisiNolKeSatu{
X2 = MatriksBool posisix, y - 1 X3 = MatriksBool posisix+1, y- 1
X4 = MatriksBool posisix+1, y X5 = MatriksBool posisix+1, y+1
X6 = MatriksBool posisix, y+1 X7 = MatriksBool posisix-1, y+1
X8 = MatriksBool posisix-1, y X9 = MatriksBool posisix-1, y-1
Intialisasi HasilTransisiNolKeSatu HasilTransisNolKeSatu = Konversi Bool ke Bilangan Bulat
X2 X3 + X3 X4 + X4 X5 + ... + X9 X2
Nilai Balik HasilTransisiNolKeSatu }
Langkah 8 : Setelah melakukan langkah 1-7 maka proses selanjutnya adalah
menggubah MatriksBool menjadi pixel kembali dan menjadi citra thinning. Citra thinning yang dihasilkan memiliki ketebalan satu pixel pada citra foreground.
Function BooleanConvertToImage{ For y = 0 To TinggiCitra
– 1{
For x = 0 To LebarCitra
– 1{
Universitas Sumatera Utara
CitraThin[x,y] adalah Jika MatriksBool [x,y]=true maka nilai pixel : Jika bukan maka 255
} }
}
Hasil citra thinning ditunjukkan pada gambar 3.9 di bawah ini.
Gambar 3.9 Citra thinning berukuran 24x24 pixel
3.2.11. Binerization Proses selanjutnya adalah proses binerisasi citra thinning menjadi nilai biner yang
memiliki ukuran matriks sesuai dengan ukuran dari citra thinning yaitu 24x24 pixel. Proses binerisasi ini berfungsi sebagai input ke dalam ekstraksi fitur yang akan
digunakan dalam penelitian ini. Berikut pseudocode proses bineriasasi citra thinning menjadi matriks biner di bawah ini.
y = 0
While y = Citra Thinning.Tinggi -1 {
x = 0
While x = Citra Thinning.Lebar - 1 {
r = Citra Thinning.NilaiRed g = Citra Thinning.NilaiGreen
b = Citra Thinning.NilaiBlue AveRGB = r + g + b 3
IfAveRGB = 0 AveRGB= ThresholdValue {
BinaryValue[x,y] = 1
}Else If AveRGB ThresholdValue AveRGB= 255{
Universitas Sumatera Utara
BinaryValue[x,y] = 0
}
x++
}
y++
} WriteBinaryValue proses akhir adalah melakukan filestream untuk menyimpan data
biner Hasil dari proses binerisasi dari citra thinning pada gambar 3.8 ditunjukkan oleh
gambar 3.10.
Gambar 3.10 Gambar hasil konversi citra thinning menjadi file matriks biner
3.2.12. Feature Extraction Pada tahap ekstraksi fitur, citra yang diproses dari awal akan didapatkan ciri khusus
maupun fitur yang terkandung di dalam sebuah citra. Nilai fitur-fitur ini yang kemudian akan diklasifikasi oleh jaringan saraf tiruan Backrpropagation. Ekstraksi
fitur yang digunakan oleh penulis adalah Direction Feature Extraction. Alasan penggunaan Direction Feature Extraction adalah karakter cina atau Mandarin yang
memiliki banyak jumlah goresan di dalam sebuah karakter atau kata. Goresan-goresan pada karakter mandarin memiliki arah-arah yang hampir sama dengan arah-arah yang
digunakan dalam Direction Feature Extraction. Oleh sebab itu, penulis menggunakan
Universitas Sumatera Utara
Direction Feature Extraction untuk mengklasifikasi karakter mandarin yang terdapat pada citra biji catur cina.
3.2.12.1. Direction Feature Extraction Direction Feature Extraction bekerja dengan mengubah matriks biner dari sebuah
citra menjadi nilai arah dan menghasilkan nilai fitur arah pada akhir proses. Direction Feature Extraction bekerja secara baik apabila citra dari matriks biner yang
dikonversikan hanya memiliki ketebalan foreground sebesar satu pixel. Hal ini dikarenakan adanya proses transisi yang digunakan oleh ekstraksi fitur ini sehingga
dengan ketebalan satu pixel maka transisi yang diperoleh adalah benar. Apabila proses tidak mengubah citra menjadi matriks biner dengan ketebalan satu pixel maka nilai
arah akan menjadi ambigu. Oleh sebab itu, ekstraksi fitur berpotensi mencetak nilai arah yang salah. Berikut langkah-langkah beserta pseudocode dari Direction Feature
Extraction yang digunakan pada penelitian ini.
Langkah 1 : Merubah nilai pixel pada posisi x,y secara raster sesuai dengan tabel
2.2. Initialisasi x,y
Function Direction{ For y = 0 To TinggiMatriks
– 1{
For x = 0 To LebarMatriks
– 1{
Ifx dan y pada Sudut Kiri Atas{
Cek Arah pada P5, P6, P4
}Else Ifx dan y pada Sudut Kiri Bawah{
Cek Arah pada P2, P3, P4
}Else Ifx dan y pada Sudut Kanan Atas{
Cek Arah pada P6, P7, P8
}Else Ifx dan y pada Sudut Kanan Bawah{
Cek Arah pada P1, P2, P8
}Else Ifx dan y pada Sisi Atas dan Bukan Sudut{
Cek Arah pada P5, P6, P7, P4, P8
}Else Ifx dan y pada Sisi Bawah dan Bukan Sudut{
Universitas Sumatera Utara
Cek Arah pada P1, P2, P3, P4, P8
}Else Ifx dan y pada Sisi Kiri dan Bukan Sudut{
Cek Arah pada P5, P2, P6, P3, P4
}Else Ifx dan y pada Sisi Kanan dan Bukan Sudut{
Cek Arah pada P1, P2, P6, P7, P8
}Else Ifx dan y tidak berada pada Sisi atau Sudut{
Cek Arah pada P1, P5, P2, P6, P3, P7, P4, P8 }
} }
}
Hasil dari fungsi Direction ditunjukkan pada gambar 3.11 dibawah ini.
Gambar 3.11 Matriks Direction 24x24 yang mengandung nilai arah 2-5 Langkah 2 : Melakukan pencarian nilai arah dengan transisi sebanyak 4 kali secara
raster dari empat arah yaitu: sisi kiri ke sisi kanan, sisi kanan ke sisi kiri, sisi atas ke sisi bawah, sisi bawah ke sisi atas. Ukuran dari setiap matriks arah adalah Jumlah
transisi x Lebar Matriks atau Tinggi Matriks yaitu 4 x 24.
Function Left2Right{ For y = 0 To TinggiMatriks
– 1{
For x = 0 To LebarMatriks
– 1{
Universitas Sumatera Utara
IfMatriksArah bukan 1 atau 0{
Selama i tidak lebih besar dari Transisi maka Direction Transition bernilai MatriksArah dikali dengan 10
-1
. i++
} }
} }
Function Right2Left{ For y = TinggiMatriks
– 1 To 0{ For x = LebarMatriks
– 1 To 0{ IfMatriksArah bukan 1 atau 0{
Jika i tidak lebih besar dari Transisi maka Direction Transition bernilai MatriksArah dikali dengan
10
-1
. i++
} }
} }
Function Up2Down{ For x = 0 To LebarMatriks
– 1{
For y = 0 To TinggiMatriks
– 1{
IfMatriksArah bukan 1 atau 0{
Selama i tidak lebih besar dari Transisi maka Direction Transition bernilai MatriksArah dikali dengan 10
-1
. i++
} }
Universitas Sumatera Utara
} }
Function Down2Up{ For x = LebarMatriks
– 1 To 0{ For y = TinggiMatriks
– 1 To 0{ IfMatriksArah bukan 1 atau 0{
Jika i tidak lebih besar dari Transisi maka Direction Transition bernilai MatriksArah dikali dengan
10
-1
. i++
} }
} }
Call Function Direction, Left2Rigth, Rigth2Left, Up2Down, Down2Up
Hasil dari fungsi Direction yang mengalami transisi secara raster dari keempat sisi yaitu sisi kiri ke sisi kanan, sisi kanan ke sisi kiri, sisi atas ke sisi bawah, sisi bawah ke
sisi atas dapat dilihat pada gambar 3.12 di bawah ini.
aTransisi kiri ke kanan bTransisi kanan ke kiri
Universitas Sumatera Utara
cTransisi atas ke bawah dTransisi bawah ke atas
Gambar 3.12 Transisi nilai keempat arah berukuran 4x24 pada masing-masing arah
Langkah 3 : Melakukan normalisasi nilai transisi yang berukuran 4x24 sebesar nilai
transisi x Lebar atau Tinggi Matriks nilai transisi. Oleh sebab itu, ukuran matriks normalisasi adalah 4x6. Berikut pseudocode untuk mendapatkan matriks normalisasi
dari matriks direction.
Function N_Left2Right{
Initialisasi x, y, sum, a, b
Whiley TinggiMatriks{ For x = 0 To JumlahTransisi-1
b = y + JumlahTransisi
For a = y To b-1
sum += Matriksx,y }
} y++
}
Universitas Sumatera Utara
} Function N_Right2Left{
Initialisasi x, y, sum, a, b
Whiley TinggiMatriks{ For x = 0 To JumlahTransisi-1{
b = y + JumlahTransisi
For a = y To b-1{
sum += Matriksx,y }
} y++
} }
Function N_Up2Down{
Initialisasi x, y, sum, a, b
Whilex LebarMatriks{ For y = 0 To JumlahTransisi-1{
b = x + JumlahTransisi
For a = x To b-1{
sum += Matriksx,y }
} x++
} }
Function N_Down2Up{
Initialisasi x, y, sum, a, b
Whilex LebarMatriks{ For y = 0 To JumlahTransisi-1{
Universitas Sumatera Utara
b = x + JumlahTransisi
For a = x To b-1{
sum += Matriksx,y }
} x++
} }
Hasil dari normalisasi matriks dengan ukuran 4x6 ditunjukkan pada gambar 3.13 di bawah ini.
aNormalisasi transisi kiri ke kanan bNormalisasi transisi kanan ke kiri
cNormalisasi transisi atas ke bawah d Normalisasi transisi bawah ke atas
Gambar 3.13 Matriks normalisasi transisi keempat sisi berukuran 4x6 Langkah 4 : Langkah terakhir yaitu menggambungkan keempat matriks normalisasi
menjadi sebuah matriks berukuran empat kali dari matriks normalisasi yaitu 4x24. Berikut pseudocode pengabungan keempat matriks menjadi matriks nilai keluaran dari
Direction Feature yang selanjutnya menjadi input di dalam jaringan saraf tiruan Backpropagation.
Universitas Sumatera Utara
Initialisasi x, y, z
For y = 0 To TinggiMatriksAwal4
– 1{ z = 0, Transisi = 4
For x = 0 To Transisi4 -1{
Apabila z = Transisi -1, maka z = 0 Apabila x = 0 dan x Transisi, maka ElemenMatriksDF =
ElemenMatriksN Apabila x =Transisi dan xTransisi2, maka ElemenMatriksDF =
ElemenMatriksN Apabila x =Transisi2 dan xTransisi3, maka ElemenMatriksDF =
ElemenMatriksN Apabila x =Transisi3 dan xTransisi4, maka ElemenMatriksDF =
ElemenMatriksN
} }
Hasil akhir dari proses ekstraksi fitur dapat dilihat pada gambar 3.14 di bawah ini.
Gambar 3.14 Matriks Direction Feature Extraction berdimensi 4x24
3.2.13. Backpropagation Proses akhir dari penelitian ini adalah mengklasifikasi citra biji catur cina setelah
melalui proses awal hingga proses fitur ekstraksi. Nilai input dari metode Backpropagation di dalam penelitian ini adalah nilai output dari Direction Feature
Extraction yang berdimensi 4x24. Metode Backpropagation bersifat feedforward sehingga proses pelatihan mesin dapat dilakukan pada proses pengklasifikasian citra
biji catur cina. Pada penelitian ini, lapisan-lapisan dari Backpropagation yang digunakan
yaitu Input, Hidden dan Output Layer. Jumlah dari Input Layer yang digunakan adalah
Universitas Sumatera Utara
hasil perkalian dari dimensi output fitur ekstraksi yang digunakan, yaitu 96 nodes. Hidden Layer memiliki jumlah nodes sebesar 70 dari jumlah Input nodes dengan
Hidden nodes. Output Layer yang memiliki nodes yang berjumlah sesuai dengan Target yang akan diklasifikasi yaitu masing-masing delapan buah jenis tulisan catur
cina berdasarkan warna merah atau warna hitam dan dikalikan dengan jumlah transisi sudut.
Besar jumlah epoch atau iterasi pelatihan juga mempengaruhi hasil klasifikasi. Oleh sebab itu, penulis melakukan pelatihan sebanyak 10.000 epoch.
Untuk mengubungkan antar node-node pada setiap lapisan maka digunakan weightbobot. Weight juga dapat ditingkatkan nilai pembelajarannya. Di dalam
penelitian ini, weight yang digunakan ada dua, yaitu, weight penghubung Input- Hidden Layer dan Hidden-Output Layer. Adapun dimensi dari weight Input-Hidden
Layer adalah jumlah node Input Layer ditambah satu node bias kemudian dikalikan dengan jumlah node Hidden Layer. Sedangkan, dimensi dari weight penghubung
Hidden-Output Layer adalah jumlah node Hidden Layer ditambah satu node bias kemudian dikalikan dengan jumlah node Output Layer. Semakin besar epoch yang
dilakukan, semakin teliti nilai weight yang digunakan dalam mengklasifikasi. Berikut langkah-langkah penerapan Algoritma Backpropagation untuk mengklasifikasi pola
karakter cina pada biji catur cina beserta pseudocode.
Langkah 1 : Melakukan initialisasi terhadap variabel-variabel yang digunakan beserta
penjelasan. Intialisasi InputNeuron, HiddenNeuron, OutputNeuron.
Pada penelitian ini digunakan Input = 96, Hidden = 70 dan Output = 8.
Initialisasi ArrayInput, ArrayHidden, ArrayOutput, ArrayAnswer
Pada penelitian ini digunakan ukuran ArrayInput, ArrayHidden dan ArrayOutput sama seperti jumlah neuron pada Input, Hidden dan Output. ArrayAnswer adalah
array yang menyimpan nilai untuk membandingkan output pada training.
Intialisasi WeightInHid, WeightHidOut
Pada penelitian ini digunakan nilai bias = 1 dan ukuran matriks WeightInHid adalah ukuran ArrayInput + bias ukuran ArrayHidden. Sedangkan, ukuran matriks
WeightHidOut adalah ukuran ArrayHidden +bias ukuran ArrayOutput.
Initialisasi ErrorOutput, ErrorHidden
Universitas Sumatera Utara
Pada penelitian ini digunakan ukuran dari array ErrorOutput sebesar ukuran ArrayOutput dan ukuran dari array ErrorHidden sebesar ukuran ArrayHidden.
Initialisasi JumlahSampelTraining, JumlahTargetTesting Pada penelitian ini digunakan 32 sampel training dan 8 buah sampel testing hanya
untuk proses training saja. Initialisasi LearningRate, EpochNumber
Pada penelitian ini digunakan LearningRate adalah 0.2 dan EpochNumber adalah 10.000 kali.
Initialisasi OutputTarget Hasil dari training akan diurut sesuai dengan urutan klasifikasi masing-masing.
Misal, pada pseudocode akan diurutkan Raja sebagai 0, Penasehat Raja Huruf Baru = 1, Penasehat Raja Huruf Lama = 2, Gajah = 3, Kereta Kuda = 4, Kuda = 5, Meriam =
6, Pasukan = 7.
Langkah 2 : Melakukan pendeklrasian Matriks Input Training dan Testing beserta
OutputTarget yang diperlukan
Function Deklarasi{
MatriksInputTraining = MatriksDirectionFeatureberjumlah 32 buah MatriksInputTesting = MatriksDirectionFeatureberjumlah 8 buah
For i = 0 To JumlahSampelTraining JumlahTargetTesting
– 1{ k= 0
For j = i 8 To i+1JumlahTargetTesting
– 1{ OutputTargetj = k
k++
} }
}
Langkah 3 : Memberikan nilai awal berupa nilai acak atau random antara 0.5 atau - 0.5. Pemberian nilai acak ini ditujukan kepada weight Input-Hidden Layer dan weight
Hidden-Output Layer.
Function WeightAcak{
Universitas Sumatera Utara
For i = 0 To InputNeuron{ For j = 0 To HiddenNeuron
– 1{ WeightInHid posisi i,j = GetRandom 0.5 atau -0.5
} }
For i = 0 To HiddenNeuron{ For j = 0 To OutputNeuron
– 1{ WeightHidOut posisi i,j = GetRandom 0.5 atau -0.5
} }
}
Langkah 4 : Menjalankan fungsi utama dimana fungsi ini akan menjalankan proses pengacakan nilai weight, proses feedforward, proses backpropagate, proses training
dan proses testing yang terdapat pada langkah-langkah berikutnya.
Function MainNetworkActivity{ Lakukan Deklarasi
Lakukan WeightAcak For i = 0 To EpochNumber
– 1{ J = 0
J=J==JumlahSampelTrainig? 0 : J dan J++ For a = 0 To OutputNeuron
– 1 maka ArrayTarget indeks a = OutputTarget posisi J, a
For b = 0 To InputNeuron – 1 maka ArrayInput indeks b =
MatriksInputTraining posisi J, b
Lakukan FeedForward Lakukan Backpropagate
} Lakukan Training
Lakukan CekTraining dan Lakukan CekTesting }
Universitas Sumatera Utara
Langkah 5 : Melakukan proses feedforward yaitu proses yang dilakukan untuk penghitungan jaringan saraf tiruan menuju arah ke depan dari Input ke Hidden Layer
dan dari Hidden ke Output Layer.
Function FeedForward{ For a = 0 To HiddenNeuron-1{
Set JumlahweightInputHidden = 0 For b = 0 To InputNeuron-1{
Sum ArrayInput pada indeksb WeightInHid pada posisi b,a InTo JumlahweightInputHidden
} Sum WeightInHid pada posisi InputNeuron ,a InTo
JumlahweightInputHidden
Set ArrayHidden indeks a = 1 1 + ExponenJumlahweightInputHidden -1
} For a = 0 To OutputNeuron-1{
Set JumlahweightHiddenOutput = 0 For b = 0 To HiddenNeuron-1{
Sum ArrayHidden pada indeksb WeightHidOut pada posisi b,a InTo JumlahweightHiddenOutput
} Sum WeightHidOut pada posisi HiddenNeuron ,a
InToJumlahweightHiddenOutput Set ArrayAnswer indeks a = 1 1 +
ExponenJumlahweightHiddenOutput-1
} }
Langkah 6 : Melakukan proses backpropagate. Proses backpropagate adalah proses
untuk mengecek kesalahan yang dihasilkan pada lapisan Hidden dan layer Output. Setelah mendapatkan error atau kesalahan, setiap bobot pada lapisan Hidden dan
Output akan diupdate.
Universitas Sumatera Utara
Function Backpropagate{
Hitung Error di Layer Output
For i = 0 To OutputNeuron
– 1 maka ErrorOutputi = ArrayTarget – ArrayAnsweri ArrayAnsweri
– ArrayAnsweri
2
Hitung Error di Layer Hidden
For i = 0 To HiddenNeuron
– 1
ErrorHiddeni Set 0 For j = 0 To OutputNeuron
– 1{
Sum ErrorOutputj WeightHidOuti,j ToErrorHiddeni }
MultipleArrayHiddeni
–ArrayHiddeni
2
To ErrorHiddeni }
Update Weight Hidden Output
For i = 0 To OutputNeuron
– 1{
For j = 0 To HiddenNeuron
– 1{
SumLearningRateErrorOutputiArrayHiddenjToWeight HidOut posisi j,i
} SumLearningRateErrorOutputiToWeightHidOut posisi
HiddenNeuron,i
}
Update Weight Input Hidden
For i = 0 To HiddenNeuron
– 1{
For j = 0 To InputNeuron
– 1{
SumLearningRateErrorHiddeniArrayInputjToWeightIn Hid posisi j,i
} SumLearningRateErrorHiddeniToWeightInHid posisi
InputNeuron,i
}
Universitas Sumatera Utara
}
Langkah 7 : Melakukan proses training. Dimana terdapat JumlahSampelTraining= 32 sampel yang akan ditraining.
Function Training{ For a = 0 To JumlahSampelTraining-1{
For b = 0 To InputNeuron
– 1 maka ArrayInputb = MatriksInputTrainingb,a
For b = 0 To OutputNeuron -1 maka ArrayTargetb = OutputTargeta,b
Panggil FeedForward }
}
Langkah 8 : Melakukan pengecekan hasil training terhadap data training
Function CekTraining{ For i = 0 To JumlahSampelTraining
– 1{
For j = 0 To InputNeuron-1{
ArrayInput pada indeks j = MatriksInputTraining posisi j,i
} Panggil FeedForward
Print “Output” adalalah Panggil CekMaksimumArrayAnswer
} }
Langkah 9 : Melakukan pengecekan hasil testing terhadap data asing
Function CekTesting{ For i = 0 To JumlahTargetTesting
– 1{
For j = 0 To InputNeuron-1{
ArrayInput pada indeks j = MatriksInputTesting posisi j,i
} Panggil FeedForward
Universitas Sumatera Utara
Print “Output” adalalah Panggil CekMaksimumArrayAnswer
} }
Langkah 10 : Melakukan pengembalian nilai maksimum. Function Maximum ArrayMax{
P = 0 Maksimum = ArrayMax indeks P
For i = 0 To OutputNeuron
– 1{ Apabila ArrayMax pada indeks i Maksimum pada indeks j maka
Maksimum =ArrayMax indeks i
Set P To i }
} 3.3. Perancangan Sistem
Pada tahap ini, perancaangan sistem akan dilakukan tahap perancangan interfaceantarmuka dari sistem pengenalan pola pada karakter cina biji catur cina.
3.3.1. Perancangan Antarmuka Dalam membangun aplikasi pada penelitian ini, diperlukan adanya perancangan
antarmuka interface, yaitu sebuah gambaram umum yang merepresentasikan setiap tampilan pada aplikasi yang dibangun. Rancangan antarmuka yang dilakukan di dala
penelitian ini diharapkan dapat memberikan kemudahan bagi pengguna dalam membuat aplikasi ini. Adapaun 3 halaman yang akan dirancang pada aplikasi ini, yaitu
halaman menu utama, halaman image preprocessing, halaman implementasi. 3.3.1.1. Rancangan Tampilan Halaman Menu Utama
Halaman menu utama merupakan halaman yang muncul pertama kali saat sistem dijalankan. Halaman ini berfungsi untuk sebagai halaman default. Gambar tampilan
halaman menu utama dapat dilihat pada gambar 3.15.
Universitas Sumatera Utara
Gambar 3.15 Tampilan Halaman Menu Utama
Keterangan : a.
Menu File yang terdapat pada deretan tampilan halaman menu utama. b.
Menu Image processing yang terdapat pada deretan tampilan menu utama. c.
Menu About yang terdapat pada deretan tampilan menu utama. 3.3.1.2 Rancangan Tampilan Halaman Image Preprocessing
Pada halaman image preprocessing merupakan halaman yang memiliki frame yang akan mengambil citra biji catur yang akan diproses untuk mendapatkan nilai fitur dari
citra tersebut. Gambaran rancangan tampilan halaman image preprocessing dapat dilihat pada gambar 3.16.
Gambar 3.16 Tampilan Halaman Menu Preprocessing
Keterangan :
Universitas Sumatera Utara
a. Frame live dari webcam untuk mengambil citra biji catur cina.
b. Frame grayscale untuk memproses citra RGB.
c. Trackbar untuk mendapatkan nilai threshold citra minimum.
d. Trackbar untuk mendapatkan nilai threshold citra maximum.
e. Combobox untuk mengeset Set dari citra.
f. Combobox untuk mengeset Colour dari citra.
g. Combobox untuk mengeset nama Chess dari citra.
h. Button Capture untuk menangkap citra rgb dari citra biji catur cina.
i. Button Grayscale untuk menangkap citra grayscale dari citra biji catur cina.
j. Button Cropping untuk mengcrop citra biji catur yang digunakan.
k. Button Processing untuk memproses citra biji catur hingga hasil ekstraksi fitur.
l. Button untuk memulai atau menghentikan frame live dari webcam.
3.3.1.3. Rancangan Tampilan Halaman Implentasi Halaman Implentasi adalah halaman untuk melakukan proses testing dan proses
training pada data citra catur cina. Halaman ini melakukan proses klasifikasi citra biji catur cina dengan melakukan testing pada citra baru dari live webcam. Gambar 3.17
menunjukkan tampilan halaman implementasi.
Gambar 3.17 Tampilan Halaman Implementasi
Universitas Sumatera Utara
Keterangan : a.
Frame live dari webcam untuk mengambil citra testing biji catur cina. b.
Frame grayscale untuk memproses citra RGB. c.
Trackbar untuk mendapatkan nilai threshold citra minimum. d.
Trackbar untuk mendapatkan nilai threshold citra maximum. e.
Combobox untuk mengeset Set dari citra. f.
Button untuk mengload data training dan melakukan training. g.
Textbox untuk menampilkan hasil klasifikasi. h.
Button untuk mengeksekusi atua menjalankan klasifikasi pada citra testing. i.
Button untuk memulai atau menghentikan frame live dari webcam.
Universitas Sumatera Utara
BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM
Bab ini akan membahas tentang hasil yang diperoleh dari implementasi metode yang digunakan untuk mengidentifikasi citra biji catur cina dan pengujian sistem sesuai
dengan analisis dan perancangan sistem yang telah dibahas pada Bab 3.
4.1. Implementasi Sistem