
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
- Yaitu menghitung nilai matrix yang lebih dari 0, maka hasil diatas adalah 26 unit
- 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
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

Terlihat bahwa
Kesimpulan

#############################
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
|
Lingkaran
> elipse > enam > kotak > lima > kotak_panjang à R1
Lingkaran > elipse > enam > kotak > lima >
kotak_panjang à R2
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
No comments:
Post a Comment