Projektion mit Fisheye-Objektiv

  • Hallo,


    heute habe ich für euch ein kleines Problem zum Nachdenken.


    Es geht um den selbstgebauten Planetariums-Projektor, siehe
    http://www.astrotreff.de/topic.asp?TOPIC_ID=177112


    Der Projektor hat in vertikaler Richtung eine Auflösung von 1200 Pixeln. Das Fisheye-Objektiv bildet einen Kreis mit 1200 Pixeln Durchmesser in die Halbkugel ab.
    Das Objektiv bildet in guter Näherung alle Abstände in radialer Richtung mit dem gleichem Maßstab ab. 1200 Pixel auf 180°, das ergibt also jeweils 66.7 Pixel für jeden 10° Abschnitt. Da man mit Stellarium das azimutale Gradnetz einblenden kann, kann man sich davon überzeugen dass die 10° Abstände entlang des Meridians alle gleich groß dargestellt werden.


    In der Halbkugel ist die 360° lange Horizontlinie zweifellos genau doppelt so lang wie der 180° lange Meridian (von Süd über Zenit nach Nord). Demnach müsste die Horizontlinie eine Länge von 2400 Pixeln haben (weil der Meridian zweifellos 1200 Pixel lang ist).


    Aber jetzt kommt der Widerspruch: Ein Kreis mit 1200 Pixeln Durchmesser hat einen Umfang von 1200*Pi=3770 Pixeln. Die Horizontlinie ist also 3770 Pixel lang.


    Wo ist der Fehler in meiner Argumentation?


    Ich kenne die Lösung schon, aber ich lasse euch auch mal nachdenken damit die Gehirne nicht einrosten.


    Gruß
    Michael


    P.S. Die Lösung kommt morgen.

  • Hallo Michael


    ich kenne die Antwort auch (so glaube ich)
    Hast du nett umschrieben, das Problem [:D]
    Durchmesser oder Umfang ist die Frage, mit Pi würde ich allenfalls den Durchmesser berechnen.


    Gruss

  • Michael,


    das Stichwort heißt: Längentreue Abbildung
    und
    "Geraden" auf dem Projektor, welche nicht durch die Mitte verlaufen, werden in Bögen abgebildet.


    Das ist ein Abbildungsproblem aus dem Bereich der Kartenprojektion.

    Alles wird gut!
    Kalle

  • Aber wo ist denn nun der Fehler in meiner Argumentationskette? Ich habe schlüssig dargelegt dass die Horizontlinie 2400 Pixel lang ist und dass sie 3770 Pixel lang ist. Eine der beiden Lösungen muss ja wohl falsch sein.


    Gruß
    Michael

  • Michael,
    der Durchmesser auf dem Projektor (durch die Mitte), wird in der Halbkugel als Halbbogen (halber Großkreis von Horizont über Zenit zu Horizont) und damit als halber Umfang abgebildet.


    Du kannst auch folgendes Experiment machen:
    Male auf dem Projektor ein formatfüllendes Sechseck inkl. Diagonalen (also 6 gleichseitige Dreiecke zum Sechseck gelegt). Alle Teilstücke sind gleich lang.
    In der Projektion erscheinen die Diagonalen durch den Zenit als halbe Großkreise (Länge= 180°), während die Außenkanten des Sechsecks in der Halbkugel am Horizont mit kleinen Bögen (6 Stück a 360/6= 60° breit) erscheinen. Dann hast du als Ergebnis, dass gleich lange Linien auf dem Projekor einmal als 90°-Bogen, ein andermal als 60°-Bogen abgebildet werden. UND: Keine winkeltreue Abbildung, denn aus 60° am Rand werden fast 90° (hmm, müsste man noch mal nachrechnen, da die Randbögen sich jeweils nach innen neigen). Und ... die Außenkanten erscheinen in der Halbkugel punktuell genau am Horizont und wölben sich dann jedesmal leicht in die Halbkugel. -> Geraden, die nicht durch die Mitte verlaufen, werden als Bögen abgebildet.
    Die Länge der Linien auf dem Projektor kannst du per Pixel angeben (also 600 Pixel je Dreieckskante). In der Halbkugel überstreichen sich aber einmal 60° (am Rand) und 90° durch den Zenit. Was auf dem Projektor gleichseitig ist, ist in der Projektion dann nicht mehr gleichseitig.
    Oder:
    In der Kuppel würden ja nur vier sphärische Dreiecke mit einer Kantenlänge von 90° hineinpassen. Das entsprechende Muster für den Projektor wäre ein per Kreuz geviertelter Kreis. Und an diesem Muster könntest du sehen, dass der Radius eines Viertelkreises ungleich dem Viertelumfang (pi/2) ist, obwohl in der Projektion die sphärischen Dreiecke gleichseitig sind.
    Wenn r = 600 Pixel ist sind r*pi/2 = 942 Pixel ... (bzw. alles vierfach: 2400 vs. 3768 Pixel). Deswegen: KEINE LÄNGENTREUE ABBILDUNG

    Alles wird gut!
    Kalle

  • Hab mir beim Mittagessen schon gedacht, wenn der Michael was fragt, wird's nicht so einfach sein.


    Wenn die Ausgangslage ein quadratisches Bild ist, werden die Ecken nicht abgebildet.


    <i><font size="1">(dies nur weil ich mich hab hinreissen lassen für eine schnelle Antwort)</font id="size1"></i>


    Gruss



    <font color="green">Nachtrag:
    Pixel ist kein Längenmass, Pixel lassen sich problemlos strecken, in senkrechter Richtung anders als in horizontaler.
    Beispiel oben:
    Ausgangslage quadratisches Bild, 1200x1200 Pixel, projiziert in eine Kugel mit 1200 Pixel Durchmesser (im Bild sollte senkrecht, nicht vertikal stehen)
    Ergibt für den horizontalen Umfang blau 3770 Pixel
    für den senkrechten Umfang rot/grün jedoch "nur" 2400 Pixel
    Betrachtet man dies in der Kugel mit 1200mm Durchmesser so kommt man auf die selben effektiven Umfang.
    So sehe ich dies.
    </font id="green">

  • Hallo Michael


    In der Projektionsebene ist ein Punkt durch radialen Abstand vom Mittelpunkt und durch den Azimutwinkel bestimmtbar .


    Auf der Halbkugel ist ein Punkt durch den Höhenwinkel und den Azimutwinkel bestimmt .


    Für einen Kreis in der Projektionsebene gilt : Delta R = 0


    Damit gilt : der Höhenwinkel = konstant


    Für einen kompleten Umlauf des Höhenwinkels um 360° muß die Strecke von 1200 Pixel radial 2 * durchlaufen werden .
    Oder Höhenmaßstab : 2400 Pixel radial auf 360° Höhenwinkel .
    Dies ist völlig korrekt .


    Für den Azimutwinkel gilt : Az. Horizontlinie = Az Projektionsebene .


    Genauso wie bei der Umrechnung von äquatorial in horizontal haben für die Halbkugel Höhenwinkel und Azimutwinkel unterschiedliche Umrechnungen .


    Gruß Rainer

  • Aus meiner Sicht sieht die Lösung so aus:


    Der Einfachheit halber stellen wir uns die Pixel als kleine Kreise vor, die dicht an dicht ohne Zwischenräume nebeneinander liegen.
    In der Bildebene haben wir einen großen Kreis mit 1200 Pixeln Durchmesser. Auf den Umfang des Kreises passen 3770 Pixel. Daran kann kein Zweifel bestehen.
    Die 1200 Pixel die in der Bildebene auf dem Durchmesser liegen, werden vom Objektiv auf den Meridian abgebildet. Auf dem Meridian liegen also ebenfalls 1200 Pixel, und die sind in der Richtung des Meridians auch alle gleich groß.
    Die 3770 Pixel die in der Bildebene auf dem Umfang liegen, werden vom Objektiv auf die Horizontlinie abgebildet. Also liegen auf der Horizontlinie tatsächlich 3770 Pixel.
    Da aber die Horizontlinie genau doppelt so lang ist wie der Meridian, müssen die Pixel in der Breite zusammengequetscht werden, denn sonst würden nur 2400 Pixel auf die Horizontlinie passen. Das bedeutet dass die Pixel, die in der Bildebene rund sind, am Horizont als hochkant stehende Ellipsen abgebildet werden.
    Der Fehler in meiner Argumentation lag also in dem Satz "Demnach müsste die Horizontlinie eine Länge von 2400 Pixeln haben", weil ich dort fälschlicherweise vorausgesetzt habe, dass die Pixel genauso breit wie hoch sind.


    Somit meine ich dass Roger die beste Antwort gegeben hat:
    "Pixel ist kein Längenmass, Pixel lassen sich problemlos strecken, in senkrechter Richtung anders als in horizontaler."


    Gruß
    Michael

  • Michael,
    die Pixel Deines Projektors sind vorgegeben und - wie du selbst ausführst - Stellvertreter für die kleinste abzubildende geometrische Figur.


    Ich weiß ja nicht, was Deine Linse tatsächlich macht, aber gesetzt der Fall, sie bildet einen Kreis mit vollem Durchmesser genau auf den Horizont, einen dazu konzentrischen Kreis mit halben Durchmesser als "45. Breitengrad ab, usw., dann hast du eine vom Horizont zum Zenit stetig wechselnden Verzerrungsmaßstab.


    Einen infinitisimalen kleinen Kreis um den Zenit bildet das Objektiv anders ab, als den auf 45° Höhe und diesen wiederum anders als den Bildrand.


    nimm die 3 Fälle Horizont, 45 und 90°(Zenit):
    halber Kreisdurchmesser/halber Umfang auf der Pixelmatrix des Projektors, aber cos45°-fachen (=0,707) Durchmesser in der Halbkugel
    und Vollkreis, welcher sowohl auf dem Projektor als auch in der Kuppel jeweils 100% der Projektionsmatrix bzw. der Halbkugel (am Horizont) ausnutzt.
    Zum Zenit hin ändert sich der Maßstab nochmals, da kannst du den Cosinus näherungsweise mit dem Winkel pi/2 - alpha (in rad) gleichsetzen, während auf dem Projektor, die pi/2 (=90°) proportional zum DURCHMESSER (Annahme der proportionalen Abbildung s.o.) sind. Der Maßstab ist dort 2/pi-fach (=0,64) verzerrt.


    Das hat mit den Pixeln nichts zu tun. Du benutzt die Pixel ja als Zollstock, das Problem wäre mit transparentem Millimeterpapier unverändert.


    Wie gesagt, das steht und fällt mit den Abbildungseigenschaften des Projektionsobjektiv. Male doch mal ein Millimeterraster für den Projektor und vergleich die Abstände innerhalb der Kuppel von Zenit, halber Höhe und Horizont.



    Gruß


    PS: Hab's die Maßstäbe grad nur aus dem Kopf gerechnet und hoffe, dass ich mich nicht vertan habe. Wenn man Verzerrungsmaßstab als Verhältnis von Pixelbreite/Pixellänge betrachtet, dann müssen obige Faktoren mit pi/2 multipliziert werden. So dass in der Mitte 1 und unten dann pi/2 rauskommt, in der Mitte dann Wurzel-2*pi/4.

    Alles wird gut!
    Kalle

  • Hallo Kalle,


    <blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">Zitat:<hr height="1" noshade id="quote"><i>Original erstellt von: Kalle66</i>
    Ich weiß ja nicht, was Deine Linse tatsächlich macht, aber gesetzt der Fall, sie bildet einen Kreis mit vollem Durchmesser genau auf den Horizont, einen dazu konzentrischen Kreis mit halben Durchmesser als "45. Breitengrad ab, usw., dann hast du eine vom Horizont zum Zenit stetig wechselnden Verzerrungsmaßstab.
    <hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">


    Völlig richtig, genau so ist es. Der radiale Abstand vom Bildzentrum wird proportional als Winkel-Abstand vom Zenit abgebildet. Das ist bei den meisten Fisheye-Objektiven so.
    Die logische Folge davon ist, dass die Pixel zum Horizont hin immer stärker in der Breite zusammengequetscht werden müssen. Im Zenit wird ein quadratisches Pixel als Quadrat abgebildet, aber am Horizont wird es als Rechteck abgebildet mit Breite = Höhe * 2 / Pi


    Gruß
    Michael


    P.S. Wenn man mit einem Fisheye eine Aufnahme macht, dann ist es natürlich genau anders rum: Ein quadratisches Objekt am Horizont wird in der Bildebene zu einem liegenden Rechteck mit Breite = Höhe * pi / 2

  • Hallo Michael


    Wenn man die Pixel nicht nur als Längenmaßstab sondern als Flächen betrachtet , gibt es Probleme .
    Zitat " In der Bildebene haben wir einen großen Kreis mit 1200 Pixeln Durchmesser . Auf den Umfang des Kreises passen 3770 Pixel . Daran kann kein Zweifel bestehen . "


    Auf einem Kreisumfang von phi * (länge 1200 Pixel) würden sich 3770 Pixel teilweise überschneiden , wenn deren Mittelpunkte auf dem Kreisumfang liegen . Der Fehler ist allerdings gering .


    Ein bedeutenderer Fehler ist : je nach Rasteranordnung der Pixelmittelpunkte kann man von einem zu nächsten Pixel nur unter wenigen bestimmten Winkeln gehen . Durch sehr viele Pixel kann man nur die Kreislinie annähern ; die Winkelfehler bleiben .
    Die Anzahl der zur Näherung erforderlichen Pixel läßt sich nicht einfach berechnen .


    Gruß Rainer

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!