Jump to content
UltravioletPhotography

Revisiting Ben Lincoln's "The Mirror's Surface Breaks"


Andrea B.

Recommended Posts

Every now & then* I go prowl through Ben Lincoln's very cool photo pages on Beneath the Waves . In 2011 Ben wrote the software The Mirror's Surface Breaks which automated the process of creating RGB stacks. You can find some very nuanced and complex stack examples there. I'm still wishing for that software to be updated and ported to Macs.

 

TMSB was last updated in 2012. The software is downloadable, free, open-source. 

 

Just 3 of many interesting links:

 

A Detailed Introduction to Multispectral Photography
 

http://www.beneaththewaves.net/Photography/Uses_of_Multispectral_Photography.html

 

Stacking Software:  http://www.beneaththewaves.net/Software/The_Mirrors_Surface_Breaks.html


 

*English idiomatic phrase:  "every now & then" = occasionally, from time to time, periodically


 

Ben, if you see this, "Hi! And I hope all is going well for you."

 

Link to comment

I took a look at it and it's very confusing. But it does seem like it can generate color images using multiple channels, which would be absolutely priceless considering the sort of imagery I've been taking lately (see: my post "multispectral cucumber")

Link to comment

I really like the G-B-UVA and the R-B-UVA images. Did someone try this all in one shot ? I understand the difficulty of it. But maybe with a UV filter that leeks visible it can work ?

Link to comment
17 hours ago, Andrea B. said:

Every now & then* I go prowl through Ben Lincoln's very cool photo pages on Beneath the Waves . In 2011 Ben wrote the software The Mirror's Surface Breaks which automated the process of creating RGB stacks. You can find some very nuanced and complex stack examples there.

 

I'm still wishing for that software to be updated and ported to Macs.

It might be possible to run it on a Mac via CrossOver:

https://www.codeweavers.com/crossover

There is a free trial available.

 

It worked very well for me with a few astro-stacking softwares like http://astrosurface.com/ during my period of shooting images of the moon and Jupiter last winter/spring.

It also worked well with the very old Autostakkert.

CrossOver is a Vine Port that can handle some windows apps running them on full speed on Mac hardware.

 

Link to comment

I'll just ask here because the website is hardly clear on this. Is there any way to just put in a bunch of images of undisclosed wavelengths and have the program generate an image where it stacks all of them? Take my recent cucumbers, I could put in the 950, 850, 720, red, green, blue and UV bands. How can I get the program to stack them? I have figured out that I have to rename the individual files to different names for the program to understand what to do with them but is there a list of viable names anywhere? This is so confusing.

Link to comment

Fandyus, I don't quite understand your question. We can only have 3 human-viewable channels per image, so how would  you put 7 bands into 3 channels? Or by "stack" do you just mean ALIGNING them and picking 3 at a time to display?

Link to comment

I know you like maths so I'll show you a screenshot from Wavelengthpro that should hopefully explain it.

explanation.JPG.77fdfe03777ed0ab86b56ff342626e5f.JPG

I want a multichannel mixer with as many channels as you want so that I could take say, 10 images and make them into one color image. If I had 10 OD7 bandpasses, one at 400nm, another at 390, another at 380 and so on, I want to be able to take these 10 images and combine them into one image with superior color depth. I hope that makes sense.

Link to comment

Yeah, that helps a lot. I mean, you know what I would do is just use MATLAB (or Python if you want something free) to combine them. It's not very much code. But I bet you could do it with that "TMSB" program somehow. 

--

 

The thing is, I'm not sure you'd actually GET superior color depth. You still have only 3 channels for output, and your display device can only modify the intensity of those 3 colors. So even if you start with 10 images, what comes out the other side is still the same 3. You would need a monitor with more channels...

Link to comment
1 hour ago, Andy Perrin said:

Yeah, that helps a lot. I mean, you know what I would do is just use MATLAB (or Python if you want something free) to combine them. It's not very much code. But I bet you could do it with that "TMSB" program somehow. 

--

 

The thing is, I'm not sure you'd actually GET superior color depth. You still have only 3 channels for output, and your display device can only modify the intensity of those 3 colors. So even if you start with 10 images, what comes out the other side is still the same 3. You would need a monitor with more channels...

It's about the subtlety of the hues displayed. I think I could tell. I am absolutely not expecting it to suddenly widen my screen's gamut.

Link to comment
Quote

It's about the subtlety of the hues displayed.

For that, you are at the mercy of the lookup table (LUT) in your display. The display maintains a table of colors and whatever value you send it, it picks the closest match and shows that instead. If your LUT is limited to 8 bits/channel, and you manage to make an image that truly uses (say) all 16 bits/channel, it's still going to pick the closest 8 bit match and throw out the extra info.

 

More details here, the LUT discussion starts pretty far down, so scroll as needed:

https://www.eizo.com/library/basics/maximum_display_colors/

Link to comment

Yes its confusing from the website.  It might map 8 images, using red, green, blue, cyan, yellow, magenta,  ete. But not clear.

I haven't played with it.

 

Also Octave is the free Matlab alternative: 

https://octave.org/

