rameau-fr/MC-Calib

Problems with calibrating intrinsic parameters on smartphone camera. Update: issue was wrong charuco board config, 4x3 instead of 3x4

DawidStankiewicz opened this issue · 4 comments

System information (version)

  • Operating System / Platform => docker frameau/opencv-ceres, Ubuntu 20.04.2 LTS, (update, on bailool/mc-calib-prod the same issues)
  • OpenCV => 4.2.0
  • Ceres => ❔
  • Boost => ❔
  • C++ => ❔
  • Compiler => ❔

Vision system

  • Number of cameras => 1 - Samsung Galaxy Note 20 Ultra
  • Types of cameras => perspective
  • Multicamera configurations => No
  • Configuration file =>
######################################## Boards Parameters ###################################################
number_x_square: 4         # number of squares in the X direction
number_y_square: 3         # number of squares the Y direction
resolution_x: 3840          # horizontal resolution in pixel
resolution_y: 2160          # vertical resolution in pixel
length_square: 0.04        # parameters on the marker (can be kept as it is)
length_marker: 0.03        # parameters on the marker (can be kept as it is)
number_board: 1            # number of boards used for calibration (for overlapping camera 1 is enough ...)
boards_index: [ ]           # leave it empty [] if the board index are ranging from zero to number_board; example of usage boards_index: [5,10 <-- only two board with index 5/10
square_size: 6.5         # size of each square of the board in cm/mm/whatever you want

############# Boards Parameters for different board size (leave empty if all boards have the same size) #################
number_x_square_per_board: [ ]
number_y_square_per_board: [ ]
square_size_per_board: [ ]

######################################## Camera Parameters ###################################################
distortion_model: 0         # 0:Brown (perspective) // 1: Kannala (fisheye)
distortion_per_camera: [ ]  # specify the model per camera, #leave "distortion_per_camera" empty [] if they all follow the same model (make sure that the vector is as long as cameras nb)
number_camera: 1            # number of cameras in the rig to calibrate
refine_corner: 1            # activate or deactivate the corner refinement
min_perc_pts: 0.8         # min percentage of points visible to assume a good detection

cam_params_path: None    # file with cameras intrinsics to initialize the intrinsic, write "None" if no initialization available
fix_intrinsic: 0        #if 1 then the intrinsic parameters will not be estimated nor refined (initial value needed)
######################################## Images Parameters ###################################################
cam_prefix: "Cam_"

######################################## Optimization Parameters #############################################
ransac_threshold: 10        # RANSAC threshold in pixel (keep it high just to remove strong outliers)
number_iterations: 1000     # Max number of iterations for the non linear refinement

######################################## Hand-eye method #############################################
he_approach: 0 #0: bootstrapped he technique, 1: traditional he

######################################## Output Parameters ###################################################
save_detection: 1
save_reprojection: 1
camera_params_file_name: "cameras.yml" # "name.yml"

Describe the issue / bug

I'm trying to calibrate intrinsic parameters of the smartphone camera using MC-Calib. App is often crashing and when it's not then results and logs from calibration are weird. I'm using board 4x3, so it has 6 points. Log says that detector found 6 points in all images (134):

0000285 | 2023-11-09, 14:37:35.491338 [info] - Number of detected corners :: 6
0000286 | 2023-11-09, 14:37:35.526970 [info] - Number of detected corners :: 6
0000287 | 2023-11-09, 14:37:35.532342 [info] - Number of detected corners :: 6
0000288 | 2023-11-09, 14:37:35.725408 [info] - Board extraction done!
0000289 | 2023-11-09, 14:37:35.725435 [info] - Intrinsic calibration initiated
0000290 | 2023-11-09, 14:37:35.725441 [info] - Initializing camera calibration using images
0000291 | 2023-11-09, 14:37:35.725449 [info] - NB of board available in this camera :: 134
0000292 | 2023-11-09, 14:37:35.725457 [info] - NB of frames where this camera saw a board :: 134
0000293 | 2023-11-09, 14:37:52.858604 [info] - cameraMatrix : [730.5722449957763, 0, 1842.225576510645;
 0, 103.8567137340529, 1010.620326430428;
 0, 0, 1]
0000294 | 2023-11-09, 14:37:52.858662 [info] - distCoeffs : [-0.000145485069557112, -9.341887444497364e-07, -0.001914292531187723, -0.00490921035096062, -8.294359195743176e-08]
0000295 | 2023-11-09, 14:37:52.860456 [debug] - Trans :: [3.758818329998107;
 7.510510097752508;
 8.679588315941288]       Rot :: [-1.192318438958881;
 1.614630443992688;
 -0.9228510025860922]

But then I see some calculations are done on different number of points than 6:

0005110 | 2023-11-09, 14:38:20.715560 [debug] - cam_id :: 0   object_id :: 0  mean error :: 29.6129  nb pts :: 3
0005111 | 2023-11-09, 14:38:20.715595 [debug] - cam_id :: 0   object_id :: 0  mean error :: 27.1408  nb pts :: 3
0005112 | 2023-11-09, 14:38:20.715629 [debug] - cam_id :: 0   object_id :: 0  mean error :: 81.2194  nb pts :: 3
0005113 | 2023-11-09, 14:38:20.715668 [debug] - cam_id :: 0   object_id :: 0  mean error :: 66.0296  nb pts :: 3
0005114 | 2023-11-09, 14:38:20.715703 [debug] - cam_id :: 0   object_id :: 0  mean error :: 88.8366  nb pts :: 3
0005115 | 2023-11-09, 14:38:20.715740 [debug] - cam_id :: 0   object_id :: 0  mean error :: 291.77  nb pts :: 3
0005116 | 2023-11-09, 14:38:20.715775 [debug] - cam_id :: 0   object_id :: 0  mean error :: 229.415  nb pts :: 3
0005117 | 2023-11-09, 14:38:20.715811 [debug] - cam_id :: 0   object_id :: 0  mean error :: 217.277  nb pts :: 3
0005118 | 2023-11-09, 14:38:20.715848 [debug] - cam_id :: 0   object_id :: 0  mean error :: 215.845  nb pts :: 3
0005119 | 2023-11-09, 14:38:20.715882 [debug] - cam_id :: 0   object_id :: 0  mean error :: 581.92  nb pts :: 4
0005120 | 2023-11-09, 14:38:20.715920 [debug] - cam_id :: 0   object_id :: 0  mean error :: 590.8  nb pts :: 4
0005121 | 2023-11-09, 14:38:20.715955 [debug] - cam_id :: 0   object_id :: 0  mean error :: 287.132  nb pts :: 3
0005122 | 2023-11-09, 14:38:20.715967 [info] - Final refinement done
0005123 | 2023-11-09, 14:38:38.345637 [info] - Save parameters
0005124 | 2023-11-09, 14:38:38.356766 [info] - mean reprojection error :: 175.409
0005125 | 2023-11-09, 14:38:38.360028 [info] - Calibration took 72 seconds

