Размытие по Гауссу

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
Пример размытия по Гауссу с различной интенсивностью

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

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

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

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

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

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

Изображение, напечатанное с применением автотипии, сглаживается за счёт размытия по Гауссу

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

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

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

[math]\displaystyle{ 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]\displaystyle{ \lceil6\sigma\rceil }[/math] × [math]\displaystyle{ \lceil6\sigma\rceil }[/math] (где [math]\displaystyle{ \lceil \cdot \rceil }[/math] — функция округления в большую сторону), чтобы гарантировать результат, достаточно близкий к результату, полученному с помощью полного распределения Гаусса.

Помимо круговой симметрии, размытие по Гауссу может применяться к двумерному изображению как два независимых одномерных вычисления, и поэтому оно является разделяемым фильтром. Это означает, что эффект от применения двумерной матрицы также может быть достигнут путём применения серии одномерных матриц в горизонтальном направлении с последующим повторением процесса в вертикальном направлении. С вычислительной точки зрения это полезное свойство, так как расчёт может быть выполнен за время [math]\displaystyle{ 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]\displaystyle{ O\left(w_\text{kernel} h_\text{kernel} w_\text{image} h_\text{image}\right) }[/math] при использовании неразделимого ядра.

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

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

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

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

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

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

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

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

[math]\displaystyle{ \sigma_r \approx \frac{\sigma_X}{\sigma_f 2 \sqrt \pi} }[/math][источник не указан 1347 дней].

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

Эта матрица создаётся путем выборки ядра фильтра Гаусса (с σ = 0,84089642) в средних точках каждого пикселя с последующей нормализацией. Центральный элемент (4,4) имеет наибольшее значение, остальные элементы симметрично уменьшаются по мере увеличения расстояния от центра.[math]\displaystyle{ \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].

Применение

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

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

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

Использование фильтра размытия по Гауссу перед обнаружением краёв направлено на снижение уровня шума в изображении, что улучшает результат последующей работы алгоритма обнаружения краёв. Этот подход обычно называют лапласианом Гаусса или фильтрацией 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 Архивная копия от 22 апреля 2021 на Wayback Machine," 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. Getreuer (17 December 2013). «ASurvey of Gaussian Convolution Algorithms». Image Processing on Line 3: 286–310. doi:10.5201/ipol.2013.87. (code doc Архивная копия от 31 октября 2020 на Wayback Machine)
  6. Fisher, Perkins, Walker & Wolfart. Spatial Filters - Laplacian of Gaussian. Дата обращения: 13 сентября 2010. Архивировано 22 июля 2021 года.
  7. Ritter. Smartphone-Kameras: Warum gute Fotos zu schießen nicht mehr ausreicht [Kommentar] (нем.). GIGA. GIGA Television (24 октября 2013). — «Bei Fotos, die in der Nacht entstanden sind, dominiert Pixelmatsch.». Дата обращения: 20 сентября 2020. Архивировано 18 июля 2021 года.

Ссылки