Bagaimana cara memilih kamera untuk sistem visi stereo?

18

Saya sedang dalam proses membangun sistem visi stereo untuk digunakan pada UGV. Sistem ini untuk robot yang akan digunakan dalam kompetisi di mana robot tersebut dioperasi untuk menemukan batu berwarna relatif kecil di lapangan luar yang besar. Saya mengerti bagaimana mengkalibrasi sistem seperti itu dan memproses data untuk sistem visi stereo. Namun saya tidak tahu bagaimana memilih kamera untuk sistem seperti itu. Apa praktik terbaik untuk memilih kamera untuk sistem visi stereo?

DaemonMaker
sumber

Jawaban:

11

Dari atas kepala saya, saya akan pergi dengan kriteria seleksi berikut

  • color / b & w - biasanya b & w lebih baik, karena algoritma stereo hanya menggunakan satu saluran saja
  • baseline - ini sangat tergantung pada tempat kejadian. Dengan baseline Anda mengontrol seberapa banyak akurasi yang Anda dapatkan dengan jarak. Baseline yang lebih luas menghasilkan nilai disparitas yang lebih tinggi dan dengan demikian lebih sedikit noise pada estimasi jarak. Garis dasar yang lebih tinggi juga berarti Anda akan mendapatkan tumpang tindih yang berkurang antara bidang tampilan Anda. Namun yang paling penting, semakin luas garis dasar semakin sulit pencocokan antara kedua tampilan. Jadi kualitas hasilnya turun.
  • rana - selalu gunakan rana global untuk apa pun yang memiliki visi komputer pada robot seluler
  • resolusi - sebagian besar algoritma stereo mahal secara komputasi. Dan Anda kemungkinan tidak akan membutuhkan banyak poin 3d. Di bidang dekat kepadatan sampel biasanya cukup, dan bidang jauh kesalahan Anda dari perbedaan rendah lebih merupakan masalah daripada kepadatan sampel. 640x480 baik-baik saja dalam banyak kasus. Beberapa chip memiliki rasio aspek yang lebih luas, yang menguntungkan untuk tumpang tindih, tetapi Anda bisa mendapatkan yang sama dengan menggunakan sub-jendela chip Anda.
  • tujuan / bidang pandang - untuk robot luar ruang seluler Saya lebih suka bidang pandang luas dibandingkan tujuan sempit. Kurang lebih karena alasan yang sama dengan resolusi. Pastikan tujuan Anda kaku dan memiliki sarana untuk memperbaiki setiap bagian yang bergerak misalnya misalnya panjang fokus yang bisa disesuaikan. Dalam kebanyakan kasus, panjang fokus tetap baik-baik saja, karena Anda dibatasi oleh pemilihan baseline Anda.
  • pemicu - saat Anda membuat rig stereo Anda sendiri, kamera Anda harus mendukung pemicu perangkat keras dan idealnya satu pemicu yang lain.
  • framerate - Menurut saya pertimbangan paling tidak penting. Kecuali jika Anda memiliki banyak kekuatan pemrosesan Anda tidak akan mendapatkan lebih dari sesuatu seperti 5 Hz. Jadi algoritme Anda lebih cenderung menjadi hambatan, bukan chip atau koneksi.
  • antarmuka - Sebagian besar kamera dilengkapi dengan Firewire / USB2 / USB3 / Ethernet. USB2 tidak berguna karena mengkonsumsi banyak CPU. Firewire bagus jika Anda memiliki porta, tetapi saya pikir sepertinya ada penurunan yang mendukung USB3 hari ini. Belum memiliki banyak pengalaman dengan USB3. Ethernet cukup bagus karena Anda lebih mungkin menemukan sistem tertanam dengan GigEthernet daripada USB3 saat ini.
  • perumahan - sekaku mungkin. Mengkalibrasi ulang adalah prosedur yang menjengkelkan.
Jakob
sumber
6

