-         
Ergebnis 1 bis 5 von 5

Thema: Bild perspektivisch drehen

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    27
    Beiträge
    1.568

    Bild perspektivisch drehen

    Anzeige

    Hi,

    für ein aktuelles Projekt nehme ich per Usb-Webcam ein Bild auf.
    Aufgrund der Gegebenheiten betrachtet die Kamera das Objekt aber nicht senkrecht von oben, sondern um die x-Achse gedreht (genauer Winkel steht noch nicht fest, werden ca 30° werden).
    Auf dem Bild befinden sich verschiedene Punkte, deren Lage zueinander ich bestimmen möchte. Dafür muss ich das Bild drehen, und zwar so, als ob es senkrecht von Oben aufgenommen worden wäre.
    Mein Programm ist / wird in Visual Studio C# .net geschrieben, auf externe Bibliotheken etc. möchte ich verzichten!
    Laufzeit ist nicht sonderlich relevant, solange die Operation im einstelligen Sekundenbereich bleibt.
    Ursprünglich dachte ich an eine Drehmatrix, allerdings fehlt mir momentan noch die zündende Idee wie ich das alles zusammen bringe...
    Über Suchvorschläge, Beispielcodes, etc ... wäre ich sehr dankbar!

    Vielen Dank & Gruß
    Chris

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Defiant
    Registriert seit
    17.04.2005
    Ort
    Hamburg
    Beiträge
    120
    Wenn ich deine Beschreibung richtig verstanden habe, dann solltest du im Internet nach dem Stichwort "perspektivische Transformation" suchen. In der OpenCV-Bibliothek in der Funktion warpPerspective() implementiert. OpenCV einzubinden lohnt sich langfristig wenn man etwas mit Bildverarbeitung auf der CPU berechnen möchte.

    In Kapitel 3.2.2 dieser Masterarbeit wird die perspektivische Transformation zwar für die Implementierung auf einem FPGA erläutert, aber die grundlegenden Konzepte sind ja in der Software-Implementierung ebenfalls gültig.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken pt_explain.jpg  
    Geändert von Defiant (23.09.2020 um 09:05 Uhr)

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    07.04.2015
    Beiträge
    656
    Mal ganz unbedarft gefragt: Geht das bei Objekten mit Tiefeninformation ohne Stereo überhaupt? Z.B. bei einem Haus perspektivisch von oben geknipst würde man keine Wände sehen, aus 30° Schräge heraus schon.
    Geändert von Holomino (23.09.2020 um 09:39 Uhr)

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Moppi
    Registriert seit
    18.03.2018
    Beiträge
    2.185
    Blog-Einträge
    20
    Beziehend auf das Bild von Defiant:

    So hatte ich das auch verstanden. Meine spontane Antwort wäre gewesen (weil ich das Anfang der 90er, zur Berechnung von 3D-Objekten und den zugehörigen Bitmaps für die Flächen, selbst gemacht/ausprobiert habe ...), ja man kann das machen, es ist eine rel. einfache Berechnung der Pixel.

    Aber Holomino:

    Stimmt schon so, man bekommt durch eine einfache, zweidimensionale Transformation keine zusätzlichen Bildinformationen. Entweder, es verschwinden welche (weil eine Seite gestaucht wird) oder sie bleiben erhalten, aber es kommen keine neuen hinzu. Das kann man mit einem Grafikprogramm, das so was kann, einfach ausprobieren (bei mir ist das bei Geometrieeffekte: Horizontal-, Vertikalperspektive zu finden).

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    27
    Beiträge
    1.568
    Hi,

    genau das habe ich gesucht und bin mittlerweile auch einigermaßen fündig geworden:
    https://math.stackexchange.com/quest...nd-without-svd
    Allerdings verstehe ich nicht, wie man in diesem Beispiel auf die Matrix kommt, weil P^-1 in dem Beispiel multipliziert mit [0 0 0 0 0 0 0 0 1] ergibt bei mir wieder [0 0 0 0 0 0 0 0 1].
    Vielleicht könnte sich das jemand ansehen und mir sagen, wo ich einen Denkfehler habe?
    In dem Thread scheint sich keiner daran zu stören, weswegen ich davon ausgehe, dass der Lösungsweg richtig ist.

    Vielen Dank & Gruß
    Chris

    EDIT:
    Sorry war mein Fehler, hab mir eine Matrix falsch ausgeben lassen und dadurch wurde ich die Inverse dazu auch falsch berechnet.
    Mein Code funktioniert jetzt soweit, dass ich ein Bild "drehen" kann.
    Vielleicht hätte jemand noch einen leichtverständlichen Code zur Inversiven-Matrix Berechnung zur Hand? Muss momentan noch die Matrix in eine Textform ausgeben lassen, die dann online umrechnen und wieder ins Programm einfügen.
    Geändert von Che Guevara (26.09.2020 um 15:57 Uhr)

Ähnliche Themen

  1. Laser-3D-Bild
    Von Philipp83 im Forum Elektronik
    Antworten: 15
    Letzter Beitrag: 06.06.2007, 08:53
  2. Was ist das für ein Teil(Bild)
    Von RoboSeba im Forum Elektronik
    Antworten: 15
    Letzter Beitrag: 16.05.2007, 10:37
  3. Was ist das für ein Teil(Bild)
    Von RoboSeba im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 15.05.2007, 18:29
  4. Was ist das für ein transistor ? (Bild)
    Von PsiQ im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 14.05.2007, 12:08
  5. 81Fullcolor Led Bild
    Von Furtion im Forum AVR Hardwarethemen
    Antworten: 37
    Letzter Beitrag: 18.03.2007, 19:48

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •