Denoise in Python Image Inpainting – Fast Marching – Navier-Stokes & Fluid Dynamics – Demo Non-Local Means Denoising – Что конкретно происходит – OpenCV – Demo
Image Inpainting Изображение с плохими областями Попробуем восстановить исходное значение Fast Marching (INPAINT_TELEA) – Будем для пикселя считать средний цвет вокруг – Ближние соседи весят больше, чем дальние – Переходим к следующему согласно FMM Navier-Stokes (INPAINT_NS) – Гидродинамика, уравнения в частных производных, векторы градиентов...
Image Inpainting inpaint – src – Исходное изображение – inpaintMask – Маска для отрисовки, 8-битное изображение с одним каналом. Ненулевой пиксель обозначает, что нужно перерисовать – flags – INPAINT_TELEA или INPAINT_NS, в зависимости от требуемого алгоритма – inpaintRadius – радиус окружности для нахождения соседей – dst – Куда записать результат (можно не указывать) img = cv2.imread('home.jpg') mask = cv2.imread('mask.png', 0) dst = cv2.inpaint(img, mask, 5, cv2.INPAINT_TELEA, None) dst = cv2.inpaint(img, mask, 5, cv2.INPAINT_NS, None)
Image Inpainting БылоTELEANS Выводы: Нужно аккуратно выбрать маску Легко убрать лишние детали
Non-Local Means Denoising Изображение с плохими областями Соседних пикселей не всегда хватает – Шум: случайная величина, в среднем равна 0 – p = p_0 + n p_0 – истинное значение n – шум – Будем по маленькой области (7x7) считать её среднее по всему изображению – В идеале получим p_0, так как в среднем шум = 0
Non-Local Means Denoising Выделены одинаковые области На одном из участков присутствует шум
Non-Local Means Denoising fastNlMeansDenoising(Colored)(Multi) – src – Исходное изображение – dst – Куда записать результат (можно ставить None) – templateWindowSize Размер области для подсчёта веса цветов (нечётное). Рекомендуется ставить 7 – searchWindowSize Размер области, в рамках которой идёт поиск похожих областей (нечётное). Линейно влияет на быстродействие. Рекомендуется ставить 21 – H Грубость подсчёта. Чем больше, тем больше шума и деталей будет убрано. По умолчанию 3 Цветное конвертируется в CIE-L*a*b img = cv2.imread('die.jpg') dst3 = cv2.fastNlMeansDenoisingColored(img, None)
Non-Local Means Denoising Было Стало (H = 3)Стало (H = 10) Выводы: Чем грубее подсчёт, тем одинаковое и размытее изображение Детали очень быстро размывает
Denoise in Python Image Inpainting Статья про гидродинамику Статья про fast marching method Статья про гидродинамику Статья про fast marching method Non-Local Means Denoising Статья про Non-Local Means Онлайн-курс на coursera Статья про Non-Local Means Онлайн-курс на coursera