• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2017

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

Copied!
117
0
0

Teks penuh

(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. m.blumenstein@griffith.edu.au.

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.

(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

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

(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

(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

(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

(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

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

(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

(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

}

} }

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

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

(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++

(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

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

} }

}

[image:30.595.240.391.390.551.2]

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

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

(33)
[image:33.595.325.473.150.314.2]

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

(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

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

(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

(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

(44)
[image:44.595.193.439.84.234.2]

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.

[image:44.595.151.480.523.706.2]
(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

[image:48.595.140.494.486.691.2]

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.

(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

[image:49.595.133.499.292.498.2]

pada gambar 4.3.

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

(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

(51)
[image:51.595.136.497.85.291.2]

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

[image:51.595.119.502.431.678.2]
(52)
[image:52.595.131.503.124.337.2]

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

[image:52.595.116.488.461.674.2]

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

(53)
[image:53.595.110.499.124.353.2]

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

(54)
[image:54.595.119.492.86.296.2]

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.

[image:54.595.105.504.490.719.2]
(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

(58)
[image:58.595.105.530.116.365.2]

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%

[image:58.595.209.424.441.694.2]

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)

[image:60.595.207.426.84.340.2]

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

(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◦

(62)
[image:62.595.93.540.157.554.2]

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

Gambar

Gambar 3.11 Matriks Direction 24x24 yang mengandung nilai arah 2-5
Gambar 3.12 Transisi nilai keempat arah berukuran 4x24 pada masing-masing
Gambar 3.15 Tampilan Halaman Menu Utama
Gambar 4.2 Tampilan Halaman Input Character
+7

Referensi

Dokumen terkait

[r]

We prepare school students for life, helping them develop an informed curiosity and a lasting passion

al ini akan mengakibatkan suatu mekanisme proteksi dari otot'otot tulang belakang untuk menjaga keseimbangan, manifestasinya yang terjadi justru overuse pada salah satu sisi otot

Rekan-rekan Mahasiswa Teknik Industri 2011 Universitas Muhammadiyah Malang yang sudah penulis anggap sebagai saudara (Akbar, Arif, Annisa, Brili, Yusrofi, Imam, Indri, Emak,

Numbered head together (NHT) atau penomoran berfikir bersama adalah merupakan jenis pembelajaran kooperatif yang dirancang untuk mempengaruhi pola interaksi siswa

3RQGRN :LVDWD SDGD RE\HN ZLVDWD 3DQWDL 6DUL 5LQJJXQJ 'DUL KDVLO ZDZDQFDUD GHQJDQ SHQJHOROD GLNHWDKXL EDKZD SDGD RE\HN ZLVDWD 3DQWDL 6DUL 5LQJJXQJ WHODK GLVHGLDNDQ SRQGRN ZLVDWD

Sukmono.1975. Jakarta : BP Musium Ronggowarsito. Kol eksi pust aka al am.. Pada jaman purbakala hutan, sungai, lembah, gunung masih asli karena belum terjamah oleh budidaya

Istilah BIOS pertama kali muncul dalam sistem operasi CP/M, yang merupakan bagian dari CP/M yang dimuat pada saat proses booting dimulai yang berhadapan secara langsung