3.1 3-sep-21

  • new project types
    • Inno-spec project including reflectance correction on scan load (correction can be specified per-image and per-directory)
    • Resonon project type supporting reflectance correction on scan load
  • new installers
    • adding support for CUDA11.2
    • separate full installer including NVIDIA CUDA support
    • separate smaller installer for CPU + OpenCL backends convenient also for virtual machiens
  • significant speedup of classification at runtime
    • holds for both CPU and GPU backends including also older projects
  • new acquisition functionality
    • acquisition plugins allow use of different vendor SDKs
    • adding support for Resonon Pika cameras
    • SpecSensor plugins for 2019 and 2020 SDKs
    • Pleora eBUS support for eBUS 5.1 and 6.1 adds support for GenICam-compliant sensors such as Inno-Spec RedEye2
  • improvements in regression
    • outlier score plot and error plots help to clean training/test set of outliers
    • performance measures panel with user-defined acceptance criteria
  • GUI improvements
    • object-level confusion matrix with interactive visualization of ground-truth and detections allows full introspection of object-level decisions
    • added support for object shape features (Feret diameter, Hu moments, cirtularity)
    • added support for multiple directory selection for projects where each scan is a directory
    • images with labels show image names in italics
    • new auto-stretch of image brightness with slider-based adjustment in spectral plot menu

3.0 22-mar-21

  • improvements in regression
    • support for multiple regression variables
    • significant speed-up when updating regression data sets
    • separate commands for model search, retraining model and applying model both to data and on a new scan
    • import regression meta-data from Excel also at region level (via named regions, see below)
    • easy inspection of outliers: jump to a scan containing specific object/annotation point
    • runtime API for per-object and per-pixel regression output for each variable
      • support for background pixel masking
  • introducing user-defined regions
    • regions have unique names within each image and are assigned to a specific class
    • regions can define object ground-truth labels
    • by matching regions to object found it is possible to estimate of confusion matrix at object level and assess sorting performance
    • Excel export and import of region definitions
    • user-defined text annotation such as expert remarks can be added
  • introducing feature extraction
    • extract and export user-defined features from objects or user-defined regions
      • mean spectra
      • spectral index mean or histogram per object
      • fraction of decisions per object
      • regression output per object
      • object count
    • information can be extracted from computed objects or from user-defined regions
      • for regions, presence/absence of data is reported (e.g. no plant in a germination well)
    • export to Excel and XML formats
  • introducing batch feature extraction accessible from scripts without GUI via perClass_Mira_Batch.exe
    • export to XML format
    • define a template image specifying regions for extraction (e.g. grid of germination wells)
    • validating scans via a user-defined model rejecting data unseen in training
  • improvements to image flagging
    • set selected images for testing or training
    • set a percentage of selected images as test (to perform user-defined cross-validation studies)
  • batch crop applied to selected images
  • spectral index definitions are saved in the .mira project file
  • improves when processing large number of scans
    • ability to cancel long running operations (like result exports or regression meta-data imports)
  • commands to switch between band subset used for a classifier and for a regressor
  • possible to define band subset manually by band indices (e.g. 20:40 will enable bands 20 to 40)
    • adding and removing bands to/from existing band subset (useful to disabla certain ranges)
    • possible to set or toggle each Nth band
  • new project type for Silios CMS cameras


2.4 28-sep-2020

  • added reflectance correction for Headwall project type (correction by whiteReference and darkReference ENVI cubes in the same directory)
    • allows loading of externally corrected cubes in the same project
    • enables multiple scans per directory sharing the same correction
    • default cube extension is .bin, arbitrary extensions are supported
    • to apply correction at runtime, pass directory containing whiteReference and darkReference scans to mira_LoadCorrection (example: mira_LoadCorrection(pmr,"path_to_dir_with_correction_files",NULL) )
  • added general ENVI project type supporting arbitrary cube file extension
  • added Corning project type
    • added perClass Mira Runtime support for native BIP data stream corrected with dark reference inside the camera
  • improved selection of multiple images (click and drag supported, no image reload in multiple selection)
  • improved drag&drop of directories (adding all files within each dropped dir)
  • added support for NVIDIA CUDA11 (Ampere)
  • when using floating licenses, specific licensing product can be requested based on floatingLicenseProduct setting in mira.ini (mira for perClass Mira Dev and mira.gui for perClass Mira)
  • when importing regression annotation from Excel, existing points are removed to avoid duplicates
  • fixed a problem when adding regression annotation to all objects in each scan
  • fixed problem when label painting with large brushes
  • fixed memory leak in loading large number of specim FX scans
  • fix for dropped frames at the start of live acquisition session
  • at runtime, all projects (including line-scans) must explicitly enable object segmentation with mira_SetSegmentation(pmr,1)