I'm using a subset size of 150 frames to get these results.

Sometimes the script produces some weird output like above, but more often it's failing due to this error:

0001480 | 2023-11-09, 14:56:08.856804 [info] - Frame :: 169  Boards :: 0  --- Mean Error ::12.0435  Nb pts :: 2
0001481 | 2023-11-09, 14:56:08.856821 [info] - High error detected in this board pose estimation
0001482 | 2023-11-09, 14:56:08.856827 [info] - Frame :: 161  Boards :: 0  --- Mean Error ::10.9782  Nb pts :: 2
0001483 | 2023-11-09, 14:56:08.856844 [info] - High error detected in this board pose estimation
0001484 | 2023-11-09, 14:56:08.856849 [info] - Frame :: 167  Boards :: 0  --- Mean Error ::12.6696  Nb pts :: 2
0001485 | 2023-11-09, 14:56:08.856867 [info] - High error detected in this board pose estimation
0001486 | 2023-11-09, 14:56:08.856872 [info] - Frame :: 168  Boards :: 0  --- Mean Error ::11.8517  Nb pts :: 2
0001487 | 2023-11-09, 14:56:08.856898 [info] - High error detected in this board pose estimation
0001488 | 2023-11-09, 14:56:08.856904 [info] - Frame :: 171  Boards :: 0  --- Mean Error ::10.6186  Nb pts :: 2
terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(4.2.0) ../modules/core/src/matrix_expressions.cpp:23: error: (-5:Bad argument) Matrix operand is an empty matrix. in function 'checkOperandsExist'

bash: line 1:    51 Aborted                 (core dumped) ./build/apps/calibrate/calibrate /home/sportv03/MC-Calib/data/subsets/subset_01/calib_param.yml

I don't know why. What am I doing wrong?

Does 4x3 charuco board is valid for this calibration? I know that 4 points are minimum for calculations, but maybe this number is higher for some reason?

Extrinsic calibration works on synthetic data on this 4x3 charuco board (intrinsic calibration is defined by me).

It would be great to have more configuration validation or data validation before each step of the script, so it would be more obvious to everyone why something is not working.

This image frameau/opencv-ceres seems old, I don't know why it was in the code, but when I switched to this bailool/mc-calib-prod, then I get same error I sometimes got before:

0000927 | 2023-11-09, 19:24:45.767402 [info] - High error detected in this board pose estimation
0000928 | 2023-11-09, 19:24:45.767409 [info] - Frame :: 141  Boards :: 0  --- Mean Error ::141.812  Nb pts :: 3
0000929 | 2023-11-09, 19:24:45.767429 [info] - High error detected in this board pose estimation
0000930 | 2023-11-09, 19:24:45.767435 [info] - Frame :: 146  Boards :: 0  --- Mean Error ::303.462  Nb pts :: 3
0000931 | 2023-11-09, 19:24:45.767473 [info] - High error detected in this board pose estimation
0000932 | 2023-11-09, 19:24:45.767480 [info] - Frame :: 147  Boards :: 0  --- Mean Error ::311.97  Nb pts :: 3
0000933 | 2023-11-09, 19:24:45.767500 [info] - High error detected in this board pose estimation
0000934 | 2023-11-09, 19:24:45.767506 [info] - Frame :: 149  Boards :: 0  --- Mean Error ::335.033  Nb pts :: 3
0000935 | 2023-11-09, 19:24:45.767529 [info] - High error detected in this board pose estimation
0000936 | 2023-11-09, 19:24:45.767535 [info] - Frame :: 148  Boards :: 0  --- Mean Error ::313.325  Nb pts :: 3
0000937 | 2023-11-09, 19:24:45.767543 [info] - Intrinsic Calibration done!
0000938 | 2023-11-09, 19:24:45.767549 [info] - 3D Object calibration initiated
=================================================================
==19==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x602000901b1c at pc 0x555e2e3ea891 bp 0x7ffeac988490 sp 0x7ffeac988480
READ of size 4 at 0x602000901b1c thread T0
    #0 0x555e2e3ea890 in ransacP3P(std::vector<cv::Point3_<float>, std::allocator<cv::Point3_<float> > > const&, std::vector<cv::Point_<float>, std::allocator<cv::Point_<float> > > const&, cv::Mat, cv::Mat, cv::Mat&, cv::Mat&, float, int, double, bool) /home/sportv03/MC-Calib/McCalib/src/geometrytools.cpp:252
    #1 0x555e2e3eceb8 in ransacP3PDistortion(std::vector<cv::Point3_<float>, std::allocator<cv::Point3_<float> > > const&, std::vector<cv::Point_<float>, std::allocator<cv::Point_<float> > > const&, cv::Mat, cv::Mat, cv::Mat&, cv::Mat&, float, int, int, double, bool) /home/sportv03/MC-Calib/McCalib/src/geometrytools.cpp:576
    #2 0x555e2e3d4c5e in Object3DObs::estimatePose(float, int) /home/sportv03/MC-Calib/McCalib/src/Object3DObs.cpp:237
    #3 0x555e2e289ee2 in McCalib::Calibration::estimatePoseAllObjects() /home/sportv03/MC-Calib/McCalib/src/McCalib.cpp:979
    #4 0x555e2e2b5fc5 in McCalib::Calibration::calibrate3DObjects() /home/sportv03/MC-Calib/McCalib/src/McCalib.cpp:2084
    #5 0x555e2e2301c5 in runCalibrationWorkflow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) /home/sportv03/MC-Calib/apps/calibrate/src/calibrate.cpp:21
    #6 0x555e2e225c15 in main /home/sportv03/MC-Calib/apps/calibrate/src/calibrate.cpp:97
    #7 0x7f9ad5c95082 in __libc_start_main (/usr/lib/x86_64-linux-gnu/libc.so.6+0x24082)
    #8 0x555e2e22dcdd in _start (/home/sportv03/MC-Calib/build/apps/calibrate/calibrate+0xb7cdd)

0x602000901b1c is located 0 bytes to the right of 12-byte region [0x602000901b10,0x602000901b1c)
allocated by thread T0 here:
    #0 0x7f9ad8f4f587 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cc:104
    #1 0x555e2e3e5949 in __gnu_cxx::new_allocator<int>::allocate(unsigned long, void const*) /usr/include/c++/9/ext/new_allocator.h:114
    #2 0x555e2e3e5949 in std::allocator_traits<std::allocator<int> >::allocate(std::allocator<int>&, unsigned long) /usr/include/c++/9/bits/alloc_traits.h:443
    #3 0x555e2e3e5949 in std::_Vector_base<int, std::allocator<int> >::_M_allocate(unsigned long) /usr/include/c++/9/bits/stl_vector.h:343
    #4 0x555e2e3e5949 in std::_Vector_base<int, std::allocator<int> >::_M_create_storage(unsigned long) /usr/include/c++/9/bits/stl_vector.h:358
    #5 0x555e2e3e5949 in std::_Vector_base<int, std::allocator<int> >::_Vector_base(unsigned long, std::allocator<int> const&) /usr/include/c++/9/bits/stl_vector.h:302
    #6 0x555e2e3e5949 in std::vector<int, std::allocator<int> >::vector(unsigned long, std::allocator<int> const&) /usr/include/c++/9/bits/stl_vector.h:508
    #7 0x555e2e3e5949 in ransacP3P(std::vector<cv::Point3_<float>, std::allocator<cv::Point3_<float> > > const&, std::vector<cv::Point_<float>, std::allocator<cv::Point_<float> > > const&, cv::Mat, cv::Mat, cv::Mat&, cv::Mat&, float, int, double, bool) /home/sportv03/MC-Calib/McCalib/src/geometrytools.cpp:243
    #8 0x555e2e3eceb8 in ransacP3PDistortion(std::vector<cv::Point3_<float>, std::allocator<cv::Point3_<float> > > const&, std::vector<cv::Point_<float>, std::allocator<cv::Point_<float> > > const&, cv::Mat, cv::Mat, cv::Mat&, cv::Mat&, float, int, int, double, bool) /home/sportv03/MC-Calib/McCalib/src/geometrytools.cpp:576
    #9 0x555e2e3d4c5e in Object3DObs::estimatePose(float, int) /home/sportv03/MC-Calib/McCalib/src/Object3DObs.cpp:237
    #10 0x555e2e289ee2 in McCalib::Calibration::estimatePoseAllObjects() /home/sportv03/MC-Calib/McCalib/src/McCalib.cpp:979

SUMMARY: AddressSanitizer: heap-buffer-overflow /home/sportv03/MC-Calib/McCalib/src/geometrytools.cpp:252 in ransacP3P(std::vector<cv::Point3_<float>, std::allocator<cv::Point3_<float> > > const&, std::vector<cv::Point_<float>, std::allocator<cv::Point_<float> > > const&, cv::Mat, cv::Mat, cv::Mat&, cv::Mat&, float, int, double, bool)
Shadow bytes around the buggy address:
  0x0c0480118310: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c0480118320: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c0480118330: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c0480118340: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c0480118350: fa fa fa fa fa fa 00 04 fa fa 04 fa fa fa 04 fa
=>0x0c0480118360: fa fa 00[04]fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c0480118370: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c0480118380: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c0480118390: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c04801183a0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c04801183b0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==19==ABORTING

If it's geometrytools.cpp:252 then it looks like a problem with not enough points 🤔 but still log says that on all images detected 6 points.

    // pick 4 points
    std::random_shuffle(myvector.begin(), myvector.end());
    std::array<int, 4> idx = {myvector[0], myvector[1], myvector[2],
                              myvector[3]};

Ok it was simpler than it looked. Here is the problem:

######################################## Boards Parameters ###################################################
number_x_square: 4         # number of squares in the X direction
number_y_square: 3         # number of squares the Y direction

after switching to 3x4 it's working

######################################## Boards Parameters ###################################################
number_x_square: 3         # number of squares in the X direction
number_y_square: 4         # number of squares the Y direction

So it's my fault, I printed the board with wrong parameters.

Is it possible to add some warnings or error messages to prevent mistakes like this?

Leaving the trace, here is my correct (I guess) output cameras.yml:

%YAML:1.0
---
nb_camera: 1
camera_0:
   camera_matrix: !!opencv-matrix
      rows: 3
      cols: 3
      dt: d
      data: [ 3.4089219026871656e+03, 0., 1.9197051479126044e+03, 0.,
          3.4123589126351535e+03, 1.0866674255497603e+03, 0., 0., 1. ]
   distortion_vector: !!opencv-matrix
      rows: 1
      cols: 5
      dt: d
      data: [ -2.3354408055534709e-02, -1.8428057118907593e-02,
          3.5474013129843543e-04, 8.8942147821997972e-04,
          2.5178062482779479e-01 ]
   distortion_type: 0
   camera_group: 0
   img_width: 3840
   img_height: 2160
   camera_pose_matrix: !!opencv-matrix
      rows: 4
      cols: 4
      dt: d
      data: [ 1., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1., 0., 0., 0., 0.,
          1. ]
errors:
   camera_0:
      translation_std: !!opencv-matrix
         rows: 3
         cols: 1
         dt: d
         data: [ 0., 0., 0. ]
      mean_rotation_error: 0.

using this configration

boards_index: []
cam_params_path: None
cam_prefix: Cam_
camera_params_file_name: cameras.yml
distortion_model: 0
distortion_per_camera: []
fix_intrinsic: 0
he_approach: 0
length_marker: 0.03
length_square: 0.04
min_perc_pts: 0.8
number_board: 1
number_camera: 1
number_iterations: 1000
number_x_square: 3
number_x_square_per_board: []
number_y_square: 4
number_y_square_per_board: []
ransac_threshold: 5
refine_corner: 1
resolution_x: 3840
resolution_y: 2160
save_detection: 1
save_reprojection: 1
square_size: 6.5
square_size_per_board: []

Example frame with detections:

000033

And here is full log of this calibration:

0000001 | 2023-11-09, 19:41:55.931742 [info] - Nb of cameras : 1   Nb of Boards : 1   Refined Corners : true   Distortion mode : 0
0000002 | 2023-11-09, 19:41:55.932443 [info] - Extraction camera 001
0000003 | 2023-11-09, 19:41:55.954703 [info] - Number of threads for board detection :: 20
0000154 | 2023-11-09, 19:41:56.391658 [info] - Number of detected corners :: 6
0000155 | 2023-11-09, 19:41:56.883855 [info] - Number of detected corners :: 6
0000156 | 2023-11-09, 19:41:57.014276 [info] - Number of detected corners :: 6
0000157 | 2023-11-09, 19:41:57.025579 [info] - Number of detected corners :: 6
0000158 | 2023-11-09, 19:41:57.035072 [info] - Number of detected corners :: 6
0000159 | 2023-11-09, 19:41:57.043034 [info] - Number of detected corners :: 6
0000160 | 2023-11-09, 19:41:57.046643 [info] - Number of detected corners :: 6
0000161 | 2023-11-09, 19:41:57.051452 [info] - Number of detected corners :: 6
0000162 | 2023-11-09, 19:41:57.052213 [info] - Number of detected corners :: 6
0000163 | 2023-11-09, 19:41:57.064255 [info] - Number of detected corners :: 6
0000164 | 2023-11-09, 19:41:57.067523 [info] - Number of detected corners :: 6
0000165 | 2023-11-09, 19:41:57.069675 [info] - Number of detected corners :: 6
0000166 | 2023-11-09, 19:41:57.071843 [info] - Number of detected corners :: 6
0000167 | 2023-11-09, 19:41:57.072352 [info] - Number of detected corners :: 6
0000168 | 2023-11-09, 19:41:57.074574 [info] - Number of detected corners :: 6
0000169 | 2023-11-09, 19:41:57.078415 [info] - Number of detected corners :: 6
0000170 | 2023-11-09, 19:41:57.078799 [info] - Number of detected corners :: 6
0000171 | 2023-11-09, 19:41:57.081711 [info] - Number of detected corners :: 6
0000172 | 2023-11-09, 19:41:57.187564 [info] - Number of detected corners :: 6
0000173 | 2023-11-09, 19:41:57.788288 [info] - Number of detected corners :: 6
0000174 | 2023-11-09, 19:41:57.846747 [info] - Number of detected corners :: 6
0000175 | 2023-11-09, 19:41:57.915139 [info] - Number of detected corners :: 6
0000176 | 2023-11-09, 19:41:58.377457 [info] - Number of detected corners :: 6
0000177 | 2023-11-09, 19:41:58.408988 [info] - Number of detected corners :: 6
0000178 | 2023-11-09, 19:41:58.417557 [info] - Number of detected corners :: 6
0000179 | 2023-11-09, 19:41:58.420223 [info] - Number of detected corners :: 6
0000180 | 2023-11-09, 19:41:58.422251 [info] - Number of detected corners :: 6
0000181 | 2023-11-09, 19:41:58.422873 [info] - Number of detected corners :: 6
0000182 | 2023-11-09, 19:41:58.424522 [info] - Number of detected corners :: 6
0000183 | 2023-11-09, 19:41:58.430306 [info] - Number of detected corners :: 6
0000184 | 2023-11-09, 19:41:58.435548 [info] - Number of detected corners :: 6
0000185 | 2023-11-09, 19:41:58.435657 [info] - Number of detected corners :: 6
0000186 | 2023-11-09, 19:41:58.439173 [info] - Number of detected corners :: 6
0000187 | 2023-11-09, 19:41:58.442691 [info] - Number of detected corners :: 6
0000188 | 2023-11-09, 19:41:58.443259 [info] - Number of detected corners :: 6
0000189 | 2023-11-09, 19:41:58.456990 [info] - Number of detected corners :: 6
0000190 | 2023-11-09, 19:41:58.468937 [info] - Number of detected corners :: 6
0000191 | 2023-11-09, 19:41:58.602380 [info] - Number of detected corners :: 6
0000192 | 2023-11-09, 19:41:59.179171 [info] - Number of detected corners :: 6
0000193 | 2023-11-09, 19:41:59.181499 [info] - Number of detected corners :: 6
0000194 | 2023-11-09, 19:41:59.230882 [info] - Number of detected corners :: 6
0000195 | 2023-11-09, 19:41:59.294396 [info] - Number of detected corners :: 6
0000196 | 2023-11-09, 19:41:59.616744 [info] - Number of detected corners :: 6
0000197 | 2023-11-09, 19:41:59.763195 [info] - Number of detected corners :: 6
0000198 | 2023-11-09, 19:41:59.772432 [info] - Number of detected corners :: 6
0000199 | 2023-11-09, 19:41:59.779965 [info] - Number of detected corners :: 6
0000200 | 2023-11-09, 19:41:59.791094 [info] - Number of detected corners :: 6
0000201 | 2023-11-09, 19:41:59.800951 [info] - Number of detected corners :: 6
0000202 | 2023-11-09, 19:41:59.804885 [info] - Number of detected corners :: 6
0000203 | 2023-11-09, 19:41:59.813097 [info] - Number of detected corners :: 6
0000204 | 2023-11-09, 19:41:59.820213 [info] - Number of detected corners :: 6
0000205 | 2023-11-09, 19:41:59.831461 [info] - Number of detected corners :: 6
0000206 | 2023-11-09, 19:41:59.856650 [info] - Number of detected corners :: 6
0000207 | 2023-11-09, 19:41:59.869923 [info] - Number of detected corners :: 6
0000208 | 2023-11-09, 19:41:59.985144 [info] - Number of detected corners :: 6
0000209 | 2023-11-09, 19:42:00.007011 [info] - Number of detected corners :: 6
0000210 | 2023-11-09, 19:42:00.028917 [info] - Number of detected corners :: 6
0000211 | 2023-11-09, 19:42:00.053372 [info] - Number of detected corners :: 6
0000212 | 2023-11-09, 19:42:00.190402 [info] - Number of detected corners :: 6
0000213 | 2023-11-09, 19:42:00.604648 [info] - Number of detected corners :: 6
0000214 | 2023-11-09, 19:42:00.696202 [info] - Number of detected corners :: 6
0000215 | 2023-11-09, 19:42:00.751165 [info] - Number of detected corners :: 6
0000216 | 2023-11-09, 19:42:00.817243 [info] - Number of detected corners :: 6
0000217 | 2023-11-09, 19:42:01.126580 [info] - Number of detected corners :: 6
0000218 | 2023-11-09, 19:42:01.163259 [info] - Number of detected corners :: 6
0000219 | 2023-11-09, 19:42:01.237139 [info] - Number of detected corners :: 6
0000220 | 2023-11-09, 19:42:01.263114 [info] - Number of detected corners :: 6
0000221 | 2023-11-09, 19:42:01.280151 [info] - Number of detected corners :: 6
0000222 | 2023-11-09, 19:42:01.286722 [info] - Number of detected corners :: 6
0000223 | 2023-11-09, 19:42:01.301338 [info] - Number of detected corners :: 6
0000224 | 2023-11-09, 19:42:01.305156 [info] - Number of detected corners :: 6
0000225 | 2023-11-09, 19:42:01.325084 [info] - Number of detected corners :: 6
0000226 | 2023-11-09, 19:42:01.484580 [info] - Number of detected corners :: 6
0000227 | 2023-11-09, 19:42:01.517241 [info] - Number of detected corners :: 6
0000228 | 2023-11-09, 19:42:01.528997 [info] - Number of detected corners :: 6
0000229 | 2023-11-09, 19:42:01.536519 [info] - Number of detected corners :: 6
0000230 | 2023-11-09, 19:42:01.541458 [info] - Number of detected corners :: 6
0000231 | 2023-11-09, 19:42:01.619411 [info] - Number of detected corners :: 6
0000232 | 2023-11-09, 19:42:02.040156 [info] - Number of detected corners :: 6
0000233 | 2023-11-09, 19:42:02.216112 [info] - Number of detected corners :: 6
0000234 | 2023-11-09, 19:42:02.234455 [info] - Number of detected corners :: 6
0000235 | 2023-11-09, 19:42:02.240154 [info] - Number of detected corners :: 6
0000236 | 2023-11-09, 19:42:02.256737 [info] - Number of detected corners :: 6
0000237 | 2023-11-09, 19:42:02.271854 [info] - Number of detected corners :: 6
0000238 | 2023-11-09, 19:42:02.380276 [info] - Number of detected corners :: 6
0000239 | 2023-11-09, 19:42:02.603583 [info] - Number of detected corners :: 6
0000240 | 2023-11-09, 19:42:02.612805 [info] - Number of detected corners :: 6
0000241 | 2023-11-09, 19:42:02.662214 [info] - Number of detected corners :: 6
0000242 | 2023-11-09, 19:42:02.701055 [info] - Number of detected corners :: 6
0000243 | 2023-11-09, 19:42:02.711006 [info] - Number of detected corners :: 6
0000244 | 2023-11-09, 19:42:02.737259 [info] - Number of detected corners :: 6
0000245 | 2023-11-09, 19:42:02.760583 [info] - Number of detected corners :: 6
0000246 | 2023-11-09, 19:42:02.950104 [info] - Number of detected corners :: 6
0000247 | 2023-11-09, 19:42:02.951831 [info] - Number of detected corners :: 6
0000248 | 2023-11-09, 19:42:02.967098 [info] - Number of detected corners :: 6
0000249 | 2023-11-09, 19:42:02.981049 [info] - Number of detected corners :: 6
0000250 | 2023-11-09, 19:42:03.077919 [info] - Number of detected corners :: 6
0000251 | 2023-11-09, 19:42:03.459420 [info] - Number of detected corners :: 6
0000252 | 2023-11-09, 19:42:03.689569 [info] - Number of detected corners :: 6
0000253 | 2023-11-09, 19:42:03.694179 [info] - Number of detected corners :: 6
0000254 | 2023-11-09, 19:42:03.704636 [info] - Number of detected corners :: 6
0000255 | 2023-11-09, 19:42:03.704853 [info] - Number of detected corners :: 6
0000256 | 2023-11-09, 19:42:03.705908 [info] - Number of detected corners :: 6
0000257 | 2023-11-09, 19:42:03.740245 [info] - Number of detected corners :: 6
0000258 | 2023-11-09, 19:42:03.753769 [info] - Number of detected corners :: 6
0000259 | 2023-11-09, 19:42:03.945341 [info] - Number of detected corners :: 6
0000260 | 2023-11-09, 19:42:04.002475 [info] - Number of detected corners :: 6
0000261 | 2023-11-09, 19:42:04.127464 [info] - Number of detected corners :: 6
0000262 | 2023-11-09, 19:42:04.153221 [info] - Number of detected corners :: 6
0000263 | 2023-11-09, 19:42:04.229629 [info] - Number of detected corners :: 6
0000264 | 2023-11-09, 19:42:04.284294 [info] - Number of detected corners :: 6
0000265 | 2023-11-09, 19:42:04.340753 [info] - Number of detected corners :: 6
0000266 | 2023-11-09, 19:42:04.530619 [info] - Number of detected corners :: 6
0000267 | 2023-11-09, 19:42:04.685421 [info] - Number of detected corners :: 6
0000268 | 2023-11-09, 19:42:04.897467 [info] - Number of detected corners :: 6
0000269 | 2023-11-09, 19:42:05.225240 [info] - Number of detected corners :: 6
0000270 | 2023-11-09, 19:42:05.255726 [info] - Number of detected corners :: 6
0000271 | 2023-11-09, 19:42:05.274892 [info] - Number of detected corners :: 6
0000272 | 2023-11-09, 19:42:05.276763 [info] - Number of detected corners :: 6
0000273 | 2023-11-09, 19:42:05.278098 [info] - Number of detected corners :: 6
0000274 | 2023-11-09, 19:42:05.286148 [info] - Number of detected corners :: 6
0000275 | 2023-11-09, 19:42:05.300776 [info] - Number of detected corners :: 6
0000276 | 2023-11-09, 19:42:05.372645 [info] - Number of detected corners :: 6
0000277 | 2023-11-09, 19:42:05.402864 [info] - Number of detected corners :: 6
0000278 | 2023-11-09, 19:42:05.423072 [info] - Number of detected corners :: 6
0000279 | 2023-11-09, 19:42:05.552719 [info] - Number of detected corners :: 6
0000280 | 2023-11-09, 19:42:05.555362 [info] - Number of detected corners :: 6
0000281 | 2023-11-09, 19:42:05.565536 [info] - Number of detected corners :: 6
0000282 | 2023-11-09, 19:42:05.713833 [info] - Number of detected corners :: 6
0000283 | 2023-11-09, 19:42:05.816718 [info] - Number of detected corners :: 6
0000284 | 2023-11-09, 19:42:06.029115 [info] - Board extraction done!
0000285 | 2023-11-09, 19:42:06.029148 [info] - Intrinsic calibration initiated
0000286 | 2023-11-09, 19:42:06.029156 [info] - Initializing camera calibration using images
0000287 | 2023-11-09, 19:42:06.029161 [info] - NB of board available in this camera :: 130
0000288 | 2023-11-09, 19:42:06.029172 [info] - NB of frames where this camera saw a board :: 130
0000289 | 2023-11-09, 19:42:18.670284 [info] - cameraMatrix : [3405.219129797035, 0, 1910.094988443297;
 0, 3410.201075447987, 1117.978734413974;
 0, 0, 1]
