You are currently browsing the category archive for the ‘Visual Effects’ category.

During my playful experiments with Fourier Transforms, I discovered that you can overlay an image on top of a Fourier transformed image, and freely convert back and forth from Fourier to regular space. Each transform would descramble the previously FFT’d image. So in short, you can hide the FFT of one image in another image.

Here’s the message I want to hide:

The Secret Message!

The Secret Message!

I’ve put it in the bottom half of the picture so it will still be intelligible after being transformed. Here’s the FFT of my secret message:

The Fourier Transform of My Secret Message

The Fourier Transform of My Secret Message

My first test overlaid the FFT over a color wheel, but it’s still a bit obvious:

The Secret Message overlaid on a test image.

The Secret Message overlaid on a test image.

If we scroll the FFT over to the corners and scale down the brightness, it’s much harder to spot when overlaid with the zucchini-in-a-bottle image:

The secret message offset to hide it better, overlaid on a normal photo.

The secret message offset to hide it better, overlaid on a normal photo.

You can barely spot it. Some information is lost when the image is saved in the .tif format, but after we scale the brightness back up, we get this:

The actual use decoded message (rescued from a zucchini-in-a-bottle)

The actual use decoded message (rescued from a zucchini-in-a-bottle)

Here’s my whole shake tree for both the test image and the final masterfully masterfool zucchini-hiding-a-secret image. Cheers!

Lossless Shake Message Tree

Lossless Shake Message Tree

Masterfool Zucchini Secret Message Shake Tree

Masterfool Zucchini Secret Message Shake Tree


(“Bravia” commercial clip Copyright SONY.)

Temporal Median Filters work like magic for removing small unwanted objects from video . . . like hairs and dust. I’ve often wished I had a Temporal Median Filter to remove unwanted noise from my videos. I always figured that Shake was flexible enough to do the job with just the available nodes, but I couldn’t figure out how to do the job until recently. I’ve made a macro out of my work which you can download here. Technical details follow.

I tried and failed with the LayerX node because it can’t do pixel-wise comparisons, and the TimeX node can only work with one FileIn node. But the ColorX node can do the job . . . if you can feed it the right information. Here’s what you do:

1) Create 3 FileIn nodes all with the same video source.
2) Edit the Timing>Timeshift parameters of one FileIn node -1, and another to 1.
3) Reorder the three video sources so that each only has the red channel. For video source 2, the red channel is reordered to the green channel, and for source 3, the red channel is reorder to the blue channel.
4) Combine all three video streams with a couple of IAdd nodes.
5) Add a ColorX node with this formula in the Red channel:
r+g+b-Max3(r,g,b)-Min3(r,g,b)

Red Temporal Median Filtering Shake Node Tree

Red Temporal Median Filtering Shake Node Tree

6) Repeat steps 3-5 for the green and blue channels.
7) Layer all the data together with some reorder and add nodes.

Complete Temporal Median Filtering Shake Node Tree

Complete Temporal Median Filtering Shake Node Tree

And if you don’t care to do all that, here’s a picture of the simple tree you’ll need to make after using my macro:

Temporal Median Filter Shake Node Tree

Temporal Median Filter Shake Node Tree

You can download the complete MedianTime macro here: MedianTime Filter at Creative Crash