BAB 3 ANALISIS DAN PERANCANGAN
3.1 Analisis 3.1.1 Permasalahan Pemanfaatan Augmented
Reality pada umumnya berfokus
pada
kemampuan visualnya, yaitu berupa bentuk tiga dimensi, lingkungan tiga dimensi, animasi, maupun video. Augmented Reality merupakan suatu jawaban akan pemikiran manusia dahulu yang mana membayangkan manusia masuk kedalam dunia buatan (virtual). Dalam penerapannya untuk dapat berinteraksi dengan objek virtual muncullah berbagai hambatan dan permasalahan yang harus diselesaikan. Augmented Reality sendiri masih berkembang sehingga belum tersedia algoritma terbaik yang harus diterapkan pada masalah-masalah yang ditemui. Hambatan utama yang muncul adalah penalaran komputer secara dua dimensi maupun tiga dimensi terhadap lingkungan dan objek yang sesuai dengan pola pandang manusia, namun dalam penyelesaian masalahanya berbagai jenis metode memiliki berbagai penyelesaian masing-masing. Telah banyak metode yang diteliti untuk menyelesaikan masalah-masalah ini namun setiap metode memiliki kekurangan dan kelebihan masing-masing dalam penyelesaiannya. Dalam merancang aplikasi berbasis kecerdasan buatan dibutuhkan aplikasi yang memiliki respon yang cepat, nyata (real-time), dan natural (sesuai 37
38 dengan respon yang terjadi pada dunia nyata). Untuk mencapai hal tersebut dibutuhkan berbagai optimasi sehingga aplikasi yang dihasilkan terasa nyata. Beberapa masalah yang ditemukan dalam pengimplementasian aplikasi Augmented Reality berbasis Computer Vision adalah occlusion-problem, object tracking secara real-time, ekstraksi informasi yang akurat, dan lainnya. Occlusion-problem dapat didefinisikan sebagai masalah disaat objek nyata berada sejajar dalam tangkapan kamera/web-cam dengan model AR dimana komputer tidak dapat menafsirkan posisi model AR apakah berada pada posisi dibelakang objek real atau didepannya. M asalah dimana daya input berupa citra 2 dimensi namun nyatanya terjadi interaksi 3 dimensi. Secara teknis masalah ini dapat dijelaskan dengan ilustrasi, pada saat dilakukan proses Augmented Reality aplikasi akan mendeteksi dan membaca marker sebagai lokasi awal model. Selanjutnya aplikasi akan mencocokan marker dan menampilkan model tiga demensi pada lokasi tersebut dengan panjang, lebar, dan tinggi yang telah ditentukan. Dalam konteks aplikasi ini occlusion problem yang dihadapi penulis berpengaruh pada pemahaman komputer akan ruang dalam proses interaksi objek nyata dengan permukaan model. Hand-tracking dan fingertip-tracking merupakan komponen penting dalam aplikasi berbasis AI-AR yang akan dikembangkan ini. Penentuan area yang perlu diekstraksi sebagai objek yang sedang bergerak dalam citra, serta metode yang digunakan untuk menentukan area mana dari hasil ekstraksi tersebut merupakan area tangan. Kemudian pada akhirnya dari hasil penentuan
39 area tangan tersebut, metode apa yang akan digunakan untuk mendeteksi lokasi ujung jari juga merupakan salah satu permasalahan yang harus diselesaikan. Pada akhirnya, untuk dapat menciptakan interaksi yang real-time diharuskan melakukan peringkasan metode yang telah dikumpulkan sehingga tidak memerlukan memory yang sangat berat dalam memrosesnya. Semakin ringan beban memory yang dibutuhkan, maka semakin ringanlah beban pada proses lain yang berjalan. 3.1.2 S olusi Setiap permasalahan memegang peranan nilai dalam menentukan optimitas aplikasi Air Drum berbasis Augmented Reality ini. Akan tetapi permasalahan ini memiliki poin pembahasan yang berbeda, maka untuk mengatasi permasalahan tersebut digunakan beberapa metode yang terpisah. M etode-metode yang digunakan untuk mengatasi permasalahan tersebut antara lain : •
Proses pengolahan dan pengekstraksian informasi akan dibagi ke dalam 2 tahap besar, yaitu pengekstraksian informasi posisi permukaan M odel AR dan pengekstraksian informasi posisi ujung jari.
•
Citra yang ditangkap oleh kamera mula-mula akan ditampung dalam beberapa template sementara untuk diproses, penggunaan metode ini bertujuan untuk memudahkan perancangan aplikasi dan menjaga efektivitas proses pengolahan.
40 •
Untuk menjaga keakurasi dan mempercepat waktu pendeteksian pengerakan tangan, dilakukan proses ekstraksi berupa pencarian benda yang bergerak dengan membandingkannya dengan citra latar belakang yang telah diolah dari setiap frame yang ditangkap oleh kamera secara real-time. Kemudian dari hasil ekstraksi objek yang bergerak tersebut, dilakukan segmentasi warna kulit dengan menggunakan model warna HSV untuk mencari area tangan yang sedang bergerak.
•
Untuk semakin mengurangi tingkat kesalahan pencarian area tangan digunakan metode Trial and Error untuk mendapat range nilai Hue dan Saturation.
•
Untuk menjaga efisiensi penggunaan memory pada perangkat keras, sehingga permasalahan seperti buffer flow maka setelah proses-proses pengolahan informasi selesai dieksekusi, template sementara tersebut akan dihapus.
3.2 Gambaran singkat aplikasi Aplikasi Air Drum berbasis Augmented Reality ini dikembangkan menggunakan bahasa pemograman Visual C++ 2008 dengan tambahan pustaka berupa OpenCV v2.3.1 dan ARToolkit dan menggunakan web-cam sebagai sarana untuk mendapatkan input berupa citra. Pustaka OpenCV sendiri merupakan suatu pustaka yang dikembangkan khusus untuk menerapkan algoritma pengolahan citra yang terkenal didunia
41 kedalam fungsi-fungsi bahasa pemograman, yang kemudian dapat dengan mudah dipakai oleh mereka yang ingin mengolah citra berdasarkan algoritma tersebut. Pustaka ARToolkit dikembangkan untuk menjalankan proses-proses Augmented Reality. Dalam konteks ini, penulis menggunakannya untuk menampilkan M odel-AR, sekaligus dalam pendeteksian pola marker. Untuk menilai berbagai hipotesa yang telah dinyatakan, beberapa proyek tingkat tinggi telah dibuat, dipublikasi, dan terkenal dalam lingkungan Augmented-Reality, dimana dapat disimpulkan dengan penggunaan ARToolkit [Kato, Bilinghurst,2002]. Pada area grafik dan berdasarkan fitur integrasi framework,
komponen
virtual
akan
menggunakan
OpenGL,
dengan
menggabungkan bahasa pemrograman C[Shreiner, Woo, Neider, Davis, 2005]. Aplikasi ini dirancang menampilkan objek virtual yang dapat berinteraksi dengan manusia. Untuk posisi awal objek, kami mendefinis ikannya melalui posisi marker yang terdeteksi pada layar, dimana hasil interaksi terhadap permukaan objek akan membuat aplikasi mengeluarkan output berupa suara yang besar kecilnya disesuaikan dengan besarnya kecepatan ujung jari saat memasuki bagian permukaan objek.
3.3 Perancangan Aplikasi Tahap perancangan aplikasi dapat digambarkan dengan Work Flow sbb.
42
Gambar 3.1 Work Flow Aplikasi
3.3.1 Proses inisialisasi
Gambar 3.2 Flow proses inisialisasi
Pada proses ini mula-mula aplikasi akan melakukan pengecekan pada input-device, yaitu web-cam. Setelah berhasil mendeteksi adanya web-cam, kemudian aplikasi melakukan pengecekan apakah frame pertama yang ditangkap web-cam berhasil, bila berhasil maka hasil tangkapan frame dari web-cam
43 tersebut akan ditampung ke dalam template sementara untuk tujuan pengolahan kemudiannya. Pada tahap selanjutnya aplikasi akan melakukan inisialisasi variabel awal yang akan digunakan aplikasi. Variabel tersebut meliputi penampung sementara citra, status pengecekan, variabel informasi dan variabel perhitungan yang akan digunakan. Tahap selanjutnya aplikasi melakukan inisialisasi pola marker yang nantinya akan digunakan sebagai matching pattern dan penentuan posisi awal model AR yang akan ditampilkan. Besarnya marker yang dideteksi akan mempengaruhi besarnya model virtual yang akan dihasilkan . Setelah dilakukan inisialisasi pola marker, aplikasi akan menginisialisasi model untuk proses Augmented Reality yang menggunakan file berekstensi .WRL. Dimana file tersebut dalam perancangannya dibuat dengan menggunakan bantuan AutoDesk 3Ds M ax. 3.3.2 Tahap pre-processing citra
Citra Asli
RGB to GRAY
Ekstrasi Objek bergerak (dalam GRAY)
Hasil akhir ekstrasi objek bergerak(dalam RGB)
RGB to HSV
Skin Segmentation
Update background
Gambar 3.3 Flow tahap pre-processing citra
Pada saat yang bersamaan, frame pertama yang tertangkap oleh web-cam akan ditampung lagi ke dalam template sementara yang satu lagi, yang kemudian
44 akan digunakan sebagai citra background. Namun pada saat menampungnya, frame tersebut mula-mula akan dikonversi terlebih dahulu dari model warna RGB ke dalam model warna GrayScale. Tujuan dilakukannya konversi warna ini adalah untuk mempersingkat waktu ketika diperlukannya pengolahan pixel per pixel terhadap citra. Hasil citra yang ditangkap web-cam mula-mula akan dihilangkan noisenya terlebih dahulu dengan menggunakan algoritma Smoothing Gaussian 5x5. Hasil citra yang telah di smoothing tersebut akan dikonversi ke dalam model warna GrayScale yang kemudian akan dibandingkan dengan citra background untuk mencari perbedaan antara keduanya. Dari hasil ekstraksi tersebutlah akan didapatkan area objek yang sedang bergerak.
Gambar 3.4 Ilustrasi Foreground Extraction
45 Pada tahap ini, hasil citra segmentasi objek yang bergerak tersebut akan dikonversikan ke dalam range warna HSV,
penulis memutuskan untuk
menggunakan warna HSV dikarenakan terdapat banyak diskusi pada forumforum di internet beserta beberapa riset yang pernah dilakukan orang (contohnya (Prashanth Ramani,2008) yang merekomendasikan bahwa HSV lebih bagus dibandingkan RGB dikarenakan HSV lebih konsisten terhadap pencahayaan dan etnis. Tahap selanjutnya, hasil citra H SV tersebut akan dilakukan pengecekan setiap pixelnya berdasarkan range nilai yang telah ditentukan. Apabila nilai warna dalam pixel tersebut memenuhi syarat range nilai yang telah ditentukan, maka pixel tersebut akan dijadikan sebagai bagian dari hasil segmentasi warna kulit(dalam hal ini warna pixel akan dikonversi menjadi putih). Setelah pengecekan kesesuaian range nilai setiap pixel, tahap selanjutnya dilakukan proses dilasi dan erosi. Tujuan dilakukannya dilasi dan erosi adalah untuk menghilangkan noise serta bagian yang tidak diperlukan (dalam hal ini erosi digunakan), serta melakukan pengisian terhadap bagian yang dianggap merupakan bagian dari kulit namun tidak tersegmentasi (dalam hal ini dilasi digunakan). Setelah proses segmentasi warna kulit telah selesai, kemudian frame hasil tangkapan web-cam akan dikonversi dari model warna RGB ke model warna GrayScale dan kemudian hasil konversi tersebut akan di-update terhadap template citra latar belakang. Proses update citra latar belakang sendiri penulis
46 menggunakan fitur yang disediakan oleh pustaka OpenCV yaitu fitur cvRunningAvg dengan nilai kecepatan update adalah 0,7. 3.3.3 Tahap pemrosesan Augmented Reality
Gambar 3.5 Flow tahap augmented-reality
Pada tahap ini mula-mula aplikasi akan melakukan pencarian bagian mana dari citra yang bersesuaian dengan pola marker yang telah diinisialisasi sebelumnya (tampilan normal pada Gambar 3.6). Setelah pola marker telah berhasil terdeteksi, selanjutnya aplikasi akan menampilkan M odel AR berdasarkan posisi pola marker yang terdeteksi ke dalam template yang satu lagi (diilustrasikan pada Gambar 3.7). Penulis menggunakan fitur yang telah tersedia pada pustaka ARToolkit dalam penyelesaian masalah ini. Fitur tersebut adalah ARDetectMarker untuk mencari pola marker yang bersesuaian, dan VrmlDraw untuk menampilkan M odel AR
. Gambar 3.6 Tampilan normal
Gambar 3.7 Hasil tampilan model AR
47 Setelah berhasil menampilkan M odel AR, masalah selanjutnya adalah bagaimana kita bisa mengetahui posisi M odel AR tersebut pada citra. Dalam memecahkan permasalahan ini, mula-mula template yang menyimpan hasil frame tangkapan web-cam dan template hasil menampilkan M odel AR dikonversi terlebih dahulu ke dalam model warna GrayScale (diilustrasikan pada Gambar 3.8 dan Gambar 3.9). Kemudian dari hasil konversi tersebut, kedua hasil citra grayscale tersebut akan disegmentasi dengan mencari pixel yang berbeda warna antara satu dan lainnya. Apabila terdapat pixel yang berbeda, maka pixel itu akan dianggap sebagai bagian dari hasil segmentasi (proses ini diilustrasikan pada Gambar 3.10).
Gambar 3.8 Tampilan normal Grayscale
Gambar 3.9 Tampilan model AR Grayscale
48 Gambar 3.10 Tampilan hasil segmentasi Model AR
Pada tahap selanjutnya dilakukan pencari posisi Y(tinggi permukaan M odel AR) dalam citra. Tujuan dilakukannya pencarian tersebut adalah untuk melakukan validasi apakah benda real benar-benar melakukan interaksi dengan M odel AR dari atas, dan bukan dari samping atau dari bawah. M etode pencarian ini dilakukan dengan pencarian dari setiap kolom pixel hasil citra segmentasi, dari bagian paling atas sampai ke bawah. Apabila dalam proses pencarian tersebut terdapat pixel yang tidak berwarna hitam, maka posisi tersebut akan disimpan sebagai salah satu titik permukaan yang akan dicari. Kemudian dari semua hasil pencarian tersebut, posisi Y yang paling rendah akan digunakan sebagi posisi permukaan M odel AR. M etode pencari permukaan model dapat dideskripsikan melalui pseudocode sbb. Inisialisasi posisiDrum, x, y Set posisiDrum = 0, x = 0, y = 0 While x
= posisiDrum then Set posisiDrum = y End If Set y = 1000 End If Set y += 1 End While
49 Set x += 1 End While
Gambar 3.11 Hasil Ilustrasi proses pencarian permukaan
3.3.4 Tahap object tracking Tahap pendeteksian ujung jari dilakukan pada penampung citra yang sudah melalui tahap segmentasi warna kulit. M etode yang digunakan untuk mengikuti pergerakannya dilakukan berdasarkan proses skin segmentation dan dengan menggunakan algoritma terjauh dari object tangan yang dikenali. Tahap dalam mengikuti jari per frame memperbolehkan kita mendapatkan informasi yaitu posisi finger sebelumnya dan pencarian posisi finger yang terkini. Dari informasi yang didapat itu yaitu posisi sebelumnya dan posisi finger terkini maka akan dapat diperhitungkan kecepatan yang akan berpengaruh pada besar kecilnya suara yang akan dihasilkan. M etode pencarian posisi ujung jari dapat dideskripsikan melalui pseudocode sbb. Inisialisasi FingerX, FingerY, x, y Set FingerX=0, FingerY=0, x = 0, y = 0 While y
50 While x
Gambar 3.12 Hasil ilustrasi proses finger-tip tracking
3.3.5 Proses pengolahan informasi dan pengeluaran output Pada tahap ini yang pertama dilakukan adalah mengecek status pukul apakah ujung jari berada pada dalam drum, bila tidak berada didalam maka akan masuk ke-dalam frame selanjutnya dan bila masuk maka aplikasi akan mengecek posisi finger sebelumnya.
51 Pada tahap ini posisi finger sebelumnya akan dibandingkan dengan tinggi permukaan drum dimana bila posisi sebelumnya berada diatas drum (lebih kecil) maka status pukul akan berubah menjadi 1 dan bila tidak berada diatasnya maka akan bernilai 0 dan melanjutkan ke frame selanjutnya. Pada tahap ini aplikasi akan mengeluarkan output suara yang didasarkan juga pada kecepatan pergerakan ujung jari tangan, dimana kecepatan ujung jari tersebut didapatkan dengan menggunakan rumus :
V = S/T Dengan : V = kecepatan ujung jari yang ingin dicari. S=
Jarak pergerakan ujung jari antara posisi ujung jari sekarang dengan
posisi ujung jari
frame sebelumnya.
Dalam
pencapaiannya penulis menggunakan Terorema Phytagoras. T = ditentukan secara manual dengan nilai 33, dengan asumsi kemampuan tangkapan web-cam
30 fps, maka hasil
tangkapan frame yang akan diolah adalah 33msec / frame. Kemudian yang dillakukan adalah menentukan kecepatan masksimal rata-rata pergerakan ujung jari yang telah diasumsikan bahwa kecepatan maksimal rata-rata adalah 15. Sehingga kecepatan yang diperoleh akan dibagi dengan 15 dan persentasenya akan dikalikan dengan besarnya suara yang akan dihasilkan. Sistem Operasi Windows yang telah disediakan pada bahasa pemrograman C++.
52 3.4 Perancangan User Interface Perancangan User Interface akan dideskripsikan melalui Storyboard sbb. Main Menu 400 px
1.
a
JUDUL-1
20 px
200px
2.
b
JUDUL-2
40 px
3. 4.
220px
c
START
5.
40 px
220px
6.
d
INSTRUCTIONS
40 px
20px e
SETTING
40 px
220px
f
EXIT 220px
40 px
600 px
Keterangan : a dan b merupakan Label judul dari ”Main Menu”. c, d, e, dan f merupakan Button yang ketika diklik akan menjalankan tugas tertentu. Button S TART akan memulai aplikasi. Button INS TRUCTIONS akan memasuki “Instruction Menu”. Button S ETTING akan memasuki “Setting Menu”. Button EXIT akan keluar dari aplikasi.
53 Setting Menu 400 px
a
SETTING
40 px
220 px b
c
Choice Sound :
25 px
Test
25 px
80 px
200 px d
Choice Model
:
25 px
200 px
e
300 px
300 px
f
Back to M ain M enu 150 px
25 px
Keterangan : 1. a merupakan label judul dari “Setting Menu”. 2. b dan d merupakan listbox dengan masing-masing berfungsi untuk memilih output suara yag dihasilkan dan output Model AR yang dihasilkan. 3. c merupakan Button untuk mencoba suara 600 px yang telah dipilih (b). 4. e merupakan Picture Box yang berupa contoh gambar M odel AR yang dipilih pada (d). 5. f merupakan Button yang berfungsi untuk menyimpan output suara dan M odel AR yang terpilih, kemudian kembali ke “Main Menu”.
54 Intructions Menu 400 px
Keterangan : a
INSTRUCTIONS
1.
40 px
220 px
2. b
400 px
3.
600 px
4. 380 px
c
d
P revious 25 px
e
Current
Next 25 px
25 px
P age 50 px
40 px
5. 50 px
f
Back to M ain M enu 150 px
25 px
6.
a merupakan Label judul dari “Instructions M enu”. b merupakan Picture Box yang menampilkan image instruksi menggunakan aplikasi AR Drum. c merupakan Button untuk menampilkan gambar instruksi sebelumnya. d merupakan Label yang menunjukkan Current Image Intruksi e merupakan Button untuk menampilkan Image instruksi berikutnya. f merupakan Button untuk kembali ke “Main Menu”.