[ Beneath the Waves ]

TMSB XML Schema Part 4: Processing Configuration

article by Ben Lincoln

 

The processing configuration file is (by far) the most complex of the types used by TMSB, so I highly recommend looking at the examples included with the software for a better understanding of the many ways in which it can be used.

Note: the FileType value in the metadata section of the file must be Processing Configuration.

Schema

<ProcessingConfig>

<ColourImageOutputTransformations>

<OutputTransformation>

The name of a transformation profile to apply to all colour output images

</OutputTransformation>

</ColourImageOutputTransformations>

<ScriptVariables>

<ScriptVariable>

<Name>

A short name to identify variable. Do not use the percent sign character!

</Name>

<Value>

The value to replace the variable with. Can be any string representing DaVinci script code.

</Value>

</ScriptVariable>

</ScriptVariables>

<StatisticalGreyscaleCubes>

<StatisticalGreyscaleCube>

<CubeName>

A short name to identify the statistical cube

</CubeName>

<WindowSize>

See below

</WindowSize>

<UseAsThreeChannelChannels>

A boolean (true/false) value

</UseAsThreeChannelChannels>

<InputTransformation>

The name of a transformation profile to apply to all spectral bands before use in the statistical cube

</InputTransformation>

<OutputTransformation>

The name of a transformation profile to apply to all images output by the statistical cube configuration

</OutputTransformation>

<StatisticalGreyscaleImage>

<BandCombineMethod>

See below

</BandCombineMethod>

<UseAsLuminanceChannel>

A boolean (true/false) value

</UseAsLuminanceChannel>

<OutputTransformation>

The name of a transformation profile to apply this output image only

</OutputTransformation>

</StatisticalGreyscaleImage>

</StatisticalGreyscaleCube>

</StatisticalGreyscaleCubes>

<CustomGreyscaleChannels>

<CustomGreyscaleChannel>

<ChannelName>

A short name to identify the custom channel

</ChannelName>

<Type>

See below

</Type>

<CategoryName>

See below

</CategoryName>

<BandCombineMethod>

See below

</BandCombineMethod>

<CustomScriptCode>

See below

</CustomScriptCode>

<UseAsLuminanceChannel>

A boolean (true/false) value

</UseAsLuminanceChannel>

<UseAsThreeChannelChannel>

A boolean (true/false) value

</UseAsThreeChannelChannel>

<InputTransformation>

The name of a transformation profile to apply to all components of the custom channel before combining them

</InputTransformation>

<OutputTransformation>

The name of a transformation profile to apply to the custom channel after it is generated

</OutputTransformation>

</CustomGreyscaleChannel>

</CustomGreyscaleChannels>

<CombinedBandChannels>

<CombinedChannel>

<BandCombineMethod>

See below

</BandCombineMethod>

<UseAsLuminanceChannel>

A boolean (true/false) value

</UseAsLuminanceChannel>

<OutputTransformation>

The name of a transformation profile to apply to each of the combined band channels

</OutputTransformation>

</CombinedChannel>

</CombinedBandChannels>

<CalculatedChannelSets>

<CalculatedChannelSet>

<Name>

A brief, unique name for this set of calculated channels

</Name>

<CombinationMethod>

See below

</CombinationMethod>

<MaxRecursionDepth>

A positive integer

</MaxRecursionDepth>

<UseAsLuminanceChannel>

A boolean (true/false) value

</UseAsLuminanceChannel>

<UseAsStandardThreeChannelChannel>

A boolean (true/false) value

</UseAsStandardThreeChannelChannel>

<GenerateThreeChannelSimilarMotion>

A boolean (true/false) value - see below for details

</GenerateThreeChannelSimilarMotion>

<GenerateThreeChannelObliqueMotion>

A boolean (true/false) value - see below for details

</GenerateThreeChannelObliqueMotion>

<GenerateThreeChannelOtherPermutations>

A boolean (true/false) value - see below for details

</GenerateThreeChannelOtherPermutations>

<GenerateThreeChannelReciprocal>

A boolean (true/false) value - see below for details

</GenerateThreeChannelReciprocal>

<UseThreeChannelPermuatationsInLumaColourImages>

A boolean (true/false) value

</UseThreeChannelPermuatationsInLumaColourImages>

<InputTransformation>

The name of a transformation profile to apply to all components of the calculated channels before combining them

</InputTransformation>

<OutputTransformation>

The name of a transformation profile to apply to each calculated channel after it is generated

</OutputTransformation>

</CalculatedChannelSet>

</CalculatedChannelSets>

<CustomThreeChannelImages>

<CustomThreeChannelImage>

<UserDefinedName>

A brief, unique string to use in filenames related to this custom image

</UserDefinedName>

<RedChannelName>

The name of the greyscale channel to use as the red channel in the output image

</RedChannelName>

<GreenChannelName>

The name of the greyscale channel to use as the green channel in the output image

</GreenChannelName>

<BlueChannelName>

The name of the greyscale channel to use as the blue channel in the output image

</BlueChannelName>

<IncludeInSecondOrderImages>

A boolean (true/false) value

</IncludeInSecondOrderImages>

<InputTransformation>

The name of a transformation profile to apply to individual channels of the custom image before combining them

