Harm Weidmann schrieb:
As you seem to be originating from germany, I will answer in german,
this time...
> What tools do I need? Can this be done by image magic?
>
Eigentlich ist in den mjpeg-tools alles drin, was man braucht
(y4mspatialfilter). Alternativ kann man auch Gimp nehmen (wenn es nur um
Text-Titel oder DVD-Menüs geht, ist das u.U. eh besser...)...
> Can someone explain me the meaning of lowpass-filtering
> with a factor of 0.6667 relative to the my vert frequency?
>
Ja, ich werde es versuchen...
Ein Videobild ist ein zweidimensional diskret-abgetastetes Signal. Es
gibt damit eine horizontale und eine vertikale Abtastfrequenz. Laut
Nyquist-Theorem enthält ein diskret abgetastetes Signal maximal die
Frequenz 0,5*Abtastfrequenz. Bezogen auf Computerbilder bedeutet dies
Folgendes:
Ist die vertikale Abtastung mit 576 Zeilen (PAL) vorgenommen worden, so
kann als maximale Frequenz 1 Pixel weiss auf einen Pixel schwarz folgen
(das Bild enthält dann also 288 schwarze und 288 weisse Pixel vertikal
untereinander). Mehr Auflösung ist nicht drin. Für progressive Displays
ist das völlig OK, wenn das Bild jedoch auf einem interlaced-Display
dargestellt werden soll, führt dies zu massiven Problemen. Ein solches
Signal ist zwar mit digitalen Videoformaten machbar, aber nicht
sendetauglich (zumindest für PAL, bei NTSC gibt es aber meineswissens
ähnliche Beschränkungen), da das Signal dann mit der höchstmöglichen
Amplitude und 1/25 Hz flimmert (und zudem die Farbfilter im TV
durcheinanderbringen kann...).
Ein idealer Tiefpass-Filter ( sin(x)/(x) ) mit 5 Taps für diese maximale
Frequenz hat die Koeffizientenfolge
{0; 0; 1; 0; 0}
Skaliert man die sin(x)/(x)-Funktion um den Faktor 0,5 (
sin(x*0,5)/(x*0,5) ), so ergibt sich die
folgende Koeffizientenfolge:
{0,00; 0,64; 1,00; 0,64; 0,00 }
Der Faktor gibt an, bei wieviel Prozent der maximalen Frequenz die
CutOff-Frequenz des Filters liegt. Für den Faktor 0,6667 ergibt sich:
{-0,21; 0,41; 1,00; 0,41; -0,21}
Das Dumme ist nur, dass der sin(x)/(x)-Tiefpass "klingelt". Daher wird
in der Praxis eine Window-Funktion mit den Filterkoeffizienten
multipliziert. Diese hat den Effekt, dass der Filter nicht mehr so
steilflankig ist, aber dafür weniger Klingeln (=Überschwingen) zeigt.
Häufig wird der sin(x)/(x) mit sich selbst "gewindowed". Das ergibt dann
einen sogenannten Lanzcos-Filter. In der Praxis nimmt man für
Video-Signale übrigens nicht 5 Taps, sondern mindestens 7.
Das Flimmern lässt sich nicht völlig eliminieren, man kann es nur
*reduzieren*. In der Praxis bedeutet dies, das man
1. relativ große Strukturen nutzt (= große und dicke Buchstaben!)
2. zusätzlich vertikal tiefpassfiltert. Übrigens ein "motionblurr" hilft
hier nicht wirklich weiter. Dieser Tiefpass sollte so berechnet sein,
dass er nicht oder nur vernachlässigbar klingelt, da ansonsten die
"Überschwinger" das Problem wieder deutlicher sichtbar machen können...
In der Praxis bestehen Anti-Flicker-Filter daher meist aus einem
einfachen lediglich vertikal angewendeten Gauss-Filter (Gimp!) mit
Radius 1. Koeffizienten: { 1; 2; 1 }.
3. mit einem gewissen "Restflimmern" leben muss...
Übrigens: alle hier vorgestellten Filter müssen noch normiert werden, da
sich ansonsten der Mittelwert verschiebt. D.h. der eben angesprochene
Gauss-Filter muss noch mit dem Vorfaktor 1/4tel beaufschlagt werden,
damit die Summe der Koeffizienten 1 ergibt.
> Thank you in advance and grettings
>
Keine Ursache. Ich hoffe, das es hilfreich war. (ich habe allerdings
auch eine Weile gebraucht, um die Zusammenhänge zu verstehen...)
cu
Stefan
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Mjpeg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mjpeg-users