0000290 | 2023-11-09, 19:42:18.670343 [info] - distCoeffs : [0.03576338019176255, -0.3691663487185353, 0.002828214851890153, -0.0002464721235971383, 1.005100191367455]
0000681 | 2023-11-09, 19:42:18.695245 [info] - Parameters before optimization :: [3405.219129797035, 0, 1910.094988443297;
 0, 3410.201075447987, 1117.978734413974;
 0, 0, 1]
0000682 | 2023-11-09, 19:42:18.695289 [info] - distortion vector :: [0.03576338019176255, -0.3691663487185353, 0.002828214851890153, -0.0002464721235971383, 1.005100191367455]
iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
   0  7.290947e+01    0.00e+00    1.62e+03   0.00e+00   0.00e+00  1.00e+04        0    1.16e-02    1.26e-02
   1  6.926904e+01    3.64e+00    1.25e+03   3.05e+00   1.04e+00  3.00e+04        1    1.15e-02    2.41e-02
   2  6.782618e+01    1.44e+00    1.46e+02   1.64e+00   1.04e+00  9.00e+04        1    1.19e-02    3.61e-02
   3  6.735006e+01    4.76e-01    1.85e+02   3.37e+00   1.07e+00  2.70e+05        1    1.23e-02    4.84e-02
   4  6.707892e+01    2.71e-01    1.99e+02   6.53e+00   1.02e+00  8.10e+05        1    1.15e-02    5.99e-02
   5  6.680882e+01    2.70e-01    6.25e+02   1.06e+01   9.51e-01  2.43e+06        1    1.17e-02    7.17e-02
   6  6.668359e+01    1.25e-01    5.10e+02   9.81e+00   9.32e-01  6.82e+06        1    1.22e-02    8.39e-02
   7  6.666008e+01    2.35e-02    6.85e+01   3.64e+00   1.05e+00  2.05e+07        1    1.15e-02    9.54e-02
   8  6.665849e+01    1.59e-03    8.33e+00   5.95e-01   1.40e+00  6.14e+07        1    1.15e-02    1.07e-01
   9  6.665805e+01    4.35e-04    3.82e+00   1.03e-01   1.62e+00  1.84e+08        1    1.22e-02    1.19e-01
  10  6.665788e+01    1.72e-04    2.08e+00   3.96e-02   1.64e+00  5.53e+08        1    1.23e-02    1.31e-01
  11  6.665781e+01    7.05e-05    1.25e+00   2.13e-02   1.64e+00  1.66e+09        1    1.16e-02    1.43e-01
