Visi kamera tunggal dan sistem pemetaan

17

Beberapa waktu yang lalu saya melihat demo 'tank mainan' kecil dengan satu kamera terpasang di sana. Tangki ini mampu berkeliling lantai dan mendeteksi benda-benda lalu bergerak / mengarahkan untuk menghindarinya. Bagian yang menarik adalah menggunakan sistem penglihatan kamera tunggal dan sejauh yang saya ingat memanfaatkan lantai yang datar. dan kemudian menggunakan tingkat fitur bergerak di adegan relatif terhadap motor dan arah perjalanan untuk mengevaluasi dan karenanya memetakan adegan.

Adakah yang bisa mengirim saya petunjuk apa yang harus dicari untuk mendapatkan informasi lebih lanjut tentang ini, atau beberapa petunjuk ke basis kode yang dapat melakukan ini.

Alasan saya bertanya adalah bahwa ini adalah sistem kamera tunggal dari beberapa tahun yang lalu (5+) dan karena itu (dari apa yang saya ingat) adalah beban komputasi yang relatif rendah. Saya berniat untuk mencoba ini pada Raspberry PI untuk membangun mobil / tangki yang memetakan kamar atau set kamar.

Ben
sumber
2
Selamat datang di robotika, Ben. Silakan periksa Cara Meminta dan berkeliling untuk mendapatkan beberapa petunjuk tentang cara menulis pertanyaan praktis yang dapat dijawab berdasarkan masalah aktual yang Anda hadapi . Terima kasih,
Markus Booth

Jawaban:

4

Sulit untuk mengatakan dengan tepat apa yang mereka lakukan, tetapi istilah yang Anda inginkan di sini adalah " aliran optik " dan " egomotion ". Kedengarannya seperti mungkin ada beberapa deteksi fitur dan pencocokan (seperti SURF atau SIFT) atau segmentasi latar belakang / latar belakang yang dilemparkan juga.

OpenCV mungkin adalah basis kode yang paling banyak digunakan untuk visi komputer, mereka memiliki banyak fungsi untuk analisis gerak . OpenCV harus dijalankan pada Raspberry Pi, meskipun algoritme Anda mungkin dibatasi oleh daya komputasi.

WildCrustacean
sumber
4

Membangun tanggapan WildCrustcean kemungkinan lain adalah visi stereo . Meskipun kita sering menganggap penglihatan stereo sebagai menggunakan dua kamera, teknik ini benar-benar hanya membutuhkan gambar yang dipindahkan di ruang angkasa dan model perpindahan. Dengan kata lain saya bisa mengambil gambar, memindahkan, lalu mengambil gambar lain. Selama saya tahu transformasi antara kedua gambar ini, saya kemudian dapat menggunakan teknik penglihatan stereo untuk menghitung jarak ke titik dalam gambar.

DaemonMaker
sumber
2
Saya pikir teknik yang Anda bicarakan disebut "Struktur dari gerak".
Kozuch
1

Itu bisa saja menggunakan Pelacakan Parellel dan Pemetaan PTAM . PTAM adalah implementasi dari masalah Pelokalan dan Pemetaan Simultan (SLAM) yang menggunakan kamera tunggal untuk membangun peta dunia 3D dan melokalkan dengan melacak fitur visual.

Tim saya pernah bereksperimen dengan menggunakan paket PTAM di ROS .

Kami menjalankan Ubuntu pada Intel Atom, dan seingat saya tidak terlalu banyak pada prosesor. Kami akhirnya tidak menggunakannya, terutama karena kami tidak bisa mendapatkannya untuk menemukan fitur yang cukup di lingkungan tempat robot kami akan berjalan.

Robz
sumber
0

Secara umum Anda tidak dapat mengekstraksi pengukuran jarak metrik dari satu gambar, kecuali jika Anda memiliki informasi tambahan tentang dunia. Misalnya, jika Anda tahu dunia ini planar (atau Anda dapat mendeteksi lantai, yang merupakan wilayah planar), maka Anda dapat memperkirakan homografinya.

Homografi adalah transformasi proyektif antar pesawat (matriks 3x3). Dengan adanya kalibrasi intrinsik kamera, Anda dapat menguraikan homografi yang diinduksi oleh pesawat ini menjadi rotasi dan terjemahan. Terjemahan hingga skala. Anda dapat mengatasi ambiguitas skala ini dengan mengetahui jarak dari kamera ke lantai (bidang).

Setelah memiliki homografinya, Anda dapat mendeteksi objek yang tidak ada di pesawat. Homografi memungkinkan Anda melengkungkan gambar pertama ke gambar kedua. Objek di pesawat akan sejajar dan akan memiliki kesalahan kecil. Objek tidak di pesawat tidak akan sejajar. Ini disebut paralaks.

Salah satu cara untuk mengimplementasikannya adalah

  1. Ekstrak fitur dari kedua gambar.
  2. Cocokkan fiturnya, atau lacak.
  3. Perkirakan homografinya menggunakan RANSAC.
  4. Dekomposisi homografi menjadi rotasi dan terjemahan menggunakan kalibrasi.
  5. Warp gambar pertama ke yang
    kedua. Piksel dengan kesalahan besar tidak ada di lantai dan bisa menjadi
    penghalang.

Sebagian besar blok bangunan diimplementasikan dalam opencv (lihat http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html ).

Semoga berhasil.

PS dekomposisi homografi juga akan memberi Anda normal dari pesawat. Tapi, karena Anda menganggap ini adalah bidang tanah, kami memiliki titik normal di arah atas. Solusi yang lebih tepat dapat dicapai dalam prosedur kalibrasi Anda. Anda dapat menggunakan target kotak-kotak dan memperkirakan posisinya. Pose akan memiliki pesawat yang normal dan jarak ke kamera.

bendervader
sumber