- Инверсия цветов.
- Размытие.
- Увеличение резкости.
- Тиснение.
- Акварельный эффект.
Матрица – ядро свертки
Если мы рассмотрим данные эффекты с алгоритмической точки зрения, то не увидим ничего сложного: данные эффекты создаются с помощью матрицы чисел. Эта матрица называется ядром свертки.Данная матрица (3х3) содержит три строки по три числа. Для преобразования пикселя изображения он умножается на значение в центре ядра, а значения пикселей, находящихся вокруг данного, умножаются на соответствующие им коэффициенты ядра, после чего все значения суммируются, и мы получаем новое значение для изменяемого пикселя. Данный процесс должен быть последовательно выполнен с каждым пикселем редактируемого изображения.
От коэффициентов ядра зависит то, как изменится редактируемое изображение. Для достижения некоторых эффектов необходимо последовательно применить к изображению не одну, а несколько матриц.
Инверсия цветов
Это наиболее простой способ редактирования изображения: нам даже не потребуется матрица. Нам всего лишь достаточно изменить составляющие цвета на противоположенные (подробнее - при реализации фильтра в следующей части главы).Алгоритм размытия
Для того, чтобы размыть изображение, нам потребуется считать в память значения RGB-составляющих цвета каждого пикселя. После чего ядро размывания будет применено ко всем составляющим компонентам цвета всех пикселей редактируемого изображения:
Для того чтобы определить цвет пикселя, находящегося под центром ядра, необходимо провести умножение весовых коэффициентов ядра с соответствующими значениями цвета редактируемого изображения. После этого результаты суммируются.
Полученное изображение «размыто» по сравнению с оригинальным, так как цвет каждого обработанного пикселя «распространился» среди соседних пикселей.
Чтобы увеличить ядро размытия, вы можете:
- использовать ядро большего размера (так цвет будет распределяться среди большего количества соседних пикселей);
- изменять коэффициенты таким образом, чтобы уменьшить влияние центрального коэффициента;
- выполнить фильтрацию изображения не однократно;
Алгоритм увеличения резкости
Создавая эффект увеличения резкости, мы выполняем все тот же алгоритм, но используем другое ядро, так как теперь нашей целью является увеличение резкости изображения. Ядро G для увеличения резкости:
Как и в предыдущем случае, мы по отдельности обрабатываем RGB-составляющие, после чего формируем значения цвета обрабатываемого пикселя. Для увеличения контраста между центральным пикселем и соседями используются отрицательные весовые коэффициенты.
Таким образом, результирующее изображение стало более четким, чем оригинал. По сути дополнительные детали возникли из ничего - это просто увеличенный контраст между цветами пикселей.
Алгоритм тиснения
Тиснение выполняется аналогично, но в данном случае мы используем не одну матрицу, а несколько.
В то время как ядра размытия и резкости имели сумму коэффициентов равную единице, в данном случае сумма весов в ядре тиснения равна 0. Если сумма коэффициентов не будет равна 0, мы получим отклонение к какому-то конкретному цвету.
Полученное значение цвета будет дополнительно обработано (усреднено) и приведено к диапазону 0-255 (подробнее вы сможете увидеть при реализации данного фильтра). Меняя значения позиций 1 и -1, мы можем получить измененное направление подсветки.

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

Вот и все. Немного подкорректировав параметры матрицы, мы можем получать как более резкий, так и более плавный эффект акварелизации. br />