2.3 26-jun-2020

  • support for foreign object detection with trully unknown objects
    • label materials you know. Enable Show unknown to highlight all materials unseen in training.
    • user-adjustable sensitivity on per-class basis provides extra control (slider via the right-click in the class-list)
    • objects unseen in training can be segmented out (flag Unknown decision as foreground)
    • the new foreign object optimizer is on by default, can be disabled in Classification menu.
  • color wells display transparency (change alpha for a specific class in the color dialog or by via alpha toolbar button by holding Ctrl)
  • crop improvements
    • crop rectangle line thickness auto-adjusted for very large cubes
    • adjust crop rectangle by dragging lines
  • segmentation improvements
    • support for up to 20 foreground classes including access to their content information
    • per-object results can be batch-exported to Excel including per-class content in each object
    • fix for a crash due to changing object size in live acquisition mode
  • confusion matrix improvements
    • added light mode (to allow copy/paste directly to documents)
    • added option to copy as text for direct copy/paste to Excel
  • fixed live acquisition issue when Specim calibration file (.scp) was not found
  • fix for min/max visualization setting in presence of NaNs and infinite values
  • support for case insensitive fields ENVI in header files (for Python integration)
  • runtime improvements
    • support for region of interest (ROI) for snapshots. Applying classifier only to specific ROI.
    • support for object segmentation for snapshot use-cases (Imec project type, float data type, BIP layout)

2.2 29-apr-2020

  • new Visualization mode showing computed indices using different common equations
    • define using individual wavelengths or wavelength ranges
    • auto-scaling and manual scaling
    • indication of below, above and invalid values
    • define wavelength ranges interactively in spectral plot
    • render using different colormaps
  • improved regression
    • visualize per-pixel regression output (e.g. distribution of moisture)
    • import point annotations from Excel (matching scan names exactly or with regular expressions)
    • move and edit point annotations
    • use only specific subset of spectral bands
    • show cross-validated regression error (RMSECV) which has the same units as the regressed value
    • when hovering over the results in the regression plot, display specific annotation points with their true and estimated values
    • visual indication that some point annotations are not linked to objects (e.g. point not on foreground class)
    • export regression results in Excel together with per-object size, bounding boxes, true and estimated regression outputs
  • perClass Mira Runtime improvements
    • added model export for perClass Mira Runtime (new "Mira Pipeline" .mpl format using base64 encoding)
    • added API to query expected data type, data layout and geometry of data from spectral camera
    • added support for all object segmentation configurations created in the GUI including per-object content retrieval and object classification by rules
    • added snapshot processing mode (mira_ProcessCube). Currently only pixel decisions are provided, not yet the object segmentation or content.
  • added support for OceanInsight Spectrocam and Pixelcam data formats
  • added support for ENVI cubes with uint32 data type and little-endian float
  • added classifier preprocessing (smoothing, 1st and 2md derivative)
  • export and import labels as PNG images
  • export per-image results to Excel allowing quick summary of fraction of decisions within foreground (e.g. disease within plant leaves)
  • update of live acquisition using Specim SpecSensor SDK
    • Applying regression both per-object and per-pixel in live acquisition
    • Calibration pack information stored in settings, reused for further sessions
  • fixes in object pannel: When retraining the classifier, object classification rules are preserved
  • adding default class color map
  • repeatable object label colors (can be change using random seed dialog)
  • added per-class transparency (alpha setting in the color dialog and using the toolbar transparency slider - hold Ctrl to change only the current class alpha)

2.1 18-feb-2020

  • Specim FX project type allows scan directories with different name than raw cube in capture sub-folder
  • Unicode support in image file names for ENVI-based formats
  • providing informative error messages when image cannot be loaded
  • adding Cubert Tiff project type with native support for Cubert Ultris camera
  • adding Headwall project type
  • license file can be drag & dropped from Explorer to the license dialog
  • RGB bands are set based on ENVI header file
  • mira.log file is now written to AppData/Roaming, not to the installation directory (now by default in Program Files (x86))
  • fix of calibration pack loading in SpecSensor
  • labels can be exported into .png files
  • ENVI import supports int16 data type
  • when the number of sampes is too low, the output window shows a red message that can provide details on click
  • when alpha is too low (high label transparency), the toolbar alpha button blinks to remind the user that labes may be badly visible

