Contents — find the section you need
Visual SLAM, Visual Odometry, geometri epipolar, dan PnP semuanya menganggap bahwa pemetaan yang benar dari koordinat piksel ke ruang 3D sudah benar. Tetapi cahaya yang melewati lensa tidak pernah membentuk gambar seperti lubang jarum ideal dalam buku teks. Berapa panjang fokusnya, dalam satuan piksel? Seberapa jauh titik utama bergeser dari pusat gambar? Seberapa besar garis lurus melengkung pada gambar? Kalibrasi kamera adalah proses untuk menyelesaikan besaran-besaran ini secara numerik. Jika kalibrasi diabaikan, tidak peduli seberapa canggih algoritma SLAM atau SfM yang diterapkan di atasnya, kesalahan sistematis akan menyebar dari fondasi dasarnya.
0. Ringkasan 30 Detik
- Kalibrasi kamera adalah proses memperkirakan parameter intrinsik (panjang fokus, titik utama, kemiringan) dan koefisien distorsi dari korespondensi yang diketahui antara titik 3D dan titik gambar. Parameter ekstrinsik (posisi kamera pada setiap pengambilan gambar) dipulihkan pada saat yang sama.
- Lensa memiliki distorsi geometris radial dan tangensial. Representasi standar adalah model Brown–Conrady, yang menyatakan distorsi radial sebagai k_1,k_2,k_3 dan distorsi tangensial sebagai p_1,p_2. Lensa sudut lebar dan lensa fisheye memerlukan model yang berbeda.
- Metode Zhang — memotret pola planar (seperti papan catur) dari beberapa posisi, menyelesaikan secara linier parameter intrinsik dari homografi setiap tampilan, kemudian menyempurnakan termasuk distorsi melalui optimasi nonlinier — adalah metode kalibrasi standar dalam praktiknya.
-
Kualitas kalibrasi dinilai berdasarkan kesalahan reproyeksi. Melihat nilai rata-rata saja tidak cukup — Anda juga perlu memeriksa distribusi spasial kesalahan dalam gambar dan varians di seluruh pose, atau Anda akan melewatkan distorsi lokal yang tidak sepenuhnya terekam.
-
Kalibrasi bukanlah konstanta yang berlaku selamanya setelah ditemukan. Zoom, fokus, suhu, guncangan, dan perubahan resolusi atau pemotongan dapat mengubah parameter intrinsik. Visual SLAM, VO, dan PnP selanjutnya akan mengalami penurunan kinerja secara diam-diam setelah asumsi ini tidak terpenuhi.
1. Meninjau Kembali Model Lubang Jarum dari Koordinat
Titik koordinat dunia \mathbf{X}=(X,Y,Z,1)^\mathsf{T} (koordinat homogen) diproyeksikan ke gambar, sesuai skala, dalam model lubang jarum sebagai
R\in SO(3) dan \mathbf{t} adalah rotasi dan translasi dari koordinat dunia ke koordinat kamera (parameter ekstrinsik), dan K adalah matriks intrinsik
Di sini f_x,f_y adalah panjang fokus dalam satuan piksel, (c_x,c_y) adalah titik utama (di mana sumbu optik berpotongan dengan bidang gambar), dan s adalah kemiringan (hampir nol pada sebagian besar sensor modern). Kalibrasi adalah masalah kebalikan dari pemulihan K, koefisien distorsi, dan R,\mathbf{t} setiap tembakan, murni dari data yang diamati.
Seperti yang ditunjukkan diagram, satu bidikan saja tidak dapat memisahkan parameter intrinsik dari parameter ekstrinsik. Hanya dengan mengumpulkan beberapa pengamatan pada pose yang berbeda (kemiringan, jarak) K dapat ditentukan hampir secara unik — dan inilah ide inti di balik metode Zhang, yang akan dibahas selanjutnya.
2. Lensa Bukanlah Lubang Jarum Ideal: Model Distorsi
Lensa nyata memiliki distorsi radial dan distorsi tangensial. Dengan menulis koordinat gambar yang dinormalisasi sebagai (x,y)=(X_c/Z_c,\,Y_c/Z_c) dan jari-jari sebagai r^2=x^2+y^2, model distorsi Brown–Conrady dapat ditulis sebagai Berikut ini adalah koefisien distorsi radial, dan koefisien distorsi tangensial. Distorsi radial adalah fenomena di mana gambar menyusut atau menggembung tergantung pada jarak dari pusat lensa, yang muncul sebagai distorsi "barrel" yang terlihat jelas pada lensa sudut lebar, atau distorsi "pincushion" yang terlihat pada lensa telefoto. Distorsi tangensial adalah komponen asimetris yang lebih kecil yang timbul dari ketidaksempurnaan implementasi di mana kelompok lensa dan sensor gambar tidak sepenuhnya sejajar. Koordinat piksel akhir diperoleh sebagai \tilde{\mathbf{x}}_{px}=K(x_d,y_d,1)^\mathsf{T}.
Untuk lensa dengan bidang pandang yang sangat lebar, seperti lensa fisheye, model polinomial Brown–Conrady cenderung menyimpang di dekat tepi dan tidak praktis. Umumnya digunakan pendekatan proyeksi ekuidistan berbasis sudut, seperti model fisheye OpenCV. Daripada "menghafal satu model distorsi," penting untuk diingat bahwa model harus dipilih berdasarkan bidang pandang lensa dan desain optiknya.
3. Metode Zhang: Kalibrasi dengan Pola Planar
Metode yang paling banyak diterapkan saat ini adalah metode kalibrasi pola planar yang dipublikasikan Zhengyou Zhang pada tahun 2000. Tidak diperlukan alat kalibrasi 3D khusus — yang dibutuhkan hanyalah memotret pola planar, seperti papan catur yang dicetak, dari beberapa pose, menggerakkan kamera atau pola itu sendiri.
Pemetaan dari bidang pola (dengan mengambil Z=0 ) pada pose tertentu i ke gambar dapat ditulis sebagai homografi menggunakan kolom pertama dan kedua matriks rotasi \mathbf{r}_1,\mathbf{r}_2 dan translasi \mathbf{t} .
Di sini, H_i dari setiap pose dapat diperkirakan secara linier dari titik-titik grid yang diketahui pada pola dan korespondensi gambarnya, menggunakan metode DLT yang dibahas dalam Panduan Homografi. Dengan menggunakan batasan bahwa kolom matriks rotasi bersifat ortonormal — \mathbf{r}_1^\mathsf{T}\mathbf{r}_2=0,\ \|\mathbf{r}_1\|=\|\mathbf{r}_2\| — diperoleh persamaan linear dalam B=K^{-\mathsf{T}}K^{-1} :
yang memberikan dua persamaan tersebut per pose ( \mathbf{h}_1,\mathbf{h}_2 adalah kolom pertama dan kedua dari H_i). Karena B adalah matriks simetris dengan 6 derajat kebebasan, dengan 3 pose atau lebih, B dapat ditemukan melalui metode kuadrat terkecil linear, dan kemudian K dapat ditemukan dalam bentuk tertutup melalui prosedur yang setara dengan dekomposisi Cholesky. Inilah mengapa metode Zhang hanya membutuhkan "beberapa bidikan bidang". Namun, jika semua pose hampir sejajar dengan bidang gambar (sejajar depan), persamaannya akan terdegenerasi, sehingga diperlukan pose pada beberapa kemiringan yang berbeda.
Solusi bentuk tertutup hanyalah nilai awal yang mengabaikan distorsi. Dari sini, pendekatan dua tahap standar dalam praktiknya menyempurnakan semua parameter, termasuk koefisien distorsi, melalui optimasi nonlinier (biasanya Levenberg–Marquardt) menggunakan kesalahan reproyeksi yang dijelaskan di bagian selanjutnya sebagai fungsi tujuan.
4. Kesalahan Reproyeksi dan Optimasi Parameter
Fungsi tujuan kalibrasi adalah untuk meminimalkan, di setiap pose dan setiap titik grid, perbedaan antara piksel yang diamati dan posisi proyeksi yang dihitung dengan parameter yang diestimasi. Menuliskan pengamatan pada pose i , titik j sebagai \mathbf{u}_{ij} , dan titik 3D yang diketahui pada bidang sebagai \mathbf{X}_j ,
adalah apa yang diminimalkan. \boldsymbol{\kappa}=(k_1,k_2,k_3,p_1,p_2) adalah vektor koefisien distorsi, dan \pi_d adalah fungsi proyeksi termasuk distorsi. Variabel yang tidak diketahui cukup besar — K (4–5 derajat kebebasan), \boldsymbol{\kappa} (3–5 derajat kebebasan), dan R_i,\mathbf{t}_i per pose (6 derajat kebebasan × jumlah pose) — tetapi dengan cukup banyak titik yang diamati, masalah ini terkendali dengan baik. Formulasi ini dapat dilihat sebagai kasus khusus dari kerangka kerja "mengoptimalkan pose kamera dan struktur 3D secara bersamaan" yang dibahas dalam Panduan Penyesuaian Bundel. Karena koordinat titik 3D diketahui dan tetap dalam kalibrasi, ini merupakan submasalah yang lebih mudah daripada penyesuaian bundel biasa.
Biasanya, nilai root mean square (RMS) dari kesalahan reproyeksi \left\|\mathbf{u}_{ij}-\hat{\mathbf{u}}_{ij}\right\| dilaporkan sebagai "akurasi kalibrasi," tetapi berisiko untuk menyebut kalibrasi selesai hanya dengan melihat nilai rata-rata. Selalu periksa juga hal-hal berikut:
- Apakah ada variasi di seluruh kesalahan rata-rata setiap pose (pose dengan kesalahan yang sangat besar pada sudut tertentu menunjukkan distorsi pola, blur gerakan, atau pencahayaan yang tidak merata)
- Distribusi spasial kesalahan dalam gambar (kesalahan sistematis yang tersisa di tepi menunjukkan urutan atau jenis model distorsi mungkin tidak memadai)
- Akurasi sub-piksel deteksi titik grid (jika deteksi sudut itu sendiri tidak stabil, tidak ada optimasi yang dapat membedakannya dari kesalahan model)
5. Kerangka Implementasi di OpenCV
Prosedur kalibrasi kamera tunggal yang umum terlihat seperti ini. Memperbaiki kondisi pemotretan (resolusi, zoom, fokus), dan memotret pola di empat sudut gambar, tengah, dan beberapa kemiringan, mencakup 90% dari kalibrasi yang baik.
import cv2 as cv
import numpy as np
pattern_size = (9, 6) # number of internal corners
objp = np.zeros((pattern_size[0]*pattern_size[1], 3), np.float32)
objp[:, :2] = np.mgrid[0:pattern_size[0], 0:pattern_size[1]].T.reshape(-1, 2)
objp *= square_size_m # measured side length of one square [m]
obj_points, img_points = [], []
for gray in calibration_images: # multiple frames shot at different poses
found, corners = cv.findChessboardCorners(gray, pattern_size)
if found:
corners = cv.cornerSubPix(gray, corners, (11, 11), (-1, -1),
(cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER, 30, 0.001))
obj_points.append(objp)
img_points.append(corners)
ret, K, dist, rvecs, tvecs = cv.calibrateCamera(
obj_points, img_points, gray.shape[::-1], None, None)
# ret is the RMS reprojection error [px]. Also compute per-pose error separately to check.
Untuk lensa sudut lebar atau lensa fisheye, gunakan keluarga API cv.fisheye.calibrate daripada calibrateCamera biasa. Untuk rig stereo, gunakan cv.stereoCalibrate untuk menemukan pose relatif selain parameter intrinsik kedua kamera, dan cv.stereoRectify untuk menyelaraskan gambar kiri dan kanan ke garis epipolar horizontal. Prosedur ini terhubung langsung ke desain dasar yang dibahas dalam Cara Kerja Kamera Stereo dan Cara Kerja Kamera Kedalaman.
6. Mengapa Pergeseran Kalibrasi Merusak Sistem Hilir
Sebagian besar perhitungan dalam Visual SLAM, VO, dan PnP ditulis dengan asumsi bahwa nilai kalibrasi tetap konstan selama kondisi pengambilan gambar tidak berubah. Estimasi Matriks Esensial dalam Panduan Geometri Epipolar mengasumsikan koordinat yang dinormalisasi K^{-1}\tilde{\mathbf{x}}; Minimisasi kesalahan reproyeksi dalam Panduan PnP juga memperlakukan K sebagai nilai yang diketahui. Jika K atau koefisien distorsi tidak lagi sesuai dengan sistem optik sebenarnya, setiap perhitungan ini secara efektif dilakukan dengan "penggaris yang salah."
Secara khusus, nilai kalibrasi diam-diam menurun karena alasan seperti ini:
- Perubahan zoom/fokus: dengan lensa yang panjang fokusnya berubah, f_x,f_y berubah dari satu bidikan ke bidikan lainnya. Mengizinkan autofokus beroperasi berarti parameter intrinsik pada saat kalibrasi dan saat dijalankan tidak akan cocok.
-
Suhu dan guncangan mekanis: sedikit pergeseran posisi pada laras lensa atau pemasangan sensor menggeser titik utama dan koefisien distorsi. Hal ini sangat penting untuk aplikasi luar ruangan, otomotif, dan drone.
-
Perubahan resolusi, pemotongan, atau zoom digital: karena K adalah parameter satuan piksel, jika gambar diubah ukurannya atau dipotong, f_x,f_y,c_x,c_y juga harus diperbarui sesuai dengan skala. Lupa melakukan hal ini adalah kesalahan yang sangat umum.
- Deformasi rig kamera kiri/kanan: dalam pengaturan stereo, jika pose relatif (kalibrasi ekstrinsik) — bukan hanya parameter intrinsik — bergeser sedikit dari waktu ke waktu, kesalahan sistematis akan muncul pada kedalaman yang dihitung dari disparitas.
Kesalahan ini sulit diperhatikan dalam estimasi pose tunggal yang terisolasi. Tetapi dalam sistem yang secara berurutan mengintegrasikan pose dari waktu ke waktu, seperti VO atau SLAM, kesalahan reproyeksi sistematis terakumulasi sebagai drift, menghasilkan peta yang terdistorsi yang tidak dapat sepenuhnya dikoreksi oleh loop closure. Dalam sistem produksi, disarankan untuk memantau pergeseran kalibrasi secara online menggunakan fitur 3D tetap yang diketahui (garis lurus pada bangunan, rambu-rambu dengan ukuran yang diketahui), atau untuk membangun rutinitas kalibrasi ulang secara berkala.
7. Kegagalan Umum dan Penanggulangan
| Pola Kegagalan | Apa yang Terjadi | Penanggulangan |
|---|---|---|
| Keragaman pose yang tidak memadai (hanya bidikan menghadap depan) | K dan distorsi menjadi sulit ditentukan, terutama k_3 dan titik utama | Ambil gambar di keempat sudut gambar, tengah, dan beberapa sudut kemiringan yang berbeda |
| Pola terdistorsi dari bidang datar | Premis kalibrasi itu sendiri rusak, menyebarkan kesalahan sistematis ke seluruh gambar | Pasang pada panel datar yang kaku; perbaiki kesalahan skala pencetakan dengan pengukuran fisik |
| Akurasi deteksi sudut yang kasar | Meningkatkan batas kesalahan reproyeksi terlepas dari daya ekspresif model | Koreksi sub-piksel, resolusi yang cukup, mengelola fokus dan eksposur |
| Menerapkan model distorsi lubang jarum biasa ke lensa sudut lebar | Kesalahan divergen di tepi gambar, optimasi tidak stabil | Pilih model yang sesuai dengan bidang pandang, seperti model fisheye |
| Tidak memperbarui K setelah mengubah ukuran/memotong | Titik utama dan panjang fokus tidak sinkron dengan skala, menyebabkan kesalahan sistematis dalam estimasi pose | Konversi K ke skala yang sesuai pada setiap transformasi gambar |
| Mengabaikan rolling shutter | Pusat proyeksi sebenarnya berbeda baris demi baris, bahkan dalam satu frame | Gunakan rana global, atau koreksi dengan model pengaturan waktu baris |
8. Ringkasan
Kalibrasi kamera adalah langkah pertama yang mengubah gambar dari "hanya array 2D" menjadi "pengamatan yang dapat diinterpretasikan secara geometris." Parameter intrinsik dan ekstrinsik model lubang jarum, bersama dengan koefisien distorsi radial dan tangensial, diperoleh dari pengamatan pada beberapa pose — seperti pada metode pola planar Zhang — dan diakhiri dengan optimasi nonlinier dari kesalahan reproyeksi. Kualitas kalibrasi ini tidak terlihat dalam metrik akurasi algoritma tunggal mana pun, tetapi merupakan premis yang mendasari setiap persamaan di setiap tahap hilir — geometri epipolar, PnP, Visual SLAM, SfM, penyesuaian bundel. Kalibrasi bukanlah ritual sekali saja — ini adalah bagian dari alur kerja yang harus terus dipantau seiring perubahan kondisi pemotretan.
Apakah kesalahan kecil pada satu gambar kalibrasi sudah cukup?
Kecocokan mungkin mendukung pandangan itu.
Periksa berbagai kemiringan, tepi gambar, dan gambar validasi terpisah.Referensi
- Zhang, Teknik Baru yang Fleksibel untuk Kalibrasi Kamera (IEEE TPAMI, 2000)
- Heikkilä & Silvén, Prosedur Kalibrasi Kamera Empat Langkah dengan Koreksi Gambar Implisit (CVPR 1997)
- Hartley & Zisserman, Geometri Tampilan Ganda dalam Visi Komputer (halaman resmi penulis)
- OpenCV — Kalibrasi Kamera dan Rekonstruksi 3D
- OpenCV — Tutorial Kalibrasi Kamera
- OpenCV — Modul kalibrasi fisheye )
- Kalibr (alat kalibrasi kamera/IMU, repositori resmi)
Komentar
Silakan masuk terlebih dahulu.
Belum ada data.