Bagaimana cara mendapatkan awan titik padat dari kamera stereo?

12

Saya mencoba menggunakan kamera stereo untuk rekonstruksi adegan, tetapi saya biasanya hanya dapat memperoleh awan titik jarang (yaitu lebih dari setengah gambar tidak memiliki informasi kedalaman yang tepat).

Saya menyadari bahwa algoritma pemrosesan stereo bergantung pada keberadaan tekstur dalam gambar dan memiliki beberapa parameter yang dapat diubah untuk mendapatkan hasil yang lebih baik, seperti rentang perbedaan atau ukuran jendela korelasi. Meskipun saya mengatur parameter ini, saya tidak pernah bisa mendapatkan hasil yang bahkan jauh dari apa yang bisa diperoleh dengan menggunakan sensor aktif seperti Kinect.

Alasan mengapa saya menginginkannya adalah karena seringkali titik awan yang sesuai dengan daerah yang berdekatan tidak memiliki cukup tumpang tindih bagi saya untuk mendapatkan kecocokan, sehingga rekonstruksi sangat terganggu.

Pertanyaan saya kepada para pakar Computer Vision di luar sana adalah sebagai berikut: apa yang dapat saya lakukan untuk mendapatkan awan titik padat secara umum (tanpa mengubah lingkungan kantor saya secara sewenang-wenang)?

georgebrindeiro
sumber
Ini adalah pertanyaan yang bagus, tetapi saya pikir lebih banyak detail diperlukan. Algoritme apa yang Anda coba hitung dari kecocokan? Bisakah Anda mengklarifikasi apa yang Anda maksud dengan "wilayah yang berdekatan" dan "tumpang tindih?".
Josh Vander Hook
Ketika saya mengatakan "daerah yang berdekatan", maksud saya bagian dari ruang fisik yang tidak setara tetapi memiliki persimpangan yang tidak kosong, yang saya sebut "tumpang tindih". Yaitu, jenis daerah yang akan menghasilkan titik awan yang bisa dicocokkan dan dijahit dalam algoritma ICP.
georgebrindeiro
Tentang algoritme, saya masih menggunakan solusi sesederhana mungkin yang dapat saya temukan: node ROS stereo_image_proc , yang menerapkan algoritma global block matching yang tersedia di OpenCV. Saya akan sangat tertarik mendengar tentang pengaturan parameter yang mungkin tidak dapat diakses secara langsung kepada saya melalui node ROS atau algoritma lain yang diketahui memberikan hasil yang lebih baik.
georgebrindeiro

Jawaban:

4

Anda dapat mencoba untuk melewatkan deteksi titik yang menonjol, dan hanya mengambil sampel di atas gambar (seperti grid atau lebih) dan menghitung deskriptor fitur di setiap titik sampel. Anda mungkin bahkan bisa menghitung deskriptor untuk setiap piksel.

Anda mungkin kehilangan invarian skala, tetapi saya pikir ini tidak akan terlalu menyakitkan untuk penglihatan stereo karena objek akan berada pada skala yang kira-kira sama pada kedua gambar.

Pendekatan lain mungkin untuk menggabungkan beberapa algoritma deteksi titik penting: sudut, tepi, gumpalan dan sebagainya. Maka Anda harus menggunakan algoritma deskriptor fitur yang sama untuk semua titik yang terdeteksi, namun bagian terakhir ini mungkin agak sulit untuk diterapkan.

muksie
sumber
2

Jadi algoritma pemrosesan gambar stereo yang saya gunakan di masa lalu diimplementasikan piksel demi piksel. Kami hanya menggunakan model kamera lubang jarum dan melakukan beberapa pengukuran kuno dengan pita pengukur sampai estimasi kedalaman kami cocok dengan yang asli.

Persamaan untuk sepasang kamera paralel adalah:

  • d=
  • f=
  • Bingkai Koordinat:
    • x,y,z=
    • kamuR,vR
    • kamuL.,vL.
    • Catatan: koordinat kamera memiliki asal-usulnya pada bingkai koordinat antara kamera (yaitu sumbu u menghadapi arah yang berlawanan)

kamuL.=f(x-d)zkamuR=f(x+d)z

zkamuR=f(x+d)zkamuL.=f(x-d)

z(kamuR-kamuL.)=2df

z=2dfkamuR-kamuL.

y=vL.z+dff

x=kamuL.z+dff

Dengan menggunakan persamaan ini, Anda dapat menghitung awan stereo yang padat. Satu untuk setiap piksel di kamera Anda.

thealmightygrant
sumber
Terima kasih atas usahanya, tapi saya kenal dengan pemodelan stereo. Masalahnya biasanya pada korespondensi antara koordinat (u, v) di kamera kiri dan kanan. muksie memberikan beberapa ide tentang bagaimana menghadapinya dan sylvain.joyeux menunjukkan sebuah perpustakaan stereo hebat yang mengarah pada hasil yang lebih baik, meskipun ...
georgebrindeiro
1

Ketika Anda berkata, "lebih dari setengah gambar tidak memiliki informasi kedalaman yang tepat", setengahnya?

Satu masalah yang kami temui adalah bahwa jika jarak-ke-objek memiliki urutan yang sama besarnya dari garis dasar Anda (biasanya terkait dengan kamera sudut yang sangat lebar), maka algoritma stereo padat "standar" tidak berfungsi dengan baik. Kami telah menggunakan perpustakaan libelas, dan pengembangnya memberi tahu kami bahwa ini disebut "stereo baseline besar" dan merupakan masalah lain.

sylvain.joyeux
sumber
Ketika saya mengatakan setengah gambar tidak memiliki informasi kedalaman yang tepat, maksud saya bahwa dari semua piksel, hanya sekitar setengahnya yang menghitung kesenjangan (tidak harus membentuk satu wilayah yang berdekatan). Saya tidak memiliki masalah yang sama dengan yang Anda sebutkan dengan rasio jarak-ke-objek / dasar, tetapi sangat menarik untuk mendengar tentang perpustakaan itu dan ini bisa menjadi masalah. Terima kasih!
georgebrindeiro
1
Either way, saya akan mencoba libelas karena saya menemukan pembungkus ROS untuk itu!
georgebrindeiro
0

Lihat pemimpin Benchmark Stereo KITTI . Penghitungan ini menghukum algoritma untuk tidak menghasilkan disparitas pada titik tertentu, sehingga pemain top menghasilkan output yang padat (bahkan jika mereka tidak memiliki banyak alasan untuk estimasi mereka di banyak titik). Beberapa metode memiliki kode yang tersedia untuk umum yang ditautkan, yang dapat Anda coba.

Perhatikan bahwa mereka tidak dihukum karena mengambil waktu yang lama, begitu banyak metode akan mengambil urutan menit per gambar untuk dijalankan dan mungkin tidak cocok untuk aplikasi Anda. Ada banyak metode berbasis CNN yang diperkenalkan dengan sangat baik, sementara masih berjalan dalam waktu kurang dari satu detik (pada GPU). Setidaknya salah satu dari ini (CRL) memiliki kode publik.

Jika Anda masih tidak mendapatkan perkiraan kedalaman yang layak dengan ini pada gambar Anda, maka Anda mungkin hanya melihat batas apa yang layak dari pendekatan yang terlihat. Pada dasarnya perlu ada tekstur yang berbeda di area tersebut agar dapat mencocokkan poin dengan baik, atau Anda perlu dasar untuk membuat beberapa asumsi yang kuat (misalnya, kehalusan) di wilayah tanpa tekstur.

surtur
sumber