2.0 18-oct-2019

  • new Cubert ENVI project enabling data from Cubert Ultris and upsampled UH185 images
  • perClass Mira Runtime binaries adding dongle support

2.0 10-oct-2019

  • adding support for double-precision ENVI data cubes
  • supporting model deployment for execution on live data from Cubert Ultris light-field hyperspectral camera
  • enabling Cubert plugin export for ENVI-based projects.
  • fixes in live acquisition using Specim FX cameras when device loading fails or opening FileReader gets cancelled
  • fixing a crash due to very large training set
  • fixing a bug in error visualization mode where switching to images without labels did not show proper image

2.0 20-sep-2019

  • Fix: Installation directories with non-ASCI characters are now supported
  • Live acquisition executables for Specim cameras included (perClass_Mira_live.exe and perClass_Mira_gpu_live.exe)
  • Senop project: Images are automatically processed with per-band gain

2.0 6-sep-2019

  • Estimate object quality using regression (examples: sugar content estimation per tomato)
    • annotate quality per object
    • automatic model selection reporting performance (R^2 and Q^2 statistics)
    • user-defined pre-processing (smoothing and derivatives)
    • apply regression to new images (show a bounding box + regression output per object)
    • allow localized information extraction by a radius around annotation points
  • Images can be flagged for testing only (not used for building the model)
    • Test confusion matrix provides a detailed view of the performance on test images
  • Error visualization mode brings insight in model performance.
    • visualize where the current model fails
    • this helps to identify incorrect labels or (together with test image flagging) whether the data is well represented in the training set
    • Image confusion matrix shows only labeled examples on the current image
    • interactive error visualization by moving mouse over the image confusion matrix
  • Object segmentation mode with multiple options
    • one object / one class mode for object detection (e.g. detect plastic pieces in a food product stream for automatic removal)
    • one object / multiple classes for object classification (e.g. detect potato pieces, classify entire piece as defective if it contains more than 5% of greening or rot inside)
    • visualizing object labels or object decisions
    • object decisions by majority vote or rules (size of or fraction of a specific class)
  • Usability improvements
    • assign label stroke to the current class. This allows one to exclude a specific label stroke from training and see the impact on model performance (define an additional class and exclude it, assign strokes to it and retrain)
    • the data validation mechanism excluding invalid spectra is now off by default. It can be enabled using context menu in the spectral plot.
    • all modes (labels, decisions, errors, objects) accessible by direct keystrokes
    • confusion matrix size can be decreases/increased (useful for large number of classes)
    • auto-check for software updates + direct link to download latest version from the GUI (Help / Check for updates)
  • experimental Live data acquisition from Specim FX cameras using Specsensor SDK (needs to be installed separately)
    • apply a classifier and object segmentation to a live data stream
    • live visualization of processing speed and drop frame indication to assess production performance
    • user-control of exposure and camera frame-rate
    • supports practical situations where production light conditions are diffrerent from the training situation
      • the white and dark references used for live data processing can be specified without model retraining
    • automatic handling of spectral and spatial binning based on specific scan meta-data
    • support for outdoor operation: Define white reference by specifying an image region where a reference tile was placed
    • recording data from a live acquisition in the standard LUMO format


1.4 22-may-2019

  • perClass Mira Runtime is now included in the distribution
    • high throughput (1.5ms/frame on NVIDIA GPU in an example foreign object detection project, Specim FX17, 640 spatial pixels, 224 bands, 6 materials)
    • the runtime directly reports object positions, sizes and classes
    • support for NVIDIA Jetson platform (both ARM CPU and NVIDIA GPU backend)
    • support for line-scan use-case on Specim projects (specific white/dark correction format)
  • Linux build for both perClass Mira GUI and perClass Mira Runtime
    • accelerated CPU and GPU support on Linux
  • new high-throughput segmentation engine
    • automatically discarding objects smaller than user-defined minimal size
    • supporting multiple foreground classes
    • high-speed line-scan segmentation with constant per-frame speed
  • export visualization as PNG images (band or RGB, with labels, pixel decisions or segmented objects)\
  • for Cubert projects, proper wavelength ranges are shown

