Русская Википедия:Размытие по Гауссу

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Файл:Cappadocia Gaussian Blur.svg
Пример размытия по Гауссу с различной интенсивностью

Размытие по Гауссу в цифровой обработке изображений — способ размытия изображения с помощью функции Гаусса, названной в честь немецкого математика Карла Фридриха Гаусса.

Этот эффект широко используется в графических редакторах для уменьшения шума изображения и снижения детализации. Визуальный эффект этого способа размытия напоминает эффект просмотра изображения через полупрозрачный экран, и отчётливо отличается от эффекта боке, создаваемого расфокусированным объективом или тенью объекта при обычном освещении.

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

Математическое описание

Применение размытия по Гауссу к изображению математически аналогично свёртке изображения с помощью функции Гаусса. Оно также известно как двумерное преобразование Вейерштрасса. Циклическая свёртка (т. е. круговое размытие по рамке), напротив, более точно воспроизводит эффект боке.

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

Файл:Halftone, Gaussian Blur.jpg
Изображение, напечатанное с применением автотипии, сглаживается за счёт размытия по Гауссу

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

<math>G(x) = \frac{1}{\sqrt{2\pi \sigma^2}} e^{-\frac{x^2}{2 \sigma^2}}</math>.

В двух измерениях это произведение двух функций Гаусса, по одной для каждого измерения:

<math>G(x,y) = \frac{1}Шаблон:2\pi \sigma^2 e^{-\frac{x^2 + y^2}{2 \sigma^2}}</math>[1][2][3].

где x, y — координаты точки, а σсреднеквадратическое отклонение нормального распределения. При применении в двух измерениях эта формула даёт поверхность, контуры которой представляют собой концентрические окружности с нормальным распределением относительно центральной точки.

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

Теоретически функция Гаусса в каждой точке изображения будет отличной от нуля, а это означает, что в вычислении значения для каждого пикселя участвует всё изображение. На практике, при вычислении дискретного приближения функции Гаусса, пиксели на расстоянии более 3σ оказывают на него достаточно малое влияние, поэтому могут считаться фактически нулевыми. Таким образом, значения пикселей вне этого диапазона можно игнорировать. Обычно программе обработки изображений требуется лишь вычислить матрицу с размерами <math>\lceil6\sigma\rceil</math> × <math>\lceil6\sigma\rceil</math> (где <math>\lceil \cdot \rceil</math> — функция округления в большую сторону), чтобы гарантировать результат, достаточно близкий к результату, полученному с помощью полного распределения Гаусса.

Помимо круговой симметрии, размытие по Гауссу может применяться к двумерному изображению как два независимых одномерных вычисления, и поэтому оно является разделяемым фильтром. Это означает, что эффект от применения двумерной матрицы также может быть достигнут путём применения серии одномерных матриц в горизонтальном направлении с последующим повторением процесса в вертикальном направлении. С вычислительной точки зрения это полезное свойство, так как расчёт может быть выполнен за время <math>O\left(w_\text{kernel} w_\text{image} h_\text{image}\right) + O\left(h_\text{kernel} w_\text{image} h_\text{image}\right)</math>, где h — высота, а w — ширина, в отличие от <math>O\left(w_\text{kernel} h_\text{kernel} w_\text{image} h_\text{image}\right)</math> при использовании неразделимого ядра.

Применение последовательных размытий по Гауссу к изображению имеет тот же эффект, что и применение одного большего размытия по Гауссу, радиус которого является квадратным корнем из суммы квадратов фактически применённых радиусов размытия. Например, применение последовательных размытий по Гауссу с радиусами 6 и 8 даёт те же результаты, что и применение одного размытия по Гауссу с радиусом 10, поскольку <math>\sqrt{6^2 + 8^2} = 10</math>. Из-за этой взаимосвязи время обработки не может быть сэкономлено путём имитации размытия по Гауссу последовательными более мелкими размытиями — необходимое время будет по крайней мере таким же, как и при выполнении одного большого размытия.

Файл:Gaussian blur before downscaling.png
Два уменьшенных изображения Флага Содружества Наций. Перед уменьшением масштаба к нижнему изображению применялось размытие по Гауссу. Размытие делает изображение менее резким, но предотвращает образование муарового рисунка

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

Фильтр нижних частот

Размытие по Гауссу — это фильтр нижних частот, ослабляющий высокочастотные сигналы [3].

Его логарифмическая амплитудно-частотная характеристика (логарифмический масштаб в частотной области) представляет собой параболу.

Снижение дисперсии

Насколько сильно фильтр Гаусса со стандартным отклонением <math>\sigma_f</math> сгладит картинку? Другими словами, насколько это сглаживание уменьшит среднеквадратическое отклонение значений пикселей на картинке? Предположим, что значения пикселей в градациях серого имеют среднеквадратическое отклонение <math>\sigma_X</math>, следовательно после применения фильтра приведённое среднеквадратическое отклонение <math>\sigma_r</math> можно аппроксимировать следующим образом:

