finding intrinsic parameter [ K ] and extrinsic parameter [ R, t ] ( camera calibration ) with OpenCV
เด๋วนี้ อะไรๆ ก็ง่าย ไม่ต้องไป mark จุด ใน matlab library ให้เมื่อยตุ้ม
อยู่ใน demo ของ opencv version 2.0 นั่นแหละ
เคล็ดลับอยู่ที่เลข w กับ h เป็น เลข 8 กับ เลข 6 ถ้าใช้ calibration board [ pdf หรือ eps ] จาก caltech.edu ถ้าใส่เลขมั่วๆ มันจะหา chessboard ไม่เจอ
ปล แกนน้ำเงิน z น่าจะพุ่งออกมากกว่า นะ รูปผิดๆ
โปรแกรมนี้นี้มาจากการรวมพลังกันของ 3 ฟังก์ชั่น นั่นคือ cvFindChessboardCorners, cvFindCornerSubPix, และ cvCalibrateCamera2
ซึ่งอันที่จริงแล้ว cvCalibrateCamera2 กับ cvFindExtrinsicCameraParams2 เหมือนกันนะอิอิ ถ้ารู้ intrinsic parameter มาแล้ว หนีไปใช้ cvFindExtrinsicCameraParams2 เพื่อหา rotation vector กับ translation vector ก็ได้
อยู่ใน demo ของ opencv version 2.0 นั่นแหละ
วิธีใช้ จ้า
ไม่บอก [input] อะไรแสดงว่า ใช้ค่าจาก webcam
$ ./calibration.o -w 8 -h 6 [input]
[input] จะใส่เป็นไฟล์วีดีโอ
หรือ จะใส่ [input] เป็นไฟล์ calib.txt ก็ได้calib.txt
/mnt/disk/AIT/Thesis/image/sonycam/DSC08606.JPG
/mnt/disk/AIT/Thesis/image/sonycam/DSC08607.JPG
/mnt/disk/AIT/Thesis/image/sonycam/DSC08608.JPG
/mnt/disk/AIT/Thesis/image/sonycam/DSC08609.JPG
/mnt/disk/AIT/Thesis/image/sonycam/DSC08610.JPG
/mnt/disk/AIT/Thesis/image/sonycam/DSC08611.JPG
/mnt/disk/AIT/Thesis/image/sonycam/DSC08612.JPG
/mnt/disk/AIT/Thesis/image/sonycam/DSC08613.JPG
/mnt/disk/AIT/Thesis/image/sonycam/DSC08614.JPG
/mnt/disk/AIT/Thesis/image/sonycam/DSC08615.JPG
ส่วนวิธีเช็คว่า rotation vector กับ translation vector ที่ออกมานั้น ได้ถูกหรือเปล่า อธิบายได้จากรูปข้างล่าง
นี่คือ ค่าที่ได้
rotation_vector = [-3.02092 -0.112161 -0.0672419 ;]rotation หมุนไปทาง x ประมาณ 3 rad (180 degree)
translation_vector = [-5.44087 1.38825 14.4339 ;]
ปล แกนน้ำเงิน z น่าจะพุ่งออกมากกว่า นะ รูปผิดๆ
ความคิดเห็น