Eu perguntei isso no Mathematics Stack Exchange, mas como esse tipo de problema está no limite das perguntas normalmente feitas lá e das perguntas que você vê aqui, eu também as faço aqui. (A partir de agora, não houve nenhuma atividade na minha pergunta por lá.)
Na análise bidimensional de sinais discretos (especificamente processamento de imagens), encontrei uma definição para a correlação cruzada normalizada entre duas imagens, ambas de tamanho e é:
Isso é supostamente executado pela função normxcorr2
na Caixa de Ferramentas de Processamento de Sinal no MATLAB, embora usando o algoritmo de correlação cruzada normalizada rápida de JP Lewis. Comparado ao método de Correlação de Fase (com espectro de potência cruzada normalizado) sugerido por Kuglin e Hines:
Sem a normalização por elementos antes da transformação inversa de Fourier, é o mesmo que a correlação cruzada não normalizada, com a exceção de que a transformada de Fourier assume que o sinal se repete no domínio espacial. É claro que olhando para a correlação resultante "imagens" no MATLAB, que eu esperava, mas quase parece descontínuo das imagens em que estou testando o método, enquanto sempre fica muito mais suave (o resultado as imagens são sempre "irregulares", não são). Por que é isso? Suponho que tenha algo a ver com a normalização por elementos no domínio de Fourier, que eu suponho que seja basicamente como cortar o sinal de alguma maneira, mas não sei como concluir isso a partir de quaisquer propriedades conhecidas do inverso. Transformação de Fourier, se essa é mesmo uma suposição correta.
Aqui estão exemplos das diferenças (foi amplificado para mostrar mais claramente a diferença nas características das imagens). Eles são executados nas mesmas 2 imagens.
- : Correlação cruzada normalizada
- : Correlação de fase
Resumindo minha pergunta: por que tão "irregular", enquanto não é?
r2
, tente rebaixarg1
eg2
primeiro aplique offt
.r1
er2
deve ser o mesmo. um para o domínio espacial e o outro para o domínio da frequência, mas equivalente, exceto uma normalização pelas normas.Respostas:
Me deparei com esse enigma em um caso unidimensional, que é como vou apresentá-lo. Considere dois sinais que você deseja correlacionar. O sinal 1 (figura a) é uma onda senoidal amortecida e o sinal 2 (figura b) é duas instâncias do sinal 1, mas com amplitudes ligeiramente diferentes.
Agora considere usar uma correlação cruzada normalizada, conforme definido em sua pergunta (figura c). O resultado é uma função de oscilação suave que possui uma amplitude de pico quando o pico do sinal 1 e o pico do sinal 2 estão alinhados. Por outro lado, a função de correlação cruzada normalizada possui vales quando o pico do sinal 1 se alinha com os vales do sinal 2 .
Em seguida, considere usar uma correlação de fase, conforme definido em sua pergunta (figura d). Uma correlação de fase envolve uma divisão do valor absoluto (ou amplitude) dos dois sinais. Em um caso 1D que é um vetor e em um caso 2d, como sua pergunta é, isso é uma matriz. Em ambos os casos, os valores nesse divisor podem estar muito próximos de zero e quando você divide por algo próximo de zero, obtém picos ou descontinuidades .
Existem várias estratégias em torno disso e incluem filtro passa-baixo dos sinais de entrada ou da função correlacionada de fase. Esta página no estouro de pilha pode ser útil: /programming/30630632/performing-a-phase-correlation-with-fft-in-r
fonte