Memulai dengan Scene Semantics dan Geospatial Depth API di ARCore

1. Sebelum memulai

ARCore adalah framework Google untuk membangun pengalaman augmented reality (AR) di smartphone. Scene Semantics dan Geospatial Depth API membantu pengalaman AR Anda memahami lingkungan di sekitar pengguna Anda.

Scene Semantics API menggunakan model machine learning (ML) untuk menganalisis gambar kamera dan memberikan gambar piksel berlabel. Ini dapat membedakan antara 11 label luar ruangan yang berbeda.

Geospatial Depth API menggabungkan informasi kedalaman dari gerakan dan sensor hardware apa pun yang aktif, seperti waktu penerbangan, dengan data Streetscape Geometry API. Ini meningkatkan kesalahan dalam pengamatan kedalaman hingga 65 meter.

Dalam codelab ini, Anda mem-build aplikasi AR yang memvisualisasikan hasil Scene Semantics dan Geospatial Depth API.

Prasyarat

  • Pengetahuan dasar tentang AR

Yang akan Anda pelajari

  • Cara mengaktifkan Scene Semantics API.
  • Cara mendapatkan dan memvisualisasikan gambar semantik.
  • Cara mendapatkan dan memvisualisasikan gambar semantic-confidence.
  • Cara menentukan persentase piksel yang sesuai dengan label tertentu.
  • Cara menyiapkan project Google Cloud yang dapat menggunakan ARCore Geospatial API.
  • Cara mengaktifkan Geospatial Depth API.
  • Cara memvisualisasikan kedalaman gambar.

Yang Anda butuhkan

2. Menyiapkan lingkungan Anda

Untuk membantu Anda mulai menggunakan Geospatial API, kami menyediakan project awal yang mencakup dasar-dasar project ARCore dan beberapa fungsi bantuan.

Untuk menyiapkan proyek awal, ikuti langkah-langkah berikut:

  1. Buka Android Studio dan lakukan salah satu tindakan berikut:
    • Jika sudah ada project yang terbuka, klik File > New > Project from version control.
    • Jika jendela Welcome to Android Studio ditampilkan, klik Get from VCS. Lokasi Get from VCS
  2. Pilih Git dan masukkan https://github.com/google-ar/codelab-scene-semantics-geospatial-depth.git untuk mengimpor project.

3. Memvisualisasikan data Scene Semantics API

Mengaktifkan Scene Semantics API

Scene Semantics API dinonaktifkan secara default untuk menghemat daya pemrosesan.

Untuk mengaktifkan Scene Semantics API, ikuti langkah-langkah berikut:

  1. Dalam file CodelabActivity.kt, temukan baris berikut:
    // TODO: Enable the Scene Semantics API.
    
  2. Setelah baris tersebut, jika perangkat Anda mendukungnya, aktifkan Scene Semantics API di konfigurasi sesi:
      if (session.isSemanticModeSupported(Config.SemanticMode.ENABLED)) {
        semanticMode = Config.SemanticMode.ENABLED
      }
    

Mendapatkan dan memvisualisasikan gambar semantik

Gambar semantik adalah hasil dari model ML ARCore yang menetapkan Enum SemanticLabel ke setiap piksel dalam feed kamera.

Contoh gambar semantik

Untuk mendapatkan gambar semantik dan menampilkannya di layar, ikuti langkah-langkah berikut:

  1. Dalam file CodelabRenderer.kt, temukan baris berikut:
    // TODO: Obtain the semantic image for this frame.
    
  2. Setelah baris tersebut, dapatkan gambar semantik:
      frame.acquireSemanticImage().use { image ->
        semanticRenderer.updateCameraSemanticsTexture(image)
        activity.view.semanticLabelAtCenter = getLabelAt(image, image.width/2, image.height/2)
      }
    
    Gambar semantik digunakan di kelas SemanticRenderer untuk ditampilkan di layar. Anda memperbarui variabel semanticLabelAtCenter untuk menampilkan label semantik di tengah layar pada tampilan aplikasi.
  3. Jalankan aplikasi Anda, dan arahkan kamera ke berbagai objek di luar ruangan. Tampilan label semantik berubah saat Anda melihat tipe objek yang berbeda.
  4. Ketuk Ikon Settings Settings untuk mengaktifkan gambar overlay semantic-confidence.

Mendapatkan dan memvisualisasikan gambar semantic-confidence

Gambar semantic-confidence memberikan indikasi seberapa percaya diri ARCore dalam label semantik pada piksel yang cocok.

Untuk mendapatkan gambar semantik dan menampilkannya di layar, ikuti langkah-langkah berikut:

  1. Dalam file CodelabRenderer.kt, temukan baris berikut:
    // TODO: Obtain the confidence image for this frame.
    
  2. Setelah baris ini, dapatkan gambar semantik:
    frame.acquireSemanticConfidenceImage().use { image ->
      semanticRenderer.updateConfidenceSemanticsTexture(image)
      activity.view.confidenceAtCenter = getConfidenceAt(image, image.width/2, image.height/2)
    }
    
    Gambar semantic-confidence digunakan di kelas SemanticRenderer untuk ditampilkan di layar. Anda memperbarui variabel confidenceAtCenter untuk menampilkan label semantik di tengah layar pada tampilan aplikasi.
  3. Jalankan aplikasi Anda, dan arahkan kamera ke berbagai objek di luar ruangan. Tampilan label semantic-confidence berubah saat Anda melihat tipe objek yang berbeda.
  4. Ketuk Ikon Settings Settings untuk mengaktifkan gambar overlay semantic-confidence.

