Bilder ohne sichtbaren Horizont ausrichten

  • Im Handbuch auf Seite 98 ist beschrieben, wie man ein Bild ausrichtet, bei dem es keinen sichtbaren Horizont gibt. Doch leider gibt es wohl in den seltensten Fällen eine Plakatwand und einen vorausfahrenden LKW.


    Aber es gibt noch eine andere Methode zum Ausrichten, die sich darauf stützt, dass bei waagerecht gehaltener Kamera die Links-/Rechtswerte der Perspektive bei ausgerichtetem Gitternetzes gleich groß sind, nur die Vorzeichen sind unterschiedlich. Würde bei der Aufnahme die Kamera um einen bestimmten Winkel gegen die Horizontale verdreht, so wären die Links-/Rechtswerte je nach Drehrichtung um diesen Winkel vergrößert oder verkleinert.
    Das bedeutet, dass sich aus dem Unterschied der Links-/Rechtswerte die Kameradrehung und damit der Wert für die Bilddrehung ausrechnen lässt. Dazu muss man in zwei Schritten vorgehen:


    1. Das Gitternetz an Hand der stürzenden Linien ausrichten - ohne Beachtung des Horizontes.
    2. Den Drehwinkel und die effektiven Link-/Rechtswerte an Hand der ermittelten Links-/Rechtwerte errechnen und diese dann zum Ausrichten des Bildes in den Dialog eintragen.


    Mathematisch sieht das so aus, wobei "l" und "r" die beim Ausrichten des Gitternetzes angezeigten Links-/Rechtswerte sind:


    Wert "Drehen" = 0,5 * (l + r)
    Wert "links" = 0,5 * (l - r)
    Wert "rechts" = 0,5 * (r - l)


    Beispiel: Nach 1. ermittelt l = -5°, r = 2,5°


    Wert "Drehen" = 0,5 * (-5° + 2,5°) = -1,25°
    Wert "links" = 0,5 * (-5° - 2,5°) = -3,75°
    Wert "rechts" = 0,5 * (2,5° - (-5°)) = 3,75°


    Die 2. Prozedur könnte Ji dem Anwender abnehmen, wenn es einen Schalter "Nivellieren" geben würde, so dass beim Ausrichten des Bildes statt der unter 1. angezeigten Werte die rechnerischen Werte zu Grunde gelegt würden.


    Wendet man "Bild ausrichten perspektivisch" an, so gibt es zwar keine angezeigten Links-/Rechtswerte, trotzdem könnte auch hier das Nivellieren erfolgen.

  • Probiere doch mal ShiftN als extern eingebundenes Programm:

    (...) In diesem Zusammenhang ein Tipp: ShiftN (siehe auch: Dr. Marcus Hebel) kann schon mal automatisch das orthogonale Ausrichten übernehmen bevor man mit JI die "ausgeknautschteren" Transformationen anwendet. Mit der neuen JI-Version kann es jetzt auch ständig in "stand-by" bleiben.

    Gruß softride
    Lumix GM1, GX7, GX80, GX9, P7-14, P8, P1,7/15, P12-32, P2,8/45, O1,8/45, O1,8/75, P14-140 II, P100-300, P100-400

  • Müßte denn bei dieser Berechnung nicht auch noch der jeweilige Abstand zur Mittellinie rein, nicht immer gibt es ja überall im Bild Senkrechten.

    Für die Winkelgröße des Gitternetzes ist es egal, wo im Bild eine in der Wirklichkeit lotrechte Kante liegt, an der eine der Gitterlinien ausgerichtet wird. Für größtmögliche Genauigkeit beim Ausrichten mit einer Gitterlinie sollte diese natürlich möglichst lang sein.

  • Aber es gibt noch eine andere Methode zum Ausrichten, die sich darauf stützt, dass bei waagerecht gehaltener Kamera die Links-/Rechtswerte der Perspektive bei ausgerichtetem Gitternetzes gleich groß sind, nur die Vorzeichen sind unterschiedlich.

    Bei einem Bild ohne sichtbaren Horizont orientiere ich mich auch an den senkrechten Linien. Im Ausrichten-Modus gehe ich mit der Maus in die rechte untere Ecke und drücke die Umschalt-Taste. Jetzt kann ich mit Links-Ziehen das Gitter drehen und mit Rechts-Ziehen die vertikale Perspektive symmetrisch ändern. Die richtige Einstellung habe ich dann meist ganz schnell gefunden.

  • Was man mit JI doch alles machen kann!


    Allerdings hat diese Methode den Nachteil, dass die Bestimmung des Drehwinkels als auch das Ausrichten der vertikalen Gitterlinien empirisch erfolgt. Immer wieder muss man den Drehwinkel und den Perspektivwert ändern, bis man irgend wann die zueinander passenden Werte gefunden hat. Da ginge es mit meiner beschriebenen Methode mit dem Schalter "Nivellieren" schneller - die Gitterlinien links und rechts ausrichten und schon kann die Taste "Bild ausrichten" gedrückt werden.

  • Allerdings hat diese Methode den Nachteil, dass die Bestimmung des Drehwinkels als auch das Ausrichten der vertikalen Gitterlinien empirisch erfolgt.

    Bei deiner Methode wird auch empirisch ausgerichtet. Lediglich die Symmetrie wird "künstlich" durch Rechnung hergestellt. Meine Methode hat den Vorteil, dass man direkt die Auswirkung auf die Horizontalen sieht, während man bei deiner Methode erst die Nivellieren-Taste drücken muss.

  • (...)
    Aber es gibt noch eine andere Methode zum Ausrichten, die sich darauf stützt, dass bei waagerecht gehaltener Kamera die Links-/Rechtswerte der Perspektive bei ausgerichtetem Gitternetzes gleich groß sind, nur die Vorzeichen sind unterschiedlich. Würde bei der Aufnahme die Kamera um einen bestimmten Winkel gegen die Horizontale verdreht, so wären die Links-/Rechtswerte je nach Drehrichtung um diesen Winkel vergrößert oder verkleinert.
    Das bedeutet (...)

    Also wenn ich von meinen Freihandaufnahmen ausgehe, dann ist das ein Sonderfall. Meist ist auch der Elevationswinkel von Null verschieden weil die Kameraausrichtung irgendwie windschief war. Das wiederum bedeutet, dass ich die Rechts-/Linkswerte unterschiedlich einstellen muss.
    Das rechnerische Verfahren würde mir also nur bei einer verschwindend kleinen Anzahl von Bildern etwas bringen. Und das, obwohl ich meist die "Wasser"waage eingeschaltet habe. Mit dem JI bekommt man doch alles gerade! Ein anderes elegantes Ausrichtverfahren hat der Raw-Konverter SILKYPIX. Dort gibt es nur drei Schieberegler: Drehung, horizontale und vertikale Perspektive. Lightroom 6 kann es sogar großteils automatisch., wie auch ShiftN.

    Gruß softride
    Lumix GM1, GX7, GX80, GX9, P7-14, P8, P1,7/15, P12-32, P2,8/45, O1,8/45, O1,8/75, P14-140 II, P100-300, P100-400

  • Also wenn ich von meinen Freihandaufnahmen ausgehe, dann ist das ein Sonderfall. Meist ist auch der Elevationswinkel von Null verschieden weil die Kameraausrichtung irgendwie windschief war. Das wiederum bedeutet, dass ich die Rechts-/Linkswerte unterschiedlich einstellen muss.

    Nein musst du nicht, du kannst eben auch die Rechts-/Linkswerte symmetrisch einstellen und zusätzlich den Rotationswinkel einsetzen. Gerade darum können Programme wie Silkypix auf getrennte Regler für links und rechts verzichten.
    Ich bin sogar der Meinung man erhält perspektivisch nicht korrekt entzerrte Bilder, wenn man die Links-/Rechtswerte unterschiedlich einstellt statt symmetrisch + Rotationswinkel. Ich bin aber nicht der Experte für das Entzerrungsthema.

  • Es ist schon so, wie Franz sagt, unter zwei Voraussetzungen: Man hat mindestens zwei Linien im Bild, die in natura lotrecht stehen, also z.B. Säulen, Telefonmasten oder Häuserkanten eines nicht zu modernen Architekten, und das Bild wurde nicht unsymmetrisch beschnitten. Wenn man das nachfolgende Bild betrachtet, kann man das auch ganz gut verstehen:
    Alle Parallelen der dreidimensionalen Welt treffen sich in einem Fluchtpunkt. Wenn diese Parallelen senkrecht nach oben in den Himmel führen, dann liegt ihr Fluchtpunkt F auch im Bild senkrecht oberhalb der Bildmitte M, sofern die Kamera nicht seitlich gekippt wurde. Bei dieser Aufnahme war die Kamera um 28 Grad nach rechs gekippt.



    Wenn man im korrekt am Horizont ausgerichteten Bild von M aus dieselbe Strecke d nach rechts und nach links geht bis zu den Punkten A und B, dann erhält man ein gleichschenkliges Dreieck ABF und die Winkel Alpha und Beta sind gleich groß, hier 67 Grad.
    Wenn man im nicht ausgerichteten Bild um gleiche Strecken d1 nach rechts und links geht bis zu den Punkten A1 und B1, so erhält man die Winkel Alpha1 = 95Grad und Beta1 = 45Grad. Aus diesen beiden Winkeln lässt sich nicht (wie pixelfan angenommen hat) der Drehwinkel 28 Grad ermitteln. Dazu müsste man unsymmetrisch nach rechts bis B' gehen mit dem Winkel Beta' = 39Grad. Die Bezugspunkte A1 und B1 für die beiden Regler in ji liegen aber gleich weit von M entfernt, insofern ist pixelfans Rechnung nur bei kleinen Drehwinkeln näherungsweise korrekt.
    Es empfiehlt sich also die Methode von Franz. :daumenhoch:


    Müßte denn bei dieser Berechnung nicht auch noch der jeweilige Abstand zur Mittellinie rein, nicht immer gibt es ja überall im Bild Senkrechten.

    Dieser Abstand wird bereits durch das Gitternetz selber berücksichtigt: Die Winkel, die man mit den Reglern einstellt, treffen für die beiden Punkte A1 und B1 am Bildrand zu. Je näher an der Mitte, umso kleiner ist der Winkel der Fluchtlinien zum Lot hin.

  • @'pixelfan:
    Dein Vorschlag zu einer Nivellieren-Funktion ist jedenfalls überlegenswert, auch wenn es nicht ganz so funktioniert wie vorgeschlagen. Wenn man nämlich das Bild nur am unsichtbaren Horizont ausrichten möchte, ohne die stürzenden Linien zu beseitigen, so muss man nach Franz' Methode vor dem Anwenden die Regler für "rechts" und "links" wieder zurückstellen.

    Wendet man "Bild ausrichten perspektivisch" an, so gibt es zwar keine angezeigten Links-/Rechtswerte, trotzdem könnte auch hier das Nivellieren erfolgen.

    Das halte ich nach einigem Überlegen nicht für sinnvoll. Der Sinn der "perspektivischen Entzerrung" ist ja ein ganz anderer: man möchte ein beliebig schräg fotografiertes Rechteck in wahrer Größe darstellen, so als hätte man es frontal auf seine Mitte blickend fotografiert. Das hat nun mit der Bildmitte und dem natürlichen Horizont eigentlich gar nichts zu tun.

  • Die Bezugspunkte A1 und B1 für die beiden Regler in ji liegen aber gleich weit von M entfernt, insofern ist pixelfans Rechnung nur bei kleinen Drehwinkeln näherungsweise korrekt.
    Es empfiehlt sich also die Methode von Franz. :daumenhoch:


    Es stellt sich allerdings die Frage, wie groß ist der Fehler? An Hand des Beispiels ist eine Ermittlung über Ji nicht möglich, dafür ist der Winkel A1-B'-F viel zu klein (B'-F gegen die rechte Vertikale viel zu groß), denn JI lässt für den linken und rechten Perspektivwinkel nur Werte von max 10,1° zu. (Der Winkel erschien mir immer schon zu klein, wären nicht auch z.B. 15° möglich?). Ich habe daher versucht, den Fehler mittels zweier hierzu erstellter Bilder zu ermitteln, bei denen ein exakter Horizont die Kontrolle einer korrekten Ausrichtung ermöglicht.


    Bild 1: Messwert links +0,8°, rechts +7,3°, daraus berechnet: Drehen 4,05°, links -3,25°, rechts +3,25°, eingestellt jeweils 3,3.
    Ergebnis zur Methode von Franz: Kein Unterschied erkennbar.


    Bild 2: links +5,9°, rechts +6,0°, daraus berechnet: Drehen +5,95°, links -0,05°, rechts +0,05°, eingestellt 0,0.
    Ergebnis zur Methode von Franz: Kein Unterschied erkennbar.


    Wenn kleine Unterschiede auftreten können (oder auch keine), dann kann es an den Stufensprüngen der linken und rechten Perspektivwerte liegen. Währen beim Drehen der Stufensprung 0,05° beträgt, ist es bei der Perspektive 0,1°, in ungünstigen Fällen, z.B. ist der Wert 3,5° nicht möglich, sogar 0,2°.


    Aber unabhängig davon, ab welchen Werten Ungenauigkeiten zu Tage treten, sie werden größer, je weiter sich der Fluchtpunkt von der senkrechten Mittelache des Bildes entfernt hat. Daraus lässt sich sicher ein Korrekturfaktor ableiten, der in meine Formeln einfließen könnten.


    Hier möchte ich noch einmal an die Ausgangslage zu meinem Vorschlag erinnern: Im auszurichtenden Bild ist keine Horizontlinie enthalten, nur stürzende Linien stehen zur Verfügung.


    Die Methode von Franz beruht auf Probieren: Welchen Drehwinkel und gleichzeitig welchen Links-/Rechtswertemuss man einstellen, damit die "vertikalen" Gitternetzlinien mit den "vertikalen" Linien des Objektes zur Deckung kommen. Bei 2 Unbekannten beeinflussen Glück und Ausdauer bei den Ausrichtversuchen die Genauigkeit des Ergebnisses.


    Meine Methode beruht auf Messen: Es werden lediglich die linke und die rechten Gitterlinien mit den Objektlinien zur Deckung gebracht und dadurch gemessen. Die Auswertung wird Ji überlassen. Das benötigt auf jeden Fall weniger Zeit.


    Quote from bertram

    Dein Vorschlag zu einer Nivellieren-Funktion ist jedenfalls überlegenswert, auch wenn es nicht ganz so funktioniert wie vorgeschlagen. Wenn man nämlich das Bild nur am unsichtbaren Horizont ausrichten möchte, ohne die stürzenden Linien zu beseitigen, so muss man nach Franz' Methode vor dem Anwenden die Regler für "rechts" und "links" wieder zurückstellen.


    Wenn die Taste "Nivellieren" keine Checkbox hätte, sondern sich direkt im Dialog "Bild ausrichten" entsprechend der Berechnung auswirken würde, dann könnte das Gitternetz ausgerichtet werden und man hätte die Möglichkeit, die Regler "rechts" und "links" wieder zurückzustellen oder auch allgemein Feinkorrekturen für "oben" und "unten" vorzunehmen.

  • Vielen Dank für deine Mühe!


    Es stellt sich allerdings die Frage, wie groß ist der Fehler? ... Kein Unterschied erkennbar.

    Da hast du völlig recht. Bei diesen kleinen Winkeln ist der Fehler vernachlässigbar.


    Wenn die Taste "Nivellieren" keine Checkbox hätte ...

    Ja, so könnte ich mir das auch vorstellen. Diese Taste sollte nur Einfluss auf die aktuelle Reglerstellung nehmen.


    Der Winkel erschien mir immer schon zu klein, wären nicht auch z.B. 15° möglich?

    Das müsste ich erst ausgiebig nachforschen. Es kamen hier zwei, drei Dinge zusammen, die Anlass dafür waren, dass wir nur Winkel bis 10 Grad zugelassen haben.

  • @bertram
    Danke für die Implementierung der Taste "Nivellieren" und den auf 15,1°erhöhten Winkel. Hierbei erhält der Drehwinkel allerdings einen kleinen Fehler.


    Die Bezugspunkte A1 und B1 für die beiden Regler in ji liegen aber gleich weit von M entfernt, insofern ist pixelfans Rechnung nur bei kleinen Drehwinkeln näherungsweise korrekt.


    Wenn aber meine Formel "Drehen" = 0,5 * (l + r) ersetzt wird durch "Drehen" = tan^-1(0,5 * (tan(l) + tan(r)), dann erhält man den korrekten mathematischen Wert für beliebig große Drehwinkel. Über ein CAD-System habe ich ein Testbild erstellt, mit der man die Arbeitsweise prüfen kann.



    Allerdings darf wegen der Schieberbeschränkung auf 15,1°der linke oder rechte Winkel nicht größer sein - bei deinem Anschauungsbild ist also keine Drehwinkelbestimmung möglich. Eigentlich schade, denn der Winkel wird ja nur als Messwert benötigt. Das Testbild zu deinem Bild sieht so aus.



    Mir ist aufgefallen, dass es bei jedem 8. Schritt der Schieber links und rechts einen Sprung gibt, es fehlt also z.B. 0,4 - 1,2 - 2,0 - 2,7 - 3,5 - 4,3 etc.

  • Ich bewundere deine Ausdauer. :smile:
    Bei deinem Testbild macht die Ungenauigkeit gerade mal 0,15 Grad aus. Ich kann mir kein Foto vorstellen, wo es darauf ankommt, zumal der Horizont ja nicht sichtbar ist. Wenn er sichtbar ist, dann wird man das Gitter an ihm ausrichten. Wenn man lotrechte Linien in der Nähe der Bildmitte hat, wird man sich eventuell daran orientieren (und macht dabei auch einen kleinen Fehler, wenn die Linie nicht genau in der Mitte ist). Und auch Horizonte sind meist nicht exakt waagrecht, mit Ausnahme von Wasserlinien. Andererseits spricht auch gar nichts dagegen, das mathematisch exakt zu machen.


    Mir ist aufgefallen, dass es bei jedem 8. Schritt der Schieber links und rechts einen Sprung gibt

    Das hat "historische" Gründe und stammt aus der Anfangszeit von ji. Bei der Überlegung, wie fein der Regler arbeiten soll (der ja nur ganzzahlige Positionswerte annehmen kann), haben wir damals als Basis 1/500 genommen, was im Bogenmaß grob 0,1 Grad entspricht. Da der angezeigte Wert auf 1 Dezimale gerundet wird, scheint es so, als wären da Sprünge. Das können wir bei Gelegenheit gerne mal ändern.


    Allerdings darf wegen der Schieberbeschränkung auf 15,1°der linke oder rechte Winkel nicht größer sein - bei deinem Anschauungsbild ist also keine Drehwinkelbestimmung möglich. Eigentlich schade, denn der Winkel wird ja nur als Messwert benötigt.

    Wenn die beiden Winkel nur zur Nivellierung benutzt würden, könnten wir natürlich größere Winkel zulassen. Der Hauptzweck ist ja aber das Ausrichten stürzender Linien. Und da ist mit unserem Näherungsverfahren ein Winkel von 15 Grad eigentlich schon mehr als grenzwertig. Das siehst du, wenn du mal ein Schachbrett oder ein Karomuster schräg fotografierst und dann versuchst im Modus "normal" auszurichten. Deswegen haben wir die korrekte perspektivische Art der Entzerrung entwickelt. Dabei geht es aber nicht um einen Horizont.


    Das "korrekte" Nivellieren ist ein nützliches Feature, aber nicht der Hauptzweck beim Ausrichten.

  • Hallo Walter,
    ich hab nochmal über deine Rechnung nachgedacht. Die Berechnung des Drehwinkels ist korrekt. Man müsste konsequenterweise jetzt aber auch die beiden Winkel ausrechnen, die die Regler "links" und "rechts" beim Nivellieren annehmen sollen. Ansonsten liegen die beiden Schenkel nicht mehr exakt auf den ausgemessenen Linien. Einfach den Drehwinkel addieren/subtrahieren wäre wieder mit einem kleinen Fehler behaftet.

  • Das stimmt, mit größer werdendem Drehwinkel nimmt der Fehler nicht vertretbar zu. Bei kleinerem Winkel (< 8° bis 10°), wie bei unabsichtlich nicht waagerecht gehaltener Kamera, ist er allerdings bedeutungslos.


    Mit folgender Formel für "rechts/links" werden die beiden Schenkel jedoch exakt parallel zu den seitlichen Bildrändern ausgerichtet:


    tan(ß) = 0,5 * sin(tan^-1(0,5 * (tan(r) + tan(l)))) / (0,5 + (tan(l)/(tan(r)-tan(l))))

  • Wenn der linke und rechte Winkel beide gleich große Werte haben (z.B. je +2,1), dann öffnet beim Betätigen der Taste "Nivellieren" die Fehlermeldung "Gleitkommadivision durch Null." Nach der Formel im Beitrag 15 > Bilder ohne sichtbaren Horizont ausrichten dürfte diese jedoch nicht erscheinen.


    Die Eingabe der Zahlenwerte in die Formel =DEG(ARCTAN(0,5*(TAN(RAD(2,1)) +TAN(RAD(2,1))))) meines OOC-Programms ergibt den Drehwinkel 2,1.