Ich möchte eine Frage über normalisierte Kreuzkorrelation stellen.Verschiebung zwischen 2 Bildern
, ja die Schritte der Berechnung der normalisierten Kreuzkorrelation (NCC) sind:
- Berechnung der FFT oder Faltungs
- Berechnung der lokalen Summen
Die Formel von NCC verfügbar ist in am Ende dieser Dokumentation https://fr.mathworks.com/help/images/ref/normxcorr2.html
Im ersten Schritt nahm ich (es ist ein Beispiel):
a =
0.4693 0.2015 0.3220 0.8843
0.9090 0.1872 0.7254 0.8845
0.6666 0.6917 0.4871 0.3952
0.1845 0.9348 0.2403 0.9641
b =
0.5244 0.0120 0.0678 0.8644
0.4334 0.1436 0.4166 0.7587
0.8684 0.7909 0.5884 0.9340
0.4638 0.0562 0.5183 0.6035
Dann a2 =
0.4693 0.2015 0.3220 0.8843 0 0
0.9090 0.1872 0.7254 0.8845 0 0
0.6666 0.6917 0.4871 0.3952 0 0
0.1845 0.9348 0.2403 0.9641 0 0
0 0 0 0 0 0
0 0 0 0 0 0
b2 =
0.5244 0.0120 0.0678 0.8644 0 0
0.4334 0.1436 0.4166 0.7587 0 0
0.8684 0.7909 0.5884 0.9340 0 0
0.4638 0.0562 0.5183 0.6035 0 0
0 0 0 0 0 0
0 0 0 0 0 0
I gefunden:
CONV2 (rot90 (A, 2), b)
am =
0.5055 0.1376 0.5584 0.9575 0.2733 0.8205 0.1595
0.6250 0.5028 1.2366 1.7782 1.0741 1.4291 0.7161
1.4722 1.6299 2.2702 4.1249 2.3243 2.0076 1.4637
1.6373 1.5220 2.8883 5.0546 3.0854 2.4246 1.8292
1.3345 1.8440 2.3115 4.0665 2.5920 1.8209 1.6073
1.1781 1.3650 1.5358 2.9240 1.3762 1.0484 0.9869
0.4101 0.1990 0.5698 0.9295 0.3251 0.3648 0.2832
CONV2 (rot90 (a2,2), b2)
am =
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0.5055 0.1376 0.5584 0.9575 0.2733 0.8205 0.1595 0 0
0 0 0.6250 0.5028 1.2366 1.7782 1.0741 1.4291 0.7161 0 0
0 0 1.4722 1.6299 2.2702 4.1249 2.3243 2.0076 1.4637 0 0
0 0 1.6373 1.5220 2.8883 5.0546 3.0854 2.4246 1.8292 0 0
0 0 1.3345 1.8440 2.3115 4.0665 2.5920 1.8209 1.6073 0 0
0 0 1.1781 1.3650 1.5358 2.9240 1.3762 1.0484 0.9869 0 0
0 0 0.4101 0.1990 0.5698 0.9295 0.3251 0.3648 0.2832 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
Also, Hinzufügen von Nullen wird nicht das Ergebnis der FFT/Faltung ändern. Aber nach der Berechnung lokaler Summen ändert sich das Ergebnis, weil es die Größe von a (oder a2) berücksichtigt. (normxcorr2(a,b)
unterscheidet sich von normxcorr2(a2,b2)
)
Wenn ich also die Verschiebung zwischen zwei Graustufen-Bilder unter Verwendung von Kreuzkorrelation berechnet werden soll, ist das Ergebnis nicht das gleiche, als wenn ich das Bild übersetzt (durch Auffüllen mit Nullen)
Could Sie erklären mir, warum sich die Verschiebung ändert, selbst wenn die Übersetzung (Padding) gleich ist?
Wie berechnen Sie 'a2' und' b2'? – m7913d
@ m7913d Ich pad 'a' und' b' von 'a2 = padarray (a, [2 2], 'post')' – ransa