Watermarking is a process of using `water' to leave marks on paper. If you get some piece of paper wet, and later dry it, you can still see the wet marks. If you intentionally make these marks (for later detection), you're essentially embedding a watermark.
Digital watermarking is similar, except instead of working with liquids, we're working with bytes. Watermaking is just steganography, and `security by obscurity'. For example, we have some media (sound, video, images), and we would like to sell them online. However, we would like to ensure that our work doesn't get stolen, so we embed a watermark into every work we sell, indicating who bought it.
If we ever see our work being sold, we can detect the watermark, figure out who originally bought it (and thus responsible for distributing the image), and go after them in court. At least that's the idea.
The purpose of watermarks is to secure data. Security could mean many things. In some cases, we would like to ensure that nobody distributes our media. In other cases, we would like to ensure that nobody steals our media (download our image and claim that they're the author).
In some cases, we don't want to let uses modify the image (modifying the image destroys their ability to use the image). In some cases, we don't want to allow users to use the image without our knowledge, etc.
There are various watermarks for various tasks.
Visible watermarks are the ones you see on TV channels, like CNN. The `CNN' logo on the screen is a visible watermark. Anyone who tapes the show, will still have that logo on the screen. They can't sell the show as their own, and the watermark promptly displays who made the original show.
There are good sides to visible watermarks and bad sides. The good is that everyone sees them and knows who the work belongs to. The bad is that since it is visible, it is easier to remove or obscure. For example, we can make our own `logo' that overlaps and covers the `CNN' logo.
Invisible watermarks are generally used for media tracking and authentication. Who does the media belong, what can be media be used for, and who made the media. Some watermarks even track what operations have been performed on the media, etc.
The watermark is invisible, meaning that the owner of the work doesn't necessarily see it (nor can they verify that the work is indeed watermarked). Only personnel with `access' can verify the watermark.
These watermarks are useful for wide media distribution (like over the air waves or the Internet). For example, I can watermark an image, and let anyone download it. If my image ever shows up in a magazine (and nobody paid me money for the use of the image), I can claim ownership of the image, and using the watermark prove that I'm the original owner of the image.
In the future, it is also assumed that media players won't let you play un-watermarked content. For example, if you buy a CD with your favorite music, you can play it in your computer, because the work is watermarked. The mark may contain the information like who sold the CD, and who bought it (your personal info). If you rip the CD, and somehow remove the watermark, the song won't be playable in your computer. If you try to distribute the watermarked version, then the studios can extract your personal info (your credit card number for example) from the media watermark.
(note that the above is just speculation; and ideas extracted from many watermarking papers. I personally don't think it will ever come to this extreme).
So how does watermarking work? For images, we have several choices. We can embed the watermark in the pixel domain, or some transformed domain (such as DCT, or SVD, etc.)
The `embedding' process is usually just adding parts (or all) of the watermark to a particular domain. Detection is the reverse: subtracting.
(more details in class).
Text watermarking is a bit more challenging, and can only be applied to `finished' documents. For example, you can't watermark a txt document, but you can watermark a PDF, or a post-script. Very often, the watermark involves moving some letters slightly off their position... Detection works by noting letter's normal position, and where it is in the watermarked document.
The placement is so slight that the document appears unchanged.
Video watermarking can be as simple as image watermarking, or slightly more complex, by embedding a different watermark in subsequent frames---thus, allowing for a huge data capacity in the watermark.
Streaming is the process of distributing time-based content over the network. For example, you can stream video and sound.
There are lossy streams. These are based on the UDP protocol, where the server floods the connection with unreliable packets, and the internet (and your connection) usually delivers most of them (or at least the important ones).
These have very low overhead, and the server can multi-cast to many clients at the same time. The trick however is that many many packets may get lost. For music, and video it doesn't really matter though. For example, if 1ms of a song gets lost, the software can usually compensate, and the user wouldn't hear any breaks in the sound.
Lossless is based on the TCP protocol, where a connection between the server and the client is established, and the server `streams' content to the client. The trick about this is that the server needs to constantly monitor how much data it is writing, and whether it is being delivered on time---and actually adjust the speed of the stream to compensate for the client's speed. This has to be done for every listening client.
This is how most current streams work. (partly since many firewalls block UDP traffic; and true `multi-casting' is rarely supported)
If you have a fast connection, is method is usually better to the lossy one. For example, if you have a fast enough connection that is faster than the server's upstream, then you can `capture' the stream and save it to a file. In this case, you can make a `perfect' recording of a song (or video)---with similar legalities as if you were taping songs from the radio.
Sound streaming usually accomplished by sending a chunk of samples. In lossless streaming, a `chunk' is sent, and then the speed of the arrival is evaluated, and the server determines if it should down-sample (reduce quality) of future chunks, or continue as before.
In the lossy streaming, the server sends a bunch of chunks to all clients. Clients in turn (from time to time) notify the server that they're still alive and listening. The client's connection determines how many of the packets they actually receive. If the server doesn't hear from the client in a `while' the server assumes that the client has disconnected, and stops including that client in the broadcast.
Video streaming works similar to sound streaming, except there is an extra component of video that's involved. In sound, it is possible to loose a millisecond, and not have any effect what so ever. In video, if we're streaming updates to the screen, if we loose some data, we may be loosing some chunk of the screen that won't be updated.
This is usually solved (in mpeg/dvds too), by periodically sending the whole screen (every 15 frames or so). So if the screen gets corrupted by the transmission, the whole screen will refresh quite often anyway.
It is also important to note that video streaming doesn't work at the same refresh rate as the TV, but usually much much lower. A decent refresh rate is about 15 fps, but could be as low as 10fps.