1.3 8-feb-2019

  • zoom using mouse wheel now follows cursor
  • image rotation using toolbar buttons (and > < keyboard shortcuts)
  • adding images using drag and drop from Windows explorer
  • support for ENVI files with high-endian byte order uint16 (byte order=1)
  • saved projects now preserve settings of the current band, R,G,B lines and allow direct execution of the trained model when project is loaded
  • exported decision images (PNGs) contain meta-data such as class count and class names accessible by standard tools such as tweakpng or Matlab imfinfo command
  • multiple directory selection for Specim FX and Tiff stack project types can be enabled in mira.ini file (using useNativeDirSelection=false). It is not enabled by default because it uses a non-native file dialog.
  • new project type for Senop cameras (formerly Rikola)

1.2 5-dec-2018

  • Added band-selection widget. It is now possible to manually select the wavelengths used for building models
    • Band brushing allows quick selection or clearing of wavelength ranges
    • Exported models start from the full set of wavelengths but use only the selected subset for the model. This allows quick deployment of different models to custom applications assuming full spectrum (single binding with perClass Runtime is needed)
  • Added export of labeled data to perClass Toolbox sddata format
  • Added export of entire data cube in Matlab format as 3D matrix
  • Models results are now repeatable with a new random seed dialog controlling the internal data partitioning process.
  • Separate CPU-only and CPU+GPU builds are available. The CPU-only build is always available by default to avoid issue related to GPU drivers or CUDA versions installed. The CPU+GPU executable is called perClass_Mira_gpu.exe
  • Band index and the wavelength number are now updated on the status bar when dragging the band line in spectral plot
  • Added support for logging of status messages when starting up the application. This is useful to understand some issues with GPU installations and CUDA versions. Logging is off by default, can be switched on in the mira.ini file.
  • Licensing improvements:
    • For activated licenses, there is now an auto-update mechanism that pulls updated license from the activation server when the application starts. The application may be used without on-line connection - it is needed only once in two weeks.
    • Adding support for floating licenses obtained over network from a license server. Floating licenses are now checked out one per session.
  • Fixed wrong file name of previous project used for saving new project with File/Save command
  • Fixed a crash when preview image could not be loaded


1.1 10-sep-2018

  • confusion matrix view showing detailed error information
    • interactive performance optimization in a confusion matrix (slider in right-click context menu or a mouse wheel on confmat entries)
    • confusion matrix shows normalized errors and precisions, absolute sample counts available as well
    • quickly switch to confmat with 'c' key and to spectral plot with 's' key
    • define performance constraints via double click on a confusion matrix field (create/remove constrain)
    • constraints may be adjusted live by Ctrl+mouse wheel
    • constraints may be enabled/disabled to understand available performance options
    • move between available solutions fulfilling all constraints with [ and ] shortcuts
  • preview image from user-adjustable R,G and B bands when spectral cube is loaded
    • this view improves labeling experience for many material types that look similar in a single band but their differences may be highlighted in R,G,B view
  • undo/redo for label painting speeds up labeling
  • image crop providing significant memory use reduction and processing speedups
    • when a project with a cropped image is loaded, the original cube is loaded and cropped
    • original cube may be loaded as a new image and multiple crops from the same cube are supported
  • including perClass Runtime DLL and example of spectral cube processing in C
    • support for both single precision and double precision pipelines (with a new perClass 5.4 Runtime)
    • significant speedup of exported classifiers
    • legacy export option supporting older deployed runtimes <= 5.2
  • a preview rotation command allows one to fix the rotation between preview and spectral cube (e.g. on Specim IQ projects)
  • adding an option to exclude a class from training (right-click in class list or press 'x')
    • this allows one to quickly check the impact of specific classes on the overall solution
  • option to purchase a license online and directly turn the demo into a commercial product
  • dialog to request Skype/Teamviewer session on start up
  • fix for a wrong class index after removing a class
  • fix for clear labels of an image

1.0 13-jul-2018

  • fix for a dock shift bug (when resizing a docked window and clicking on the image, the docked pannel resized back)
  • adding band line dragging by mouse
  • adding max valid line which is automatically set on image load
  • when user is on preview and tries painting, a dialog is shown to load the entire cube (allows quick image changing without load)

1.0 29-may-2018

  • first public release