Повышение резкости - это только один из эффектов, которые могут быть достигнуты с помощью свертки , процесса, в котором значение каждого пикселя изменяется в соответствии с суммой соседних пикселей, взвешенных в соответствии с матрицей свертки Ака ядро .
Ядро для повышения резкости увеличивает значение рассматриваемого пикселя и вычитает соседние пиксели. Например, ядро может выглядеть так:
0 -1 0
-1 5 -1
0 -1 0
Это приведет к тому, что рассматриваемый пиксель будет умножен на 4, а верхний, левый, нижний и правый соседний элемент умножен на -1, а диагональные соседние элементы умножены на 0. Тогда все значения добавлены вместе. Немного трудно понять, как это работает, пока вы не вспомните, что один и тот же процесс происходит для каждого пикселя изображения.
Для иллюстрации давайте рассмотрим изображение в градациях серого, а не RGB, чтобы нам не приходилось беспокоиться о разных компонентах для каждого пикселя. (Процесс будет одинаковым для каждого компонента - нам просто нужно больше математики.) Вот значения яркости для изображения 5x5 с краем:
100 100 100 120 140
100 100 100 120 140
100 100 120 140 140
100 100 120 140 140
100 120 140 140 140
Прежде чем мы начнем, мы должны обсудить, как мы будем обрабатывать края. Есть несколько вариантов, но мы просто расширим изображение с тем же значением. Например, в верхнем правом углу мы будем использовать 120 для верхнего левого соседа и 140 для верхнего, верхнего правого, правого и нижнего правого соседей.
Применяя ядро к верхнему левому пикселю в нашем образце изображения, мы имеем:
100*0 + 100*-1 + 100*0 +
100*-1 + 100*5 + 100*-1 +
100*0 + 100*-1 + 100*0 +
, который работает до 4*-100 + 5*100 = 100
. Так что без изменений для этого первого пикселя. Давайте повторим процесс для всех остальных пикселей, и в результате получим ...
100 100 80 140 160
100 100 60 100 160
100 100 140 180 140
100 60 100 160 140
80 140 180 140 140
Вы можете видеть, что значения, при которых соседние пиксели похожи, в верхнем левом и нижнем правом углах операция не вносит никаких изменений. Однако в тех случаях, когда пиксели различаются, различия усиливаются: темные пиксели становятся еще темнее, а яркие пиксели становятся еще ярче.
Вы можете сами попробовать это на реальных изображениях, если у вас есть графический редактор, который позволяет вам предоставить собственную матрицу свертки. Например, в Photoshop команда Custom Filter дает матрицу 5x5 - просто отцентрируйте нашу матрицу 3x3 на 5x5 и оставьте неиспользуемые значения пустыми, либо установите их в 0 (это тоже самое).