Correlação de fase vs. correlação cruzada normalizada

8

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 M×N g1(x,y) e g2(x,y) é:

r1=(g1g2)(x,y)Normalized=m=0M1n=0N1[g1(m,n)g1¯][g2(x+m,y+n)g2¯]m=0M1n=0N1[g1(m,n)g1¯]2[g2(x+m,y+n)g2¯]2

Isso é supostamente executado pela função normxcorr2na 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:

G1(u,v)=F{g1(x,y)}G2(u,v)=F{g2(x,y)}r2=F1{G1(u,v)G2(u,v)|G1(u,v)G2(u,v)|}

Sem a normalização por elementos antes da transformação inversa de Fourier, r2é 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 quer1r2 olhando para a correlação resultante "imagens" no MATLAB, que eu esperava, mas r2 quase parece descontínuo das imagens em que estou testando o método, enquanto r1 sempre fica muito mais suave (o resultado r2 as imagens são sempre "irregulares", r1nã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 (r2foi amplificado para mostrar mais claramente a diferença nas características das imagens). Eles são executados nas mesmas 2 imagens.

  • r1: Correlação cruzada normalizada

insira a descrição da imagem aqui

  • r2: Correlação de fase

insira a descrição da imagem aqui

Resumindo minha pergunta: por que r2 tão "irregular", enquanto r1 não é?

Eric
fonte
11
Considere fazer sua pergunta em um site, pois a postagem cruzada não é bem recebida no SE. Leia aqui
Gilles
Obrigado por apontar isso, eu não sabia que isso era desaprovado aqui. No entanto, estou em conflito. Não sei qual site (dos dois) seria o mais apropriado. No seu link, a resposta principal diz que "Muitas perguntas que as pessoas rotularam como aplicáveis ​​entre sites provaram ser válidas em um único site, se escritas corretamente e pensadas". Não sei como tornar minha pergunta mais adequada para um site ou outro sem simplesmente reter informações. A única opção em que posso pensar é excluí-lo de um site e mudar para o outro, o que parece uma solução estranha.
Eric
para r2, tente rebaixar g1e g2primeiro aplique o fft. r1e r2deve 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.
26718 Lee

Respostas:

1

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.

insira a descrição da imagem aqui

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

Alex Witsil
fonte