# Creating derivative images, based on original, that can only be visually understood when stacked

I've been thinking about this for a while. What I have been trying to accomplish is a way of taking an image (png specifically, or any other format that allows transparency) and generating N derivative images. Each derivative image would, theoretically, be as difficult as possible to visually connect to the original. If I processed an image of a mountain into three images, none of the three images should suggest to you that it is a mountain. However, if all three images were stacked on top of each other, what you should see, with as minimal corruption or loss of detail as possible, is the original image.

Different approaches I've considered are splitting an image by color, and stacking the different colors. This works okay when N is a large number. It works poorly when N is small. Quantization helps, but can be tremendously lossy at small Ns, where it would help most.

Replacing (N-1)/N pixels with noise or transparency in each layer works well at higher levels of N, but a bit poorly at N=2 or 3 because the top layer reveals the subject of the image.

It seems that dealing with the top-most image is where things become really difficult. I'm not really sure how to approach this.

• What does "stacking" mean to you? If it is like stacking sheets of half-transparent imagery on top of each other, what is the blending model you're using here? Apr 8, 2018 at 19:06
• Good question, I do not know how I forgot to include that in my original post. There is no blending, in this case. A pixel can either be fully transparent, with no color whatsoever, or not transparent at all. A fully transparent pixel will reveal everything on top and under it. A non-transparent pixel will obscure everything under it. Apr 8, 2018 at 19:52
• I think that the trick would be to create a transparency boundary that is complex enough to hide the subject of the image. Maybe this boundary draws some attention-grabbing subject that is unrelated to the subject of the picture. To the lower layer(s) you can add unrelated pictures in the areas that will be covered up. Apr 9, 2018 at 0:49
• Do you have any suggestions as to how to do this? Manually breaking things into tiles sort of works, but I have struggled to figure out how to do it automatically. Apr 22, 2018 at 20:16
– A_A
Apr 30, 2018 at 8:16

...a way of taking an image (png specifically, or any other format that allows transparency) and generating N derivative images.

You can split the image into different spatial frequencies and recombine them to form the original. This is exactly the way that the Discrete Fourier Transform works.

Taking as a starting point the following image (found by Google Images and finally obtained from this article):

If you progressively filter it into different spatial frequencies, you will get intermediate images that look something like this:

Low Spatial Frequencies:

Higher Spatial Frequencies:

(...but not including the low, i.e. a bandpass filter)

Even Higher Spatial Frequencies:

(...another bandpass filter but shifted higher in the spatial frequency spectrum).

All the way to 11! Spatial Frequencies:

(...similar as above, this can be a bandpass filter or a high pass to include all remaining spatial frequencies).

Now, in your favourite image manipulation software (I am using GIMP with GMIC here), turn on transparency and put the different spatial frequency bands in different layers so that you can turn them on and off. You get something that (progressively) looks like this:

All that you need now, is some transparency "paper" and a laser printer. And also to note that if you mount the transparencies one behind the other, then you might have to adjust the scale of each image depending on the distance they will be mounted at. You can, for example, mount one on your door window and the other on the window behind the door so that when you look at the images from a specific point, they (both) make sense but the one that is further away will have to have its size slightly enlarged.

You will of course have to experiment a little bit with different spatial frequencies and different spatial frequency bands to adjust the images to the result you are trying to achieve. I only used a few bands here.

Hope this helps.

EDIT:

In the case of limited dynamic range (e.g. pixels can only be on or off), the technique remains the same but the gradient will have to be remapped through the use of halftoning.

• Wow, that's really interesting. I would love to try this out with halftoning. Thanks for sharing that! I have zero experience with GMIC, though. Can you offer any advice for performing the halftoning? EDIT: And with GMIC in general? Thanks again! Apr 9, 2018 at 1:27

Have you considered using some sort of patchwork pattern, entirely unrelated to the image? Maybe something like Escher drawings as your bit masks. With those, the viewers eyes will be following the patterns of the outlines, and less so the content of the image. Naturally a separation into just two layers won't do much, but compounded patterns with enough gaps should make the image unintelligible. Just an idea.

Ced

• That's a really good idea. I was thinking I could use SIFT to get keypoints, which could drive additional steps. I couldn't come up with any steps, though. I'll try sampling colors from those and inserting, recoloring, and placing patchworks around them to obscure features. Escher drawings sound interesting, especially since they can be recolored fairly easily. Can you recommend any other artists for this purpose to experiment with? Thanks a bunch. Apr 9, 2018 at 1:23
• @J.Gonzalez, Check out this fellow named Penrose. en.wikipedia.org/wiki/Penrose_tiling Apr 9, 2018 at 1:36