Version 11.3.0
Changes
This update contains API breaking changes. Please read the log carefully.
Features
- Measurement Fields: Add, remove and manipulate measurement fields in the shape of rectangles, ellipses,
polygons and splines with enhanced statistical evaluation. - Alarms: Add, remove and manipulate alarms. Route their signals to PIF output channels.
- Radial distortion correction for all cameras that support it.
- Download the calibration from device for Xi 80s and Xi 410s.
- Custom user data directory: Define a custom directory where the SDK should store configurations,
calibrations, logs and more. - Improved color palettes: Color palettes for false color conversion are now defined in simple
CSVfiles. You can
now add your own palettes viaCSVfiles or programmatically. - Enhanced callbacks: All
IRImagerClientcallbacks now use event classes to bundle the callback data. Several
previous callbacks were compounded into a singleonFrame()callback that is triggered on a per frame basis. The callbacks are now
executed by dedicated threads and no longer block the processing pipeline.
Changes
- C# Bindings
- The SDK namespace was changed from
Optris.OtcSDKtoOptris.OtcSdk.
- The SDK namespace was changed from
- Configuration file
- Incremented version to 3.
- Added sections to accommodate new features:
- Alarms
- Processing
outputdefines which outputs (raw frames, thermal frames or measurement fields) should be generated.max_result_pool_sizesets the maximum number of buffers used to store processing results.
- Added
rdc_modetoopticssection to specifying the mode of radial distortion correction (RDC). - Reworked the
measurement_fieldsection to accommodate the new shapes and features. - Amended the
pifsection- The
analog_outputsanddigital_outputschannelhave a newmodeoptionalarm. - A
channelin theanalog_outputsusing themeasurement_fieldmodenow has to specify which statistical value
of the field should be output via thestatsetting.
- The
- Added a low pass filter for the automatic temperature scaling in the
ImageBuilderresulting in smoother transitions. - You can now specify which processing outputs (raw frames, thermal frames and measurement fields) should be provided by the
SDK. - The startup (re-)calibrations can now be skipped by calling
IRImager::skipStartupCalibration(). - On-device network settings can now be manipulated on an active
IRImagerEthernet connection. Depending on the changes
the SDK will try to retain the active connection. If they are too severe, the SDK will consider the active connection lost
and will trigger the corresponding callbacks. - Framerate sub-sampling can now be set at runtime.
- The SDK now uses an internal pool of reusable buffers to store the results of the processing pipeline. The pool size can be
configured and manipulated at runtime. ImageBuildercan now render the false color images to an external buffer.- The current version of the
Formats.defcan now be accessed via theSdkclass. - The
IRImagernow establishes a device connection even if the calibration files are missing. Refer to this
section in the documentation on the resulting limitations. - Performance improvements in the processing pipeline and the false color image generation.
- Updated API used to download files on Windows.
- Improved thread safety.
- Improved device enumeration.
API changes
- C#
- The SDK namespace was changed from
Optris.OtcSDKtoOptris.OtcSdk.
- The SDK namespace was changed from
- New classes
- Event classes for all the callbacks defined in
IRImagerclient. - Classes facilitating the implementation of alarms and measurement fields.
ProcessingOutputConfigstruct defining what processing outputs should be provided by the SDK.- Dedicated
Versionclass to represent a version. OperationInfoclass holding debug and performance information of the processing pipeline.UncommittedValueStatusclass bundling the status of an uncommitted value generated by a PIF analog input.RangeFandRangeIstructs definingfloatandintegerranges.Vector2fandVector2istructs defining two-dimensionalfloatandintegervectors.PifIndexstruct encapsulating the device and pin indices of a PIF channel.
- Event classes for all the callbacks defined in
- Removed classes
- The iterator classes for
Frames,MeasurementFields andImages were removed due to poor performance.
- The iterator classes for
- DeviceInfo
- Added method
hasFocusMotor().
- Added method
- IRImager
- Added getter and setter for sub-sampled frame rate.
- Added getter for the
IRImagerConfiguration. - Added method to save the current
IRImagerConfigurationconfiguration. run()now returns aboolindicating, if the processing loop started correctly.- Added getter and setter for the
ProcessingOutputConfigsetting. - Added getter and setter for the maximum size of the processing result buffer pool.
- Added method to skip startup (re-)calibration.
- Added getter and setter for the radial distortion correction mode (RDC).
- Added and updated methods to add, remove and manipulate measurement fields.
- Added methods to add, remove, query and manipulate alarms.
- Added method to configure
OperationInforetrieval. - The method
setDeviceNetworkConfig()now returns a boolean indicating whether an active connection could be retained.
- IRImagerClient
- All callbacks feature event classes encapsulating all relevant data as argument.
onThermalFrame(),onMeasurementField()andonFlagStateChange()were compounded into theonFrame()callback that
is triggered once per processed frame (subject to sub-sampling).onConnectionLost()andonConnectionTimeout()were subsumed into theonConnection()callback that offers additional
functionality (e.g. calibration file acquisition).- Added callback
onRawFrame()providing raw unprocessed frame data. - Added callback
onOperationInfo()for receiving debug and performance information about the processing pipeline. - Removed dead callback
onThermalEvent(). - Removed callback
onProcessExit().
- ImageBuilder
- Added methods to query and adjust the low pass filter for the automatic temperature scaling modes.
- Added getters for the filtered minimum and maximum scaling temperatures.
- Added a variant of the
convertTemperatureToPaletteImage()method that renders the false color image to an external buffer. - Renamed enum
PaletteScalingMethodtoTemperatureScalingMode. - Renamed methods:
setManualTemperatureRange()tosetTemperatureScaling()getIsothermalMin()togetTemperatureScalingMin()getIsothermalMax()togetTemperatureScalingMax()setPaletteScalingMethod()tosetTemperatureScalingMode()getPaletteScalingMethod()togetTemperatureScalingMode()
- ProcessInterface
- Added method to get the supported PIF device types by the current camera.
- PifXXChannelConfig
- Added a simple struct
PifIndexto hold the device and pin indices in the configuration structs.
- Added a simple struct
- VersionInfo
- Added getter for the Sdk and
Formats.defversions. - Removed redundant methods that implemented the functionality of the new
Versionclass.
- Added getter for the Sdk and
- Sdk
- Added methods to set, get and clear a custom user data directory.
- Added methods for managing color palettes.
- Added method to set a callback that receives all the log message generated by the SDK.
- TemperatureConverter
- Added method to convert an internal value in float to degree Celsius.
- The heating mode of the sensor chip is now represented by the enum
ChipHeatingModeinstead of an string. - All classes holding configurations are now plain structs without constructors.
Bugs
- Fixed an issue that crashed the SDK while searching for required files when used on Windows without an installation.
- Fixed an issue that caused the SDK to get stuck when calling
IRImager::disconnect()from a callback. - Fixed Python 3 and C# enumeration examples.
- Fixed bindings access to
IRImager::getPif(). - Fixed the handling of invalid temperature in the
ImageBuilder.- Pixels with invalid temperatures are now converted to black in false color images.
- Pixels with invalid temperatures are now longer considered in
- the automatic temperature scaling methods.
- the calculation of mean, min and max regions.
- Fixed the conversion of invalid temperatures in the
TemperatureConverter. - Fixed an issue where dead pixels could lead to a faulty auto skim calibration resulting in seemingly overexposed false color images.
- Fixes to the USB subsystems to improve stability and the reliability of device enumeration.
- Fixes and improvements to the TCP subsystem to better detect and propagate errors to the client and to improve stability.
- Various corrections in the documentation.
- Miscellaneous minor fixes and improvements.
Install
Please refer to the Quick Start Guide for installation instructions
Note
The attached source code archives are auto generated by GitHub and provide a snapshot of this repository. They do not contain the actual source code of the SDK.