Hallo Leute,
ich möchte ein Video mit einem Wasserzeichen versehen. Kein Logo,
sondern versteckte Information, die man später rauslesen kann, auch wenn
man z.B. das Video analog kopiert (abfilmt).
Im ersten Schritt möchte ich die Informationen im digitalen Datenstrom
verstecken (SDI). Nur fehlt mir irgendwie ein Ansatz, kann mir jemand
auf die Sprünge helfen? Eventuel ein Link?
Das ganze möchte ich mit DVI, SDI, Analog (SD und HD) machen, mit einem
FPGA. Die Plattform ist vorhanden, alleding bleibt einem bei HD-Videos
nicht sehr viel Zeit übrig :-/
Grüße,
Kest
Datenstrom dekodieren, so dass du das Frame dekomprimiert im Speicher
stehen hast, dann Wasserzeichen hinzufügen, dann Frame wieder
zusammenpacken und weiterschicken.
So, wofür brauchst du jetzt Tipps, für die zwei
SDI/DVI/Komponenten/S-Video/...-Interfaces oder für das Wasserzeichen?
Ach ja.. Wenn du nur seeehr wenige Daten unterbringen willst (z.B. nur
eine ID-Nummer), dann kommst du vermutlich auch ohne ein komplettes
Frame im Speicher aus, sondern kannst die Info On-The-Fly in das Signal
einfügen.
z.B. über Modulation der Helligkeit. Da würde ich im ersten Versuch ein
analoges Signal beforzugen, dort kriegt man die Helligkeit notfalls auch
über Transistor+Widerstand verstellt ;)
Ich kann schon Videos prozessieren, ist kein Problem. Nur ist mir die
ganze Signalverarbeitung nicht ganz klar. Mal angenommen, ich verstecke
in den 2 niedrigsten Bits meine Info. Das funktioniert zwar digital,
aber wenn ich alles abfilmen möchte (oder einfach SDI->Analog In), dann
ist es nicht robust genug. Oder?
Grüße,
Kest
Kest schrieb:> auch wenn> man z.B. das Video analog kopiert (abfilmt).
Also nix im Stream verstecken, sondern für das Auge unsichtbare oder
unauffällige Informationen unterbringen.
Ah. Ok.
Hast du dich schonmal gefragt, wie es z.B. GPS-Empfänger schaffen, ein
Signal zu empfangen, dass wesentlich schwächer als das Rauschen ist?
Genau das ist was du brauchst. Das Rauschen ist das Video, deine
Versteckte Info/Signal ist nur ganz schwach drübergelegt, so dass es
halt nicht wahrnehmbar wird.
Also noch Mal: ich weis, wie es im Prinzip funktioniert. Was ich suche
ist eine viel einfache (geniale ;-)) Lösung dafür, dass man nicht
irgendwas im Freq-Band ausrechnet, ohne FFT auskommt und so weiter.
Ich habe nicht beliebig Zeit pro Frame (eigentlich gar keine). Deshalb
muss ich einfach auf Pixel-Ebene was machen. Nun ist die große Frage:
geht es überhaupt?
Kest
Pixel-Ebene geht eh nicht, so genau kann das ja keine Kamera abfilmen.
Du musst das schon großflächiger anpacken. Im einfachsten Fall: immer
den ganzen Frame verändern.
Die Datenrate wird dann sehr gering, vor allem wenn man noch
verschiedene Frameraten berücksichtigt (Film spielt mit 24 fps, wird mit
Handy-Cam, 13 fps abgefilmt)
Also erstmal muss man sagen, dass solche Verfahren entweder nicht gut
funktionieren, oder sichtbar sind.
Eine Möglichkeit wäre es, das gesamte Bild etwas heller und dunkler zu
machen. Und zwar so langsam, dass diese Änderung auf im abgefilmten
Video noch drin ist. Grob gesagt addierst du einfach ein Signal auf die
Helligkeit deines Video drauf. (es geht auch mit der Farbe)
Im einfachsten Falle überlegst Du Dir jetzt eine pseudozufällige
Bitfolge. (=Spreizcode) Die Bits stellst Du jetzt nicht als 0 und 1
sondern als -1 und 1 dar. Für jedes Bit x welches Du senden willst
sendest Du die Bitfolge mal x. Somit hast Du dann die Bitfolge mal
positiv und mal negativ, abhängig von Deinem Bit.
Auf der Empfangsseite korrelierst Du einfach das Videosignal mit Deinem
Spreizcode und Du bekommst regelmäßige positive und negative Peaks.