предисловие
В этой статье представлена кодовая реализация фильтрации средних, медианных и гауссовских фильтров, а также их сравнение эффектов шумоподавления в шуме соли и перца и изображениях гауссовского шума.
1. Средняя фильтрация
Под фильтрацией средних понимается предоставление шаблона целевому пикселю (пикселю с определенной координатой) на изображении.Шаблон включает в себя сам целевой пиксель и окружающие его соседние пиксели, а затем заменяет исходное значение пикселя средним значением всех пикселей. в шаблоне .
Фильтрация среднего значения реализуется с помощью свертки, а обычные размеры ядра свертки составляют 3×3, 5×5, 7×7 и т. д. Ниже приведено ядро свертки 3×3, поскольку среднее значение всех пикселей используется для замены исходное значение пикселей, поэтому можно считать, что каждый вес в шаблоне одинаков, а здесь ядро свертки 3 × 3, поэтому все они равны 1/9, Конкретная операция состоит в том, чтобы умножить две матрицы, а затем добавить их .
код показывает, как показано ниже:
import cv2
# 读图
old_img = cv2.imread("lena.tif")
# 均值滤波
new_img = cv2.blur(old_img, (3, 3)) # 后面的卷积核大小可以自己定义,如(5, 5)
# 结果对比
cv2.imshow("old_img", old_img)
cv2.imshow("new_img", new_img)
cv2.waitKey(0)
Результаты следующие: слева — старое изображение, а справа — новое изображение (изображение после средней фильтрации), и разница будет более очевидной при 5×5.
2. Медианная фильтрация
Медианный фильтр предназначен для сортировки чисел в пределах покрытия ядра свертки от меньшего к большему, а затем взять медиану для замены значения центральной позиции ядра свертки в исходном изображении.Как показано на рисунке ниже, размер ядра свертки 3×3, а исходное изображение Значение центральной позиции ядра свертки изначально равно 2, и 9 чисел в ядре свертки сортируются, чтобы получить: 2, 5, 6, 7, 16 , 25, 28, 44, 80. Таким образом, 2 в центре заменяется на 16.
Следует отметить, что медианному фильтру нужно только достичь размера ядра свертки, Что касается значения каждой позиции в ядре свертки, его не обязательно знать, например, ядро свертки 3 × 3. При переходе к некая координата исходного изображения, только надо отсортировать числа в диапазоне 3х3 по центру на ней, а потом взять медиану.
код показывает, как показано ниже:
import cv2
# 读图
old_img = cv2.imread("lena.tif")
# 中值滤波
medianBlur_img = cv2.medianBlur(old_img, 3)
cv2.imshow("old_img", old_img)
cv2.imshow("medianBlur_img", medianBlur_img)
cv2.waitKey(0)
3. Гауссова фильтрация
Чтобы преодолеть недостатки метода простого локального среднего (размытие изображения), было предложено множество алгоритмов локального сглаживания, сохраняющих края и детали. Все их отправные точки сосредоточены на том, как выбрать размер, форму и направление района, параметры плюс среднее значение и весовые коэффициенты каждого магазина в районе.
Сглаживание изображения по Гауссу также является методом сглаживания изображений, основанным на идее усреднения по соседству.При сглаживании изображения по Гауссу при усреднении изображений пикселям в разных положениях присваиваются разные веса. Сглаживание по Гауссу отличается от простого сглаживания тем, что при усреднении пикселей по соседству оно присваивает пикселям в разных позициях разные веса.Шаблоны Гаусса в полях 3×3 и 5×5 показаны на рисунке ниже. Среди них 16 потому, что все числа в ядре свертки 3 × 3 в сумме дают 16, а 273 одинаковы.
Код выглядит следующим образом:
import cv2
# 读图
old_img = cv2.imread("lena.tif")
# 高斯滤波
GaussianBlur_img = cv2.GaussianBlur(old_img, (3,3), 0) # 第一个参数:原图像;第二个参数:卷积核大小;第三个参数:X方向上的高斯核标准偏差。
# 显示
cv2.imshow("old_img", old_img)
cv2.imshow("GaussianBlur_img", GaussianBlur_img)
cv2.waitKey(0)
4. Сравнение эффекта удаления соли и перца
Изображение шума соли и перца выглядит следующим образом:
Эффекты трех фильтров следующие, слева направо: средний фильтр, медианный фильтр и фильтр Гаусса. Таким образом ,
для шума соли и перца медианный фильтр является хорошим выбором.
5. Сравнение эффекта от удаления гауссова шума
Изображение шума Гаусса выглядит следующим образом:
Три эффекта фильтра следующие слева направо: средний фильтр, медианный фильтр и фильтр Гаусса.
Я пошел, но только немного, и эффект чувствуется подобным .
жду критики