Интуиция для свертки в обработке изображений


9

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

Я думаю, что краткое изложение определения таково: свертка умножается на квадрат пересечения между изображением и ядром, после этой суммы снова и помещается в якорь. И это не имеет никакого смысла со мной.

Согласно этой статье о свертке, я не могу себе представить, почему свертка может делать некоторые «невероятные» вещи. Например, обнаружение линии и края на последней странице этой ссылки. Просто выберите подходящее ядро ​​свертки, чтобы получить хорошие эффекты (обнаружить линию или обнаружить край).

Может ли кто-нибудь предоставить некоторую интуицию (не нужно быть аккуратным доказательством) о том, как он может это сделать?

Ответы:


13

Я думаю, что самый простой способ думать о Convolution - это метод изменения значения пикселя на новое значение, основанное на весе соседних пикселей.

Легко понять, почему Box Blur:

_____________
|1/9|1/9|1/9|
|1/9|1/9|1/9|
|1/9|1/9|1/9|
-------------

работает. Свернуть это ядро ​​- все равно, что пройти через каждый пиксель фотографии и сделать новое значение пикселя средним для себя и для восьми окружающих пикселей.

Если вы получите это, вы увидите, почему работает Gaussian Blur:

_____________________
|.01|.04|.07|.04|.01|
|.04|.16|.26|.16|.04|
|.07|.26|.41|.26|.07|
|.04|.16|.26|.16|.04|
|.01|.04|.07|.04|.01|
---------------------

Это в основном то же самое, за исключением того, что усреднение более сильно взвешено по отношению к пикселям, которые находятся ближе. Функция, которая определяет, насколько быстро падают веса при перемещении дальше, является функцией Гаусса , но вам не нужно знать детали функции, чтобы использовать ее для размытия.

Ядро обнаружения краев в связанной статье имеет смысл, если вы смотрите на него достаточно долго:

__________
|-1|-1|-1|
|-1|.8|-1|
|-1|-1|-1|
----------

По сути, это говорит о том, что значение любого пикселя начинается с 8/9 от его первоначального значения. Затем вы вычитаете значения каждого пикселя вокруг него, чтобы получить новый пиксель.

Поэтому, если значение пикселя высокое, а значение пикселей вокруг него также велико, они взаимно компенсируют друг друга. Если значение пикселя низкое и все пиксели вокруг него также низки, они также взаимно компенсируют друг друга. Если значение пикселя высокое, а значение пикселей вокруг него низкое (как в пикселе на краю объекта), новое значение пикселя будет высоким.


6

Один из способов думать о свертке / кросскорреляции, как если бы вы искали какой-то сигнал в ваших данных. Чем больше данные выглядят как ядро, тем выше будет полученное значение. Я фактически беру обратную сторону ядра, то есть как в кросс-корреляции, но это в основном то же самое.

Например, предположим, что вы ищете направленный шаг в ваших 1d данных.

Ядро может быть

[-1 1]

и давайте применим это к данным

[2 2 2 2 2 1 1 1 1 1]

Результат будет

[0 0 0 0 0 1 0 0 0 0]

Который определяет местоположение шага. Чем больше шаг, тем больше ценность.

Это работает, потому что когда вы умножаете паттерн на тот, который появляется в ядре, вы получаете высокое значение.

Обнаружение края (или любое другое обнаружение образца) работает так же, например, с ядром

[-1 2 -1]

Расширения в более высокие измерения также могут быть рассмотрены таким образом.

Это должно дать вам интуицию, по крайней мере, о некоторых приложениях обработки сверточных изображений.


4

Если вы думаете, что свертка слишком сложна для понимания, я рекомендую вам начать поиск по математической морфологии, применяемой к обработке изображений. Основная идея математической морфологии заключается в том, что вы будете выполнять операцию, очень близкую к свертке, чтобы «изменить» морфологию изображения, но сохраняя информацию о топологии, таким образом, вы можете сделать изображение стоящего человека, скелета, который довольно похож на человека-палку, попробуйте применить операцию эрозии, затем расширить операцию, а затем перейти к открытой Операция / close, вы начнете понимать, на что способны маски, примененные к каждому пикселю изображения, и как их можно использовать в большом сценарии для достижения отличных результатов (например, поиска точки для начала чего-либо с использованием последней эрозии), один раз Вы понимаете математическую морфологию, свертка немного сложнее,потому что он основан на исчислении и определен после интегрирования, но, тем не менее, многие свертки легко понять, такие как медианное размытие, размытие по Гауссу, резкость, обнаружение краев, Laplace, градиент и т. д.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.