Is it possible to embed information that is both nearly invisible to the naked eye and decodable from an external camera?

Consider that you might not want what you are asking for. That is, if the purpose of watermarking is to prove that you authored it, your cuttingroom clips and outtakes are evidence enough - you can provide them, your violators cannot.

This does suggest a possible approach for the second use of watermarking, which is to identify who leaked the video.

This approach is frame removal. If you remove a tenth of a second here and there, it will not typically be noticed by those without access to your original footage. But it will be picked up by a camera.

Say in low-action scenes you remove a block of every 5th frame for half a second, and call that a "one"; or you don't remove them, and call that a zero. Your lead-in will be a string of ones, then a zero, then the ID, read right to left.

So say you read, in the recorded film, 111010110000.... then the 1110 is the lead-in, and the id is 00001101, or 0x0D. This is the 13th copy you gave out.

Synch the audio by cutting it, speeding it up, etc as appropriate.

The more frames you remove, the bigger the effect. Initially it will only be noticeable with a comparison against your original.

Another way to do this kind of timing-hack is just to remove N frames before/after each cut, or even insert extra darkness frames during fade-cuts. But that only lets you add/remove a few frames per cut, which reduces the number of bits of data you can store.

===

@Mindwin pointed out a fatal flaw in this idea.

Any unique watermarking system is vulnerable to comparison between two copies, in which case you can detect the watermarking.

But with my proposal above, given two copies, an attacker knowing the system can change it to a third id, either by removing additional frames, or by XORing or frame-duplicating to replace frames! Not good.

I thought perhaps by adding frames as well as removing them, that this could be resolved. But I can find no solution that would be proof against a determined and well-informed attacker (if I assume the algorithm is public, and that they have at least two watermarked copies).

I consider this a fatal flaw: no watermarking system should allow an attacker to frame another user as the leaker.


Your use case calls for a robust watermarking scheme. It has to resists compression and uncompression of the image, has to resist modification (e.g. white balance changes, lost pixels) and also geometrical variation due to the hand-held device capture not being perfect.

Robustness usually comes at the expense of invisibility and capacity. Since there is a need for identification and the robustness requirements are really strong, you are unlikely to find a scheme that respects all your demands given the current state of the art.

As a reference: A Survey of Digital Watermarking Scheme (Google cache).


Not, it's not hopeless, it all depends on how much information you want to encode.

For example, differences in color tones from one quadrant of the scene to the other can indicate whether you have a 0 or a 1. But encoding one bit for each frame (or for a sequence of frames) might be too low for you.