Проще говоря, операция свертки представляет собой комбинацию поэлементного произведения двух матриц. Пока эти две матрицы совпадают по размерам, проблем не должно быть, и поэтому я могу понять мотивацию вашего запроса.
A.1. Однако целью свертки является кодирование матрицы исходных данных (всего изображения) в терминах фильтра или ядра. Более конкретно, мы пытаемся кодировать пиксели в окрестности пикселей привязки / источника. Посмотрите на рисунок ниже: как
правило, мы рассматриваем каждый пиксель исходного изображения как пиксель привязки / источника, но мы не обязаны делать это. На самом деле, нередко включать шаг, где якорь / исходные пиксели разделены определенным количеством пикселей.
Итак, каков исходный пиксель? Это точка привязки, в которой центрируется ядро, и мы кодируем все соседние пиксели, включая пиксель привязки / источника. Поскольку ядро имеет симметричную форму (не симметричную по значениям в ядре), имеется одинаковое количество (n) пикселей со всех сторон (4-связность) пикселя привязки. Поэтому, каким бы ни было это количество пикселей, длина каждой стороны нашего ядра симметричной формы составляет 2 * n + 1 (каждая сторона якоря + пиксель якоря), и, следовательно, фильтр / ядра всегда имеют нечетные размеры.
Что если мы решили порвать с «традицией» и использовать асимметричные ядра? Вы будете страдать от ошибок псевдонимов, и поэтому мы этого не делаем. Мы считаем пиксель самой маленькой сущностью, то есть здесь нет подпиксельной концепции.
А.2. Граничная проблема решается с использованием разных подходов: некоторые игнорируют ее, некоторые обнуляют ее, некоторые отражают ее. Если вы не собираетесь вычислять обратную операцию, то есть деконволюцию, и не заинтересованы в идеальной реконструкции исходного изображения, то вам нет дела до потери информации или введения шума из-за проблемы с границами. Как правило, операция объединения (среднее или максимальное объединение) в любом случае удалит ваши граничные артефакты. Поэтому не стесняйтесь игнорировать часть своего «поля ввода», ваша операция объединения сделает это за вас.
-
Дзен свертки:
В области обработки сигналов старой школы, когда входной сигнал был свернут или пропущен через фильтр, не было возможности заранее определить, какие компоненты свернутого / отфильтрованного ответа были релевантными / информативными, а какие - нет. Следовательно, целью было сохранить компоненты сигнала (все это) в этих преобразованиях.
Эти компоненты сигнала являются информацией. Некоторые компоненты более информативны, чем другие. Единственная причина этого заключается в том, что мы заинтересованы в извлечении информации более высокого уровня; Информация, относящаяся к некоторым семантическим классам. Соответственно, те компоненты сигнала, которые не предоставляют информацию, в которой мы заинтересованы, могут быть исключены. Поэтому, в отличие от догм старой школы о свертке / фильтрации, мы свободны объединять / сокращать реакцию свертки, как нам хочется. Мы стремимся к тому, чтобы тщательно удалить все компоненты данных, которые не способствуют улучшению нашей статистической модели.