Programming

Cara Implementasi Augmented Reality (AR) di Aplikasi Android

android
Avatar photo
Written by Techfor Id

Pada artikel ini, kamu akan belajar cara mengimplementasikan konsep Augmented Reality (AR) di aplikasi Android dengan efek pada wajah dari kamera secara realtime.

Kita akan membahas semua 4 poin atau langkah penting di sini :

  • Penerapan fitur penangkapan kamera (Camera Capture)
  • Membuat FItur Menemukan wajah (Finding Face),
  • Menemukan pola  titik pada wajah, dan
  • Orientasi dan Ekspresi wajah

Penerapan Fitur Penangkapan Kamera (Camera Capture)

Hal pertama yang perlu kita lakukan adalah menangkap gambar dari kamera. Dan untungnya Android API memberi kita opsi melalui android.hardware.camera2.

Pertama, kamu harus memilih kamera, dengan mendapatkan semua kamera yang tersedia melalui Camera.getNumberOfCameras (). Di sini kamu juga harus menentukan kamera mana yang ingin di gunakan, dan kemudian fitur untuk membuka kamera :

mCamera = Camera.open(cameraIndex);

Kemudian kamu harus menetukan parameter preview-nya :

  Camera.Parameters params = mCamera.getParameters();

    params.setPreviewFormat(ImageFormat.NV21);

    List<Camera.Size> psize = params.getSupportedPreviewSizes();

Diantara List ukuran preview kamu harus menentukan mana yang paling cocok. Mudahnya kamu bisa menyesuakannya dengan ukuran layar device android yang digunakan.

Hal kompleks lainnya yang perlu diperhatikan yaitu  membuat buffer dan preview Callback :

int size = cameraWidth * cameraHeight;

    size  = size * ImageFormat.getBitsPerPixel(params.getPreviewFormat()) / 8;

    mBuffer = new byte[size];

    mCamera.addCallbackBuffer(mBuffer);

    mCamera.setPreviewCallbackWithBuffer(preview);

Untuk pratinjau, Anda hanya perlu menerapkan satu metode void onPreviewFrame (data byte [], Camera camera).

Dimanadatanya adalah preview frame dari kamera, Kamu akan menerimanya dalam bentuk loop setiap kali pratinjau atau preview dihitung dari Kamera.

Membuat FItur Menemukan wajah (Finding Face)

Ada berbagai teknik untuk membuat fitur menemukan wajah di layar device android. Kita akan menggunakan fitur yang paling populernnya yaitu Haar.

 Algoritmenya sudah diterapkan di OpenCV, Ia adalah salah satulibrary paling populer untuk computer vision.serta ditulis dalam bahasa C / C ++. Sebagai pembelajaran mesin, kita perlu melatih model kita.

Untuk ini, kita perlu memiliki ribuan foto dengan wajah dan tanpa wajah. Kemudian algoritma akan dilatih dan akan menghasilkan model yang dapat digunakan. Kita tidak perlu melakukannya, semuanya sudah dilakukan dengan metode face_detection beserta modelnya.

Menemukan pola  titik pada wajah

Pada wajah kita harus menemukan poin khusus untuk memahami orientasi wajah dan ekspresi wajah. Untuk ini kita akan menggunakan perpustakaan dlib. Ini juga perpustakaan populer untuk pembelajaran mesin yang ditulis di C ++.

Contoh codenya bisa kamu temukan pada link berikut :

http://dlib.net/face_landmark_detection_ex.cpp.html

Kamu juga bisa menggunakan model yang sudah jadi dan siap pakai di link berikut :

http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2.

Orientasi dan Ekspresi Wajah

Saat memiliki 68 poin di layar, kita perlu menghitung orientasi wajah dan ekspresi wajah, Misalnya saja untuk rahang terbuka. Untuk ini kita akan menggunakan model 3d untuk bagian muka.

Kita juga  perlu memiliki poin pada permukaan 3d dan poin yang sesuai di antara 68 poin. Jika kita ingin mencari ekspresi wajah, kita harus menyelesaikan persamaan :

dst = argmin X ∥ src1⋅ X − src2∥

Dengan Dekomposisi SVD, dimana :

  • scr1– model 3D
  • X – transformasi pada model, termasuk proyeksi di permukaan
  • scr2 – menemukan poin pada gambar

Mengetahui orientasi wajah dan ekspresi wajah. Kita bisa menulis hasil menggunakan OpenGL (Open Graphics Library). Open GL adalah bahasa lintas platform untuk menggunakan GPU (Unit Pemrosesan Grafik) untuk grafik 2d dan 3d.

Ia dapat membuat banyak perhitungan sederhana secara paralel. Istilah utamanya adalah shader. Shaders – itu adalah program yang diterapkan pada GPU.

Ada dua shader utama: simpul dan fragmen. Vertex shader untuk melakukan perhitungan poin. Dan fragmen shader untuk memberikan warna untuk setiap piksel. Shader bisa menggunakan tekstur. Tekstur adalah gambar 2d untuk shader, contoh – topeng untuk wajah dan pratinjau kamera masukan tempat kita menerapkan tekstur.

Sumber : https://medium.com/swlh/create-your-own-ar-application-on-android-9274e55b3150

About the author

Avatar photo

Techfor Id

Leave a Comment

Click to ask
Hai, Tanya-Tanya Aja
Hi ini Windy, dari techfor

Windy bisa membantu kamu memahami layanan Techfor
Seperti

1. Kursus Online By Expert
2. Partnership Event dan Konten
3. Layanan liputan multimedia
4. Dan hal lain yg ingin kamu tau

Kirim saja pesan ini serta berikan salah satu nomor diatas atau beritahukan windy lebih jelas agar dapat membantu Kamu