Anda harus mulai dengan menghitung berapa frame per detik yang Anda butuhkan, dan berapa banyak resolusi kamera yang dapat Anda proses pada framerate itu. Jika tidak ada yang lain, itu akan mencegah Anda dari pengeluaran berlebihan atau dari membeli kamera yang tidak sesuai dengan kebutuhan Anda.

Di luar itu, ada beragam fitur yang membuat pilihan lebih sulit / menarik. Kamera yang berbeda (terutama kamera jaringan seperti Axis) memungkinkan Anda untuk mengubah kualitas gambar, atau menentukan bitrate maksimum untuk aliran gambar. Beberapa kamera juga memberi Anda pilihan pada kecepatan rana, yang memungkinkan Anda memilih waktu pencahayaan konstan atau pencahayaan rata-rata konstan dalam gambar. Beberapa kamera lebih sensitif daripada yang lain (terakhir saya bekerja dengan ini pada tahun 2009, dan kami memperhatikan bahwa PS3 Eye bekerja sangat baik dalam kondisi cahaya rendah).

Mungkin hal terbaik yang dapat Anda lakukan adalah menjalankan algoritma pemrosesan gambar Anda pada beberapa gambar statis yang Anda ambil dengan DSLR, kemudian berusaha mengurangi ukuran dan kualitas bingkai untuk melihat di mana hal-hal mulai rusak.

Ian
sumber
6

Beberapa hal yang harus Anda waspadai:

  • Rana global pada dasarnya berarti semua piksel ditangkap pada saat yang bersamaan, berlawanan dengan Rolling shutter yang ditangkap secara berurutan dengan cara pemindaian garis. Karena UGV Anda akan bergerak dan melakukan algoritme stereo pada gambar yang Anda ambil, mungkin penting Anda menghindari penyimpangan yang terjadi saat kamera bergerak, seperti yang terlihat pada gambar di bawah ini (diambil dari Wikipedia ):

Pindah mobil yang diambil dengan ponsel kamera CMOS menunjukkan kecenderungan Foto yang memperlihatkan paparan sebagian.  Kondisi pencahayaan berubah antara pemaparan bagian atas dan bawah foto. Tembakan baling-baling turboprop

  • Sinkronisasi kamera dalam perangkat keras dapat dicapai oleh beberapa kamera, terutama kamera firewire AFAIK. Itu dapat sangat meningkatkan hasil stereo ketika ada sesuatu yang bergerak.

  • Pemasangan harus dilakukan sedemikian rupa sehingga perubahan dalam parameter ekstrinsik (pose relatif antara kamera) untuk pasangan stereo tidak akan berubah setelah kalibrasi. Di rig Anda yang mungkin lebih penting, karena UGV mungkin menghadapi medan yang tidak rata di luar ruangan dan segalanya akan bergetar.

  • Perangkat keras stereo khusus memungkinkan untuk memperoleh gambar disparitas secara langsung sebagai output dari sistem visi stereo Anda, yang memudahkan beban dari komputasi tertanam Anda. Ini juga cenderung jauh lebih cepat daripada menjalankan algoritma yang sama dalam perangkat lunak.

Seperti biasa, semakin Anda bersedia membayar semakin baik hasilnya. Sejujurnya, jika Anda dapat membeli kamera stereo full-blown seperti Bumblebee2 , itulah yang akan saya lakukan. Kalau tidak, jika Anda berada di sisi yang lebih murah, saya hanya akan pergi dengan Kinect : tidak mungkin Anda akan bisa mendapatkan sistem yang mengungguli itu dengan harga yang sama.

georgebrindeiro
sumber
Pertanyaannya adalah untuk sistem outdoor. Ini secara efektif mengesampingkan Kinect. Juga, algoritma yang datang dengan Bumblebee jauh dari optimal, kami temukan.
Jakob
Saya bersama Anda di komentar Kinect, tetapi tidak dapatkah algoritma stereo yang datang dengan Bumblebee diganti dengan kode Anda sendiri? Keuntungan terbesar yang saya tunjukkan adalah perangkat keras yang sebenarnya, bukan perangkat lunak yang dibundel dengannya.
georgebrindeiro
ya itu benar. Anda dapat menggunakannya seperti dua kamera normal, dan memiliki keunggulan berupa perumahan yang kaku.
Jakob
tidak hanya itu tetapi rana global, lensa bagus dan barang lainnya
georgebrindeiro
4

