Skip to content

Version 11.3.0

Choose a tag to compare

@martplas martplas released this 06 May 11:48
· 7 commits to main since this release

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 CSV files. You can
    now add your own palettes via CSV files or programmatically.
  • Enhanced callbacks: All IRImagerClient callbacks now use event classes to bundle the callback data. Several
    previous callbacks were compounded into a single onFrame() 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.OtcSDK to Optris.OtcSdk.
  • Configuration file
    • Incremented version to 3.
    • Added sections to accommodate new features:
      • Alarms
      • Processing
        • output defines which outputs (raw frames, thermal frames or measurement fields) should be generated.
        • max_result_pool_size sets the maximum number of buffers used to store processing results.
    • Added rdc_mode to optics section to specifying the mode of radial distortion correction (RDC).
    • Reworked the measurement_field section to accommodate the new shapes and features.
    • Amended the pif section
      • The analog_outputs and digital_outputs channel have a new mode option alarm.
      • A channel in the analog_outputs using the measurement_field mode now has to specify which statistical value
        of the field should be output via the stat setting.
  • Added a low pass filter for the automatic temperature scaling in the ImageBuilder resulting 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 IRImager Ethernet 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.
  • ImageBuilder can now render the false color images to an external buffer.
  • The current version of the Formats.def can now be accessed via the Sdk class.
  • The IRImager now 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.OtcSDK to Optris.OtcSdk.
  • New classes
    • Event classes for all the callbacks defined in IRImager client.
    • Classes facilitating the implementation of alarms and measurement fields.
    • ProcessingOutputConfig struct defining what processing outputs should be provided by the SDK.
    • Dedicated Version class to represent a version.
    • OperationInfo class holding debug and performance information of the processing pipeline.
    • UncommittedValueStatus class bundling the status of an uncommitted value generated by a PIF analog input.
    • RangeF and RangeI structs defining float and integer ranges.
    • Vector2f and Vector2i structs defining two-dimensional float and integer vectors.
    • PifIndex struct encapsulating the device and pin indices of a PIF channel.
  • Removed classes
    • The iterator classes for Frames, MeasurementFields and Images were removed due to poor performance.
  • DeviceInfo
    • Added method hasFocusMotor().
  • IRImager
    • Added getter and setter for sub-sampled frame rate.
    • Added getter for the IRImagerConfiguration.
    • Added method to save the current IRImagerConfiguration configuration.
    • run() now returns a bool indicating, if the processing loop started correctly.
    • Added getter and setter for the ProcessingOutputConfig setting.
    • 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 OperationInfo retrieval.
    • 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() and onFlagStateChange() were compounded into the onFrame() callback that
      is triggered once per processed frame (subject to sub-sampling).
    • onConnectionLost() and onConnectionTimeout() were subsumed into the onConnection() 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 PaletteScalingMethod to TemperatureScalingMode.
    • Renamed methods:
      • setManualTemperatureRange() to setTemperatureScaling()
      • getIsothermalMin() to getTemperatureScalingMin()
      • getIsothermalMax() to getTemperatureScalingMax()
      • setPaletteScalingMethod() to setTemperatureScalingMode()
      • getPaletteScalingMethod() to getTemperatureScalingMode()
  • ProcessInterface
    • Added method to get the supported PIF device types by the current camera.
  • PifXXChannelConfig
    • Added a simple struct PifIndex to hold the device and pin indices in the configuration structs.
  • VersionInfo
    • Added getter for the Sdk and Formats.def versions.
    • Removed redundant methods that implemented the functionality of the new Version class.
  • 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 ChipHeatingMode instead 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.