BINARISASI DAN METODE OTSU

1. Binarisasi

Citra biner adalah citra yang memiliki dua nilai tingkat keabuan yaitu hitam dan putih. Secara umum proses binersisasi citra gray scale untuk menghasilkan citra biner adalah sebagai berikut.



dengan g(x,y) adalah citra biner dari citra gray scale f(x,y) dan T menyatakan nilai ambang.
Nilai T dapat ditentukan dengan salah satu dari 3 cara berikut.

1. Nilai Ambang Global (Global Threshold)
T = T{f(x,y)}
dengan T tergantung pada nilai gray level dari pixel pada posisi x,y.
2. Nilai Ambang Lokal (Local Threshold)
T = T{A(x,y), f(x,y)}
dengan T tergantung pada properti pixel tetangga. A(x,y) menyatakan nilai pixel tetangga.
3. Nilai Ambang dinamis (Dynamic Threshold)
T = T{x,y, A(x,y), f(x,y)}
dengan T tergantung pada koordinat-koordinat pixel.

2. METODE OTSU

Tujuan dari metode otsu adalah membagi histogram citra gray level kedalam dua daerah yangberbeda secara otomatis tanpa membutuhkanbantuan user untuk memasukkan nilai ambangPendekatan yang dilakukan oleh metode otsuadalah dengan melakukan analisis diskriminan yaitumenentukan suatu variabel yang dapat membedakanantara dua atau lebih kelompok yang muncul secaraalami. Analisis Diskriminan akan memaksimumkanvariable tersebut agar dapat membagi objeklatardepan (foreground) dan latarbelakang(background).Formulasi dari metode otsu adalah sebagai berikut.Nilai Ambang yang akan dicari dari suatu citra graylevel dinyatakan dengan k. Nilai k berkisar antara 1sampai dengan L, dengan nilai L = 255.Probabilitas setiap pixel pada level ke i dapat dinyatakan:

Pi=ni/N (2)
dengan :
ni menyatakan jumlah pixel pada level ke iN menyatakan total jumlah pixel pada citra.Nilai Zeroth cumulative moment, First cumulativemoment, dan total nilai mean berturut-turut dapat dinyatakan dengan rumus berikut:

Nilai ambang k dapat ditentukan dengan memaksimumkan persamaan :

Aloritma Binerisasi

Berikut ini disajikan algoritma otsu dengan
menggunakan kode C++.
tMean = 0;
variance = maxVariance = 0;
firstCM = zerothCM = 0;
for (i = 0; i < h; i++)
for (j = 0; j < w; j++) {
n = Image[j][i] ;
histogram[n]++;
}
for (k = 0; k < level; k++)
tMean += k * histogram[k] / (w * h);
for (k = 0; k < level; k++) {
zerothCM += histogram[k] / (w * h);
firstCM += k * histogram[k] / (w * h);
variance = (tMean * zerothCM – firstCM);
variance *= variance;
variance /= zerothCM * (1 – zerothCM);
if (maxVariance < variance){
maxVariance = variance;
T = k;
}
}

KESIMPULAN
Berdasarkan hasil uji coba, proses binerisasi dengan metode Otsu mampu menghasilkan citra biner yang sangat memuaskan dan sangat membantudalam proses penentuan ciri-ciri geometri tangan.

Ocean Deep

Laut sangat indah
Maksudku.....
Permukaan laut yang berkilau
Diterpa sinar matahari.
Benar-benar tampak indah
Tapi.........
Pemandangan seperti apa yang terdapat di dasar laut??
Mungkin saja
Gelap, dingin dan menakutkan
Bukankah manusia juga seperti itu??
Siapakah yang sanggup....
Membaca isi hati seseorang lewat penampilannya??
Apakah hatinya sama seperti laut
Dalam, gelap dan keruh.

PARSE Dan POHON SINTAKS

Analisis Sintaks (Parser)
Analisis Sintaks bergantung pada bahasa pemrograman masing-masing. Karena masing-masing bahasa pemrograman memiliki bentuk sintaks yang berbeda-beda. Analisis Sintaks memiliki input berupa token yang berasal dari scanner dan source code. Analisis Sintaks (Parser) bertugas mengecek kebenaran sintaks dan menghasilkan & memproses pohon sintaks.
Sintaks adalah aturan-aturan bahasa dalam suatu bahasa pemrograman tertentu. Analisis sintaks adalah penelusuran sebuah kalimat (atau sentensial) sampai pada symbol awal grammar. Analisis sintaks dapat dilakukan melalui derivasi atau parsing. Penelusuran melalui parsing menghasilkan pohon sintaks.


Parser

