Closed handysome6 closed 2 months ago
OK. I have questions.
You say you ran two commands. Is that correct? How do you get the two sets of intrinsics? You first command, as written, computes one model only.
Why are you splitting any of this at all? Why not do one solve with all your data, computing the intrinsics and extrinsics together? They affect each other and you will get biases if you split them in this way.
The extrinsics difference is reported comparing the coordinate systems of each camera. The origin of these coordinate systems isn't fixed inside the mechanical camera unit: it cam move around a bit, so a 1mm shift could maybe not be unreasonable.
As noted in the documentation, the extrinsics-stability tooling isn't thoroughly tested yet. If you redo your experiment without the split solve, and send me your data, I can look at it. Eventually. I suspect that your solve has some minor issues that are giving you those extrinsics shifts, but it would take too much typing to list out the various potential problems. The tooling should run those checks for you, but today we're not quite there yet.
Thanks for the suggestion. I've successfully reduced the extrinsic difference by combining the vnl files into one and calibrate the stereo system in a single command.
The reduced translation difference is around 0.1 or so. The reduced rotaion difference is around 0.01 degree. Although the difference is still larger than the demoed one. I think this one is resonable. I will carry out more expirements later. Thank you!
OK. I'm going to close this. Reopen if you want to re-examine your data
Thank your for your patience about the package issue. I have another problem regarding the extrinsic stability as usage demostrated in https://mrcal.secretsauce.net/differencing.html
I am trying to replicate your extrinsic-stability result in the linked page. This is my setup:
calib extrinsic command
mrcal-calibrate-cameras \ --corners-cache stereoCorners.vnl \ --corners-cache-has-weights \ --seed splined_A.cameramodel,splinedD.cameramodel \ --object-spacing 0.0600 \ --object-width-n 8 \ --object-height-n 11 \ --skip-intrinsics-solve \ --pairs 'A.jpg' 'D_.jpg'
calib1a->calib1b->external strike-> calib2a->calib2b->external strike-> calib3...
translation: 1.91mm in the direction [-0.2 0.08 -0.98] rotation: 0.014deg around the axis [0.29 0.61 0.74]