[ Beneath the Waves ]

The Mirror's Surface Breaks

article and software by Ben Lincoln

 

The Mirror's Surface Breaks is an application that I wrote to automate the process of turning greyscale multispectral image sets into colour final products. It is capable of producing a wide variety of output, from fairly typical false colour:

Typical/Subtle False Colour
[ Flowers - R-G-UVA [3C] ]
Flowers - R-G-UVA [3C]
[ Flowers - Average Deviation Luminance / (G-B-UVA) Colour [LC] ]
Flowers - Average Deviation Luminance / (G-B-UVA) Colour [LC]
[ Flowers - (Difference: R-G)-(Difference: R-B)-(Difference: R-UVA) [3C] ]
Flowers - (Difference: R-G)-(Difference: R-B)-(Difference: R-UVA) [3C]
[ Flowers - Average Deviation - Variance - Range [3C] ]
Flowers - Average Deviation - Variance - Range [3C]
[ Boquillas Canyon - (RGB (Luma)) Luminance / (Maximum - Median - Minimum) Colour [LC] ]
Boquillas Canyon - (RGB (Luma)) Luminance / (Maximum - Median - Minimum) Colour [LC]
[ Sunset - NIR-B-UVA [3C] ]
Sunset - NIR-B-UVA [3C]
       

 

 

...to very colourful, "far out" imagery:

With Kaleidoscope Eyes[1]
[ Flowers - (Ratio: NIR To G)-(Ratio: R To B)-(Ratio: G To UVA) [3C] ]
Flowers - (Ratio: NIR To G)-(Ratio: R To B)-(Ratio: G To UVA) [3C]
[ Flowers - Skewness - Variance - Minimum [3C] ]
Flowers - Skewness - Variance - Minimum [3C]
[ Gasworks - Skewness - Average Deviation - Range [3C] ]
Gasworks - Skewness - Average Deviation - Range [3C]
[ Big Bend - (Ratio: NIR To G)-(Ratio: G To B)-(Ratio: B To UVA) [3C] ]
Big Bend - (Ratio: NIR To G)-(Ratio: G To B)-(Ratio: B To UVA) [3C]
[ Big Bend - (Ratio: G To R)-(Ratio: B To G)-(Ratio: UVA To B) [3C] ]
Big Bend - (Ratio: G To R)-(Ratio: B To G)-(Ratio: UVA To B) [3C]

Your mom's cousin had a friend back in high school who looked at these pictures. Ever since then, he's been convinced that he is a glass of water which is about to be drunk.

 

...to truly alien interpretations that have very little in common with how the same subject matter appears to a human observer:

My God, It's Full Of Stars[2]
[ Flowers - Maximum - Skewness - Kurtosis [3C] ]
Flowers - Maximum - Skewness - Kurtosis [3C]
[ Rainbow - Average Deviation Luminance / NIR-R-B Colour [LC] ]
Rainbow - Average Deviation Luminance / NIR-R-B Colour [LC]
[ Rainbow - Variance Luminance / (Ratio: NIR To R)-(Ratio: NIR To G)-(Ratio: NIR To B) Colour [LC] ]
Rainbow - Variance Luminance / (Ratio: NIR To R)-(Ratio: NIR To G)-(Ratio: NIR To B) Colour [LC]
[ Yellowstone Hotspring - (ND(Pos): NIR-UVA)-(ND(Pos): G-UVA)-(ND(Pos): B-UVA) [3C] ]
Yellowstone Hotspring - (ND(Pos): NIR-UVA)-(ND(Pos): G-UVA)-(ND(Pos): B-UVA) [3C]
[ Yellowstone Hotspring - (ND(Pos): R-G)-(ND(Pos): G-B)-(ND(Pos): B-UVA) [3C] ]
Yellowstone Hotspring - (ND(Pos): R-G)-(ND(Pos): G-B)-(ND(Pos): B-UVA) [3C]
[ Yellowstone Hotspring - (Ratio: G To R)-(Ratio: B To G)-(Ratio: UVA To B) [3C] ]
Yellowstone Hotspring - (Ratio: G To R)-(Ratio: B To G)-(Ratio: UVA To B) [3C]
[ Yellowstone Hotspring - (Ratio: NIR To R)-(Ratio: R To B)-(Ratio: G To UVA) [3C] ]
Yellowstone Hotspring - (Ratio: NIR To R)-(Ratio: R To B)-(Ratio: G To UVA) [3C]
[ Sunset - (Ratio: NIR To R)-(Ratio: NIR To B)-(Ratio: NIR To UVA) [3C] ]
Sunset - (Ratio: NIR To R)-(Ratio: NIR To B)-(Ratio: NIR To UVA) [3C]
   

