Intuição para convolução no processamento de imagens

9

Eu li muitos documentos sobre convolução no processamento de imagens e a maioria deles diz sobre sua fórmula, alguns parâmetros adicionais. Ninguém explica a intuição e o verdadeiro significado por trás da convolução em uma imagem. Por exemplo, a intuição de derivação no gráfico é mais linear, por exemplo.

Penso que um resumo rápido da definição é: convolução é multiplicada por sobreposição quadrada entre imagem e núcleo, depois dessa soma novamente e a ancora. E isso não faz nenhum sentido comigo.

De acordo com este artigo sobre convolução , não consigo imaginar por que a convolução pode fazer algumas coisas "inacreditáveis". Por exemplo, detecção de linha e aresta na última página deste link. Basta escolher o kernel de convolução apropriado para obter bons efeitos (detectar linha ou detectar arestas).

Alguém pode fornecer alguma intuição (não precisa ser uma prova clara) de como isso pode ser feito?

hqt
fonte

Respostas:

13

Penso que a maneira mais simples de pensar em Convolution é como um método de alterar o valor de um pixel para um novo valor com base no peso dos pixels próximos.

É fácil ver por que o Box Blur:

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

trabalho. Envolver esse kernel é o mesmo que percorrer todos os pixels de uma foto e tornar o novo valor do pixel a média de si mesmo e dos oito pixels adjacentes.

Se você conseguir isso, poderá ver por que o Gaussian Blur funciona:

_____________________
|.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|
---------------------

É basicamente a mesma coisa, exceto que a média é mais fortemente ponderada em pixels mais próximos. A função que define a rapidez com que os pesos caem à medida que você se afasta é a Função Gaussiana , mas você não precisa conhecer os detalhes da função para usá-la para desfocar.

O kernel de detecção de borda no artigo vinculado faz sentido se você o observar por tempo suficiente também:

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

É basicamente dizer que o valor de qualquer pixel começa em 8/9 do seu valor original. Você subtrai os valores de cada pixel ao redor para chegar ao seu novo pixel.

Portanto, se o valor de um pixel é alto e o valor dos pixels ao redor também é alto, eles se cancelam. Se o valor do pixel for baixo e todos os pixels ao redor também forem baixos, eles também serão cancelados. Se o valor do pixel for alto e o valor dos pixels ao redor dele for baixo (como em um pixel na borda de um objeto), o novo valor do pixel será alto.

Brian
fonte
6

Uma maneira de pensar sobre convolução / correlação cruzada é como se você estivesse procurando algum sinal em seus dados. Quanto mais os dados se parecerem com o kernel, maior será o valor resultante. Na verdade, eu tomo o inverso do kernel, ou seja, como na correlação cruzada, mas é basicamente a mesma coisa.

Por exemplo, digamos que você esteja procurando uma etapa direcional nos seus dados 2D.

O kernel pode ser

[-1 1]

e vamos aplicar isso aos dados

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

O resultado será

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

Que detecta a localização da etapa. Um passo maior daria um valor maior.

Isso funciona porque quando você multiplica um padrão pelo que aparece no kernel, obtém um valor alto.

A detecção de borda (ou qualquer outra detecção de padrão) funciona da mesma maneira, por exemplo, com o kernel

[-1 2 -1]

Extensões para dimensões mais altas também podem ser pensadas dessa maneira.

Isso deve lhe proporcionar intuição, pelo menos, sobre algumas das aplicações do processamento de imagens por convolução.

Bit a bit
fonte
4

Se você acha que a convolução é um pouco difícil de entender, recomendo que você comece a pesquisar sobre Morfologia Matemática aplicada ao processamento de imagens, a grande idéia por trás da Morfologia Matemática é que você fará uma operação muito próxima à convolução, para "alterar" o morfologia da imagem, mas retenha as informações da topologia, dessa forma, você pode criar uma imagem de um humano em pé, um esqueleto, que é praticamente um humano em bastão, tente aplicar a operação de erosão, depois dilate a operação e vá para o campo aberto / operação de fechamento, você começará a entender o que uma máscara aplicada a cada pixel da imagem pode fazer e como elas podem ser usadas em um grande cenário para obter ótimos resultados (como encontrar um local para começar algo usando a última erosão), uma vez você entende a morfologia matemática, a convolução é um pouco mais difícil,porque é baseado em cálculo e definido após a integração, mas ainda assim é fácil entender muita convolução, como desfoque médio, desfoque gaussiano, nitidez, detecção de borda, laplace, gradiente etc.

H_DANILO
fonte