> For the complete documentation index, see [llms.txt](https://docs-7.phoenixlidar.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs-7.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/cameras/cam-x.md).

# CAM X

The CAMX window displays the camera information included within a mission. You can configure the numerous parameters associated with the sensors or cameras from this interface.

{% hint style="info" %}
When accessing this interface in Work Offline Mode, any modifications done will apply to the exported LAS/LAZ file that will be created when Exporting to LAS.
{% endhint %}

## Acquisition

The Acquisition tab displays the acquisition parameters for the camera sensor corresponding to the loaded .plp file. This is useful if the user wants to see the acquisition parameters that were set for the session. You can inspect the Event Pin of the camera as well as the method of Triggering.

{% hint style="warning" %}
These settings cannot be changed in Work Offline mode. They are simply read-only parameters.
{% endhint %}

![SpatialExplorer Camera sensor local settings Acquisition interface](/files/-Ma-WTWbPnRugPz_G89E)

## Calibration

In the Calibration tab, the user can revise the Camera’s calibration values, such as sensor size (in mm), pixel size (in px), as well as camera position and camera orientation. These options should not be altered unless necessary, and only then should be used in very special cases.

![SpatialExplorer Camera sensor local settings Calibration interface](/files/-Ma-WEScZLCIa2p-i796)

## Processing

The Processing tab allows for adjustment of the images used for colorization. If intervals have been selected, the user can choose to "Use Intervals" which will auto select images taken during the trajectory intervals and use those for colorization of the point cloud. It is also possible to manually check/uncheck images to use for colorization in this window. A preview of the image is shown on the right when one is selected.

### Colorization Search Strategy

There are 2 methods for determining which image to use during RGB extraction for points in your cloud.

![SpatialExplorer Camera sensor local settings Processing interface](/files/-MBjeudZvDL-i3y7yYH1)

The "Use photos close to point" method is based on spatial proximity and is influenced by the radius parameter. In general the benefit of using a spatial proximity method is that there are fewer points left uncolored. The drawback is that seam lines between photos are often more apparent.

![Colorization Search Strategy before and after point in SpatialExplorer Camera sensor local settings](/files/-M6GyszA78Ef_hIB6pSZ)

The  "Use photos exposed just before and after the point" option will select am image to pull RGB values from based on temporal proximity and will only search X images before and after the time of a LiDAR return. You can potentially increase the amount of points that get colored by this temporal method by increasing the range to 99 before and 99 after. This will work if the flightlines are not too long.

### Tools...

![](/files/aDtk9bw2zb8vkalk4hWJ)

Near the bottom, there is a “Tools” button that includes several utilities including:

* **Lock/Unlock Calibration**
* **Load sensor transform/extrinsics from file**
* **Apply Sensor Transform**
* **Edit Receptor Masks**
* **Reset receptor distortions**
* **Reset receptor transforms**
* **Reset to defaults**
* **Reset photo pose corrections**
* **Calibrate sensor automatically (CameraSnap1)**
* **Calibrate sensor automatically (CameraSnap2)**
* **Calibrate sensor manually (CameraSnap2)**
* **Load factory ladybug calibration**
* **Reset individual photo exposure gains**
* **Export TerraPhoto image timing**
* **User sensor preset**

![](/files/PaKIKEyaCbW6yGtjyg13)

#### Lock/Unlock Calibration

To edit a calibration first you need to unlock the calibration so you can manually change values. Click “Lock/Unlock Calibration” from the “Tools” button in the camera configuration dialog.

![Locked](/files/ZsZAx5XKAXb2orpGydAD)

![](/files/PlnulLm4mXtXjtecYVan)

#### Load Sensor Transform/Extrinsics From File..

This tool is useful for loading a camera calibration profile to update/replace and existing calibration.&#x20;

Example: A boresight calibration was not stored to rover during time of acquisition, however, you need to update the PLP file to include the boresight calibration prior to colorizing a pointcloud in Spatial Explorer.&#x20;

Click "Tools..." > " Load Sensor Transform/Extrinsics from File" > then navigate to a PLP file that includes the proper camera calibration for your system > "Open"

Select "Sessions" to import sensor settings from sensor's sessions calibrated in postprocessing, and then click "OK"

![](/files/-McLZzqPgw8vbJ71f05S)

Select the camera sensor to load transforms and corrections from, and then click "OK"

![](/files/-McL_Ke-YRv_i7OOTNyU)

Click "Yes" to load the IMU -> sensor transform&#x20;

![](/files/-McL_W8aJKv8a_1lAxQ7)

Click "Yes" to load the receptor transforms and calibrations

![](/files/-McL_g4oGLKRYFzEU-p1)

Review the loaded calibration parameters and click "Apply" then "OK" to exit the window. At the top left of Spatial Explorer click File > Save Project in order to save calibration to your active PLP file.

![Calibrated Camera](/files/-McL_xoDzDyYC6qQxtvY)

#### Apply Sensor Transform

![](/files/TXiPWwtuDuFxXNrX8yHK)

#### Edit Receptor Masks

Receptor masks can be used for both aerial cameras and mobile 360 degree cameras.&#x20;

![](/files/a56BuJudQfgGYLyM8oT6)

#### Reset Receptor Distortions...

This tool resets the receptor distortions for the active PLP camera lens calibration&#x20;

![](/files/-McLa8Jr3dpG21AvsHXh)

#### Reset Receptor Transforms

This tool resets the receptor transforms for the active PLP camera calibration&#x20;

![](/files/-McLaE0rF-kKJvhyKb7i)

#### Reset to defaults

Sometimes it is best to reset the calibration to defaults before attempting a new calibration.

For most cameras the receptor is what is calibrated.&#x20;

* To reset the calibration, open the camera configuration dialog and select “Reset to defaults” from the “Tools” button.&#x20;
* This will reset receptor specific calibration values and per photo pose correction values.

{% hint style="warning" %}
Follow this workflow for Resetting a Ladybug Calibration
{% endhint %}

**CameraSnap2 Resetting a Calibration (Ladybug Specific)**

For Ladybug calibration only “Sensor Calibration” is enabled which means the FLIR factory receptor calibration is not changed and the actual calibration is stored in the IMU to sensor rotation transform.

![](https://lh5.googleusercontent.com/_oiX3R8N52U50yhxipB_ztQrqKeCbBB3mqsX8OCVbYWrHSTytsh8fKnIkXtgge6WwW0hJV-Hf8Ft0QJXD-awQENfsPdtDObZebYxTEWZBxuzgTmBCoMOhrdQk7YMrv96nLSCSlKj)

To reset a Ladybug calibration first you need to unlock the calibration so you can manually change these values. Click “Lock/Unlock Calibration” from the “Tools” button in the camera configuration dialog.

Once the calibration parameters are unlocked. Type in the uncalibrated whole number rotation  values.

![](https://lh3.googleusercontent.com/I-O4bmUFnDQ22fBpjeGTrPAvDbO9ZPorWsDLNgqK2KSPxCPweyMNeC2HPCfDQORZd1-P9PJpz_pYhV6REiSLL7MdyAjMZypmcoSNQNwjkz-E69xFUTkUQmZlxNdsH0QzzZJsrDWa)

#### Reset photo pose corrections

Per photo pose correction values are stored for each image. You may just want to reset the pose correction values and keep the camera calibration.

To reset the per photo pose correction values, you just need to select “Reset photo pose corrections” from the “Tools” button in the camera configuration dialog.

![](https://lh5.googleusercontent.com/HD-vDnU7_ZaReH27MBi3yuas-vyhe5TuE8HwQIw0kwUzU4m3y_w0Nu8hl2QVE1tBrGcb2aCgXTjErSQ3anaE9qVf_m1M-Fqz7zv7veCHPhbT0XDg8-yUsS0czWk0ZH7uNtg2Lkfo)

#### Calibrate Sensor Automatically (CameraSnap1)

The CameraSnap1 tool is used to calibrate/boresight the system's camera sensor.&#x20;

**Unimodal Camera Calibration**

![](/files/-McLaVHXNPtuxKeqhc9g)

**CrossModal Camera Calibration**

![](/files/-McLajet3VAZ7zR3Ka2P)

#### Calibrate sensor automatically (CameraSnap2)

Click [here](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/workflow-kk/camera-snap/camerasnap#camerasnap2-aerial-calibration-workflow) to jump to the CameraSnap2 Calibration Workflow

CameraSnap2 CameraSnap2 makes several improvements over the previous version of CameraSnap. Among these improvements are better calibration quality, faster calibration, per exposure pose correction, and powerful outlier rejection and filtering tools.

One of the main goals with CameraSnap2 was to simplify the calibration process so that the user just needs to click “OK”. This is achieved by determining the best possible default parameters that will work in all scenarios for different cameras.

CameraSnap2 will even sometimes detect which camera is being calibrated and automatically set parameters to best fit that camera.

![](https://lh3.googleusercontent.com/RFPu_mj9WCio0GoXpxuDhjYcnlytf4OudCip4vIGyRp9FUsNKvmRAqWqoQdVYOiniSOjJxGzEjCte7VUWgwfqJIyplzY8aKyLG8D8DJAXBzRfV4xEySaNoCqpZFdAC5-K7JhtEwY)

{% hint style="warning" %}
**CameraSnap2 parameters should only need to be manually adjusted in the rarest of scenarios.**
{% endhint %}

**CameraSnap2 General Parameters**

![](/files/tBResvAUQY7mo9cEZjLU)

* **Photos:** The time intervals to use for calibration. Only photos within the selected interval will be used to calibrate the camera regardless of enabled state.&#x20;
* **Report:** File path that will be used to save the HTML calibration report.&#x20;
* **Implementation:** The feature detector that will be used to find features on all photos. SIFT will find more features than ORB, but can take longer to analyze and match. It is generally a good idea to use SIFT when possible, but ORB will still produce a good quick calibration.&#x20;
* **Max Iterations:** Calibration will normally end after around 3-10 iterations per cycle. In worst case scenarios the calibration will never converge and will automatically be stopped after the value set in max iterations. If this happens, the report will show that max iterations were consumed. The user should increase this value or look into trajectory and other external factors that could cause an unsuccessful calibration.&#x20;
* **Matching Tolerance:** This value controls how distinct feature matches need to be in order to be accepted. The default value of 0.5 should work well in most cases. Decreasing the value will require the matches to be less ambiguous and will result in less, potentially better, matches. Increasing this value will result in more matches, but the quality could suffer and there could be more outliers. Decrease this value if your dataset is rich with matches and want to eliminate potential outliers.&#x20;
* **Max Image Width:** Images will be scaled so that their width is at most this value. Increasing this value could increase the precision of detected features on the image. Decreasing this value could speed up processing time.&#x20;
* **Match Rejection Sigma Coefficient:** Before calibration begins, rays are projected through matching features. An “approach distance” value is determined based on how close the rays get to intersecting. A standard deviation is calculated for all match approach distances. This coefficient is multiplied by the standard deviation and all matches with an approach distance greater than that value are rejected. This is a great way to reject outliers but it relies on the initial calibration. Decreasing this value from the default will result in stricter outlier removal. Decreasing this too much can result in a misleading report that does not actually reflect the calibration quality (since only matches that are already good were used for calibration).&#x20;
* **Calibration Cycles:** Many of the match filtering mechanisms rely on the initial calibration in order to filter properly. The better the initial calibration, the better the filters will work at removing outliers. Each cycle refines the calibration, and as a result improves the filtering for the next cycle. This creates a positive feedback loop. You will see diminishing returns by increasing this value too much. The default should be fine for most datasets. For a more hands-on calibration, you can set this to 1 and then use report results to manually tune filtering and re-run.

**CameraSnap2 Advanced Parameters**

![](https://lh6.googleusercontent.com/DQR9JR_wCDW5GDX_WcETklnXpM6JZirfUoEYhRToFNdAkyL_cW5hrVKR86AUA7E7wNy9vZw4XFzkgQ_Jj7E0X2SUomUBUS0kbM237luuNNpoSWANpsldS_JnzbK2ocys7r403ngq)

* **Receptors to calibrate:** (Multi receptor cameras only) If the camera has multiple receptors, such as a Ladybug camera, you can pick which receptors you want to calibrate. This only has an effect if receptor specific parameters are set to be calibrated (Receptor Orientation, Intrinsics and Distortion)
* **Receptors photos to use:** (Multi receptor cameras only) If the camera has multiple receptors, you can pick which receptor’s photos you want to use to calibrate. In the case of the Ladybug you may want to not include photos from the upward facing camera for calibration.
* **Parameters to calibrate:**&#x20;
  * **Sensor Orientation:** Calibrate the entire sensor’s orientation relative to the IMU. Recommended for multi receptor cameras.&#x20;
  * **Receptor Orientation:** Calibrate the receptor’s orientation relative to the sensor. Recommended for single receptor cameras.&#x20;
  * **Intrinsics:** Calibrate receptor focal length and principal point&#x20;
  * **Distortion:** Calibrate receptor radial and tangential distortion&#x20;
  * **Individual Photo Pose Correction (Translation):** Allows CameraSnap2 to slightly change each photo’s position to achieve a better calibration. There are mixed results from enabling this.&#x20;
  * **Individual Photo Pose Correction (Translation):** Allows CameraSnap2 to slightly change each photo’s orientation to achieve a better calibration. It is recommended to disable any other calibration parameters if Individual Photo Pose Correction is enabled.
* **Match Intersection Distance:** Before calibration begins, rays are projected through matching features. An intersection point is estimated where the rays are closest to each other. If enabled, match intersections that are outside of the specified distance range from the sensor will be rejected. Matches that are very far away from the may be poor due to a large sampling distance, and matches very close may be outliers. The default values should be good for most datasets, but they could be refined if you are aware of what your min and max distances should be for your dataset.&#x20;
* **Approach Angle Minimum:** Before calibration begins, rays are projected through matching features. An “approach angle” value is determined based on the angle the rays make with each other. Matches with very shallow angles are poor for calibration. Increase this value to remove matches that don't contribute much to a good calibration. Be careful not to increase this too much, a high minimum angle may accidentally filter out all of your matches.&#x20;
* **Max Number of Threads:** This value should default to what your system is optimally capable of. One consequence of more threads is more memory usage. Image loading and feature detection is memory intensive. If you find yourself running out of memory, you may want to decrease this value.

#### Calibrate sensor manually (CameraSnap2)

![](https://lh3.googleusercontent.com/7EZjNY5clS0UhxjytGqqaMyCIpFZWY1QQ73JRMCEpRHwN39X4PtQMNsIWYdBH-kM8f4Wm87mv4MwEHddiYC1SByWyJLDkH1HgfVPWfCuCHZiJ1CzRNRxZ9c56S71Was58er9D7wM)

**CameraSnap2 Manual Calibration**

For manual calibration, the CameraSnap2 dialog appears mostly the same but with a new “Manual Calibration” section at the bottom of the general tab.

* Start with automatically detected matches: If enabled, CameraSnap2 will detect, match, and filter exactly as it would for an automatic calibration but will pre-load those matches into the match explorer.
* Using automatically detected matches in manual calibration is a good way to figure out what could be giving automatic calibration trouble.&#x20;
* It can also give you hints as to how match filtering parameters can be adjusted to achieve better results.
* After clicking okay, CameraSnap2 will detect and match features (if enabled) and then open the CameraSnap2 Match Explorer.

**CameraSnap2 Match Explorer**

![CameraSnap2 Match Explorer](https://lh4.googleusercontent.com/3bJWV8vryD71XVsXvvidSQIe7f5sZ4lg3z4brZ9GoV1iOatKGJkmM3fOIlJmxtFb2b6WSKzHobloFnciVwA2qLWXEs3I54f3vgAZ8fbgMhKNgr3bK3mRObE4k6wW2s2SG0xCU9Bk)

* **The CameraSnap2 Match Explorer is broken into 4 quadrants:**&#x20;
  * **Upper left and right:** Photo 1 (Green) and Photo 2 (Blue) preview and feature picker.&#x20;
    * Click and drag to navigate.&#x20;
    * Left click to pick a feature.&#x20;
    * “Z” will zoom in to the picked feature.&#x20;
    * “X” will completely zoom out.&#x20;
    * (Multi receptor only) Use the number keys to toggle between the photos from different receptors.
  * **Lower left:** Match list&#x20;
    * Click any match in the list to load it for editing.&#x20;
    * Click the column headers to toggle sorting.&#x20;
    * Clicking “Add Match” will create a new match that is a copy of the current match.&#x20;
    * Clicking “Remove Match” will remove the currently selected match.&#x20;
    * Holding Shift and clicking another match will select the range between the two. This is helpful for removing a lot of matches at once.
  * **Lower right:** Map view&#x20;
    * Each circle represents a photo (or multiple photos for multi receptor cameras)&#x20;
    * Left click a circle to select a photo for Photo 1&#x20;
    * Right click a circle to select a photo for Photo 2&#x20;
    * A preview of the photo’s frustum is shown along with the estimated ray and intersection of the picked features.
* Click “OK” to start calibration using the manually selected matches.

#### Load factory ladybug calibration

Resetting Ladybug Receptor Calibration to FLIR values&#x20;

If you modified the Ladybug receptor calibration manually or by running CameraSnap2 with receptor calibration options enabled, you may want to reset them to their FLIR calibrated values.

To reset Ladybug receptor calibration, you just need to select “Load factory ladybug calibration” from the “Tools” button in the camera configuration dialog.

![](https://lh4.googleusercontent.com/ewTphYK6wj1CsYOpECpjvaXrovAepJ29d4GVmiNwNblOCiu5DchmbvnW6r6BVRh-b9fIbbhYnVn3rYdVreLRArKNdLhl4OAenfo910a_u-eQHk3f6grsuOK1Ms_gt8nzNZPHtgEd)

#### Reset individual photo exposure gains

![](/files/EDJEZORHcWdZY4kBeagf)

#### Export TerraPhoto Image Timing

One useful utility is the “Export TerraPhoto image timing” option. This option allows you to save a Terraphoto Image Timing file that stores position and orientation information for each image. Creating this file will allow you to link an image timing file with trajectory information. This file will associate the timestamps of the trajectories in TerraPhoto with the timestamps stored for each image in an image timing file.

![Save TerraPhoto Image Timing File](/files/-LTPe_f_bGj0FLYcnc77)

#### Use Sensor Preset

This tool is used to set your camera calibration to a defined preset configuration, prior to camera calibration/boresighting.

Note: Ensure that the preset camera focal length matches your camera's focal length prior to using CameraSnap for camera calibration.&#x20;

![](/files/-McLdIJpjNMq-gvDUPqn)
