Процесс разработки Программное обеспечение для системы рентгеновской инспекции печатных плат требует серьезной обработки больших изображений в реальном времени и одновременной работы с различными модулями установки. Поскольку это был один из наших первых проектов на платформе Эльбрус 8С (также поддерживаются Linux и Windows) мы были главным образом сфокусированы на эффективном решении этих двух задач в кроссплатформенном варианте.
Сердце системы — плоскопанельный цифровой детектор — передает данные по 1 Гб Ethernet посредством протокола GigE vision. Существующие решения с открытым исходным кодом (например Aravis) не подошли нам по скорости и качеству. Известные коммерческие SDK были несовместимы с Эльбрус 8С. Поэтому мы были вынуждены реализовать его самостоятельно. Реализация получилась эффективной, полностью загружает 1 Гб канал и обеспечивает максимальную частоту кадров. Наша реализация оснащена полностью автоматической системой обнаружения детекторов, подключенных к системе, используя различные фильтры для выбора наиболее подходящего.
По этим же причинам нам пришлось реализовывать поддержку всех остальных модулей системы: механику (до 9 осей), ряд рентгеновских генераторов (Spellman, Hamamatsu, Eltech, X-Pro), оптических камер и ключей защиты. Система автоматического поиска устройств используется для поиска всех подключенных к системе устройств.
Системы для цифровой радиографии работают с большими 16-битными снимками. 16 Мп и более являются обычными размерами для захвата в реальном времени, а 100 Мп и более не предел для сшивок и технологических карт. Для всех них пользователи ожидают быструю обработку в реальном времени (30 кадров/сек и более), как минимум для самых распространенных операций, что сложно себе представить на всех целевых процессорах. Вследствие отсутствия полноценной кроссплатформенной поддержки CUDA/OpenCL/Vulkan мы были вынуждены реализовать на чистом OpenGL 3.0 весь тракт работы с изображениями, от захвата с детектора и калибровки, до оценки и обработки гистограммы, повышения резкости и подавления шума, геометрических преобразований и цветовой дифференциации областей. Результаты обработки 16-битного изображении 3000x3000 пикселей показали от ~33 мс/кадр для устаревших видеокарт AMD R5 до ~2 ms/кадр на более современных GeForce RTX 2070 Max-Q. Эти цифры включают в себя все этапы обработки, от захвата с детектора до отображения результатов.
Сложная пост-обработка и анализ изображений был реализован на OpenCV, которая достаточно быстро работает на всех целевых платформах. Эльбрус 8С удивил нас превосходной оптимизацией и показал результаты сравнимые или лучше, чем современные модели Intel/AMD.
Подробнее о разработке для платформы Эльбрус. Приложение оснащено мощной скриптовой системой, позволяющей создавать пользовательские сценарии для управления оборудованием, обработкой изображений, анализов и генерации отчетов.
В процессе работы над проектом были разработаны несколько алгоритмов для коррекции битых пикселей и затенения детектора, бесшовной сшивки изображений и пр.
Программное обеспечение имеет развитую систему перевода, удобную для использования без привлечения технических специалистов. Стандартно оно поставляется с Русским и Английскими переводами, любые другие языки могут быть добавлены локальными представителями на местах. Пользовательский интерфейс имеет модульную структуру и легко адаптируется в соответствии с выбранными опциями. Для удобства многочасовой работы программное обеспечение имеет поддержку тем оформления, включая традиционные светлую и темную темы.
Также мы активно использовали в проекте свои собственные наработки и библиотеку Flow для ускорения процесса и достижения нужной гибкости и качества продукта.