• Tidak ada hasil yang ditemukan

Implementasi Hans Tracking Menggunakan Metode Skincolor Extraction Pada Teknologi Augmented Reality

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Hans Tracking Menggunakan Metode Skincolor Extraction Pada Teknologi Augmented Reality"

Copied!
91
0
0

Teks penuh

(1)

1

Teknologi Augmented reality merupakan teknologi yang dapat menggabungkan antara objek buatan komputer dengan lingkungan dunia nyata.

Augmented Reality meningkatkan persepsi user dan interaksinya dengan dunia nyata. Objek virtual menunjukan informasi yang user tidak dapat lihat secara langsung oleh indra penglihatannya. Informasi disampaikan oleh objek virtual untuk membantu user melakukan pekerjaan pada dunia nyata. [1]

Pada awalnya perkembangannya teknologi augmented reality menggunakan marker sebagai pemicunya. Marker akan di tangkap oleh kamera dan dideteksi keberadaannya lalu objek 3D dimunculkan diatas marker tersebut. Namun, terdapat kekurangan pada penggunaan marker salah satunya adalah satu marker hanya berlaku untuk satu objek 3D ini dapat menyulitkan karena jika seseorang hendak mempresentasikan banyak objek 3D maka orang tersebut harus memiliki marker dengan jumlah yang sama dengan objek 3D yang dia punya Selain itu penggunaan marker tidak efektif karena adanya kemungkinan marker hilang pada saat dibutuhkan.

Dengan berkembangnya teknologi augmented reality terciptalah teknologi

markerless augmented reality. Teknologi markerless augmented reality

merupakan teknologi augmented reality yang tidak menggunakan marker sebagai pemicunya melainkan menggunakan objek lain seperti gambar, face tracking dan lainnya. Dengan teknologi adanya markerless augmented reality dapat mengatasi kekurangan yang dimiliki teknologi augmented reality berbasis marker. Salah satu teknologi markerless augmented reality adalah augmented reality dengan mengimplementasikan hand tracking dimana teknologi ini memanfaatkan gerakan tangan sebagai pemicunya.

(2)

dapat memanipulasi objek AR dengan hanya menggunakan tangan yang merupakan bagian tubuhnya dibandingkan dengan penggunaan marker dimana marker tersebut harus dibawa-bawa setiap saat.

Perkembangan hand tracking pada dunia komputer sangatlah berkembanga pesat. Banyak metode dan teknik yang telah dikembangkan untuk melakukan

hand tracking salah satu metode yang dapat diterapkan untuk melakukan proses

hand tracking adalah metode skinn color extraction dan contour extraction.

Metode ini dapat melakukan proses hand tracking dengan tingkat akurasi yang cukup tinggi dan juga dengan spesifikasi kamera yang tidak terlalu tinggi.

1.2 Rumusan Masalah

Berdasarkan latar belakang yang telah diuraikan maka dapat dirumuskan suatu masalah yaitu sebagai berikut :

1) Bagaimana Mengimplementasikan hand tracking dengan metode skin color extraction dan contour extraction pada teknologi augmented reality? 2) Bagaimana performansi dari hand tracking dengan metode skin color

extraction dan contour extraction pada teknologi augmented reality. 1.3 Maksud dan Tujuan

1.3.1 Maksud

Maksud dari dilakukan penelitian ini adalah untuk membangun aplikasi

augmented reality dengan mengimplementasikan metode hand tracking untuk memunculkan suatu objek tiga dimensi.

1.3.2 Tujuan

Tujuan dilakukannya penelitian ini adalah sebagai berikut :

1) Mengimplementasikan hand tracking dengan menggunakan metode skin color extracition dan contour extraction pada teknologi augmented reality.

2) Mengukur performansi hand tracking dengan menggunakan metode skin extraction dan contour extraction pada teknologi augmented reality. 1.4 Batasan Masalah

Adapun ruang lingkup yang akan dibahas sangatlah luas, untuk itu diperlukan batasan masalah sebagai berikut

(3)

2. Input pada sistem merupakan video yang diambil secara real-time

dengan menggunakan web-cam.

3. Camera yang dipakai minimal 5 Mega Pixel

4. Background yang digunakan pada metode background subtraction adalah background statis yang diambil sebelum sistem digunakan. 5. File 3D yang digunakan berformat FBX

1.5 Metodologi Penelitian

Metodologi penelitian yang digunakan untuk penelitian ini adalah metodologi penelitaian developmental (pengembangan). Metodologi penelitian developmental merupakan metodologi penelitian yang didasarkan oleh pengembangan suatu produk ataupun penerepan dari suatu teknolgi. Penelitian pengembangan biasanya menghasilkan sebuah produk ataupun prototype dari hasil pengembangan ataupun penerapannya. Tahapan yang dilakukan dalam penelitian ini adalah sebagai berikut yang dijelaskan pada gambar 1.1 :

Gambar 1.1 Metodologi Penelitian

1. Observasi

Tahapan pertama yang dilakukan pada penelitian ini adalah Observasi dan Studi Pustaka. Observasi dilakukan dengan mengamati aplikasi augmented reality

(4)

Sedangkan Studi pustaka adalah mengumpulkan data dari jurnal, litelatur, paper dan bacaan-bacaan yang ada kaitannya dengan penelitian yang dilakukan sehingga dapat menemukan masalah yang sama dengan masalah yang ditemukan pada observasi.

2. Identifikasi Masalah

Identifikasi masalah adalah merinci masalah sehingga dapat diketahui dengan jelas. Identifikasi maslah ini didapatkan dari pengapatan terhadap aplikasi

augmented reality berbasis marker yang sudah dan studi pustaka pada bacaan bacaan yang berhubungan dengan penelitian sehingga ditemukan masalah yang sama.

3. Analisis Sistem

Tahapan analisis ini dilakukan untuk menganalisis kebutuhan dari sistem yang akan dibangun dimulai dari analisis masalah, analisis kebutuhan data, analysis fungsional, analisis non fungsional, dan juga analisis algoritma yang akan digunakan.

4. Perancangan Sistem

Perancangan sistem adalah merancang sistem yang akan dibangun. Pada penlitian ini perancangan sitem meliputi perancangan antarmuka dan jaringan semantik.

5. Implementasi Sistem

Pada tahap implementasi sistem sistem yang telah dianalsis dan dirancang akan diimplementasikan menjadi aplikasi augmented reality dengan mengimplementasikan metode hand tracking.

6. Pengujian Sistem

Pada tahap pengujian sistem hasil implementasi sistem akan diuji apakah implementasi terhadap perancangan sudah berjalan dengan baik atau belum. 1.6 Sistematika Penulisan

(5)

BAB 1 PENDAHULUAN

Bab ini berisi pendahuluan yang memuat latar belakang, identifikasi masalah, maksud dan tujuan, batasan masalah, metodologi penelitian dan sistematika penulisan dari penelitian yang akan dilakukan

BAB 2 LANDASAN TEORI

Bab ini berisikan landasan-landasan teori yang digunakan dalam pembangunan aplikasi dan teknologi apa saja yang digunakan dalam pembangunan aplikasi diantarnya Citra Digital, augmented reality, DirectX, dan UML.

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

Bab ini berisi analisis kebutuhan dalam membangun aplikasi ini. Dalam analisis system ini digunakan tools untuk memodelkan sistem dengan menggunakan UML versi 2 dengan memakai class diagram, sequence, dan

deployment diagram. Selain itu terdapat juga perancangan antarmuka untuk aplikasi yang akan dibangun sesuai dengan hasil analisis yang telah dibuat.

BAB 4 IMPLEMENTASI DAN PENGUJIAN

Bab ini berisi hasil implementasi dari hasil analisis dan perancangan yang telah dibuat.

BAB 5 KESIMPULAN DAN SARAN

(6)
(7)

7

Augmented reality dapat diartikan sebagai penggabungan antara dunia nyata dan virtual yang maksudnya adalah menambahkan objek virtual yang dibuat oleh komputer terhadap gambar lingkungan yang ada di dunia nyata dengan cara mendeteksi lingkungan atau objek yang dimaksud. Menurut Ronald T Azuma

augmented reality memiliki tiga karakteristik yaitu [1]: 1. Menggabungkan antara dunia nyata dan virtual 2. Interaktif pada waktu nyata

3. Tergolong dalam lingkungan 3-D

Augmented reality dapat diklasifikasikan menjadi dua berdasarkan ada tidaknya pengguaan marker yaitu :

1. Marker Augmented Reality

Sebuah metode yang memanfaatkan marker yang biasanya berupa ilustrasi hitam dan putih berbentuk persegi atau lainnya dengan batas hitam tebal dan latar belakang putih. Melalui posisi yang dihadapkan pada sebuah kamera komputer atau smartphone, maka komputer atau smartphone akan melakukan proses menciptakan dunia virtual 2D atau 3D. Marker Based Tracking ini sudah lama dikembangkan sejak 1980-an dan pada awal 1990-an mulai dikembangkan untuk penggunaan Augmented Reality.

