ปรับเทียบกล้องและ IMU
แยกพารามิเตอร์ภาพ ตำแหน่งติดตั้ง และเวลา เพื่อค้นหาสาเหตุความคลาดเคลื่อนอย่างเป็นระบบ
Calibration ไม่ใช่ค่าเดียว
Intrinsics อธิบายโมเดลกล้อง เช่น focal length, principal point และ distortion ส่วน extrinsics อธิบายการหมุนและการเลื่อนระหว่างเซนเซอร์ Time offset เป็นความต่างเวลาที่ต้องจัดการแยกต่างหาก ตัวเลขที่ดูเล็กอาจสำคัญเมื่อการเคลื่อนที่เร็ว
ใช้ Kalibr อย่างมีหลักฐาน
เลือกโมเดลกล้องและรูปแบบข้อมูลที่เครื่องมือรองรับ ตรวจขนาดเป้าปรับเทียบและหน่วยจากของจริง ดูคุณภาพการตรวจเป้าและการกระจายตัวอย่างก่อนเชื่อผล ค่าที่โปรแกรมคำนวณได้ไม่ได้ยืนยันว่ารายงานนั้นเหมาะกับทุกสภาพการทำงาน
| ตรวจอะไร | ถ้าคลาดเคลื่อนอาจเกิดอะไร |
|---|---|
| frame / หน่วย | ตำแหน่งหรือทิศไม่สัมพันธ์กัน |
| ขนาดเป้า / camera model | ค่าเรขาคณิตที่ประมาณไม่ตรง |
| เวลาและลำดับข้อมูล | กล้องกับ IMU แทนคนละจังหวะ |
| การยึดและการสั่น | ความสัมพันธ์ระหว่างเซนเซอร์เปลี่ยน |
แยกชุดปรับเทียบกับชุดตรวจ
เก็บ report พร้อม config และ version แล้วตรวจด้วยข้อมูลอีกช่วงหนึ่ง เปลี่ยนทีละปัจจัยเพื่อดูสาเหตุ ไม่รายงานเฉพาะตัวเลขที่ต่ำที่สุดจากการลองหลายชุดโดยไม่อธิบายวิธีเลือก
Kalibr มี LICENSE เฉพาะที่ต้องอ่าน รวมเงื่อนไข acknowledgment บางกรณี ตัวอย่างในเว็บเป็นแนวทางศึกษา ยังไม่ใช่การรับรองค่าปรับเทียบสำหรับฮาร์ดแวร์ของผู้เรียน
แหล่งอ้างอิงและขอบเขต
ตรวจแหล่งข้อมูล 7 กันยายน 2569 เรียบเรียงประกอบองค์ความรู้ที่ DTI เอื้อเฟื้อ
F16: reprojection RMSE หารจำนวนจุดหรือจำนวนแกน
| ตัวแปร | ความหมายและหน่วยเข้า → ออก | ช่วง/แหล่งค่า |
|---|---|---|
| dx_i,dy_i | observed − projected ในแกนภาพ px (เข้า) | finite; จับคู่จุดเดียวกันและใช้ภาพขนาดเดียวกัน |
| n | จำนวนจุด 2D ทั้งหมด (เข้า) | จำนวนเต็ม > 0; รวมทุก view ที่ประกาศ |
| RMSE_point | RMS ระยะสองมิติต่อจุด px (ออก) | ≥ 0; หาร n |
| RMSE_component | RMS ต่อ scalar component px (ออก) | ≥ 0; หาร 2n ต่างนิยามจากค่าบน |
ระดับประยุกต์ · คำถาม: จุดที่ฉายจากโมเดลห่างจากจุดที่ตรวจบนภาพโดยรวมเท่าใด?
RMSE_point = √[Σ(dx_i² + dy_i²)/n]
RMSE_component = √[Σ(dx_i² + dy_i²)/(2n)]
ตรึงความหมายกับ monocular calibrateCamera ใน OpenCV 4.10.0: source คืน sqrt(reprojErr/total) โดย total เป็นจำนวนจุด ไม่ใช่2n สมการที่สองมีไว้ชี้ผลของการเปลี่ยนนิยาม ไม่ใช่สลับใช้แทนกัน รายงาน global metric ต้องรวม squared error และจำนวนจุดทุก view; ห้ามเฉลี่ย per-view RMSE แบบให้น้ำหนักเท่ากันแล้วเรียก global RMS
ตัวอย่างนี้คำนวณจาก residual ที่ให้ ไม่ได้รัน calibration solver ค่าเล็กบนชุด fit ไม่ยืนยันผลบนภาพใหม่ ต้องเก็บ resolution, lens/focus, distortion model, flags, pattern dimensions และ test views แยกกัน NoData หรือคู่จุดไม่ตรงกันต้องแก้ก่อน; n=0 รายงานว่าไม่มีข้อมูล ไม่ให้0
ตัวอย่างแทนค่า
สองจุดมี residual (3,4) px และ(0,0) px ผลรวมกำลังสอง=3²+4²+0+0=25 px² จึง RMSE_point=√(25/2)=3.535534 px และ RMSE_component=√(25/4)=2.5 px ไม่ใช่ค่าเฉลี่ยระยะ (5+0)/2
แบบฝึกเปลี่ยนค่า
เปลี่ยน residual คู่ที่สองเป็น(3,4) px คงคู่แรกเดิม คำนวณสองนิยาม
เปิดเฉลย F16
ผลรวม=50 px²; RMSE_point=√(50/2)=5 px; RMSE_component=√(50/4)=3.535534 px ยอมรับ ±0.000001 px ต้องเขียน denominator พร้อมคำตอบ
อ้างอิง: OpenCV 4.10.0 — Camera Calibration and 3D Reconstruction (P3E06) · OpenCV 4.10.0 — calibration.cpp, cvCalibrateCamera2Internal (P3E07); ตรวจ 26 กันยายน 2569
เชื่อมความรู้กับภารกิจและข้อมูล
บันทึกพารามิเตอร์กล้อง ความสัมพันธ์กล้อง–IMU และเวลา รวมถึงรุ่นข้อมูลที่ใช้สอบเทียบ แยกผล calibration ออกจากผลประเมิน trajectory เพราะค่าที่พอดีกับชุดสอบเทียบยังไม่ยืนยันประสิทธิภาพบนข้อมูลอื่น อ่านแหล่งอ้างอิง: ETH Zürich — Kalibr
ฝึกตรวจความเข้าใจ: ทำรายการ camera model, units, timestamp convention และชื่อไฟล์ calibration ก่อน replay ข้อมูล ไม่ปรับค่าโดยไม่มีบันทึก
อ่านต่อ บทที่ใช้ความรู้นี้ในงานจำลอง · ทบทวนแหล่งข้อมูล 26 กันยายน 2569
ดาวน์โหลดชุดฝึกสูตรวิศวกรรมและเซนเซอร์ (CSV/JSON พร้อมเฉลย) · ข้อมูลสังเคราะห์สำหรับฝึกคำนวณและตรวจสมมติฐาน