Identifikasi Tulisan Mandarin pada Citra Biji Catur Gajah Cina Berdasarkan Pola Menggunakan Direction Feature Extraction dan Backpropagation

(1)

DAFTAR PUSTAKA

Abdul Nasir, A.S., Mustafa, N., Mohd Nasir, N., F. 2009. Application of Thresholding

Technique in Determining Ratio of Blood Cells for Leukemia Detection.

Proceedings of the International Conference on Man-Machine Systems (ICoMMS), pp 2A2 1-6.

Agung, T. B.W., Hermanto, I.G.R. & Retno, N. D. 2009. Pengenalan Huruf Bali

Menggunakan Metode Modified Direction Feature dan Learning Vector Quantization. Konferensi Nasional Sistem dan Informatika 2009, Bali.

Bradski, G. & Kaehler, A. 2008. Learning OpenCV. O’Relly Media, Inc : Sebastopol. Canny, J. 1986. A computational approach to edge detection. Pattern Analysis and

Machine Intelligence IEEE Transactions on PAMI-8(6) : 679– 698.

Ding, X. 2002. Chinese Character Recognition: A Review. Acta Electronica Sinica, Vol.(30), No.9.

Duda R. O. & Hart P. E. 1972. Use of the Hough transform to detect lines and curves

in pictures. Communications of the ACM 15(1): 11–15.

Gonzales, R.C. & Woods, R.E. 2002. Digital Image Processing. New Jersey:Prentice-Hall Inc.

Hough P. V. C. 1962. Methods and means for recognizing complex patterns. U.S. Patent 3: 069 & 654.

Jawas, N. & Suciati, N. 2013. Image Inpainting using Erosion and Dilation

Operation. International Journal of Advanced Science and Technology Vol. 51.

Jia, W.K., Gang, Z.H., Liang, P.Z., Ying, H., 2011. Chinese Chess Character

Recognition with Radial Harmonic Fourier Moments. International


(2)

Khusbu & Mehta, S. 2013. Image Pre-processing on Character Recognition using

Neural Networks. International Journal of Computer Applications (0975

8887), Vol.(82): 13.

Liu, X.Y. & Blumentstein, M. 2008. A Modified Direction Feature for Cursive

Character Recogition. [email protected].

Liu, Y. 2009. Printed Chinese Character Recognition. Computer Science At Massey University, Auckland, New Zealand.

Miljkovic, O. 2009. Image Pre-Processing Tool. Kragujevac J. Math. 32 (2009) : 97– 107.

Mitchell, T. 1997. Artificial Neural Networks in Machine Learning, 1st Edition. McGraw-Hill : 95-111.

Nosrati, M. , Karimi, R. & Hariri, M. 2012. Detecting Circular Shapes From Areal

Images Using Median Filter and CHT. World Applied Programming Special

Section for Proceeding of International E-Conference on Computer Engineering (IeCCE) 2(1) : 49-54.

Prof. Tambe, S.B., Prof. Kulhare, D., Nirmal, M. D. & Prof. Prajapati, G. 2013. Image

Processing Through Erosion and Dilation Methods. International Journal of

Emerging Technology and Advanced Engineering. Vol.(3): Issue 7. Putra, D. 2008. Pengelolahan Citra Digital. Penerbit Andi, Yogyakarta. Rahul et al. 2013. Image Processing and Digital Recognition.

Robinson, P., Roodt, Y. & Nel, A. 2012. Gaussian blur identification using scale-space theory.

Romen, T. S., Roy, S., Imocha, O. S., Sinam, T. & Manglem K.S. 2011. A New Local

Adaptive Thresholding Technique in Binarization. International Journal of

Computer Science Issues (IJCSI), Vol.(8) Issue 6.

Saleh, S. A., Dr. Kalyankar, N.V. & Dr. Khamitkar, S.D. 2010. Linear and Non-linear

Contrast Enhancement Image. International Journal of Computer Science and

Network Security (IJCSNS), Vol(10) No.2.

Simonett, D.S. & Lintz, J. 1983. Remote Sensing of Environment. Addison Wesley Longman Publishing.


(3)

Smereka, M. & Duleba, I. 2008. Circular Object Detection Using A Modified Hough

Transform.

Snehal, O. M. & Prof. Shandilya, V. K. 2012. Image Enhancement and Its Various

Techniques. International Journal of Advanced Research in Computer Science

and Software Engineering (IJARCSSE) Vol.(2): Issue 4.

Soo, C.P. & Ji, H.H. 2002. Design of FIR bilevel Laplacian-of-Gaussian filter,

(ELSEVIER) Signal Processing 82 : 677 – 691.

Tkalci, M. & Jurij, F. T. 2003. Colour spaces - perceptual, historical and

applicational background. EUROCON 2003 : IEEE, Vol.(1).

Wen, Y.C. 2014. Chinese-Chess Image Recognition by using Feature Comparison

Techniques. An International Journal of Applied Mathematics & Information


(4)

-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 2(dua) 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


(5)

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


(6)

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, 28 (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) 0 1 2

0 (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 matriks(1,1) citra RGB menjadi citra Grayscale adalah seperti berikut:

Y = 0.299(R) + 0.588(G) + 0.114(B) Y = 0.299(40) + 0.588(150) + 0.114(90)

Y = 11.49 + 89.20 + 10.26 Y = 110.95


(7)

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) 0 1 2

0 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.


(8)

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.

SmoothGaussian(kernersize)

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.

Dilation(iterations)

Parameter :

- iterations = jumlah iterasi untuk proses dilasi(mempertebal) 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


(9)

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.