2. Markerless Augmented Reality

(8)

terbesar di dunia Total Immersion.Adapun beberapa teknik yang digunakan dalam Markerless Augmented Reality adalah sebagai berikut :

a. Face Tracking

Dengan menggunakan algoritma yang banyak dikembangkan, komputer dapat mengenali wajah manusia secara umum dengan cara mengenali posisi mata, hidung, dan mulut manusia, kemudian akan mengabaikan objek-objek lain di sekitarnya seperti pohon, rumah, dan benda-benda lainnya.

b. 3D Object Tracking

Berbeda dengan Face Tracking yang hanya mengenali wajah manusia secara umum, teknik 3D Object Tracking dapat mengenali semua bentuk benda yang ada di sekitar, seperti mobil, meja, televisi, dan lain-lain.

c. Motion Tracking

Pada teknik ini komputer dapat menangkap gerakan, Motion Tracking telah mulai digunakan secara ekstensif untuk memproduksi film-film yang mencoba menyimulasikan gerakan. Contohnya pada film Avatar, dimana James Cameron menggunakan teknik ini untuk membuat film tersebut dan menggunakannya secara real-time. [2]

2.1.1 Sejarah Augmented Reality

(9)

Steven Feiner, Blair Maclntyre dan doree Seligmann, memperkenalkan untuk pertama kalinya major paper untuk perkembangan prototype AR. Pad atahun 1999, Hirakazu Kato, mengembangkan Unity di HITLab dan didemonstrasikan di SIGGRAPH, pada tahun 2000, Bruce. H Thomas, mengembangkan ARQuake, sebuah mbile games AR yang ditunjukan di international symposium on wereable computer. Pada tahun 2008, Witiude AR travel Guide , memperkanalkan Android G1 telephone yang berteknologi AR, tahun 2009, Saqoosha memperkenalkan FLUnity yang merupakan perkembangan dari Unity. FLUnity memungkinkan kita memasang teknologi AR di sebuah website, karena output yang dihasilkan FLUnity berbentuk Flash. Ditahun yang sama, Wikitude Drive meluncurkan sistem navigasi berteknologi AR di platform android. Tahun 2010, Acrossair menggunakan teknologi AR pada I-Phone 3GS [3].

2.1.2 Marker

Marker atau fiducial marker merupakan bentuk marker yang sering digunakan dalam teknologi augmented reality. Marker biasanya berbentuk kotak hitam putih dan didalamnya terdapat gambar seusiai yang telah didefinisikan. Fungsi dari marker ini adalah sebagai trigger atau pemicu dari aplikai augmented reality untuk memunculkan objek virtualnya. Contoh dari fiducial marker dapat dilihat pada gambar 2.1. [1]

(10)

2.1.3 Markerless

Markerless sangat berbeda dengan fiduciary marker .Menurut Madden markerless adalah AR yang digunakan untuk melacak objek yang ada di dunia nyata tanpa marker yang spesial. Untuk melakukan pelacakan obyek, sistem AR markerless,bergantung pada natural feature-tracking. AR markerless melakukan pelacakan dengan obyek yang sudah ada sebelumnya yang kemudian dijadikan image target atau gambar yang akan dideteksi untuk menampilkan obyek virtual. Beberapa contoh teknologi markerless pada augmented reality adalah penggunaan face tracking, 3D object tracking , dan hand tracking.

2.1.4 Penerapan Augmented Reality

Bidang-bidang yang pernah menerapkan teknologi AR adalah [1] :

1. Hiburan (entertainment) : Dunia hiburan membutuhkan AR sebagai penunjang efek-efek yang akan dihasilkan oleh hiburan tersebut. Sebagai contoh, ketika sesorang wartawan cuaca memperkirakan ramalan cuaca, dia berdiri di depan layar hijau atau biru, kemudian dengan teknologi AR, layar hijau atau biru tersebut berubah menjadi gambar animasi tentang cuaca tersebut, sehingga seolah- olah wartawan tersebut, masuk ke dalam animasi tersebut.

2. Latihan Militer (Military Training) : Militer telah menerapkan AR pada latihan tempur mereka. Sebagai contoh, militer menggunakan AR untuk membuat sebuah permainan perang, dimana prajurit akan masuk kedalam dunia game tersebut, dan seolah-olah seperti melakukan perang sesungguhnya.

3. Engineering Design : Seorang engineering design membutuhkan AR untuk menampilkan hasil design mereka secara nyata terhadap klien. Dengan AR klien akan tahu, tentang spesifikasi yang lebih detail tentang desain mereka.

(11)

ini kemudian pembedahan direncanakan. Augmented reality dapat diaplikasikan sehingga tim bedah dapat melihat data CT Scan atau MRI pada pasien saat pembedahan berlangsung. Penggunaan lain adalah untuk pencitraan ultrasonik, dimana teknisi ultrasonik dapat mengamati pencitraan fetus yang terletak di abdomen wanita hamil.

5. Manufaktur dan Reparasi : Bidang lain dimana AR dapat diaplikasikan adalah pemasangan, pemeliharaan, dan reparasi mesin-mesin berstruktur kompleks, seperti mesin mobil. Instruksi-instruksi yang dibutuhkan dapat dimengerti dengan lebih mudah dengan AR, yaitu dengan menampilkan gambar-gambar 3D di atas peralatan yang nyata. Gambar-gambar inimenampilkan langkah-langkah yang harus dilakukan untuk menyelesaikannya dan cara melakukannya. Selain itu, gambar-gambar 3D ini juga dapat dianimasikan sehingga instruksi yang diberikan menjadi semakin jelas. Beberapa peneliti dan perusahaan telah membuat beberapa prototipe di bidang ini.Perusahaan pesawat terbang Boeing sedang mengembangkan teknologi AR untuk membantu teknisi dalam membuat kerangka kawat yang membentuk sebagian dari sistem elektronik pesawat terbang.Kini, untuk membantu pembuatannya teknisi masih menggunakan papan-papan besar yang perlu disimpan di beberapa gudang penyimpanan yang terpisah.Menyimpan instruksi-instruksi pembuatan kerangka kawat ini dalam bentuk elektronik dapat menghemat tempat dan biaya secara signifikan.

(12)

menggunakan GPS maka aplikasi pada telepon genggam dapat mengetahui keberadaan penggunanya pada setiap waktu.

7. Otomotif : Penggunaan dalam dunia otomotif sendiri saat ini adalah adanya tampilan 3D sebagai petunjuk jalan (seperti fungsi GPS). Dengan adanya tampilan 3D tersebut, sang pengemudi dapat mengetahui jarak dan rintangan yang ada disekitarnya dengan lebih akurat.

8. Pendidikan : Dunia pendidikan biasanya berkutat dengan buku-buku yang penuh dengan tulisan-tulisan. Penggunaan augmented reality dalam menampilkan pelajaran dapat mempermudah para siswa dalam mempelajari hal-hal yang berkaitan dengan pelajaran tersebut. Untuk contoh, pada pelajaran Sejarah, siswa dapat mengetahui bagaimana terjadinya peristiwa-peristiwa penting di masa lampau.

9. Iklan : Dalam dunia periklanan, hal yang paling dibutuhkan adalah sesuatu yang menarik, baru, dan berbeda daripada iklan produk yang lain. Dengan menggunakan teknologi augmented reality, maka konsumen akan tertarik dengan produk yang ditawarkan. Selain itu, memanfaatkan teknologi ini pun produk yang ditawarkan bisa dilihat konsumen secara nyata karena ditampilkan dalam bentuk 3D.

10.Commercial : Secara komersial, augmented reality telah digunakan sebagai cara untuk menyajikan secara visual isi dari sebuah tender atau proposal bisnis. Sektor konstruksi menggunakan augmented reality untuk meninjau gambar arsitektur dalam lingkungan dunia nyata.

11.Website & Digital Marketing : Dengan waktu berlama-lama rata-rata tujuh menit, keuntungan menggunakan augmented reality pada sebuah situs web sudah jelas. Konversi sales, download, bahkan total kunjungan halaman web meningkat selama waktu berlama-lama meningkat. Mampu secara fisik menunjukkan produk atau layanan anda dengan mudah melaluiinternet secara langsung akan meningkatkan penjualan.

2.2 Hand Tracking

(13)

Biasanya hand tracking diterapkan untuk menambah pengalaman user untuk berinteraksi dengan komputer contohnya adalah penggunaan metode hand tracking untuk control mouse. Dalam perkembangan penelitian tentang hand tracking ada beberapa cara untuk melakukan hand tracking pada komputer diantaranya adalah :

1. Hand Tracking dengan Sarung Tangan

Teknik metode hand tracking ini memanfaatkan penggunaan sarung tangan dalam mendeteksi keberadaan tangan. User akan menggunakan sarung tangan yang telah ditentukan warnanya misalnya warna hijau yang kemudian komputer akan mendeteksi keberadaan dari tangan lewat sarung tangan berwarna tersebut dengan mencari keberadaan warna yang telah ditentukan.