<math>\sigma_r \approx \frac{\sigma_X}{\sigma_f 2 \sqrt \pi}</math>Шаблон:Нет АИ.

Пример матрицы Гаусса

Эта матрица создаётся путем выборки ядра фильтра Гаусса (с σ = 0,84089642) в средних точках каждого пикселя с последующей нормализацией. Центральный элемент (4,4) имеет наибольшее значение, остальные элементы симметрично уменьшаются по мере увеличения расстояния от центра.

<math display="block">\begin{bmatrix} 0{,}00000067 & 0{,}00002292 & \textbf{0,00019117} & 0{,}00038771 & \textbf{0,00019117} & 0{,}00002292 & 0{,}00000067 \\ 0{,}00002292 & 0{,}00078633 & 0{,}00655965 & 0{,}01330373 & 0{,}00655965 & 0{,}00078633 & 0{,}00002292 \\ \textbf{0,00019117} & 0{,}00655965 & 0{,}05472157 & 0{,}11098164 & 0{,}05472157 & 0{,}00655965 & \textbf{0,00019117} \\ 0{,}00038771 & 0{,}01330373 & 0{,}11098164 & \textbf{0,22508352} & 0{,}11098164 & 0{,}01330373 & 0{,}00038771 \\ \textbf{0,00019117} & 0{,}00655965 & 0{,}05472157 & 0{,}11098164 & 0{,}05472157 & 0{,}00655965 & \textbf{0,00019117} \\ 0{,}00002292 & 0{,}00078633 & 0{,}00655965 & 0{,}01330373 & 0{,}00655965 & 0{,}00078633 & 0{,}00002292 \\ 0{,}00000067 & 0{,}00002292 & \textbf{0,00019117} & 0{,}00038771 & \textbf{0,00019117} & 0{,}00002292 & 0{,}00000067 \end{bmatrix}</math>

Элемент 0,22508352 (центральный) в 1177 раз больше, чем 0,00019117, который находится сразу за пределами 3σ.

Реализация

Эффект размытия по Гауссу обычно создаётся путём свёртки изображения ядром КИХ с использованием значений функции Гаусса.

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

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

В этих случаях точность поддерживается (с небольшими вычислительными затратами) путем интегрирования функции Гаусса по площади каждого пикселя[4].

При преобразовании непрерывных значений функции Гаусса в дискретные значения, необходимые для ядра, сумма значений будет отличаться от 1. Это приведёт к потемнению или осветлению изображения. Чтобы исправить этот эффект, значения можно нормализовать, разделив каждый элемент в ядре на сумму всех элементов.

Эффективность КИХ снижается для высоких значений σ. Существуют альтернативы КИХ-фильтру. К ним относятся очень быстрое множественное размытие по рамке, быстрый и точный детектор границ БИХ Дерише, «стековое размытие» на основе размытии по рамке и многое другое[5].

Применение

Файл:Edge Image.gif
Влияние сглаживания на обнаружение краёв. Чем больше сглаживание, тем меньше краёв определяется

Обнаружение краёв

Сглаживание по Гауссу обычно используется для обнаружения краёв. Большинство алгоритмов обнаружения краёв чувствительны к шуму. Двумерный фильтр Лапласа, построенный на основе дискретизации оператора Лапласа, очень чувствителен к шумной среде.

Использование фильтра размытия по Гауссу перед обнаружением краёв направлено на снижение уровня шума в изображении, что улучшает результат последующей работы алгоритма обнаружения краёв. Этот подход обычно называют лапласианом Гаусса или фильтрацией LoG[6].

Фотография

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

Размытие по Гауссу автоматически применяется как часть постобработки изображения с помощью программного обеспечения камеры, что приводит к необратимой потере деталей[7].

См. также

Примечания

Шаблон:Примечания

Ссылки

  1. Shapiro, L. G. & Stockman, G. C: "Computer Vision", page 137, 150{,} Prentice Hall, 2001
  2. Mark S. Nixon and Alberto S. Aguado. Feature Extraction and Image Processing. Academic Press, 2008, p. 88.
  3. 3,0 3,1 R.A. Haddad and A.N. Akansu, "A Class of Fast Gaussian Binomial Filters for Speech and Image Processing Шаблон:Wayback," IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 39, pp 723-727, March 1991.
  4. Erik Reinhard. High dynamic range imaging: Acquisition, Display, and Image-Based Lighting. Morgan Kaufmann, 2006, pp. 233–234.
  5. Шаблон:Cite journal (code doc Шаблон:Wayback)
  6. Шаблон:Cite web
  7. Шаблон:Cite web