Proof of concept of a simple technique to make screen capture of sensitive images more difficult via temporal dithering. Out of the source image two frames are generated, one with pixel values offset by a random amount (a different amount per RGB component) and another with the offset negated. By rapidly alternating between the two frames, the appearance of the original image is approximated, but a static screenshot would result in only one of the (significantly degraded) frames being captured.
Source image: | |
pixels | |
To prevent solid color areas of the image from being displayed too
uniformly, the image is broken up into tiles of this size and all pixels
within a tile are either lightened or darkened. |
|
x | |
Allow positive or negative offsets to go above/below the 0/255 clamp value by this fraction (greater values result in more noise, but the dithered image is further away from the original). |
| |
Source | Temporal dithering |
Positive frame | Negative frame |