"Understanding is a three-edged sword."[3]

 

TMSB can be used to process a variety of different types of source material, such as multispectral satellite imagery and images taken by the Mars rovers:

Colours, Out Of Space
[ Mars Rover exponential R-G-B ]
Mars Rover exponential R-G-B
[ Mars Rover exponential R-G-B ]
Mars Rover exponential R-G-B
[ Big Bend - KT3-KT2-KT1 [3C] ]
Big Bend - KT3-KT2-KT1 [3C]
[ New York City - KT1-KT2-KT3 [3C] ]
New York City - KT1-KT2-KT3 [3C]
[ Big Bend Thermal Infrared Map [Gr] ]
Big Bend Thermal Infrared Map [Gr]
[ New York City - Vegetation Index Map [Gr] ]
New York City - Vegetation Index Map [Gr]
[ Big Bend - Variance Luminance/Vegetation Index Map Colour [LC] ]
Big Bend - Variance Luminance/Vegetation Index Map Colour [LC]
[ Big Bend - IR1-Green-Blue [3C] ]
Big Bend - IR1-Green-Blue [3C]
   

Their origin is not from the human race.[8]

 

TMSB is free and open source (GPLv3), and can be downloaded at the bottom of this page. It runs on Windows and can also run on Unix-like operating systems with some additional work. I've tested it under openSUSE 10.3, Fedora 16, and Kubuntu 10.10 Linux successfully.

It acts as a (multiprocessing-capable) front-end to DaVinci's Shadow, a minor fork of DaVinci, which is a command-line data-processing tool written by Arizona State University for NASA's Jet Propulsion Laboratory that is typically used for processing images obtained by the Mars rovers and orbiters as well as other spacecraft.

It is a .NET 2.0 application with both GUI and command-line interfaces, and uses XML configuration files to determine how it will process a given type of data. It includes prewritten files for handling the sort of NIR/R/G/B/UV-A photos that I take with my modified DSLR, satellite data from JPL's OnEarth website, and both pancams on the Mars Exploration Rovers. Any of these can be processed using a variety of options, and additional configurations can be created by anyone who understands XML.

TMSB on Windows®
[ Processing a single image set ]
Processing a single image set
[ Processing four image sets simultaneously ]
Processing four image sets simultaneously
[ Processing four image sets simultaneously ]
Processing four image sets simultaneously
[ Processing eight image sets simultaneously ]
Processing eight image sets simultaneously
 

The Mirror's Surface Breaks processing on its native platform.

 
TMSB on Linux
[ openSUSE 11.3 - About window ]
openSUSE 11.3 - About window
[ openSUSE 11.3 - processing ]
openSUSE 11.3 - processing
[ openSUSE 11.3 - output files in CinePaint ]
openSUSE 11.3 - output files in CinePaint
[ Fedora 16 - About window ]
Fedora 16 - About window
[ Fedora 16 - basic processing ]
Fedora 16 - basic processing
[ Fedora 16 - three images sets processing simultaneously ]
Fedora 16 - three images sets processing simultaneously
[ Fedora 16 - output image in Krita ]
Fedora 16 - output image in Krita
[ Kubuntu 10.10 - About window ]
Kubuntu 10.10 - About window
[ Kubuntu 10.10 - basic processing ]
Kubuntu 10.10 - basic processing
 

As of version 1.3, TMSB can also run on a properly-equipped Linux system.

 
TMSB on BSD
[ About window ]
About window
[ Basic processing ]
Basic processing
     

TMSB can be made to work on BSD, with some (or possibly a lot of) additional effort.

 
Processing Model Diagram
[ Processing Diagram ]
Processing Diagram
       

