8.2. Матрица конволюции

8.2.1. Общая информация

Это область математики. Большинство фильтров используют матрицу конволюции. С помощью фильтра «Матрица конволюции» можно создать фильтры на заказ.

Что же такое матрица конволюции? Её можно понять без применения мало знакомых инструментов математики. Конволюция - применение одной матрицы, называемой «ядром», на другую.

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

GIMP использует матрицы 5x5 или 3x3. Матрица 3x3 - наиболее часто используемая, и её достаточно для большинства эффектов. Если значения по краям ядра обнулить, GIMP будет считать его как матрицу 3x3.

Фильтр изучает точку за точкой. Для каждой из них, называемой«начальной точкой», он умножает значение этой точки и значения восьми окружающих точек на соответствующие значения ядра. Затем он складывает результаты умножения и устанавливает эту сумму как новое значение начальной точки.

Простой пример:

Слева - матрица изображения: каждый пиксель помечен своим значением. У начального пикселя красная граница. В середине - ядро. Активная область ядра помечена зелёной границей. Справа - результат конволюции.

Произошло следующее: фильтр прочитал по-порядку, слева направо и сверху вниз, все точки активной области изображения. Потом он умножил значение каждой из них на соответствующие значения ядра и сложил результат: (100*0)+(50*1)+(50*0)+(100*0)+(100*0) +(100*0)+(100*0)+(100*0)+(100*0)+(100*0) = 50. Значение начальной точки стало 50. До этого, когда значение начальной точки было 50, оно стало 100, значение точки сверху (фильтр работает не над изображением, а над его копией). В результате, начальная точка продвинулся вниз.

8.2.2. Активация фильтра

Этот фильтр находится в меню изображения ФильтрыОбщиеМатрица конволюции.

8.2.3. Параметры

Рисунок 16.148. Параметры фильтра «Матрица конволюции»

Параметры фильтра «Матрица конволюции»

Матрица

Это и есть матрица ядра 5x5: желаемые значения заполняются прямо в вводные поля.

Divisor

The result of previous calculation will be divided by this divisor. You will hardly use 1, which lets result unchanged, and 9 or 25 according to matrix size, which gives the average of pixel values.

Offset

This value is added to the division result. This is useful if result may be negative. This offset may be negative.

Граница

Когда начальная точка находится на границе, часть ядра находится вне изображения. Существует три варианта действия:

From left: source image, Extend border, Wrap border, Crop border

Extend

This part of kernel is not taken into account.

Wrap

This part of kernel will study pixels of the opposite border, so pixels disappearing from one side reappear on the other side.

Crop

Pixels on borders are not modified, but they are cropped.

Каналы

Выбор каналов, над которыми фильтр будет работать.

Нормализовать

При этом выборе, «Делитель» берёт результат конволюции. Если результат равен нулю (невозможно разделить на ноль), тогда он смещается на 128. Если результат отрицателен (отрицательный цвет невозможен) тогда он смещается на 255 (результат инвертируется).

Alpha-weighting

Если этот параметр не выбран, фильтр не принимает во внимание прозрачность. Это может добавить нежелательных эффектов при размывке.

8.2.4. Примеры

Создание ядер базируется на высшей математике. Готовые ядра находятся на веб. Вот несколько примеров:

Рисунок 16.149. Увеличить контраст

Увеличить контраст
Увеличить контраст

Рисунок 16.150. Размыть

Размыть
Размыть

Рисунок 16.151. Усилить край

Усилить край
Усилить край

Рисунок 16.152. Выделение края

Выделение края
Выделение края

Рисунок 16.153. Придать рельеф

Придать рельеф
Придать рельеф