Гауссово размытие и свертывание ядер - PullRequest
16 голосов
/ 29 июля 2010

Я не понимаю, что такое ядро ​​свертки и как я применил бы матрицу свертки к пикселям на изображении (я говорю о выполнении операции Gaussian Blur для изображения).

Также могу ли я получить объяснение о том, как создать ядро ​​для операции Gaussian Blur?

Я читаю эту статью , но я не могу понять, как все это делается ...

Спасибо всем, кто находит время, чтобы объяснить это мне:),

ExtremeCoder

Ответы [ 3 ]

17 голосов
/ 30 июля 2010

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

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

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

10 голосов
/ 30 июля 2010

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

Смысл всей математики в том, чтобы создать мягкое размытие, напоминающее рисунок рассеяния, создаваемый сетчатым экраном, помещенным между зрителем и изображением. Вы можете думать о «размере» (стандартном отклонении) гауссиана как о расстоянии между изображением и экраном.

7 голосов
/ 20 марта 2013

Вот замечательный инструмент, если вы не хотите рассчитывать все самостоятельно (как я):http://www.embege.com/gauss/

РЕДАКТИРОВАТЬ
Поскольку ссылка, похоже, не работает, вот ссылка на archive.org:
http://web.archive.org/web/20150217075657/http://www.embege.com/gauss

...