ปรับเทียบกล้องและ IMU

ชุดกล้องหันเข้าหาแผ่นลายตารางสำหรับสื่อแนวคิดการปรับเทียบ
ภาพประกอบแนวคิดสร้างด้วย AI

Calibration ไม่ใช่ค่าเดียว

Calibration: Intrinsics, Extrinsics และ Time offset — เลนส์กล้องมี focal length/principal point/distortion, ลูกศรหมุนและเลื่อนระหว่างเฟรมกล้องกับ IMU, และเส้นเวลาเฟรมกล้องเทียบตัวอย่าง IMU ที่มี Δt

Intrinsics อธิบายโมเดลกล้อง เช่น focal length, principal point และ distortion ส่วน extrinsics อธิบายการหมุนและการเลื่อนระหว่างเซนเซอร์ Time offset เป็นความต่างเวลาที่ต้องจัดการแยกต่างหาก ตัวเลขที่ดูเล็กอาจสำคัญเมื่อการเคลื่อนที่เร็ว

ใช้ Kalibr อย่างมีหลักฐาน

ใช้ Kalibr อย่างมีหลักฐาน: เลือก camera model และรูปแบบข้อมูล → ตรวจขนาดเป้าและหน่วยจากของจริง → ตรวจคุณภาพการตรวจจับเป้าและการกระจายตัวอย่าง pose → ยอมรับ/ตรวจสอบรายงานผลปรับเทียบ

เลือกโมเดลกล้องและรูปแบบข้อมูลที่เครื่องมือรองรับ ตรวจขนาดเป้าปรับเทียบและหน่วยจากของจริง ดูคุณภาพการตรวจเป้าและการกระจายตัวอย่างก่อนเชื่อผล ค่าที่โปรแกรมคำนวณได้ไม่ได้ยืนยันว่ารายงานนั้นเหมาะกับทุกสภาพการทำงาน

ตรวจอะไร ถ้าคลาดเคลื่อนอาจเกิดอะไร
frame / หน่วย ตำแหน่งหรือทิศไม่สัมพันธ์กัน
ขนาดเป้า / camera model ค่าเรขาคณิตที่ประมาณไม่ตรง
เวลาและลำดับข้อมูล กล้องกับ IMU แทนคนละจังหวะ
การยึดและการสั่น ความสัมพันธ์ระหว่างเซนเซอร์เปลี่ยน

ทดลองปรับเทียบกล้องด้วย OpenCV

ผล reprojection error จากภาพกระดานตัวอย่าง OpenCV แยกภาพที่ใช้ปรับเทียบและภาพที่กันไว้ตรวจ

การทดลองจริงใช้ภาพตัวอย่างกระดานของ OpenCV 13 ภาพ ตรวจพบมุมภายใน 54 จุดต่อภาพ เลือก 10 ภาพสำหรับประมาณค่ากล้อง และกัน left03, left07, left12 ไว้ก่อนเริ่มปรับเทียบ ผล RMS ระยะคลาดเคลื่อนต่อจุดของชุดปรับเทียบอยู่ประมาณ 0.4514 พิกเซล ส่วนสามภาพที่กันไว้อยู่ประมาณ 0.2178 พิกเซล

ในการตรวจสามภาพหลัง เราตรึงค่ากล้องและ distortion แต่ยังประมาณ pose ของกระดานแต่ละภาพด้วย solvePnP ดังนั้นคะแนนนี้วัดความสอดคล้องของการฉายจุดบนภาพ ไม่ใช่การวัด pose กับตำแหน่งจริง การที่คะแนนต่ำกว่าชุดปรับเทียบไม่ได้พิสูจน์ว่ากล้องแม่นยำในทุกฉาก

แบบฝึกกำหนดด้านช่องกระดานเท่ากับ 1 หน่วย เพราะไม่มีขนาดเป้าที่วัดจริง ระยะเลื่อนที่ได้จึงเป็นหน่วยช่องกระดาน ไม่ใช่เมตร และยังไม่ได้สอบเทียบกล้องกับ IMU อ่าน คู่มือพร้อมขั้นตอนทำซ้ำ และ ค่ากล้อง/ผลรายภาพ/ที่มาข้อมูล แล้วใช้ภาพและขนาดเป้าของตนเองเมื่อต้องการปรับเทียบอุปกรณ์จริง

แยกชุดปรับเทียบกับชุดตรวจ

เก็บ report พร้อม config และ version แล้วตรวจด้วยข้อมูลอีกช่วงหนึ่ง เปลี่ยนทีละปัจจัยเพื่อดูสาเหตุ ไม่รายงานเฉพาะตัวเลขที่ต่ำที่สุดจากการลองหลายชุดโดยไม่อธิบายวิธีเลือก

Kalibr มี LICENSE เฉพาะที่ต้องอ่าน รวมเงื่อนไข acknowledgment บางกรณี ตัวอย่างในเว็บเป็นแนวทางศึกษา ยังไม่ใช่การรับรองค่าปรับเทียบสำหรับฮาร์ดแวร์ของผู้เรียน

ฝึกประเมินผลและ timestamp →

แหล่งอ้างอิงและขอบเขต

ตรวจแหล่งข้อมูล 7 กันยายน 2569 เรียบเรียงประกอบองค์ความรู้ที่ DTI เอื้อเฟื้อ

กิตติกรรมประกาศและที่มา

F16: reprojection RMSE หารจำนวนจุดหรือจำนวนแกน

ลูกศร residual จากจุดฉายไปจุดวัด3pxในแนวนอนและ4pxแนวตั้ง มีระยะ5px

ตัวแปร ความหมายและหน่วยเข้า → ออก ช่วง/แหล่งค่า
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 พร้อมเฉลย) · ข้อมูลสังเคราะห์สำหรับฝึกคำนวณและตรวจสมมติฐาน

โดรนvisual-inertial