Our projects
We have been engaged in various projects related to analytical and technological equipment. For example, digital radiography and computed tomography products, OE & XRF spectrometers and XRD diffractometers, robotic systems, etc.

Please find below several other interesting projects of our team.
Fast multi-GPU reconstructor for large CT datasets
Customer:
Neoscan (Belgium)

Objectives:
develop a module for fast multi-GPU CUDA-based computed tomography (CT) reconstruction for large datasets (10K × 3600 projections).

Platform:
Windows x64

Technology stack:
C++ 17, CUDA

Links and publications:
Fast CT reconstruction of large datasets on multi-GPU systems (Youtube)
Neoscan
Description

The objective of Unicore Solutions team was to create an efficient multi-GPU implementation of classical Feldkamp cone-beam algorithm. No quality trade-offs were allowed. The first focus was quality and only then speed. We were targeting large datasets (≥ 5K), while keeping efficiency on smaller ones.

The module is integrated in Neoscan microCT software and support all common options, like 360/180+ scans, beam hardening, ring artifacts, smoothing, misalignment compensation, ROI, etc.

Our optimization goals were to create a CUDA multi-GPU and cluster ready solution. We have maximized performance of all computational stages, by efficiently balancing load of different GPU subsystems like memory bandwidth, caches, texture blocks and SMs. We have also implemented an optimal asynchronous direct disk IO with no slow external codecs for main formats.
Benchmarking on real systems shows that we have achieved a speed-up over CPU software 20–50 times. Our reconstructor is on par with other GPU software for small datasets, while beating commercially available solutions 3–5 times on large datasets. And this advantage increase more and more with datasets complexity.

It worse to note that our solutions is perfectly scalable. A simple video card upgrade can gain significant performance increase. Adding second video card brings more ×1.5–1.8 speedup. And it's cluster ready, so any additional server unit brings linear performance scaling.

More detailed explanation is in a short video presentation:
Software for X-Ray PCB Inspection system
Customer:
Prodis.NDT (Russia)

Objectives:
develop cross-platform software for digital X-Ray PCB Inspection system control, real-time image acquisition and processing, capturing of stitches and computed tomography sets, image analysis and reporting, organizing results.

Operating systems:
Linux, Windows

Platforms:
x64, Elbrus (Russian VLIW CPU)

Technology stack:
C++ 14–17, Qt/Qml, OpenGL, OpenCV, the Flow

Languages:
English, Russian, other on request

Links and publications:
Digital X-Ray: a trip to Elbrus (Habr, Russian)
60 fps real-time 16384×16384px X-Ray image processing on GPU (Youtube)
Automatic counting of electronic components by X-Ray radiography (Youtube)
X-Ray PCB Inspection system Prodis.Electro
proDIS Software
Software description

Software is designed for digital processing and storing of static and dynamic X-Ray images from any Mark detector.

Software is able to measure dimensions, add annotations, has unique mathematical tools for image processing in both real time video and static modes.

Suitable for PCB X-Ray inspection, NDT, electronic parts analysis, tomography and special checkups. Software includes best practices in the area of PCB inspection.
Key features

  • Simple and intuitive interface
  • Variety of filters, including user filters
  • Video mode with controlled binning
  • Support of any “Mark” detector
  • Supports TIFF and JPG file formats
  • Gapless stitching of images
  • SMD components counter
  • Void searching in SMD/BGA
  • Bad contact zones search in BGA arrays
  • X-Ray source control
  • Positioning system control
  • Tomography
  • Gain calibration for all energy ranges
  • Navigation upon technological map
Development process

Software for X-Ray PCB Inspection system requires extensive real-time processing of large images and communication with different hardware modules. It was one of our first projects on Elbrus (apart from Linux & Windows) so we were primarily focused on efficiently solving these tasks in a cross-platform manner.

The heart of the system is high resolution X-Ray flat panel detector working over 1 Gb Ethernet by GigE Vision protocol. Existing open-source solutions (for example, Aravis) were not good enough in terms of performance/quality. Known commercial SDK were not compatible with Elbrus. Therefore, we were forced to implement GigE Vision protocol ourselves. At present it completely absorbs 1 Gb channel on all platforms and produces maximum possible image framerate. Our solution offers a fully automatic discovery procedure to find all the detectors connected to the system using different filters and choose the most appropriate one.

For the same reason we have implemented from scratch the support of all other hardware: different mechanic set-ups (up to 9 axis), a range of X-Ray generators (Spellman, Hamamatsu, Eltech, X-Pro), optical cameras, protection keys. An automatic discovery functionality can be used for all the other hardware devices.