Link to comment
12 hours ago, Andy Perrin said:

For that, you are at the mercy of the lookup table (LUT) in your display. The display maintains a table of colors and whatever value you send it, it picks the closest match and shows that instead. If your LUT is limited to 8 bits/channel, and you manage to make an image that truly uses (say) all 16 bits/channel, it's still going to pick the closest 8 bit match and throw out the extra info.

 

More details here, the LUT discussion starts pretty far down, so scroll as needed:

https://www.eizo.com/library/basics/maximum_display_colors/

You are looking at it way too literally and scientifically. I'm sorry.

Link to comment
12 hours ago, dabateman said:

Yes its confusing from the website.  It might map 8 images, using red, green, blue, cyan, yellow, magenta,  ete. But not clear.

I haven't played with it.

 

Also Octave is the free Matlab alternative: 

https://octave.org/

Well, if you figure something out, please do tell me. I really wanted to do this for a long time but Wavelengthpro crashes 9/10 times I try to save an image made from more than three channels.

I'll keep playing with it too but so far all I've figured out is how to get the thing to make a bunch of trichomes of all possible combinations (most of which don't make sense to me) and stacks like range, standard deviation and kurtosis. Nothing I couldn't do with Photoshop tho it's cool this program is free so it could potentially replace Photoshop in my processing pipeline if need be.

Link to comment
15 hours ago, Fandyus said:

You are looking at it way too literally and scientifically. I'm sorry.

What does that even mean?! 😆 I can’t believe any member here could say this with a straight face. Do I need to look at it with wishful thinking and unscientifically? 
 

Octave could work, although my bet is that Python is just as easy and not as crash-prone if a free alternative is desired. My experience with Octave is that it crashes frequently. The amount of programming knowledge needed for combining channels and reading in images is probably minimal. I’ve also heard good things about the Julia language, but have no direct experience. 

Link to comment

There's a kind of pseudo-stack thing you could experiment with in Photoshop Elements (or maybe Lightroom or big Photoshop).

 

I'll describe if for an RGB stack. It doesn;t use a channel mixer.

Example:  

Make 3 separate layers from the 3 images you want to stack.

Make 3 additional separate, blank layers.

Fill one blank with all red (255,0,) and Multiply layer it over the 1st image. Merge those 2 layers to make the Red channel.

Fill one blank with all green (0,255,0) and Multiply layer it over the 2nd image. Merge those 2 layers to make the Green channel.

Fill one blank with all blue (0,0,255) and Multiply layer it over the 3rd image. Merge those 2 layers to make the Blue channel.

Set each channel layer to Difference.

Merge the 3 Difference layers.

Done.

 

You can do this for as many layers as you like and use any colors for the Multiply layers.

 

Before anybody jumps in here.....😁.....I do know that this is a somewhat crude method. Maybe even very crude. It is only meant to be a way to experiment with channel stacking when you don't have any other tools. It might not be nuanced enough to be useful for attempting color depth.

 

For a 6-layer time-stack, I've used R, G, B, cyan, magenta, yellow.

 

You can use any color set you want, but the further apart they are on the color wheel, the better. For example, stacking Red, Orange and Yellow "channels" doesn't get you much at all.

 

BTW, I'm not exactly sure what "superior color depth" means? The typical observation about digital camera color is that more bits are better. The really good cameras use 14 (check that?) bit color recording to enable N number of colors. (I forget what N is. It's huge.)

 

Link to comment

Additively, if you take any 3 hues, you can mix to get the 3 primaries and the 3 secondaries. So I'm not entirely sure you would get more colors by stacking more images. I think maybe you just get different colors.

I tried a stack of 370 (R), 330 (G), 350 (B), 360 (Magenta), and 385 (Cyan). (Peaks are approximate.)

 

