Pembahasan Pertemuan 9
Jika pada pertemuan 8 yang
lalu kita telah mempelajari mengenai deteksi tepi, di mana deteksi tepi ini
masih kita gunakan untuk membuat latihan pembuatan program mengenai kontur pada
pertemuan 9 ini. Jadi, pada pertemuan 9 ini kita akan membahas mengenai kontur
yang akan berguna dalam membuat kode rantai yang akan dibahas pada pertemuan
selanjutnya.
Sebelum kita membahas mengenai
pembuatan program kontur, ada baiknya kita mengetahui apa itu kontur. Kontur adalah rangkaian pixel yang membentuk
batas daerah (region boundary). Kontur dapat berupa kontur terbuka dan kontur
tertutup. Jika di atas kita menemukan kata kode rantai, ada baiknya kita tau
apa itu kode rantai walaupun pembahasan ini harusnya dibahas pada pertemuan
selanjutnya, setidaknya kita tau apa itu kode rantai.
Untuk menghitung kode rantai
kita gunakan model seperti di atas. Untuk arah dapat dilakukan perhitungan
pencarian kode rantai searah jarum jam atau berlawanan jarum jam dengan syarat
mutlak yaitu harus konsisten, jika dari awal berlawanan jarum jam, maka sampai
akhir harus sesuai arah berlawanan jarum jam.
Berikut ini adalah
contoh penggambaran bagaimana kita mendapatkan kode rantai dengan menggunakan
model di atas yang arahnya berlawanan jarum jam jika diketahui suatu citra
seperti ini:
Untuk memulai menghitung kita mulai dari titk pertama yang ditemui dari
paling atas. Lalu lanjut ke sebelahnya. Tetapi untuk proses tersebut, pada saat
bertemu sisi sudut, kemungkinan besar perhitungan kita akan terhentikan dan
tidak bisa dilanjutkan. Untuk itu kita gunakan cara perhitungan rekursif, yaitu
suatu fungsi yang memanggil dirinya sendiri. Dengan mengikuti model yang kita
sepakati diatas, maka proses pengisian kode rantai adalah sebagai berikut:
Berdasarkan model yang kita terapkan, maka yang lebih dulu diisi adalah
angka 6, arah berlawanan jarum jam yang ditunjukkan adanya citra adalah warna
kuning. Jadi angka 6 tersebut yang terlebih dulu ditemui, maka posisi dengan
angka 6 yang diisi terlebih dahulu. Selanjutnya:
Dari gambar di atas, yang selanjutnya diisi adalah posisi bintang.
Karena begitu pusat model ada di posisi angka 6, dengan arah berlawanan jarum
jam yang terlebih dahulu diisi adalah kotak dengan isi bintang dengan nilai
posisi 2. Karena nilai 1 tidak termasuk citra yang ingin dicari kode rantainya.
Proses selanjutnya akan sama perhitungannya dilihat yang mana yang terlebih
dahulu dikunjungi, maka citra itu yang mendapatkan kode rantai selanjutnya.
Pada gambar di atas, kode rantai berikutnya adalah posisi yang diisi
dengan angka 8, karena nilai 6 telah diisi. Selanjutnya:
Dari proses di atas, kita masih mendapatkan angka nilai 8. Untuk tahapan
berikutnya, kita mulai menggunakan fungsi rekursif (stack). Jadi yang diisi
adalah:
Dalam tahap ini ada baiknya untuk bisa menampungnya. Perhitungan di atas
kita gunakan fungsi rekursif. Karena semua citra yang dekat dengan titik pusat
telah diisi dengan angka. Proses akan terus berjalan, seperti berikut:
Dengan kasus seperti di atas, sekarang ini pusat sudah berpindah posisi
lagi karena jika pada posisi sebelumnya telah seperti berikut:
Dari gambar di atas kita lihat bahwa titik pusat kembali ke titik
sebelumnya. Selanjutnya:
Selanjutnya:
Yang diisi terlebih dahulu adalah posisi 4 karena sesuai dengan
metode-metode. Selanjutnya:
Selanjutnya akan diisi dengan angka 1:
Kita sudah berhasil mengisi
semua nilai pada citra, maka kode rantai yang kita dapat adalah:
6 – 2 – 8 – 8 – 6 – 1 – 1 – 6
– 5 – 5 – 4 – 6 – 1
Kode rantai ini lah yang akan
digunakan untuk membandingkan 2 citra atau lebih. Jika kode rantai berbeda
walaupun beda tata letak, maka tetap sama.
Pada pertemuan 9 ini
kita hanya membuat kontur dari citra yang berbentuk bangun datar. Untuk itu, di
bawah ini akan mulai dibahas mengenai Source Codenya:
Source
Code untuk file html:
Proses
Compile Percobaan Pertama:
Tampilan Untuk Percobaan 1:
Compile Untuk Percobaan 2:
Tampilan
Untuk Percobaan 2:
Sekian
pembahasan dari pertemuan 9 ini, pembahasan selanjutnya mengenai kode rantai
akan dijelaskan pada pertemuan 10.