Цветное изображение, по сути, представляет собой три матрицы, каждая ячейка которой, описывает интенсивность цветов 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'\) — количество слоёв финального изображения, равное количеству фильтров.