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
dengan respon yang terjadi pada dunia nyata). Untuk mencapai hal tersebut dibutuhkan berbagai optimasi sehingga aplikasi yang dihasilkan terasa nyata. 38 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. Masalah 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
area tangan tersebut, metode apa yang akan digunakan untuk mendeteksi lokasi ujung jari juga merupakan salah satu permasalahan yang harus diselesaikan. 39 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 Solusi 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. antara lain : Metode-metode yang digunakan untuk mengatasi permasalahan tersebut Proses pengolahan dan pengekstraksian informasi akan dibagi ke dalam 2 tahap besar, yaitu pengekstraksian informasi posisi permukaan Model 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
kedalam fungsi-fungsi bahasa pemograman, yang kemudian dapat dengan mudah dipakai oleh mereka yang ingin mengolah citra berdasarkan algoritma tersebut. 41 Pustaka ARToolkit dikembangkan untuk menjalankan proses-proses Augmented Reality. Dalam konteks ini, penulis menggunakannya untuk menampilkan Model-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 mendefinisikannya 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
tersebut akan ditampung ke dalam template sementara untuk tujuan pengolahan kemudiannya. 43 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 Max. 3.3.2 Tahap pre-processing citra Citra Asli RGB to GRAY Ekstrasi Obje k 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
Pada tahap ini, hasil citra segmentasi objek yang bergerak tersebut akan 45 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 HSV 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
menggunakan fitur yang disediakan oleh pustaka OpenCV yaitu fitur cvrunningavg dengan nilai kecepatan update adalah 0,7. 46 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 Model 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 Model AR Gambar 3.6 Tampilan normal. Gambar 3.7 Hasil tampilan model AR
47 Setelah berhasil menampilkan Model AR, masalah selanjutnya adalah bagaimana kita bisa mengetahui posisi Model AR tersebut pada citra. Dalam memecahkan permasalahan ini, mula-mula template yang menyimpan hasil frame tangkapan web-cam dan template hasil menampilkan Model 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 Model AR) dalam citra. Tujuan dilakukannya pencarian tersebut adalah untuk melakukan validasi apakah benda real benar-benar melakukan interaksi dengan Model AR dari atas, dan bukan dari samping atau dari bawah. Metode 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 Model AR. Metode pencari permukaan model dapat dideskripsikan melalui pseudocode sbb. Inisialisasi posisidrum, x, y Set posisidrum = 0, x = 0, y = 0 While x<lebar citra hasil segmentasi Model AR While y<tinggi citra hasil segmentasi Model AR If pixel(x,y) = putih then If y >= 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. Metode 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. Metode 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<tinggi citra hasil segmentasi kulit
50 While x<lebar citra hasil segmentasi kulit If pixel(y,x) = putih then Set FingerX = x Set FingerY = y End If Set x += 1 End While Set y += 1 End While 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 b c d a JUDUL-1 200px JUDUL-2 220px START 220px INSTRUCTIONS 20 px 40 px 40 px 40 px 600 px Keterangan : 1. a dan b merupakan La bel judul dari Main Menu. 2. c, d, e, dan f merupakan Button yang ketika diklik akan menjalankan tugas tertentu. 3. Button S TART akan memulai aplikasi. 4. Button INS TRUCTIONS akan memasuki Instruction Menu. 5. Button SETTING akan memasuki Setting Menu. 6. Button EXIT akan keluar dari aplikasi. 20px e SETTING 40 px 220px f EXIT 40 px 220px
53 Setting Menu 400 px a SETTING 220 px b Choice Sound : 200 px d Choice Model : 200 px e f 40 px 25 px 25 px 300 px Back to Main Menu 150 px c Test 80 px 25 px 25 px 300 px 600 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 yang telah dipilih (b). 4. e merupakan Picture Box yang berupa contoh gambar Model AR yang dipilih pada (d). 5. f merupakan Button yang berfungsi untuk menyimpan output suara dan Model AR yang terpilih, kemudian kembali ke Main Menu.
54 Intructions Menu 400 px Keterangan : a c INSTRUCTIONS b Previous 220 px d 25 px 50 px 40 px f 40 px 380 px Current Page Back to Main Menu 150 px e 25 px Next 50 px 25 px 400 px 25 px 600 px 1. a merupakan La bel judul dari Instructions Menu. 2. b merupakan Picture Box yang menampilkan image instruksi menggunakan aplikasi AR Drum. 3. c merupakan Button untuk menampilkan gambar instruksi sebelumnya. 4. d merupakan La bel yang menunjukkan Current Image Intruksi 5. e merupakan Button untuk menampilkan Image instruksi berikutnya. 6. f merupakan Button untuk kembali ke Main Menu.