• 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

Sehubungan dengan selesainya pelaksanaan Evaluasi Administrasi, Teknis, Harga dan Kualifikasi untuk Pekerjaan Rehab Berat Madrasah Aliyah Swasta (MAS) Darul Ulum 3

[r]

Sehubungan dengan selesainya pelaksanaan Evaluasi Administrasi, Teknis, Harga dan Kualifikasi untuk Pekerjaan Pembangunan Pagar Depan Kantor Kementerian Agama Kabupaten

[r]

Panitia Pelelangan Umum pada DITJENBIMAS Katolik Kementerian Agama RI akan melaksanakan Pelelangan Umum dengan Pascakualifikasi untuk pekerjaan pengadaan barang sebagai berikut

Menurut PIC ESAP, seiring berjalannya waktu pada program ESAP, timbul berbagai permasalahan seperti peningkatan kemampuan dari para peserta berkemampuan lebih tinggi dan

mengalami kerusakan atau mempunyai perubahan-peruabahan kimiawi sehingga tidak dapat dipergunakan, maka kerugian perusahaan akan menjadi semakin besar dengan semakin besarnya

Berdasarkan hasil penelitian diketahui bahwa kendala utama dalam penerapan manajemen material di Kabupaten Sumba Tengah adalah letak geografis yang mengharuskan