HoughCircles(cannyThreshold, 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


(10)

- minDist = jarak minimal lingkaran dengan ukuran dari citra, di dalam

penelitian ini minDist adalah satu perempat (1/4) 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.HoughCircles(CannyThreshold, AccThreshold, dp, Tinggi Citra Grayscale/4, 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 = lebarCitra/300, Ypoint = tinggiCitra/300 Initialisasi HitungLingkaran


(11)

For Each LingkaranDitemukan In Circles{ HitungLingkaran++

If (HitungLingkaran = 1){

Set dimana LingkaranDitemukan dengan radius = MaxRadius menjadi warna RGB(0,255,0) atau warna hijau

} }

For Each LingkaranDitemukan In Circles{ HitungLingkaran++

If (HitungLingkaran = 1){

Set dimana LingkaranDitemukan dengan radius = MinRadius menjadi warna RGB(0,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.


(12)

Pada proses ini juga terdapat fungsi drawImage() dari library C#.Net yang bertujuan untuk mengambarkan citra hasil cropping.

drawImage(image, 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 Initialisasi x’ = Xpusat – (lebarCitra/2)

Initialiasisi y’ = Ypusat – (tinggiCitra/2)

Initialisasi BitmapRGB, BitmapGrayscale dengan width = lebarCitra, height = tinggiCitra


(13)

Intialisasi srcRect, destRect Using graphic dari BitmapRGB{

srcRect = new Rectangle( x = x’, y = y’, widthImage = lebarCitra, heightImage = tinggiCitra)

destRect = new Rectangle(x = 0, y = 0, widthImage = lebarCitra, heightImage = tinggiCitra)

graphic.drawImage(CitraRGB, 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.drawImage(CitraGrayscale, 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


(14)

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.


(15)

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

If(AveRGB > = 0 && AveRGB<= ThresholdValue ){ BinaryValue[x,y] = 1


(16)

BinaryValue[x,y] = 0 }

x++ } y++ }

Write(BinaryValue) 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{


(17)

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


(18)

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.


(19)

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 Rectangle(PosX, PosY, lebar WidthCrop, tinggi HeightCrop)

destRect = new Rectangle( 0, 0, lebar WidthCrop, tinggi HeightCrop) graphic.DrawImage(Citra 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.


(20)

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.DrawImage(BitmapAsli, 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.


(21)

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 matriks(x,y) If (NilaiAbu >= NilaiThreshold){

CitraKontras pada matriks(x,y) = 255 }Else If(NilaiAbu < NilaiThreshold){

CitraKontras pada matriks(x,y) = 0 }

} }

Hasil dari MinMax Linear Contrast Stretching ditunjukkkan pada gambar 3.8 di bawah ini memiliki perbedaan kontras dengan gambar 3.7.


(22)

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 elemen(x,y) = MatriksBool pada elemen(x,y)

} }


(23)

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 Langkah(1, Pembanding = Matriks Temp, MatriksBool mengalami modifikasi)

MatriksTemp = CopyArray( dari MatriksBool yang telah termodif di Langkah(1))

Hitung = nilai dari fungsi Langkah(2, Pembanding = MatriksTemp dari Langkah(1), MatriksBool mengalami modifikasi)

MatriksTemp = CopyArray( dari MatriksBool yang telah termodif di Langkah(2))

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 Langkah(Angka, MatriksTemp, MatriksBool){ For y = 0 To TinggiMatriksTemp – 1{

For x = 0 To LebarMatriksTemp – 1{ If ( Angka = 1) maka Genap = false Else if(Angka = 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 elemen(x,y) adalah true) maka

Hitung++. Dimana masih terdapat pixel tetangga > 1. Nilai MatriksBool(x,y) diSet menjadi false.

} }


(24)

}

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 posisi(x, y - 1) X3 = MatriksBool posisi(x+1, y- 1) X4 = MatriksBool posisi(x+1, y) X5 = MatriksBool posisi(x+1, y+1) X6 = MatriksBool posisi(x, y+1) X7 = MatriksBool posisi(x-1, y+1) X8 = MatriksBool posisi(x-1, y) X9 = MatriksBool posisi(x-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){

If(Nilai Return Fungsi TransisiNolkeSatu(di posisi x, y, pada MatriksBool) adalah 1){

Apabila Genap = true maka If( !(X2 & X4) & X8){


(25)

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++ If(Sudut kanan atas dari MatriksBool true) Hitung++ If(Sudut kiri atas dari MatriksBool true) Hitung++ If(Sudut kiri bawah dari MatriksBool true) Hitung++ If(Sisi kiri dari MatriksBool true) Hitung++

If(Sisi kanan dari MatriksBool true) Hitung++ If(Sisi atas dari MatriksBool true) Hitung++ If(Sisi bawah dari MatriksBool true) Hitung++

If(Posisi elemen matriks bukan pada sudut atau sisi dari MatriksBool) Hitung++


(26)

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 matriks(x,y) tidak memiliki tetangga bersebelahan lebih dari satu buah. Function TransisiNolKeSatu(){

X2 = MatriksBool posisi(x, y - 1) X3 = MatriksBool posisi(x+1, y- 1) X4 = MatriksBool posisi(x+1, y) X5 = MatriksBool posisi(x+1, y+1) X6 = MatriksBool posisi(x, y+1) X7 = MatriksBool posisi(x-1, y+1) X8 = MatriksBool posisi(x-1, y) X9 = MatriksBool posisi(x-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{


(27)

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

If(AveRGB > = 0 && AveRGB<= ThresholdValue ){ BinaryValue[x,y] = 1


(28)

BinaryValue[x,y] = 0 }

x++ } y++ }

Write(BinaryValue) 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


(29)

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{

If(x dan y pada Sudut Kiri Atas){ Cek Arah pada P5, P6, P4

}Else If(x dan y pada Sudut Kiri Bawah){ Cek Arah pada P2, P3, P4

}Else If(x dan y pada Sudut Kanan Atas){ Cek Arah pada P6, P7, P8

}Else If(x dan y pada Sudut Kanan Bawah){ Cek Arah pada P1, P2, P8

}Else If(x dan y pada Sisi Atas dan Bukan Sudut){ Cek Arah pada P5, P6, P7, P4, P8


(30)

Cek Arah pada P1, P2, P3, P4, P8

}Else If(x dan y pada Sisi Kiri dan Bukan Sudut){ Cek Arah pada P5, P2, P6, P3, P4

}Else If(x dan y pada Sisi Kanan dan Bukan Sudut){ Cek Arah pada P1, P2, P6, P7, P8

}Else If(x 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{


(31)

If(MatriksArah 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{

If(MatriksArah 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{

If(MatriksArah bukan 1 atau 0){

Selama i tidak lebih besar dari Transisi maka

Direction Transition bernilai MatriksArah dikali dengan 10-1. i++

} }


(32)

} }

Function Down2Up(){

For x = LebarMatriks 1 To 0{ For y = TinggiMatriks 1 To 0{

If(MatriksArah 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.

(a)Transisi kiri ke kanan (b)Transisi kanan ke kiri


(33)

(c)Transisi atas ke bawah (d)Transisi 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

While(y < TinggiMatriks){

For x = 0 To JumlahTransisi-1 b = y + JumlahTransisi For a = y To b-1

sum += Matriks(x,y) }

} y++ }


(34)

}

Function N_Right2Left(){ Initialisasi x, y, sum, a, b

While(y < TinggiMatriks){

For x = 0 To JumlahTransisi-1{ b = y + JumlahTransisi For a = y To b-1{

sum += Matriks(x,y) }

} y++ }

}

Function N_Up2Down(){

Initialisasi x, y, sum, a, b

While(x < LebarMatriks){

For y = 0 To JumlahTransisi-1{ b = x + JumlahTransisi For a = x To b-1{

sum += Matriks(x,y) }

} x++ }

}

Function N_Down2Up(){

Initialisasi x, y, sum, a, b

While(x < LebarMatriks){


(35)

b = x + JumlahTransisi For a = x To b-1{

sum += Matriks(x,y) }

} x++ }

}

Hasil dari normalisasi matriks dengan ukuran 4x6 ditunjukkan pada gambar 3.13 di bawah ini.

(a)Normalisasi transisi kiri ke kanan (b)Normalisasi transisi kanan ke kiri

(c)Normalisasi 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.


(36)

Initialisasi x, y, z

For y = 0 To (TinggiMatriksAwal/4) – 1{ z = 0, Transisi = 4

For x = 0 To (Transisi*4) -1{

Apabila z = Transisi -1, maka z = 0

Apabila x >= 0 dan x < Transisi, maka ElemenMatriksDF = ElemenMatriksN

Apabila x >=Transisi dan x<Transisi*2, maka ElemenMatriksDF = ElemenMatriksN

Apabila x >=Transisi*2 dan x<Transisi*3, maka ElemenMatriksDF = ElemenMatriksN

Apabila x >=Transisi*3 dan x<Transisi*4, 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


(37)

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

weight(bobot). Weight juga dapat ditingkatkan nilai pembelajarannya. Di dalam

penelitian ini, weight yang digunakan ada dua, yaitu, weight penghubung

Input-Hidden Layer dan Input-Hidden-Output Layer. Adapun dimensi dari weight Input-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).


(38)

//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 = MatriksDirectionFeature(berjumlah 32 buah) MatriksInputTesting = MatriksDirectionFeature(berjumlah 8 buah) For i = 0 To (JumlahSampelTraining / JumlahTargetTesting) – 1{

k= 0

For j = (i * 8) To ((i+1)*JumlahTargetTesting) – 1{ OutputTarget(j) = 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.


(39)

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 }


(40)

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 indeks(b) *WeightInHid pada posisi (b,a ) InTo (JumlahweightInputHidden)

}

Sum (WeightInHid pada posisi (InputNeuron ,a ) InTo (JumlahweightInputHidden)

Set ArrayHidden indeks a = 1 / 1 + Exponen(JumlahweightInputHidden* -1) }

For a = 0 To OutputNeuron-1{

Set JumlahweightHiddenOutput = 0 For b = 0 To HiddenNeuron-1{

Sum (ArrayHidden pada indeks(b) *WeightHidOut pada posisi (b,a ) InTo (JumlahweightHiddenOutput)

}

Sum (WeightHidOut pada posisi (HiddenNeuron ,a ) InTo(JumlahweightHiddenOutput)

Set ArrayAnswer indeks (a) = 1 / 1 + Exponen(JumlahweightHiddenOutput*-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


(41)

Function Backpropagate{

//Hitung Error di Layer Output

For i = 0 To OutputNeuron – 1 maka ErrorOutput(i) = (ArrayTarget() – ArrayAnswer(i)) * (ArrayAnswer(i) – ArrayAnswer(i)2)

//Hitung Error di Layer Hidden For i = 0 To HiddenNeuron – 1 ErrorHidden(i) Set 0

For j = 0 To OutputNeuron – 1{

Sum (ErrorOutput(j) * WeightHidOut(i,j)) To(ErrorHidden(i)) }

Multiple(ArrayHidden(i) –ArrayHidden(i)2) To (ErrorHidden(i)) }

//Update Weight Hidden Output For i = 0 To OutputNeuron – 1{

For j = 0 To HiddenNeuron – 1{

Sum(LearningRate*ErrorOutput(i)*ArrayHidden(j))To(Weight HidOut posisi (j,i))

}

Sum(LearningRate*ErrorOutput(i))To(WeightHidOut posisi (HiddenNeuron,i))

}

//Update Weight Input Hidden For i = 0 To HiddenNeuron – 1{

For j = 0 To InputNeuron – 1{

Sum(LearningRate*ErrorHidden(i)*ArrayInput(j))To(WeightIn Hid posisi (j,i))

}

Sum(LearningRate*ErrorHidden(i))To(WeightInHid posisi (InputNeuron,i))


(42)

}

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 ArrayInput(b) = MatriksInputTraining(b,a)

For b = 0 To OutputNeuron -1 maka ArrayTarget(b) = OutputTarget(a,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 CekMaksimum(ArrayAnswer) }

}

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) }


(43)

Print “Output” adalalah Panggil CekMaksimum(ArrayAnswer) }

}

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

interface(antarmuka) 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.


(44)

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 :


(45)

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.


(46)

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.


(47)

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

Dalam penelitian ini, seluruh metode yang digunakan akan diimplementasikan ke dalam sistem dengan menggunakan bahasa pemograman Visual C#.Net sesuai dengan perancangan yang telah dilakukan.

4.1.1. Spesifikasi perangkat keras dan perangkat lunak yang digunakan

Spesifikasi perangkat keras dan perangkat lunak yang digunakan untuk membangun sistem ini adalah sebagai berikut :

1. Processor Intel ® CoreTM i3-3217U CPU 1.80GHz 2. Kapasitas harddisk 500GB

3. Memory RAM yang digunakan 2GB DDR3

4. Sistem operasi yang digunakan adalah Microsoft Windows 7 Home 5. Kamera webcam 15 MP dengan resolusi HD

6. Library yang digunakan EmguCV 2.4.0.1717

4.1.2. Implementasi perancangan antarmuka

Adapun implementasi perancangan antarmuka yang telah dilakukan pada Bab 3 adalah sebagai berikut :


(48)

Halaman utama merupakan halaman yang menampung seluruh proses utama dari sistem pengenalan pola tulisan citra biji catur cina. Halaman ini menampilkan menu utama yaitu File, Image processing, About. Tampilan halaman utama yang dibangun pada sistem dapat dilihat pada gambar 4.1.

Gambar 4.1 Tampilan Halaman Utama 2. Tampilan Halaman input character

Halaman input character merupakan halaman yang digunakan untuk menginput field-field berupa nama, warna dan jumlah dari setiap biji catur cina. Tampilan halaman input character yang dibangun pada sistem dapat dilihat pada gambar 4.2.

Gambar 4.2 Tampilan Halaman Input Character 3. Tampilan Halaman input set


(49)

Halaman input set merupakan halaman yang digunakan untuk menginput parameter yang digunakan pada tahap pre-processing image. Parameter dari setiap set biji catur cina yang dimaksud adalah Total, MaxRadius, MinRadius, ThresholdRed,

ThresholdBlack, Dilate Loop. Parameter Total menyimpan jumlah biji catur cina pada

setiap set catur. MaxRadius dan MinRadius menyimpan nilai maksimum dan minimum dari cincin biji catur. ThresholdRed dan ThresholdBlack menyimpan nilai

threshold pada biji catur merah dan biji catur hitam. Dilate Loop menyimpan nilai

iterasi dari operator dilasi pada citra yang bertujuan untuk memperbaiki citra (Image

Enhancement). Tampilan halaman input set yang dibangun pada sistem dapat dilihat

pada gambar 4.3.

Gambar 4.3 Tampilan Halaman Input Set 4. Tampilan Halaman capture chess image

Halaman capture chess image merupakan halaman yang digunakan untuk melakukan proses penangkapan citra, proses konversi citra berwarna menjadi citra keabuaan, proses pendeteksian dan penghapusan cincin pada biji catur cina dan proses menyimpan citra asli yang sesuai dengan set, warna dan nama catur yang akan dilakukan proses pre-processing. Halaman ini juga menyertakan nilai threshold yang digunakan pada setiap biji catur berdasarkan set dan warna. Tampilan halaman capture chess image dibangun pada sistem dapat dilihat pada gambar 4.4.


(50)

Gambar 4.4 Tampilan Halaman capture chess image 5. Tampilan Halaman binerization300x300

Halaman binerization300x300 merupakan halaman yang digunakan untuk melakukan proses membinerisasikan citra keabuan. Pada halaman binerization300x300 dilakukan penyimpanan data biner berupa matriks dengan ukuran 300x300. Tampilan halaman binerization300x300 dibangun pada sistem dapat dilihat pada gambar 4.5.

Gambar 4.5 Tampilan Halaman binerization300x300 6. Tampilan Halaman normalization300to24

Halaman normalization300to24 merupakan halaman yang digunakan untuk melakukan proses normalisasi ukuran citra. Pada halaman normalization300x24 ukuran citra 300x300 pixel akan diubah menjadi ukuran citra 24x24 pixel. Pada proses penormalisasian citra mengalami proses cropping dan proses resizing. Tampilan halaman normalization300to24 dibangun pada sistem dapat dilihat pada gambar 4.6.


(51)

Gambar 4.6 Tampilan Halaman normalization300to24 7. Tampilan Halaman Pixelization24x24

Halaman pixelization24x24 merupakan halaman yang digunakan untuk melakukan proses perubahan kontras pada pixel. Halaman ini berfungsi untuk mengubah citra asli hasil resized dari normalisasi menjadi citra yang memiliki nilai pixel yang lebih kontras antara foreground dengan background. Tampilan halaman pixelization 24x24 dibangun pada sistem dapat dilihat pada gambar 4.7.

Gambar 4.7 Tampilan Halaman pixelization24x24 8. Tampilan Halaman Thinning 24x24

Halaman Thinning 24x24 merupakan halaman yang digunakan untuk melakukan proses penipisan citra dari output pada halaman pixelization24x24. Halaman ini berfungsi untuk menipiskan citra sehingga citra output dari halaman ini memiliki


(52)

ketebalan sebesar satu pixel. Tampilan halaman thinning 24x24 dibangun pada sistem dapat dilihat pada gambar 4.8.

Gambar 4.8 Tampilan Halaman thinning 24x24 9. Tampilan Halaman Binerization24x24

Halaman Binerization 24x24 merupakan halaman yang digunakan untuk melakukan proses pengkorvesian dari citra menjadi matriks biner kembali dengan ukuran 24x24. Tampilan halaman binerization24x24 dibangun pada sistem dapat dilihat pada gambar 4.9.

Gambar 4.9 Tampilan Halaman binerization24x24 10. Tampilan Halaman Direction Feature Extraction

Halaman Direction Feature Extraction merupakan halaman yang digunakan untuk melakukan proses ekstraksi fitur pada output matriks 24x24 yang berasal dari halaman


(53)

binerization24x24. Tampilan halaman direction feature extraction dibangun pada sistem dapat dilihat pada gambar 4.10.

Gambar 4.10 Tampilan Halaman Direction Feature Extraction 11. Tampilan Halaman Training using Backpropagation

Halaman Training using Backpropagation merupakan halaman yang digunakan untuk melakukan proses pelatihan pada jaringan saraf tiruan pada input yang berasal dari output dari halaman direction feature extraction. Pada halaman ini data training dan data testing dapat dimuat dan dilatih menggunakan jaringan saraf tiruan Backpropagation. Hasil pelatihan ditunjukkan melalui hasil klasifikasi pada data training dan testing di dalam monitor view yang ada pada halaman ini Tampilan halaman training using backpropagation dibangun pada sistem dapat dilihat pada gambar 4.11.


(54)

Gambar 4.11 Tampilan Halaman Training using Backpropagation 12. Tampilan Halaman Implementation

Halaman Implementation merupakan halaman yang digunakan untuk mengimplementasikan proses dari awal yaitu pre-processing citra dan ekstrasi fitur sampai kalsifikasi pada data dari citra asing pada akhirnya. Halaman ini akan menunjukkan hasil klasifikasi pada setiap citra biji catur yang ditangkap. Halaman ini bertujuan untuk mencatat dan menghitung jumlah biji catur merah dan hitam yang telah terklasifikasi. Tampilan halaman implementation dibangun pada sistem dapat dilihat pada gambar 4.12.


(55)

4.2. Pengujian Sistem

Pada tahap pengujian sistem akan dilakukan evaluasi kinerja hasil proses pada sistem. Standar yang digunakan dalam mengevaluasi kinerja hasil proses sistem adalah Gold

Standard dimana penilaian didasari atas True Positive (TP), False Posotive (FP), True

Negative (TN) dan False Negative (FN). Dalam penelitian ini akan dilakukan dua pengujian tahap utama yaitu : pengujian hasil terhadap dataset biji catur cina dengan orientasi sudut 90◦ dan pengujian hasil terhadap dataset biji catur cina dengan sudut 60◦ sampai 120◦.

4.2.1. Pengujian terhadap Dataset Biji Catur Cina dengan Orientasi Sudut 90◦

Pengujian terhadap biji catur cina yang memiliki orientasi sudut 90◦ dan font yang berbeda sangat mempengaruhi tingkat keberhasilan identifikasi citra biji catur. Pada penelitian ini, peneliti menggunakan lima (5) set biji catur cina yang memiliki jumlah delapan puluh (80) biji catur cina secara keseluruhan. Setiap biji catur cina memiliki karakter yang berbeda dan setiap set biji catur cina memiliki font yang berbeda. Pengujian dilakukan dengan menggunakan citra training biji catur yang diambil secara tegak lurus sebanyak empat (4) set dan dilakukan pengujian terhadap citra asing biji catur cina yang sebanyak satu (1) set.

Berdasarkan standar yang digunakan untuk pengujian ini, penilaian True

Positive (TP) pada pengidentifikasian citra biji catur cina dimana pola tulisan biji

catur cina dapat dikenali dan False Negative (FN) dimana pola tulisan biji catur cina tidak dapat dikenali. Ukuran kinerja hasil pengujian ditunjukkan pada tabel 4.1.

Tabel 4.1 Ukuran Kinerja Hasil Pengujian

No. Indeks Keterangan Formula

1 TP Red

rate

Kemampuan untuk mengidentifikasi citra biji catur cina warna merah

x 100%

2 FN Red

rate

Ketidakmampuan untuk

mengidentifikasi citra biji catur cina


(56)

warna merah

3 TP Black

rate

Kemampuan untuk mengidentifikasi citra biji catur cina warna hitam

x 100%

4 FN Black

rate

Ketidakmampuan untuk

mengidentifikasi citra biji catur cina warna hitam

x 100%

3 Over all

accuracy

Keandalan secara keseluruhan

4 Error ratio Kesalahan secara

keseluruhan

Dalam penelitian ini, pengujian dilakukan dengan menggunakan 2 kondisi pada dataset citra dengan pengujian yang berbeda. Berikut ini adalah rincian dataset yang digunakan.

Dataset yang digunakan adalah hasil pengumpulan sampel oleh peneliti yang berjumlah 5 set catur cina. Dataset ini terdiri dari 3 macam data untuk pengidentifikasian pola karakter cina pada citra biji catur cina dengan kondisi yang berbeda, yaitu :

a. Dataset biji catur cina hasil pengumpulan peneliti.

Dataset biji catur yang telah dikumpulkan oleh peneliti memilki 2 kondisi pengujian yang berbeda. Kedua kondisi yang dimaksud adalah sebagai berikut.

1. Kondisi I

- Jumlah citra training : 320 citra

- Jumlah citra testing : 80 citra

- Sudut citra : 90◦ (citra berada pada posisi tegak lurus)

- Ukuran citra : 24 x 24 pixel


(57)

2. Kondisi II

- Jumlah citra training : 320 citra

- Jumlah citra testing : 240 citra

- Sudut citra : 90◦ ± 5◦ (citra berada pada posisi tegak lurus dengan sudut kurang lebih 5◦ searah jarum jam atau berlawanan jarum jam)

- Ukuran citra : 24 x 24 pixel

- Iterasi pelatihan (epoch) : 10.000 epoch b. Dataset font digital mandarin.

Dataset font digital mandarin yang diujikan merupakan font standar yaitu: DFB,

FangSong, Simsum, VTMei. Font digital yang diujikan akan dijabarkan pada kondisi

sebagai berikut.

- Dataset training : citra biji catur hasil pengumpulan peneliti

- Dataset testing : citra font DFB, FangSong, Simsum,

VTMei

- Jumlah citra training : 400 citra

- Jumlah citra testing : 80 citra

- Sudut citra : 90◦ (citra berada pada posisi tegak lurus)

- Ukuran citra : 24x24 pixel

- Iterasi pelatihan (epoch) : 10.000 epoch

Pengujian pengidentifikasian dilakukan dengan menggunakan beberapa sampel data yang berbeda berdasarkan jenis font. Tabel 4.2 sampai 4.4 menunjukkan hasil pengujian pengidentifikasian citra biji catur cina pada dataset yang telah dijabarkan sebelumnya dengan menggunakan beberapa sampel data yang berbeda berdasarkan jenis font. Hasil pengujian kondisi I yang terdapat pada tabel 4.2 didapatkan dari pengujian terhadap jenis-jenis font yang berbeda pada dataset training maupun pada dataset testing.


(58)

Tabel 4.2 Persentase Hasil Pengujian Pengidentifikasian Dataset Citra Biji Catur Cina Peneliti Kondisi I

Persentase Hasil Testing (%) Kondisi I

No

Dataset Training

(Set)

Dataset Testing (Set)

TPRed FN Red

TP Black

FN Black

Over all

accuracy Error 1 II, III, IV, V I 100% 0% 75% 25% 87.5% 12.5%

2 I, III, IV, V II 100% 0% 100% 0% 100% 0%

3 I, II, IV, V III 100% 0% 100% 0% 100% 0%

4 I, II, III, V IV 75% 25% 100% 0% 87.5% 12.5%

5 I, II, III, IV V 100% 0% 100% 0% 100% 0%

Jumlah Persentase Over all 95% 5%

Gambaran hasil pengujian dari tabel 4.2 pada kondisi I dengan orientasi sudut 90◦ dan dataset pelatihan dan pengujian yang berasal dari peneliti dapat dilihat pada gambar 4.13 di bawah ini.


(59)

b. Hasil training dan testing dataset training (I, III, IV, V) terhadap dataset testing (II)


(60)

d. Hasil training dan testing dataset training (I, II, III, V) terhadap dataset testing (IV)

e. Hasil training dan testing dataset training (I, II, III, IV) terhadap dataset testing (V)

Gambar 4.13 Hasil pengujian terhadap biji catur merah dan hitam dengan orientasi sudut 90◦ dan font yang berbeda

Pada hasil pengujian gambar dataset catur pada gambar 4.13 ditunjukkan dalam tabel 4.2 dimana hasil akurasi yang diperoleh secara total yaitu 95% dan tingkat error 5%. Persentase dataset training yang didapatkan dari pengujian kondisi I adalah


(61)

pengujian data yang digunakan masih berada pada posisi 90◦ (citra berada pada posisi tegak lurus) dari semua set biji catur yang dilakukan proses training-testing dan proses pelatihan pada dataset di dalam jaringan saraf tiruan Backpropagation sebanyak 10.000 epoch. Akantetapi, keberagaman jenis font yang digunakan masih belum memberikan tingkat persentase error yang tinggi. Jumlah citra biji catur yang diujikan sebanyak 80 citra, dimana terdapat 76 citra biji catur yang berhasil teridentifikasi dan 4 citra biji catur yang tidak berhasil teridentifikasi. Adapun gambar sampel biji catur cina yang digunakan oleh peneliti dalam mendapatkan hasil pengujian kondisi I ditunjukkan pada gambar 4.14 di bawah ini.

a.Gambar dataset font tipe I b.Gambar dataset font tipe II

c.Gambar dataset font tipe III d. Gambar dataset font tipe IV

e.Gambar dataset font tipe V

Gambar 4.14 Gambar dataset font biji catur cina pada posisi 90◦

Pengujian selanjutnya dilakukan dengan menggunakan dataset training dari kondisi I yaitu dataset yang berada pada posisi 90◦ dengan pengujian pada jenis font yang berbeda. Pada saat pengujian pada kondisi II, data testing yang berasal dari data training mengalami perubahan pada sudut rotasi font yang diubah sampai 5◦ searah jarum jam atau 5◦ berlawanan arah jarum jam. Proses pengujian dilakukan secara acak terhadap sudut 85◦ sampai 95◦. Pada pengujian kondisi II, dataset testing merupakan jenis font yang berbeda dari dataset training dan memiliki sudut rotasi yang berbeda


(62)

sebanyak 5◦ searah maupun berlawanan arah jarum jam. Tabel 4.3 di bawah ini menunjukkan hasil pengujian terhadap kondisi II.

Tabel 4.3 Persentase Hasil Pengujian Pengidentifikasian Dataset Citra Biji Catur Cina Peneliti Kondisi II

Persentase Hasil Testing (%) Kondisi II

No Dataset Training (Set) Dataset Testing (Set) TP Red FN

Red TP Black

FN Black

Over all

accuracy Error

1 II, III,

IV, V I 100% 0% 95.83% 4.17% 97.92% 2.08%

2 I, III, IV,

V II

70,83 %

29.17

% 87.5% 12.5% 79.17% 20.83% 3 I, II, IV,

V III

91.67

% 8.33% 100% 0% 95.84% 4.16%

4 I, II, III,

V IV

66.67 %

33.33

% 79.17%

20.83

% 72.92% 27.08% 5 I, II, III,

IV V 75% 25% 91.67% 8.33% 83.34% 16.66%

Jumlah Persentase Over all 85.84% 14.16%

Gambaran hasil pengujian dataset yang berorientasi pada 90◦ terhadap dataset pengujian langsung dengan pergeseran 5◦ searah maupun berlawanan arah jarum jam dari posisi tegak lurus dari biji catur cina ditunjukkan pada gambar 4.15 di bawah ini.


(63)

a. Gambar pengujian sudut 95◦, 90◦ dan 85◦ pada salah satu biji catur merah

b. Gambar pengujian sudut 95◦, 90◦ dan 85◦ pada salah satu biji catur merah

Gambar 4.15 Gambaran hasil pengidentifikasian dengan pergeresan 5◦ searah maupun berlawanan arah jarum jam dari biji catur cina

Pada hasil pengujian dataset pada kondisi II ditunjukkan pada tabel 4.3 di atas menunjukkan persentasi yang lebih rendah daripada hasil pengujian dataset citra yang tegak lurus pada kondisi I. Hasil identifikasi sampel dari citra biji catur cina yang lebih rendah disebabkan oleh nilai direction (arah) berubah pada masing-masing citra yang mengalami perubahan sudut rotasi sebanyak 5◦ searah maupun berlawanan arah jarum jam. Proses pelatihan dilakukan sebanyak 10.000 epoch. Dengan jumlah iterasi


(64)

pelatihan yang sama pada kedua kondisi diatas, peniliti mendapatkan selisih tingkat error dari kondisi I dan II yaitu 9.16%.

Adapun contoh gambar dataset yang digunakan pada pengujian pada kondisi II ditunjukkan pada gambar 4.16 dan gambar 4.17 di bawah ini.

a.Gambar dataset font tipe I b.Gambar dataset font tipe II

c.Gambar dataset font tipe III d.Gambar dataset font tipe IV

e.Gambar dataset font tipe V

Gambar 4.16 Gambar dataset font pada posisi 5◦ searah jarum jam dari posisi tegak lurus

a.Gambar dataset font tipe I b.Gambar dataset font tipe II

c.Gambar dataset font tipe III d.Gambar dataset font tipe IV

e.Gambar dataset font tipe V

Gambar 4.17 Gambar dataset font pada posisi 5◦ berlawanan arah jarum jam dari posisi tegak lurus


(65)

Pengujian selanjutnya diujikan pada citra font digital. Dataset citra pelatihan untuk pengujian ini adalah dataset citra yang berasal dari hasil pengumpulan peneliti yang dapat dilihat pada gambar 4.2. Dataset citra pengujian adalah citra font digital yang terdiri dari font DFB, FangSong, Simsum dan VTMei. Hasil pengujian citra font dapat dilihat pada tabel 4.4 di bawah ini.

Tabel 4.4 Persentase Hasil Pengujian Pengidentifikasian Dataset Pengujian Font Digital Terhadap Dataset Pelatihan Citra Biji Catur Cina

Persentase Hasil Testing (%)

No Dataset Training (Set) Dataset Testing (Set) TP Red FN Red TP Black FN Black Over all

accuracy Error

1 II, III,

IV, V DFB 87.5% 12.5% 75% 25% 81.25% 18.75% 2 I, III, IV,

V

FangSo

ng 100% 0% 87.5% 12.5% 93.75% 6.25% 3 I, II, IV,

V Simsum 62.5% 37.5% 87.5% 12.5% 75% 25% 4 I, II, III,

V VTMei 62.5% 37.5% 75% 25% 68.75% 31.25% Jumlah Persentase Over all 79.69% 20.31%

Gambaran hasil pengujian pengidentifikasian dataset pengujian font digital terhadap dataset pelatihan citra biji catur cina dapat dilihat pada gambar 4.18 di bawah ini


(1)

vii

DAFTAR ISI

Hal.

Persetujuan ii

Pernyataan iii

Ucapan Terima Kasih iv

Abstrak v

Abstract vi

Daftar Isi vii

Daftar Tabel xi

Daftar Gambar xii

BAB 1 Pendahuluan 1

1.1. Latar Belakang 1

1.2. Rumusan Masalah 3

1.3. Batasan Masalah 4

1.4. Tujuan Penelitian 4

1.5. Manfaat Penelitian 4

1.6. Metodologi Penelitian 5

1.7. Sistematika Penulisan 6

BAB 2 Landasan Teori 8

2.1. Citra 8

2.2. Image Processing 8

2.2.1. Canny Edge Detection 9

2.2.1.1. Hough Circle Transform 9


(2)

2.2.2.1. Dilation 10

2.2.2.2. Gaussian Blur 10

2.2.3. Min-Max Linear Contrast Strecth 10

2.2.4. Colour Space Conversion 11

2.2.4.1. RGB2Grayscale 11

2.2.5. Resizing 12

2.2.6. Image Normalization 12

2.2.7. Thresholding 12

2.2.8. Thinning 12

2.3. Ekstraksi Fitur 13

2.3.1. Direction Feature 13

2.5. Backpropagation 15

2.6. Penelitian Terdahulu 19

BAB 3 Analisis dan Perancangan 23

3.1. Data yang Digunakan 23

3.2. Analisis Sistem 23

3.2.1. Colour Space Conversion 25

3.2.1.1. RGB2Grayscale 25

3.2.2. Image Enhancement 26

3.2.2.1. Gaussian Blur 27

3.2.2.2. Dilation 27

3.2.3. Canny Edge Detection 27

3.2.3.1. Hough Circle Transform 28

3.2.4. Cropping 30

3.2.5. Erase Circle 33

3.2.6. Thresholding 34

3.2.7. Image Normalization 35


(3)

ix

3.2.9. Min-Max Linear Contrast Stretch 40

3.2.10. Thinning 41

3.2.11. Binerization 46

3.2.12. Feature Extraction 47

3.2.12.1. Direction Feature Extraction 48

3.2.13. Backpropagation 55

3.3. Perancangan Sistem 62

3.3.1. Perancangan Antarmuka 62

3.3.1.1. Rancangan Tampilan Halaman Menu Utama 62

3.3.1.2. Rancangan Tampilan Halaman Image Preprocessing 63 3.3.1.3. Rancangan Tampilan Halaman Implementasi 64

BAB 4 Implementasi dan Pengujian 66

4.1. Implementasi Sistem 66

4.1.1. Spesifikasi Perangkat Keras dan Perangkat Lunak yang

digunakan 66

4.1.2. Implementasi Perancangan Antarmuka 66

4.2. Pengujian Sistem 74

4.2.1. Pengujian terhadap Dataset Biji Catur Cina dengan

Orientasi Sudut 90◦ 74

4.2.2. Pengujian Hasil terhadap Dataset Biji Catur Cina dengan

Sudut60◦sampai 120◦ 86

BAB 5 Kesimpulan dan Saran 97

5.1. Kesimpulan 97

5.2. Saran 98


(4)

DAFTAR TABEL

Hal. Tabel 2.1 Nilai Label dan Arah pada Direction Feature 13 Tabel 2.2 Matriks neighbour pixel P dalam pelabelan nilai arah 14

Tabel 2.3 Tabel Peneltian Terdahulu 20

Tabel 3.1 Matriks RGB pada citra 3x3 pixel 25

Tabel 3.2 Matriks Grayscale pada citra 3x3 pixel 26 Tabel 3.3 Urutan elemen pixel tetangga pada matriks boolean 43

Tabel 4.1 Ukuran Kinerja Hasil Pengujian 74

Tabel 4.2 Persentase Hasil Pengujian Pengidentifikasian Dataset Citra Biji

Catur Cina Peneliti Kondisi I 76

Tabel 4.3 Persentase Hasil Pengujian Pengidentifikasian Dataset Citra Biji

Catur Cina Peneliti Kondisi II 81

Tabel 4.4 Persentase Hasil Pengujian Pengidentifikasian Dataset Pengujian Font Digital Terhadap Dataset Pelatihan Citra Biji Catur Cina 84

Tabel 4.5 Ukuran Kinerja Hasil Pengujian 87

Tabel 4.6 Persentase Hasil Pengujian Pengidentifikasian Dataset Citra Biji

Catur Cina Peneliti Kondisi I 89

Tabel 4.7 Persentase Hasil Pengujian Pengidentifikasian Dataset Citra Biji

Catur Cina Peneliti Kondisi II 91

Tabel 4.8 Persentase Hasil Pengujian Pengidentifikasian

Dataset Citra Biji Catur Cina Peneliti Kondisi III 93


(5)

xi

DAFTAR GAMBAR

Hal.

Gambar 3.1 Arsitektur umum 24

Gambar 3.2 Citra RGB webcam dan Citra grayscale hasil konversi 26 Gambar 3.3 Hasil pendeteksian Hough Circles Detection dan parameter

warna pada citra terdeteksi 30

Gambar 3.4 Citra RGB dan grayscale yang tercrop dengan dimensi

300x300 pixel 32

Gambar 3.5 Cincin pada citra grayscale yang telah terbuang

dan hanya karakter Cina 33

Gambar 3.6 Citra hasil normalisasi dengan ukuran yang bervariasi 38

Gambar 3.7 Citra resize berukuran 24x24 pixel 39

Gambar 3.8 Citra thinning berukuran 24x24 pixel 40

Gambar 3.9 Gambar hasil konversi citra thinning menjadi file matriks biner 46 Gambar 3.10 Matriks Direction 24x24 yang mengandung nilai arah 2-5 47 Gambar 3.11 Transisi nilai keempat arah berukuran 4x24 pada

masing-masing arah 49

Gambar 3.12 Matriks normalisasi transisi keempat sisi berukuran 4x6 52 Gambar 3.13 Matriks Direction Feature Extraction berdimensi 4x24 54

Gambar 3.14 Tampilan Halaman Menu Utama 55

Gambar 3.15 Tampilan Halaman Menu Preprocessing 63

Gambar 3.16 Tampilan Halaman Implementasi 63

Gambar 4.1 Tampilan Halaman Utama 67

Gambar 4.2 Tampilan Halaman Input Character 67

Gambar 4.3 Tampilan Halaman Input Set 68


(6)

Gambar 4.5 Tampilan Halaman binerization300x300 69 Gambar 4.6 Tampilan Halaman normalization300to24 70

Gambar 4.7 Tampilan Halaman pixelization24x24 70

Gambar 4.8 Tampilan Halaman thinning 24x24 71

Gambar 4.9 Tampilan Halaman binerization24x24 71

Gambar 4.10 Tampilan Halaman Direction Feature Extraction 72 Gambar 4.11 Tampilan Halaman Training using Backpropagation 73

Gambar 4.12 Tampilan Halaman Implentation 73

Gambar 4.13 Hasil pengujian terhadap biji catur merah dan hitam

dengan orientasi sudut 90◦ dan font yang berbeda 79 Gambar 4.14 Gambar dataset font biji catur cina pada posisi 90◦ 80 Gambar 4.15 Gambaran hasil pengidentifikasian dengan pergeresan

5◦ searah maupun berlawanan arah jarum jam

dari biji catur cina 82

Gambar 4.16 Gambar dataset font pada posisi 5◦ searah jarum jam

dari posisi tegak lurus 83

Gambar 4.17 Gambar dataset font pada posisi 5◦ berlawanan arah jarum jam

dari posisi tegak lurus 83

Gambar 4.18 Hasil pengujian dataset biji catur terhadap font digital mandarin 85

Gambar 4.19 Citra Testing Font Digital 86

Gambar 4.20 Hasil pengujian kondisi II pada biji catur merah dan hitam 93 Gambar 4.21 Hasil pengujian kondisi III pada biji catur merah