Here is the RGB stack of the first 3. (It's a flower, so alignment is definitely not perfect.)

Stack_of_3_RGB.jpg

 

 

Here is the RGB_Magenta stack of the first 4.

Stack_of_4_RGB_Magenta.jpg

 

Here is the RGB_Magenta_Cyan stack of all 5 images.

The pinks in the first RGB stack are no longer present. They were replaced by a pale blue-green. 

The bright lime hues in the second RGB_M stack are no longer present. They have also become pale blue-green.

The dark bulls-eye has become a very dark blue-green, unlike the first two stacks.

Stack_of_5_RGBMC.jpg

 

 

 

That was an interesting experiment. Please let us know if you get anywhere with stacking more than 3 images as regards color.

Link to comment

If I had lots of channels, like tens or hundreds, I would map them to the visible spectrum (like from 300-400 nm to 400-700 nm) and stack them using the CIE color matching functions. To me, this sounds like the most "scientific" way to do it, even though they are and will remain false colors.

Link to comment

It's been a while since I've used this software, but here's my TMSB gallery, with examples of single TIFF file processing.

(FS-Olympus PL1 with a Tiffen #15 deep yellow filter (WB set to 2000k)

 

TMSB was set up for single TIFF processing (NIR-R-G (TIFF -1 File), then selected the 'Specialized Convert Yellow 12 Filter Images' option.

The hot rod examples show the full range of generated files, from a single TIFF.

 

https://zenfolio.page.link/7AB4Y

 

Link to comment
On 8/14/2023 at 11:54 PM, Andrea B. said:

There's a kind of pseudo-stack thing you could experiment with in Photoshop Elements (or maybe Lightroom or big Photoshop).

 

I'll describe if for an RGB stack. It doesn;t use a channel mixer.

Example:  

Make 3 separate layers from the 3 images you want to stack.

Make 3 additional separate, blank layers.

Fill one blank with all red (255,0,) and Multiply layer it over the 1st image. Merge those 2 layers to make the Red channel.

Fill one blank with all green (0,255,0) and Multiply layer it over the 2nd image. Merge those 2 layers to make the Green channel.

Fill one blank with all blue (0,0,255) and Multiply layer it over the 3rd image. Merge those 2 layers to make the Blue channel.

Set each channel layer to Difference.

Merge the 3 Difference layers.

Done.

 

You can do this for as many layers as you like and use any colors for the Multiply layers.

 

Before anybody jumps in here.....😁.....I do know that this is a somewhat crude method. Maybe even very crude. It is only meant to be a way to experiment with channel stacking when you don't have any other tools. It might not be nuanced enough to be useful for attempting color depth.

 

For a 6-layer time-stack, I've used R, G, B, cyan, magenta, yellow.

 

You can use any color set you want, but the further apart they are on the color wheel, the better. For example, stacking Red, Orange and Yellow "channels" doesn't get you much at all.

 

BTW, I'm not exactly sure what "superior color depth" means? The typical observation about digital camera color is that more bits are better. The really good cameras use 14 (check that?) bit color recording to enable N number of colors. (I forget what N is. It's huge.)

 

Thanks for the tip Andrea, I might try it. By superior color depth I really just mean something not necessarily quantifiable. I mean that I think that if all the channels are stacked without having to combine some of them into three groups prior, you could get more subtle color differences in different places. I might be wrong, I can't test it since there's no convenient way to do it.

On 8/15/2023 at 7:21 PM, Stefano said:

Here I combined more than three images in 3 different ways.

Thanks, Stefano, I will take a look.

Link to comment

@Andrea B.@Stefano So I actually went ahead and tried your methods on the colorful mineral I posted recently. I had to switch Photoshop to the 32bit mode for it to not blow out but It worked after some alterations.

Normal method:

(720+850+950nm channels stacked on mean) - (RGB channels stacked on mean) - UV

multispectralrocknormalmethod.jpg.12822e6b744e5a4711d2e7706fda3297.jpg

 

Stefano/Andrea's method

multispectralrockstefanosmethod.jpg.832ec1e1253178d86b3c19767cb668f3.jpg

 

I think this is exactly what I was talking about, the colors are, in an artistic sense, way better looking. More subtle, the fabric is only faintly tainted orange, unlike with the normal method, where it is very yellow.  The shadows are less tinted, and the colors seem to be more saturated in certain places and less saturated in others. That is what I would say is better color depth. That 's what I wanted. Thanks for showing me how. I think I will try with a few more of my series of images.

Link to comment

I have now tried with my (yet unreleased) series on a lemon slice.

Normal method:

multispectrallemonnormalmethod.jpg.ab5e8304dfe6e0f7e9319346b87b73e2.jpg

 

Stefano/Andrea's method:

multispectrallemonstefanosmethod.jpg.b6dadea85068f6a1014f76c944aaadd9.jpg

 

Normalized difference between the two:

multispectrallemonmethodcomparisondifferencenormalized.jpg.931ead77d4314314fc0719b29325c401.jpg

 

Once again, I would say that the second image has a way more nuanced representation of colors.

Link to comment

Now, the question would be, how can I calculate a color combination for a specific amount of channels? What if I wanted only four or five? I suspect that for five channels, I could just trim off the two side ones? The dark red and dark blue one.

Link to comment

Nice to hear that you are achieving some results that please you!

 

I would try recalculating for 5 channels and compare that to what results from simply dropping the dark red and dark blue. I tentatively would guess that recalculation might provide better results, but this is too messy to try to think through. (For me, anyway!) Gotta actually try them both.

 

*************

 

Most of our photo converter/editors offer RGB channel manipulations. But how do we extract, for example, an authentic Yellow channel from a photo? The "Multiply" method I showed Fandyus is not quite accurate.

 

Here are some examples of trying to emulate the Red Channel of a photo. None of them really match the Red Channel.

First is the visible photo, converted with no edits.

marigolds.jpg

 

 

 

The actual Red Channel produced by Raw Digger with B&W point adjustment.

redChannel.jpg

 

 

 

I saved the original raw NEF as a TIFF.

In Photoshop Elements I put a Red Multiply layer over the TIFF. (B&W points were adjusted.)

redMultiplyLayer.jpg

 

 

 

In Photoshop Elements I put a Red Color layer over the TIFF. (B&W points were adjusted.)

redColorLayer.jpg

 

 

 

In Photoshop Elements I put a Red Hue layer over the TIFF. (B&W points were adjusted.)

redHueLayer.jpg

 

Link to comment

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...