</InputTransformation>

<OutputTransformation>

The name of a transformation profile to apply to the custom image as a whole after it is generated

</OutputTransformation>

</CustomThreeChannelImage>

</CustomThreeChannelImages>

<DCSVariations>

<DCSVariation>

<DCSType>

See below

</DCSType>

<ColourSpace>

See below

</ColourSpace>

<SubSectionSize>

A decimal/floating-point value greater than 0.0 but less than 1.0 (only used in running DCS)

</SubSectionSize>

<Ignore>

See below

</Ignore>

<Variance>

A decimal/floating-point value greater than 0.0 but less than 1.0 - see below for a description

</Variance>

<UseInStandardLumaColourImages>

A boolean (true/false) value

</UseInStandardLumaColourImages>

<UseInDCSEnhancedContrast>

A boolean (true/false) value - false is recommended - see below

</UseInDCSEnhancedContrast>

</DCSVariation>

</DCSVariations>

<TintMapping>

<TintedChannel>

<ReferenceType>

See below

</ReferenceType>

<ChannelReference>

See below

</ChannelReference>

<TintName>

The name of a tinting colour to use

</TintName>

<IncludeInSecondOrderImages>

A boolean (true/false) value

</IncludeInSecondOrderImages>

</TintedChannel>

</TintMapping>

<GradientMapping>

<GradientMappedChannel>

<ReferenceType>

See below

</ReferenceType>

<ChannelReference>

See below

</ChannelReference>

<GradientName>

The name of a gradient to use

</GradientName>

<IncludeInSecondOrderImages>

A boolean (true/false) value

</IncludeInSecondOrderImages>

</GradientMappedChannel>

</GradientMapping>

<GenerateStatisticalChannels>

A boolean (true/false) value

</GenerateStatisticalChannels>

<GenerateCalculatedChannels>

A boolean (true/false) value

</GenerateCalculatedChannels>

<GenerateCustomChannels>

A boolean (true/false) value

</GenerateCustomChannels>

<GenerateTintedImages>

A boolean (true/false) value

</GenerateTintedImages>

<GenerateGradientImages>

A boolean (true/false) value

</GenerateGradientImages>

<GenerateThreeChannelImages>

A boolean (true/false) value

</GenerateThreeChannelImages>

<GenerateStandardThreeChannelImages>

A boolean (true/false) value

</GenerateStandardThreeChannelImages>

<GenerateCustomThreeChannelImages>

A boolean (true/false) value

</GenerateCustomThreeChannelImages>

<GenerateCalculatedThreeChannelImages>

A boolean (true/false) value

</GenerateCalculatedThreeChannelImages>

<GenerateLumaColourImages>

A boolean (true/false) value

</GenerateLumaColourImages>

<GenerateDCSImages>

A boolean (true/false) value

</GenerateDCSImages>

<GenerateStatisticalImageThreeChannelPermutations>

A boolean (true/false) value

</GenerateStatisticalImageThreeChannelPermutations>

<GenerateStatisticalImageThreeChannelPermutationsUnrestricted>

A boolean (true/false) value

</GenerateStatisticalImageThreeChannelPermutationsUnrestricted>

<GenerateLumaColourVariationsFromIndividualBands>

A boolean (true/false) value

</GenerateLumaColourVariationsFromIndividualBands>

<GenerateLumaColourVariationsFromCombinedChannels>

A boolean (true/false) value

</GenerateLumaColourVariationsFromCombinedChannels>

<GenerateLumaColourVariationsFromStatisticalChannels>

A boolean (true/false) value

</GenerateLumaColourVariationsFromStatisticalChannels>

<GenerateLumaColourVariationsFromThreeChannelImages>

A boolean (true/false) value

</GenerateLumaColourVariationsFromThreeChannelImages>

<GenerateLumaColourVariationsFromDCSImages>

A boolean (true/false) value

</GenerateLumaColourVariationsFromDCSImages>

<GenerateDCSImagesFromIndividualChannels>

A boolean (true/false) value

</GenerateDCSImagesFromIndividualChannels>

<GenerateDCSImagesFromCombinedChannels>

A boolean (true/false) value

</GenerateDCSImagesFromCombinedChannels>

<GenerateDCSImagesFromCustomThreeChannelImages>

A boolean (true/false) value

</GenerateDCSImagesFromCustomThreeChannelImages>

<GenerateDCSEnhancedContrast>

A boolean (true/false) value - false is recommended - see below

</GenerateDCSEnhancedContrast>

</ProcessingConfig>

Notes

ColourImageOutputTransformations is an optional section which is used to indicate one or more transformation profiles to apply to all colour (non-greyscale) output images.

If that section is included, then any number of OutputTransformation values may be defined within it. See TMSB XML Schema Part 6: Transformation Profiles for a discussion of these profiles. If multiple entries are specified, they are applied in the order they appear within the processing configuration file.

ScriptVariables is an optional section (introduced in version 1.2 of TMSB) which allows reusable script variables to be defined.

These variables are currently only supported in CustomGreyscaleChannels definitions with a Type of CustomScriptCode (see below).

Name can be any string that does not contain a percent sign, although short strings without spaces or special characters are highly recommended.

