Saturday, December 9, 2017

Memahami Camera Projection untuk Simulasi

Bismillah ar-Rahman ar-Rahiim. Biasa... cerita dulu dong. Kira2 dua tahunan yang lalu, seorang rekan yang sedang studi di Ausie bertanya terkait Computer Vision. Waktu itu saya jawab belum ada pengetahuan tentang itu sama sekali, sambil menyimpan rasa2 penasaran gitu. Dua tahun berlalu begitu saja, dan kini saya berada di dalam kondisi dimana harus mempelajari salah satu teknik dasar dalam Computer Vision, yaitu Camera Projection. Alhamdulillah, memang takdir Tuhan itu penuh misteri dan menakjubkan. Saya cerita bebas di sini, siapa tahu ada rekan2 di Nusantara Raya yang menghadapi problem yang sama.

PROBLEM STATEMENT

Kasus yang saya hadapi adalah simulasi menggunakan kamera untuk mendeteksi sasaran. Saya asumsikan sasaran terdeteksi sebagai titik di kamera. Persoalannya adalah, ketika kamera bergerak mendekati sasaran, bagaimanakah pergerakan titik sasaran yang tertangkap di kamera. Awalnya saya menduga bahwa persoalan ini sekedar transformasi koordinat saja, namun komplikated juga kalau direnung2 sendiri. Setelah konsultasi dengan Prof. Google, akhirnya saya mendapati bahwa persoalan simulasi kamera ini dibahas dalam topik Computer Vision yang disebut Camera Projection. Alhamdulillah, ada jalan keluarnya. Jadi, saya tinggal merenungkan bagaimana ketika kamera itu bergerak.


CAMERA PROJECTION

Camera Projection adalah teknik yang dapat digunakan untuk mensimulasikan kamera dalam menangkap objek di dalam layar film. Sebenarnya, teknik dasarnya adalah transformasi koordinat saja, hanya saja dalam transformasi ini ada penyesuaian 3D ke 2D. Semua konsep terkait ini saya pelajari dari paparan slide [1]. Prosedur Camera Projection diilustrasikan pada Gambar 1.


Gambar 1 Prosedur transformasi koordinat dalam Camera Projection [1]

Gambar 1 sekaligus menunjukkan tiga kerangka koordinat yang terlibat, yaitu koordinat bumi (3D), koordinat kamera (3D), dan koordinat film (2D). Dalam kasus saya, posisi target dinyatakan dalam koordinat bumi, lalu diproyeksikan ke koordinat kamera, lalu ditransformasikan ke koordinat layar film. Berikut ini matriks transformasi yang saya gunakan.

TRANSFORMASI POSISI TARGET DARI KOORDINAT BUMI KE KOORDINAT KAMERA

Kita gunakan Gambar 2 sebagai acuan. Anggap titik merah adalah titik sasaran. Pw adalah titik tersebut menurut koordinat bumi (hijau) sedangkan Pc adalah titik sasaran menurut koordinat kamera (biru). R adalah matriks rotasi koordinat bumi ke koordinat kamera dan C adalah koefisien translasi. Apabila tertarik meninjau konsep matriks rotasi, saya pernah menuliskannya dalam artikel tersendiri [2].

 

 
Gambar 2 Matriks transformasi koordinat bumi ke koordinat kamera

dimana

cx, cy, cz adalah koefisien translasi, yang tidak lain adalah posisi titik asal (origin) koordinat kamera terhadap koordinat bumi
ϕ,θ,ψ adalah sudut orientasi roll, pitch, yaw
 c(.) dan s(.) adalah operasi cos dan sin

PERHATIAN Tambahan angka 1 pada vektor koordinat adalah untuk penyesuaian dimensi untuk operasi translasi.

TRANSFORMASI KOORDINAT KAMERA KE KOORDINAT LAYAR FILM

Langkah ke dua adalah mendapatkan koordinat titik di layar film menggunakan matriks transformasi berikut ini. Gambar 3 menampilkan bahwa konsep transformasi ini menggunakan prinsip kesebangunan segitiga. Dulu saya diajari pertama kali waktu pelajaran Matematika SMP.

 
Gambar 3 Matriks transformasi koordinat kamera ke koordinat layar

dimana f adalah titik fokus kamera.

Lalu koordinat titik pada layar film (2D) didapatkan dengan

x = x'/z'

y = y'/z'

Nah, selesai sudah. Itulah prosedur transformasi titik sasaran dari koordinat bumi hingga koordinat layar film. Sebenarnya masih ada satu lagi, yaitu transformasi koordinat layar ke koordinat pixel. Lebih sederhana, namun belum sempat saya gunakan dan saya tuliskan. Mudah2an kelak ada kesempatan untuk menyambungnya, insya Allah.

SIMULASI

Lalu, saya akan sedikit cerita untuk simulasinya. Saya masih menggunakan Simulink MATLAB 2008 karena keringanannya. Saya mensimulasikan kamera ditumpangkan di ujung sebuah roket pendorong sehingga dia bisa melakukan gerak parabola dan menuntunnya menuju sasaran. Kira2 lintasan kamera seperti berikut ini.


Ada tiga eksperimen sederhana, pertama objek sasaran berjarak 600 m tepat berada di depannya. Tampilan perjalanan titik sasaran di layar film adalah seperti berikut.



Ke dua, objek sasaran berjarak 600 m di depan namun agak miring kanan 50 m. Tampilan perjalanan titik sasaran adalah seperti berikut.


Ke tiga, objek sasaran berjarak 600 m di depan namun agak miring kiri 50 m. Tampilan perjalanan titik sasaran adalah seperti berikut.


KUIS TAK BERHADIAH Coba renung2kan kenapa perjalanan titik seperti tiga gambar di atas, hayoo...?

PENUTUP

Sementara sekian dulu. Mohon maaf tidak bisa nulis lebih lengkap karena cepet2an. Bila artikel ini dirasa bermanfaat, mohon saya didoakan yang baik2 dalam hati atau paling tidak dibacakan al-Faatihah. Maturnuwun. Alhamdulillah Rabb al-Alamiin. Segala Puja Puji milik Allah, Tuhan Semesta Raya.

Format penulisan yang lebih baik dapat dilihat di versi pdf di sini:

https://www.researchgate.net/publication/321665259_Memahami_Camera_Projection_untuk_Simulasi

REFERENSI

[1] Robert Collins, Lecture 12: Camera Projection, Pennsylvania State University
[2] http://mnurq.blogspot.co.id/2017/11/memahami-sudut-euler-dan-matriks-rotasi.html

No comments:

Post a Comment