Hitung koordinat ruang Kamera dari vtk render

Saya telah merender gambar dalam vtk, saya ingin memproyeksikan titik gambar (x,y) ke koordinat bingkai kamera 3D. Untuk setiap piksel (x,y) saya memiliki nilai z di bingkai kamera (diperoleh dari z-buffer).

Di bawah proyeksi lubang jarum, cara standar untuk melakukan hal ini adalah:

x_camera_frame = (x_pixel - cx) * z_camera_frame/ fx;

y_camera_frame = (y_pixel - cy) * z_camera_frame / fy;

dimana fx dan fy adalah panjang fokus dan cx cy adalah pusat proyeksi kamera (parameter intrinsik).

Masalahnya adalah, dengan vtkCamera Anda hanya dapat mengatur bidang pandang tetapi tidak ada cara untuk mengatur atau mendapatkan panjang fokus atau pusat proyeksi, jadi bagaimana cara menghitung x_camera_frame dan y_camera_frame?


person Aly    schedule 08.08.2013    source sumber


Jawaban (1)


Biasanya pusat proyeksi adalah posisi kamera, yaitu. (0,0,0) di ruang kamera. Itu berarti sudut kiri atas gambar Anda harus berada di P = (-imagewidth/2, -imageheight/2, fl), (fl adalah panjang fokus) dengan asumsi tidak ada transformasi 2d lebih lanjut (memotong, mengubah ukuran, dll) yang diterapkan setelah transformasi perspektif.

P di sini mewakili titik pada bidang gambar yang dilihat dari ruang kamera. Untuk mengonversinya, kalikan dengan kebalikan dari matriks proyeksi dan Anda akan mendapatkan titik di ruang kamera.

Saya berasumsi Anda tahu berapa lebar dan tinggi gambar. Untuk mendapatkan panjang fokus, jarak antara kamera dan titik fokus dapat digunakan. API juga mengembalikan Matriks Transformasi Proyeksi, sehingga Anda dapat menghitung kebalikannya, sebelum menerapkannya pada titik bidang gambar.

arun

person Arun R    schedule 08.08.2013