Kamis, 30 Januari 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



#############################
citra truecolor dikonversi ke BW
C:\Documents and Settings\mulkan\My Documents\kotak.jpg
jumlah genap     :  1312
jumlah ganjil    :    0
perimeter        :     1312.0
jumlah area1     :   108241.0
jumlah area2     :   107584.0
Roundness R1     : 0.789793881989887
Roundness R2     : 0.785

Operasi ChainCode selesai dalam : 1.516 detik


#############################
citra truecolor dikonversi ke BW
C:\Documents and Settings\mulkan\My Documents\kotak_panjang.jpg
jumlah genap     :  780
jumlah ganjil    :    0
perimeter        :     780.0
jumlah area1     :   31527.0
jumlah area2     :   31136.0
Roundness R1     : 0.6508532544378698
Roundness R2     : 0.6427813280736359
Operasi ChainCode selesai dalam : 0.187 detik


#############################
citra grayscale dikonversi ke BW
C:\Documents and Settings\mulkan\My Documents\lingkaran.bmp
jumlah genap     :  352
jumlah ganjil    :    248
perimeter        :     702.7249634685277
jumlah area1     :   35525.0
jumlah area2     :   35224.0
Roundness R1     : 0.9035516072937996
Roundness R2     : 0.8958958990940689
Operasi ChainCode selesai dalam : 0.219 detik


#############################
citra truecolor dikonversi ke BW
C:\Documents and Settings\mulkan\My Documents\elipse.jpg
jumlah genap     :  888
jumlah ganjil    :    541
perimeter        :     1653.0895372438445
jumlah area1     :   180577.0
jumlah area2     :   179861.5
Roundness R1     : 0.8299641216085326
Roundness R2     : 0.8266755559051987
Operasi ChainCode selesai dalam : 1.265 detik


#############################
citra truecolor dikonversi ke BW
C:\Documents and Settings\mulkan\My Documents\lima.bmp
jumlah genap     :  688
jumlah ganjil    :    452
perimeter        :     1327.2245301926391
jumlah area1     :   109953.0
jumlah area2     :   109382.0
Roundness R1     : 0.783985306152329
Roundness R2     : 0.7799139701286373
Operasi ChainCode selesai dalam : 1.328 detik


#############################
citra truecolor dikonversi ke BW
C:\Documents and Settings\mulkan\My Documents\enam.bmp
jumlah genap     :  1004
jumlah ganjil    :    500
perimeter        :     1711.1067811865476
jumlah area1     :   188978.0
jumlah area2     :   188225.0
Roundness R1     : 0.8106747811405824
Roundness R2     : 0.8074445738667259
Operasi ChainCode selesai dalam : 1.469 detik



R1
R2
kotak.jpg
0.789793881989887
0.785
kotak_panjang.jpg
0.6508532544378698
0.6427813280736359
lingkaran.bmp
0.9035516072937996
0.8958958990940689
elipse.jpg
0.8299641216085326
0.8266755559051987
lima.bmp
0.783985306152329
0.7799139701286373
enam.bmp
0.8106747811405824
0.8074445738667259

Terlihat bahwa
Lingkaran > elipse > enam > kotak > lima > kotak_panjang à R1
Lingkaran > elipse > enam > kotak > lima > kotak_panjang à R2

Kesimpulan
Bahwa ChainCode - kode rantai bisa digunakan untuk membedakan tingkat kebulatan dengan Roundness akan mendekati 1 
silahkan untuk download demo aplikasi berbasis Java di  
https://www.dropbox.com/s/xfy4uv263ohft7p/Release%20Aplikasi%20ChainCode%20Analyst.zip




Posting Komentar