Smorodov 579 Жалоба Опубликовано January 6, 2012 Non-local means (Локализованное усреднение) — использует локализуемое сходство для усреднения изображения. То есть, если окрестности двух точек похожи то и точки похожи. Вот он и ищет для каждой точки похожие на нее точки по всему изображению, и затем усредняет результат. Это вкратце. Алгоритм работает ОЧЕНЬ долго (у меня считал около часа изображение 512х512). На картинках результат одной итерации (по поводу второй картинки не уверен (может быть там три итерации), давно делал), дольше ждать неохота. NLMeans.cpp Можно почитать еще здесь. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано January 10, 2012 что то около часа это долго. есть еще bilateral filter. и вроде его можно как и медианный считать как то побыстрому(относительно чем в лоб) и на gpu есть. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано January 10, 2012 Будет и на GPU, это просто короткая простая программа для препарирования. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано January 11, 2012 оказывается что bilateral filter есть даже в opencv и вот Non-local means на opencv еще. (работоспособность не проверял) http://opencv.jp/opencv2-x-samples/non-local-means-filter 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано January 11, 2012 Обещанный GPU - шный вариант, время одной итерации около 2 сек (на NVIDIA GT 430). И еще, если сделать задать радиус блока больше 4, то вылетает с ошибкой (у меня установлено 4, у NVidia в примере 3). Решено при помощи изменения интервала времени, в течение роторого видеокарта может не отвечать на запросы: Tdr.rar, костыль конечно, но как по другому пока не выяснил. Работает с трехканальными изображениями тоже. БОльшую часть стащил из примера CUDA imageDenoising. Солюшн для 2010 студии в аттаче. CudaExp1.rar Модификация алгоритма: http://www.math-info.univ-paris5.fr/~moisan/tvmeans/ Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано January 12, 2012 еще есть Adaptive Median Filter, Symmetric Nearest Neighbors (SNN) and Kuwahara-Nagao-Filter ну это так немного в другую степь. тут еще какая то экзотика http://graphics.stanford.edu/papers/gkdtrees/ Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 23, 2013 Быстрый (10-15 секунд) CPU-шный вариант NL-Means с использованием FLANN. ImagePatchesFlann.cpp более "правильный" вариант (в смысле функции ядра): ImagePatchesFlann.cpp Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Pavia00 32 Жалоба Опубликовано March 23, 2013 Если взять среднее из 5 и 7 то должна получиться хорошая картинка. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 23, 2013 У фильтра есть параметры (размер патча, количество патчей и параметр ядра Гаусса), вот, например, другой набор параметров (взял меньше патчей для усреднения): А здесь более широкое ядро: В opencv кстати, есть встроенный (но он мне не нравится ): http://docs.opencv.org/modules/photo/doc/denoising.html Еще реализация: http://opencv.jp/opencv2-x-samples/non-local-means-filter Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах