Pertanyaan Apakah ARKit 2.0 mempertimbangkan Distorsi Lensa di iPhone dan iPad?


ARKit 2.0 memperbarui banyak parameter intrinsik (dan ekstrinsik) dari ARCamera dari frame ke frame. Saya ingin tahu apakah itu juga diperlukan Radial Lens Distortion menjadi pertimbangan (seperti dalam AVCameraCalibrationData kelas yang tidak digunakan ARKit), dan memperbaiki distorsi frame video secara tepat (distort/undistort operasi) untuk kamera belakang iPhone dan iPad?

var intrinsics: simd_float3x3 { get }

enter image description here Seperti yang kita semua tahu, itu Radial Lens Distortion sangat mempengaruhi akurasi akurasi pos 6 DOF ketika kita menempatkan objek 3D terdistorsi dalam terdistorsi oleh adegan dunia nyata lensa.

enter image description here

var lensDistortionLookupTable: Data? { get } 

// A map of floating-point values describing radial 
// lens distortions in AVCameraCalibrationData class

Jika Lens Distortion's math di ARKit 2.0 tersedia melalui API, di mana saya dapat menemukannya?


5
2017-08-26 11:21


asal


Jawaban:


Meskipun tidak secara eksplisit menyatakan, saya yakin bahwa ARKit mengoreksi distorsi lensa non-linear. Distorsi lensa (dan distorsi terbalik) tabel pencarian ada di iOS11 dan tersedia melalui AVCameraCalibrationData, tetapi mereka tidak diekspos oleh ARKit, mungkin karena tidak perlu bagi mereka karena Anda sudah bekerja dengan koordinat yang diperbaiki.

Apakah parameter model distorsi sama untuk setiap model perangkat (yaitu nilai yang sama persis untuk setiap iPhone 7), itu pertanyaan yang menarik. Saya tidak memiliki akses ke beberapa ponsel dengan model yang sama, tetapi ini seharusnya tidak sulit untuk mencari tahu siapa yang melakukannya.

sumber

Sebagai contoh dari: https://github.com/eugenebokhan/ARKit-Multiplayer Deteksi penanda QR Image

Dengan bantuan Visi Apple sekarang mungkin untuk mengenali penanda QR di videofeed kamera dan melacaknya saat berada di bidang tampilan. Kerangka ini memberi kita koordinat sudut persegi penanda QR dalam sistem koordinat layar.

Penanda QR menghasilkan estimasi

Hal berikutnya yang mungkin ingin Anda lakukan setelah mendeteksi penanda QR adalah mendapatkan pose kamera dari mereka.

Untuk melakukan pendugaan pos pemarkah QR, Anda perlu mengetahui parameter kalibrasi kamera Anda. Ini adalah matriks kamera dan koefisien distorsi. Setiap lensa kamera memiliki parameter unik, seperti panjang fokus, titik utama, dan model distorsi lensa. Proses menemukan parameter kamera intrinsik disebut kalibrasi kamera. Proses kalibrasi kamera penting untuk aplikasi Augmented Reality karena menggambarkan transformasi perspektif dan distorsi lensa pada gambar output. Untuk mencapai pengalaman pengguna terbaik dengan Augmented Reality, visualisasi objek yang diperbesar harus dilakukan menggunakan proyeksi perspektif yang sama.

Pada akhirnya, apa yang Anda dapatkan setelah kalibrasi adalah matriks kamera: matriks 3x3 elemen dengan jarak fokus dan koordinat pusat kamera (alias parameter intrinsik), dan koefisien distorsi: vektor dari 5 elemen atau lebih yang memodelkan distorsi yang dihasilkan oleh kamera Anda. Parameter kalibrasi cukup sama untuk sebagian besar iDevices.

Dengan lokasi sudut penanda yang tepat, kami dapat memperkirakan transformasi antara kamera kami dan penanda dalam ruang 3D. Operasi ini dikenal sebagai estimasi pose dari 2D-3D korespondensi. Proses estimasi pose menemukan transformasi Euclidean (yang hanya terdiri dari komponen rotasi dan terjemahan) antara kamera dan objek.

Vector

C digunakan untuk menunjukkan pusat kamera. Poin P1-P4 adalah poin 3D dalam sistem koordinat dunia dan poin p1-p4 adalah proyeksi mereka pada bidang gambar kamera. Tujuan kami adalah untuk menemukan transformasi relatif antara posisi penanda yang dikenal di dunia 3D (p1-p4) dan kamera C menggunakan matriks intrinsik dan proyeksi titik yang dikenal pada bidang gambar (P1-P4).

Fungsi OpenCV digunakan untuk menghitung transformasi penanda QR sedemikian rupa sehingga meminimalkan kesalahan reprojection, yaitu jumlah jarak kuadrat antara imagesPoints yang diamati dan objected Points yang diproyeksikan. Perkiraan transformasi didefinisikan oleh rotasi (rvec) dan komponen terjemahan (tvec). Ini juga dikenal sebagai transformasi Euclidean atau transformasi kaku. Pada akhirnya kita mendapatkan quaternion rotasi dan matriks translasi dari penanda QR.

Integrasi ke dalam ARKit Apple

Bagian terakhir adalah integrasi semua informasi tentang pose penanda QR ke dalam adegan 3D yang dibuat oleh ARKit. ARKit menggunakan Visual Inertial Odometry (VIO) untuk secara akurat melacak dunia di sekitarnya. VIO menggabungkan data sensor kamera dengan data CoreMotion. Kedua input memungkinkan perangkat untuk merasakan bagaimana ia bergerak di dalam ruangan dengan tingkat akurasi yang tinggi, dan tanpa kalibrasi tambahan. Semua barang rendering didasarkan pada Apple's Metal dan Apple's SceneKit di atasnya.

Untuk membuat simpul SceneKit pada penanda QR kami dengan cara yang tepat, kami perlu membuat matriks model penanda QR kami dari matriks quaternion dan translasi yang kami peroleh dari OpenCV. Langkah selanjutnya adalah melipatgandakan matriks model penanda QR oleh sceneKit scene kamera virtual transformasi matriks. Sebagai hasilnya, kita dapat melihat simpul khusus (Sumbu simpul dalam proyek kami) yang mengulangi semua gerakan penanda QR di dunia nyata sementara di dalam mengajukan pandangan kamera iPhone dan jika tidak - itu tetap pada yang terakhir diperbarui posisi sehingga kita bisa memeriksanya.

Move


3
2017-09-11 10:51