2. Hand Tracking tanpa Sarung Tangan

Pada teknik ini user tidak perlu menggunakan sarung tangan dalam proses pendeteksian tangannya. Pada umumnya teknik hand tracking tanpa sarung tangan ini memanfaatkan rata-rata warna kulit untuk mendeteksi tangan. Komputer akan mencari warna kulit yang telah didefinisikan sebelumnya untuk mencari keberadaan tangan. Kelemahan dari proses ini adalah warna kulit bias berbeda-beda sehingga memungkinkan tangan tidak terdeteksi jika warna kulit berbeda jauh dengan warna yang telah didefinisikan.

3. Hand Tracking dengan Depth Sensor Camera

Depth sendor camera merupakan sebuah perangkat berupa kamera yang dapat menangkap gambar beserta kedalamannya. Contoh dari sensor ini adalah kinect. Dengan menggunakan Depth Sensor Camera proses

(14)

2.3 Computer Vision

Pencocokan, Pendeskripsian, dan rekognisi : Mencocokan gambar anara satu gambar dengan yang lain. Membagi gambar menjadi beberapa bagian, dan membandingkan hasil deskripsi terhadap model yang telah terdefinisi.

Computer Vision adalah transformasi atau perubahan dari data-data yang dapat berupa gambar diam ataupun video kamera menjadi bentuk lain atau suatu representasi baru dan membantu dalam pengambilan keputusan[2]. Semua bentuk transformasi yang dilakukan di arsipkan atau disimpan untuk tujuan tertentu. Input data dapat berasal dari informasi yang berhubungan dengan objek. Pada representasinya baru dimungkinkan berarti merubah warna dari suatu citra menjadi citra yang grayscale atau menghilangkan pergerakan kamera dari suatu citra berurutan.

Manusia seperti halnya mahluk visual yang mudah sekali tertipu dan berfikir jika tugas computer vision itu mudah. Seperti halnya otak manusia membagi sinyal dalam banyak saluran/channel dimana mengalirkan informasi yang berbeda-beda kedalam otak. Otak manusia memiliki attention system mengidetifikasi dengan jalannya sendiri. Setelah diproses akan menghasilkan informasi balik dan akhirnya berhasil mengartikan visual yang dihasilkan oleh input dari otot kontrol sensor dan indra lainnya yang memperbolehkan otak untuk mengasosiasikan secara bersilang segala informasi yang didapat. Proses ini berulang dengan perangkat keras sensor berupa mata yang memiliki mekanisme pengontrol cahya (lightning) melalui iris dan melakukan setting terhadap penerimaan permukaan oleh retina.

(15)

2.3.1 Backround Subtraction