Digital radiography systems work with large 16-bit images. It can be more than 16 Mp in real-time acquisition mode and much more than 100 Mp in case of stitches and maps. For all of them end-users expect fast real-time processing at least for most common operations (30 fps or more) which is not feasible on all target CPUs. Due to the lack of CUDA/OpenCL/Vulkan support the whole image processing routine from capturing detector frames, calibration, to histogram estimation and correction, sharpening and noise reduction, geometrical transformations and region coloring was developed on pure OpenGL 3.0. Benchmarks of 3000x3000px 16-bit image range from ~33 ms/frame on old AMD R5 cards up to ~2 ms/frame on GeForce RTX 2070 Max-Q. These values include all processing steps — from capturing image to processing and displaying results.

Complex image postprocessing and analysis was implemented using OpenCV which works quite fast on all platforms. Elbrus really surprised us, showing comparable or better performance than modern Intel/AMD processors.

While working on the project we have also developed several algorithms for bad pixel correction and detector shading, borderless image stitching, particle counting and BGA analysis, etc. The application is equipped with a powerful scripting engine allowing to create custom routines to control all hardware modules and perform any image processing operations, analysis and reporting.

Software has an advanced multilingual support. It is originally shipped with English and Russian translations but any other languages can be added by local distributors on site. The UI is modular and can be easily adapted in accordance with the required product options. To make daily personnel work more comfortable it supports several skins, including traditional light and dark themes.

The project is based on Qt/Qml. We have actively used our in-house library and Flow approach to speed-up development process, achieve required flexibility and product quality.
Software for GNR Explorer XRD/XRF Bath Ratio
Customer:
GNR Nord (Russia) / GNR s.r.l. (Italy)

Objectives:
develop software to control combined XRD/XRF GNR Explorer instruments and elaborate new analytical approach to perform automated measurement of Bath Ratio in Aluminum industry.

Platform:
Windows x64

Technology stack:
C#/WPF, Matlab

Languages:
English, Italian, Russian, other on request

Links:
GNR Explorer
Advantages and results

Aluminum plants of Rusal, the biggest Russian aluminum producer, use our software to measure Bath Ratio in electrolyte with combined XRF/XRD GNR Explorer instruments. The results are used to optimize the production process in real-time and reduce costs. Therefore, both performance and precision of analysis are of great importance.

After performing extensive R&D on Rusal samples we have developed a new approach to calculate bath ratio from both X-Ray diffraction and X-Ray fluorescence data. Despite the quite high number of calibration parameters obtained (more than 10) the instrument can be successfully calibrated with a limited number of regular working samples without the need to produce complicated calibration standards. Due to the complexity of calculations the analytical module was implemented in the form of compiled Matlab library used directly from C# application.

This new approach allowed us to nearly double measurement accuracy in comparison to other instruments on the market in less acquisition time. Additional work was done to increase performance even more. The final performance significantly increased (~55 sec/sample) after all hardware control routines were rewritten from scratch and clever mechanics synchronization was applied.

We have built a complex engineering UI for calibration which is quite rarely used in the field because of exciting instrument stability. In contrast, UI for laboratory personnel was minimized to just several buttons and tables. The instrument measures a set of 22 samples completely automatically and sends the results to a plant server without requiring any operator interaction. We have also developed background recalibration procedures to assure correct results during the whole instrument lifetime without regular time loss for adjustment procedures.

The instruments analyze up to 800 samples on a daily basis with minimal operator attention. No software bugs and troubles were reported for years after the initial integration process.
Control software for automated sampling system
Customer:
Phosagro (Russia)

Objectives:
develop control software for the robotic sampling system of the fertilizer plant, including quality control and transmission of results to the central plant server.

Platforms:
Windows x86, Siemens microcontrollers

Technology stack:
C, Java/Spring
Description

The software for control of an automated robotic sampling system for one of the biggest Phosagro plants was developed in 2010 together with ASG Engineering company.

It is responsible for fully automated control of an enormous robotic sampling system, performing quality checking of sampled materials, running analytical measurements, transmitting results to the central plant server, and regulating production parameters.

Pure C modules were used to control numerous Siemens microcontrollers. Several kinds of UIs were implemented to manage the system and monitor the results. Central control station in Java is used to operate the whole system. Backend server generates a number of various reports that can be accessed from any place through a web browser by responsible personnel.

The integration of the developed solution has reduced the production costs, increased performance and quality of sampling, made it much more convenient and effective for engineering personnel. The system outperformed competitive solutions by that time and works to this day.