Hallo Leuts,
Fangen wir mal mit dem Moralischen an ...(Wort zum Sonntag )
Was soll das Posting?
Ich nehme mir diesmal (und auch NUR diesmal) etwas mehr Zeit, weil mir
in letzter Zeit aufgefallen ist, wie unsachlich die Diskussionen in Sachen Beugung
verlaufen.
Ein gutes Beispiel was ich meine, ist Kurts Posting da:
http://www.astrotreff.de/topic.asp?TOPIC_ID=4123
Kurt beleiht da ein Programm, von dessen Funktion er leider gar nichts weiss.
Seine Hoffnung dabei ist:
1) Der der's geschrieben hat war hoffentlich wesentlich klueger als er selber und
wird's schon richtig machen.
2) Der der's geschrieben hat, hatte offensichtlich genau das im Sinn, was der Kurt
damit vorhat. Er will aus diesem Vergleich quantitative Ergebnisse herausmelken.
Bleibt zu hoffen, dass das Programm diese auch ausspuckt und nicht nur fuer eher
qualitative Veranschaulichungen gedacht war.
Machen wir mal einen kleinen Test, wie genau da die Realitaet modelliert wird:
Da ist ein Teleskop also zu 60% abgedeckt und trotzdem sind beide Bilder gleich
hell, obwohl z.B. bei einem 8"er das zu 60% abgedeckte Telekop gerade mal 64% des
Lichts einlaesst (hoffentlich jetzt nicht verrechnet).
Schon mal recht interessant.
Also wird da irgendwo schon mal an der Helligkeit gedreht.
Nun wuerde ich den Kurt gerne fragen: Was hast Du denn nun genau gemacht?
Aber das Problem ist, er weiss es leider auch nicht so genau, schliesslich
hat's Abberator so ausgespuckt, oder er hat ja noch etwas Photogeshoppt.
Womit der sachliche Austausch dann ja bereits beendet waere, denn ab jetzt gibt's
zwei Moeglichkeiten:
1) Ich kann's glauben.
2) Ich kann's nicht glauben.
Und an der Stelle sag' ich normalerweise, was soll's dann ueberhaupt?
Und genau so ging es mir das in den Foren etwa zwei Jahre lang, bevor ich es dann
so langsam satt hatte, wie in der Kirche an Sachen und Behauptungen zu glauben
(oder eben nicht) und mal angefangen habe, ein Buch aufzumachen und die ein oder
andere Sache mal nachzulesen und dann ganz schuechtern mal angefangen habe, auch
selber durchzurechnen.
Seit dem - wenn mich eine Frage interessiert - bringe Ich ab und an meine eigenen
Argumente und meine Schluesse daraus im Forum.
Manchmal sind sie richtig, manchmal sind sie falsch.
Das ist uebrigens gar nicht so extrem entscheidend, viel wichtiger ist, dass man
am Ende lernt <b>WAS</b> denn eigentlich schief/richtig gelaufen ist, damit
man beim naechsten Mal nicht <b>glauben</b> muss, sondern sagen kann, tja, dass
habe ich inzwischen verstanden.
Und am Ende lernt man dann was.
Das bringt mich allerdings auch zu einer persoenlichen Beobachtung, die mir
etwas missfaellt.
Ein kleiner Nebeneffekt der Tatsache, dass man seine Argumente selber schmiedet
ist naemlich, dass man damit den <b>Glaeubigen</b> die immer alles unreflektiert
nachplappern, naemlich immer oefter einen Schritt voraus ist.
Die muesen immer die Argumente der anderen bemuehen ("Mein grosser Bruder sagt
aber, dass ...") und daraus ihr second hand Garn spinnen.
Was soll mir daran missfallen, ist doch deren Bier?
Na ja, nun gibt es leider wesentlich weniger Leute, die sich eine (fuer sie)
interessante Frage so weit interessieren, dass sie ihr eigenes Gehirn erst mal
anschmeissen, als Leute, die fuer jedes Problem erst mal die Suchmaschine
anschmeissen (man spricht inzwischen vom "Google Effekt": irgendwo
wird's schon einer loesen/geloest haben) und irgendein Zitat ausbuddeln.
Das hat leider den Nebeneffekt, dass man, wenn man Spass am lauten Denken hat,
sich ziemlich schnell an die Spitze der Gruppe von Leuten vorarbeitet, die sehr
oft zitiert, aber leider viel zu selten hinterfragt werden.
Tja, die Glaeubigen bauen sich dann einen Optik-Papst auf - egal ob er Wolfgang,
Kurt, Stathis oder - Gott moege mich davor bewahren - Mario heisst.
Der wird dann verehrt.
Und ob er will oder nicht, irgendwann - wenn's nicht ein ganz gefestigter
Charakter ist - steigt's ihm zu Kopf und er lehnt sich etwas weit aus dem Fenster.
Und irgendwann faellt er dann raus ...
Und weil im Menschen nun auch das Boese seinen Platz hat, sieht man die Stolzen
andererseits auch ganz gerne fallen und so bekommen nicht wenige dann einen kleinen
Schubs zum Nachhelfen.
Das mal so allgemein gesagt gesagt nun zu mir persoenlich:
Ich habe mit Entsetzen festgestellt, dass z.B. da
loesch_mich_http://forum.astronomie.de/phpapps/ubbthreads/showflat.php?Cat=&Board=optik&Number=81392&page=0&view=collapsed&sb=5&o=&fpart=1
<b>ueber</b> meine Argumente und Darstellungen gestritten wird, als ginge es darum das
Wort Moses zu deuten, dass allerdings keiner der zum Teil zu Recht kritischen Geister
den Mumm hatte, die mit mir im urspruenglichen Thread zu diskutieren, wo man das
haette machen <b>muessen</b>, denn dort waeren sie (im konstruktiven Sinn)
korregierbar gewesen, oder, falls ich recht habe, Zweifel haetten ausgeraeumt werden
koennen.
Ich weiss nicht ob ihr nachvollziehen koennt, was fuer ein mulmiges Gefuehl mich da
beschlichen hat...
Man redet nicht mehr <b>mit</b> den Leuten, sondern die Leute reden <b>ueber</b> meine Reden.
Als Konsequenz aus dieser recht seltsamen Erfahrung hatte ich mir Folgendes ueberlegt:
Das wichtigste, um das falsche Auftauchen von Optikpaepsten zu verhindern sind
kritische Geister wie z.B. der Tom Licha, die auch mal den Mumm haben klipp und klar
zu sagen: "Ist mir egal welchen Ruf der geniesst, ich kann seine Argumente nicht
nachvollziehen."
Daher war ich ihm letztendlich sehr dankbar.
Mein Plan war es, mit etwas Theorie und etwas Rechenpraxis erst mal eine Grundlage zu
schaffen, damit man auf Augenhoehe miteinander diskutieren kann.
Dazu wollte ich mir etwas Zeit nehmen, denn das geht nicht so Knall aus Fall, aber
der Kurt ist mir hier mit seinem vorschnellen Posting in die Parade gefahren, auf
Astronomie.de geht's auch ab und jetzt besteht irgendwie Zugzwang und das ist
der Sache insgesamt eher abtraeglich.
Solche Sachen wollen ruhig ueberlegt werden und sollten sich nict aus dem raschen
Austausch von Schlagwoertern ergeben.
Und genau das machen wir jetzt einfach mal.
Nach diesem Posting reden wir dann hoffentlich auf Augenhoehe, weil so hoch ist das
alles gar nicht. Ziel der Uebung ist es daher nicht, z.B. tom Licha jetzt meine
Argumente draufzudruecken, sondern ihn (und jeden den das Thema interessiert) in die
Lage zu versetzen, meine Argumente nachzuvollziehen und sich dann schliesslich seine
eigenen Argumente zusammenzubasteln, so wieder Michale Koenig das dann gemacht hat.
Ende des Moralischen [;)], Anfang des Sachteils.
Noch ein paar mahnenede Worte vorweg:
- Das wird kein Quicky ...
- Ich hab's nicht exzessiv Korrektur gelesen, sollten im Prosateil Fehler sein ->
Tonne
- Ich kann hier kein Buch schreiben, wer gar nicht mitkommt, muss sich halt mal
eines kaufen...
#############################################################################################
<b><i>Beugung an der Oeffnung mit und ohne Zentralobstruktion</b></i>
<b>Kleines Praeludium:</b>
Die einfachste Beschreibung der Ausbreitung von Licht in optischen Systemen ist die
"geometrische Optik". In diesem gedanklichen Ansatz wird Licht in Form von
"Lichtstrahlen" beschrieben, die sich entprechend der Brechungs- und Reflexions-
gesetze dann im optischen System ausbreiten.
Wie ja hinreichend bekannt sein duerfte laesst sich die ueberwiegende Anzahl
der auftretenden Probleme damit schon recht gut beschreiben/loesen, speziell
wenn man die Sache mit einem Raytracer automatisiert und fuer sehr viele Strahlen
rechnet.
Das ultimative Ergebnis solch einer Betrachtung mit Hilfe der geometrischen Optik
sind die bekannten "Spotdiagramme", in der der Weg vieler verschiedene Strahlen
unter verschiedenen Winkeln bis zur Fokalebene verfolgt wird.
Fuer uns Sterngucker wichtig: Mit Hilfe der Methoden der Geometrischen Optik (Raytracing,
Matrizenoptik, etc) koennen geometrische Bildfehler wie Koma, Astigmatismus, usw
relativ einfach berechnet werden.
Diese Theorie hat allerdings enge Grenzen: Der Effekt der beugenden Oeffnung ist dieser
Theorie gaenzlich unzugaenglich.
Will man diese Effekte beschreiben, so stellt es sich gluecklicherweise heraus, dass
die geometrische Optik nur eine vereinfachte Beschreibung, die sich aus einer wesentlich
umfassenderen Beschreibung der Ausbreitung von Licht darstellt, der Wellenoptik.
Die Grundlagen dieser Theorie wurden bereits von C.Huygens (Traite de la lumiere)
1690 erkannt, allerdings erst von dem franzoesischen Bauingenier A. Fresnel zwischen
1815 und 1819 sauber ausformuliert.
Mit dieser Theorie laesst sich die ueberwiegende Anzahl aller optischen Phaenomene
beschreiben, allerdings zum Preis eines im Vergleich zur geometrischen Optik wesentlich
aufwendigeren mathematischen Formalismus.
Allerdings hat auch diese Theorie ihre Grenzen und nich alle Phaenomene sind beschreibbar:
So kann die Wellenoptik z.B. weder das Phaenomen "Polarisation" noch die eigentliche
Ausbreitung von Licht beschreiben, da sie keinerlei Zeitabhaengigkeiten mit einschliesst.
Das sich Licht also tatsaechlich mit endlicher Geschwindigkeit ausbreitet (mit allen
sich daraus ergebenden Konsequenzen), laesst diese Theorie voellig ausser Acht.
In der Wellenoptik betrachtet man nur den "stationaeren Fall", also ein optisches System,
in dem die Lichtwellen sozusagen 2eingefrohren sind"
Fuer beinahe fuenfzig Jahre stellte die Wellenoptik eine eigene Sparte in der Physik da,
bevor man erkannte, dass auch sie eigentlich ebenfalls nur einen Spezialfall einer noch
umfassenderen Beschreibung des Phaenomens "Licht" ist:
J.C. Maxwell formulierte schliesslich die Ausbreitung elektromagnetischer Wellen in
allgemeiner Form (heute unter dem Namen "Elektrodynamik" gefeiert) und schuf damit auch
die Grundlage zeitabhaenige Probleme und Phaenomene wie "Polarisation" mathematisch
zu beschreiben, die der Wellenoptik nicht zugaenglich sind.
Kleine persoenliche Annekdote am Rande:
Maxwell war interessanter Weise an der Universitaet in Aberdeen beschaeftigt
und wohl der einzig herausragende Physiker, der hier je' lehrte und forschte.
Das dies seinen Zeitgenossen hier oben offensichtlich nicht ganz klar gewesen sein kann
laesst sich aus der Tatsache ableiten, dass ihm nach fuenfjaehriger Lehrtaetigkeit hier
aus politischen Gruenden gekuendigt wurde.
Ein Grossteil der Maxwellschen Elektrodynamik wurde im zweiten Stock seines Haus nahe
der lokalen Hauptstrasse formuliert, in dem sich heute eine Versicherung (was sonst) befindet.
Das einzige was an seine Taetigkeit dort heute noch erinnert, ist eine 20x30cm grosse
verwitterte Bronzeplatte, die beinahe schamhaft in einer schattigen Seitenstrasse
hinter einem Strassenlaternenpfahl angeschraubt wurde.
Zurueck zur Beugung an der Oeffnung:
Welche Theorie man nun fuer praktische Probleme man nun nimmt, haengt von der Art des
Problems ab. Man will's immer so einfach wie moeglich machen und nicht auf jeden kleinen
Spatz mit der grossen Kanone ballern.
Da Tom und ich uns mit Problemen der Beugung auseinandersetzen wollen, gehen wir es
mit Hilfe der Wellenoptik, speiziell der Fresnelschen Beugungstheorie an.
Dazu mal eine ebenso schnelle wie brutale Einleitung ins Sujet.
Sozusagen Schnellvorlauf bis zur Startlinie des praktischen Teils:
Licht ist eine elektromagnetische Welle. Wie der name schon sagt hat es eine elektrische
Feldkomponente und eine magnetische Feldkomponente. Im stationaeren Fall der
Fresneltheorie reicht es sich die elektrische Komponente zu betrachten, weil deren
Quadrat und dann die Intensitaet des Lichts liefert, d.h. dass was wir tatsaechlich im
Auge wahrnehmen.
Daher ist das Etappenziel der Uebung, sich die Amplitude und die Phase das elektrischen
Felds zwischen einer Lichtquelle einer Linse und der Bildebene zu ueberlegen.
Das Grundprinzip dazu ist denkbar einfach - die Ausbreitung von Licht wird durch kleine
Elementarwellen beschrieben, wie hier am Beispiel einer Punktlichtquelle und einer Blende.
Die sich ausbreitende Wellenfront ist die Ueberlagerung der einzellnen Elementarwellen
an der Blendenoeffnung.
In unserem speziellen Fall fuer Beugung an der Teleskopoeffnung arbeiten wir aus
vereinfachenden Gruenden zwischen speziellen Ebenen. Diese Ebenen sind spaeter:
die Objektebene (in der sich das richtige Objekt befindet), die Linsenebene/Spiegelebene
in der sich unser eigentliches optisches Element befindet und die Bildebene, in der wir
unsere Abbildung vorfinden.
Um die Sache mathematisch zu formulieren, machen wir in eine dieser Ebenen erst einmal ein
winzig kleines Loch:
Gemaess der Huygensschen Theorie geht von diesem Loch nun eine Kugelwelle aus, die dann auf
die naechste Ebene trifft:
Man kann die Ausbreitung einer Kugelwelle relativ einfach mathematisch beschreiben und
die Amplitude und ie Phase der Welle beim Eintreffen an einem beliebigen Punkt auf der
zweiten Ebene relativ einfach berechnen.
Der eigentliche Trick ist nun, dazu ueberzugehen, mehr und mehr Loecher in die Zwischenebene
zu machen:
Nun wird, um resultierende Amplitude und Phase an jedem Ort der zweiten Ebene zu erhalten,
ueber alle Beitraege von allen kleinen Loechern summiert werden muessen.
Nimmt man jetzt extrem viele Punkte, dann kann man aus diesen z.B. eine runde Blende aus
der Zwischenebene herausstanzen und sich die Beugungsfigur auf der zweiten Ebene anschauen.
Mathematisch formuliert ist die Summe ueber "viele kleine Einzelbeitraege" natuerlich
im Grenzfall beliebig kleiner "Loecher" eine Integralsumme:
Aua, sieht kompliziert aus ...
Aber davon lassen wir uns mal nicht beeindrucken und befummeln das mal etwas:
In diesem Ungetuem da oben ist die Funktion Tau einfach eine mathematische Beschreibung
von "Loch oder dicht" also geht hier Licht durch, oder ist die Sache an der Stelle
abgeblendet. Das Integral summiert ueber alle Beitraege aus der Zwischenebene.
Diese Funftion Tau - die sogenannte Oeffungsfunktion - kann aber noch viel mehr.
Man kann sich ja vorstellen, dass sich an manchen Orten der Blende, z.b. Glas befindet,
an anderen nicht. Da Glas einen anderen Brechungsindex als Luft hat, wird dort eine
Phasenverschiebung austreten.
Mathematisch kann man das auf die folgende Art beschreiben:
Tau ist eine komplexe Funktion, wobei deren Betrag die Absorption beschreibt und deren Phase
eine Phasenverschiebung.
Die Bedeutung der Oeffungsfunktion Tau sei hier noch mal ausdruecklich betont, denn die
gesamte Wirkung einer Linse, inklusive all ihrer Aberrationen laesst sich in diese
Oeffnungsfunktion packen.
Na gut.
Mit Hilfe dieser eher grundsaetzlichen Ueberlegungen gehen wir jetzt auf das Teleskop los.
Wir haben ein Objekt, eine Linse und dann die Abbildung des Objekts in der Bildebene.
Nun wird exakt nach obigem Kochrezept der Beitrag <b>jeder</b> vom Objekt ausgehender
Kugelwelle auf <b>jedem</b> Punkt der Linse berechnet.
Dann weiss man was auf der Linse los ist.
Danach wird der Beitrag <b>jeder</b> von der Linse ausgehenden Kugelwelle auf <b>jedem</b>
Punkt der Bildebene berechnet.
Der letzte Schritt ist nun, beide Beitraege zusammenzufassen, um vom Objekt direkt zum Bild
zu kommen.
Das ganze zusammengefasste Integral ist das Fresnel-Kirchhoff Integral fuer's Teleskop.
Und das gilt es dann zu loesen.
Der Loesungsweg ist ein zaehes laengliches Geschaeft (~10-20 Buchseiten mit Erlaeuterungen),
der mathematisch nicht ganz trivial ist.
Speziell erhaelt man nur ein schoen einfaches interpretierbares ergebnis, wenn einige
Vereinfachungen gemacht werden.
Daher sei nur Folgendes zum Loesungsweg an dieser Stelle gesagt:
1) Man muss sich ueberlegen, wie die Transmissionsfunktion Tau fuer eine Linse aussieht.
Dabei muss man die Phasenverschiebung durch die variirende Glasdicke modellieren.
Das kann man sich anschaulich so vorstellen:
2) Man betrachtet zunaechst erst mal Ebenen die zueinander konjugiert sind.
Was ist das fuer ein Kram?
Das ist ein Begriff aus der geometrischen Optik, der salopp besagt, es sind Ebenen,
die sich ineinander abbilden.
Da uns sowieso die Abbildung eines Sternleins oder sonstwas interessiert ist das trivial, weil
immer erfuellt. Defokussieren wir aber unser Teleskop, ist diese Bedingung NICHT mehr erfuellt
und alles hiernach gesagte nicht mehr gueltig.
3) Man muss eine Naeherung heranziehen, um das Integral zu knacken.
Dabei macht man Folgendes:
Huygens sagt zwar, wir muessen mit <b>Kugelwellen</b> rechnen, um das exakte
Ergebnis zu erhalten, aber das erschwert die Eigentliche Rechnung ungemein.
Man braucht ganz exakte Ergebnisse ausserdem nur, wenn die Ebenen im Vergleich
zu ihrem Durchmesser extrem nahe zusammenliegen.
Wenn das - wie in 99% der Faelle - nicht der Fall ist, dann tut es auch eine Naeherung.
Fuer sehr grosse Entfernungen (z.B.: winzige Lochblende projeziert auf einen Schirm 1m dahinter)
nimmt man die Frauenhofersche Naeherung:
In dieser Naeherung werden die Kugelwellen wie wir sehen als ebene Wellen genaehrt.
Das ist natuerlich eine ziemlich brutale Naeherung, die nur fuer sehr wenige Spezialfaelle
gilt. Normalerweise - wie auch im Fall des Teleskops - ist sie nicht genau genug.
Man muss die Kugelwelle etwas genauer naeheren:
Das ist die Fresnelsche Naeherung, in der die Kugelwellen durch parabelfoermige Wellenfronten
genaehert werden. Das ist fuer unsere Ansprueche (die sich aus den Dimensionen unseres
Teleskops ergeben) voellig ausreichend.
Mit diesen Annahmen kann man die Sache dann bis zum bitteren Ende durchziehen.
Das sich diese ganze ueble Rechnerei lohnt, sieht man beim Betrachten des
Ergebnisses.
1) Das Abbild eines idealen Punktes (unendlich klein) ist das Betragsquadrat der
Fouriertransformierten der Transmissionsfunktion. Diese resultierende Funktion wird
als <i>pointspread function</i> bezeichnet.
2) Das resultierende Bild ist proportional zur Faltung (engl. convolution) des
Originalbilds mit der PSF.
3) Die Fouriertransformierte des PSF ist die <i>optical transfer function</i> (OTF),
die sich aus zwei einzelnen Funktion zusammensetzt:
Der <i>modulation transfer function</i> (MTF) und der <i>phase transfer function</i>
(PTF). Erstere bestimmt, wie sich die absoluten Amplituden im Fourierraum durch die
Optik veraendern werden (darum ist sie ein direktes Mass fuer die Kontrastveraenderung
in abhaengigkeit der Detailgroesse), letztere, wie sich die Phase der Lichtwellenfront
beim Durchgang durch das System aendert.
Als Quelle sei hier mal mein derzeitiger Favorit in Sachen Optik angegeben:
Miles Klein, Thomas Furtak, "Optics", Wiley & Sons, auf den Seiten 450ff,
566ff und 570ff.
Diese jetzt noch trockenen und unverdauten Ergebnisse schreien danach,
erst mal praktisch befummelt zu werden.
Nur so kann man sie wirklich anfangen zu verstehen.
****************************** praktischer Teil ***************************************
Also dann, hier der halbwegs kommentierte IDL-Code, wie man sowas
<b>selber</b> durchrechnen kann. Der ausfuehrbare Code als "cut and
paste" haengt dann hinten dran.
Zunaechst haben wir ja gesehen, dass die wesentliche Rolle der Sache von
der Transmissionsfunktion gespielt wird.
Man muss beachten, dass die Fouriertransformationen die sich aus der
mathematischen Betrachtung ergeben, "ideal" sind. Das heisst, sie
transformieren zwischen "unendlichen" Ebenen hin und her. Sowas kann man
natuerlich in der Realitaet nicht rechenen.
Glueck haben wir dabei, dass die Peripherie immer kleinere Beitraege liefert und
wir somit unsere "Fourierspielwiese" nur genuegend gross machen muessen.
Also entscheiden wir und mal fuer eine Teleskopoeffnung von einem Radius von
100 Punkten, eingebettet in eine zehnmal groessere Ebene:
<i>
dim = 1000
aperture = 100
display = 50
</i>
Jetzt definieren wir uns unsere Oeffnung. Eine runde Oeffnung,
durch die innerhalb der Oeffnung alles durchkommen soll, ausserhalb
gar nichts:
<i>
lens = COMPLEXARR(dim,dim)
;insert the aperture
scaling = findgen(dim) - dim/2
FOR x = 0, dim-1 DO BEGIN
FOR y = 0, dim-1 DO BEGIN
r = SQRT( scaling(x)^2+ scaling(y)^2 )
IF r GT aperture THEN lens(x,y) = COMPLEX(0.0, 0.0) ELSE lens(x,y) = COMPLEX(1.0, 0.0)
ENDFOR
ENDFOR
</i>
Man beachte, dass diese Transmissionsfunktion eine <b>komplexe</b> Funktion ist,
d.h. sie hat eine Amplitude, in der man die Transmissionseigenschaften
unterbringen kann (Obstruktion, Spinne, Apodisationsfilter) und eine Phase.
Die Phase lassen wir zunaechst mal ausser Acht, nur am Rande sei erwaehnt,
dass z.B. Linsenfehler ja zu einer ortsabhaengigen Phasenaenderung auf der
Linse fuehren. Diese fuehren zu einer lokalen Phasenaenderung und genau die
koennte man so in die Transmissionsfunktion ganz einfach einbauen und so die
Auswirkung dieser "Abberationen" berechenen.
Aber weiter im Programm fuer heute.
Alls <b>quantitativen Ueberlegunge</b> werden spaeter ein voelliger Murks, wenn
wir uns nicht an dieser Stelle eine Norm ueberlegen, um unsere einfallende
Lichtmenge genau festzulegen und daran konsequent bis zum Schluss festhalten.
Das machen wir folgendermassen: Wir berechen die Flaeche unter
der Transmissionsfunktion und teilen diese durch diesen Wert.
Was wir damit praktisch machen (spaeter wir das noch klarer, keine Bange), ist
die einfallende Lichtmenge so einzuregulieren, dass eine Punktlichtquelle
abgebildet durch eine ideale Linse (unendlich gross, ohne jede Aberration) mit
einer Intensitaet von Eins abgebildet wuerde.
Diese Eichung ist so richtg und willkuerlich wie jede andere, doch fuer unsere
Belange ganz einfach erst mal bequem, d.h.:
<i>
;normalize on the incoming light
incoming = TOTAL(FLOAT(lens))
lens = lens / incoming
</i>
Schauen wir uns das ding erst einmal an:
So, jetzt kommt die einzig entscheidende Zeile, naemlich wir wissen, das das
elektrische Feld in der Bildebene der Fouriertransformierten der
Transmissionsfunktion entspricht. Also her mit dem Ding:
<i>
;calculate the electric field
e_field = SHIFT(FFT(lens,1),dim/2,dim/2)
</i>
Jetzt muss man wissen, dass die Lichtintensitaet einer Abbildung (d.h. die
Energie der Lichtwelle) proportional zum Quadrat des E-Feldes ist.
<i>
psf = (ABS(e_field))^2
window,1,TITLE='Elektrische Feldverteilung in der Fokalebene'
shade_surf,ABS(e_field(dim/2-aperture:dim/2+aperture,dim/2-aperture:dim/2+aperture))
</i>
Man beachte: An dieser Stelle ist diese Funktion keine komplexe Zahl mehr,
d.h. die Phaseninformation in unwiederbringlich verloren.
Das ist der physikalische Grund, warum man den Einfluss der Oeffnung nicht aus
Bildern "herausrechenen" kann, nicht mit Lucy-Richardson oder sonstwas. Wie der
Michale Koenig sicher besser erklaeren kann (der ist ja da der crack), das
quadrieren an dieser Stelle ist keine Ein-Eindeutige Zuordnung und somit nicht
umkehrbar.
Wir schauen uns die PSF unserer Oeffnung einfach mal an:
<i>
window,2,TITLE='PSF der unobstruierten Oeffnung'
shade_surf,psf(dim/2-aperture:dim/2+aperture,dim/2-aperture:dim/2+aperture)
</i>
Man kriegt jetzt hoffentlich eine Idee, warum man das mit IDL macht und nicht in
C. Sodele, jetzt berechnen wir die MTF, allerdings <b>ohne jede Normierung</b>,
weil wir spaeter die MTFs gemaess Toms Wunsch <b>absolut</b> vergleichen wollen
und wir die Normierung am Anfang festgelegt haben und da jetzt nicht mehr daran
herumdrehen.
Die fouriertransformierte der PSF ist die <b>optical transfer function</b>
(OTF). Diese Funktion beschreibt - vereinfacht gesagt - wie ein optisches System
eine Lichtwelle veraendert. Dabei gibt es zwei Moeglichkeiten der Aenderung: Die
Phase der Lichtwellenfront kann sich aendern und die Amplitude kann sich
aendern. Die OTF ist daher aus zwei Einzelfunktionen zusammengesetzt, der <b>
phase transfer function</b> (PTF) und der modulation transfer function (MTF).
Uns interessiert hier letztere, weil sie die Intensitaeteveraenderungen
beschreibt, die das optische System im Bild (verglichen zum Original)
beschreibt. Also foueriertransformieren wir die PSF und nehmen den Betrag (mit
dem letzten Schritt haben wir dann die PTF entsorgt):
<i>
mtf = ABS(SHIFT(FFT(psf,1),dim/2,dim/2))
window,3,TITLE='MTF der unobstruierten Oeffnung'
</i>
Fuer einige mag es eine Ueberraschung sein, dass die MTF eine zweidimensionale
Funktion ist und nicht eine einfache Kurve, so wie sie sonst immer dargestellt
wird. Das ist nur Gewoehnungssache: Fuer radialsymmetrische Probleme, wie
unseres hier, ist das Ding ein runder Kegel und man bildet aus
Uebersichtsgruenden nur einen Schnitt davon ab.
Aber Vorsicht: Berechnen wir Probleme ohne Radialsymmetrie (PSF, MTF einer mit
einer Spinne verdeckten Oeffnung), dann schaut das Ding nicht mehr so schoen
rund aus und man muss aufpassen sich bei einer 1D Kurvendarstellung nicht die
Rosinenseite herauszupicken.
Wie dem auch sei, zum Vergleich merken wir und diese MTF fuer spaeter:
<i>
;remember the unobstructed psf for later
unobstructed_mtf = mtf
</i>
So wir haben jetzt die PSF und die MTF und koennen somit genau berechnen, was
unsere Optik mit einem jeden Bild macht, dass wir vorne hineinstopfen. Erst mal
muessen wir die PSF etwas zurechtstutzen, dass hat keinerlei physikalische
Gruende, sondern was damit zu tun, dass ansonsten die Faltung auf
handelsueblichen PCs etwas arg lange dauert. Wer viiiieeeel Zeit hat, kann das
auch weglassen und wird sehen an den Ergebnissen aendert sich nichts:
<i>
;for this we use only the central part of the PSF for speed reasons
cpsf = psf(dim/2-30:dim/2+30,dim/2-30:dim/2+30)
</i>
An dieser Stelle wollen wir dann also mal die Auswirkung der Optik auf ein
Bildchen berechnen, und zwar dieses hier:
Die Pysik sagt uns, dass unser resultierendes Bild proportional zur
Faltung des Originals mit der PSF ist.
Obwohl wir das wohl nicht ganz verstehen, machen wir das einfach mal:
<i>
READ_JPEG, '~/images/monitor_test_pattern.jpg', test_image
test_image = FLOAT(test_image)
resulting_image = CONVOL(test_image, cpsf,/EDGE_WRAP)
</i>
Und jetzt schauen wir uns das Ergebnis mal an:
<i>
window,4,TITLE = 'test image convolved with unobstructed PSF, scaled to max brightness'
tvscl, resulting_image
</i>
Hier stellen wir aber erst mal fest, dass "tvscl" ein Objekt so skaliert, das
der Maximalwert in eine Bildhelligkeit von 255 resultiert und der niedigste auf
Null. Es wird also der der volle Kontrastumfang des Monitors, der da vor einem
jeden steht ausgenutzt. Das wollen wir aber gar nicht, wir wollen die Sache
jetzt genau so hell darstellen (relativ zum Original), dass die Lichthelligkeit
korrekt mit der PSF skaliert:
<i>
;now we preserve the amplitude compared to the original image
resulting_image = BYTSCL(resulting_image) * MAX(psf)
window,5,TITLE = 'test image convolved with unobstructed PSF, scaled to its PSF'
tv,resulting_image
</i>
An dieser Stelle noch kein gravierender Unterschied, weil wir auf diese
unobsruierte Oeffung normiert haben, spaeter werden wir sehen,
der Unterschied ist wesentlich. Trotzdem heben wir und mal eine Linie aus der
rechten unteren Ecke zum spaeteren Vergleich in einem Diagramm auf,
denn das Auge wird rasch getaeuscht und darum werden wir spaeter die absoluten
Bildintensitaeten vergleichen.
<i>
line_unobstructed = resulting_image(*,75)
</i>
Solche Bilder zum Vergleich sind ganz nuetzlich, haben allerdings auch
ein grosses Problem: Die scharfen Kannten und Strukturen werden aus sehr vielen
Fourierfrequenzen gebildet und ein spaeteres Filtern durch die
Zentralobstruktion veraendert nicht nur den Kontrast, sondern auch die <b>Form</b>
des Bildes. Das menschliche Auge ist seher leicht zu taeuschen und wenn zu viele
Dinge in einem Bild veraendert werden, dann ist es fast unmoeglich die Ursachen
noch sauber in ihre Einzelkomponenten zu trennen.
Daher besorgen wir und sicherheitshalber noch ein Testbild, in dem wir eine
Formveraenderung durch die Zentralobstruktion kategorisch ausschliessen. Wie
machen wir das?
Wir erzeugen uns ein Streifenbild, in dem die Streifenverlaeufe sinusfoermig
varieren und somit jeder der Streifen genau nur <b>eine</b> Frequenz im
Fourierraum erzeugt und sich - fuer jeden der den Faden noch nict gaenzlich
verloren hat, nur an einem Punkt unter dem MTF-Diagramm auftaucht.
So wird's erzeugt:
<i>
;subroutine for creating a test image
function create_test_image
a=findgen(300)
test_image = fltarr(600,300)
FOR i = 0,59 DO BEGIN
b=(sin(a/100.0*!PI * i) + 1) * 127
FOR j = 0,9 DO BEGIN
test_image(i*10+j,*) = b
ENDFOR
ENDFOR
return,test_image
end
</i>
So sieht das resultierende Bild aus:
Auch dieses Bild jagen wir jetzt mal spasseshalber durch unser optisches System:
<i>
;second example
test_image = create_test_image()
resulting_image = CONVOL(test_image, cpsf,/EDGE_WRAP)
window,10,TITLE = 'test image convolved with unobstructed PSF, scaled to max brightness'
tvscl, resulting_image
;now we preserve the amplitude compared to the original image
resulting_image = BYTSCL(resulting_image) * MAX(psf)
window,11,TITLE = 'test image convolved with unobstructed PSF, scaled to its PSF'
tv,resulting_image
</i>
und so sieht das Ergebnis aus:
Wieder sehen wir, wie der Kontrast bei immer feineren Objekten zusammenbricht
und irgenwann nur noch eine graue Flaeche vorliegt.
Hier noch mal der Vollstaendigkeit halber das Bild der Amplitude der PSF
entsprechend dargestellt (die Helligkeit, die man im Okular wahrnimmt).
=================================================================================
So und jetzt ziehen wir die ganze Show noch mal durch, nur wir setzen eine riesen
Zentralobstruktion ein, das machen wir so:
<i>
;again with obstruction
obstruction = 60
lens = COMPLEXARR(dim,dim)
;insert the aperture and the obstruction
scaling = findgen(dim) - dim/2
FOR x = 0, dim-1 DO BEGIN
FOR y = 0, dim-1 DO BEGIN
r = SQRT( scaling(x)^2+ scaling(y)^2 )
IF r GT aperture THEN lens(x,y) = COMPLEX(0.0, 0.0) ELSE lens(x,y) = COMPLEX(1.0, 0.0)
IF r LE obstruction THEN lens(x,y) = COMPLEX(0.0, 0.0)
ENDFOR
ENDFOR
</i>
Jetzt wurd <b>NICHT</b> <i>neu</i> normiert, weil das naehmlich heissen wuerde, dass wir
die einfallende Lichtintensitaet zwischen dem ersten und dem zweiten Fall veraendern
wuerde. Das wollen wir aber nicht, wir wollen mit dem selben Teleskop mit der selben
Oeffung das selbe Objekt beobachten, nur diesmal verdeckt die Zentralobstruktion
einen Teil der Oeffung. Also weiter geht's mit der alten Normierung:
<i>
lens = lens / incoming
window,11,TITLE='Transmissionsfunktion des obstruierten Syetems'
shade_surf,lens(dim/2-aperture:dim/2+aperture,dim/2-aperture:dim/2+aperture)
</i>
So sieht hier die transmissionsfunktion aus:
<i>
;calculate the psf
e_field = SHIFT(FFT(lens,1),dim/2,dim/2)
</i>
Und von hier ab laeuft es dann genau wie oben noch einmal.
[......]
Hier ist das elektrische Feld dieser obstruierten Telekopoeffnung:
Hier dann die resultierende PSF dieses obstruierten Telekops:
Hier dann die zweidimensionale MTF des obstruierten Systems:
Hier ein Schnitt durch diese Funktion in rot (keinerlei Normierungen, keinerlei
neue Skalierungen wurden hinzugefuegt) und weiss der Schnitt durch die MTF
der unobstruierten Oeffnung.
Hier der Code, der dies erledigt:
<i>
window,12,TITLE='Vergleich beider MTFs, obstruiert und unobstruiert'
plot,unobstructed_mtf(dim/2,dim/2:dim-300)
oplot,obstructed_mtf(dim/2,dim/2:dim-300), COLOR=999
</i>
Hier das Testbild gefaltet mit der PSF, allerdings auf eine Bildhelligkeit von 0-255
skaliert.
Hier das Testbild gefaltet mit der PSF, allerdings auf die Bildhelligkeit
skaliert, die dem Maximum der PSF entspricht. Das es dunkler werden muss is' ja wohl
klar, wenn weniger Oeffnung zur Verfuegung steht, geht weniger Licht (=Energie) ins
Telekop hinein und das muss sich dann ja in der Bildhelligkeit auswirken:
Ja nimmt man jetzt das aequivalente Bild von oben und vergleicht direkt, sieht man,
dass sich in den Kontrasten etwas getan hat.
Um mal nachzugucken, was die absolute Bildintensitaet jetzt so treibt, greifen wir
eine Linie Links unten durch den Zebrastreifen heraus und plotten sie zusammen mit der
Linie aus dem entsprechenden obigen Bild:
Hier unser Spezialtestbild bei voll aufgedrehter Helligkeit (also NICHT wie in Natura
im Vergleich zu oben):
Und hier das selbe Bild auf die korrekte Bildhelligkeit skaliert, so wie's dem
Lichtverlust durch die Obstruktion entspricht:
So.
Nun habe ich mir ja zugegebermassen viel Arbeit gemacht.
Jetzt schlage ich dir doch mal Folgendes vor, Tom:
1) Vollziehe erst mal den theoretischen Weg der Entstehung der Bilder nach. Das Know
How dazu solltest Du haben und dann muessen wir uns erst mal darauf einigen, dass der
passt.
2) Ihr habt ja IDL im Buero, also schnapp dir den Code und fange mal an, damit laut
nachzuddenken.
Nimm' dir soviel Zeit, wie Du brauchst.
Lass' dich nicht von irgendeinem Erwartungsdruck aus den Foren hetzen.
Denn dann muessen wir uns erst mal darauf einigen, ist die Physik korrekt in
das Programm umgesetzt worden?
Falls nicht muessen wir nachbessern.
3) Dann und auch nur dann, fangen wir mal an die Ergebnisse zu interpretieren ...
Ich denke das ist ganz in deinem Sinne einer sachlichen Diskussion.
Der Ball ist bei dir.
Gruss,
Mario
Hier noch mal der gesamte Code fuer alle die's gerne mal selber durchhacken wollen.
Eine Anmerkung noch:
Damit es laeuft muss das Testbild heruntergeladen werden und der Pfad hier:
READ_JPEG, '~/images/monitor_test_pattern.jpg'
entsprechend eurem Verzeichnis, in dem sich das Bild bei euch befindet angepasst
werden.
=================================================================================================
#################################################################################################
;=========================================================================
;subroutine for creating a test image
function create_test_image
a=findgen(300)
test_image = fltarr(600,300)
FOR i = 0,59 DO BEGIN
b=(sin(a/100.0*!PI * i) + 1) * 127
FOR j = 0,9 DO BEGIN
test_image(i*10+j,*) = b
ENDFOR
ENDFOR
return,test_image
end
;==============================================================================
pro contrast
DEVICE,RETAIN=2
dim = 1000
aperture = 100
display = 50
lens = COMPLEXARR(dim,dim)
;insert the aperture
scaling = findgen(dim) - dim/2
FOR x = 0, dim-1 DO BEGIN
FOR y = 0, dim-1 DO BEGIN
r = SQRT( scaling(x)^2+ scaling(y)^2 )
IF r GT aperture THEN lens(x,y) = COMPLEX(0.0, 0.0) ELSE lens(x,y) = COMPLEX(1.0, 0.0)
ENDFOR
ENDFOR
;normalize on the incoming light
incoming = TOTAL(FLOAT(lens))
lens = lens / incoming
window,1,TITLE='Die Oeffnungsfunktion unserers Teleskops (Realteil...)'
shade_surf,lens(dim/2-aperture:dim/2+aperture,dim/2-aperture:dim/2+aperture)
;;stop
;calculate the e-field
e_field = SHIFT(FFT(lens,1),dim/2,dim/2)
window,2,TITLE='Elektrische Feldverteilung in der Fokalebene unobstruiert'
shade_surf,ABS(e_field(dim/2-aperture:dim/2+aperture,dim/2-aperture:dim/2+aperture))
;stop
psf = (ABS(e_field))^2
window,3,TITLE='PSF der unobstruierten Oeffnung'
shade_surf,psf(dim/2-aperture:dim/2+aperture,dim/2-aperture:dim/2+aperture)
;stop
mtf = ABS(SHIFT(FFT(psf,1),dim/2,dim/2))
window,4,TITLE='MTF der unobstruierten Oeffnung'
shade_surf,mtf
;stop
;remember the unobstructed psf for later
unobstructed_mtf = mtf
;now we convolve a test image with the PSF
;for this we use only the central part of the PSF for speed reasons
cpsf = psf(dim/2-30:dim/2+30,dim/2-30:dim/2+30)
READ_JPEG, '~/images/monitor_test_pattern.jpg', test_image
test_image = FLOAT(test_image)
window,5,TITLE = 'original Testbild 1'
tv,test_image
;stop
resulting_image = CONVOL(test_image, cpsf,/EDGE_WRAP)
window,6,TITLE = 'test image convolved with unobstructed PSF, scaled to max brightness'
tvscl, resulting_image
;stop
;now we preserve the amplitude compared to the original image
resulting_image = BYTSCL(resulting_image) * MAX(psf)
window,7,TITLE = 'test image convolved with unobstructed PSF, scaled to its PSF'
tv,resulting_image
;stop
line_unobstructed = resulting_image(*,75)
;second example
test_image = create_test_image()
window,8,TITLE = 'original Testbild 2'
tv,test_image
;stop
resulting_image = CONVOL(test_image, cpsf,/EDGE_WRAP)
window,9,TITLE = 'test image convolved with unobstructed PSF, scaled to max brightness'
tvscl, resulting_image
;stop
;now we preserve the amplitude compared to the original image
resulting_image = BYTSCL(resulting_image) * MAX(psf)
window,10,TITLE = 'test image convolved with unobstructed PSF, scaled to its PSF'
tv,resulting_image
;stop
;=========================================================================================
;again with obstruction
obstruction = 60
lens = COMPLEXARR(dim,dim)
;insert the aperture and the obstruction
scaling = findgen(dim) - dim/2
FOR x = 0, dim-1 DO BEGIN
FOR y = 0, dim-1 DO BEGIN
r = SQRT( scaling(x)^2+ scaling(y)^2 )
IF r GT aperture THEN lens(x,y) = COMPLEX(0.0, 0.0) ELSE lens(x,y) = COMPLEX(1.0, 0.0)
IF r LE obstruction THEN lens(x,y) = COMPLEX(0.0, 0.0)
ENDFOR
ENDFOR
;no normalization this time !
;Because: light intensity is preserved
lens = lens / incoming
window,11,TITLE='Transmissionsfunktion des obstruierten Syetems'
shade_surf,lens(dim/2-aperture:dim/2+aperture,dim/2-aperture:dim/2+aperture)
;;stop
;calculate the psf
e_field = SHIFT(FFT(lens,1),dim/2,dim/2)
window,12,TITLE='Elektrische Feldverteilung in der Fokalebene unobstruiert'
shade_surf,ABS(e_field(dim/2-aperture:dim/2+aperture,dim/2-aperture:dim/2+aperture))
;;stop
psf = (ABS(e_field))^2
window,13,TITLE='PSF des unobstruierten Teleskops'
shade_surf,psf(dim/2-aperture:dim/2+aperture,dim/2-aperture:dim/2+aperture)
;;stop
mtf = ABS(SHIFT(FFT(psf,1),dim/2,dim/2))
window,14,TITLE='MTF des obstruierten Teleskops'
shade_surf,mtf
;;stop
obstructed_mtf = mtf
window,15,TITLE='Vergleich beider MTFs, obstruiert (rot) und unobstruiert'
plot,unobstructed_mtf(dim/2,dim/2:dim-300)
oplot,obstructed_mtf(dim/2,dim/2:dim-300), COLOR=999
;;stop
;for this we use only the central part of the PSF for speed reasons
cpsf = psf(dim/2-30:dim/2+30,dim/2-30:dim/2+30)
READ_JPEG, '~/images/monitor_test_pattern.jpg', test_image
test_image = FLOAT(test_image)
resulting_image = CONVOL(test_image, cpsf,/EDGE_WRAP)
window,16,TITLE = 'test image convolved with obstructed PSF, scaled to max brightness'
tvscl, resulting_image
;;stop
;now we preserve the amplitude compared to the original image
resulting_image = BYTSCL(resulting_image) * MAX(psf)
window,17,TITLE = 'test image convolved with obstructed PSF, scaled to its PSF'
tv,resulting_image
;;stop
;second example
test_image = create_test_image()
resulting_image = CONVOL(test_image, cpsf,/EDGE_WRAP)
window,18,TITLE = 'test image convolved with obstructed PSF, scaled to max brightness'
tvscl, resulting_image
;;stop
;now we preserve the amplitude compared to the original image
resulting_image = BYTSCL(resulting_image) * MAX(psf)
window,19,TITLE = 'test image convolved with obstructed PSF, scaled to its PSF'
tv,resulting_image
;;stop
line_obstructed = resulting_image(*,75)
window,20,TITLE = 'Kleiner Profilvergleich aus dem Zebrastreifen links unten aus Testbild 1'
plot, line_unobstructed(30:75)
oplot, line_unobstructed(30:75), color=999
end