A high-level view of the processing model for The Mirror's Surface Breaks

 

For more information on the various types of image that can be generated, as well as many more sample images, see the following articles:

The Name

"The Mirror's Surface Breaks" is a reference to "Waser", a song written by Nimpf in the late 1990s[4]. I thought it made a great name for this particular piece of software, for two main reasons:

Unlike the mirror in the song, using TMSB is unlikely to result in "absolving [of your] mistakes". In fact, it is very likely that any defects (dust on the image sensor, compression artifacts, and so on) will be magnified many times in at least some of the variations that it generates.

Background

TMSB is very different than typical photo-processing software, because such software (Photoshop®, etc.) is typically designed based on a number of assumptions:

For example, with conventional image-processing software, if I have taken a picture of a red rose, my goal with the software is typically to make that photo look as visually pleasing as possible, but in the end it will still appear on screen or in print as a red rose, and if someone were to see the end result and the real flower, they would immediately grasp the relationship between them. Sometimes the scene may be modified (removing unwanted elements, changing the colour of an object, and so forth), but it is still an attempt to convey a single image to the viewer.

In contrast, these were my assumptions when writing TMSB:

When I take a set of multispectral photos of a flower, I don't know what to expect, because my eyes can't see all of the spectral bands that are being captured. The end result may look similar to - or very different from - what I saw when I was photographing it. There may be many variations on the same image, each of which reveals something else about the same flower. There are so many possible ways to interpret the same data that it's much more efficient to have the software do it for me, then sift through the results for the ones that I like best[5].

Tutorials

Because TMSB works so differently compared to standard image-processing software, I've written a number of tutorials on different aspects of its use:

XML Configuration File Documentation

While TMSB allows different pre-existing configurations to be selected via the GUI, modifying those configurations or creating new ones requires editing XML files in the current version. Features common to all of the XML files are covered in the first article.

Why Is It Free?

TMSB is "free software" in both senses of the word.

It is "free" in the sense of not having a purchase price because I hope to encourage other people to work with multispectral imaging. There isn't really any good, general-purpose software in this field (at least that I'm aware of), and manually performing the same work is time-consuming and tedious.

I decided to make it "free" in the sense of releasing it under version 3 of the GPL because I felt like the makers of other free software (DaVinci and Hugin in particular) had set a good example by giving som ething useful to the community and not asking for anything in exchange, other than that improvements made to the software would be available in a similar manner. In the specific case of DaVinci, being able to build TMSB on top of that existing framework saved me a lot of time and added capabilities it wouldn't have otherwise, and while I could have done that and still kept TMSB closed-source, I would have felt like kind of a jerk.[7]

I certainly wouldn't turn down a donation of the spare digital X-ray system, thermal imager, box full of camera lenses in excellent optical condition, or other interesting hardware that someone has sitting unused in their basement, but the main thing that I hope to gain is seeing the uses the people put this software to. So if you do use TMSB to process images in some way, I'd love to see the results, or at least know about the uses you've found for it if you can't share the images. Please also let me know if I can mention them here. If you'd like to share custom configurations or scripts, please send those my way too.

Future Features

TMSB has a lot of capabilities in its current version, but there are numerous features I plan to add in future releases:

Known Issues

This initial release of TMSB is certainly not free of problems. Here are the ones that I'm aware of:

Frequently-Asked (and Anticipated) Questions

Update History

In reverse chronological order:

Version 1.3 - released 2012-01-15

Version 1.2.2 - released 2011-12-20

Version 1.2.1 - released 2011-06-04

Version 1.2 - released 2011-05-01

Version 1.1 - released 2011-02-22

Version 1.0 - released 2011-02-21

 
Download
File Size Version Release Date Author
The Mirror's Surface Breaks (Patch) 73 KiB 1.3.1 2013-05-05 Ben Lincoln
The files to update TMSB to version 1.3.1. Apply these onto either the Windows or Unix/Linux/MacOS version.
 
