The classic 'Check image' node is only minimally tolerant towards deviations. Using the
default algorithm of comparing pixel by pixel it is not possible to check images that
are generated in a notquitedeterministic way or differ in size.
By using the attribute 'Algorithm for image comparison' it is possible to define a special
algorithm which is tolerant towards certain image deviations. The attribute must start
with the algorithm definition in the form algorithm=<algorithm> followed by all
required parameters, separated by semicolons. Parameters may be defined in any
order, and use of variables is possible, e.g.:
algorithm=<algo>;parameter1=value1;parameter2=value2;expected=$(expected)
3.5.1+
Since QFTest 3.5.1 the definition does not need so start with algorithm=<algorithm>
but can simply begin with <algorithm>.
It is also no longer necessary to define the parameter 'expected'. QFTest uses a default value
if it is not set. Please see below for more information.
A detailed description of the available algorithms and their parameters is provided in the
following section.
For illustration, explanations are based on their effects on the following image:
In the related run log
(see section 7.1)
of a failed check you have the opportunity to analyze the results of the algorithm
as well as the result of probability calculation.
If you activate the option Log successful advanced image checks all tolerant
image checks will be logged for further analysis.
 Description

The classic  or default  image check compares the color value of every single
expected and actual pixel. If at least one expected pixel differs from the actual
pixel the check fails. The option
Tolerance for checking images defines the
tolerance for comparing pixel values.
 Purpose

This pixel based check is suitable if you expect an exact image match with minimal
tolerances or any deviations. Whenever your application renders the component not
fully deterministically, this algorithm is not suitable.
 Example

The classic image check doesn't transform the image, thus the result looks
identical to the original image.
The classic image check is used when the 'Algorithm for image comparison' attribute is empty.
 Description

This algorithm is similar to the classic algorithm, but accepts an amount of unexpected pixels.
It splits every pixel in it's three subpixels red, green and blue.
Afterwards it checks every actual color value against the expected color value.
The final result is the amount of identical pixels divided by the total amount of pixels.
The calculated result is checked against an expected value.
 Purpose

If your images are not rendered fully deterministic but you accept a certain
percentage of unexpected pixels, this algorithm may be useful.
But it is not suitable, if the actual images are used to have shifts or distortions.
 Example

The result image of the exemplary algorithm
algorithm=identity;expected=0.95
looks identical to the original image because this algorithm does not
manipulate the image.
 Parameters
 algorithm=identity

The 'Pixel based identity check' should be used.
 expected (optional, but recommended)

Defines which probability you expect.
Valid values are between 0.0 and 1.0. If not defined, use 0.98.
 resize (optional)

Defines, if the actual image should be resized before calculation to match
the size of the expected image.
Valid values are "true" and "false".
 find (optional)

Defines an imageinimage search.
A detailed description of this parameter can be found in subsection 57.3.1.
 Description

This algorithm splits every pixel in it's three subpixels red, green and blue.
Afterwards it checks every actual color value against the expected color value to
calculate a percental similarity. All percental deviations are added up and used for
calculation. The final result is the average deviation over all color values and
all pixels. The calculated result is checked against an expected value.
 Purpose

If your images are not rendered fully deterministic but you accept a certain
deviation, this algorithm is a possible candidate for your purpose.
If you accept deviations for some pixels, but the average deviation all over the image
is small, this algorithm is also suitable.
But it is not suitable, if the actual images are used to have shifts or distortions.
 Example

The result image of the exemplary algorithm
algorithm=similarity;expected=0.95
looks identical to the original image because this algorithm does not
manipulate the image.
 Parameters
 algorithm=similarity

The 'Pixel based similarity check' should be used.
 expected (optional, but recommended)

Defines which probability you expect.
Valid values are between 0.0 and 1.0. If not defined, use 0.98.
 resize (optional)

Defines, if the actual image should be resized before calculation to match
the size of the expected image.
Valid values are "true" and "false".
 find (optional)

Defines an imageinimage search.
A detailed description of this parameter can be found in subsection 57.3.1.
 Description

This algorithm partitions the image into quadratic blocks with a selectable size.
The color value of each of these blocks is calculated as the average of the color
values of the pixels the block contains.
If the width or height of the image is not a multiple of the block size, the blocks at
the right and bottom edge are cropped and weighted accordingly.
The actual blocks are checked against the expected blocks. The final result is the
amount of identical blocks divided by the total amount of blocks.
 Purpose

This algorithm's purpose is to check an image which only differs at some parts but is
identical at the remaining parts.
 Example

The exemplary algorithm
algorithm=block;size=10;expected=0.95
results in the following image:
 Parameters
 algorithm=block

The algorithm 'Blockbased identity check' should be used.
 size

