Источник статьи | Hengyuan Cloud Community (платформа общей вычислительной мощности, ориентированная на индустрию ИИ:Хэнъюань Чжисян Облако)
Исходный адрес |Сглаживание изображения
Автор оригинала | instter
цель обучения
Понимание типов шума на изображениях Узнайте о средней фильтрации, фильтрации по Гауссу, медианной фильтрации и т. д. Возможность обработки изображений с помощью фильтров
1 Шум изображения
Процесс получения, обработки и передачи изображений неизбежно загрязняется шумом, который мешает людям понимать и анализировать изображения. Обычные шумы изображения включают гауссовский шум, шум соли и перца и т. д.
1.1 Шум соли и перца
Шум соли и перца, также известный какимпульсный шум,Это своего рода шум, часто встречающийся на изображениях, это случайная белая или черная точка., могут иметь черные пиксели в ярких областях или белые пиксели в темных областях (или и то, и другое). Шум с солью и перцем может быть вызван внезапными сильными помехами в сигнале изображения, аналого-цифровыми преобразователями или ошибками передачи битов. Например, неисправный датчик приводит к минимальному значению пикселя, а насыщенный датчик приводит к максимальному значению пикселя.
1.2 Гауссовский шум
Гауссов шум относится к типу шума, функция плотности шума которого подчиняется распределению Гаусса. Из-за математической податливости гауссовского шума в пространственной и частотной областях эта модель шума (также известная как нормальный шум) часто используется на практике. Функция плотности вероятности гауссовской случайной величины z определяется как:
где z — значение серого, μ — среднее или ожидаемое значение z, а σ — стандартное отклонение z. квадрат стандартного отклоненияназывается дисперсией z. Кривая функции Гаусса показана на рисунке.
2 Введение в сглаживание изображений
С точки зрения обработки сигналов сглаживание изображения заключается в удалении высокочастотной информации и сохранении низкочастотной информации. Таким образом, мы можем выполнить низкочастотную фильтрацию изображения.фильтрация нижних частотОн может удалить шум на изображении и сгладить изображение.
По различным фильтрам можно разделить наСредний фильтр,фильтр Гаусса,медианный фильтр,двусторонняя фильтрация.
2.1 Средняя фильтрация
Шаблон среднего фильтра используется для фильтрации шума изображения. сделатьПредставляет группу координат прямоугольного окна фрагмента изображения размером m×n с центром в точке (x, y). Средний фильтр может быть выражен как:
делается с помощью нормализованной свертки. Он просто заменяет центральный элемент средним значением всех пикселей в области, охватываемой полем свертки.
Например, нормализованный средний фильтр 3x3 выглядит так:
Преимущество средней фильтрации в простоте алгоритма и высокой скорости вычислений, недостаток в том, что при шумоподавлении удаляется много деталей, и изображение становится размытым.
API:
cv.blur(src, ksize, anchor, borderType)
параметр:
- источник: входное изображение
- ksize: размер ядра свертки
- привязка: значение по умолчанию (-1,-1), указывающее центр ядра
- borderType: тип границы
2.2 Фильтр Гаусса
Двумерная гауссиана является основой для построения фильтра Гаусса, и его функция распределения вероятностей выглядит следующим образом:
Раздача имеет форму приподнятой шляпы. Здесь σ можно рассматривать как два значения, одно из которых представляет собой стандартное отклонение в направлении x., другой - стандартное отклонение в направлении y
когдаиЧем больше значение, тем более плоской становится вся форма;и, тем заметнее вся форма.
Нормальное распределение представляет собой колоколообразную кривую: чем ближе к центру, тем больше значение, чем дальше от центра, тем меньше значение. При вычислении результата сглаживания вам нужно только использовать «центральную точку» в качестве начала координат и присвоить веса другим точкам в соответствии с их положением на нормальной кривой, и вы можете получить средневзвешенное значение.
Гауссово сглаживание очень эффективно удаляет гауссовский шум с изображений.
Процесс гауссовского сглаживания:
- Сначала определите весовую матрицу
Предполагая, что координаты центральной точки равны (0,0), координаты 8 ближайших к ней точек будут следующими:
И так далее по пунктам.
Чтобы рассчитать весовую матрицу, необходимо установить значение σ. Предполагая σ = 1,5, матрица весов с радиусом размытия 1 выглядит следующим образом:
Сумма весов этих 9 точек равна 0,4787147. Если вычисляется только средневзвешенное значение этих 9 точек, то сумма их весов также должна быть равна 1. Следовательно, вышеуказанные 9 значений необходимо разделить на 0,4787147, чтобы получить окончательную матрицу весов.
- Вычислить размытие по Гауссу
С помощью весовой матрицы можно рассчитать значение размытия по Гауссу.
Предполагая, что имеется 9 пикселей, значение серого (0-255) будет следующим:
Умножьте каждую точку на соответствующее значение веса:
получить
Сложение этих 9 значений и есть значение размытия по Гауссу в центральной точке.
Этот процесс повторяется для всех точек, и получается размытое по Гауссу изображение. Если исходное изображение является цветным, сглаживание по Гауссу может быть выполнено соответственно для трех каналов RGB.
API:
cv2.GaussianBlur(src,ksize,sigmaX,sigmay,borderType)
параметр:
источник: входное изображение
- KSIZE: Гауссовский объем. Примечание. Ширина и высота сверточной сердцевины должны быть нечетными и могут быть разными.
- sigmaX: стандартное отклонение в горизонтальном направлении
- sigmaY: стандартное отклонение в вертикальном направлении, значение по умолчанию равно 0, что означает то же, что и sigmaX.
- borderType: заполнить тип границы
Пример
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
# 1 图像读取
img = cv.imread('./image/dogGasuss.jpeg')
# 2 高斯滤波
blur = cv.GaussianBlur(img,(3,3),1)
# 3 图像显示
plt.figure(figsize=(10,8),dpi=100)
plt.subplot(121),plt.imshow(img[:,:,::-1]),plt.title('原图')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur[:,:,::-1]),plt.title('高斯滤波后结果')
plt.xticks([]), plt.yticks([])
plt.show()
2.3 Медианная фильтрация
Медианная фильтрация является типичнымНелинейная фильтрующая технология, основная идея заключается в использованииМедианное значение значения серого окрестности точки пикселя используется для замены значения серого точки пикселя..
Медианная фильтрация особенно полезна для шума типа «соль и перец», так как она не зависит от значений в окрестности, сильно отличающихся от типичных значений. API:
cv.medianBlur(src, ksize )
параметр:
- источник: входное изображение
- ksize: размер ядра свертки
Пример:
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
# 1 图像读取
img = cv.imread('./image/dogsp.jpeg')
# 2 中值滤波
blur = cv.medianBlur(img,5)
# 3 图像展示
plt.figure(figsize=(10,8),dpi=100)
plt.subplot(121),plt.imshow(img[:,:,::-1]),plt.title('原图')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur[:,:,::-1]),plt.title('中值滤波后结果')
plt.xticks([]), plt.yticks([])
plt.show()