0000683 | 2023-11-09, 19:42:18.841165 [info] - Parameters after optimization :: [3408.921902687166, 0, 1919.705147912604;
 0, 3412.358912635154, 1086.66742554976;
 0, 0, 1]
0000684 | 2023-11-09, 19:42:18.841210 [info] - distortion vector after optimization :: [-0.02335440805553471, -0.01842805711890759, 0.0003547401312984354, 0.0008894214782199797, 0.2517806248277948]
0000685 | 2023-11-09, 19:42:18.843411 [info] - Intrinsic Calibration done!
0000686 | 2023-11-09, 19:42:18.843422 [info] - 3D Object calibration initiated
0001211 | 2023-11-09, 19:42:18.868771 [info] - Mean Error 0.351087
iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
   0  6.747345e+01    0.00e+00    3.39e+02   0.00e+00   0.00e+00  1.00e+04        0    7.18e-03    8.04e-03
   1  6.676715e+01    7.06e-01    2.11e+02   1.04e-01   1.34e+00  3.00e+04        1    8.07e-03    1.61e-02
   2  6.667512e+01    9.20e-02    3.11e+01   1.27e-02   1.17e+00  9.00e+04        1    8.78e-03    2.49e-02
   3  6.666652e+01    8.60e-03    2.49e+01   3.37e-03   1.60e+00  2.70e+05        1    7.91e-03    3.28e-02
   4  6.666276e+01    3.76e-03    2.00e+01   3.15e-03   1.72e+00  8.10e+05        1    7.81e-03    4.07e-02
   5  6.666071e+01    2.05e-03    1.61e+01   2.24e-03   1.77e+00  2.43e+06        1    7.82e-03    4.85e-02
   6  6.665944e+01    1.27e-03    1.30e+01   1.63e-03   1.81e+00  7.29e+06        1    8.64e-03    5.71e-02
   7  6.665867e+01    7.70e-04    1.05e+01   1.26e-03   1.63e+00  2.19e+07        1    7.87e-03    6.50e-02
   8  6.665830e+01    3.71e-04    8.49e+00   7.35e-04   1.74e+00  6.56e+07        1    7.80e-03    7.28e-02
   9  6.665809e+01    2.07e-04    6.88e+00   5.13e-04   1.76e+00  1.97e+08        1    7.94e-03    8.08e-02
  10  6.665797e+01    1.21e-04    5.58e+00   3.71e-04   1.78e+00  5.90e+08        1    8.74e-03    8.95e-02
  11  6.665789e+01    7.38e-05    4.53e+00   2.75e-04   1.79e+00  1.77e+09        1    8.35e-03    9.79e-02
