Comments 4
Уважаемый Дмитрий! Вы случайно не ошиблись сайтом, направив на хабр статью для научного журнала? Здесь немножечко про популяризацию науки, а не вот это всё - аннотация, введение, математические основы, результаты и их обсуждение (обсуждение результатов на хабре обычно идёт в комментариях, не так ли?), выводы, декларация об использовании ИИ, 13 источников в списке... Знаете, чего не хватает? Справки от системы антиплагиата о степени оригинальности (шучу). Процентов 90 из этого материала можно было успешно скрыть под катом - прочтению и пониманию оставшегося текста это нисколько не помешало бы.
Впрочем, даже бегло просмотрев Ваш труд по диагонали, сделал для себя вывод: ни один из рассмотренных в статье методов и близко не приближает изображение по качеству к исходному, а скорее добавляет свои проблемы (например, убирает точки путём замыливания изображения).
Как на обработке зашумлённых изображений скажется увеличение их разрешения, скажем, раза в четыре или в восемь? Если точка шума на изображении искажает одну из 256 строк, то будет ли эффект таким же, если точка исказит одну из 1024 или 2048 строк? Как это проявится визуально? А что будет при возникновении помех и искажений из-за переконвертаций (примерно как если мы фотографируем на фотоаппарат с матрицей на 16 честных мегапикселей изображение, сформированное на экране с матрицей на 2 мегапикселя из информации, собранной сенсором с разрешением 800*600 точек)?
для эффективного подавления на изображениях смешанного шума, который при высокой точности сохранения контуров объектов имел бы приемлемую вычислительную сложность, что особенно важно при обработке медицинских диагностических изображений (рентгеновских, УЗИ и пр.)
На изображениях из статьи - рядовая фотография, а применение методов планируется в медицине, здесь степень "похожести" примерно как у гламурного белого кабриолета на парковке и кирпичного дома со столетней историей, поросшего плющом. На тестовом фото контуры чёткие, тогда как на медицинских изображениях границы бывают не столь очевидны. Опять же - что есть "шум", а что есть артефакт (например, как точечка может выглядеть маленькая опухоль, не увидеть которую вовремя означает чуть ли не вынести человеку смертный приговор)?
Если говорить про видео - возможно, там можно применить кластерный анализ к точкам, учитывая их яркость не в отдельном кадрике (статичном изображении), а в их последовательности (т.е. мы смотрим и на яркость точки, и на её соседей, и на яркость точки и соседей в соседних кадриках). В целом же можно отметить, что применяемые для оценки методов метрики также требуют своего отдельного обоснования (почему именно они? как каждая отдельная метрика способна повлиять на алгоритм фильтрации шума?).
Строгих регламентов в стиле написания статей на Хабре, как бы, - нет...
А по обсужденной теме совсем не было желания тратить время на академические формальности. Посчитал целесообразным русскоязычную версию описания "подкапотной кухни" закрепить на Хабре для возможности делится ссылкой с коллегами, занимающимися близкой проблематикой. Быстро и удобно, чтобы не писать статью в рецензируемый журнал, к которому еще и свободного доступа зачастую не бывает.
А в природе и не существует метода, который бы позволил "бесплатно" извлекать информацию из шума. Ее потеря неизбежна, особенно когда мы опускаемся по SNR ~ 1.
То, что смартфоны, например, так гонятся за количеством мегапикселей легко объяснимо. Как раз, благодаря такого рода нелинейным фильтрам (особенно современным нейросетевым) можно получать конечный результат при избыточности количества пикселей для сбора фотонов по отношению к количеству пикселей в сохраняемом изображении, который существенно превышает качество, достижимое при банальной линейной интеграции сигналов по пикселям. То есть, чем больше пикселей при том же физическом размере матрицы, тем больше возможности "достать" полезный сигнал из шума за счет всякого рода нелинейных преобразований.
Как в обычных смартфонах, так и в медицине реальный SNR стараются держать гораздо выше 1, как раз в "удобной" для детекторов области. Но алгоритмы фильтрации намеренно "выводятся" в неудобные для их функционирования области уровня шума для проверки их чувствительности, селективности и устойчивости. Опять же вспомним популярный тест камер смартфонов в условиях недостаточной освещенности (ночью). Тогда то все самое интересное и начинается, а в условиях достаточной освещенности у всех результат плюс/минус - одинаковый. Тесты алгоритмов для унификации принято проводить на известных картинках (это как эталонные метр, килограмм и пр. с которыми сверяются все остальные меры). Точно также и метрики - стандартизированы! В медицине правда несколько иные используются для оценки качества диагностических изображений, например, CNR и пр. И делаются они, как раз, на структурах (называемых фантомами), обеспечивающих получение изображений, сходных с рис.1. А опухолей размером в 1 пиксель, поверьте, - не бывает! Всякого рода, микрокальцинаты например, да бывают. И даже субпиксельных размеров. Но сама технология получения изображений из-за "физики" не позволяет локализовать тень или луч на матрице в точку, это всегда - пятно, охватывающее несколько пикселей (рассеяние фотонов, дифракция, интерференция и пр.)!
Видео обрабатывается и покадрово и динамически, и именно благодаря динамике можно еще "лучше" вытаскивать полезные сигналы из шума, чем банальная покадровая статика. И здесь тот же принцип, чем выше частота кадров при одном и том же потоке излучения на матрицу, тем лучше будет результат нелинейных динамических преобразований.
А глобально, что касается метрик, то они общеприняты с целью возможности хоть какой-то объективной унитарной количественной оценки качества тех или иных преобразований над изображениями. Хотя способ "на глаз" еще никто не отменил...
а арк фильтр в реальном времени работает? ну типо можно применять в видеопотоке или только на статике?
Оптимизированное ядро ARC-фильтра обрабатывает FHD 1920*1080 (2 Mpx) на CPU в среднем за 0.65 сек. Конкретно в Мтлаб-е, если еще использовать возможности gpuArray, то где-то до 0.5 сек. можно опустится. А дальше - пропорционально: 960*540 обработается в 4 раза быстрее, 3840*2160 обработается в 4 раза медленнее. Эталонный NLM с настройками по умолчанию (размеры окон больше, чем те, что использовались в статье) приблизительно в 6 раз медленнее.
Однако, никто ещё не отменял "правильную" продуктизацию на C++ с полноценным использованием возможностей CUDA. Ожидаемый прирост производительности - в разы! Опыт подсказывает, что уровень в 30 fps для FHD выглядит достижимым. Но конкретно такая задача (продуктизация: C++ + CUDA) при исследовании не ставилась...
Подавление шума на изображениях АРК-фильтром