Defines the size of each block.
Valid values are between 1 and the image size.
 expected (optional, but recommended)

Defines the minimal match probability for the check to succeed.
Valid values are between 0.0 and 1.0. If not defined, use 0.98.
 resize (optional)

Defines, if the actual image should be resized before calculation to match
the size of the expected image.
Valid values are "true" and "false".
 find (optional)

Defines an imageinimage search.
A detailed description of this parameter can be found in subsection 57.3.1.
 Description

This algorithm also partitions the image in quadratic blocks with a selectable size.
The color value of each of these blocks is calculated as the average of the color
values of the pixels the block contains.
If the width or height of the image is not a multiple of the block size, the blocks at
the right and bottom edge are cropped and weighted accordingly.
The color value of each expected block is checked against the actual block.
Their color values are analyzed for percental similarity. The final result is the
average similarity of all blocks with their weight taken into account.
 Purpose

This algorithm is suitable for checking images with similar color variances.
 Example

The exemplary algorithm
algorithm=blocksimilarity;size=5;expected=0.95
results in the following image:
 Parameters
 algorithm=blocksimilarity

The algorithm 'Blockbased similarity check' should be used.
 size

Defines the size of each block.
Valid values are between 1 and the image size.
 expected (optional, but recommended)

Defines the minimal match probability for the check to succeed.
Valid values are between 0.0 and 1.0. If not defined, use 0.98.
 resize (optional)

Defines, if the actual image should be resized before calculation to match
the size of the expected image.
Valid values are "true" and "false".
 find (optional)

Defines an imageinimage search.
A detailed description of this parameter can be found in subsection 57.3.1.
 Description

To create a histogram, an image is first broken into its three base colors red, green
and blue. Then the color values for each pixel are analyzed to partition them into a
definable amount of categories (known as buckets when talking about histograms).
The actual fill level of each bucket is compared to the expected level. The result of
the algorithm is a comparison of the relative frequencies of color categories.
 Purpose

Histograms are used for many scenarios. For example it is possible to check for
color tendencies or do brightness analyses.
However, histograms are not suitable for checking rather plaincolored images.
 Example

The exemplary algorithm
algorithm=histogram;buckets=64;expected=0.95
results in the following image:
 Parameters
 algorithm=histogram

A 'Histogram' should be used for this image check.
 buckets

Defines how many buckets to use.
Valid values are a power of 2 between 2 and 256.
 expected (optional, but recommended)

Defines the minimal match probability for the check to succeed.
Valid values are between 0.0 and 1.0. If not defined, use 0.98.
 resize (optional)

Defines, if the actual image should be resized before calculation to match
the size of the expected image.
Valid values are "true" and "false".
 find (optional)

Defines an imageinimage search.
A detailed description of this parameter can be found in subsection 57.3.1.
 Description

The Discrete Cosine Transformation is a realvalued, discrete, linear, orthogonal
transformation which transforms the discrete signal from local range to frequency range.
After transforming an image, you can eliminate loworder (fast oscillating) frequencies.
The remaining highorder (slow oscillating) frequencies with the steady component
(zeroth frequency = 0*cos(x) + y) can now be analyzed.
You can define how many frequencies per basic color should be used for this image check.
You can also specify a tolerance to accept cosineoscillations as identical which actually differ.
Loworder frequencies get weighted less than highorder frequencies when calculating the
result.
 Purpose

The Discrete Cosine Transformation is suitable for many kinds of image checks, which
require certain tolerances. The more frequencies are used for analysis the sharper the
image check is.
 Example

The exemplary algorithm
algorithm=dct;frequencies=20;tolerance=0.1;expected=0.95
results in the following image:
 Parameters
 algorithm=dct

'Analysis with Discrete Cosine Transformation' should be used for this image check.
 frequencies

Defines how many frequencies to analyze.
Valid values are between 0 (steady component only) and the area of the image.
The less frequencies are analyzed the more tolerant the check is. The tolerance is
also dependent on the size of the image.
 tolerance

Defines the (nonlinear) tolerance for accepting different cosineoscillations as
identical.
Valid values are between 0.0 and 1.0.
The value 1.0 means every image matches every other image, because the maximum
difference of each frequency is tolerated. A value of 0.0 means frequencies only
match if they are exactly the same. A value of 0.1 is a good starting point
because only quite similar frequencies are accepted as identical.
 expected (optional, but recommended)

Defines the minimal match probability for the check to succeed.
Valid values are between 0.0 and 1.0. If not defined, use 0.98.
 resize (optional)

Defines, if the actual image should be resized before calculation to match
the size of the expected image.
Valid values are "true" and "false".
 find (optional)

