Data yang digunakan Analisis Sistem

- 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