Цветное изображение, по сути, представляет собой три матрицы, каждая ячейка которой, описывает интенсивность цветов red, green и blue каждого пикселя.
Когда операцию свёртки нужно применить к цветному изображению, имеющему три цветовых слоя, фильтр должен также быть трёхслойным, при этом на выходе получается однослойное изображение:
Для вычисления значения каждого пикселя финальной картинки, каждый слой фильтра применяется к каждому слою исходного изображения, начиная с верхнего левого угла:
двигаясь шаг за шагом вправо и вниз:
Например, если нужно определять вертикальные границы только красного канала, набор слоёв фильтра может выглядеть вот так:
А если нужно определять вертикальные границы во всех каналах, то вот так:
Этот фильтр определяет вертикальные границы, а что делать, если нужно определять еще и горизонтальные? Все просто: нужно добавить еще один фильтр:
Если теперь взять два финальных изображения и сложить их вместе, на выходе получится двухслойная матрица:
В общем случае размерность финального изображения можно посчитать, воспользовавшись формулой:
\[n\times n\times n_c \ast f\times f\times n_c=(n-f+1)\times (n-f+1)\times n_c'\]Где \(n_c\) — это количество слоёв исходного изображения и количество слоев фильтра, а \(n_c'\) — количество слоёв финального изображения, равное количеству фильтров.