Itu adalah topik yang menarik, dan tidak mudah untuk mendapatkan yang benar pada percobaan pertama. Dari pengalaman dengan ini, berikut adalah hal yang paling penting.

  • Sinkronisasi . Kamera harus disinkronkan 100%. Sebagai contoh, katakanlah UGV mengemudi pada kecepatan 36Km / jam (10 m / s) dan merekam frame pada 30 frame per detik. Artinya, pada setiap frame UGV akan mencakup 3m. Sekarang, katakan sinkronisasi Anda dimatikan 1 ms, salah satu kamera akan mati ~ 0.3 m, yang buruk [hanya dari atas kepala saya]. Masalah sinkronisasi sangat sulit dideteksi.

  • δZ=Z2BfδdδZBfδZδdδd1/2δd

  • Tumpang tindih . Anda ingin memiliki tumpang tindih antara kamera untuk mendapatkan stereo. Oleh karena itu, Anda perlu memilih kombinasi panjang fokus lensa (bidang pandang) dan garis dasar sehingga Anda memiliki cukup banyak tumpang tindih untuk aplikasi tersebut. Pada dasarnya, trigonometri berfungsi di papan tulis, atau skrip matlab / python cepat.

Untuk UGV, ada dua kegunaan untuk stereo.

  1. Navigasi dan Estimasi Pose Dalam hal ini Anda kemungkinan besar membutuhkan garis dasar besar + panjang fokus panjang. Ini memungkinkan stereo untuk melihat dan menyelesaikan kedalaman dengan lebih baik dan jarak yang lebih jauh.

  2. Deteksi dan penghindaran rintangan Anda mungkin perlu garis dasar yang lebih pendek dan lensa yang lebih lebar (panjang fokus lebih kecil) sehingga Anda dapat fokus pada hal-hal yang sangat dekat dengan Anda.

Beberapa UGV mungkin memiliki kedua pengaturan stereo, bidang pandang dasar awal yang sempit untuk navigasi dan satu atau dua lainnya untuk menghindari rintangan.

Berhati-hatilah dengan apa yang Anda beli. Beberapa perusahaan menawarkan pengaturan stereo yang sudah dibangun. Itu bagus di sisi kekokohan, mereka tidak kehilangan kalibrasi dengan mudah dan selalu sinkron. Masalahnya adalah bahwa yang tersedia secara komersial memiliki garis dasar kecil. Jika Anda ingin membangun sendiri. Saya kira Anda akhirnya akan melakukannya, pastikan kamera dapat disinkronkan . Firewire sangat bagus untuk ini, dua kamera di bus yang sama akan disinkronkan dengan akurasi 125 mikrodetik di luar kotak! Kamera USB dan Gige sulit untuk disinkronkan. Ketika Anda meletakkan semuanya bersama-sama, Anda ingin memastikan bahwa lensa tidak akan bergerak sama sekali, dan garis dasarnya kaku, sangat kaku untuk aplikasi.

Hati-hati dalam pemilihan lensa. Tidak semua lensa berfungsi dengan semua kamera. Lensa juga memiliki resolusi. Ini adalah topik lain, berikut ini adalah artikel pendek tentang http://www.qualitymag.com/articles/90642-qa--seleksi-lensa-for-machine-vision-systems

bendervader
sumber
4
Perhitungan sinkronisasi Anda salah. 30 FPS pada 10m / s memberikan jarak 33cm (bukan 3m) per frame. Juga 1 ms pada kecepatan ini berarti jarak 1cm (terlepas dari FPS). Jadi sinkronisasi pada level ms adalah hasil super sebenarnya untuk kecepatan seperti itu!
Kozuch