• Tidak ada hasil yang ditemukan

Pengenalan Tulisan Tangan Aksara Batak Toba Menggunakan Jaringan Saraf Tiruan Backpropagation

N/A
N/A
Protected

Academic year: 2017

Membagikan "Pengenalan Tulisan Tangan Aksara Batak Toba Menggunakan Jaringan Saraf Tiruan Backpropagation"

Copied!
17
0
0

Teks penuh

(1)

LAMPIRAN A : DATA SAMPEL

1.

Data latihan

Pola

Citra

Pola

Citra

Pola

Citra

Pola

Citra

0

1

2

3

A1

A2

A3

A4

4

5

6

7

A5

A6

Ha

Ha2

8

9

10

11

Ha3

Ha4

Ha5

Ha6

12

13

14

15

Ma

Ma2

Ma3

Ma4

16

17

18

19

Ma5

Ma6

Na

Na2

20

21

22

23

(2)

24

25

26

27

Ra

Ra2

Ra3

Ra4

28

29

30

31

Ra5

Ra6

Ta

Ta2

32

33

34

35

Ta3

Ta4

Ta5

Ta6

36

37

38

39

Sa

Sa2

Sa3

Sa4

40

41

42

43

Sa5

Sa6

Da

Da2

44

45

46

47

Da3

Da4

Da5

Da6

48

49

50

51

(3)

52

53

54

55

Ga5

Ga6

Ja

Ja2

56

57

58

59

Ja3

Ja4

Ja5

Ja6

60

61

62

63

Ba

Ba2

Ba3

Ba4

64

65

66

67

Ba5

Ba6

Nga

Nga2

68

69

70

71

Nga3

Nga4

Nga5

Nga6

72

73

74

75

(4)

76

77

78

79

La5

La6

Pa

Pa2

80

81

82

83

Pa3

Pa4

Pa5

Pa6

84

85

86

87

Nya

Nya2

Nya3

Nya4

88

89

90

91

Nya5

Nya6

wa

Wa2

92

93

94

95

Wa3

Wa4

Wa5

Wa6

96

97

98

99

(5)

100

101

102

103

Ya5

Ya6

I

I2

104

105

104

105

I3

I4

I5

I6

108

109

110

111

U

U2

U3

U4

112

113

(6)

2.

Data uji

Pola

Citra

Pola

Citra

Pola

Citra

Pola

Citra

0

1

2

3

A7

A8

A9

A10

4

5

6

7

H7

Ha8

Ha9

Ha10

8

9

10

11

Ma7

Ma8

Ma9

Ma10

12

13

14

15

Na7

Na8

Na9

Na10

16

17

18

19

Ra7

Ra8

Ra9

Ra10

20

21

22

23

(7)

24

25

26

27

Sa7

Sa8

Sa9

Sa10

28

29

30

31

Da7

Da8

Da9

Da10

32

33

34

35

Ga7

Ga8

Ga9

Ga10

36

37

38

39

Ja7

Ja8

Ja9

Ja10

40

41

42

43

Ba7

Ba8

Ba9

Ba10

44

45

46

47

(8)

48

49

50

51

La7

La8

La9

La10

52

53

54

55

Pa7

Pa8

Pa9

Pa10

56

57

58

59

Nya7

Nya8

Nya9

Nya10

60

61

62

63

Wa7

Wa8

Wa9

Wa10

64

65

66

67

Ya7

Ya8

Ya9

Ya10

68

69

70

71

I7

I8

I9

I10

72

73

74

75

(9)

LAMPIRAN B

PROGRAM

import java.awt.Color;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import java.util.Scanner;

