urbste / MultiCol-SLAM

This repository contains a multi-fisheye camera SLAM. The underlying SLAM system is based on ORB-SLAM.
604 stars 220 forks source link

Camera Calibration #9

Open RongenC opened 7 years ago

RongenC commented 7 years ago

Hi Steffen Urban and your group,

Really interesting and promising approach on the SLAM research, I would like to do use my own data set, i.e. my own set of images to run your system. I have some question regarding the camera calibration parameters:

First, I tried to use your recommendation for the single camera calibration but it seems that it does not provide the "backward polynomial rho" values after I ran such M-module.

Next for the Multi-cam calibration, there is no additional information regarding how you find the transformation relationship between three cameras, could I use the OpenCV for such rotational vector and translation vector value?

Cheers, Rongen

kylexu commented 7 years ago

I have the same question about the multi-cam calibration in Multi-col. As I checked the IJCV paper, it seems that T-Probe is used in the calibration. Do I understand it correctly? Can we just use the images to estimate the rotations and translations between cameras?

Thanks.

urbste commented 7 years ago

Hi, sorry for my late reply. I do not work at the university anymore and am on the road at the moment.

The camera calibration toolbox should give you the inverse polynomial as well. If not there is a function findinvpoly.m somewhere in the folder.

To calibrate the MultiCamera system many approaches exist. MCPTAM for example has one implemented. I calibrated my system using external control points in a calibration room. Whatever you do it is important that you use the same camera model in the calibration process. If you use a different camera model for calibration and for MultiCol SLAM the projection centers to which the parameters are calibrated differ!

RongenC commented 7 years ago

@urbste Hi, thank for clear things up even you are on the road. Good luck in your future!

FreedomRings commented 7 years ago

Hi Steffen!

My thanks (again) for this project. I have gotten the application to run with your videos and I love what I see. Getting it to work with my own cameras has proven quite the challenge. I have been working with it since November and I am staying faithful, but a bit frustrated.

I have the same camera calibration question and I have problems with the numbers since I am a CV novice and not a math guy - just a toy maker. I am failing at calibration as I can't seem to come up with parameters that work. I read your instructions for calibrations and they require a license to MatLab and if I want to eventually sell my toys I need a real license. Wow, the cost of MatLab though! They want $2,150.00 plus the add-ons for image processing and I will only use it for a one-time camera calibration!?

Is there any other "best way" to calibrate the cameras and give MultiCol the numbers it needs? I am using a pair of 1.3MP monochrome global shutter fixed focus 1280x960 cameras with GoPro 170 degree wide angle lenses (so my images do not look like yours, but they do look like some of the ones in the ImprovedOcamCalib) and I think those should work with your system (please tell me if I am wrong). I liked the idea of using the calibration in OpenCV because it uses C++ but I cannot match their output calibration settings to your required input settings - and the name of your library starts with the word "Improved" so I want to use it. :)

There is also the problem of calibrating my stereo camera overlap (I only use 2 cameras), unless MultiCol does this automatically(?). I looked at the MCPTAM that you mentioned above, but I will be using just two cameras and I am not sure I can translate the calibration numbers from another package to match your own - they seem very different. Do you have another suggestion or guidelines?

Also, while I have your ear, I see that your MatLab calibration project uses a giant checkerboard and the MCPTAM Calibration uses one that fits on an 8.5x11 sheet of paper. Is there an advantage of one over the other?

I truly appreciate any help that you (or anyone working on this and following it) can be.

Thank you again for your contribution to the world.