Optische Verzerrungen in Formeln

Hallo,
ich tue mich gerade schwer die Abbildungen wie sie bei Verzerrungen wie Kissen- und Tonnenverzerrung auftreten mathematisch zu beschreiben.
(siehe http://www.bv-loesungen.de/support/tech_resources/distortion.php )
Eigentlich brauche ich die inverse Abbilung aber das ist egal. Irgendwie fehlt mit glaube ich der richtige Ansatz.
Kann mir jemand da auf die Sprünge helfen? Noch besser wäre ein Link zu einer umfassenden Formelsammlung. So etwas habe ich auch nicht gefunden.
Gruß Thomas
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Moin,
Thomas Thiele schrub:

http://www.bv-loesungen.de/support/tech_resources/distortion.php )
Solche Verzerrungen können viele Ursachen haben. Linsenfehler im Objektiv sind da zuallererst mal zu nennen. Sowas berechnet man aber nicht analytisch. Es gibt analytische Rechenwege um Objektive zu beschreiben, aber die können nicht die Verzerrungen darstellen. Wenn man sowas rechnet, rechnet man das Objektiv quasi mit Methoden durch, die man aus dem Bereich Raytracing kennt. Da werden die Linsen dann in ihrer exakten Form eingegeben und jeder Lichtstrahl wird einzeln berechnet. Das funktioniert natürlich in beide Richtungen. Ein Objektiv optimieren passiert dann iterativ.
Suchst du vielleicht einfach nur eine Abbildungsvorschrift, die zu ähnlichen Ergebnissen führt, wie übliche Bildverzerrungen das tun? Tcha... denk dir was aus:-)
Vorschlag: _neu = Koordinaten des Punktes nach der Verzerrung _alt = ...vor der Verzerrung. Das Bild liegt mit seinen Koordinaten im Wertebereich x=[-1...1] und y=[-1...1]
Dann: x_neu = x_alt*(1+a_x*y_alt^2) y_neu = y_alt*(1+a_y*x_alt^2)
a_x/a_y sind Koeffizienten, die das Maß der Verzerrung angeben. Können positiv oder negativ sein. Diese Verzerrung ergibt ein Bild, dessen Ränder Parabeln sind, entweder nach innen oder nach außen gebogen. Für kleine Verzerrungen sollte die Transformation dadurch umkehrbar sein, dass man einfach das Vorzeichen der a_x/a_y umkehrt.
CU Rollo
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Ja.
Auch natrlich die Umkehrung.

Hmm...quadratisch. Muss ich mal ausprobieren. Ich hatte mal ein Ansatz mit einem vom Radius anhngigen Abbildungsmasstab was auch auf quadratisch hinauslief aber nicht ganz so aussah. Egal, vergebliche Anstze tun nichts zur Sache...;-)

Aber das ist doch jetzt nicht das was Linsen machen. Ich hatte eigentlich gehofft dass man die Abbildungsfehler analytisch herleiten kann. Auch chromatische Aberration z.B.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Moin,
Thomas Thiele schrub:

War auch nur mal so dahin getippt. Irgendsowas in der Art halt.

Bilde mal den Schnittpunkt zwischen einem Lichtstrahl und einer Kugelfläche. Aus dem Ergebnis bekommst du den Einfallswinkel, daraus den Winkel, unter dem der Lichtstrahl durch das Glas der Linse geht. Daraus kannst du dann errechnen, wo er die andere Seite der Linse trifft und unter welchem Winkel und daraus dann unter welchem Winkel er dann die anderen 3..10 Linsen des Objektives trifft. Analytisch? Nee....
Vielleicht hilft das ja weiter:
http://www.winlens.de /
Vermutlich aber nicht.
CU Rollo
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
X-No-Archive: Yes
begin quoting, Thomas Thiele schrieb:

Ich zieh mir da jetzt einfach was aus der Lameng ...
Sei r' der Radius (hsabstand) des Punktes in der Abbildung und r der im Original, dann ist grundsätzlich
r' = f(r)
eine ziemlich beliebige, streng monoton steigende stetig differenzierbare Funktion mit f(0) = 0.
Für eine verzerrungsfreie Abbildung gilt
r' = c * r
(die Umkehrabbildung ist trivial).
Betrachtet man als Urbild ein konzentrisches Quadrat, dann sind bei einer kissenförmigen Verzerrung die Spitzen gestreckt und bei einer tonnenförmigen Verzerrung gestaucht, was bedeutet, daß
f"(r) > 0 für kissenförmige \ | und > Verzerrungen | f"(r) < 0 für tonnenförmige /
Es bietet sich jetzt an, die tatsächliche Abbildung durch ein geschätztes f mit f" = const. zu approximieren (das dürfte für viele Zwecke hinreichend genau sein):
r' = c * (r + d*r^2)
mit
f"(r) = 2 * c * d = const.
Die Umkehrabbildung ist etwas eklig, läßt sich aber für d << 1 auch mit der gleichen Funktion approximieren:
r != f*(r') = c'*(r' + d'*r'^2) = c'*(f(r) + d'*(f(r))^2) = c'*(c*(r + d*r^2) + d'*(c*(r + d*r^2))^2) = c'*(c^2*d^2*d'*r^4 + 2*c^2*d*d'*r^3 + (c^2*d'+c*d)*r^2* + r*c)
Das wird approximativ gelöst durch c' = 1/c , d' = -d/c , wobei der restliche Fehler dr dann
dr = (2 + d*r) * d^2 * r^3
beträgt.
(Eine besser approximierende Umkehrabbildung für ein kreisförmiges Bild mit dem Radius, das dr im quadratischen Mittel minimiert, erhält man durch die Wahl
c'=7*(300*d^5*x^5+1630*d^4*x^4+3420*d^3*x^3+3456*d^2*x^2+1680*d*x+315)/[c*(960*d^6*x^6+6720*d^5*x^5+19600*d^4*x^4+30240*d^3*x^3+25956*d^2*x^2+11760*d*x+2205)], d'=-3*d*(60*d^3*x^3+234*d^2*x^2+280*d*x+105)/[c*(300*d^5*x^5+1630*d^4*x^4+3420*d^3*x^3+3456*d^2*x^2+1680*d*x+315)])
Wenn's genauer sein soll, muß man f dadurch bestimmen, daß man eine möglichst gute approximierende Funktion an gemessene Abbildungspunkte zu ermitteln versucht.
(Die triviale Polarkoordinatentransformation habe ich nicht erwähnt.)
Gruß aus Bremen Ralf
--
R60: Substantive werden groß geschrieben. Grammatische Schreibweisen:
adressiert Appell asynchron Atmosphäre Autor bißchen Ellipse Emission
  Click to see the full signature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

[...]
Da es wohl um optische Systeme geht: Vielleicht weiß ja jemand in de.rec.fotografie wie man da herangeht?
cu, Thomas
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here. All logos and trade names are the property of their respective owners.