Download
File Size Version Release Date Author
The Mirror's Surface Breaks (for Windows®) 73 MiB 1.3 2012-01-15 Ben Lincoln
Version 1.3 of TMSB - includes 64-bit and 32-bit versions of DaVinci's Shadow compiled for Windows®. If you are upgrading from a previous version, you will need to update your script processor path in the Execution tab! See TMSB Tutorial 1: Basic Use!
 
Download
File Size Version Release Date Author
The Mirror's Surface Breaks (for Unix-like systems) 2 MiB 1.3 2012-01-15 Ben Lincoln
Version 1.3 of TMSB - DaVinci's Shadow is not included in this package, which is intended for users of Unix-like systems who will be compiling it themselves. You must download and compile the separate DaVinci's Shadow 2.9.2 package in order to use TMSB!
 
Download
File Size Version Release Date Author
The Mirror's Surface Breaks (Source Code) 1 MiB 1.3 2012-01-15 Ben Lincoln
This is the source code for version 1.3. You only need this file if you want to build your own version of TMSB in Visual Studio or another C# development environment.
 
Download
File Size Version Release Date Author
The Mirror's Surface Breaks (Patch) 24 KiB 1.2.2 2011-12-20 Ben Lincoln
A file to update TMSB to version 1.2.2, which includes optimizations for memory use in statistical and luminance/colour images.
 
Download
File Size Version Release Date Author
The Mirror's Surface Breaks (Patch) 23 KiB 1.2.1 2011-06-04 Ben Lincoln
A file to update TMSB to version 1.2.1, which includes improved luminance/colour blending.
 
Download
File Size Version Release Date Author
The Mirror's Surface Breaks 37 MiB 1.2 2011-05-01 Ben Lincoln
Version 1.2 of TMSB.
 
Download
File Size Version Release Date Author
The Mirror's Surface Breaks (Source Code) 1 MiB 1.2 2011-05-01 Ben Lincoln
This is the source code for version 1.2. You only need this file if you want to build your own version of TMSB in Visual Studio or another C# development environment.
 
Download
File Size Version Release Date Author
The Mirror's Surface Breaks 38 MiB 1.1 2011-02-22 Ben Lincoln
This is a bug-fix release that corrects an issue which caused TMSB to crash when run in an environment that used characters other than a period for the decimal separator.
 
Download
File Size Version Release Date Author
The Mirror's Surface Breaks (Source Code) 2 MiB 1.1 2011-02-22 Ben Lincoln
This is the source code for version 1.1. You only need this file if you want to build your own version of TMSB in Visual Studio or another C# development environment.
 
Download
File Size Version Release Date Author
The Mirror's Surface Breaks 38 MiB 1.0 2011-02-21 Ben Lincoln
 
 
Download
File Size Version Release Date Author
The Mirror's Surface Breaks (Source Code) 2 MiB 1.0 2011-02-21 Ben Lincoln
This is the source code for version 1.0. You only need this file if you want to build your own version of TMSB in Visual Studio or another C# development environment.
 
Footnotes
1. The Beatles, "Lucy in the Sky with Diamonds".
2. Dave Bowman in 2010: The Year We Make Contact, as well as the novel (but not the film) 2001: A Space Odyssey, by Arthur C. Clarke.
3. Ambassador Kosh Naranek in Babylon 5 (01x09 - "Deathwalker").
4. Nimpf was a side project of the equally-difficult-to-pronounce Luxt. The band in both its forms is now defunct, although some of Luxt's music is available in Apple's iTunes Music Store. To my knowledge, the only official release of the track in question was on Cleopatra Records' The Unquiet Grave Volume 1. At least one page mentions a demo disc where the track is supposedly listed as "Washer", but my copy of the Cleopatra compilation has "Waser" printed on the back cover and in the liner notes.
5. If you are feeling less-than-charitable, you may instead refer to this technique as the "Pollyanna method".
6. In addition, Microsoft has announced that Windows 29 will include an amazing database filesystem and not require reboots after installing operating system updates.
7. Note that if you actually decide to take advantage of its open-source nature, you may decide that this was not a benevolent act at all, especially regarding certain specific files (*cough*LumaColourImage.cs*cough*).
8. Evil's Toy, "Colours Out Of Space", referencing H.P. Lovecraft's "The Colour Of Of Space".
 
[ Page Icon ]