No announcement yet.

Camera Calibration parameters - precalibration and autocalibration

  • Filter
  • Time
  • Show
Clear All
new posts

  • Camera Calibration parameters - precalibration and autocalibration


    I wanted to ask about the 'use precalibration step' and 'Autocalibrated' checkboxes in Camera Calibration window in Zephyr in a bit more detail, as I couldn't find anything online.

    My questions:

    As I understand, 'autocalibrated' just serves as a flag for the type of calibration. Does the program treat the calibration settings different during sfm when this is checked? If so, how exactly? (more iterations, etc?)

    What does checking 'use precalibration step' do, exactly? Does it use the exif image data to estimate ALL the parameters (focal px, k1-k3, p1, p2, cx, cy) or just some of them? Does it use anything else that could change from dataset to dataset, aside from exif data? I get that it's used in situations where no good starting guess is available, but would like to know the importance of it or its general impact on the sparse point cloud.

    More details / experimentation:

    After searching through the forum I've come up with the following:
    • autocalibration happens when no exif data is available for the program to use (so 'Autocalibrated' is by default unchecked for datasets with exif data present)
    • Image exif data is used for the pre-calibration step, so if no exif data exists (e.g. video frames) this precalibration cannot be carried out
    • If the loaded parameters are already a good estimate, it's better to run the reconstruction without any precalibration step (so precalibration step overrides the input parameters)

    I've experimented with the 'use precalibration step' and while for some datasets unchecking it doesn't seem to have much of an effect (even when no database camera info is used), for one of my datasets (top-down drone images, roughly grid formation, large barrel distortion, camera not present in zephyr's camera database) unchecking precalibration step makes the sfm reconstruction very domed and partially missing.

    Example of the calibration settings for this domed dataset:

    Any advice or correction of my assumptions if they're wrong would be much appreciated, thank you!

  • #2
    Hey dodobirdat - Sorry about the slow reply! With the release of 7.0 we have a lot going on but haven't forgotten you

    Which version of Zephyr are you using? Currently there are no ' Use Pre-calibration step' or 'Autocalibration' checkboxes in the Camera Calibration window (7.0 automatically searches the online database for calibration data - I rolled back to 5.000 but still couldn't see these checkboxes).

    In essence, existing calibration information helps to speed up processing with known parameters, and provide more robust processing in the case of weak input images.

    Autocalibration overrides all parameters and forces Zephyr to solve the SFM without them.

    If an image dataset is strong enough, and has a high level of confidence matching from image to image, autocalibration will likely work well.

    If the image dataset is weak or problematic (high levels of lens distortion etc..) autocalibration is likely to fail, which is where using existing calibration information is very useful.

    Note: You can create your own calibrations through Utilities>Images>CameraCalibration.


    Tagging Roberto & Andrea Alessi in-case they have anything to add/ammend.


    • #3
      Hi cam3d, all good, thank you for the reply!

      Aha, to clarify I'm still using Zephyr 6.5, and the ' Use Pre-calibration step' or 'Autocalibration' checkboxes are found when I go to 'Modify Calibration' after loading all the images in the Camera Calibration window. This brings up the window on the right, where I can see the checkboxes:

      Click image for larger version

Name:	Screenshot 2023-03-07 154440.png
Views:	145
Size:	86.3 KB
ID:	8864
      Good to know that Autocalibration overrides all the input parameters! Does it rely on EXIF data to calculate its own starting values? Or some other clever approach I can't ask about (I'd imagine if EXIF data is the main source, then starting parameter estimation is harder when the only info is image size, as with sampled video frames)

      Any ideas about the 'Use precalibration step' option? It seems like it's also used when the input calibration parameter values aren't a good starting guess, but if it just overrides all parameters then I'm not sure how it differs from 'autocalibrated'.

      (Thanks for the note, if I had access to the camera that took my images I'd definitely use it, but alas.)


      • #4
        Thanks for clarifying dodobirdat

        I'm not sure on the specifics - I believe EXIF data is used to ID the hardware, but the calibration itself is derived from positive matches between photos taken by that hardware.

        IIRC precalibration refers to the matching of a small subset of images (30 images for v6.513) and the results from this matching step are used to aide the orientation of the full image-set - As a general rule precalibration is good to keep on :-)
        Last edited by cam3d; 2023-03-08, 05:53 AM.


        • #5
          Thank you for the extra information cam3d !

          Got it, so as you said previously, success of autocalibration depends on the image quality plus image arrangement/angles, not on whether it has EXIF information with the focal length, extra GPS data, etc.

          Oh, so it's reccomended to keep precalibration on regardless of whether your input parameters (focal length, distortion, center etc) are well-estimated? (with zephyr's option, or through Zhang calibration etc). It won't override them?

          Re precalibration mechanics: that's actually really interesting, and reminds me of the 2-step calibration they have in MicMac. I don't suppose there's any way to tell zephyr what images to use as a subset?

          For example if I knew I could pick 30/400 images where the images are well-textured, highly overlapping and all look inwards (convergent) to a specific object (which makes it easier to estimate parameters and is the basis of another calibration approach if I remember right). I highly doubt the subset choice is random though, because my reconstruction re-runs have looked pretty consistent.

          Not sure if you even have information on this, but would be interesting to know

          Last edited by dodobirdat; 2023-03-09, 05:26 AM.


          • #6
            Hi again dodobirdat -

            My understanding of how this works 'under the hood' is limited - Pinging Roberto for any additional insight


            • #7
              Hi cam3d,
              Thanks for the replies, looking forward to seeing if Roberto or Andrea Alessi have any additional recommendations


              • #8
                dodobirdat I dont´t know if you have started the task, because you have actually problems with the camera orientation. If that´s the case, i can tell you, how i build the sparse cloud with an unknown lens:
                - remove all exif data from the images (or just don´t save it during the processing in your image app)
                (this prevents Zephyr to use wrong calibration data)

                If you use focus stacking and you have different image sizes after processing:
                - resize all the images in relation at its long size to the biggest value of the biggest image in the set
                (example: 1st (biggest). image 4328x 2834 - 2nd image 4244x2826 = resize 2nd image in relation to 4328x xxx pixel.

                That´s my workflow. With that, i dont´t need calibration at all.

                Best regards