public class tulisan{

private static final int IMG_WIDTH = 60;

private static final int IMG_HEIGHT = 90;

static double input_jst[][] = new double[60][90];

private static double mse;

private static String namagambar = "";

private static BufferedImage original, grayscale, binarized, uji,uji2;

private static double epoch = 0.5;

private static double jum2;

private static String filegambar, tipegambar;

private static double matriks2 [][] = new double[60][90];

private static double nilai = 2;

public static void main (String[] args) throws IOException{

System.out.println("masukkan nama file gambar :");

Scanner input = new Scanner(System.in);

//Scanner input2 = new Scanner(System.in);

filegambar = input.nextLine();

(10)

// mengambil source gambar

original = ImageIO.read(tulisan.class.getResource("pictures/"+filegambar+".bmp"));

int width_original = original.getWidth();

int height_original = original.getHeight();

if((width_original != 60 ) || (height_original != 90)){

System.out.println("ukuran gambar yang anda masukkan tidak sesuai, apakah ingin mencocokkan gambar?");

System.out.println("y / t");

String kepastian = input.nextLine();

if(kepastian.equals("y")){

//BufferedImage originalImage = ImageIO.read(new File(filegambar+".bmp"));

int type = original.getType() == 0? BufferedImage.TYPE_INT_ARGB : original.getType();

BufferedImage resizeImagebmp = ImageProcessing.resizeImage(original, type);

.write(resizeImagebmp, "bmp", new File("pictures/"+filegambar+".bmp"));

original = ImageIO.read(tulisan.class.getResource("pictures/"+filegambar+".bmp"));}}

width_original = original.getWidth();

height_original = original.getHeight();

if((width_original == 60) && (height_original == 90)){

grayscale = fungsi_tulisan2.toGray(original);

binarized = fungsi_tulisan2.binarize(grayscale);

// mengatur besar skala width dengan height

int jum =0;

int width = binarized.getWidth();

int height = binarized.getHeight();

// System.out.println(" " +width +" " + height);

int [][] matriks = new int [width][height];

int [][] matriksbanding = new int [width][height];

(11)

int [][] matriksbanding2 = new int [width][height];

//int [][] zoning2 = new int [width][height];

for (int i = 0; i < width; i++) {

for (int j = 0; j <height; j++) {

int gambar = binarized.getRGB(i,j);

matriks[i][j] = gambar;

// System.out.println(gambar);

if(matriks[i][j] == -16777216){

matriks[i][j] = 1 ;}

if(matriks[i][j] == -1){

matriks [i][j] = 0;}}}

matriks = fungsi_tulisan.doHilditchsThinning(matriks);

for (int i = 0; i < width; i++) {

for (int j = 0; j < height; j++) {

if(matriks[i][j] == 0 ){

matriks[i][j] = -16777216 ; //-1;

// untuk citra thinning berwarna hitam buat nilainya sama dengan -1}

if(matriks[i][j] == 1){

matriks [i][j] = -1 ; //-16777216;}

binarized.setRGB(i,j,matriks[i][j]); }}

fungsi_tulisan2.writeImage2(binarized);

uji = ImageIO.read(tulisan.class.getResource("gambarmatriks.bmp"));

matriksbanding = matriksmatriks.matriks_banding1(uji);

for (int i = 0; i < width; i++) {

for (int j = 0; j < height; j++) {

if(matriksbanding[i][j] == -1 ){

matriksbanding[i][j] = 0; //-1;

// untuk citra thinning berwarna hitam buat nilainya sama dengan -1}

if(matriksbanding[i][j] == -16777216){

(12)

}

}

}

// tampilkan gambar matriks

for (int i = 0; i < width; i++) {

for (int j = 0; j < height; j++) {

matriks2[i][j] = (double) matriksbanding[i][j];

// System.out.print(matriks2[i][j]);}

// System.out.println();}

// pengulangan diagonal based

int ZONA_L = 6;

int ZONA_T = 9;

int ZONA_U = 10;

int indeks = 0;

int pola = 0;

//Inisialisasi array input_jst

for(int i=0; i<15; i++) {

for(int j=0; j<70; j++){

input_jst[i][j] = 0;

// System.out.print(input_jst[i][j]); }

// System.out.println(); }

// Zoning

double piksel_zona[][] = new double [ZONA_T][ZONA_L];

double piksel_zona_max=0.0;

// Inisialisasi piksel_ona

for(int i=0; i<ZONA_T; i++){

for(int j=0; j<ZONA_L; j++) {

piksel_zona[i][j] = 0.0; } }

(13)

for(int i=0; i<matriksbanding.length; i+=ZONA_U){

for(int j=0; j<matriksbanding.length; j+=ZONA_U){

//Hitung jumlah piksel hitam setiap zona

for(int k=i; k<i+ZONA_U; k++) {

for(int l=j; l<j+ZONA_U; l++){

if(matriksbanding2[l][k] == 1)

piksel_zona[i/ZONA_U][j/ZONA_U]++; }}

//cout << piksel_zona[i/10][j/10] << " ";

if(piksel_zona[i/ZONA_U][j/ZONA_U] > piksel_zona_max)

piksel_zona_max = piksel_zona[i/ZONA_U][j/ZONA_U]; }

//cout << endl;}

//cout << "max :" << piksel_zona_max << endl;

//cout << endl;

// Hitung nilai setiap zona

for(int i=0; i<ZONA_T; i++){

for(int j=0; j<ZONA_L; j++){

piksel_zona[i][j] /= piksel_zona_max;

//cout << piksel_zona[i][j] << " ";

input_jst[pola][j] = piksel_zona[i][j]; }

//cout << endl; }

for(int n = 0 ; n < 10 ; n++ ){

for(int m = 0 ; m< 1 ; m++){

int jml_piksel_zona=0; //variabel untuk setiap zona

double jml_hor=0.0, jml_ver=0.0; //variabel untuk menyimpan jumlah nilai dari setiap zona secara horizontal dan vertikal

double rata_rata_zona[][]= new double[ZONA_T][ZONA_L];

double rata_rata_hor[] = new double[ZONA_T];

double rata_rata_ver[] = new double[ZONA_L]; //array untuk menyimpan nilai semua rata-rata (zona, horizontal dan vertikal)

//Inisialisasi array

(14)

for(int j=0; j<ZONA_L; j++) {

rata_rata_zona[i][j] = 0; //array rata_rata_zona

rata_rata_ver[j] = 0; //array rata_rata_ver }

// System.out.println();

rata_rata_hor[i] = 0; //array rata_rata_hor

//System.out.print(rata_rata_hor[i]);}

//Pengulangan untuk pembagian zona 10x10 pixel

for(int i=0; i<matriks2.length; i+=10) {

for(int j=0; j<matriks2.length; j+=10){

//Hitung jumlah piksel hitam setiap zona

jml_piksel_zona = 0;

for(int k=i; k<i+10; k++) {

for(int l=j; l<j+10; l++){

if(matriks2[k][l] == 0)

jml_piksel_zona++; } }

//Hitung rata-rata setiap zona => rata_zona = jml_piksel_zona/(panjang + tinggi - 1)

rata_rata_zona[i/10][j/10] = (double)jml_piksel_zona/(ZONA_U*2-1);

//cout << "[" <<i/10<< "][" <<j/10<< "] = " << jml_piksel_zona << " / 19 = " << rata_rata_zona[i/10][j/10]

<< endl;

//Masukkan rata_rata_zona ke array input_jst

input_jst[pola][indeks++] = rata_rata_zona[i/10][j/10];}

//cout << endl;

}

//Hitung rata-rata zona horizontal

for(int i=0; i<ZONA_T; i++){

for(int j=0; j<ZONA_L; j++) {

jml_hor += rata_rata_zona[i][j];}

rata_rata_hor[i] = jml_hor/ZONA_L;

//cout << "Hor[" <<i<< "] = " << jml_hor << " / " << ZONA_L << " = " << rata_rata_hor[i] << endl;

(15)

jml_hor = 0.0;

//Masukkan rata_rata_zona ke array input_jst

input_jst[pola][indeks++] = rata_rata_hor[i];

}

//Hitung rata-rata zona vertikal

for(int i=0; i<ZONA_L; i++){

for(int j=0; j<ZONA_T; j++){

jml_ver += rata_rata_zona[j][i]; }

rata_rata_ver[i] = jml_ver/ZONA_T;

//cout << "Ver[" <<i<< "] = " << jml_ver << " / " << ZONA_T << " = " << rata_rata_ver[i] << endl;

// System.out.println(rata_rata_ver[i]);

jml_ver = 0.0;

// Masukkan rata_rata_zona ke array input_jst

input_jst[pola][indeks++] = rata_rata_ver[i];}

indeks = 0; //Reset indeks menjadi 0 untuk image selanjutnya

pola += 1; //Lanjut ke pola selanjutnya}}

//System.out.println("ini adalah pola:" + pola);}

// akhir dari if pertama

double targetY[][] =

{{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0},

{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0},

{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0},

{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0},

{0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0},

{0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0},

{0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},

{0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},

{0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},

(16)

//mse = matriksmatriks.init(input_jst, targetY);

double matriksbanding3 [][] = new double [width_original][height_original];

String namatulisan ="";

if(true){

uji2 = ImageIO.read(tulisan.class.getResource("jst/ha10.bmp"));

matriksbanding3 = matriksmatriks.matriks_banding2(uji2);

jum2 = matriksmatriks.perbandingan(matriks2 , matriksbanding3, width_original, height_original);

namatulisan = "ha";

if(jum2>0){

uji2 = ImageIO.read(tulisan.class.getResource("jst/ya.bmp"));

= matriksmatriks.matriks_banding2(uji2);

jum2 = matriksmatriks.perbandingan(matriks2 , matriksbanding3, width_original, height_original);

namatulisan = "ya";}

double jum3;

System.out.println();}

mse = matriksmatriks.init(input_jst, targetY);

double jum3;

System.out.println();

if(jum2 == 0.0){

jum3 = jum2 + (mse * 50 + nilai) + 50;

System.out.println("Tingkat Kecocokannya adalah: " + jum3);

System.out.println("mse : " + (100 - jum3)); }

else{

//jum2 = jum2 * 100 ;

System.out.println("Tingkat Kecocokannya adalah: " + jum2);

jum3 = 100- jum2;

System.out.println("mse: " + jum3); }

(17)

System.out.println();

System.out.println("Find Solution : " + namatulisan);}

else{

System.out.println();

System.out.println("not Find Solution");}

// hasil dari nilai zoning dan diagonal based

//System.out.println("Hasil nilai zoning dan diagonal based");

for(int i = 0 ;i<15; i++){

for(int j = 0; j<70; j++){

//System.out.println("ini adalah:");

//System.out.print(input_jst[i][j]);}

//System.out.println();

}

}

Referensi

Dokumen terkait

pengenalan tulisan tangan aksara Batak Toba menggunakan Jaringan Saraf Tiruan. Jaringan saraf manusia terbentuk dari jutaan neuron yang

Salah satu upaya untuk melestarikannya maka pada Tugas Akhir ini dirancang sebuah sistem pengenalan tulisan tangan aksara Batak Toba menggunakan jaringan saraf tiruan

selaku Ketua Program Studi Magister Teknik Informatika Universitas Atma Jaya Yogyakarta dan selaku Dosen Pembimbing II yang telah memberikan ilmu dan

input untuk sistem diperoleh dari tulisan tangan aksara Batak Toba yang. ditulis dikertas dan di-capture menggunakan kamera digital,

Munggaran dkk (2009) melakukan pengenalan tulisan secara online (data diperoleh secara langsung dari alat input berupa keyboard , mouse atau touch pen ) untuk akuisisi

Dilarang untuk me-reproduksi dokumen ini tanpa diketahui oleh Program Studi– Magister Teknik Informatika Pengujian Pelatihan JST (PDHUPL- PELToba- 04).  Pilih

public class ContohJLabel extends JFrame{ public static void main(String[] args) {. ContohJLabel apl = new

Program: //Java program to demonstrate SequenceInputStream import java.io.*; import java.util.*; class SequenceISDemp { public static void mainString args[]throws IOException {