Value can be any string that represents legitimate DaVinci/DaVinci's Shadow script code. For example, any of these three:

1.0

(1.0 / 3.0)

pow(2.0, 8.0)

...are valid for Value, because they can all be parsed by the DaVinci script engine.

StatisticalGreyscaleCubes is an optional section used to define one or more ways in which all spectral bands will be processed using statistical functions (see Statistical Greyscale Images for an extended discussion of this type of image). Each distinct "cube" (set of statistical images which share common values for aspects such as window size) is contained with a StatisticalGreyscaleCube block in this section.

Within a StatisticalGreyscaleCube block:

CubeName is a short, descriptive name. It will be used for (among other things) the filename of images created out of the statistical set, so if multiple statistical cubes are defined, they must each have a unique name.

WindowSize is a positive integer which represents the size (along each edge) of the rectangular sample which will be taken for each output pixel of the statistical cube. For example, a value of 1 will result in samples that only use the current position on the X and Y axis, and sample along the Z axis of the cube. A value of 3 will result in a sample of 9 pixels (3x3) times the number of spectral bands defined in the input file, centered on the current X/Y position as the statistical cube is being generated. This concept is discussed in detail in the Statistical Greyscale Images article. It is recommended that odd values be used, or the median output image (if its generation is enabled - see below) will contain interpolated data.

UseAsThreeChannelChannels controls whether or not the greyscale images output as a result of the statistical cube configuration will be used in statistical three-channel false colour images (assuming that option is enabled - see below).

InputTransformation and OutputTransformation are optional references to transformation profiles, but the referenced input profiles (if any) are only applied to the images as used in the statistical cube, and the output profiles (if any) are only applied to the images output as a result of the statistical cube configuration.

The StatisticalGreyscaleImage block should occur at least once within every StatisticalGreyscaleCube block, and contains the following values:

BandCombineMethod is one of the following statistical functions:

Minimum (or Min)
Maximum (or Max)
Average (or Avg)
AverageDeviation (or ADev)
StandardDeviation (or SDev)
Variance (or Var)
Skewness (or Skew)
Kurtosis (or Kurt)
Median (or Med)
Range

UseAsLuminanceChannel controls whether or not the specific statistical image being defined will be available for use as the luminance channel in luminance/colour false colour images.

OutputTransformation is an optional reference to a transformation profile which will be applied only to the specific statistical image being defined in the current StatisticalGreyscaleImage block.

CustomGreyscaleChannels is an optional section in which complex rules can be defined for generating greyscale images other than the permutations that TMSB will generate automatically. In addition, this section can be used to define image types that would be among those permutations, without generating the full range. For example, if a particular user finds the normalized difference of near infrared and blue to be valuable, but does not want to generate all normalized difference permutations, that one specific image could be defined in this section. Each such custom greyscale image is defined within its own CustomGreyscaleChannel block.

Within a CustomGreyscaleChannel block:

ChannelName will be used in filenames as well as any other explicit references defined in the XML, so a brief name is highly recommended. A unique name is required.

Type is one of the following:

BandCategory

CustomScriptCode

If Type is set to BandCategory, then the CategoryName value determines which category of spectral band will be combined to generate the custom channel. For example, if this value is set to HumanVisible, then (assuming all three are present in the source data) the output channel will consist of some combination of red, green, and blue, as determined by the BandCombineMethod value, below.

If Type is set to BandCategory, then the BandCombineMethod value determines how all of the bands in the specified category will be combined. See the BandCombineMethod list in the StatisticalGreyscaleCube section (above) for valid values.

If Type is set to CustomScriptCode, then the CustomScriptCode value is used to define the DaVinci script code used to generate the custom greyscale image.

The syntax for CustomScriptCode values is any single line of the form:

= [SCRIPTCODE]

...where [SCRIPTCODE] is replaced by any valid DaVinci script.

Before being passed to DaVinci, the script code is parsed for certain special variables:

%BandByName:[BANDNAME]%
%ChannelByName:[CHANNELNAME]%
%SpecialBand:[SPECIALBANDNAME]%
%Var:[VARIBLENAME]%

...where [BANDNAME], [CHANNELNAME], or [SPECIALBANDNAME] are replaced by the appropriate names to reference an object of one of those types (in the case of the first three), or the value of the script variable as defined in the ScriptVariables block (in the case of the fourth).

For example, if the CustomScriptCode value is set to = ndi(%SpecialBand:NearInfraredNonspecific%, %SpecialBand:Red%), then the custom greyscale channel will be generated by passing whichever bands (as defined in the input configuration) have been assigned the NearInfraredNonspecific and Red special band names. See TMSB XML Schema Part 2: Input Configuration for a discussion of the special band names available. If this custom greyscale channel is assigned the name Calculated-NDVI, then it can be referenced by a second custom greyscale channel by using the form %ChannelByName:Calculated-NDVI%. It is also possible to reference a specific source spectral band by name using the %BandByName:[BANDNAME]% syntax, but this is discouraged because it ties the processing configuration to a specific input configuration.

See the preceeding sections for explanations of the other values in this block.

