quinta-feira, 26 de fevereiro de 2009

Convolução

O que é convolução? Aos que um dia estudaram análise funcional em matemática ou processamento de sinais e/ou processamento de imagens, estes um dia se perguntaram: "O que é convolução?" e hoje vamos, no retorno do Carnaval, tentar mostrar uma luz.

Vamos primeiro tomar uma função f(t) qualquer, f(t) pode ser um sinal de voz por exemplo.

Agora nós queremos analisar a semelhança entre f(t) e uma outra função h(t), em que h(t) é uma função conhecida. A medida de semelhança entre f(t) e h(t) deve ser definida para todo t, pois nós não sabemos em que ponto de f(t) passa a ser mais semelhante a h(t).

Agora que nós sabemos o que é preciso fazer, vamos ver como fazer.

Se nós temos uma função f(t), a função que mais se aproxima de f(t) é a própria f(t) (óbvio), então se nós passarmos a função f(t) sobre ela mesma e para cada defasagem (t - s) nós calcularmos a semelhança, teremos um máximo quando a defasagem for nula (s = 0).

Porém, se tomarmos a função f(t - a) (f(t) defasado, em atraso, de a), então ao passar f(t - a) sobre f(t), teremos a máxima semelhança quando a defasagem for tal que anule o atraso a (s = -a).

Agora, se a função for outra (h(t), previamente conhecida) nós não temos informação de como nem em que ponto a semelhança entre f(t) e h(t) ocorre.

Então precisamos fazer essa medição, e eu digo que essa medição de semelhança entre duas funções para cada instante t é a convolução entre f(t) e h(t).

Por fim, por que fazer a análise de semelhança entre duas funções?

Porque nós podemos precisar encontrar padrões, já conhecidos, em funções que possuímos. Voltando ao sinal de voz, nós podemos tentar localizar fonemas (padrões conhecidos) ao longo do sinal capturado.

--------------------
A função do Scilab que implementa a convolução é convol().

Nenhum comentário: