Como encontrar o kernel de convolução no domínio da frequência?


12

Eu tenho dois vetores de dados espaciais (cada um com cerca de 2000 elementos de comprimento). Um é uma versão complicada do outro. Estou tentando determinar o kernel que produziria tal convolução. Eu sei que posso fazer isso encontrando a transformação inversa de Fourier da razão das transformadas de Fourier dos vetores de saída e de entrada. De fato, quando faço isso, tenho mais ou menos a forma que estava esperando. No entanto, meu vetor de kernel tem a mesma dimensionalidade que os dois vetores de entrada quando, na realidade, a convolução usava apenas cerca de um quinto (~ 300-400) dos pontos. O fato de estar tendo a forma correta, mas o número errado de pontos me faz pensar que não estou usando as funções ifft e fft corretamente. Parece que se eu estivesse realmente fazendo a coisa certa, isso deveria acontecer naturalmente. No momento estou simplesmente fazendo;

FTInput = fft(in); 
FtOutput = fft(out);
kernel = ifft(FtOutput./FTInput).

Isso está correto e cabe a mim interpretar o vetor de saída corretamente ou simplifiquei demais a tarefa? Tenho certeza que é o último, só não sei onde.


2
Seus dados de entrada são preenchidos com zero em ambos os lados ao comprimento do kernel de convolução? Deveria ser, caso contrário, você perderá informações lá, o que pode ser o motivo desses artefatos.
leftaroundabout

Respostas:


5

Se houver ruído presente no seu sinal, a divisão direta do domínio Fourier causará muitos erros no seu resultado. Algumas maneiras de evitá-lo são usar a chamada FFT de canal duplo ( Parte 1 e Parte 2 ). Também posso sugerir a desconvolução por meio de filtros adaptativos, em especial os filtros LMS ou NLMS ([Normalized] Least Mean Squares), que são fáceis de entender e não são extremamente caros em termos de ciclos de CPU, caso seus sinais sejam longos. Os filtros adaptativos LMS são muito robustos ao ruído.


Isso funcionou muito bem, e eu descobri um novo tipo de coisa que eu não sabia que existia.
Bowler

@Phonon esses links estão funcionando? O que é isso exatamente para se inscrever?
Spacey

@Mohammad: É para acessar artigos e livros de revisão técnica da Brüel & Kjær. A inscrição é gratuita e dá acesso a muitos bons artigos.
Thor
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.