Trennung der AM- und QAM-Komponenten bei der PAL-Signaldemodulation

Ich versuche, die Modulation und Demodulation eines PAL-Videoframes in Software zu emulieren, aber ich habe Probleme zu verstehen, wie die AM- (Luma) und QAM- (UV) Komponenten des Signals während des Demodulationsprozesses getrennt werden.

Hintergrund:

Die Software, die ich schreibe, nimmt eine RGB-Bitmap, übersetzt sie unter Verwendung des BT.601-Standards in Y'UV, erzeugt (moduliert) ein Signal als eine Reihe von Samples und speichert diese Samples dann in einer Wave-Datei. Diese Samples können dann wieder geladen und wieder in eine Bitmap demoduliert werden, wobei die H-Sync-Impulse gegen den H-Pos-Rampengenerator honoriert werden, wie es ein alter CRT-Fernseher tun würde, und schließlich zurück in eine RGB-Bitmap übersetzt werden.

Es gibt zwei Motivationen hinter diesem Projekt: erstens, um ein cool aussehendes analoges Fuzz in Software zu erstellen; und zweitens, um die TV-Standards und grundlegende Modulations- / Demodulationstechniken in einem Bereich (Software) besser zu verstehen, in dem ich mich wohler fühle.

Was ich bisher habe:

Der Code führt die Modulation gut aus, und wenn das Ergebnis in Audacity angezeigt wird (mit einer Abtastrate, die auf 1/1000 der tatsächlichen Frequenz vorgetäuscht ist), zeigt es ein Signal, das ich als eine Reihe von PAL-Bildzeilen erkenne. Der gesamte Prozess funktioniert, wenn ich ihn in den Schwarz-Weiß-Modus versetze, wodurch das QAM-Signal aus dem Modulationsschritt weggelassen wird und nur der amplitudenmodulierte Luma-Kanal übrig bleibt. Ich habe auch den QAM-Modulations- und -Demodulationscode mit einer einfachen Audiodatei getestet und es funktioniert großartig. Das einzige, was ich nicht zum Laufen gebracht habe, ist die Bilddemodulation mit den enthaltenen AM-Luma- und QAM-Farbkomponenten.

Die Verwirrung:

Bei einem reinen, unberührten QAM-Signal erscheint es relativ trivial, das Signal durch individuelle Multiplikation mit dem Trägersinus und seinem Kosinus wieder in seine ursprünglichen zusammengesetzten Signale zu demodulieren:

ICH T = S T cos ( 2 π F C T )
Q T = S T Sünde ( 2 π F C T )

Die beiden Komponenten werden dann bei der Trägerfrequenz einem Tiefpass unterzogen, um hochfrequente Terme zu entfernen. Dies scheint großartig zu funktionieren, und wie ich oben angemerkt habe, funktioniert meine Implementierung der QAM-Demodulation einwandfrei.

Ebenso kann ich eine einfache AM-Demodulation implementieren, selbst wenn das Signal von anderen Signalen in separaten Teilen des Frequenzbereichs begleitet wird - es ist nur ein Fall von Hochpass und/oder Tiefpass, bis Sie das gewünschte Bit haben.

Soweit ich sehen kann, wird jedoch die QAM-modulierte UV-Komponente zum Basis-AM-Luma-Signal hinzugefügt, wobei sich beide Teile im Frequenzbereich überlappen, wie das folgende Diagramm aus Wikipedia zu zeigen scheint:

An dieser Stelle bin ich etwas ratlos. Es sieht nicht so aus, als könnte ich aufgrund der Überlappung einen Tiefpass zum AM-Luma-Signal erhalten, und ich kann nicht sehen, wie ich das QAM-Signal vom zugrunde liegenden AM subtrahieren würde.

Was vermisse ich? Was sind die logischen Schritte, die unternommen werden sollten, um die Luma- und UV-Komponenten zu trennen?

Definitiv einfache Filter verschlechtern die vertikale Definition. Eine Technik, um dies zu vermeiden, ist in einem Patent unter google.com/patents/US3707596 beschrieben

Antworten (3)

Es gibt einen Trick, der bei NTSC verwendet wird und meiner Meinung nach auch für PAL gilt.

Wenn Sie sich die feinen Details des Spektrums des Luminanzsignals ansehen, stellen Sie fest, dass die meiste Energie bei Vielfachen der horizontalen Sweep-Frequenz konzentriert ist, mit relativ wenig Energie zwischen diesen Spitzen (diese Energie repräsentiert diagonale Kanten im Bild, die relativ selten sind). Es gibt ein ähnliches Muster in den Details des Chrominanzsignals. Daher wurde die Farbhilfsträgerfrequenz sorgfältig ausgewählt, um die Spitzen ihres Leistungsspektrums zwischen die Spitzen des Luminanzspektrums zu legen.

Die Filter, die diese Informationen wieder in zwei getrennte Ströme trennen können, werden "komplementäre Kammfilter" genannt. Sie erstellen einen Kammfilter für das Luminanzsignal, indem Sie es um eine horizontale Zeilenperiode verzögern und es dem ursprünglichen Signal hinzufügen. Anschließend subtrahieren Sie dieses gefilterte Signal vom Originalsignal, um das Komplementsignal zu erhalten, das hauptsächlich das Chrominanzsignal enthält (das Sie anschließend auf den entsprechenden Frequenzbereich bandpassfiltern).

Wissen Sie, dieses Phänomen wurde mir vor sehr langer Zeit erklärt, bevor ich wirklich verstanden habe, wie die Standards funktionieren, und ich habe es völlig vergessen. Wenn ich mir einige der PAL-Kammfilterdesigns ansehe, kann ich sehen, dass sie genau das tun, was Sie erklärt haben: Zeilenverzögerung in eine Addition. Ich werde diese Implementierung ausprobieren und sehen, was ich bekomme.

Bandpassfilter um den Farbunterträger herum, um das Luma-Signal (größtenteils) vor dem Chroma-Decoder zu eliminieren, und der passende Notch-Filter im Luma-Kanal, um schleichende Bitmuster aus dem Luma-Kanal herauszuhalten.

Was in Ihrem ENcoder bisher wahrscheinlich fehlt, ist ein Notch-Filter, um Luma-Informationen um den Farbhilfsträger herum zu eliminieren (oder vielmehr zu reduzieren). Die Wahl der Filterbandbreiten liegt bei Ihnen, je nachdem, wie wichtig Ihnen die Chroma-Bandbreite, der Luma-Bandbreitenverlust und die Kreuzkontamination sind.

Jeder, der in den 1970er Jahren die Six O'Clock News (auf BBC1) gesehen hat, wird Ihnen sagen, dass die Überlappung echt war, und selbst bei der besten Filterung gab es eine gewisse Kreuzkontamination von Chroma in den Luma-Kanal und, ziemlich offensichtlich, von feines Luma-Detail in den Chroma-Kanal.

Genauer gesagt werden sie sich an die ablenkenden Regenbögen erinnern, die über Kenneth Kendalls Körper tanzten, als er sich bewegte, dank der schwarz-weiß karierten Tweedjacke, die er unbedingt tragen wollte!

Als die digitale Filterung praktikabel wurde, wurden bessere und sauberere PAL-Codierer möglich, aber das Problem kann einfach nicht vollständig beseitigt werden.

Und in einigen Kontexten hat es positive Nebenwirkungen; Es hat sich als möglich (aber schwierig) erwiesen, Farbe aus einer monochromen Filmkopie einer Sendung wiederherzustellen!

Ein Kerbfilter, der eintaucht und die Farbinformationen herausnimmt? Sehen Sie sich diesen App-Hinweis an, er geht mehr auf Y/C-Trenntechniken ein. Sie könnten nur einen Tiefpass-Hochpass verwenden, jedoch mit Detailverlust.

Das entmystifizierte Buchvideo ist ebenfalls eine gute Ressource, Sie können eine kostenlose Kopie online finden.

Der Kerbfilter würde doch sicher auch alle HF-Anteile der Leuchtdichte mit einbeziehen und damit die Bildqualität stark verderben? Umgekehrt würde auch das Luminanzsignal durch den Chroma-Anteil verzerrt werden bzw. sein HF-Anteil fehlen, wenn ich auch diesen bandstoppe. Interessanter App-Hinweis - sieht so aus, als ob ich vielleicht einen Kammfilter brauche?
Ja, überprüfen Sie jedoch die App-Notiz, sie gehen in die Kammfilterung und dann in die adaptive Kammfilterung, um das zu lösen.
Ich habe die App-Notiz gelesen, aber ich kann nicht wirklich sehen, wie man einen Kammfilter konstruiert, der die Signale trennt. Ihre Verwendung ist sinnvoll, aber ich weiß nicht, wie ich einen für meine spezifischen Bedürfnisse bauen soll - auf welche Frequenz(en) soll ich abzielen und wie konstruiere ich einen Filter, der auf diese Frequenz abzielt? Ich bin mir auch nicht sicher, welche Art von Kammfilter ich brauche, da es anscheinend ein paar verschiedene gibt.