Friday, January 31, 2014

Teknik Parsing - Token di java



Setiap komputasi membutuhkan data sebagai bahan yang akan diolah, banyak sekali bentuk data sebagai misal paling umum yaitu matrix.
Matrix akan terdiri dari 2 komponen utama yaitu baris dan kolom
Pemisah baris biasanya menggunakan \n (newline)  secara umum ada juga bentuk titik koma (;)
Sedangkan pemisah kolom secara umum menggunakan blank space, tab, koma, tanda -
Untuk menjembatani hal tersebut, penulis menggunakan Parser (dibuat sendiri) yaitu
Pemisah baris hanya boleh menggunakan \n (newline)
Pemisah kolom mengunakan blank space, tab, koma, titik koma
silahkan untuk download demo aplikasi berbasis Java di  
https://www.dropbox.com/s/bwx4n6n9wdv2j2i/Release%20Aplikasi%20Parsing%20Data%20dengan%20Java.zip

Sebagai misal berikut sebagai pemisah kolom ada banyak sekali penggunaaan nya yaitu blank space, tab, koma, titik koma
1        2                 3
4 5 6
7,8,9
7 8,-0
10; 11 12;
menghasilkan

Thursday, January 30, 2014

chain code shape analyst kode rantai

Kode rantai (chain code) merupakan salah satu bentuk untuk menggambarkan suatu struktur morfologi dari objek tersebut. Banyak aplikasi chain code telah digunakan secara luas untuk melakukan segmentasi berdasarkan bentuk citra salah satu satunya untuk menghitung roundness (tingkat bulat). Chain code bekerja dalam format biner atau black white. Chain code menggunakan 7 arah untuk menghitung perimeter dan area.
Berikut paramater yang digunakan yaitu
Area dan perimeter (keliling).

silahkan untuk download demo aplikasi berbasis Java di  
https://www.dropbox.com/s/xfy4uv263ohft7p/Release%20Aplikasi%20ChainCode%20Analyst.zip




Misalkan kita mempunyai contoh kasus berikut
Perimeter
Bila kita plotkan kedalam format biner maka
0        0        0        0        0        0        0        0        0       
0        0        1        1        1        0        0        0        0       
0        0        1        1        1        1        0        0        0       
0        1        1        1        1        1        1        0        0       
0        1        1        1        1        1        1        1        0       
0        0        1        1        1        1        1        1        0       
0        0        0        0        0        0        0        0        0       

Kemudian kita lakukan trace boundary akan menghasilkan seperti berikut
0        0        0        0        0        0        0        0        0       
0        0        12      13      14      0        0        0        0       
0        0        21      1        1        24      0        0        0       
0        29      1        1        1        1        34      0        0       
0        38      1        1        1        1        1        44      0       
0        0        48      49      50      51      52      53      0       
0        0        0        0        0        0        0        0        0
Terlihat bahwa nilai matrix > 1 merupakan boundary atau perimeter nya. Maka langkah selanjutnya melakukan penentuan arah  yaitu
arah 0 untuk 12 ke 13
arah 0 untuk 13 ke 14
arah 7 untuk 14 ke 24
arah 7 untuk 24 ke 34
arah 7 untuk 34 ke 44
arah 6 untuk 44 ke 53
arah 4 untuk 53 ke 52
arah 4 untuk 52 ke 51
arah 4 untuk 51 ke 50
arah 4 untuk 50 ke 49
arah 4 untuk 49 ke 48
arah 3 untuk 48 ke 38
arah 2 untuk 38 ke 29
arah 1 untuk 29 ke 21
arah 2 untuk 21 ke 12
masing-masing arah akan akan dihitung jumlah arah ganjil dan genapnya yaitu
jumlah arah genap =10
jumlah arah ganjil = 5

rumus perimeter (P) adalah
Sehingga P adalah




 Area
Perhitungan  area ada 2 metode yang digunakan


  1.   Yaitu menghitung nilai matrix yang lebih dari 0, maka hasil diatas adalah 26 unit
  2.    Atau menggunakan aturan chain code  berikut


Kode
Area
0
Y
1
Y+0.5
2
0
3
-(Y+0.5)
4
-(Y)
5
-(Y-0.5)
6
0
7
Y-0.5
Sehingga didapatkan
Arah
boundary
Posisi Y
 area
0
12
 6
 6
0
13
 6
 6
7
 14
 6
 5.5
7
 24
 5
 4.5
7
 34
 4
 3.5
6
 44
 3
 0
4
 53
 2
 -2
4
 52
 2
 -2
4
 51
 2
 -2
4
 50
 2
 -2
4
 49
 2
 -2
3
 48
 2
 -2.5
2
 38
 3
 0
1
 29
 4
 4.5
2
 21
 5
 0
Total
17.5

Roundness
Roundness adalah tingkat kebulatan yaitu dirumuskan seperti berikut

Secara teori untuk nilai R dari 0 sampai maksimal 1, jika 1 maka termasuk bulat/lingkaran penuh
Misalkan untuk nilai diatas akan didapatkan
R1 = 4*pi*26/17.0711^2 = 1.120573
R2 = 4*pi*17.5/17.0711^2 = 0.754232
Seharus nya rumus R2 yang valid digunakan, akan tetapi kita akan coba untuk menghitung dari masing-masing citra berikut

Wednesday, January 22, 2014

Skeletonisasi metode zhang dan suen - Java


Skeletonisasi adalah langkah awal dalam teknologi OCR yaitu optical character recognition, untuk mengenal suatu endpoint ataupun startpoint. Salah satu metode yaitu Hit & Mat akan tetapi Penulis menggunakan metode yang dikenalkan oleh Zhang & Suen.
Penulis menggunakan tools java untuk melakukan implementasi nya. Berikut tampilan aplikasi nya






Saturday, January 18, 2014

Operasi Edge Detection dengan Trace Boundary

Operasi edge detection - deteksi tepi seringkali menggunakan sebuah operator / kernel / filter gradient, akan tetapi pada kali ini, penulis menggunakan teknik tracing boundary, yaitu loop untuk mengecek pixel tetangga sehingga operasi kalkulasi menjadi lebih cepat dengan hasil yang optimal, operasi ini bekerja dengan menggunakan type byte agar mengemat memory

Berikut ilustrasi trace boundary yang digunakan






Sunday, January 5, 2014

Menambahkan package di Octave



Penulis sangat dibuat kesal lantaran harus menggunakan beragam package didalam octave. Kenapa? Misalkan kita akan pkg install ‘nama_package.tar.gz’
Sudah didownload dan diinstal ternyata error sana-sini karena adanya dependensi nya, padahal fitur tersebut dihilangkan pkg install -nodeps ‘nama_package.tar.gz’
Setelah didownload pun, terkadang version nya kurang pas!
Okelah kalau begitu, padahal penulis sudah menggunakan octave 3.2.3 yang sudah include semua package nya di
C:\Program Files\3.2.3_gcc-4.4.0\share\octave\packages

Padahal bawaan Octave 3.6.4 tidak lengkap alias harus donwload satu-persatu
Jika dicek pkg list
Padahal penulis membutuhkan sebuah package yaitu Image untuk melakukan proses pengolahan citra.