CombinedBandChannels is an optional section in which methods can be assigned to combine the various spectral bands for use in traditional three-channel false colour images. By default, TMSB will use only the individual bands (for example, generating a three-channel image in which near infrared is mapped to the red channel, red is mapped to the green channel, and green is mapped to the blue channel). By adding one or more CombinedChannel blocks in this section, TMSB can be configured to generate each combination of two (or more) spectral bands as well. For example, if BandCombineMethod is set to Average, and the set of source spectral bands consists of near infrared, red, green, blue, and ultraviolet-A, then TMSB will generate a variety of interpolated channels (the average of near infrared and red, the average of near infrared and green, the average of near infrared, red, and green, et cetera). If the option to generate three-channel images is enabled, each of these permutations will be included in the set of spectral bands available to create those images. To continue the previous example, the output images would then include an image where the red channel was the average of near infrared and red, the green channel was green, and the blue channel was ultraviolet.

Obviously, most of the entries that can be added here will result in a dramatic increase in the number of output images, so caution is recommended.

Within a CombinedChannel block:

BandCombineMethod is identical to the list discussed in the StatisticalGreyscaleCube section (above), with one exception: an additional method (Luminance (or Luma)) is also allowed. This is a special method which will only function if the input configuration file in use assigns all three of the SpecialBandName values Red, Green, and Blue. It will generate a "spectral band" consisting of the following formula: (Green * 0.587) + (Red * 0.299) + (Blue * 0.114) (the standard weights for calculating luminance in video systems).

See the preceeding sections for explanations of the other values in this block.

CalculatedChannelSets is an optional section in which TMSB can be configured to generate permutations of the spectral bands using simple mathematical functions (see Calculated Greyscale Images for an in-depth discussion of this topic). Each distinct configuration is contained in a CalculatedChannelSet block in this section.

Within a CalculatedChannelSet block:

Name defines the name which will be prepended to the generated permutations to create their filenames, so the usual rules regarding filenames apply. This value must be unique among all CalculatedChannelSet blocks defined in the processing configuration.

CombinationMethod is one of the following values, which are discussed in the Calculated Greyscale Images article:

Ratio
Difference
NormalizedDifference

MaxRecursionDepth determines the complexity of the combinations that TMSB will generate for the set. If this value is set to 1, then only permutations consisting of two distinct spectral bands (for example, the ratio of near infrared to red) will be created. If this value is set to 2, then after generating each two-band permutation, those permutations will then be used to generate a second "generation", such as (near infrared/red)/green and (near infrared/red)/(green/blue). Using values other than 1 is not recommended except for extremely specialized processing, because of the large number of output images that will result, and because such configurations have not been tested extensively.

UseAsStandardThreeChannelChannel controls whether or not the permutations generated for the set will be treated as spectral bands for purposes of generating three-channel images. This is distinct from the following five options in that those options confine the permutations from the set to use with each other, as opposed to being used with the actual spectral bands. This option has not been tested extensively, and its use will result in a large number of output images of questionable value.

The types of images generated by the following five options are discussed in more detail in the Three-Channel False Colour article. Images generated by enabling any or all of these options are confined to using only calculated channels generated by the set defined by the current block. For example, if the processing configuration defines both Ratio and Difference blocks, the three-channel images generated as a result of the Ratio block will be based only on Ratio calculations.

GenerateThreeChannelSimilarMotion determines whether three-channel false colour images will be generated in which the relationship between the spectral bands of each channel follows the music theory-derived "similar motion" rule discussed in the Three-Channel False Colour article. For example, in a Difference configuration, an image in which the red channel consists of (infrared-red), the green channel consists of (red-green), and the blue channel consists of (green-ultraviolet).

GenerateThreeChannelObliqueMotion determines whether three-channel false colour images will be generated in which the relationship between the spectral bands of each channel follows the music theory-derived "oblique motion" rule discussed in the Three-Channel False Colour article. For example, in a Difference configuration, an image in which the red channel consists of (infrared-red), the green channel consists of (infrared-green), and the blue channel consists of (infrared-ultraviolet).

GenerateThreeChannelOtherPermutations determines whether three-channel false colour images will be generated that do not meet either the "similar motion" or "oblique motion" criteria. Enabling this option will result in a large number of output images. Note that in order to generate all permutations, all three options (not just this one) must be enabled.

GenerateThreeChannelReciprocal controls whether or not the inverse of any permutations generated by the preceeding three options will also be generated. For example, in a Difference configuration, if the previously-used example of an (infrared-red), (infrared-green), (infrared-ultraviolet) image was generated, then a second image consisting of (red-infrared), (green-infrared), (ultraviolet-infrared) will also be generated. This can be useful because certain calculated images appear inverted from what most people viewing the image would find most intuitive. Enabling this option will (of course) double the number of output images created for the set.

UseThreeChannelPermuatationsInLumaColourImages controls whether or not the images generated for the set will be used as the colour channel in luminance/colour images.

See the preceeding sections for explanations of the other values in this block.

CustomThreeChannelImages is an optional section in which custom mappings of greyscale image to three-channel false colour are defined (each in its own CustomThreeChannelImage block).

Within a CustomThreeChannelImage block:

UserDefinedName is an optional, short string which is used as the filename instead of the automatic filename which TMSB would generate for the combination of channels defined by the three options below.

