|
|
Быстрые классические алгоритмы обработки изображений на CUDA
Автор: Серженко Фёдор
Tags: Обработка изображений, классические алгоритмы, нейросети, ИИ, Jetson, CUDA, GPU ISP, AI
Хотя в последние годы доминируют нейросетевые методы (особенно сверточные сети), классические алгоритмы обработки изображений остаются актуальными там, где важны предсказуемость, интерпретируемость, высокая производительность, низкая латентность, отсутствие больших размеченных наборов данных или возможности работы на слабом железе. Ниже описаны задачи, где они сейчас действительно востребованы.
Задачи, где нейросети пока неприменимы
- Обработка изображений с очень большим разрешением (20 - 250 МПикс)
- Очень быстрая обработка изображений (производительность более 1 ГПикс/с)
- Задачи реального времени для видеокамер
- Сжатие изображений по стандартным алгоритмам (JPEG, JPEG2000) с высокой производительностью
Предобработка и восстановление изображений (без обучения на данных)
- Удаление шума (Denoising) – фильтр Гаусса, медианный фильтр, билатеральный, нелокальное среднее, вейвлетные пороговые методы. Это актуально для приложений, в которых недопустимо, что нейросети могут "придумать" несуществующую структуру.
- Улучшение качества изображений (tone mapping, dehazing, shadow removal) – адаптивный локальный контраст, удаление дымки и тумана, подавление или ослабление теней от облаков в аэрофотосъёмке
- Устранение размытия (Deblur) – фильтр Винера, метод Ричардсона-Люси, регуляризация Тихонова. Используются в криминалистике и для коррекции снимков с дрожанием камеры, когда нет возможности собрать датасет на конкретную оптическую систему.
- Повышение разрешения (Super-resolution) – классические методы (билинейная/бикубическая интерполяция, Ланцош) до сих пор встроены в драйверы камер и видеоконвертеры, так как они детерминированы и не создают артефактов "галлюцинации"
Задачи с жесткими требованиями к скорости и ресурсам
- Обнаружение углов (Corner detection) – Harris, Shi-Tomasi. Используются в системах ориентации по звездам, SLAM, в трекинге простых объектов
- Выделение ключевых точек и дескрипторов – SIFT, SURF, ORB, BRISK. До сих пор применяются в стереозрении (промышленные роботы), панорамной склейке, калибровке камер. Эти алгоритмы не требуют лицензирования, в отличие от многих нейросетей.
- Сегментация на основе порогов и роста областей – Otsu, Mean Shift, Watershed. Это важно в промышленном контроле: проверка наличия деталей, зазоров, бликов – когда нужно просто и надежно отделить объект от фона без обучения.
Специфические задачи, где нейросети избыточны
- Калибровка и коррекция искажений камер – устранение дисторсии (радиальной/тангенциальной) на основе параметров линз
- Обнаружение движений – вычитание фона с адаптивными моделями Гаусса (MoG, MoG2), медианный фильтр по времени, используется в системах охраны с дешевыми IP-камерами
- Восстановление глубины по фокусу (Depth from defocus) и фазовый автофокус – основаны на анализе градиентов и контраста в частотной области
Ситуации с отсутствием размеченных данных
- Сжатие с сохранением контуров – EPWIC, преобразование Хафа для поиска линий/окружностей
- Сжатие сырых данных - RawZipper
- Морфологический анализ (операции эрозии/дилатации, skeletonization) – извлечение "скелета" объектов в биомедицине (сосуды, нейроны), в анализе дорожной разметки и в металлографии (подсчет зерен)
- Удаление дымки, облаков, ослабление теней от облаков
Комбинация с нейросетями (гибридные подходы)
Классические алгоритмы часто используются в качестве предварительной обработки:
- ML-агностическое улучшение контраста (ALTMapper, гистограммная эквализация) перед подачей в CNN
- Конвертация изображений из RAW в RGB и масштабирование - тоже перед CNN
- Морфологические операции для постобработки масок, выданных нейросетью (убирают шум и замыкают разрывы)
- Алгоритм Канни (Canny edge detection) – это до сих пор стандартный вход для некоторых классических и гибридных детекторов
Ссылки на быстрые реализации классических алгоритмов для видеокарт NVIDIA
- Fastvideo SDK для полного цикла обработки данных от скоростных и промышленных видеокамер, начиная от RAW и до финального сжатого видео
- Программное обеспечение FastVCR для быстрой обработки изображений на видеокартах NVIDIA для камерам XIMEA, Basler, Imperx, DALSA/Flir, IO Industries, Emergent Vision Technologies, Lucid Vision, Daheng Imaging, Mindvision, Hikrobot
- Кодек JPEG на CUDA
- Кодек JPEG2000 на CUDA
- Адаптивный локальный тонмаппер
|