![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Magica et Technica Autos -Audi 80 -Ford Mondeo -Nachrüsten -Gimmicks -Sonstiges Videos -Video digitalisieren und restaurieren -Videoschnitt mit Media Studio Pro -Bildfilter - Was funktioniert wie? -Videomedien für Consumer und Profis Fotos Computer Handwerk
|
Videos filtern: Was bewirkt was?
Das Filtern von Videos ist eine Wissenschaft für sich. Da jedes Videosignal anders beschaffen ist und immer andere Ziele verfolgt werden (optimale Rauschfreiheit und dabei in Kauf nehmen, daß das Bild zu stark geglättet wird, Bild natürlich und homogen halten und dabei Restrauschen in Kauf nehmen) werde ich auch hier, genau wie im Videorestaurationsguide, keine speziellen Empfehlungen für Filter und Parameter aussprechen. Vielmehr geht es um das Verständnis der Filter und somit um die Möglichkeit, sich selbst die optimalen Parameter herauszusuchen und dabei zu verstehen, was passiert. Denn experimentell mag man gute Ergebnisse erzielen können, aber für das Optimum muß man den technischen Hintergrund der Filter kennen.
1. Filtergattungen Sicher gibt es viele Gattungen von Filtern, aber die wichtigsten zwei, mit denen man eigentlich schon in Hinsicht auf Rauschen und Schärfe alles erreichen kann was man will sind die Matrixfilter und die Rangordnungsfilter.
1.1 Der Matrixfilter Der Matrixfilter, oder auch Faltung (englisch Convolution) genannt, ist ein theoretisch umkehrbarer Filter. Gemäß den Theoremen der Fourier-Transformation entspricht eine Faltung im Zeit-/Ortsbereich einer Multiplikation im Frequenzbereich. Was bedeutet das? Man kann jede Faltungsmaske fouriertransformieren. Das Ergebnis ist das Frequenzspektrum der Maske. Auch ein Bild hat ein Frequenzspektrum. Multipliziert man nun das Spektrum des Bildes mit dem Spektrum der Matrix und transformiert dieses zurück erhält man das Faltungsprodukt. Aber auch ohne den komplizierten Weg der Fouriertransformation kann man falten. Aber warum erkläre ich das dann? Ganz einfach: Viele Filtermatrizen sind absolut nicht anschaulich. Guckt man sich diese jedoch im Frequenzbereich an und sieht das Spektrum weiß man sofort was passiert. Werden hohe Frequenzen abgesenkt oder angehoben, was passiert mit tiefen Frequenzen und dem Gleichanteil, und wie und warum kann man Matrixfilter umkehren? Leider findet man nur selten zu einer Faltungsmatrix eine Fourier-Transformierte, außerdem wird man mit den Masken selbst nur recht selten etwas zu tun bekommen. Wie funktioniert die Faltung im Zeitbereich? Das ist ganz einfach. Der Bezugspunkt der Matrix liegt in der Mitte. Man legt diese Matrix mit dem Bezugspunkt auf den zu filternden Pixel, die benachbarten Felder der Matrix liegen dann über den benachbarten Pixeln (am Bildrand wird das Bild künstlich periodisch fortgesetzt). Genau an dieser Stelle entsteht dann ein im neuen Bild ein neuer Pixel bestehend aus der mit einem Gewichtungsfaktor dividierten Summe aller unter der Matrix befindilchen Quellbild-Pixel, die jeder mit ihrem persönlichen Faktor aus der Faltungsmatrix multipliziert werden. Warum muß man gewichten? Ganz einfach, eine 1-Dimensionale 3-teilige Gauss-Unschärfe hätte die Faltungsmatrix 1-2-1. Faltet man hiermit ein Signal das konstant den Wert 10 hat (10-10-10-...) bekäme man an jedem Punkt 1*10+2*10+1*10 - und somit glatte 40 und einen viel höheren Wert. Also muß man mit 1+2+1=4 dividieren und hat wieder 40/4=10. Ein 1-Dimensionales Beispiel: Faltungsmaske ist 1-2-1 also die bereits erwähnte Gauss-Unschärfe mit drei Werten, Gewichtungsfaktor 10, und wie bei jeder Faltung liegt der Bezugspunkt in der Mitte (also auf der 2). Das Signal ist 10-50-40-30-70-40-0-10-100-30. Wie faltet man das jetzt? Legen wir die Faltungsmaske also auf den ersten Wert, die 10: Da diese keinen links benachbarten Pixel hat setzen wir das Signal periodisch fort und greifen ganz am Ende die 30 ab, der rechte Nachbar ist die 50. Also 1*30+2*10+1*50, dividiert durch den Normalisierungsfaktor 4. Ergibt 25. Weiter mit dem zweiten Wert, der 50, linker Nachbar die 10, rechter Nachbar die 40. (1*10+2*50+1*40)/4=37,5. Für alle die das mal üben wollen falte ich das Signal mal komplett durch und schreibe euch als Referenz die Lösung hin: 25-37,5-40-42,5-52,5-37,5-12,5-30-60-42,5 - man sieht also, der Auf-Ab-Trend ist immer noch deutlich erkennbar, aber die Kanten sind weicher, das Signal wirkt verwaschen, da die hohen Frequenzen die für scharfe Sprünge nötig sind herausgefiltert wurden. Wir haben es hier also mit einem Tiefpass zu tun. Das gleiche funktioniert auch im zweidimensionalen, die Matrix muß immer quadratisch sein, die Größe eine ungerade Zahl (3x3, 5x5, 7x7) da man sonst den Bezugspunkt nicht in die Mitte legen kann. Ach ja, wie kommt man von einer 1-dimensionalen Faltungsoperation auf eine zweidimensionale? Man faltet die 1-dimensionale Maske mit der transponierten 1-dimensionalen. Hört sich schlimm an, ist es aber nicht.
Der Wert für den Bezugspunkt ist fett gedruckt. Und schon haben wir die Matrix für eine 2-dimensionale 3x3 Gauss-Unschärfe. Für die Mathematiker: * ist in dem Fall der Faltungsoperator, x eine normale Multiplikation, und | | sind nicht etwa Betragsstriche sondern sollen die Matrix einfach nur optisch abgrenzen (wie die große um die Matrix gezogene Klammer), sorry für die Ungenauigkeiten, aber HTML erlaubt ja nicht viel an Formatierung und Zeichen, und das ganze in ein Bild zu machen, da hatte ich jetzt auch nicht so viel Lust zu. Noch ein Wort zur Umkehrbarkeit: Wie gesagt läßt sich jeder Matrixfilter theoretisch umkehren. Das sieht man wieder besonders gut im Fourier-Spektrum. Man braucht die Parameter zur Matrix nur so zu wählen, daß exakt das inverse Spektrum entsteht (1/Spektrum). Das geht natürlich nur solange noch Frequenzanteile vorhanden sind. Dämpft z.B. ein Tiefpass hohe Frequenzanteile so stark ab, daß sie quasi nicht mehr vorhanden sind, so hätte der inverse Tiefpass bei hohen Frequenzen nahezu unendliche Spektralanteile - sprich hohe Frequenzen würden unendlich hoch angehoben, was unweigerlich zu extremem Rauschen führt da sowohl vorhandenes Restrauschen verstärkt wird, alsauch im Bereich der hohen Frequenzen Fantasiewerte entstehen können. Somit bleiben Matrixfilter nur theoretisch 1:1 umkehrbar, in der Praxis sind sie nur nahezu umkehrbar. Da Matrixfilter jedoch alle Arten von Filtern (Hochpass, Tiefpass, Bandpass, Bandsperre) und ihre Inversen dazu zulassen, kann man mit ihnen jede Art von Filter, von Unschärfe (Tiefpass), Schärfen (inverser Tiefpass) über Kantendetektion (Hochpass) bis hin zu Spezialeffekten wie Emboss/Reliefprägung erzielen.
1.2 Der Rangordnungsfilter Ein Rangordnungsfilter, der bekannteste ist der Median, sieht auf den ersten Blick aus wie ein Matrixfilter. Allerdings besitzt seine Matrix keine Wichtungskoeffizienten wie bei einer klassischen Faltungsmatrix. Genaugenommen hat der Rangordnungsfilter garkeine Matrix oder Maske sondern ein Struktuelement welches beliebige Formen annehmen kann. Dieses Strukturelement legt man wie schon eine Faltungsmaske mit dem Bezugspunkt auf einen Bildpixel. Sämtliche Pixel unterhalb des Strukturelements werden aufgelistet und sortiert. Dann wird an der Stelle des Bezugspunktes ebenfalls wieder ein Punkt erstellt, und zwar mit dem Wert, der in sortierten Liste am Anfang (Min-Filter), am Ende (Max-Filter) oder eben in der Mitte (Median-Filter) steht. Min und Max haben in der Videobearbeitung recht wenig Bedeutung sondern sind eher für die Bildverarbeitung in der Mustererkennung interessant. Median hingegen ist ein sehr effizienter Filter gegen Alterung, sowohl von Videomaterial alsauch von Personen. Warum erkläre ich an folgendem, der Einfachheit halber wieder 1-dimensionalen Beispiel: Wir haben das Signal 0-1-2-1-0-100-99-98-99-100-99-98-50-49-48-47-46-45-44. Das Strukturelement des Medians sei 3 Werte groß und der Bezugspunkt liegt wieder in der Mitte. Da ich beim Median das Signal nicht periodisch fortsetzen will (auch wenn ich könnte) beginne ich mit dem zweiten Wert und da der Bezugspunkt in der Mitte liegt seinem linken und rechten Nachbarn. Also haben wir die Wetegruppe 0-1-2. Sortieren erübrigt sich hier ausnahmsweise. Der Median greift sich den in der sortierten Liste mittleren Wert ab, also die 1. Weiter geht es mit der Wertegruppe 1-2-1 welche sortiert 1-1-2 gibt, also wieder eine 1. In diesem Konzept filtere ich nun das komplette Signal Median. Um wieder auf die gleiche Anzahl von Werten zu kommen übernehme ich den ersten und den letzten Wert der Reihe 1:1, diese werten kursiv markiert: 0-1-1-1-1-99-99-99-99-99-99-98-50-49-48-47-46-45-44. Was sieht man? Die unebenen Flächen mit den leicht schwankenden Werten werden glattgebügelt. Die Kanten bleiben hierbei jedoch scharf und auch die abfallende Rampe am Ende der Wertereihe wird nicht angegriffen, bleibt unverändert. Die leichten Schwankungen in der jetzt geglätten Fläche hätten vieles sein können. Rauschen (Altern von Videos), aber auch Falten im Gesicht (Altern von Personen) oder eine Rauhfasertapete. Wie ich bereits erwähnte muß beim Rangordnugnsoperator das Strukturelement keine besonderen Anforderungen an Form und Position des Bezugspunktes erfüllen. Ein Strukturelement kann eine 3x3 Matrix sein, aber auch ein + oder ein L. Auch ein hohles 3x3 Quadrat ist möglich Hierbei fließt der Wert der unter dem mittleren Element der 3x3 Matrix liegt nicht in die Rangordnungstabelle mit ein. Der Bezugspunkt, sprich der Pixel im neuen Bild der den Wert zugewiesen bekommt, darf trotzdem weiterhin unter diesem "Loch" in der Matrix liegen. Ob das im Bezug auf Video Sinn macht sei dahin gestellt. Ein Rangordnungsfilter ist nicht linear. Bedeutet es existiert kein Fourier-Spektrum des Operators und vor allem: Der Filter ist nicht umkehrbar.
2. Filterarten Welche Filterarten kann man nun unter Anderen aus diesen Filtergattungen ableiten?
2.1 Der gleitende Mittelwert (Matrixfilter, Charakter Tiefpass) Der einfachste Matrixfilter ist der gleitende Mittelwert. Für 3x3 sieht er wie folgt aus:
Schon mit 3x3 erzeugt dieser Filter eine recht starke Unschärfe. Allerdings ist das Frequenzspektrum dieser Matrix mehr als ungünstig, da manche hohen Frequenzanteile doch noch sehr stark durchgelassen werden. Außerdem ist der Tiefpass recht steil was zu Filterklingeln (beidseitig abstrahlende Doppelkonturen um scharfe Kanten) führen kann. Um den Filter im Frequenzbereich steiler zu machen, sprich das Bild noch stärker zu verwaschen, muß die Matrix vergrößert werden, z.B. auf 5x5.
2.2 Gaussian Blur (Matrixfilter, Charakter Tiefpass) Den Gauss-Filter erwähnte ich ja bereits als Beispiel für den Matrix-Filter. Der Gauss-Filter hat den Vorteil, daß das Fourier-Spektrum deutlich vorteilhafter ist, es gibt (fast) keine Überschwinger im hohen Frequenzbereich mehr. Außerdem Ist die Gefahr von Filterklingeln auch bei steilflankigen Filtern (große Matrizen) nicht mehr so groß. Der 3x3 Gauss sieht wie folgt aus:
Die Vergrößerung auf eine 5x5 oder noch größere Matrix ist allerdings nicht mehr so trivial wie beim gleitenden Mittelwert. Die Gauss-Unschärfe ist recht realistisch und kommt der Unschärfe eines unscharfen Objektives ("analoger 2-dimensionaler Tiefpass") sehr nahe.
2.3 Hochpass/Kantenerkennung (Matrixfilter) Die Kantenerkennung ist genaugenommen kein Hochpass sondern ein Bandpass. Der Hochpass wirkt wie ein Differential, heißt er zeigt die Änderung von einem Pixel zum nächsten an. Das reicht aber noch nicht um Kanten zu finden. Denn wo scharfe Kanten in der Tat schon sehr hohe Peaks erzeugen, werden auch niederfrequente Anteile differenziert, so ergibt eine Rampe zum Beispiel einen Gleichanteil. Dieser muß, zusammen mit einigen anderen tieffrequenten Anteilen, noch mittels eines Tiefpasses eliminiert werden. Die Kantenerkennung ist neben der Mustererkennung in der Industrie vor allem als Stilmittel bei der Videobearbeitung interessant, jedoch nicht als Restaurationsfilter. Ein Beispiel für eine Kantenerkennung:
2.4 Schärfen/Inverser Tiefpass (Matrixfilter) Schärfen, das bedeutet in diesem Fall "inverser Tiefpass". Denn wo ein Tiefpass die hohen Frequenzen senkt und somit das Signal schwammiger macht, muß der inverse Tiefpass die hohen Frequenzen wider anheben. Hier ist Vorsicht geboten: Da sich Rauschen durch das gesamte Frequenzspektrum zieht hebt man so natürlich auch Rauschen mit an. Und sind die hohen Frequenzanteile einmal bis auf Null abgeklungen war's das sowieso mit dem Anheben. Ein Beispiel für das Schärfen mit Hilfe einer Matrixoperation:
2.5 Median (Rangordnungsfilter) Der Median ist der wichtigste Rangordnungsfilter beim Aufbessern von Bildern. Die Funktionsweise wurde ja bereits beim Rangordnungsfilter beschrieben. Im Bereich Video wird oftmals ein 3x3 Strukturelement mit Bezugspunkt Mitte verwendet, daher wird der Median oft auch mit Matrixfiltern verwechselt. Die Form ist beliebig, ob ein Rechteck, ein L, ein + oder kreisrund, ob geschlossen oder innen hohl, es geht alles. Die gängigsten Modelle dürften die 8er-Nachbarschaft (3x3 Matrix) und die 4er-Nachbarschaft (3x3 +-Förmig) sein. Für größere Bereiche üblicherweise Quadrate oder Kreise (das + ist ja schon ein in 3x3 angedeuteter Kreis). Je größer das Strukturelement, umso mehr Störung wird ausgebügelt. Allerdings: Dabei werden Flächen im Bild erzeugt, das ganze wirkt nachher ein bischen wie "Malen nach Zahlen". Je größer man das Strukturelement des Median wählt, umso effektiver beseitigt er Rauschen, umso effektiver beseitigt er aber auch feine Details die nur geringen Kontrast zum Untergrund haben (z.B. Rauhfasertapete, Struktur von Blättern eines Baumes, Falten im Gesicht älterer Personen). Die Kanten bleiben dabei immer scharf.
3. Raum und Zeit 3.1 Der 2D-Filter Alles was oben vorgestellt wurde erklärt 2D-Filter. Man greift mit Hilfe einer Operation (Faltung = Matrixfilter oder Median = Rangordnugnsfilter) an den Inhalt eines Bildes an. Dabei wird das Bild wesentlich und sichtbar verändert, aber auch entrauscht.
3.2 Der 3D-Filter (Temporal) Der 3D-Filter basiert auf die Annahme, daß in einer natürlichen Bewegung nicht viel Änderung steckt, eine Tatsache, die sich auch schon MPEG bei der Kompression zu Nutze macht (nur Änderungen speichern). Hat man ein quasi stehendes Bild welches mit einem statistischen, unerwünschten Signal, dem Rauschen, unterlegt ist, so kann man durch eine gewichtete Mittelwertbildung über mehrere Bilder das Rauschen eliminieren ohne den Bildinhalt zu verfälschen. Ähnlich funktioniert das auch bei Messungen im Labor, man macht eine Messung mehrfach und bildet den Mittelwert. Da immer etwas Bewegung im Bild ist sorgen Scene Change Detection Algorithmen dafür, daß der 3D-Denoiser abgeschaltet wird, sobald zu viel Bewegung ins Bild kommt und man so nicht mehr sauber entrauschen kann, sich dafür aber übermäßige Bewegungsschlieren, Bewegungsunschärfe oder sonstige unerwünschte Effekte einhandeln könnte.
3.2.1 Recursive Denoising Rekursives Denoising ist die simpleste, aber am wenigsten effektivste Art, 3D zu entrauschen. Hierbei wird das Vorgängerbild gewichtet mit dem aktuellen Bild verrechnet. Da das aktuelle Bild nun wieder zum Vorgänger eines neuen Bildes wird enthält der jetztige Vorgänger natürlich auch noch einen gewichteten Anteil seines Vorgängers. So bleibt ein Bild theoretisch unendlich lang (praktisch: So lange bis durch die Gewichtung der Vorgängerbilder jeglicher Rest bis auf das letzte Bit abgeklungen ist) gewichtet über das aktuelle Bild gelegt. Die Technik ist leicht zu realisieren da man im Gegensatz zur Faltung nicht alle für die Operation relevanten Bilder griffbereit haben muss sondern immer nur das aktuelle und seinen Vorgänger (der wiederum als gewichteten Anteil seinen Vorgänger und dessen Vorgänger enthalten kann) und somit wenig Speicher und Rechenaufwand braucht. Allerdings ist die Gefahr von Bewegungsschlieren recht groß, da natürlich ein Sprung von 0 auf 100 langsamer abklingt als einer von 50 auf 60. Der Spagat zwischen schnellem Abklingen (kleiner Koeffizient für das Vorgänger-Bild, großer für das aktuelle) und hoher Filtereffizienz (Koeffizient für das Vorgängerbild nur wenig kleiner als der vom aktuellen) ist schwer zu finden.
3.2.2 Temporal Convolution Die Faltung über Zeit ist vom Nutzen her deutlich besser als die rekursive Methode. Bei der Faltung gehen immer nur so viele Bilder in die Operation ein wie man Faltungskoeffizienten hat. Heißt wenn man drei Gewichtungsfaktoren hat, wie z.B. eine halbe Gauß-Glocke 1(Vor-Vorgänger)-2(Vorgänger)-4(Aktuell) gehen auch nur diese drei Bilder in die Operation ein. Der Nachteil ist, daß man immer so viele Bilder bereithalten und auch verrechnen muss wie man Faltungskoeffizienten hat, was einen erhöhten Speicher- und Rechenaufwand bedeutet. Man kann den Bezugspunkt auch mittig legen, heißt man verrechnet das aktuelle Bild mit seinem Vorgänger und seinem Nachfolger. Der Aufwand, so etwas in Echtzeit zu realisieren dürfte enorm sein (und vor allem zu einem riesigen Videodelay führen den man durch Audio Delay Lines ausgleichen muss), als Software-Filter gibt es sowas schon (Convolution3D für Avisynth) und es arbeitet mit wirklich gelungenem Ergebnis.
3.2.3 Temporal Median Temporal Median ist recht genial, da die Vorteile von Median für 2D immer noch gelten: Es werden keine Kanten negativ beeinflusst. Allerdings ist die ganze Sache extrem schwer zu realisieren. Grund, ein Beispiel: Eine Bilderfolge: Pixel 1 von Bild 1 hat den Wert 1, von Bild 2 den Wert 50, von Bild 3 den Wet 100. Bild 2, Der Median dieser Punkte ist 50. Pixel 2 hat in Bild 1 40, in Bild 2 100 und in Bild 3 1. Der Median ist hier 40, dummerweise stammt er dieses mal nicht aus Bild 2, sondern aus Bild 1. Man muss die ganze Sache nicht weiter spinnen um den riesigen Pixelsalat zu erahnen der dadurch entstehen kann. Da eine Vollbild Motion Detection für einen Temproal Median schon hypersensibel sein und bei kleinsten Unterschieden abschalten müsste, muss man beim Temporal Median jeden Pixel einzeln überprüfen, ob es starke Abweichungen gibt und ob man die Operation durchführen möchte. Einen Median-Filter der sowohl über Raum alsauch Zeit arbeitet und dabei solche Fehler kompensiert gibt es für Avisynth (STMedian), dieser ist allerdings sehr langsam. In Hardware und somit in Echtzeit findet man sowas allenfalls in High-End Denoisern wie denen von Snell&Wilcox die so viel kosten wie ein Mittelklasse-Auto.
4. Konditionale Filterung
Wer sich die Avisynth Filter STMedian, Convolution3D und MSmooth mal näher ansieht wird immer eine Gemeinsamkeit feststellen: Die errechneten Änderungen werden nur auf Pixel angewandt, die sich um weniger als einen vorgegebenen Wert vom Rechenergebnis der Median- oder Faltungsoperation unterscheiden. So werden Details bewahrt, Kanten nicht so stark verwaschen und auch Motion Blur tritt nicht mehr so stark auf. Diese Operation ist allerdings mathematisch gesehen nicht mehr linear, also nicht mehr umkehrbar.
Eine andere Form von konditionaler Filterung erlaubt Avisynth ebenfalls: In stark bewegen Szenen, in denen sich 3D Denoiser abschalten oder in denen man sie lieber manuell abschalten will um Bewegungsschlieren vorzubeugen, kann man die das Bild leicht verwaschenden 2D Denoiser stärker aufdrehen. Das Mehr an Unschärfe fällt in schnellen Bewegungen eh kaum auf, außerdem erleichtert es die MPEG-Kompression (da die zu verarbeitenden Änderungen weniger komplex sind) und reduziert so Kompressionsartefakte. |