RedChannelName, GreenChannelName, and BlueChannelName are used to reference the three greyscale channels/images which should be mapped to red, green, and blue in the output image.

IncludeInSecondOrderImages controls whether or not the custom three-channel image will be used in "second-order" permutations such as luminance/colour and decorrelation stretch.

See the preceeding sections for explanations of the other values in this block.

DCSVariations is an optional section in which one or more decorrelation stretch configurations can be defined. This type of image processing is discussed at length in the Decorrelation Stretch Images article. Each configuration is contained in a distinct DCSVariation block.

Within a DCSVariation block:

DCSType is either Standard, or Running. Standard causes the entire image to be processed using a single DCS calculation. Running causes the image to be divided into rectangular subsections which are processed individually and then recombined.

ColourSpace DCS was designed to operate in an RGB colourspace, but visually-interesting results can be obtained by using the same calculation in an alternate colourspace. In particular, the use of YUV seems to result in brighter, higher-contrast images that are otherwise similar to those generated in the RGB colourspace. This value is one of:

RGB
YUV
HSY
HSV
HSL
IHSL

SubSectionSize is used only when DCSType is set to Running, and controls the relative size of each subsection. This is a decimal/floating-point value greater than 0.0 but less than 1.0, and represents the value by which the length and width should be multiplied to determine the subsection size. For example, to process the image as four quadrants, use 0.5 (each subsection will be 50% of the width and height of the total image). To process the image as a 4x4 grid of 16 subsections, use 0.25. The use of smaller subsections causes an increase in the apparent contrast of the output image, but can quickly lead to the appearance of noise in the image. In particular, thumbnails of running DCS images will often appear to be chaotic colour noise, even though the full-size image is at least somewhat usable.

Ignore is an optional value which is passed as the parameter of the same name to the actual DCS function in DaVinci's Shadow. Its use is recommended for experts only. See the DaVinci documentation for more information. Note that TMSB uses a modified DCS function which operates on floating-point values, so in the unlikely event that anyone makes use of this parameter, it should be specified as a decimal value between 0.0 and 1.0.

Variance is an optional value which is passed as the parameter of the same name to the actual DCS function in DaVinci's Shadow. This parameter essentially controls the "strength" of the DCS effect which is applied to the image. If it is omitted, the default value of approximately 0.196078 is used (the actual value is represented internally as 50.0 / 255.0). This default is a "magic number" which was obtained by converting the default integer value from the 8-bit-per-channel DCS function included with DaVinci to floating-point format, and may or may not be based on important mathematical foundations. Using a Variance of less than the default will generally only cause the image to appear washed-out. Using a higher value will increase the contrast, often to the point of absurdity/special effects purposes.

UseInStandardLumaColourImages determines whether DCS images will be used as the colour channel in luminance/colour images. It has a nonstandard name compared to the same value in other sections of the configuration because of the next value (which only exists for DCS images).

The use of UseInDCSEnhancedContrast is discouraged at this time. This is an experimental feature which I started working on in an attempt to create a type of image which made use of the increased contrast that DCS images have, but which was less extreme in terms of colours. As discussed in the Decorrelation Stretch Images article, I find DCS images to quickly be visually fatiguing due to the extreme range of colours, and so hoped a compromise could be achieved. The current functionality in TMSB when this option is enabled is to create a luminance/colour image in which the DCS variation of a particular image as the luminance channel, and the original (pre-DCS) image is used as the colour channel. While this sometimes produces interesting results, it does not seem to achieve the goal of creating a more useful image overall. It won't hurt anything to turn this option on, but because it does not actually enhance the contrast of the image, this option is disabled in all of the processing configuration files which are included with TMSB. A future version of TMSB may replace this method with one that actually works as intended.

TintMapping is an optional section in which tinting colours (see TMSB XML Schema Part 5: Colour and Gradients) are applied to greyscale channels/images (via the luminance/colour method). Each mapping is defined in an individual TintedChannel block.

Within a TintedChannel block:

ReferenceType is one of:

BandByName
ChannelByName
SpecialBand

You may recognize these three values from the CustomScriptCode section, above. They use the same logic internally in TMSB.

ChannelReference is the name of the spectral band/channel or the special band name (depending on the value of ReferenceType) to which the colour should be applied.

TintName is the name of the tinting colour (as defined in the global colour/gradient configuration file) that should be applied to the image referenced by the previous two values.

