Bildskalierung



  • Hallo Forum.

    Ich muss für eine Auswertung ein Bild in der Höhe skalieren. Und zwar soll nicht jeder Bildbereich gleich stark skaliert werden, sondern anhand eines Verlaufes. Am einfachsten läßt es sich an einem Farbverlauf erklären. Genau wie dieser soll anhand einer Linie das Bild immer stärker skaliert werden.

    Jetzt suche ich nach Ansätzen wie das umzusetzen sei. Wäre schön wenn jemand einen Tipp hat.

    Viele Grüße
    Hans



  • Hallo Hans B.,

    eine Skalierung entspricht einer Multiplikation mit einer Matrix. Wenn du im 2D-Raum bleibst wird folgende Matrix verwendet:

    | Sx 0 |
    | 0 Sy |

    Wobei Sx in x-Richtung und Sy in y-Richtung skaliert. Du müsstest jetzt irgendwo in einer Tabelle ablegen auf welchen Bereich welcher Skalierungsfaktor angewendet werden soll und dann die Matrix aufbauen und die Koordinaten des jeweiligen Punktes damit multiplizieren.

    Viele Grüße,
    MaBa



  • Danke MaBa für deine Antwort.

    Theoretisch müsste ich so jeder Zeile einen eigenen Wert zuordnen. Ich denke das wäre möglich. Jedoch muss ich die Werte interpolieren, da ich ja nur Zahlenwerte als Ergebnis haben kann für die Koordinaten eines Pixels. Welcher Algorithmus ist dafür geeignet?

    Grüße Hans



  • Z.B. ein bilineares oder bikubisches Filtering...



  • Das sind hier richtige Lösungen die aber auch sehr langsam sind. Wenn du es schneller haben willst gibt es einen Algo der auf Bresenhams drawline basiert. Musst du mal nach googeln.

    Gruß Blue-Tec


Anmelden zum Antworten