Bagaimana saya bisa merekonstruksi struktur 3D dari serangkaian gambar?

24

Saya memiliki serangkaian kontur (kumpulan segmen garis) yang dikelompokkan dengan cara berikut:

Ssaya={saya0,sayaπ4,saya2π4,...,saya7π4}

dimana

  • Ssaya menunjukkan urutan foto dari satu objek konkret.
  • sayaj menunjukkan suatu gambar, dengan sudut pandang ( berarti tampilan depan). jthj=0

Berikut adalah contoh (tampilan belakang): sayaπ

masukkan deskripsi gambar di sini

Bagaimana saya bisa merekonstruksi struktur 3d objek dengan diberikan ?Ssaya

Dapatkah seseorang mengarahkan saya ke beberapa makalah atau bahkan memberi saya beberapa kata kunci? Saya tahu bahwa ada banyak artikel yang beroperasi dengan awan titik dan sebagainya, tetapi itu tidak berfungsi karena saya beroperasi dengan garis.

om-nom-nom
sumber

Jawaban:

20

Sebenarnya itu adalah topik yang cukup sulit. Transaksi rekonstruksi 3d multi-view klasik dengan pencocokan titik di tempat pertama, yaitu menemukan titik yang sama pada setiap gambar. Mengingat parameter kamera (tampilan) untuk setiap gambar, titik 3d asli dapat direkonstruksi. (Menggunakan laser atau proyektor adegan dapat menyala sehingga pencocokan dapat dilakukan dengan relatif mudah.)

Alkitab bidang ini adalah Multiple View Geometry in Computer Vision oleh Hartley dan Zisserman

Dalam buku ini ada bagian tentang tensor trifocal, yang merupakan batasan multinear antara 3 pandangan. Ini mengandung tidak hanya titik tetapi juga batasan korespondensi baris. Ini dapat digunakan untuk rekonstruksi bangunan dengan sangat baik.

Jadi kontur Anda harus dicocokkan di tempat pertama, dan mungkin dapat direkonstruksi mengetahui parameter kamera (kalibrasi kamera juga tercakup dalam buku ini). Maka Anda akan memiliki kontur dalam 3d tetapi tidak lebih. Untuk permukaan nyata Anda harus melakukan pencocokan titik padat. Meskipun tensor yang saya sebutkan terlihat bagus tetapi digunakan untuk garis lurus dan saya yakin bahwa mobil modern memiliki garis melengkung di mana-mana.

Saya tidak tahu bagaimana Anda mendapatkan kontur itu tetapi melihat gambar yang telah Anda posting saya cukup skeptis tentang kekokohan algoritma itu, sehingga rekonstruksi akan menjadi buruk.

Metode lain yang terlintas dalam pikiran saya adalah lambung visual atau ukiran ruang . Kontur matematika juga harus dilakukan. Menjalankan metode pada setiap kontur Anda dapat memiliki model.

Bálint Fodor
sumber
Saya mendapatkan kontur dengan menerapkan Canny, dan kemudian dengan beberapa algoritma penyederhanaan garis, yang mengambil raster biner dan kemudian mengembalikan set tepi. Sebenarnya, adalah mungkin untuk melibatkan gambar polos, tanpa filter, tetapi alasan saya merumuskan tugas dengan cara ini adalah bahwa saya perlu terus-menerus menghitung kontur di bawah sudut yang berbeda (yang bisa memiliki delta yang cukup rendah: < ) pandangan. Saya pikir, jika saya bisa mengembalikan edge dalam 3d, yang perlu saya lakukan hanyalah melakukan proyeksi. Mungkin, itu adalah kesalahan (jika demikian, tolong, beri tahu saya). π/4
om-nom-nom
1
Saya tidak melihat bagaimana Anda mendapatkan titik 3d di luar kontur dengan proyeksi. Ada teknik pemodelan 3d yang berurusan dengan permukaan NURBS yang terbentang di antara splines, tetapi Anda harus memberikan splines karakteristik untuk itu. (Mungkin seniman 3d dapat mendefinisikan karakteristik kata dalam konteks ini, tetapi bukan saya.) Sekali lagi, saya pikir bentuk-dari-kontur (sama seperti lambung visual) dapat membangun model kasar untuk Anda. Setelah itu Anda dapat memperbaikinya berdasarkan pada gambar. Tetapi tidak ada cara standar untuk itu.
Bálint Fodor
2

Meskipun disebutkan oleh buku Fodor Hartley dan Zisserman pasti layak dibaca lebih untuk pemahaman umum daripada untuk algoritma praktis. Cukup ketinggalan jaman dan metode-metode itu tidak efisien. Tentang masalah Anda - perumusan masalah itu sendiri sangat jarang. Seperti yang disebutkan oleh Fodor dimulai dengan mencocokkan poin fitur daripada kontur jauh lebih mudah. Dalam hal poin, ikhtisar terbaik dari metode modern yang tersedia adalah karya Triggs "Penyesuaian Bundel - Sintesis Modern" Tetapi sebelum menggunakan penyesuaian bundel, Anda harus mencocokkan titik yang sesuai pada gambar menggunakan sesuatu seperti SIFT atau pencocokan templat. Google untuk rekonstruksi 3Duntuk contoh beberapa metode lengkap. Anda juga dapat menggunakan paket open source untuk itu, ada beberapa yang tersedia.

Jika Anda bersikeras menggunakan kontur masalahnya jauh lebih sulit, meskipun masih (hampir) traktat. Pertama, Anda harus mengidentifikasi dan mencocokkan kontur yang sesuai di semua gambar, setelah itu menuliskan fungsi biaya - jumlah kesalahan proyeksi ulang untuk setiap grup kontur yang cocok sebagai fungsi dari posisi kamera & orientasi setiap gambar. Setelah itu temukan set posisi kamera yang meminimalkan fungsi biaya ini. Setiap langkah dari proses ini sangat sulit, dan tidak ada gambaran yang bagus seperti Triggs. Anda dapat google beberapa makalah yang relevan sebagai kombinasi dari istilah "kontur" "kontur yang cocok" "penyesuaian bundel" "kesalahan proyeksi ulang" "rekonstruksi 3D".

mirror2image
sumber
Meskipun pasti lebih mudah untuk berurusan dengan fitur seperti SIFT, ada masalah bahwa SIFT di domain saya sering menangkap bayangan / refleksi pada permukaan mobil yang mengkilap, jadi dengan menggunakan SIFT saya mendapatkan sejumlah besar fitur noise yang tidak bergantung pada fitur aktual. bentuk mobil maka saya memiliki akurasi yang menurun.
om-nom-nom
Anda dapat mencoba pendekatan berbasis model jika Anda tahu sedang mencari di mobil. Parametrize model mobil umum dan coba paskan ke gambar menggunakan semua piksel gambar. Tulis fungsi biaya sebagai fungsi parameter kamera dan parameter model mobil dan minimalkan. Mungkin berhasil (atau mungkin tidak) - Anda tampaknya memiliki masalah yang cukup sulit.
mirror2image
Sayangnya, saya tidak mengerti apa yang Anda usulkan untuk dilakukan. Tolong, berikan beberapa contoh (bisa berupa artikel eksternal, pekerjaan terkait atau sesuatu seperti ini).
om-nom-nom
Maksud saya model bentuk aktif en.wikipedia.org/wiki/Active_shape_model atau sejenisnya
mirror2image
2

Lihat Rekonstruksi Model dari Gambar yang sedikit berbeda dari apa yang Anda lakukan tetapi saya berbicara tentang cara beralih dari gambar ke model 3d. Lihat juga MeshLab , ia memiliki beberapa algoritma rekonstruksi yang dapat Anda gunakan untuk memasukkan data Anda.

yxk
sumber