Augmented Reality SDK dengan OpenCV [ditutup]

94

Saya mengembangkan Augmented Reality SDK di OpenCV. Saya memiliki beberapa masalah untuk menemukan tutorial tentang topik tersebut, langkah-langkah mana yang harus diikuti, algoritma yang mungkin, pengkodean yang cepat dan efisien untuk kinerja waktu nyata, dll.

Sejauh ini saya telah mengumpulkan informasi berikutnya dan tautan berguna.

Instalasi OpenCV

Unduh versi rilis terbaru .

Anda dapat menemukan panduan instalasi di sini (platform: linux, mac, windows, java, android, iOS).

Dokumentasi online .

Realitas Tertambah

Untuk pemula, berikut adalah kode augmented reality sederhana di OpenCV. Ini awal yang bagus.

Bagi siapa pun yang mencari SDK canggih yang dirancang dengan baik, saya menemukan beberapa langkah umum yang harus dimiliki oleh setiap augmented-reality berdasarkan pelacakan penanda, dengan mempertimbangkan fungsi OpenCV.

  1. Program utama: membuat semua kelas, inisialisasi, menangkap bingkai dari video.

  2. Kelas AR_Engine: Mengontrol bagian-bagian dari aplikasi augmented reality. Harus ada 2 status utama:

    • deteksi : mencoba mendeteksi penanda di tempat kejadian
    • pelacakan : setelah terdeteksi, gunakan teknik komputasi yang lebih rendah untuk menelusuri penanda dalam bingkai yang akan datang.

Juga harus ada beberapa algoritma untuk menemukan posisi dan orientasi kamera di setiap frame. Ini dicapai dengan mendeteksi transformasi homografi antara penanda yang terdeteksi di tempat kejadian, dan gambar 2D dari penanda yang telah kami proses secara offline. Penjelasan metode ini di sini (halaman 18). Langkah utama untuk Estimasi Pose adalah:

  1. Memuat Parameter Intrinsik kamera . Sebelumnya diekstraksi secara offline melalui kalibrasi. parameter intrinsik

  2. Muat pola (penanda) untuk dilacak: Ini adalah gambar penanda planar yang akan kita lacak. Perlu untuk mengekstrak fitur dan menghasilkan deskriptor ( keypoints ) untuk pola ini sehingga nanti kita dapat membandingkan dengan fitur dari tempat kejadian. Algoritma untuk tugas ini:

  3. Untuk setiap pembaruan bingkai, jalankan algoritme deteksi untuk mengekstrak fitur dari tempat kejadian dan buat deskriptor. Sekali lagi kami memiliki beberapa opsi.

    • MENYARING
    • CEPAT
    • BERSELANCAR
    • ANEH : Metode baru (2012) tampaknya menjadi yang tercepat.
    • BOLA
  4. Temukan kecocokan antara pola dan deskriptor adegan.

  5. Temukan matriks Homografi dari kecocokan tersebut. RANSAC dapat digunakan sebelumnya untuk menemukan inlier / outlier dalam set pertandingan.

  6. Ekstrak Pose Kamera dari homografi.

Contoh lengkapnya:

Jav_Rock
sumber
1
Sayangnya, ini "tidak membangun", apakah Anda sedang mencari saran.
bfavaretto
3
Mengenai tugas instalasi, sekarang OpenCV telah bermigrasi ke GIT, jadi untuk mendownload kode cource perlu melakukan "git clone git: //code.opencv.org/opencv.git".
Carlos Cachalote
12
47 Suara belum ditutup karena aturan konyol.
SvaLopLop

Jawaban:

19

Karena aplikasi AR sering berjalan di perangkat seluler, Anda juga dapat mempertimbangkan pendeteksi / deskriptor fitur lainnya:

Muffo
sumber
3
Terima kasih! Ada juga versi "cepat" dari FAST yang berjalan waktu nyata di ponsel, bersifat piramidal dan deskriptor SIFT berkurang
Jav_Rock
2
Saya mendapatkan hasil yang hampir sempurna dengan menggunakan ORB
dynamic
Sebenarnya, membaca tentang ORB dikatakan CEPAT di piramida
Jav_Rock
3
Freak adalah algoritma terakhir untuk memproses deskriptor pada AR. Lebih cepat dari FAST.
goe
13

Umumnya, jika Anda dapat memilih penanda, pertama-tama Anda mendeteksi target persegi menggunakan detektor tepi dan kemudian Hough atau hanya kontur - kemudian identifikasi penanda tertentu dari desain internal. Daripada menggunakan pencocok titik umum.

Lihatlah Aruco untuk kode contoh yang ditulis dengan baik.

Martin Beckett
sumber
4
Ya, pendekatan fidusia adalah yang paling sederhana, tetapi tidak cukup mutakhir. Saya pikir sekarang orang harus menunjuk ke penanda bertekstur. Terima kasih. Contoh ini sangat menarik karena dijelaskan dengan baik.
Jav_Rock
1
Jika Anda ingin mengetahui posenya, Anda harus mencocokkan posisi 3D fitur penanda dengan koord gambar yang sesuai. Target berbentuk biasa membuat ini lebih mudah tetapi mereka tidak perlu menjadi planar
Martin Beckett
Tetapi jika mereka bukan planar, Anda memerlukan model-3d atau model CAD, jika tidak, homografi dari 2d-ke-3d bukan metode yang valid lagi, bukan? Maksud saya, Direct Linear Transform digunakan dalam findhomography
Jav_Rock
Ya, jika Anda memiliki spidol 3d, Anda perlu mengetahui bentuk 3d yang sebenarnya (dari cad, atau mengukurnya) tetapi ini memberikan soln yang lebih baik
Martin Beckett