Es fällt mir schwer, das Verzerrungsmodell von OpenCV zu verstehen . Sie verwenden "radiale" Koeffizienten und "tangentiale" Koeffizienten unter anderem, die mich nicht interessieren.
Um dies zu verstehen, habe ich die beiden Begriffe in was getrennt Offset sie produzieren, so sieht das aus :
Dann habe ich diese Werte als Vektorfeld mit Oktave geplottet (ähnlich wie Matlab).
function radialDistortion (k1, k2, k3)
max = 10;
[x, y] = meshgrid(-max:.5:max);
r2 = x.**2 + y.**2;
k = k1*r2 .+ k2*r2.**2 .+ k3*r2.**3;
quiver(x, y, x.*k, y.*k, 0);
axis("square");
endfunction
Mit angerufen
radialDistortion(0.0002, 0, 0)
ergibt folgendes
Ich verstehe, dies ist radial zur optischen Achse und somit punktsymmetrisch zum Zentrum (wo sich die optische Achse befindet). Das war nicht allzu schwierig.
function tangentialDistortion (p1, p2)
max = 10;
[x, y] = meshgrid(-max:.5:max);
r = x.**2 + y.**2;
xy = x.*y*2;
quiver(x, y, xy*p1 + (r+2*x.**2)*p2, xy*p2 + (r+2*y.**2)*p1, 0);
axis("square");
endfunction
Mit angerufen
tangentialDistortion(-.0007, .0007)
produziert diese
Wie ist das "tangential" zu irgendetwas? Für mich sieht es so aus, als würde es ein geneigtes Objektiv korrigieren (um die Diagonale von links unten nach rechts oben gedreht), was mit dem in der Literatur angegebenen Grund für diese Verzerrung übereinstimmt: Objektivfehlausrichtung.
Bedeutet das, dass es tangential zur Oberfläche der Linse ist?
Am Ende ist es ein mathematisches Modell, das ein optisches Phänomen beschreibt, um es zu korrigieren. Aber ich würde gerne verstehen, warum dies "tangential" genannt wird.
Wenn die Position von P' auch tangential relativ zu CP verschoben wird (entlang der Tangente an den Kreis mit Radius CP), wird die Verzerrung als tangential bezeichnet.
Nein, ist es nicht. Ich habe die obige Funktion geändert, um die "tangentiale" Verschiebung von Punkten anzuzeigen, die sich auf einem Kreis befinden.
function tangentialDistortionOnCircle (p1, p2)
radius = 10;
x = radius * cos(0:2*pi/20:2*pi);
y = radius * sin(0:2*pi/20:2*pi);
r = x.**2 + y.**2;
xy = x.*y*2;
quiver(x, y, xy*p1 + (r+2*x.**2)*p2, xy*p2 + (r+2*y.**2)*p1, 0);
axis([-radius-5 radius+5 -radius-5 radius+5 ], "square");
endfunction
Aufruf mit diesen Parametern:
tangentialDistortionOnCircle(.007, .007)
gibt dieses Ergebnis
Das sieht für mich überhaupt nicht nach einer Tangentialverschiebung aus. Wenn ja, würde es wie ein Wirbel um die Mitte aussehen. Aber das ist nicht der Fall.
Nehmen Sie die Position eines Punktes P auf dem Bild relativ zum geometrischen Bildmittelpunkt C. Nehmen Sie an, dass C in dem von der Linse erzeugten Bild unverzerrt bleibt, aber P zu P' verzerrt wird.
Wenn die Position von P' nur radial entlang der Richtung CP verzerrt ist, wird die Verzerrung als radial bezeichnet .
Wenn die Position von P' auch tangential relativ zu CP verschoben wird (entlang der Tangente an den Kreis mit Radius CP), wird die Verzerrung als tangential bezeichnet .
Siehe zum Beispiel „ Kamerakalibrierung mit Verzerrungsmodellen und Genauigkeitsbewertung “ (IEEE Transactions On Pattern Analysis And Machine Intelligence), insbesondere Fig. 2 & 3 (S. 968) und Fig. 4 (S. 969).
Die tangentiale Verzerrung korrigiert Neigungen der Bildebene nach der radialen Verzerrung. Stellen Sie sich subtile Herstellungsfehler vor, bei denen die optischen Elemente nicht mit der Abbildungsebene ausgerichtet sind. Tangentialkoeffizienten korrigieren diese Unvollkommenheit. Deshalb scheint es eine Rotation der Abbildungsebene zu sein. Das Nettoergebnis sowohl radialer als auch tangentialer Verzerrungen sollte ein Nadellochmodell sein, auf das Sie dann klassische intrinsische Parameter anwenden können, sobald Sie den Hauptpunkt gefunden haben.
Die einschlägigen Artikel über tangentiale Verzerrung enthalten Verweise, die bis zu Conradys Artikel von 1919 über "dezentrierte Linsensysteme" zurückreichen. In diesem Artikel spricht Conrady über Verzerrungen, die durch Dezentrierungsfehler eines Mehrelement-Linsensystems verursacht werden. Die meisten modernen Kameras haben Multi-Element-Objektive. Browns Papier aus den 1960er Jahren hat die Form, die wir heute in OpenCV sehen. Diese Gleichung modelliert fast einen geneigten Sensor mit Ausnahme der r-Quadrat-Terme, aber sie soll ein dezentriertes Linsensystem modellieren. Brown nennt es Decentering Distortion. Brown sagt dies in seinem Artikel: "Ein signifikanter Grad an Dezentrierung führt sowohl zu tangentialer Verzerrung als auch zu asymmetrischer radialer Verzerrung."
Null
udrv
Null
udrv
Null
udrv
Benutzer15741