Ядра изображений

Ядро изображения – это небольшая матрица числовых значений, используемая для обработки изображения посредством математической операции, известной как «свёртка». Каждое значение в ядре определяет вклад соседних пикселей в значение выходного пикселя.

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

Концепция

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

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

Распространённые примеры

Вот некоторые распространённые ядра и их применение:

Размытие (blur)

Простое размытие можно получить с использованием равномерно взвешенных положительных значений. Например, ядро среднего размытия 3x3:

1/9  1/9  1/9
1/9  1/9  1/9
1/9  1/9  1/9

Производит смягчение изображения путём усреднения соседних пикселей.

Увеличение резкости (sharpen)

Ядро увеличения резкости усиливает контрастность по краям, подчеркивая различия между центральным пикселем и его окружением:

 0  -1   0
-1   5  -1
 0  -1   0

Обнаружение краёв (edge detection)

Ядра обнаружения краёв это своего рода «фильтры», которые анализируют изображение, ища резкие изменения в яркости пикселей, чтобы выделить контуры объектов. Например, ядро „лапласиан“:

 0  -1   0
-1   4  -1
 0  -1   0

Или ядро Соболя (горизонтальные края):

-1  -2  -1
 0   0   0
 1   2   1

Нормализация (normalization)

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

Создание ядра в компо́зиторе

Ядра можно создавать непосредственно внутри компо́зитора, используя существующие ноды Blender’а, без необходимости использования внешнего изображения.

Этот подход полезен для создания и интерактивного изменения процедурных эффектов, таких как фильтры, размытия и шаблоны бликов.

  1. Начните с постоянного изображения: используйте ноду Image с небольшим разрешением, например, 9x9 или 15x15 пикселей. В качестве альтернативы, создайте сплошной цвет с помощью ноды RGB.

  2. Сформируйте ядро: измените значения пикселей в матрице ядра для определения весов, которые будут использоваться для применения различных эффектов:

    • Используйте ноды Ellipse Mask или Blur для создания плавного, нечёткого перехода по кругу.

    • Объедините несколько масок с нодами Mix для формирования сложных или направленных фигур (например, узора в виде звезды или полоски).

    Измените интенсивность эффекта, используя ноду Math в режиме „Multiply“, или нормализуйте значения ядра, тем самым разделяя каждую его величину на их общую сумму.

  3. Передайте данные в ноду «Свёртка (convolve)»: подсоедините полученное процедурное изображение ко входу „Kernelноды Convolve. Паттерн и яркость этого изображения напрямую влияют на сам эффект конволюции.

Советы

  • Небольшие изображения (менее 20x20 пикселей) создают эффективные, адаптивные ядра.

  • Используйте опцию „нормализации ядра“ в ноде „Convolve“ для автоматического поддержания баланса яркости.

  • Динамические и мерцающие эффекты фильтров можно создавать с использованием анимированных масок или шаблонов процедурных шумов.

  • Ядра с положительными и отрицательными значениями могут быть использованы для выделения краёв или текстур.