Borrar filtros
Borrar filtros

help in creating a loop

4 visualizaciones (últimos 30 días)
Mario
Mario el 7 de Jul. de 2024
Comentada: Umar el 14 de Jul. de 2024
Hi all,
I trying to correlate PIV images ( about 100 image). I used the below code that can correlate only the first 2 pair of images and I want to modify the loop so it can correlate the rest images. can somebody help me in modifying the loop?
for i= 1: 100;
for j= 1: 100;
max_correlation=0;
test_xmin=xgrid(i);
test_xmax=xgrid(j)+ 20 %w_width/2;
test_ymin=ygrid(i);
test_ymax=ygrid(j)+ 20 %w_width/2;
x_disp=0;
y_disp=0;
test_ima= Imagea(test_xmin:test_xmax, test_ymin:test_ymax);
test_imb= Imageb(test_xmin-x_disp_max:test_xmax+x_disp_max, test_ymin-y_disp_max:test_ymax+ y_disp_max);
correlation= normxcorr2(test_ima, test_imb);
[xpeak, ypeak]= find (correlation==max(correlation(:) ));
end
end
thanks in advance
  1 comentario
Walter Roberson
Walter Roberson el 8 de Jul. de 2024
for i= 1: 100;
for j= 1: 100;
max_correlation=0;
test_xmin=xgrid(i);
test_xmax=xgrid(j)+ 20 %w_width/2;
test_ymin=ygrid(i);
test_ymax=ygrid(j)+ 20 %w_width/2;
x_disp=0;
y_disp=0;
test_ima= Imagea(test_xmin:test_xmax, test_ymin:test_ymax);
test_imb= Imageb(test_xmin-x_disp_max:test_xmax+x_disp_max, test_ymin-y_disp_max:test_ymax+ y_disp_max);
correlation= normxcorr2(test_ima, test_imb);
[xpeak{i,j}, ypeak{i,j}]= find (correlation==max(correlation(:) ));
end
end

Iniciar sesión para comentar.

Respuesta aceptada

Umar
Umar el 8 de Jul. de 2024

Hi Mario,

Based on the provided code snippet, it seems like you are attempting to correlate PIV (Particle Image Velocimetry) images using a nested loop structure in MATLAB. To modify the loop to correlate all 100 PIV image pairs, you need to adjust the loop structure and indexing. The current code snippet provided runs nested loops for all image pairs but does not store or utilize the correlation results effectively. You can modify the loop as follows:

for i = 1:99

    for j = i+1:100
        max_correlation = 0;
        test_xmin = xgrid(i);
        test_xmax = xgrid(j) + 20;
        test_ymin = ygrid(i);
        test_ymax = ygrid(j) + 20;
        x_disp = 0;
        y_disp = 0;
        test_ima = Imagea(test_xmin:test_xmax, test_ymin:test_ymax);
        test_imb = Imageb(test_xmin - x_disp_max:test_xmax + x_disp_max, test_ymin - y_disp_max:test_ymax + y_disp_max);
        correlation = normxcorr2(test_ima, test_imb);
        [xpeak, ypeak] = find(correlation == max(correlation(:)));
        % Store or process correlation results here
    end
end

This modified loop structure ensures that each image pair is correlated exactly once, avoiding redundant calculations. Remember to include the necessary logic to store or process the correlation results as needed for your application.

If you encounter any issues or need further assistance, feel free to ask for more help!

  10 comentarios
Mario
Mario el 14 de Jul. de 2024
Hi Umar,
I am trying to implement two point correlation between PIV images using the pervious mentioned code. Can you advise me how can I dynamically adjust the size of the `correlation` matrix?
thanks in advance
Mario
Umar
Umar el 14 de Jul. de 2024
Hi Mario,
It is adjusted based on the dimensions of the images being compared (`test_ima` and `test_imb`). By calculating the appropriate size of the correlation matrix before computing the normalized cross-correlation.

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by