Background Subtraction merupakan operasi yang sangat fundamental dalam image processing. Biasanya dilakukan pembelajaran terhadap suatu background (biasanya dilakukan pada suatu model background. Suatu background model akan di compare atau di bandingkan terhadap citra yang dimiliki, sehingga dapat membedakan mana background dan mana foreground.

Background Subtraction menggunakan dua model dengan tingkat warna atau yang biasa dipakai adalah brightness tinggi dan rendah. Dua model yang memiliki nilai warna tinggi yang biasa disebut dengan model maximum dan yang rendah disebut dengan model minimum. Model maksimum dan minimum digunakan untuk mengeliminasi background, dengan membandingkan setiap nilai pixel yang ada dan menggantinya dengan 0 dan 1 sehingga menghasilkan citra 1 channel dengan citra yang mirip dengan hasil threshold. Jika pixel pada suatu citra berada di antara range maximum dan minimum makan akan diganti dengan nilai 1 sedangkan jika tidak akan diberikan nilai 0.

Namun ada dua cara yang dapat digunakan yaitu dengan menggunakan nilai range warna ataupun dengan menggunakan citra background yang normal (hanya ada background yang nanti dipakai dalam citra). Dengan menggunakan citra background biasanya dengan membandingkan citra background maximum dan minimum (biasanya menggunakan brightness) dan melakukan normalisasi citra sehingga dapat dilakukan pembandingan dengan citra yang ingin dicari objeknya atau citra yang ingin dikenakan segmentasi.

Sedangkan dengan menggunakan warna biasanya menggunakan warna maximum atau minimum dengan format YCrCb ataupun HSV. Penggunaan warna YCrCb atau HSV bertujuan agar lebih mudah dalam membandingkan warna, dengan menggunakan warna 1 channel. Seperti HSV, H pada warna HSV merupakan Hue yang terdiri dari satu nilai dari warna RGB, sehingga memudahkan dalam mendeteksi range warna.

2.3.2 Kontur

(16)

suatu citrayang nantinya dihubungkan dengan garis dari setiap titik atau point yang telah didapat, sehingga menghasilkan kontur dari objek tersebut. Kontur biasa dipakai untuk melihat garis-garis batas dari suatu objek, mirip dengan tepi (edge) hanya saja kontur lebih detil, tegas dan jelas. Misalkan melakukan pencarian kontur terhadap suatu citra untuk melihat apakan ada kontur yang berbentuk seperti sebuah mobil dala suatu citra. Kontur didalam EmguCV

membutuhkan suatu tempat memory khusus untuk menampung sequence yang berisikan titik atau point-point yang ditemukan. Maka di dalam EmguCv dibuat suatu struktur data yang merupakan linkedlist yang sequential tersendiri untuk menampung titik-titik kontur tersebut yang disebut dengan sequence atau disingkat cvSeq (computer vision Sequential).

Dalam pembuatan kontur diperlukan rutin untuk melakukan proses pencarian kontur. Citra yang dipakai adalah citra hasil konversi menjadi grayscale

dan dikenakan threshold sehingga menghasilkan citra bi-level. Dalam gambar 2.2 dapat terlihat dari ilustrai pencarian kontur. Terdapat image/citra/gambar yang memiliki daerah putih dan abu-abu (dengan tingkat ketebalan yang berbeda) dan merupakan background, daerah putih diberi label A sampai E dengan background 26 gelap. Di bagian gambar paling bawah terdapat hasil dari rutin pencarian kontur dan diberi label cX dan hX (X merupakan nilai biner iterator). Untuk label

cX merupakan kontur dari setiap objek yang ada pada gambar sedangkan label hX

merupakan hole atau lubang yang nantinya merupakan bagian yang dilingkari oleh kontur, yang didalam gambar kontur di perlihatkan sebagai garis yang putus-putus.

(17)

Gambar 2.2 Bentuk Tipe Kontur

Gambar 2.3 Contoh Pencarian Kontur

2.3.3 Convexity dan Convexity Defects

(18)

yang ditemukan dengan memanfaatkan ketidak tepatan penggambaran shape yang mengelilingi objek, metode ini bukan hanya dapat mendapatkan karakteristik dari tangan tapi juga posisi tangan.

Convexity Defect berfungsi sebagai suatu metode untuk mendapatkan kontur yang berkarakter kuat dan pasti pada suatu objek misalkan tangan. sedangkan convex hull biasa dipakai untuk mendapatkan kontur besar yang mengelilingi suatu objek.

2.3.4 Maximum Inscribed dan Minimum Enclosing Circle

Maximum Incribed Circle dapat didefinisikan sebagai lingkaran terbesar yang dapat dibentuk dalam suatu bangun datar sedangkan Minimum Enclosing Circle dapat didefinisikan sebagai lingkaran terkecil yang mengelilingi bangun datar. Nilai Maximum Inscribed Circle dapat dicari dengan mencari jarak maksimum dari setiap titik didalam bangun datar terhadap kelilingnya dan jarak terpanjang dari setiap titik tersebut merupakan nilai radius dari maximum inscribed circlenya, Sedangkan nilai minimum enclosing circle dapat dicari dengan mencari nilai terjauh dari titik tengah bangun tersebut dan nilai tersebut merupakan radius dari minimum enclosing circle. Contoh maximum inscribed dan

minimum enclosing circle dapat dilihat pada gambar 2.4.

(19)

2.4 Citra Digital

Citra digital merupakan suatu fungsi intensitas cahaya f(x,y), dimana harga

x dan y merupakan koordinat spasial dan harga fungsi tersebut pada setiap titik

(x,y) merupakan tingkat kecemerlangan citra pada titik tersebut.

Citra digital yang tingginya N, lebarnya M, dan memiliki L derajak keabuan dapat diangkap sebagai fungsi :

{

(1)

Citra ditital yang berukuran N x M lazim dinyatakan dengan matriks berukuran N baris dan M kolom sebagai berikut :

[

] (2)

Masing-masing element pada citra digital (berarti elemen matriks) disebut image elemtn atau piksel. Jadi, citra yang berukuran N x M mempunyai N.M buah piksel.

Proses digitalisai koordinat (x,y) dikenal sebagai pencuplikan citra (image sampling), sedangkat proses digitalisasi derajat keabuan f(x,y) disebut kuantisasi derajat keabuan (gray-level quantization).

Berdasarkan format penyimpanan nilai warnanya, citra terdiri atas empat jenis, yaitu :

1. Citra biner atau monokrom

(20)

2. Citra skala keabuan

Citra skala keabuan mempunyai kemungkinan warna antara hitam (minimal) dan putih (makasimal). Jumlah maksimum warna sesuai dengan bit penyimpanan yang digunakan.

3. Citra warna

Setiap titik (piksel) pada citra warna mewakili warna yang merupkan kombinasi dari tiga warna dasar yaitu merah, hijai dan biru. Setiap warna dasar mempunyai intensitas sendiri dengan nilai maksimum 255 (8 bit). Setiap titik pada citra warna membutuhkan data 3 byte.

4. Citra warna berindeks

Setiap titik (piksel) pada citra warna berindeks mewakili indeks dari suatu tabel warna yang tersedia (biasanya disebut palet warna). Keuntungan pemakaian palet warna adalah kita dapat dengan cepat memanipulasi warna tanpa harus mengubah informasi pada setiap titik dalam citra.Keuntungan lain penyimpanan lebih kecil. [4]

2.4.1 Citra YCrCb

YCrCb adalah keluarga ruang warna yang digunakan sebagai bagian dari pipa warna gambar dalam video dan sistem fotografi digital. Y adalah kompnonen luna dan Cr dan Cb adalah perbedaan merah dan biru perbedaan komponen

kroma. Y’ (dengan prima) dibedakan dari Y yang terang, yang berarti bahwa intensitas cahaya adalah non-linear menggunakan koreksi gamma.

YCrCb bukan merupakan ruang warna mutlak, tetapi merupakan cara pengkodean informasi RGB. Warna yang sebenarnya ditampilkan tergantung pada primary RGB yang sebenarnya digunakan untuk menampilkan sinyal. Oleh Karena itu itu nilai dinyatakan sebagai YCrCb diprediksi hanya jika standar RGB kromatisitas warna primer yang digunakan.

Berikut adalah konversi warna RGB ke dalam YCrCb :

(21)

Dimana { berkaitan dengan kegiatan memanipulasi dan menganalisis gambar atau citra yang dilakukan oleh komputer. Secara garis besar terdiri dari :

1. Digitalisasi dan Kompresi: Mengubah gambar menjadi bentuk diskrit; mengefisienkan pengkodean sehingga dapat menghemat ruang penyimpanan.

2. Pengingkatan, restorasi, dan rekontruksi : Meningkatkan gradasi (rendahnya contrast, blurr, noise) dari gambar; Memperbaiki gambar dari kerusakan.

Pencocokan, Pendeskripsian, dan rekognisi : Mencocokan gambar anara satu gambar dengan yang lain. Membagi gambar menjadi beberapa bagian, dan membandingkan hasil deskripsi terhadap model yang telah terdefinisi. [5]

2.5 Model Kamera dan Transformasi Perspektif

Kamera dapat mengasilkan gambar 2D berasal dari gambar nyata (word coordinat) 3D. kamera mentransformasi media 3D (word plane) menjadi 2D (image palane) [6]. Model kamera salah satunya adalah pinhole camera, gambar yang dihasilkan adalah gambar perspektif yang mana kamera merupakan pusat proyeksi. Semua sinar yang datang akan dikumpulkan menjadi satu pada pusat kamera.

(22)

Pada model pinhole camera sebuah titik yang terletak di dalam ruang nyata 3D diekspresikan sebagai titik [x y z 1]T di sistem koordinat dunia (world coordinat). Titik [x y z 1]T yang direkam dengan kamera akan mengalami transformasi perspektif dari ruang 3D sistem koordinat dunia keruang 2D sistem koordinat kamera (image plane). Titik [u v w]T yang merupakan koordinat 2D pada koordinat kamera dapat diperoleh dengan persamaan koordinat homogeny sebagai berikut : [7]

[ ] [ ] [ ] [ ] (4)

[ ] [ ] (5)

Dimana M = [KR | - KRT]

Matriks K dan [I3 | O3] pada persamaan (4) adalah parameter intrinsic yang mengandung variabel-variabel fisik pada kamera, seperti focus dan principal point. Matriks K adalah matriks kamera kalibrasi yang didefinisikan sebagai berikut :

[ ] (6)

Dimana f adalah panjang focus pada proyeksi kamera, a dan b adalah faktor konversi ukuran citra dari unit fisik (missal : cm atau mm) ke unit pixel pada sumbu x dan y, (u0,v0) adalah principal point pada proyeksi kamera.

Matriks [I3|O3] didefinisikan sebagai : [

]

(23)

elemen translasi dari pusat sistem koordinat dunia terhadap sistem koordinat kamera.

2.6 Kalibrasi Kamera

Proses kalibrasi kamera merupakan proses menentukan parameter-parameter pada kamera baik parameter-parameter intrinsik dan parameter-parameter ekstrinsik. Biasanya proses kalibrasi kamera menggunakan media checkerboard yang diletakan pada sebuah papan. Langkah yang harus dilakukan dalam kalibrasi kamera adalah mengambil beberapa sampel dari chessboard pattern yang kemudan untuk setiap gambar tersebut dilakukan deteksi tepi pada chessboard pattern pada citra tersebut. Dengan mengetahui letak titik pada world coodinat

dan pixel coordinate maka dapat ditemukan matriks yang mengubungkan keduanya. Dari proses kalibrasi kamera maka didapatkan matiks intrinsik dan intrinsik dari kamera. [8]

Gambar 2.6 Chessboard Pattern

2.7 DirectX

DirectX adalah sekumpulan Application Programming Interface (API) yang dirancang untuk membantu pengembang aplikasi untuki menciptakan aplikasi game dan aplikasi multimedia berkinerja tinggi.

Fungsi utama DirectX adalah menyediakan mekanisme standar untuk mengakses berbagai perangkat keras yang berbeda dan mengisolasi aplikasi dari kerumitan implementasi ditingkat hardware.

(24)

1. DirectX Graphics (Direct3D), menangani grafik 3D 2. DirectX Audio, menangani efek suara.

3. DirectShow, menangani multimedia playback.

4. DirectInput, menangani input dari joystick, keyboard dan mouse.

5. DirectPlay, menangani jaringan (untuk game multiplayer). [9] 2.7.1 Sejarah DirectX

Sebelum diluncurkan Windows 95, program game umumnya dirilis untuk sistem operasi DOS dengan bantuan DOS extender sepertdi DOS4GW untuk mengatasi keterbatasan memori yang disediakan DOS.

Keluarnya Windows 95 merupakan tanda dari awal berakhirnya era DOS.

Banyak pengembang game mulai menulis ulang (memporting) game-game mereka agar bias berjalan optimal di Windows 95. Graphic Device Interface

(GDI) Windows tidak didesain untuk game sehingga game-game yang menggunakan GDI untuk menangani grafis game tampil dengan grafis tidak bagus karena GDI sangat lambat.

Microsoft kemudan meluncurkan WinG (DIBSection) untuk mengatasi masalah pembambang game. WinG jauh lebih baik dibandingkan GDI karena lebih cepat, namun problem yang sering dihadapi pengembang game untuk memporting game mereka ke Windwos 95 adalah menampilkan grafis game secara full sreen. Dengan WinG aplikasi game ditampilkan dalam window seperti aplikasi-aplikasi lainnya, sedangkan game umurnya berjalan pada mode full screen.

(25)

Untuk mengatasi hal ini Microsoft merilis DirectX. Awalnya DirectX

dikembangkan oleh RenderMorphics, Microsoft kemudian ukut bergabung mengembangkan DirectX. Versi awal DirectX banyak dikritik oleh pengembang game karena desainnya yang buruk dan tidak terdokumentasi dengan baik.

Mulai versi 3 Microsoft lebih serius mengembangkan DirectX guna mendorong lebih banyak pengembang game untuk membuat game yang berjalan pada sistem operasi Windows. DirectX pun akhirnya dirilis sebagai public domain sehingga DirectX dapat diperoleh dengan gratis.

Langkah Microsoft ini diikuti oleh produsen keras grafik dengan menyertakan dukungan terhadap DirectX. [9]

2.7.2 Arsitektur Direct3D

Direct3D adalah subsistem Windows yang sebanding dengan Graphics Device Interface (GDI). Berbeda dengan GDI, Direct3D hanya menyediakan layer tipis yang membungkus fungsional graphic card, tidak lebih. Anda tidak akan menemukan fungsionalitas untuk menggambar garis, menulis teks atau fungsional pemrograman grafis biasa anda temukan bila mengunakan GDI. Jika membutuhkan fungsionalitas semacam ini, anda harus membuat implementasinya

Dari Gambar 2.7, terlihat bahwa Direct3D berkomunikasi langsung dengan hardware melalui HAL (Hardware Abstraction Layer).

HAL atau Hardware Abstraction Layer adalah software layer tipis yang diimplementasikan oleh vendor hardware graphic card, berfungsi mengabstraksi device driver. HAL bersifat spesifik untuk tiap perangkat keras, tiap vendor yang ingin hardwarenya kompatibel dengan Direct3D harus membuat implementasi HAL.

(26)

Gambar 2.7 Arsitektur Direct3D

2.8 EmguCV

EmguCV merupakan wrapper cross platform untuk OpenCV pada bahasa pemograman .NET. EmguCV memungkinkan pemanggilan fungsi pada OpenCV pada bahasa pemrograman .NET seperti c#, VB, VC++,IronPhython etc. EmguCV dapat di compile dengan Visual Studio, Xamarin Studio dan Unity, EmguCV dapat berjalan pada platform Windows, Linux, Mac OS X, iOS, Android dan windows Phone.

(27)

Gambar 2.8 Arsitektur EmguCV

2.9 Pengujian Whitebox

Pengujian whitebox dilakukan untuk menguji prosedur-prosedur yang ada. Lintasan lojik yang dilalui oleh setiap bagian prosedur diuji dengan memberikan kondisi/loop spesifik. Pengujian whitebox menjamin pengujian terhadap semua lintasan yang tidak bergantungan minimal satu kali, mencoba semua keputusan lojik dari sisi true dan false, eksekusi semua loop dalam batasan kondisi dan batasan operasionalnya dan pengujian validasi data internal. Konsep pengujian basis path sebagai berikut :

(28)

2. Mempergunakan notasi aliran graph (node,link untuk merepresentasikan

sequence, if, while, until dan sebagainya).

3. Konsep kompleksitas cyclomatic antara lain cara perhitungan daerah tertutup pada graph planar dimna dapat menghubungkan batas atas jumlah pengujian yang harus direncanakan dan dieksekusi untuk menjamin pengajuan seluruh statement program.

4. Memunculkan kasus-kasus yang akan diuji dengan membuat daftar lintasan kasus pengujian berdasarkan kompleksitas dan cyclomatic yang didapat.

5. Membuat alat bantu graph matriks yang membantu pengawasan pengujian. 2.10 Pengujian Blackbox

Pengujian yang dilakukan untuk antarmuka perangkat lunak, pengujian ini dilakukan untuk memperlihatkan bahwa fungsi-fungsi bekerja dengan baik dalam arti masukan yang diterima dengan benar dan keluaran yang dihasilkan benar-benar tepat, pengintegrasian dari eksternal data berjalan dengan baik.

Metode pengujian blackbox memfokuskan pada requirement fungsi dari perangkat lunak, pengujian ini merupkan komplenatari dari pengujian whitebox.

Pengujian whitebox dilakukan terlebih dahulu pada proses pengujian, sedangkan pengujian blackbox dilakukan pada tahap akhir dari pengujian perangkat lunak. Proses yang terdapat dalam proses pengujian blackbox antara lain sebagai berikut:

1. Pembagian kelas data untuk pengujian setiap kasus yang muncul pada pengujian whitebox.

2. Analisis batasan nilai yang berlaku untuk setiap data 2.11 Unified Modelling Language (UML)

Pada perkembangan teknik pemorograman berorientasi objek, muncul lah sebuah standarisasi bahasa pemodelan untuk pembangunan perangkan lunak yang dibangun dengan menggukanak teknik pemrograman berorientasi objek, yaitu

(29)

pemodelan dan komunikasi mengenai sistem dengan menggunakan diagram dan teks-teks pendukung.

UML hanya berfungsi melakukan pemodelan bukan metode. Kebanyakan metode terdiri paling sedikit prinsip, bahasa pemodelan dan proses. Bahasa pemodelan (sebagian besar grafik) merupakan notasi dari metode yang digunakan untuk mendesain secara cepat.

Bahasa pemodelan merupakan bagian terpenting dari metode. Ini merupakan bagian kunci tertentu untuk komunikasi. Jika anda ingin berdiskusi tentang desai dengan seseorang, maka anda hanya membutuhkan bahasa pemodelan bukan proses yang digunakan mendapatkan desain. [10]

2.11.1 Use Case Diagram

Menggambarkan sejumlah eksternal aktor dan hubungannya ke use case

yang diberikan sistem seperti pada gambar 2.9.

(30)

2.11.2 Class Diagram

Menggambarkan struktur dan deskripsi class, package, dan objek beserta hubungan satu sama lain seperti pada gambar 2.10.

Gambar 2.10 Class Diagram

2.11.3 Activity Diagram

Menggambarkan rangkaian aliran dari aktivitas, digunakan untuk mendeskripsikan aktivitas yang dibentuk dalam suatu operasi sehingga dapat juga digunakan untuk aktivitas lainnya seperti use case atau interaksi seperti pada gambar 2.12.

2.11.4 Sequence Diagram

(31)
(32)
(33)

33

Permasalahan pada penelitian ini adalah sulitnya mengimplementasikan metode hand tracking untuk membangun aplikasi Augmented Reality untuk memunculkan objek tiga dimensi berupa desain bangunan arsitektur. Hal ini disebabkan karena sulitnya untuk mendeteksi kontur tangan dan juga mendeteksi jari jari tangan dan estimasi dari sudut tangan, selain itu terdapat juga kesulitan dalam hal menambahkan objek tiga dimensi ke frame karena dalam penambahan objek tiga dimensi tersebut dibutuhkan perhitungan agar objek tiga dimensi tersebut terletak tepat di posisi tangan dengan sudut yang sesuai dengan arah tangan.

3.2 Deskripsi Sistem

Sistem yang akan dibangun merupakan sistem augmented reality dengan mengimplementasikan metode hand tracking. Dalam sistem yang dibangun ini terdapat satu user yaitu user yang bertugas memilih file objek 3 dimensi yang akan dimunculkan pada proses berikutnya, selain itu user juga bertugas untuk mengarahkan tangannya untuk di track oleh sistem lalu sistem akan memunculkan objek 3 dimensi sesuai dengan lokasi dan rotasi tangan user. Alur Sistem yang dibangun dapat dilihat pada gambar 3.1.

1. User memilih file input berupa file objek 3 dimensi berformat fbx yang nantinya akan dimunculkan

2. User menekan tombol start

3. User mengarahkan tangannya ke kamera 4. Sistem mendeteksi keberadaan tangan

5. Sistem mengestimasi lokasi dan rotasi dari objek 3D yang akan dimunculkan

6. Sistem memunculkan objek 3 dimensi yang telah dipilih oleh user

(34)

Gambar 3.1 Deskripsi Sistem

Sistem akan memunculkan objek 3D berdasarkan lokasi tangan dan juga rotasinya, gambar 3.2 Berikut merupakan contoh posisi tangan terhadap kamera sehingga objek 3D dapat muncul dengan sudut yang baik.

User Memilih File Objek 3D

User Menekan Tombol Start

User Mengarahkan Tangan ke Kamera

Sistem Mendeteksi Lokasi Tangan

Sistem Mengestimasi Lokasi dan Rotasi

Sistem Memunculkan Objek 3D yang Telah

Dipilih Berdasarkan Lokasi Tangan dan

(35)

Gambar 3.2 Contoh Posisi Tangan Terhadap Kamera

3.3 Analisis Kebutuhan Data

Sistem yang dibangun adalah aplikasi Augmented Reality dengan mengimplementasikan metode Hand Tracking untuk memunculkan objek tiga dimensi berupa desain arsitektur bangunan. Sistem ini adalah sistem yang akan memunculkan objek tiga dimensi jika sistem mendeteksi gerakan tangan manusia pada web-cam, sehingga sistem ini membutuhkan input berupa citra yang diambil secara real-time menggunakan alat input berupa webcam dimana citra yang diambil tersebut merupakan kumpulan matriks yang nantinya akan diolah lebih lanjut dalam sistem untuk proses pendeteksian objek tangan manusia untuk memunculkan objek tiga dimensi. Selain input berupa citra yang diambil dari

(36)

3.4 Analisis Algoritma

Dalam penelitian ini proses-proses yang dilakukan untuk membangun aplikasi Augmented Reality ini dibagi menjadi 3 tahap yang dapat dilihat pada gambar 3.3 berikut :

Gambar 3.3 Proses Algoritma 3.4.1 Tahapan Camera

Tahapan ini adalah tahap dimana proses berhubungan langsung dengan

webcam. Citra yang diambli dari webcam akan diproses sedemikian rupa sehingga menghasilkan citra biner yang smooth. Gambar 3.4 berikut menjelaskan proses proses yang terjadi pada tahapan camera.

(37)

3.4.1.1 Konversi YCrCb

Sebelum citra yang ditangkap diproses pada tahap-tahap berikutnya citra perlu dikonversi kebentuk YCrCb karena pada beberapa tahap berikutnya citra yang akan diproses harus berformat YCrCb. Dalam penelitian ini pengkonversian citra dilakukan dengan menggunakan fungsi Convert pada library EmguCv, berikut merupakan fungsi Convert :

Image<Ycc,byte> Convert<Ycc,byte>();

Fungsi convert akan memberikan nilai balikan berupa matriks citra. Ycc merupakan format tujuan dari konversi citra karena pada penelitian ini konversi dilakukan ke citra YCrCb maka format yang dipilih adalah Ycc sedangkan byte merupakan nilai kedalaman citra dimana nilai byte adalah 0-255.

3.4.1.2 Background Subtraction

Metode background subtractor merupakan metode untuk memisahkan antara foreground dan background sehingga hanya tersisa foregroundnya saja. Langkah ini dimaksudkan agar mempermudah proses pada saat proses skin color extraction apabila terjadi kemiripan antara warna background dan warna kulit. Metode yang digunakan dalam background subtraction ini adalah metode background statis dimana background lingkungan akan diambil terlebih dahulu sebelum sistem dijalankan.

(38)

proses pada setiap channel selesai kemudian channel channel dari hasil tersebut disatukan kembali agar membentuk citra yang baru yaitu citra yang tersisa foregroundnya saja.

Langkah pertama yang dilakukan dalam metode background subtraction ini adalah mencari nilai absolut dari hasil pengurangan antara frame yang sedang berjalan dengan citra background dengan munggunakan fungsi AbsDiff pada library EmguCV, berikut merupakan fungsi AbsDiff :

Image<Ycc,byte> AbsDiff(

Image<Ycc,byte> img2

);

Fungsi AbsDiff akan mengembalikan nilai berupa image pada kasus ini format image adalah YCrCb. Parameter img2 merupakan parameter citra yang menjadi nilai pengurang yang nantinya akan mengurangi nilai dari citra yang dimaksud.

Setelah citra hasil dari pengurangan didapatkan maka citra tersebut menjadi 3 channel yaitu channel Y, Cr dan Cb kemudian setiap channel tersebut di proses dengan menggunakan nilai threshold yang berbeda beda dengan menggunakan fungsi InRange pada library EmguCV, berikut merupakan fungsi dari InRange :

Image<Gray,byte> InRange(

Gray lower,

Gray higher

);

(39)

lower merupakan nilai batas bawah dan nilai parameter higher merupakan nilai batas atas.

Nilai threshold yang dipakai pada masing masing channel pada penelitian ini adalah sebagai berikut :

Min Y = 34 ; Max Y = 255; Min Cr = 10 ; Max Cr = 255; Min Cb = 24 ; Max Cb = 255;

Kemudian setelah ketiga channel tersebut di proses menggunakan nilai threshold setiap channel tersebut kemudan diproses kembali menggunakan fungsi morfologi untuk menghilangkan noise pada hasil filter. Kemudian ketiga channel tersebut disatukan kembali dengan menggunakan operator add untuk dijadikan mask pada citra frame yang sedang berjalan agar dihasilkan citra foreground. Gambar 3.5 berikut merupakan contoh hasil dari proses background subtraction

gambar sebelah kiri adalah citra sebelum proses background subtraction

sedangkan gambar sebelah kanan merupakan hasil dari background subtraction.

Gambar 3.5 Contoh Background Subtraction

3.4.1.3 Skin Color Extraction

Setelah citra foreground dihasilkan maka citra tersebut siap diproses pada tahap selanjutnya yaitu tahap skin color extraction. Pada tahap ini citra akan di seleksi berdasarkan warna kulit untuk menghasilkan citra biner. Citra di filter menggunakan fungsi InRange pada format YCrCb, berdasarkan [11] nilai threshold yang dipakai adalah sebagai berikut :

(40)

Min Cb = 80; Max Cb = 135;

Hasil seleksi dengan fungsi InRange tersebut kemudian dioperasikan dengan operasi morfologi dan image smoothing agar menghasilkan citra biner yang bebas dari noise. Contoh hasil dari operasi skin color extraction dapat dilihat pada gambar 3.6.

Gambar 3.6 Hasil Skin Color Extraction

3.4.1.4 Operasi Morfologi dan Image Smoothing

Operasi ini berfungsi untuk menghaluskan citra biner hasil dari operasi seperti pada tahap operasi skin extraction, background extraction, dan lain lain. Terkadang hasil dari threshold pada beberapa operasi sering mengandung noise berupa bintik bintik putih. Untuk menangani hal tersebut citra dari hasil operasi diioperasikan dengan menggunakan operasi morfologi yaitu operasi erosi (Erode) dan dilasi (Dilate) kemudian diikuti dengan operasi image smoothing yaitu operasi

Gaussian filter. Berikut merupakan fungsi dari Erode, Dilate, dan Gaussian filter

pada library EmguCV:

Image<Gray,byte> Erode(

int iterations

);

Fungsi Erode akan mengembalikan matriks citra berformat gray. Parameter iteration adalah interasi yang dilakukan dalam melakukan fungsi erode.

Image<Gray,byte> Dilate(

int iterations

(41)

Fungsi Dilate akan mengembalikan matriks citra berformat gray. Parameter iterations merupakan iterasi yang dilakukan dalam melakukang fungsi dilate.

public static void cvSmooth(

IntPtr src,

IntPtr dst,

SMOOTH_TYPE type,

int param1,

int param2,

double param3,

double param4

);

Gambar 3.7 merupakan contoh dari operasi morpologi dan image smoothing. Gambar pada bagian kiri adalah citra biner sebelum dilakukan operasi morpologi dan image smoothing dan gambar citra biner kanan merupakan citra yang telah dioperasikan operasi morfologi dan image smoothing.

Gambar 3.7 Contoh Hasil Morpologi dan Image Smoothing

3.4.2 Tahap Deteksi

(42)

Gambar 3.8 Proses-Proses pada tahapan deteksi

3.4.2.1 Contour Extraction dan Polygon Approximation

(43)

kontur yang tercipta dari noise tidak terpilih. Kemdian kontur yang telah terpilih dioperasikan dengan operasi Polygon Approximation agar bentuk kontur lebih mudah untuk dianalisis pada tahap selanjutnya.

Untuk mengekstrak contour digunakan fungsi FindContours yang ada pada library EmguCV dan untuk operasi Polygon Approximation digunakan fungsi ApproxPoly yang juga terdapat pada library EmguCV yang akan dijabarkan sebagai berikut :

Fungsi FindContours akan mengembalikan titik-titik yang membentuk sebuah contour yang direpresentasikan oleh kumpulan point pada list. Parameter method merupakan metode yang dipakai dalam pencarian contour, parameter type merupakan type yang dipakai dalam pencarian contour, sedangkan parameter storage adalah storage atau memori penyimpanan yang akan dipakai dalam pencarian contour.

Contour<Point> ApproxPoly(

double accuracy,

MemStorage storage

);

Fungsi ApproxPoly akan mengembalikan titik-titik dalam contour yang telah dihaluskan agar analisi lebih mudah. Parameter accuracy merupakan nilai akurasi yang akan digunakan dalam proses ini, sedangkan parameter storage merupakan strage atau memori penyimpanan yang akan dipakai dalam pencarian contour.

3.4.2.2 Pencarian Max Inscribed Circle dan Min Enclosing Cicle

(44)

merepresentasikan nilai tengah dari telapak tangan. Nilai ini dapat dicari dengan mencari jarak terdekat dari setiap titik yang ada di dalam kontur dengan sisi-sisi pembatas kontur, nilai terbesar dari jarak tersebut merupakan radius dari Max inscribed circle dan titik tersebut merupaka titik tengah dari telapak tangan.

Dalam implementasinya pencarian Max inscribed circle dapat memakan waktu yang lama sehingga pencarian harus diperkecil dengan melakukan pembatasan pencarian pada area tengah bounding rectangle dari contour, dan pencariannya pun dilakukan setiap N titik. Nilai N yang dipakai pada penelitian ini adalah 4.

Untuk pencarian jarak terdekat titik didalam kontur dengan sisi-sisi kelilingnya digunakan fungsi cvPointPolygonTest, berikut merupakan fungsi

cvPointPolygonTest yang terdapat dalam library EmguCV:

double cvPointPolygonTest(

IntPtr contour,

PointF pt,

bool measureDist

);

Fungsi cvPointPolygonTest akan mengembalikan nilai jarang terdekat dari suatu titik ke kelilikng sebuah contour yang bertipe data double. Parameter yang dipakan dalam fungsi ini adalah parameter contour yang merupakan parameter yang mewakili contour yang akan diukur jaraknya dengan titik yang dimaksud, parameter Pt adalah point atau ttitik yang akan diukur jaraknya ke keliling contour, sedangkan parameter measureDist merupakan nilai Boolean yang apabila nilainya true fungsi akan mencari nilai terdekat dari titik ke keliling contour.

Min enclosing circle merupakan lingkaran terkecil yang dapat dibentuk dengan mengelilingi kontur. Untuk mencari nilai radius dan titik dari min enclosing circle digunakan fungsi MinEnclosingCircle, berikut merupakan fungsi

MinEnclosingCircle :

CircleF MinEnclosingCircle(

PointF[] points

(45)

Nilai min enclosing circle dan max inscribed cicle akan dipakai sebagai acuan untuk mencari titik-titik dari jari jari tangan pada analisis berikutnya. Gambar 3.9 berikut menunjukan contoh Max inscribed circle dan min enclosing circle, lingkaran merah merupakan min enclosing circle sedangkan lingkaran berwarna kuning merupakan max inscribed circle;

Gambar 3.9 Contoh Max inscribed circle dan min enclosing circle

3.4.2.3 Convex hull dan convexity defects extraction

Pada tahapan ini akan dicari convex hull dan convexity defects dari kontur tangan yang telah ditemukan pada tahap sebelumnya untuk analisis pada tahap berikutnya. Convex hull merupakan garis-garis lurus yang mengelilingi kontur sedangkan convexity defets merupakan titik-titik yang merepresentasikan sebuah lekukan pada setiap vertex di convex hull, convexity defect terdiri atas start point, end point, depth point, dan depth length.

Untuk mencari convex hull digunakan fungsi GetConvexHull sedangkan untuk mencari convexity defects digunakan fungsi GetConvexityDefacts, berikut merupakan fungsi dari GetConvexHull dan GetConvexityDefacts pada library EmguCV:

Seq<Point> GetConvexHull(

ORIENTATION orientation

);

(46)

orientation merupakan parameter bagaimana convex hull dicari searah jarum jam atau berlawanan arah jarum jam.

Seq<MCvConvexityDefect> GetConvexityDefacts(

MemStorage storage,

Orientation orientation

);

Fungsi GetConvexityDefacts akan mengembalikan runtunan atau sequen dari defect-defect yang ditemukan setiap defect terdiri dari start point, end point, dan depth point yang merepresentasikan lekukan pada convex hull. Parameter yang dipakai dalam fungsi GetconvexityDefacts adalah parameter storage yaitu tempat penyimpanan atau memori yang dipakai dalam pencarian defect-defect, dan parameter orientation yaitu parameter bagaimana cara mendapatkan defect searah atau berlawanan arah jarum jam.

Gambar 3.10 merupakan contoh dari convex hull dan convexity defects.Garis berwarna ungu yang mengelilingi tangan merupakan convex hull

sedangkan area area yang ditandai dengan huruf A,B,C,D,E dan F merupakan area yang dibentuk dari convexity defects dengan linkaran merah sebagai start point, lingkaran biru sebagai end point, dan lingkaran kuning sebagai depth point. Sedangkan contoh dari depth length dapat dilihat pada garis merah pada area B.

(47)

3.4.2.4 Pencarian Lokasi Jari Tangan

Tahapan ini adalah tahapan dimana posisi jari jari tangan ditentukan dengan menganalisis hasil convexity defect extraxtion dari tahap sebelumnya. Nilai- nilai dari convexity defect yang telah di dapatkan kemudian akan dipilih sesuai dengan karakteristik jari tangan yaitu sudut yang dibentuk antara start point dan end point kurang dari 90 derajat dan juga kedalaman dari defect harus kurang dari radius min enclosing circle dan juga lebih dari radius max inscribed circle. Jika ada titik yang memenuhi syarat tersebut maka untuk nilai start point dan end point pada defect tersebut akan di masukkan kedalam list. Gambar 3.11 merupakan contoh dari hasil pemilihan defect dengan menggunakan syarat diatas.

Gambar 3.11 Hasil Pemilihan Defect

(48)

Hasil pencarian jari-jari tangan yang didapatkan dari proses sebelumnya masih belum optimal maka hasil tersebut perlu dioptimalkan lagi dengan mencari nilai optimal dari k-curvature yang sudutnya kurang dari 60 derajat. Proses ini akan memeriksa setiap point pada list jari untuk setiap pointnya akan diperiksa sebanyak n point ke kiri dan n point ke kanan dari kontur yang telah ditemukan untuk setiap point tersebut akan di periksa nilai k-curvaturenya yaitu nilai sudut yang dibentuk dari titik yang dimaksud dengan titik-titik sejauh k ke kiri dan k ke kanan dari kontur, titik yang memberikan nilai terbesar dan kurang dari 60 derajat merupakan pengganti dari titik jari sebelumnya. Nilai jari yang telah dioptimalkan ini kemudian siap untuk diproses pada tahap selanjutnya yaitu tahap augmented.

Gambar 3.12 Hasil Pengurangan Titik

3.4.3 Tahap Augmented

(49)

Gambar 3.13 Tahapan Augmented

3.4.3.1 Mengestimasi Rotasi dan Lokasi Tangan

Pada tahapan ini aplikasi akan mengestimasi rotasi dan juga lokasi dari tangan berdasarkan lokasi jari-jari tangan dan telapak tangan dari proses sebelumnya. Pada tahapan ini lokasi jari-jari tangan yang merupakan bidang 2 dimensi akan diestimasi ke bidang 3 dimensi dengan acuan parameter intrinsic dari kamera yang telah didapatkan dari proses kalibrasi kamera. Hasil estimasi bidang 3 dimensi ini akan dibandingkan dengan objek 3 dimensi berupa objek tangan yang telah diinisialisasi untuk menghasilkan vector rotasi dan juga translasi, matriks rotasi ini merupakan matriks yang akan dipakai pada tahap berikutnya yaitu tahap memunculkan objek 3 dimensi. Pada tahap ini untuk mendapatkan matriks rotasi dan translasi digunakan fugnsi solvePNP pada library

EmguCV, berikut merupakan fungsi solvePNP :

bool SolvePnP(

(50)

IInputArray imagePoints,

Fungsi SolvePnP adalah fungsi untuk mencari vector translasi dan rotasi suatu objek 3 dimensi. Parameter objectPoints merupakan parameter point-point pada bidang 3 dimensi pada kasus ini adalah point-point jari-jari tangan pada bidang 3 dimensi atau model tangan yang telah diinisialisasi sebelumnya. Parameter imagePoints merupakan parameter point-point dari jari tangan dalam bidang 2 dimensi pada kasus ini adalah loksi jari tangan yang didapatkan dari proses sebelumnya. Parameter intrinsicMatrix merupakan matriks intrinsic dari kamera yang didaptkan dari proses kalibrasi kamera. Parameter distortion adalah parameter distorsi kamera yang didapatkan dari proses kalibrasi juga. Parameter rotationVector merupakan parameter keluaran parameter ini akan mengeluarkan nilai dari vector rotasi yang akan digunakan dalam proses memunculkan objek 3 dimensi pada tahap berikutnya. Parameter translationVector merupakan parameter keluaran yang mengularkan nilai dari vector translasi.

3.4.3.2 Memunculkan Objek 3D

(51)

pergerakan tangan dan tetap berada di atas telapak tangan dengan berdasarkan sudut tangan yang dibentuk.

3.5 Analisis Kebutuhan Nonfungsional

Kebutuhan non fungsional yang dibutuhkan untuk membangun sistem ini mencakup dua hal yaitu kebutuhan perangkat keras dan perangkat lunak

3.5.1 Analisis Kebutuhan Perangkat Keras

Adapun kebutuhan perangkat keras yang diperlukan untuk menjalankan sistem ini adalah :

1. Processor minimal Pentium 4 3.0 Ghz 2. Memrory 384 MB atau lebih

3. Web-cam minimal 2MP

4. Hardisk minimal 850 MB untuk .NET 3.5.2 Analisis Kebutuhan Perangkat Lunak

Perangkat lunak yang dibutuhkan untuk menjalankan software Augmented Reality ini adalah :

1. Sistem Operasi Windows 7 atau lebih 2. .NET 4 Framework

3.6 Analisis Kebutuhan Fungsional 3.6.1 Diagram Use Case

(52)

Gambar 3.14 Diagram Use Case

3.6.2 Definisi Aktor

Aktor adalah pihak mana saja yang mengkases Use Case. Daftar aktor yang terlibat beserta deskripsi dapat dilahat pada tabel 3.1.

Tabel 3.1 Daftar Aktor No Nama Deskripsi Tugas

1. User Mengarahkan tangan pada kamera, memilih objek 3D yang akan

ditampilkan

3.6.3 Definisi Use Case

(53)

Tabel 3.2 Deskripsi Use Case Nomor Nama Use Case Deskripsi

UC-01 Memunculkan Objek 3D Fungsionalitas untuk memunculkan objek 3D pada bidang

perspektif

UC-02 Mendeteksi Tangan Fungsionalitas untuk mendeteksi dan mentracking tangan

UC-03 Mengambil Background Fungsionalitas untuk mengambil background pada lingkungan

sekitar

UC-04 Memilih Objek 3D Fungsionalitas untuk memilih objek 3D yang akan dimunculkan

3.6.4 Skenario Use Case

Skenario use case menjelaskan urutan langkah-langkah dalam proses yang dilakukan sebuah Use Case. Adapun skenario use case dari sistem yang dibangun adalah sebagai berikut :

3.6.4.1 Skenario Use Case Mendeteksi Tangan

Skenario use case mendeteksi tangan dapat dilihat pada tabel 3.3. Tabel 3.3 Skenario Use Case Mendeteksi Tangan Use Case Name Mendeteksi Tangan

Goal In Context Sistem dapat mendeteksi tangan dan mengikuti gerakannya Precondition User berada pada form utama AR

Description Fungsionalitas untuk mendeteksi dan mentracking tangan Related Use Case

-Successful End

Condition Sistem berhasil mendeteksi tangan Failed End Condition -

Actors User

Trigger Webcam mengambil citra dari lingkungan Main Flow Step Step

1. Sistem mengambil citra dari webcam

2. Sistem mengubah format citra 3. Sistem mengekstrak foreground

4. Sistem mendeteksi warna kulit 5. Sistem mencari kontur tangan 6. Sistem mencari letak telapak tangan 7. Sistem mencari letak jari-jari tangan 8. Sistem berhasil mendeteksi tangan 3.6.4.2 Skenario Use Case Memunculkan Objek 3D

Skenario use case memunculkan objek 3d dapat dilihat pada tabel 3.4. Tabel 3.4 Skenario Use Case Memunculkan Objek 3D

Use Case Name Memunculkan Objek 3D

Goal In Context Sistem memunculkan objek 3d pad bidang perspektif Precondition User menekan tombol Start

(54)

Related Use Case Mendeteksi Tangan Successful End

Condition Sistem berhasil menampilkan objek 3D pada bidang perspektif Failed End Condition File 3D tidak valid,Tangan tidak terdeteksi

Actors -

Trigger User menekan tombol start Main Flow Step Step

1. Sistem meload objek tiga dimensi 2. Menampilkan form utama AR 3. User mengarahkan tangan ke kamera 4. Include::Mendeteksi Tangan

5. Sistem mengestimasi lokasi objek 3D pada bidang perspektif

6. Sistem memunculkan objek 3D Extensions Step Step

1.1 Objek 3D tidak valid 4.1 Tangan tidak terdeteksi

3.6.4.3 Skenario Use Case Mengambil Background

Skenario use case mengambil background dapat dilihat pada tabel 3.5. Tabel 3.5 Skenario Use Case Mendeteksi Telapak Tangan Use Case Name Mengambil background

Goal In Context Background berhasil diganti dengan background yang diambil Precondition

-Description Fungsionalitas untuk mengambil background pada lingkungan sekitar

Related Use Case -Successful End

Condition Sistem berhasil mengganti background Failed End Condition -

Actors User

Trigger User menekan tombol take background Main Flow Step Step

1. Sistem mengambil background

2. Sistem menyimpan background

3.6.4.4 Skenario Use Case Memilih Objek 3D

Skenario use case mengambil background dapat dilihat pada tabel 3.6. Tabel 3.6 Skeneraio Use Case Memilih Objek 3D

Use Case Name Memilih Objek 3D Goal In Context Berhasil memilih objek 3D Precondition

-Description Fungsionalitas untuk memilih objek 3D yang akan dimunculkan Related Use Case

-Successful End

Condition User berhasil memilih objek 3D Failed End Condition -

Actors User

(55)

Main Flow Step Step

1. Sistem menampilkan form pemilihan file 2. User memilih file

3. User menekan tombol OK

3.6.5 Activity Diagram

Activity diagram menggambarkan berbagai aliran aktivitas dalam sistem yang dirancang, bagaimana masing-masing fungsionalitas bekerja, dan bagaimana suatu fungsional berakhir. Activity Diagram memodelkan event-event yang terjadi pada use case. Adapun Activity Diagram dari aplikasi yang akan dibangun adalah sebagai berikut :

3.6.5.1 Activity Diagram Memunculkan Objek 3D

Activity Diagram Memunculkan Objek 3D dapat dilihat pada gambar 3.15.

3.6.5.2 Activity Diagram Mendeteksi Tangan

Activity diagram mendeteksi tangan dapat dilihat pada gambar 3.16. 3.6.5.3 Activity Diagram Mengambil Background

Activity diagram mengambil background dapat dilihat pada gambar 3.17 3.6.5.4 Activity Diagram Memilih Objek 3D

Activity diagram memilih objek 3D dapat dilihat pada gambar 3.18. 3.6.6 Class Diagram

(56)
(57)
(58)

Gambar 3.17 Activity Diagaram Mengambil Background

(59)

Gambar 3.19 Class Diagram

3.6.7 Sequence Diagram

Sequence diagram menggambarkan interaksi antara masing masing objek pada setiap use case dalam urutan waktu. Interaksi berupa pengiriman serangkaian data antar objek-objek yang saling berinteraksi. Adapun sequence diagram dari palikasi yang dibangun adalah sebagai berikut.

3.6.7.1 Sequence Diagram Memunculkan Objek 3D

Sequence diagram memunculkan objek 3D dapat dilhat pada gambar 3.20. 3.6.7.2 Sequence Diagram Mendeteksi Tangan

Sequence diagram mendeteksi tangan dapat dilihat pada gambar 3.21. 3.6.7.3 Sequence Diagram Mengambil Background

Sequence diagram mengambil background dapat dilihat pada gambar 3.22. 3.6.7.4 Sequence Diagram Memilih Objek 3D

(60)

Gambar 3.20 Sequence Diagram Memunculkan Objek 3D

(61)

Gambar 3.22 Sequence Diagram Mengambil Background

Gambar 3.23 Sequence Diagram Memilih Objek 3D

3.7 Perancangan Sistem

(62)

3.7.1 Perancangan Antarmuka

Perancangan antarmuka merupakan suatu media komnukasi yang digunakan ketika user akan berinteraksi dengan sistem. Perancangan antarmuka pada aplikasi augmented reality ini adalah sebagai berikut :

3.7.1.1 Perancangan Antarmuka Tampilan Menu Utama

Perancangan antarmuka tampilan menu utama dapat dilihat pada Gambar 3.24.

Gambar 3.24 Perancangan Antarmuka Tampilan Menu Utama

3.7.1.2 Perancangan Antarmuka Tampilan Utama AR

Perancangan antarmuka tampilan utama AR dapat dilihat pada gambar 3.25.

3.7.2 Jaringan Semantik

(63)

Gambar 3.25 Perancangan Antarmuka Tampilan Utama AR

Gambar 3.26 Jaringan Semantik

3.7.3 Perancangan Method

(64)

untuk mendeskripsikan method-method yang berada di dalam aplikasi yang dibangun. Adapun Method yang terdapat dalam aplikasi yang akan dibangun adalah sebagai berikut :

3.7.3.1 Perancangan Method Hand Tracking

Perancangan Method hand tracking dapat dilihat pada gambar 3.27. 3.7.3.2 Perancangan Method Memunculkan Objek 3D

(65)
(66)

Gambar

Gambar 2.10 Class Diagram
Gambar 2.11 Sequnce Diagram
Gambar 2.12 Activity Diagram
Gambar 3.1 Deskripsi Sistem
+7

Referensi

Dokumen terkait

PIEZOMETER adalah bentuk sederhana dari manometer, dimana tekanan cairan yang diukur dapat dilihat secara langsung pada ketinggian cairan tersebut di dalam tabung... Dimana

Selain peneliti mengamati aktivitas siswa, peneliti juga akan mengamati hasil belajar gerak dasar guling depan. Dari mulai sikap awal pada saat akan melakukan guling depan, sikap

Berdasarkan pelbagai masalah yang dipaparkan dalam akhbar menunjukkan individu dan masyarakat amat terdedah dengan pelbagai permasalahan psikologi seperti aspek

teknologi augmented reality menggunakan magic book sebagai media pemasaran produk berbasis android yang dapat membantu penjual hanya perlu menenggunakan teknologi augmented

(3) Pembimbing, pengarah, pembina, dan penasehat: untuk mendukung tercapainya visi dan misi MI Wali Songo Asy-Syirbaany, pengurus kepala madrasah memiliki peranan

Sasaran jangka panjang terapi pasien/klien dengan adiksi NAPZA termasuk di dalamnya mengurangi penggunaan dan efek penyalahgunaan NAPZA, mencapai konidis abstinensia (bebas

Pemohon pembiayaan hanya dibatasi kepada nasabah yang telah memiliki Tabungan Mabrur, tabungan mab- rur adalah tabungan dengan menggunakan mata uang rupiah untuk membantu

Tujuan dari penyediaan area hotspot di Kantor Perpustakaan dan Arsip Kota Semarang adalah untuk memberikan kemudahan akses informasi bagi pengguna yang dapat