Hengyuan Cloud_Notes в документе о [сглаживании изображений]

глубокое обучение
Hengyuan Cloud_Notes в документе о [сглаживании изображений]

Источник статьи | Hengyuan Cloud Community (платформа общей вычислительной мощности, ориентированная на индустрию ИИ:Хэнъюань Чжисян Облако)

Исходный адрес |Сглаживание изображения

Автор оригинала | instter


цель обучения

Понимание типов шума на изображениях Узнайте о средней фильтрации, фильтрации по Гауссу, медианной фильтрации и т. д. Возможность обработки изображений с помощью фильтров

1 Шум изображения

Процесс получения, обработки и передачи изображений неизбежно загрязняется шумом, который мешает людям понимать и анализировать изображения. Обычные шумы изображения включают гауссовский шум, шум соли и перца и т. д.

1.1 Шум соли и перца

Шум соли и перца, также известный какимпульсный шум,Это своего рода шум, часто встречающийся на изображениях, это случайная белая или черная точка., могут иметь черные пиксели в ярких областях или белые пиксели в темных областях (или и то, и другое). Шум с солью и перцем может быть вызван внезапными сильными помехами в сигнале изображения, аналого-цифровыми преобразователями или ошибками передачи битов. Например, неисправный датчик приводит к минимальному значению пикселя, а насыщенный датчик приводит к максимальному значению пикселя.image.png

1.2 Гауссовский шум

Гауссов шум относится к типу шума, функция плотности шума которого подчиняется распределению Гаусса. Из-за математической податливости гауссовского шума в пространственной и частотной областях эта модель шума (также известная как нормальный шум) часто используется на практике. Функция плотности вероятности гауссовской случайной величины z определяется как:

p(z)=12число Пиоe(zмю)22о22p(z)=\frac{1}{\sqrt{2 \pi} \sigma} e^{\frac{-(z-\mu)^{2}}{2 \sigma^{2}}}2

где z — значение серого, μ — среднее или ожидаемое значение z, а σ — стандартное отклонение z. квадрат стандартного отклоненияо2\sigma^{2}называется дисперсией z. Кривая функции Гаусса показана на рисунке.

image.png

2 Введение в сглаживание изображений

С точки зрения обработки сигналов сглаживание изображения заключается в удалении высокочастотной информации и сохранении низкочастотной информации. Таким образом, мы можем выполнить низкочастотную фильтрацию изображения.фильтрация нижних частотОн может удалить шум на изображении и сгладить изображение.

По различным фильтрам можно разделить наСредний фильтр,фильтр Гаусса,медианный фильтр,двусторонняя фильтрация.

2.1 Средняя фильтрация

Шаблон среднего фильтра используется для фильтрации шума изображения. сделатьSxyS_{x y}Представляет группу координат прямоугольного окна фрагмента изображения размером m×n с центром в точке (x, y). Средний фильтр может быть выражен как:

f^(x,y)=1mn(s,t)еSxy\hat{f}(x, y)=\frac{1}{m n} \sum_{(s, t) \in S_{x y}}

делается с помощью нормализованной свертки. Он просто заменяет центральный элемент средним значением всех пикселей в области, охватываемой полем свертки.

Например, нормализованный средний фильтр 3x3 выглядит так:

K=19[ 1 1 1 1 1 1 1 1 1]K=\frac{1}{9}\begin{bmatrix} \ 1 \ \ 1\ \ 1\ \ 1 \ \ 1\ \ 1\ \ 1 \ \ 1\ \ 1 \end{bmatrix}

Преимущество средней фильтрации в простоте алгоритма и высокой скорости вычислений, недостаток в том, что при шумоподавлении удаляется много деталей, и изображение становится размытым.

API:

cv.blur(src, ksize, anchor, borderType)

параметр:

  • источник: входное изображение
  • ksize: размер ядра свертки
  • привязка: значение по умолчанию (-1,-1), указывающее центр ядра
  • borderType: тип границы

image.png

2.2 Фильтр Гаусса

Двумерная гауссиана является основой для построения фильтра Гаусса, и его функция распределения вероятностей выглядит следующим образом:

G(x,y)=12число Пио2ex2+y22о2G(x,y) = \frac{1}{2\pi \sigma^2}e^{-\frac{x^2+y^2}{2\sigma^2}}

G(x,y)G(x,y)Раздача имеет форму приподнятой шляпы. Здесь σ можно рассматривать как два значения, одно из которых представляет собой стандартное отклонение в направлении x.оx\sigma_x, другой - стандартное отклонение в направлении yоy\sigma_y

image.pngкогдаоx\sigma_xиоy\sigma_yЧем больше значение, тем более плоской становится вся форма;оx\sigma_xиоy\sigma_y, тем заметнее вся форма. Нормальное распределение представляет собой колоколообразную кривую: чем ближе к центру, тем больше значение, чем дальше от центра, тем меньше значение. При вычислении результата сглаживания вам нужно только использовать «центральную точку» в качестве начала координат и присвоить веса другим точкам в соответствии с их положением на нормальной кривой, и вы можете получить средневзвешенное значение.

Гауссово сглаживание очень эффективно удаляет гауссовский шум с изображений.

Процесс гауссовского сглаживания:

  • Сначала определите весовую матрицу

Предполагая, что координаты центральной точки равны (0,0), координаты 8 ближайших к ней точек будут следующими:image.png

И так далее по пунктам.

Чтобы рассчитать весовую матрицу, необходимо установить значение σ. Предполагая σ = 1,5, матрица весов с радиусом размытия 1 выглядит следующим образом:image.png

Сумма весов этих 9 точек равна 0,4787147. Если вычисляется только средневзвешенное значение этих 9 точек, то сумма их весов также должна быть равна 1. Следовательно, вышеуказанные 9 значений необходимо разделить на 0,4787147, чтобы получить окончательную матрицу весов.image.png

  • Вычислить размытие по Гауссу

С помощью весовой матрицы можно рассчитать значение размытия по Гауссу.

Предполагая, что имеется 9 пикселей, значение серого (0-255) будет следующим:image.png

Умножьте каждую точку на соответствующее значение веса:image.png

получить

image.png

Сложение этих 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()

image.png

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()

image.png