コンテンツにスキップ

OmniCal Calibration

このコンテンツはまだ日本語訳がありません。

Calibration is the automatic process of calculating camera and projector poses and settings using the blobs detected during Capture. Calibration also results in a consistent 3D point cloud formed from all blobs.

In the Stage editor, under Projectors, click OmniCal Calibration to open the Calibrator widget. This widget controls the main OmniCal behaviour.

Once you have created a Capture Plan, you can click on it to open the OmniCalStagePlan widget.

In the OmniCalStagePlan we recommend working through the sections from top to bottom: Capture, Calibration, Alignment, and Mesh Deform (if required).

OmniCal Stage Plan

The calibration process triangulates the position of the blobs detected in a capture as well as the relative positions of cameras & projectors and their lens intrinsics. From this point, you no longer need access to the physical stage to continue the calibration process.

Click Setup Calibration… and the widget OmniCal Calibration Setup will appear.

In most cases the default settings suffice. If calibration results are unsatisfactory despite good capture quality, adjust one setting at a time to clearly assess its impact.

In the Camera Calibration separator we can set the Calibration Model to one of three modes:

  • Auto: Attempt to detect appropriate model. Only manually select another mode if ‘Auto’ fails.
  • Epipolar: Used with scenes “with depth”, i.e. where blobs are not just projected on a flat surface, but are spread across 3 dimensions.
  • Homography: Used with scenes where blobs are mostly projected on a flat surface, or the depth provided is very shallow (e.g. < 1cm).

In the Bundle Adjustment separator we can set Bundle Adjustment target to one of five modes:

  • Auto
  • Cameras
  • Cameras and Projectors
  • Cameras then Projectors

Iterations(combined) of Bundle Adjustment to run for cameras and combined cameras & projectors modes. High value will be slow for large numbers of cameras and projectors.

  • Cameras then each Projector

Iterations(combined) of Bundle Adjustment to run for Cameras then each Projector modes. Fast so can be set much higher than combined iterations.

A setting under Point Cloud Reconstruction that is often useful is Camera graph optimisation. This should be enabled for camera setups where all cameras overlap with each other, where they form a closed loop, i.e. the first and last camera overlap with each other. Enabling the camera graph optimisation prevents gaps or discontinuities where the point cloud boundaries meet. This will give more consistent reconstruction and calibration results for typical setups for 360-degree projections inside of or on domes, cylinders, spheres or the walls of a room.

Camera graph BA iterations controls a separate Bundle Adjustment pass for the camera graph optimisation. The default is 500, but it is rare to need more than 50 iterations. This step is much faster than later Bundle Adjustment steps that involve cameras and projectors.

Projector Calibration Algorithm of Projector Calibration has three modes:

  • DLT: Direct Linear Transformation
  • Zhang
  • Auto: will try all available algorithms and select the best result.

Once you have finished adjusting the Calibration Settings, click Calibrate in the Plan editor and confirm with clicking “Yes” to start the calibration process. Depending on the number of cameras and projectors, this can take from a few seconds to tens of minutes.

Once calibration is complete, you can view the point cloud and pixel errors for each projector. To do so, go to the OmniCal Calibration Calibrator widget and open the Visualiser section. Set the Visualisation Source to Plan and set the Visualisation Mode to All or Only Point Clouds.

The generated point cloud will now be shown in the stage visualiser.

The Point Cloud visualisation option provides several visualisation modes that help with analysing issues such as interference from other light sources, or movement during a capture. The default and most useful mode is ProjectorReprojError, which visualises the individual reprojection errors for each projected blob after projector calibration.

Point Cloud VisualisationDescription
OffDisable point cloud visualisation.
ObservationsDraw number of camera pairs that see a cloud point. The observation count affects the 3D reconstruction: Red=0 (failed), Blue=1 (OK), Green=2+ (better quality).
InlierScoreDraw cloud point inlier category using colours. Red: invalid or outlier, Orange: outlier, Yellow: projector calibration outlier, Blue: camera calibration outlier, Green: inlier.
InliersOnlyOnly draw cloud points that are inliers (Blue) after applying camera calibration classifiers such as RanSaC or LMedS.
OutliersOnlyOnly draw cloud points that are outliers (Red) after applying camera calibration classifiers such as RanSaC or LMedS. Reveals unstable points, possible scene movement, mismatched blob codes etc.
DeformDraw distance of cloud points to aligned mesh (along point normal), using MeshDeform threshold settings.
ProjectorInliersOnlyOnly draw cloud points that are inliers (Blue) after projector calibration.
ProjectorOutliersOnlyOnly draw cloud points that are outliers (Red) after projector calibration.
ProjectorReprojErrorDraw cloud point reprojection errors after projector calibration. The point colour indicates the error quality between Green=good, Yellow=acceptable and Red=bad/outlier. Helps identify problematic points or projection areas.

With the Point labels option a text label can be rendered for each cloud point. The text content depends on the option value. The default value is Off.

Note that rendering cloud point labels has a significant impact on performance.

Point labelsDescription
OffDisable point labels.
GridCodeDraw x, y index that corresponds to the blob in the projector grid. This can be helpful for identifying points as part of OmniCal troubleshooting.
ProjectorReprojErrorDraw cloud point reprojection errors after projector calibration. This is a single RMS error value per point and given in pixels. Lower values are better. Values larger than 1px may indicate problems with the capture, such as light interference, movement etc., especially if they appear in clusters.

Click Open Report to see a summary report of the calibration. Error values below 1 pixel are considered good, and above 1px usually point to something going wrong in the process (physical setup, scene, configuration, …). The report values are displayed using a colour between Green and Red to better highlight problematic camera or projector errors. If everything is green, then the calibration was a success.

Re-run a calibration by modifying a setting and clicking Calibrate again. Note that issues introduced during image capture (lighting changes, obstructions, etc.) will require re-running Capture.

Re-running the calibration with different settings is useful:

  • If the calibration quality was decent, but not yet good enough. Tweaking camera or projector calibration settings can help in some cases to get better results.
  • If there were incorrect calibration settings (e.g. camera calibration was set to “Homography”, but the blobs land on non-planar surfaces).
  • Simply to experiment with settings, e.g. when trouble-shooting issues.

OmniCal can accurately calibrate projectors, including their particular lens distortion coefficients. Any rectilinear lens is supported, including ultra-wide-angle / ultra-short-throw lenses with throw ratios around 0.35, even if they use built-in mirrors.

However, OmniCal currently does not support fish-eye lenses.

Another minor limitation is that OmniCal cannot correct chromatic aberration in projector lenses. This is a less common phenomenon in projection (compared to photography), but it is noticeable at the corners of some ultra-short-throw lenses.