1.2. IDS uEye#
Summary: |
IDS uEye grabber. |
Type: |
DataIO |
License: |
Licensed under LGPL. |
Platforms: |
Windows, Linux |
Devices: |
IDS Imaging cameras |
Author: |
M. Gronle (ITO Uni Stuttgart); A. Kempe (ILT Aachen, Pulsar Photonics), M. Petz (IPROM, TU Braunschweig) |
1.2.1. Overview#
This plugin supports IDS uEye cameras and has currently been tested with the following models:
UI145xSE-C (colored, USB2)
UI124xSE-M (monochrome, USB2)
UI224xSE-M (monochrome, USB2)
UI337xCP-C (colored, USB3)
UI318xCP-M (monochrome, USB3)
UI318xCP-C (colored, USB3)
UI306xCP-M (monochrome, USB3)
UI148xLE-M (monochrome, USB2)
UI145xLE-M (monochrome, USB2), equivalent to Thorlabs DCC1545M-GL
(Hint: use this plugin to also operate Thorlabs cameras that are OEM products from IDS, denoted by DCC or DCU).
The plugin has been compiled using the IDS library version 4.95. You can run it with an installed driver version 4.9x.xx.
In order to run your camera, please install the SDK imaging software in the right version such that the necessary drivers are installed.
The first draft of this plugin has been implemented by Pulsar Photonics GmbH; further work has been done by ITO, University of Stuttgart.
Note on supported sensor bit depths on monochrome cameras: The plugin may list a supported bit depth of 16 bit even if the camera explicitly does not support 16 bit color mode. The returned 16 bit images are most probably a MSB-Aligned representation of the maximum supported bit depth. (See IDS uEye handbook, appendix Color- and Dataformat)
1.2.2. Initialization#
The following parameters are mandatory or optional for initializing an instance of this plugin:
- camera_id: int, optional
Camera ID (user-definable in IDS camera manager) of the camera to open (0: the next free camera will opened [default], 1-254: specific camera ID)
Value range: [0, 254], Default: 0
- color_mode: str, optional
initial color model of camera (‘gray’, ‘color’ or ‘auto’ (default)). ‘color’ is only possible for color cameras
Match: [“auto”, “gray”, “color”], Default: “auto”
- debug_mode: int, optional
If debug_mode is 1, message boxes from the uEye driver will appear in case of an error (default: off, 0)
Value range: [0, 1], Default: 0
Usually, the next free camera is opened by camera_id = 0. If you want to select a specific camera, make sure to set unique camera IDs in the IDS camera manager tool. Then set camera_id to the desired camera ID (range 1..254).
In the changelog below, you can see which uEye driver has been used to compile this plugin for several setup versions of itom. In order to guarantee a full working plugin, you should have the same driver installed on your computer. Else, a warning will be displayed at startup telling that some faults may occur. Usually, the compatibility is given, if the major version number and the ten-digit of the minor is equal, e.g. 4.80 and 4.81 are compatible.
1.2.3. Support for Thorlabs cameras#
This plugin can also be used to operate Thorlabs cameras of the DCC or DCU series (e.g. https://www.thorlabs.com/newgrouppage9.cfm?objectgroup_id=4024 or https://www.thorlabs.com/newgrouppage9.cfm?objectgroup_id=2916). These cameras are OEM versions from IDS. This plugin has for instance been tested with the version DCC1545M-GL and the IDS UI-2412SE-M camera.
1.2.4. Parameters#
An instance of this plugin has the following internal parameters:
- auto_blacklevel_enabled: {int}
If the camera supports an auto blacklevel correction (auto offset in addition to offset), this feature can be enabled / disabled by this parameter.
- binning: {int}, read-only
Horizontal and vertical binning, depending on camera ability. 104 means a 1x binning in horizontal and 4x binning in vertical direction. (values up to 1x, 2x, 3x, 4x, 5x, 6x, 8x, 12x are valid; if read-only binning is not supported; some cameras only support certain combinations of binnings.)
- bpp: {int}
Bitdepth of each pixel
- cam_id: {int}, read-only
ID of the camera
- cam_model: {str}, read-only
Model identifier of the attached camera
- color_mode: {str}
color_mode: ‘gray’ (default) or ‘color’ if color camera
- fps: {float}, read-only
current fps reported by camera
- frame_rate: {float}
frame rate in fps (will affect the allowed range of the integration_time, this frame_rate is only considered if trigger_mode == ‘off’.
- gain: {float}
Gain (normalized value 0..1)
- gain_boost_enabled: {int}
enables / disables an additional analog hardware gain (gain boost). Readonly if not supported.
- gain_rgb: {seq. of float}, read-only
RGB-gain values (normalized value 0..1)
- integration_time: {float}
Exposure time of chip (in seconds).
- long_integration_time_enabled: {int}, read-only
If long exposure time is available, this parameter let you enable this. If this value is changed, the range and value of integration_time might change, too.
- name: {str}, read-only
GrabberName
- num_buffer: {int}
Number of Buffers used for acquisition. Note that if this is > 1, a sequence of images will be acquired.
- offset: {float}
Offset (leads to blacklevel offset) (normalized value 0..1). Readonly if not adjustable.
- pixel_clock: {int}
Pixel clock in MHz. If the pixel clock is too high, data packages might be lost. A change of the pixel clock might influence the exposure time.
- roi: {int rect [x0,y0,width,height]}
ROI (x,y,width,height) [this replaces the values x0,x1,y0,y1]
- sensor_type: {str}, read-only
Sensor type of the attached camera
- serial_number: {str}, read-only
Serial number of camera
- sizex: {int}, read-only
Pixelsize in x (cols)
- sizey: {int}, read-only
Pixelsize in y (rows)
- timeout: {float}
timeout in seconds when waiting for the next image. For sequences x1000.
- trigger_mode: {str}
trigger modes for starting a new image acquisition, depending on the camera the following modes are supported: ‘off’ (fixed frame_rate), without fixed frame_rate: ‘software’, ‘hi_lo’, ‘lo_hi’, ‘pre_hi_lo’, ‘pre_lo_hi’
- x0: {int}
Index of left boundary pixel within ROI
- x1: {int}
Index of right boundary pixel within ROI
- y0: {int}
Index of top boundary pixel within ROI
- y1: {int}
Index of bottom boundary pixel within ROI
1.2.5. Compilation#
Download the IDS Software Suite SDK from https://de.ids-imaging.com/ids-software-suite.html by selecting the appropriate camera. This can be very tricky since the IDS Software Suite is deprecated and newer models are shipped with the IDS Peak SDK exclusively.
Software Currently supporting the IDS uEye SDK are for example: https://de.ids-imaging.com/download-details/AB02919.html#anc-software-310
Set the CMAKE variable IDS_DEVELOP_DIRECTORY or the environment variable IDS_UEYE_ROOT to the installation directory (e.g. C:Program FilesIDSuEye)
With the sources of this plugin, the header and library files of the uEye SDK in the version denoted in the changelog are directly included. Hence, the plugin compiles as it is. Nevertheless, you need to have the camera drivers installed on your computer that fit to the uEye SDK of the plugin. However, you can also install the full SDK in any version on your computer and set the CMake variable IDS_DEVELOP_DIRECTORY to the develop-subfolder of the SDK (this folder contains the include and Lib subfolder). If you indicated this, please delete IDS_HEADER_FILE and IDS_LIBRARY in CMake and press configure again. Then, the plugin will be compiled with your individual SDK.
Please install the 32bit/64bit version of IDS uEye SDK that corresponds to your operating system, not to the type of itom. If you decide to configure the SDK installer, you don’t need to install any DirectShow or ActiveX components as well as additional drivers if you only want to use the camera with itom.
Under linux, simply install the drivers from the IDS website. After an successful installation, the header file ueye.h and the library file is installed to the default directories under linux. The CMakeLists.txt file of this itom plugin will then automatically detect these files and compile the plugin.
1.2.6. Acquisition of image sequences#
If the number of buffers (num_buffer) is set to a value greater than 1, a sequence of images will be acquired with the acquire()-function (without frameloss). The sequence is retrieved by getVal() as usual, but the obtained dataObject will be 3D. The number of planes corresponds to the amount of images in the sequence (i.e. the number of buffers). Please be aware that the necessary memory for the sequence will be allocated and there is no dynamic limitation of the parameter. Choosing a high value for the number of buffers might crash the program, if the systems memory is insufficient.
1.2.7. Known problems#
Sometimes, the camera raises an acquisition error right after a change of the trigger mode. In this case, make an idle-grab (with a possible try-except) before starting with the right acquisition parameters.
1.2.8. Changelog#
itom setup 2.0.0: This plugin has been compiled using the uEye SDK 4.61
itom setup 2.1.0: This plugin has been compiled using the uEye SDK 4.61
itom setup 2.2.0, 2.2.1: This plugin has been compiled using the uEye SDK 4.80 (In order to use newer USB3 cameras with the USB2 port, install the 4.81 driver)
itom setup 3.0.0: This plugin has been compiled using the uEye SDK 4.81
itom setup 3.1.0: This plugin has been compiled using the uEye SDK 4.90.3
itom setup 3.2.1: This plugin has been compiled using the uEye SDK 4.91.0
itom setup 4.0.0: This plugin has been compiled using the uEye SDK 4.93.0
itom setup 4.1.0: This plugin has been compiled using the uEye SDK 4.93.0
itom setup 4.2.0: This plugin has been compiled using the uEye SDK 4.93.0
itom setup 4.3.0: This plugin has been compiled using the uEye SDK 4.96.1