Firmware for MTL X-Ray detector
Firmware for novel MTL X-Ray detector with built-in CUDA image processing and efficient streaming capabilities
Customer:
MTL Medical Technologies Limited (Russia)

Links and publications:
X-Ray image processing and tomographic reconstruction on GPU, page 40 (VIII Russian X-Ray producers conference)
Operating systems:
Linux

Platforms:
Arm64

Technology stack:
C++ 14–17, CUDA

Languages:
English, Russian

Firmware description

Integrated firmware controls detector hardware, acquires image parts from separate X-Ray sensors, compose them into a single output image, process and send it to a host machine.

Built-in CUDA based image processing pipeline allows realtime image adjustments like dark frame subtraction, gain, defects and sensor gap corrections, levels and gamma tuning, HDR image construction. Pipeline allows usage of external processing modules which can be combined into a processing chain without need of firmware modification.

Acquired images can be stored locally on device, directly viewed by HDMI connection, send to host machine via GigE Vision protocol or streamed to built-in Web interface.
Key features

  • Integrated flexible CUDA based image processing pipeline
  • Ability to use custom processing modules
  • High processing performance up to 60 fps on large 3624x4560 (16 bit) images
  • HDR image acquisition mode support
  • Fast in-house GigE Vision protocol implementation with no intermediate memory copying and up to 10 Gb link support
  • On-the-fly GeniCam features generation depending on device configuration and settings
  • Web interface with realtime video streaming
  • Direct HDMI output with zooming/padding capability
Development process

Image acquisition, processing and further sending to a host machine can be quite challenging because of large image sizes (up to 3624x4560, 16 bit) and limited compute capability of integrated equipment. Therefore the main efforts were done to optimize image processing pipeline, reduce intermediate copying of large data and optimally parallelize all internal processes.

Most of the image processing steps are done by CUDA in a single pass leading to high performance up to 60 fps. At the same time processing pipeline support external custom processing modules which can be configured and used realtime.

A single image buffer pool is used at all steps, from acquisition of image parts to processing and streaming. Such approach ensures no intermediate image copying leading to high performance.

Fast in-house GigE Vision protocol implementation optimizes network usage and allows to use up to 10 Gb link speed without frame loss.

Implementation of a central GeniCam feature storage gives full control on all device features. The .xml file with feature list is generated on runtime allowing its automatic adjustment according to device configuration and settings.