2009-11-08 5 views
5

Sto cercando di utilizzare normxcorr2 (normalized cross-correlation) da MATLAB per calcolare la velocità delle forme in movimento in un embrione in via di sviluppo. Ho 3 domande:Nozioni di base sulla correlazione incrociata normalizzata

1) La mia dimensione dell'immagine è 260x360 pixel. Fornisco una dimensione del modello di 10x10 pixel e chiedo al comando di cercare questo modello nel frame successivo in una finestra di ricerca di 50x50 pixel. Ricevo una matrice di correlazione di dimensioni 59x59. Questo significa che il comando sposta il modello pixel per pixel all'interno della finestra di ricerca alla ricerca della migliore correlazione. Destra?

2) Ogni valore nella matrice di correlazione rappresenta una matrice modello nella finestra di ricerca. Destra?

3) Dire che ottengo un massimo alla 10a riga e alla 16a colonna nella matrice di correlazione. Ciò significa che il modello migliore correlato si trova nella decima matrice nella direzione y e nella 16a matrice nella direzione x nell'immagine. Destra?

risposta

4

per illustrare l'uso di normxcorr2, si consideri il seguente esempio (adattato da this page)

%# Make light gray plus on dark gray background 
template = 0.2*ones(11); 
template(6,3:9) = 0.6; 
template(3:9,6) = 0.6; 
BW = single(template > 0.5);   %# Make white plus on black background 
imtool(template, 'InitialMagnification','fit') 

%# Make new image that offsets the template 
offsetTemplate = 0.2*ones(81); 
offset = [30 50];     %# Shift by 30 rows, 50 columns 
offsetTemplate((1:size(template,1))+offset(1), ... 
       (1:size(template,2))+offset(2)) = template; 
imtool(offsetTemplate, 'InitialMagnification',400) 

%# Cross-correlate BW and offsetTemplate to recover offset 
cc_norm = normxcorr2(BW, offsetTemplate); 
imtool(cc_norm, 'InitialMagnification',400) 
[max_cc_norm, imax] = max(abs(cc_norm(:))); 
[ypeak, xpeak] = ind2sub(size(cc_norm), imax(1)); 
corr_offset = [ (ypeak-size(template,1)) (xpeak-size(template,2)) ]; 

fprintf('Input offset: %d,%d\nRecovered offset: %d,%d\n', offset, corr_offset)