Forum: Mikrocontroller und Digitale Elektronik Videobild kleiner skalieren


von Bernhart (Gast)


Lesenswert?

Guten Tag

Ich möchte mir für ein Projekt einen "Down" Skaler bauen.
Es geht also darum z.b. ein Videobild das jetzt mal digital vorliegen 
mag, in ein kleineres umzuwandeln.

Wie skaliert man, welche verbesserungsmethoden gibt es, oder kurz gesagt 
wonach kann man suchen.

Ich möchte das entweder mit schnellem Prozessor oder FPGA umsetzen. Es 
geht aber erst einmal um die Theorie. Jede Info außer "lass es, gibt es 
ja schon, u.s.w." hilft mir weiter.

von Fred (Gast)


Lesenswert?

... nimm jedes zweite Pixel der zweiten Zeile. usw

damit bleibt Dein Bild auch noch bei seeeeehr großer
Verkleinerung schemenhaft erkennbar!

Gruß Fred

von Marius S. (lupin) Benutzerseite


Lesenswert?

Wenn dein Zielbild zB 40 px breit ist und dein Ausgangsbild 60px musst 
du im Ausgangsbild für jeden Pixel im Zielbild 60/40 px Schritte machen, 
damit landest du zwischen den Pixeln. Den Nachkommawert der aktuellen 
Position kannst du nehmen um zwischen den Pixeln linear zu 
interpolieren.

von Bernhart (Gast)


Lesenswert?

OK, sowas geht ja, gibt es da auch noch Softwarespielereihen um das 
ganze schärfer oder genauer darzustellen, bis jetzt ist das ja zeitlich 
gesehen nichts unmögliches. (Was gut ist)
Ich kenne aus dem DTP Bereich RasterImageProzessoren (Rips) die habens 
ganz schön in sich.

von Marius S. (lupin) Benutzerseite


Lesenswert?

Mit der beschriebenen linearen interpolation hat man schon nen recht 
brauchbares bild.

Wenn das Seitenverhältnis ein anderes ist gibt es noch Technologien 
welche das Bild unverzerrt skalieren können (rechenintensiv).

von 3361 (Gast)


Lesenswert?

Es gibt im Wesentlichen 2 Moeglichkeiten. Man legt das neue Bild 
skaliert auf das Alte.
1) Man nimmt der Farbwert an der alten position
2) Man gibt dem neuen Pixel die Farbe der im alten Bild ueber dieses 
Pixel integrierten Flaeche.
Version 2 gibt mehr zu rechnen.

von Bernhart (Gast)


Lesenswert?

Auch nicht schlecht, bis jetzt habe ich alles soweit verstanden, gibt es 
dafür einen Fachnamen oder ein Tutorial oder Bilder die Unterschiede 
verdeutlichen.

von HildeK (Gast)


Lesenswert?

Ich war da mal Fachmann - ist aber schon lange her. Schon vor der Zeit 
des Internet, so dass ich auf Links nicht verweisen kann. Ich meine 
aber, bei Wikipedia schon Themen dazu gesehen zu haben.

Technisch richtig und aufwendig sind zwei Abtastratenwandlungen. Erst 
mal noch oben, also soweit die Pixelzahl vervielfältigen, dass die neue 
Zahl Pixeln pro Zeile ein ganzzahliger Teiler ist (KGV). Und dann wieder 
nach unten auf die gewünschte Zahl Pixeln/Zeile.

Bei dem Beispiel von Marius S. wäre das:
Zuerst die 60pel auf 120pel aufblähen, also Abtastrate verdoppeln, dann
120 auf 40pel reduzieren durch ARW um Faktor 3 nach unten.
Die ursprüngliche Folge sei: x1, x2, x3, x4 usw.
Man fügt zunächst '0' ein, um auf die doppelte Rate zu kommen, also x1, 
0, x2, 0, x3, 0, usw., filtert dann, erhält die Folge
x1a, x1b, x2a, x2b, x3a, x3b, usw., nimmt jeden 3. Wert und das Ergebnis 
ist
x1a, x2b, x3a, x4b usw.

Das ganze natürlich zweidimensional - also in vertikaler Richtung auch.
Zur Abtastratenwandlung gehört natürlich auch eine entsprechende 
Anwendung von Filtern. Dabei kann man sich durch geschickte Verfahren 
die u.U. hohe Zwischentaktfrequenz (manchaml?) sparen, mit Grips und 
Mathe ...

Die oben genannten Mittelwertbildungen bzw. Interpolationen sind zwar 
auch nichts anderes ( (a+b)/2 ist das einfachste digitale Filter ) , 
aber diese bringen eine stärkere Verschlechterung der Schärfe als 
notwendig wäre.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.