Menentukan prevalensi label

Prevalensi label adalah persentase gambar semantik yang sama dengan label tertentu. Misalnya, jika 26% gambar memiliki nilai SemanticLabel.SKY, maka nilai prevalensi untuk nilai SemanticLabel.SKY adalah 0.26f.

Untuk mendapatkan prevalensi label dan menampilkannya di layar, ikuti langkah-langkah berikut:

  1. Dalam file CodelabRenderer.kt, temukan baris berikut:
    // TODO: Obtain the prevalence of the selected label for this frame.
    
  2. Setelah baris tersebut, dapatkan prevalensi untuk label yang dipilih:
    frame.acquireSemanticConfidenceImage().use { image ->
      semanticRenderer.updateConfidenceSemanticsTexture(image)
      activity.view.confidenceAtCenter = getConfidenceAt(image, image.width/2, image.height/2)
    }
    
  3. Jalankan aplikasi Anda, dan arahkan kamera ke berbagai objek di luar ruangan. Tampilan label semantic-confidence berubah saat Anda melihat tipe objek yang berbeda.
  4. Ketuk Ikon Settings Settings untuk mengaktifkan gambar overlay semantic-confidence.

4. Memvisualisasikan data Geospatial Depth API

Geospatial Depth API meningkatkan pembacaan kedalaman saat Geospatial dan Streetscape Geometry API diaktifkan. Untuk menggunakan Geospatial Depth API dengan Kotlin dan Android Studio, Anda memerlukan project Google Cloud.

Menyiapkan project Google Cloud

ARCore Geospatial API terhubung dengan Google Cloud untuk menyediakan informasi lokasi dari Sistem Pemosisi Visual (VPS) Google di area-area yang dicakup oleh Google Street View.

Untuk menggunakan server ini di project Anda, ikuti langkah-langkah berikut:

  1. Buat project di Google Cloud.

    Membuat project Google Cloud
  2. Di kolom Project name, masukkan nama yang sesuai, misalnya ARCore Geospatial API project, lalu pilih sebuah lokasi.
  3. Klik Create.
  4. Di Konsol Google Cloud di halaman pemilih project, klik Create Project.
  5. Klik link berikut guna melihat ARCore API untuk project ini, lalu klik Enable:
  6. Buat kunci API untuk project Anda:
    1. Di bagian APIs & services, pilih Credentials.
    2. Klik Create credentials dan pilih API key.
    3. Catat kunci ini karena Anda akan memerlukannya nanti.

Anda telah membuat project Google Cloud dengan otorisasi kunci API, dan sekarang Anda siap menggunakan Geospatial API dalam contoh project.

Mengintegrasikan kunci API dengan project Android Studio

Untuk mengaitkan kunci API dari Google Cloud dengan project Anda, ikuti langkah-langkah berikut:

  1. Di Android Studio, klik app > src dan klik dua kali AndroidManifest.xml.
  2. Temukan entri meta-data berikut:
    <meta-data
        android:name="com.google.android.ar.API_KEY"
        android:value="API_KEY" />
    
  3. Ganti placeholder API_KEY dengan kunci API yang telah dibuat di project Google Cloud Anda. Nilai yang tersimpan di com.google.android.ar.API_KEY akan memberikan otorisasi kepada aplikasi ini untuk menggunakan Geospatial API.

Memverifikasi project

  • Untuk memverifikasi project, jalankan aplikasi Anda di perangkat pengembangan. Anda akan melihat tampilan kamera dan informasi debug geospasial di bagian atas layar.

Informasi geospasial ditampilkan di aplikasi

Mengaktifkan konfigurasi yang diperlukan

Geospatial Depth API memerlukan tiga setelan untuk diaktifkan di konfigurasi sesi aplikasi Anda.

Untuk mengaktifkannya, ikuti langkah-langkah berikut:

  1. Dalam file CodelabRenderer.kt, temukan baris berikut:
    // TODO: Enable the Geospatial API, the Streetscape Geometry API, and the Depth API.
    
  2. Pada baris berikutnya, tambahkan kode berikut:
    val isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC)
    val isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED)
    if (isDepthSupported && isGeospatialSupported) {
      // These three settings are needed to use Geospatial Depth.
      geospatialMode = Config.GeospatialMode.ENABLED
      streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED
      depthMode = Config.DepthMode.AUTOMATIC
    }
    

Memvisualisasikan informasi depth

  1. Dalam file CodelabRenderer.kt, temukan baris berikut:
    // TODO: Obtain depth information and display it.
    
  2. Pada baris berikutnya, tambahkan kode berikut:
    try {
      frame.acquireDepthImage16Bits().use { image ->
        backgroundRenderer.updateCameraDepthTexture(depthImage)
      }
    } catch (e: NotYetAvailableException) {
      // No depth information is available.
    }
    
  3. Jalankan aplikasi dan kunjungi sebuah gedung di area Anda.
  4. Setelah lokasi Geospasial dilengkapi, ketuk Ikon Settings Settings dan aktifkan visualisasi geospatial-depth.
  5. Lihat bangunan dalam AR, dan bandingkan dengan informasi kedalaman tanpa kedalaman geospasial.

5. Kesimpulan

Selamat! Anda telah membangun aplikasi AR yang memvisualisasikan semantik adegan dan kedalaman geospasial.

Mempelajari lebih lanjut