0001342 | 2023-11-09, 19:42:18.972266 [info] - Mean Error 0.349113
0001343 | 2023-11-09, 19:42:18.972296 [info] - 3D Object calibration done!
0001344 | 2023-11-09, 19:42:18.972301 [info] - Camera group calibration initiated
0001348 | 2023-11-09, 19:42:18.975133 [info] - Number of frames for camera group optimization  :: 130
iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
   0  6.665789e+01    0.00e+00    4.53e+00   0.00e+00   0.00e+00  1.00e+04        0    1.06e-02    1.17e-02
0001349 | 2023-11-09, 19:42:18.990538 [info] - Camera  0  :: [1, 0, 0, 0;
 0, 1, 0, 0;
 0, 0, 1, 0;
 0, 0, 0, 1]
0001350 | 2023-11-09, 19:42:18.991763 [info] - Camera group calibration done!
0002262 | 2023-11-09, 19:42:19.048723 [info] - Number of frames for camera group optimization  :: 130
iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
   0  6.732523e+01    0.00e+00    3.39e+02   0.00e+00   0.00e+00  1.00e+04        0    9.89e-03    1.08e-02
   1  6.676684e+01    5.58e-01    2.11e+02   4.65e-02   1.46e+00  3.00e+04        1    1.18e-02    2.27e-02
   2  6.667512e+01    9.17e-02    3.11e+01   1.21e-02   1.17e+00  9.00e+04        1    1.11e-02    3.38e-02
   3  6.666652e+01    8.60e-03    2.49e+01   3.36e-03   1.60e+00  2.70e+05        1    1.17e-02    4.55e-02
   4  6.666276e+01    3.76e-03    2.00e+01   3.15e-03   1.72e+00  8.10e+05        1    1.09e-02    5.65e-02
   5  6.666071e+01    2.05e-03    1.61e+01   2.24e-03   1.77e+00  2.43e+06        1    1.09e-02    6.74e-02
   6  6.665944e+01    1.27e-03    1.30e+01   1.63e-03   1.81e+00  7.29e+06        1    1.16e-02    7.89e-02
   7  6.665867e+01    7.70e-04    1.05e+01   1.26e-03   1.63e+00  2.19e+07        1    1.10e-02    8.99e-02
   8  6.665830e+01    3.71e-04    8.49e+00   7.35e-04   1.74e+00  6.56e+07        1    1.17e-02    1.02e-01
   9  6.665809e+01    2.07e-04    6.88e+00   5.13e-04   1.76e+00  1.97e+08        1    1.09e-02    1.13e-01
  10  6.665797e+01    1.21e-04    5.58e+00   3.71e-04   1.78e+00  5.90e+08        1    1.15e-02    1.24e-01
  11  6.665789e+01    7.38e-05    4.53e+00   2.75e-04   1.79e+00  1.77e+09        1    1.09e-02    1.35e-01
0002263 | 2023-11-09, 19:42:19.187167 [info] - Camera  0  :: [1, 0, 0, 0;
 0, 1, 0, 0;
 0, 0, 1, 0;
 0, 0, 0, 1]
