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

Шум — это любое нежелательное добавление к данным. Например, на следующем рисунке показано понятие чистого сигнала и зашумленного.

Шум

Шум — это любое нежелательное добавленное значение к фактическим данным. Например, любые нежелательные изменения вносятся в значения пикселей для изображений. У нас есть три распространенных типа шума в зрении:

  1. Соль и перец-шум: случайное появление белых и черных пикселей.
  2. Импульсный шум: случайные появления белых пикселей.
  3. Гауссовский (аддитивный) шум: изменения интенсивности, взятые из нормального распределения Гаусса.
  4. Равномерный шум: постоянное значение добавляется ко всем пикселям изображения.

На следующих рисунках показаны шумы, как обсуждалось ранее.

Гауссовский аддитивный шум можно рассматривать следующим образом:

Шумоподавление

Невзвешенное усреднение. Самая простая и первая попытка — заменить каждый пиксель средним значением всех значений в его окрестности. Два допущения при принятии этого подхода:

  1. Пиксели в соседней области похожи друг на друга (энтропия пикселей низкая), и все пиксели в соседней области имеют одинаковую важность.
  2. Шумы распространяются независимо друг от друга (например, собираются в соседнем районе)

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

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

Расчет выполняется, как показано на следующем рисунке. Движущееся окно с весами перемещается по изображению и изменяет значение каждого пикселя. В следующем примере показано невзвешенное усреднение с 9-пиксельным окном.

Кросс-корреляционная фильтрация

В этой фильтрации каждый пиксель заменяется линейной комбинацией его соседей. Обычно ядро ​​в сумме равно 1.

В OpenCV для этой операции используется функция filter2D. Рассмотрим следующий пример, в котором изображение перемещается на n пикселей вправо путем построения ядра соответствующего размера.

Вместо ядра сдвига в приведенном выше примере можно использовать ядра размытия или обнаружения краев.

Гауссова фильтрация

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

Выбор правильного значения среднего значения и дисперсии фильтра Гаусса имеет решающее значение для получения приемлемых результатов. Большие ядра (с большим количеством пикселей) могут деактивировать эффект шумоподавления в некоторых сценариях. Тем не менее, другие стратегии были бы полезны. На следующем рисунке показано, что фильтрация с помощью ядра Гаусса более гладкая, чем средний фильтр.

свертка

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



В Convolution ядро ​​переворачивается по осям x и y (сначала по одной, потом по другой). Формула это показывает. Затем мы делаем то же, что и при корреляционной фильтрации. Переворот происходит из-за того знака минус в формуле свертки, который у движущегося ядра стоит позади его независимой переменной.

Обратите внимание, что мы находимся в областях дискретных чисел в изображениях, поэтому у нас есть суммы вместо интегралов.

Градиент изображения

Градиент изображения в каждом пикселе показывает направление быстрого изменения.

Следующий пример показывает, что он показывает:

Направление задается

Величина градиента дает прочность края.

На следующем рисунке показано изображение градиентов точек глаза.

На следующем рисунке показано, как свертка может помочь найти увеличение значений сигнала после определенной точки данных. Кроме того, насколько полезна теорема о производной свертки.

Соответствие шаблону

Эта задача направлена ​​на поиск шаблона или ядра (например, глаза) в увеличенном изображении. Основная проблема заключается в определении хорошего сходства или расстояния между двумя участками.

Возможными мерами могут быть:

  1. Корреляция
  2. Корреляция нулевого среднего
  3. Сумма квадратной разницы (SSD)
  4. Нормализованная взаимная корреляция

Рассмотрим следующий пример, где ядро ​​— это глаз:

Со временем я постараюсь отредактировать и добавить больше концепций в эту статью. Конструктивные комментарии приветствуются.