FPN calibration
How can you calibrate onsemi PYTHON sensors in IDS industrial cameras that are not factory-calibrated? Some of these sensors have a fixed-pattern noise (FPN) which causes vertical lines in the image. If you see such lines, you should calibrate the camera.
How to calibrate a uEye camera with PYTHON sensor
This application note affects the following camera models: UI-3130CP Rev.2, UI-3140CP Rev. 2, UI-3160CP Rev. 2, and UI-3180CP Rev.2.
Which camera models are affected?
Note that only models are affected that have a lower serial number than listed in the table:
Model |
Up to serial number (monochrome) |
Up to serial number (color) |
---|---|---|
UI-3130CP Rev. 2 |
4103039876 |
4103029919 |
UI-3140CP Rev. 2 |
4102866773 |
4103078619 |
UI-3160CP Rev. 2 |
4103099008 |
4103089849 |
UI-3180CP Rev. 2 |
4103079023 |
4103091599 |
You can also check in the IDS Camera Manager if you can calibrate the camera yourself:
1. Open the IDS Camera Manager.
2. Select the camera.
3. Click on “Camera information”.
If your camera displays either “uncalibrated” or “calibrated” under “FPN calibration”, you can calibrate it. If “Factory calibrated” is displayed or the “FPN Calibration” area is not visible, your camera model is not affected.
Why should I calibrate my camera?
Some sensors have a fixed-pattern noise (FPN) which often gets more noticeable with increasing image brightness. This causes visible vertical lines in the image. If you see such lines, you should calibrate the camera.
Presetting
First, you have to activate the internal image memory of the USB 3 uEye CP Rev. 2 models. From IDS Software Suite 4.81 on, the internal image memory is activated by default. You activate the internal image memory in the “Additional functions” of the IDS Camera Manager (see “uEye manual” under https://en.ids-imaging.com/manuals-ueye-software.html).
Second, you have to set up your illumination:
- The camera should nearly achieve white at an exposure time of 5 ms.
- The illumination should be as homogeneous as possible (e. g. aim the camera at some structure-less surface in some distance. If available, an EMVA 1288 test rig, or similar, may be used as well).
Checking the settings
1. Open the camera in uEye Cockpit (or uEye Demo under Linux)
2. Reset the camera to default values (menu entry under “uEye > Reset to defaults”).
3. Set the exposure time to 5 ms (see “Properties > Camera > Exposure time”).
4. Set all gains (master and RGB gains) to a factor of 1.0 by moving the corresponding sliders to their leftmost position (see “Properties > Image > Master gain” and “Properties > Image > Color gain”). So the gains are disabled.
5. Deactivate gamma (see “Properties > Image > Gamma”).
6. For color models: Disable the color correction (see “Properties > Color tab > IR color filter correction matrix”).
7. Check the histogram (menu entry under “View > Histogram”) and enable logarithmic scaling of the vertical axis by checking the “Logarithmic” option. For color models, only the green channel is relevant.
The bell-shaped peak (for color cameras: only the peak corresponding to the green color channel) should be in the right-most portion of the histogram and still be fully visible (i. e., no clipping/cutting away on its right tail).
The peak should be as symmetric and narrow as possible indicating a homogeneous illumination of the camera.
8. Change the brightness of the incident light and the way of lighting until the above-mentioned properties are set in the histogram.
9. Load the LUT (see Appendix: FPN_lut.xml). Check the image.
With the LUT enabled, a wave-like pattern in the image likely indicates that the illumination is not homogeneous. Ideally, the image does not display any kind of repeating pattern. Change the position of the camera with respect to the light source until the display of the uEye
Cockpit matches the example above (left). In case there still is some wave-like pattern visible in the uEye cockpit, rotate the camera such
that the stripes run horizontally. Avoid a diagonal or even a vertical orientation of the stripes. It may be possible that the original fixed pattern noise of the sensor becomes quite prominent in the LUT-enabled image. Those stripes always run from top to bottom and are fixed in position. Do not confuse them with any wave-like pattern from inhomogeneous illumination.
10. In the uEye Cockpit, close the camera.
11. Do not change the position of the camera nor the lighting situation.
Executing calibration
Having checked that your camera may be calibrated and having set up the correct lighting situation, you are now ready to calibrate your camera.
1. Open the IDS Camera Manager.
2. Click on “Camera information”.
3. Click on “Run calibration”. A message is displayed that depending on the hardware, the FPN calibration can take several minutes while the CPU-load increases accordingly.
Possible errors
- Lighting error (dialog) --> the sensor gets too much/little light or the illumination is too inhomogeneous.
- Other error (dialog) --> if this error occurs repeatedly, contact the IDS Machine Vision Consulting.
Appendix: FPN_lut.xml
<?xml version="1.0" encoding="utf-8"?>
<CameraLUT>
<NumberOfEntries>64</NumberOfEntries>
<ChannelsEqual>1</ChannelsEqual>
<All>
<Value_0>0</Value_0>
<Value_1>1</Value_1>
<Value_2>1</Value_2>
<Value_3>0</Value_3>
<Value_4>0</Value_4>
<Value_5>1</Value_5>
<Value_6>1</Value_6>
<Value_7>0</Value_7>
<Value_8>0</Value_8>
<Value_9>1</Value_9>
<Value_10>1</Value_10>
<Value_11>0</Value_11>
<Value_12>0</Value_12>
<Value_13>1</Value_13>
<Value_14>1</Value_14>
<Value_15>0</Value_15>
<Value_16>0</Value_16>
<Value_17>1</Value_17>
<Value_18>1</Value_18>
<Value_19>0</Value_19>
<Value_20>0</Value_20>
<Value_21>1</Value_21>
<Value_22>1</Value_22>
<Value_23>0</Value_23>
<Value_24>0</Value_24>
<Value_25>1</Value_25>
<Value_26>1</Value_26>
<Value_27>0</Value_27>
<Value_28>0</Value_28>
<Value_29>1</Value_29>
<Value_30>1</Value_30>
<Value_31>0</Value_31>
<Value_32>0</Value_32>
<Value_33>1</Value_33>
<Value_34>1</Value_34>
<Value_35>0</Value_35>
<Value_36>0</Value_36>
<Value_37>1</Value_37>
<Value_38>1</Value_38>
<Value_39>0</Value_39>
<Value_40>0</Value_40>
<Value_41>1</Value_41>
<Value_42>1</Value_42>
<Value_43>0</Value_43>
<Value_44>0</Value_44>
<Value_45>1</Value_45>
<Value_46>1</Value_46>
<Value_47>0</Value_47>
<Value_48>0</Value_48>
<Value_49>1</Value_49>
<Value_50>1</Value_50>
<Value_51>0</Value_51>
<Value_52>0</Value_52>
<Value_53>1</Value_53>
<Value_54>1</Value_54>
<Value_55>0</Value_55>
<Value_56>0</Value_56>
<Value_57>1</Value_57>
<Value_58>1</Value_58>
<Value_59>0</Value_59>
<Value_60>0</Value_60>
<Value_61>1</Value_61>
<Value_62>1</Value_62>
<Value_63>0</Value_63>
</All>
</CameraLUT>