Software for X-Ray PCB Inspection system
Hardware control, real-time image acquisition and processing, image analysis and reporting, organizing results
Operating systems:
Linux, Windows

Platforms:
x64, Elbrus (Russian VLIW CPU)

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

Languages:
English, Russian, other on request
Software description

The software is designed for digital processing and storing of static and dynamic X-Ray images from all models of Mark detectors.

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

Suitable for PCB X-Ray inspection, NDT, electronic parts analysis, tomography and special checkups. The software integrates the best practices in the field of X-ray inspection of printed circuit boards.
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
  • Search for bad contact areas in BGA arrays
  • X-Ray source control
  • Positioning system control
  • Tomography
  • Continuous calibration for all energy ranges
  • Navigation upon the technological map
Development process

PCB X-ray inspection software 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 and 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 image capturing 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.