3DExpress tutorial: Calibrate with patternZZ

3DExpress version used: 15.3
Last revision: 28 August 2015

This tutorial will guide you through the process of configuring your 3DExpress software from the beginning until the calibration of the camera-laser using the patternZZ

If you don't have 3DExpress you can download a FREE 90 days trial by clicking:


Step 1 - Choosing the camera

When you open 3DExpress you will obtain a window like:

3DExpress main window

The first thing to do is to configure a new input. This is done in the menu Configure > New Input. This will open a configuration dialog like:

3DExpress pop-up wizard where the camera type can be choosen.

where several camera types can be chosen. For this guide, we will use a 2D camera because it is the option where more configuration steps are needed. By choosing a generic 3D camera, a Photonfocus camera or an Automation Technology one, some of the below steps would be skipped and, thus, the process easier.

Step 2 - Configuring the driver

Next step is choosing the appropriate driver. Here again, several options are available:

  • Grab from file: Used to simulate a camera by obtaining the image from a disk file.
  • generic: Used for drivers distributed together with the installation package
  • Silicon Software microEnable III/IV Frame Grabber: For Camera Link cameras connected to Silicon Software microEnable III or IV Frame Grabbers.
  • Common Vision Blox Genicam: For Genicam cameras (Common Vision Bloc software required)


Configuration of a generic SAL3D driver
  • Driver Type: The kind of driver to be used. Usually the required option is the generic driver.
  • FGD Path: The default path is <Program Files>/AQSENSE/3DExpress (will be different if you choose a different location) Several .fgd files are available with self explanatory names. For a complete list of SAL3D supported FrameGrabbers please refer to the supported Frame Grabbers documentation Opens in new window
  • FGD Config: Each supported Frame Grabber has specific configuration params available. Please refer to the supported Frame Grabbers documentation Opens in new window for more information.

In our particular case, as we are using a GigE camera, we use on of the two available GigE drivers (Pleora in this case). In this case, if no IP or MAC address is introduced, after clicking on "next" a new window appears asking us to select the camera.

Pleora GEV device selection window

Step 3 - Configure the Laser Stripe Detector

At this point, 3DExpress will ask you if you want to start grabbing. We'll click "yes" so that we can configure the laser stripe detection by using a live image.

In case after clicking on "yes" you can not see live image, make sure that the camera is not running in Trigger mode. In case of Pleora (also in CVB and Point Grey) driver, you can view and modify camera parameters by opening a new window.

Opening device config window to disable Trigger mode

After observing the live image, you can select between two laser detector algorithms: COG or Peak detector (add-on)

Configuration of the Laser Stripe Detector. The screen shows a detected laser line and the options to adjust the threshold and regions of interest

At this point you should place the patternZZ under the laser plane, and after focusing the image and adjusting the "threshold" parameter, you can go to the next step

Step 4 - Configure the RangeMap acquisiton

A RangeMap is a set of ordered profiles accumulated. So, in order to generate a RangeMap, the limits to this storage must be defined.

RangeMap configuration step in the 3DExpress wizard

The RangeMap configuration step allows us to determine several limits to the RangeMap acquisition:

  • Frame timeout: After a defined timeout, the RangeMap is finished and the next one starts to be accumulated.
  • Max. profiles: After a defined number of accumulated profiles, the RangeMap is finished and the next RangeMap starts to be generated.
  • Min. profiles: Rangemaps with less than a given number of profiles are discarded
  • Note: Please note that the Presence/Absence is used together with the other limit conditions (timeout and profiles limit). So, in case the user is interested to only use the presence/absence detection, the user should assure that the other two values are big enough.

    Presence/absence of the object (Laser detection top, bottom and minpoints): The user can define conditions to stop accumulating a rangemap when there is no object under the laser line. For this purpose, a minimum of detected points on each profile can be set (minpoints). When this value is greater than 0, a rangemap is started when a profile with more than "minpoints" is detected and the rangemap is finished when a profile withe less detected points than "minpoints" is scanned. Moreover, a smaller rangemap than the ROI can be defined to discard points always present on the image. This is done by means of Laser detection top and bottom.

Step 5 - Calibrating the camera-laser

The next step is to select the metric calibration method, in this case the "Static Metric ZZ".

Static metric calibration

In case that you do not see any profile on the left window, you can click on "Grab on", it can take some time depending on the number of profiles of the rangemap, and the camera framerate. Again make sure that you are working in Free running mode.

As the number of calibration points is not fix on the patternZZ, you should set the corresponding number of inside points in the "Num points:" textbox. In order to help the user to fill the pattern points, you should set the Y, and Z coordinate of the first points, set to corresponding numbers on the "Y Dist" and "Z Dist", and then click on "Fill Points".

"Ydist" and "Zdist" are the metric distance between two consecutive calibration points. If the sign of the Zdist if positive, the second point will have a higher Z coordinate.

Note: The Option "Fill Points" is only valid in case the coordinate system is aligned with the pattern. In a generic case, you should manually set all the pattern points.

In case you have points not belonging to the pattern, you can use the "ROI left" and "ROI right" values to select the calibration ROI.

Finally, after setting the encoder step, you can click on calibrate button.

After calibration, a pop-up will appear indicating the accuracy report. You can also check the calibration results by comparing on the right window the reconstructed point (in black) and the expected reconstruction (in red).

You are know ready to add COPs and ZMap outputs.