Sebuah Parser akan membentuk Pohon Sintaks (Parse Tree).
Sebuah tree adalah suatu graph terhubung yang tidak sirkuler dan memiliki satu buah root (akar) dan dari situ memiliki lintasan ke setiap simpul (daun/leaf).
Parse Tree berfungsi untuk menggambarkan bagaimana memperoleh suatu string dengan cara menurunkan simbol-simbol variabel menjadi simbol-simbol terminal, sampai tidak adasimbol yang belum tergantikan.


Tata Bahasa Bebas Konteks
Untuk mengimplementasikan Parser diperlukan TBBK (Context Free Grammar)
TBBK adalah sekumpulan simbol-simbol variabel (non-terminal), yang masing-masing merepresentasikan bahasa. Bahasa yang direpresentasikan dengan simbol-simbol non terminal tersebut diproses secara rekursif dengan suatu aturan-aturan yang disebut aturan produksi.
Tata bahasa bebas konteks (tipe 2) memiliki elemen:
Terminal : simbol dasar yang tidak dapat diturunkan lagi. Terminal disebut juga token.
Non terminal : variabel sintaktik yang masih dapat diturunkan lagi.

TBBK
Contoh TBBK untuk pasangan kurung yang selalu berpasangan:
S => R
R => {}
R => (R)
R => RR


Contoh TBBK untuk palindrom:
S => R
R => {} a b
R => aRa bRb

Contoh TBBK lain
S => AB
A => aA a
B => bB b


Contoh TBBK:
S => aS
S => bT
T => a

Maka misalkan untuk string “aaba”maka TBBK diatas dapat diturunkan menjadi :

S –> aS
S => aaS
S => aabT
S => aaba

Artinya string “aaba”cocok dan diterima oleh TBBK diatas.
Misalkan untuk string “aba”dan terdapat aturan produksi sebagai berikut:
S => aS
S => abT
S-> aba
Pohon Sintaks :

Metode Parsing
Ada 2 metoda parsing : top-down dan bottom-up.
Parsing top-down :
Metode ini menelusuri pohon, dari root menuju ke daun (leaf). Metode ini meliputi:
Backtracking Mode : Metode Brute Force
Non Backtracking Mode : Recursive Descent Parser dan Predictive Parser
Top Down memparsing tree secara pre order.
Contoh :
S => cAd
A => ab a
Untuk inputan “cad”
Pohon Sintaks ?

Parsing bottom-up :
Diberikan kalimat x sebagai input. Parsing dimulai dari kalimat x yang nyata dari pembacaan semua leaf pohon parsing dari kiri ke kanan sampai tiba di simbol awal S (atau tidak sampai di S jika kalimat x memang tidak bisa diturunkan dari S).
Metode ini menelusuri pohon dari daun menuju ke root. Biasanya mengurangi string/daun sampai pada akarnya.
Contoh :
S => aABe
A => Abc b
B => d
Maka untuk string “abbcde”
@ abbcde
@ aAbcde
@ aAde
@ aABe
@ S


Metode Parsing lainnya
Metode Brutal Force
Metode ini akan melakukan substitusi semua simbol non terminal yang ada. Jika terjadi salah parsing (atau tidak cocok), maka dapat dilakukan backtracking.
Contoh:
S => aAd aB
A => b c
B => ccd ddc
Misal ingin memparsing : “accd”.
S => aAd
S => abd : gagal, maka dilakukan backtrack
S => acd : gagal, maka dilakukan backtrack
S => aB
S => accd : berhasil!
Kelemahan Brutal Force :
Mencoba semua aturan produksi sehingga akan menjadi lambat
Sulit melakukan backtracking dan pemulihan kesalahan
Memakan banyak memori karena perlu mencatat lokasi backtrack

TBBK Rekursif Kiri
TBBK yang memiliki simbol non terminal di ruas kanan dari simbol non terminal yang ada di ruas kiri. Simbol non terminal itu terletak di ruas kanan terdepan. TBBK ini juga tidak memiliki kemungkinan aturan produksi lain yang berupa simbol terminal.
Contoh :
S => Sd
A => Aad

Menyebabkan pohon tumbuh ke kiri
Contoh Pohon
S => aAc
A => Ab {}


TBBK Rekursif Kanan
TBBK Rekursif Kanan: TBBK yang memiliki simbol non terminal di ruas kanan dari simbol non terminal yang ada di ruas kiri. Simbol non terminal itu terletak di ruas kanan terbelakang. TBBK ini juga tidak memiliki kemungkinan aturan produksi lain yang berupa simbol terminal.
Contoh:
S => dS
B => adB
Membuat pohon sintaks melebar ke kanan.