Defines an imageinimage search.
A detailed description of this parameter can be found in subsection 57.3.1.
 Description

When using this algorithm the image is first partitioned into quadratic blocks with a
selectable size (see subsection 57.2.4).
Afterwards every partition is analyzed using a Discrete Cosine
Transformation (see subsection 57.2.7).
The final result is the average of all results of these Discrete Cosine Transformations
with consideration of the blocks and their weight.
 Purpose

The Discrete Cosine Transformation used on the whole image deviates strongly in case of
significant brightness differences occurring in the middle of the image because then
the steady component (zeroth frequency), which is the highest weighted part, varies
strongly. The partitioning circumvents this behavior because now only the affected
partitions result in intense deviations while the other partitions stay untouched.
 Example

The exemplary algorithm
algorithm=dctblock;size=32;frequencies=4;tolerance=0.1;expected=0.95
results in the following image:
 Parameters
 algorithm=dctblock

'Blocks for analysis with Discrete Cosine Transformation' should be used for this
image check.
 size

Defines the size of each block.
Valid values are between 1 and the image size.
 frequencies

Defines how many frequencies to analyze.
Valid values are between 0 (steady component only) and the area of a block.
The less frequencies are analyzed the more tolerant the check is. The tolerance is
also dependent on the size of the image.
 tolerance

Defines the (nonlinear) tolerance for accepting different cosineoscillations as
identical.
Valid values are between 0.0 and 1.0.
The value 1.0 means every image matches every other image, because the maximum
difference of each frequency is tolerated. A value of 0.0 means frequencies only
match if they are exactly the same. A value of 0.1 is a good starting point
because only quite similar frequencies are accepted as identical.
 expected (optional, but recommended)

Defines the minimal match probability for the check to succeed.
Valid values are between 0.0 and 1.0. If not defined, use 0.98.
 resize (optional)

Defines, if the actual image should be resized before calculation to match
the size of the expected image.
Valid values are "true" and "false".
 find (optional)

Defines an imageinimage search.
A detailed description of this parameter can be found in subsection 57.3.1.
 Description

This algorithm shrinks the image to a chooseable percental size.
Afterwards the image gets resized to its original size by use of a bilinear filter.
This filter effects a blurring, because every color value is calculated by use
of neighbor pixels.
The final result is the average deviation over all color values and
all pixels of this transformed images.
 Purpose

Depending on the chosen sharpness the images loose any desired image information.
Thus this algorithm is valuable for nearly any scenario.
 Example

The exemplary algorithm
algorithm=bilinear;sharpness=0.2;expected=0.95
results in the following image:
 Parameters
 algorithm=bilinear

A 'Bilinear Filter' should be used for this image check.
 sharpness

Defines the sharpness of this bilinear filter.
Valid values are between 0.0 (complete loss of information) and 1.0 (no loss of information).
The sharpness is a linear parameter. This means a value of 0.5 eliminates exactly half
(plus minus rounding to entire pixels) of information.
 expected (optional, but recommended)

Defines the minimal match probability for the check to succeed.
Valid values are between 0.0 and 1.0. If not defined, use 0.98.
 resize (optional)

Defines, if the actual image should be resized before calculation to match
the size of the expected image.
Valid values are "true" and "false".
 find (optional)

Defines an imageinimage search.
A detailed description of this parameter can be found in subsection 57.3.1.
 Description

The imageinimage search allows to find an expected image within a (larger) image.
The check is successful when the expected image can be found anywhere using the defined algorithm.
Furthermore, you can determine the position of the match.
The following combination of parameters are valid:
find=best
or find=anywhere
find=best(resultX, resultY)
or find=anywhere(resultX, resultY)
 Purpose

The imageinimage search allows to compare images if you don't know the exact position and thus cannot define an offset.
The search can be combined with any algorithm and is thus valuable for any purpose.
 Example

The exemplary algorithm
algorithm=similarity;expected=0.95;find=best(resultX,resultY)
uses pixelbased similarity check (see subsection 57.2.3)
to find an image of Q as part of the full image. The got image with highlighted region can be found within the run log.
Besides, the variables resultX and resultY are set to the location of the found image.
 Parameters
 find=best

Defines that the best match should be used.
 find=anyhwere

Defines that the first match which exceeds the expected match probability should be used.
The imageinimage search uses multiple threads and thus finding anywhere is nondeterministic.
 resultX
resultX
is the name of a QFTest variable which holds the xposition of the found image.
If a variable for the xposition is defined, a variable for the yposition has to be defined as well (see syntax above).
 resultY
resultY
is the name of a QFTest variable which holds the yposition of the found image.
If a variable for the yposition is defined, a variable for the xposition has to be defined as well (see syntax above).