October 27, 2010 — Andrew Moylan, Technical Content Specialist, Technical Communication and Strategy Group
Practically everything I know about British art history would fit in one BBC documentary—the very BBC documentary I watched a little while ago.
I was intrigued to learn about the The Ambassadors, a sixteenth-century painting by Holbein. Among other things, this painting is famous for containing a human skull hidden in plain sight. Can you see it?
The skull can only be seen properly from an extreme perspective. This is pretty nifty, and it caught my attention because we have a number of new Mathematica technologies under development that are related to perspective transforms.
One of them was shown recently by Jon McLoone in this blog post; you will be able to efficiently apply texture images to 3D graphics. We can use The Ambassadors as the texture image for a rectangle:
With Mathematica‘s ability to rotate, pan, and zoom 3D graphics in real time, you can immediately examine the painting from any angle.
There is also a full set of options for programmatically controlling the camera position and orientation in 3D graphics, so you can set up a fly-by style animation. Here’s one that reveals the anamorphic skull:
Another feature in our development pipeline is support for arbitrary geometric transforms applied to images. We can use this to obtain a high-quality image of the skull:
For a bit of fun, I tried to insert my own head in place of the skull, beginning with yet another upcoming feature: immediate access to image capture devices (such as webcams). I gave my best impression of the skull:
We can quickly get rid of the unwanted background parts of the image by using a new piece of image processing technology: image segmentation based on the image foresting transform.
Using this segmentation, we can blank out the background components and take only the part we want:
Next we drop the face, appropriately scaled, onto the skull image:
Now we just need the inverse perspective transformation:
We can apply the inverse transform and drop the result right back onto the original:
It’s amazing how much you can do in a few lines of code when all the functionality is seamlessly integrated into one system.
I just hope Holbein wouldn’t have minded me “defacing” his painting…