IncludeInSecondOrderImages determines whether the tinted image will be used in "second-order" images such as luminance/colour. If TMSB used a simple luminance/colour model such as swapping the luminance channel, then this would not be a particularly useful option. However, TMSB uses a luminance/colour algorithm similar to Adobe Photoshop® (see Secrets of Photoshop's Colour Blend Mode Revealed (Sort Of)), and so the result of this type of combination is not identical to simply applying the original colour to the luminance channel from the "second-order" combination. Whether that makes it useful or not is left to the user to decide.

GradientMapping is an optional section in which colour gradients (see TMSB XML Schema Part 5: Colour and Gradients) are applied to greyscale channels/images (as high-fidelity colour palettes). The syntax/usage of this section (other than the tag names) is identical to the TintMapping section (above), with the exception that the reference is to a gradient (defined in the same global file as tinting colours) instead of a colour.

All remaining values are high-level toggles that determine whether certain types of image are generated at all (regardless of how the options for those permutations/mappings are configured).

GenerateStatisticalChannels: enable/disable the creation of greyscale statistical images/cubes.

GenerateCalculatedChannels: enable/disable the creation of calculated image sets.

GenerateCustomChannels: enable/disable the creation of custom greyscale images/channels.

GenerateTintedImages: enable/disable the creation of tinted false colour images.

GenerateGradientImages: enable/disable the creation of gradient-mapped false colour images.

GenerateThreeChannelImages: enable/disable the creation of all three-channel false colour images (those in which three greyscale images are mapped to red, green, and blue).

GenerateStandardThreeChannelImages: enable/disable the creation of standard three-channel false colour images in which spectral bands are mapped to one of the channels.

GenerateCustomThreeChannelImages: enable/disable the creation of custom-defined three-channel images (if any are configured).

GenerateCalculatedThreeChannelImages: enable/disable the creation of three-channel images based on calculated greyscale channels (if any are configured).

GenerateLumaColourImages: enable/disable the creation of luminance/colour false colour images.

GenerateDCSImages: enable/disable the creation of decorrelation-stretch images.

GenerateStatisticalImageThreeChannelPermutations: enable/disable the creation of three-channel false colour images by treating the statistical images from a greyscale cube as "spectral bands", in order of their definition within that cube. For example, if the cube has four methods defined (Kurtosis, Skewness, Variance, and Median), then three images will be created (Kurtosis-Skewness-Variance, Kurtosis-Skewness-Median, Kurtosis-Variance-Median, and Skewness-Variance-Median).

GenerateStatisticalImageThreeChannelPermutationsUnrestricted is the same as the previous option, except that permutations will be generated regardless of the order in which the statistical images are defined in each statistical cube. While this is more accurate (because - to use the previous example - kurtosis is not "of longer wavelength" than skewness), it will result in a much larger number of output images.

GenerateLumaColourVariationsFromIndividualBands: enable/disable the creation of luminance/colour images in which both of the following facts are true: the luminance channel is based on one (and only one) spectral band, and each channel of the colour image is also based on one (and only one) spectral band.

GenerateLumaColourVariationsFromCombinedChannels: enable/disable the creation of luminance/colour images in which at least one of the components listed above consists of more than one spectral band. For example, the luminance channel is the average of near infrared and red.

GenerateLumaColourVariationsFromStatisticalChannels: enable/disable the use of statistically-generated images in luminance/colour images (as a component of either channel).

GenerateLumaColourVariationsFromThreeChannelImages: enable/disable the use of three-channel images in luminance/colour images (as a component of either channel).

GenerateLumaColourVariationsFromDCSImages: enable/disable the use of DCS images in luminance/colour images (as a component of either channel).

GenerateDCSImagesFromIndividualChannels: enable/disable the creation of DCS images from colour images in which each distinct component is based on one (and only one) spectral band.

GenerateDCSImagesFromCombinedChannels: enable/disable the creation of DCS images from colour images in which at least one distinct component is based on multiple spectral bands.

GenerateDCSImagesFromCustomThreeChannelImages: enable/disable the creation of DCS images from custom-defined three-channel images.

GenerateDCSEnhancedContrast: enable/disable on a global level the creation of "DCS-enhanced contrast" images. It is highly recommended that this option be left as false - see the discussion above in the DCS section.

Some of these options are cumulative. For example, GenerateLumaColourImages must be true in order for the values of GenerateLumaColourVariationsFromIndividualBands, GenerateLumaColourVariationsFromCombinedChannels (et cetera) to have any effect. In addition, unless the lower-level configuration is also defined, the toggle will have no effect. For example, the value of GenerateStatisticalImageThreeChannelPermutations will have no impact on the number of output images unless at least one statistical greyscale image cube is defined.

Enabling most of the FromCombinedChannels options is generally discouraged due to the large number of output images that will typically result.

Example

The following example creates a configuration in which:

<ProcessingConfig>

<StatisticalGreyscaleCubes>

<StatisticalGreyscaleCube>

<CubeName>

All_Bands

</CubeName>

<WindowSize>

1

</WindowSize>

<UseAsThreeChannelChannels>

true

</UseAsThreeChannelChannels>

<StatisticalGreyscaleImage>

<BandCombineMethod>

Max

</BandCombineMethod>

<UseAsLuminanceChannel>

false

</UseAsLuminanceChannel>

</StatisticalGreyscaleImage>

<StatisticalGreyscaleImage>

<BandCombineMethod>

Skew

</BandCombineMethod>

<UseAsLuminanceChannel>

true

</UseAsLuminanceChannel>

<OutputTransformation>

Normalize: Militant

</OutputTransformation>

</StatisticalGreyscaleImage>

<StatisticalGreyscaleImage>

<BandCombineMethod>

Kurt

</BandCombineMethod>

<UseAsLuminanceChannel>

true

</UseAsLuminanceChannel>

<OutputTransformation>

Normalize: Militant

</OutputTransformation>

</StatisticalGreyscaleImage>

<StatisticalGreyscaleImage>

<BandCombineMethod>

AvgDev

</BandCombineMethod>

<UseAsLuminanceChannel>

true

</UseAsLuminanceChannel>

<OutputTransformation>

Normalize: Militant

</OutputTransformation>

</StatisticalGreyscaleImage>

<StatisticalGreyscaleImage>

<BandCombineMethod>

Avg

</BandCombineMethod>

<UseAsLuminanceChannel>

false

</UseAsLuminanceChannel>

</StatisticalGreyscaleImage>

<StatisticalGreyscaleImage>

<BandCombineMethod>

Median

</BandCombineMethod>

<UseAsLuminanceChannel>

false

</UseAsLuminanceChannel>

<OutputTransformation>

Normalize: Standard

</OutputTransformation>

</StatisticalGreyscaleImage>

<StatisticalGreyscaleImage>

<BandCombineMethod>

StdDev

</BandCombineMethod>

<UseAsLuminanceChannel>

false

</UseAsLuminanceChannel>

<OutputTransformation>

Normalize: Militant

</OutputTransformation>

</StatisticalGreyscaleImage>

<StatisticalGreyscaleImage>

<BandCombineMethod>

Var

</BandCombineMethod>

<UseAsLuminanceChannel>

true

</UseAsLuminanceChannel>

<OutputTransformation>

Normalize: Militant

</OutputTransformation>

</StatisticalGreyscaleImage>

<StatisticalGreyscaleImage>

<BandCombineMethod>

Range

</BandCombineMethod>

<UseAsLuminanceChannel>

false

</UseAsLuminanceChannel>

<OutputTransformation>

Normalize: Militant

</OutputTransformation>

</StatisticalGreyscaleImage>

<StatisticalGreyscaleImage>

<BandCombineMethod>

Min

</BandCombineMethod>

<UseAsLuminanceChannel>

false

</UseAsLuminanceChannel>

</StatisticalGreyscaleImage>

</StatisticalGreyscaleCube>

</StatisticalGreyscaleCubes>

<CustomGreyscaleChannels>

<CustomGreyscaleChannel>

<ChannelName>

Calculated-NDVI_(Full_Range)

</ChannelName>

<Type>

CustomScriptCode

</Type>

<CustomScriptCode>

= ndi(%SpecialBand:NearInfraredNonspecific%, %SpecialBand:Red%)

</CustomScriptCode>

<UseAsLuminanceChannel>

false

</UseAsLuminanceChannel>

<UseAsThreeChannelChannel>

false

</UseAsThreeChannelChannel>

<OutputTransformation>

Specialized: Vegetation Index Biased Normalization

</OutputTransformation>

</CustomGreyscaleChannel>

<CustomGreyscaleChannel>

<ChannelName>

Visible_(Max)

</ChannelName>

<Type>

BandCategory

</Type>

<CategoryName>

HumanVisible

</CategoryName>

<BandCombineMethod>

Max

</BandCombineMethod>

<UseAsLuminanceChannel>

false

</UseAsLuminanceChannel>

<UseAsThreeChannelChannel>

false

</UseAsThreeChannelChannel>

<OutputTransformation>

Normalize: Standard

</OutputTransformation>

</CustomGreyscaleChannel>

<CustomGreyscaleChannel>

<ChannelName>

Calculated-VisMax_NDVI_(Positive)

</ChannelName>

<Type>

CustomScriptCode

</Type>

<CustomScriptCode>

= ndi(%SpecialBand:NearInfraredNonspecific%, %ChannelByName:Visible_(Max)%)

</CustomScriptCode>

<UseAsLuminanceChannel>

false

</UseAsLuminanceChannel>

<UseAsThreeChannelChannel>

false

</UseAsThreeChannelChannel>

<OutputTransformation>

Specialized: NDI (Positive Only)

</OutputTransformation>

</CustomGreyscaleChannel>

</CustomGreyscaleChannels>

<CombinedBandChannels>

<CombinedChannel>

<BandCombineMethod>

Luma

</BandCombineMethod>

<UseAsLuminanceChannel>

true

</UseAsLuminanceChannel>

</CombinedChannel>

</CombinedBandChannels>

<CalculatedChannelSets>

<CalculatedChannelSet>

<Name>

Ratio

</Name>

<CombinationMethod>

Ratio

</CombinationMethod>

<MaxRecursionDepth>

1

</MaxRecursionDepth>

<UseAsLuminanceChannel>

false

</UseAsLuminanceChannel>

<UseAsStandardThreeChannelChannel>

false

</UseAsStandardThreeChannelChannel>

<GenerateThreeChannelSimilarMotion>

true

</GenerateThreeChannelSimilarMotion>

<GenerateThreeChannelObliqueMotion>

true

</GenerateThreeChannelObliqueMotion>

<GenerateThreeChannelOtherPermutations>

false

</GenerateThreeChannelOtherPermutations>

<GenerateThreeChannelReciprocal>

true

</GenerateThreeChannelReciprocal>

<UseThreeChannelPermuatationsInLumaColourImages>

true

</UseThreeChannelPermuatationsInLumaColourImages>

<OutputTransformation>

Normalize: No Remorse

</OutputTransformation>

</CalculatedChannelSet>

<CalculatedChannelSet>

<Name>

Difference

</Name>

<CombinationMethod>

Difference

</CombinationMethod>

<MaxRecursionDepth>

1

</MaxRecursionDepth>

<UseAsLuminanceChannel>

false

</UseAsLuminanceChannel>

<UseAsStandardThreeChannelChannel>

false

</UseAsStandardThreeChannelChannel>

<GenerateThreeChannelSimilarMotion>

true

</GenerateThreeChannelSimilarMotion>

<GenerateThreeChannelObliqueMotion>

true

</GenerateThreeChannelObliqueMotion>

<GenerateThreeChannelOtherPermutations>

false

</GenerateThreeChannelOtherPermutations>

<GenerateThreeChannelReciprocal>

true

</GenerateThreeChannelReciprocal>

<UseThreeChannelPermuatationsInLumaColourImages>

false

</UseThreeChannelPermuatationsInLumaColourImages>

<OutputTransformation>

Normalize: Militant

</OutputTransformation>

</CalculatedChannelSet>

</CalculatedChannelSets>

<CustomThreeChannelImages>

<CustomThreeChannelImage>

<RedChannelName>

All_Bands_(Max)

</RedChannelName>

<GreenChannelName>

All_Bands_(Med)

</GreenChannelName>

<BlueChannelName>

All_Bands_(Min)

</BlueChannelName>

<IncludeInSecondOrderImages>

true

</IncludeInSecondOrderImages>

<OutputTransformation>

Normalize: Standard

</OutputTransformation>

</CustomThreeChannelImage>

</CustomThreeChannelImages>

<DCSVariations>

<DCSVariation>

<DCSType>

Standard

</DCSType>

<ColourSpace>

RGB

</ColourSpace>

<Variance>

0.21

</Variance>

<UseInStandardLumaColourImages>

false

</UseInStandardLumaColourImages>

<UseInDCSEnhancedContrast>

false

</UseInDCSEnhancedContrast>

</DCSVariation>

<DCSVariation>

<DCSType>

Running

</DCSType>

<ColourSpace>

YUV

</ColourSpace>

<SubSectionSize>

0.25

</SubSectionSize>

<UseInStandardLumaColourImages>

false

</UseInStandardLumaColourImages>

<UseInDCSEnhancedContrast>

false

</UseInDCSEnhancedContrast>

</DCSVariation>

</DCSVariations>

<TintMapping>

<TintedChannel>

<ReferenceType>

SpecialBand

</ReferenceType>

<ChannelReference>

UltravioletA

</ChannelReference>

<TintName>

Neon_Pink

</TintName>

<IncludeInSecondOrderImages>

true

</IncludeInSecondOrderImages>

</TintedChannel>

</TintMapping>

<GradientMapping>

<GradientMappedChannel>

<ReferenceType>

ChannelByName

</ReferenceType>

<ChannelReference>

Calculated-NDVI_(Full_Range)

</ChannelReference>

<GradientName>

Vegetation_Index_Triple_Scale_4

</GradientName>

<IncludeInSecondOrderImages>

true

</IncludeInSecondOrderImages>

</GradientMappedChannel>

</GradientMapping>

<GenerateStatisticalChannels>

true

</GenerateStatisticalChannels>

<GenerateCalculatedChannels>

true

</GenerateCalculatedChannels>

<GenerateCustomChannels>

true

</GenerateCustomChannels>

<GenerateTintedImages>

true

</GenerateTintedImages>

<GenerateGradientImages>

true

</GenerateGradientImages>

<GenerateThreeChannelImages>

true

</GenerateThreeChannelImages>

<GenerateLumaColourImages>

true

</GenerateLumaColourImages>

<GenerateDCSImages>

true

</GenerateDCSImages>

<GenerateStatisticalImageThreeChannelPermutations>

true

</GenerateStatisticalImageThreeChannelPermutations>

<GenerateStatisticalImageThreeChannelPermutationsUnrestricted>

false

</GenerateStatisticalImageThreeChannelPermutationsUnrestricted>

<GenerateLumaColourVariationsFromIndividualBands>

true

</GenerateLumaColourVariationsFromIndividualBands>

<GenerateLumaColourVariationsFromCombinedChannels>

false

</GenerateLumaColourVariationsFromCombinedChannels>

<GenerateLumaColourVariationsFromStatisticalChannels>

true

</GenerateLumaColourVariationsFromStatisticalChannels>

<GenerateLumaColourVariationsFromThreeChannelImages>

true

</GenerateLumaColourVariationsFromThreeChannelImages>

<GenerateLumaColourVariationsFromDCSImages>

false

</GenerateLumaColourVariationsFromDCSImages>

<GenerateDCSImagesFromIndividualChannels>

true

</GenerateDCSImagesFromIndividualChannels>

<GenerateDCSImagesFromCombinedChannels>

false

</GenerateDCSImagesFromCombinedChannels>

<GenerateDCSImagesFromCustomThreeChannelImages>

false

</GenerateDCSImagesFromCustomThreeChannelImages>

<GenerateDCSEnhancedContrast>

false

</GenerateDCSEnhancedContrast>

</ProcessingConfig>

 
[ Page Icon ]