0002394 | 2023-11-09, 19:42:19.191057 [info] - Non-overlapping calibration initiated
0002395 | 2023-11-09, 19:42:19.191075 [info] - Non-overlapping calibration done!
0002396 | 2023-11-09, 19:42:19.191081 [info] - Merge cameras and objets initiated
0003308 | 2023-11-09, 19:42:19.246652 [info] - Number of frames for camera group optimization  :: 130
iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
   0  6.732523e+01    0.00e+00    3.39e+02   0.00e+00   0.00e+00  1.00e+04        0    9.97e-03    1.09e-02
   1  6.676684e+01    5.58e-01    2.11e+02   4.65e-02   1.46e+00  3.00e+04        1    1.12e-02    2.21e-02
   2  6.667512e+01    9.17e-02    3.11e+01   1.21e-02   1.17e+00  9.00e+04        1    1.18e-02    3.39e-02
   3  6.666652e+01    8.60e-03    2.49e+01   3.36e-03   1.60e+00  2.70e+05        1    1.17e-02    4.56e-02
   4  6.666276e+01    3.76e-03    2.00e+01   3.15e-03   1.72e+00  8.10e+05        1    1.10e-02    5.66e-02
   5  6.666071e+01    2.05e-03    1.61e+01   2.24e-03   1.77e+00  2.43e+06        1    1.16e-02    6.82e-02
   6  6.665944e+01    1.27e-03    1.30e+01   1.63e-03   1.81e+00  7.29e+06        1    1.09e-02    7.91e-02
   7  6.665867e+01    7.70e-04    1.05e+01   1.26e-03   1.63e+00  2.19e+07        1    1.08e-02    8.99e-02
   8  6.665830e+01    3.71e-04    8.49e+00   7.35e-04   1.74e+00  6.56e+07        1    1.72e-02    1.07e-01
   9  6.665809e+01    2.07e-04    6.88e+00   5.13e-04   1.76e+00  1.97e+08        1    1.08e-02    1.18e-01
  10  6.665797e+01    1.21e-04    5.58e+00   3.71e-04   1.78e+00  5.90e+08        1    1.16e-02    1.30e-01
  11  6.665789e+01    7.38e-05    4.53e+00   2.75e-04   1.79e+00  1.77e+09        1    1.09e-02    1.41e-01
0003309 | 2023-11-09, 19:42:19.390205 [info] - Camera  0  :: [1, 0, 0, 0;
 0, 1, 0, 0;
 0, 0, 1, 0;
 0, 0, 0, 1]
0003830 | 2023-11-09, 19:42:19.420297 [info] - Merge cameras and objets done!
0003831 | 2023-11-09, 19:42:19.420325 [info] - Final refinement initiated
0003832 | 2023-11-09, 19:42:19.420334 [info] - Number of frames for camera group optimization  :: 130
iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
   0  6.732523e+01    0.00e+00    3.39e+02   0.00e+00   0.00e+00  1.00e+04        0    9.94e-03    1.08e-02
   1  6.676684e+01    5.58e-01    2.11e+02   4.65e-02   1.46e+00  3.00e+04        1    1.17e-02    2.26e-02
   2  6.667512e+01    9.17e-02    3.11e+01   1.21e-02   1.17e+00  9.00e+04        1    1.09e-02    3.35e-02
   3  6.666652e+01    8.60e-03    2.49e+01   3.36e-03   1.60e+00  2.70e+05        1    1.08e-02    4.43e-02
   4  6.666276e+01    3.76e-03    2.00e+01   3.15e-03   1.72e+00  8.10e+05        1    1.15e-02    5.58e-02
   5  6.666071e+01    2.05e-03    1.61e+01   2.24e-03   1.77e+00  2.43e+06        1    1.08e-02    6.66e-02
   6  6.665944e+01    1.27e-03    1.30e+01   1.63e-03   1.81e+00  7.29e+06        1    1.08e-02    7.75e-02
   7  6.665867e+01    7.70e-04    1.05e+01   1.26e-03   1.63e+00  2.19e+07        1    1.15e-02    8.90e-02
   8  6.665830e+01    3.71e-04    8.49e+00   7.35e-04   1.74e+00  6.56e+07        1    1.08e-02    9.98e-02
   9  6.665809e+01    2.07e-04    6.88e+00   5.13e-04   1.76e+00  1.97e+08        1    1.07e-02    1.11e-01
  10  6.665797e+01    1.21e-04    5.58e+00   3.71e-04   1.78e+00  5.90e+08        1    1.17e-02    1.22e-01
  11  6.665789e+01    7.38e-05    4.53e+00   2.75e-04   1.79e+00  1.77e+09        1    1.08e-02    1.33e-01
0003833 | 2023-11-09, 19:42:19.556461 [info] - Camera  0  :: [1, 0, 0, 0;
 0, 1, 0, 0;
 0, 0, 1, 0;
 0, 0, 0, 1]
0003834 | 2023-11-09, 19:42:19.557965 [info] - Number of frames for camera group optimization  :: 130
iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
   0  6.665789e+01    0.00e+00    4.53e+00   0.00e+00   0.00e+00  1.00e+04        0    2.10e-02    2.21e-02
0003835 | 2023-11-09, 19:42:19.584015 [info] - Camera  0  :: [1, 0, 0, 0;
 0, 1, 0, 0;
 0, 0, 1, 0;
 0, 0, 0, 1]
0003966 | 2023-11-09, 19:42:19.587718 [info] - Final refinement done
0003967 | 2023-11-09, 19:42:36.831521 [info] - Save parameters
0003968 | 2023-11-09, 19:42:36.842377 [info] - mean reprojection error :: 0.349113
0003969 | 2023-11-09, 19:42:36.849276 [info] - Calibration took 40 seconds

=================================================================
==19==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 12312 byte(s) in 3 object(s) allocated from:
    #0 0x7f700471a787 in operator new[](unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cc:107
    #1 0x7f700244066f  (/usr/lib/x86_64-linux-gnu/libtbb.so.2+0x2766f)

SUMMARY: AddressSanitizer: 12312 byte(s) leaked in 3 allocation(s).

Thank you so much for the very detailed feedback; I am sure it will be useful for future users facing a similar issue. I am also glad you managed to find the mistake and calibrate your camera properly.
The idea of warning the user that the used pattern does not exhibit the proper configuration is a great idea and might be implemented quite easily. Unfortunately, I cannot promise such an update rapidly.
Thank you very much again!