I’m capturing images of objects under an illumination dome with multiple LEDs as the light source, with a fixed, vertical camera position (dome RTI method). This generates a series of images, each of which is illuminated from a single light position ranging from low to high angles (roughly 5 to 80 degrees above the object plane). Because the camera position is fixed, all the images are in pixel-registration. The 36-megapixel raw images comprise approximately 5 GB of storage, in total.
As part of the dome calibration, I’ve captured an image of a ColorChecker target illuminated with a ring of high-angle (60°) LEDs for even illumination, as well as capturing images using each of the light positions. I’ve generated an mspec file for the ColorChecker target illuminated with the ring LEDs, and I’d like to compare images of the target illuminated from each of the individual LEDs. However, generating a separate mspec file and measuring the ColorChecker target individually for each of the LED positions is quite time consuming and tedious. I’m wondering if it’s possible to open all the images in a folder as a virtual stack using the same mspec calibration and measure the chart in the entire stack? In other words, is it possible to create a list of files to open as a virtual stack in a single mspec file, and measure them all simultaneously, or to automate the color chart measurement for the stack in some other way?
I realize this isn’t part of your usual workflow, but would appreciate any advice you can provide.
It is actually quite easy to modify the toolbox to deal with different combinations of photographs and create a stack. You’ll do this by modifying the camera specification file. Create your own file in “plugins/micaToolbox/cameras”. There are just two built-in files, a plain visible camera, and a UV camera where it specifies two input photographs. Use the UV file as a template and simply add as many new LED combinations as you want. This is convenient because you probably won’t want to save all the RGB data for each LED (just one or two is normally sufficient).
This is the UV example:
Photo R G B alignCh1 alignCh2
visible 1 2 3 0 0
uv 5 0 4 3 1
Each row specifies a new photograph. The RGB columns should have a zero if you don’t want to save that channel from that photograph, or numbers increasing from 1 specifying which slice in the final mspec stack that channel should be placed in. The alignment is used for specifying which channel in that photo should be used for aligning to which channel in the first photo. In this example it’s comparing visible B to uv R.
If you have a lot of photos it might be pretty slow to import them, but at least you don’t need to align them. It should deal with memory fairly efficiently though – sadly no virtual stack support (that would be far too slow with RAW images because they would need re-processing every time you change slice).