Exhaustive#

Exhaustive template matching evaluates similarity along a provided set of rotations and all possible translations are sampled using Fast Fourier Transform (FFT) operations. Therefore, the algorithm is guaranteed to evaluate a provided set of configurations and to find a global optimum with a sufficiently high angular sampling rate.

Within pytme, exhaustive template matching is modularized into three primary stages: setup, scoring, and callback.

  1. Setup: Creates a context where template matching is poised to be carried out efficiently. Setup functions involve data preparation, configuring FFT operations and pre-computing shared parameters.

  2. Scoring: Sample scoring function across translational and rotational degrees of freedom.

  3. Callback: Custom on the fly processing of template matching results using analyzers.

This concept is embodied in the scan and scan_subsets methods below.

If you wish to integrate custom template matching methods into pytme, please refer to the Adding Custom Methods section.

Methods#

scan_subsets orchestrates the matching process, supporting parallel processing and post-scoring operations. scan_subsets is a wrapper around scan that enables template matching on data subsets, making it particularly useful for handling large datasets or targeting specific regions.

scan(matching_data, matching_setup, ...[, ...])

Run template matching.

scan_subsets(matching_data, matching_score, ...)

Wrapper around scan() that supports matching on splits of matching_data.

Setup functions#

cc_setup(matching_data, fast_shape, ...)

Setup function for computing the unnormalized cross-correlation between target (f) and template (g)

lcc_setup(matching_data, **kwargs)

Setup function for computing the laplace cross-correlation between target (f) and template (g)

corr_setup(matching_data, template_filter, ...)

Setup for computing a normalized cross-correlation between a target (f), a template (g) given template_mask (m)

cam_setup(matching_data, **kwargs)

Like corr_setup() but with standardized target, template

flc_setup(matching_data, fast_shape, ...)

Setup function for flc_scoring().

flcSphericalMask_setup(matching_data, ...)

Like flc_setup() for rotation invariant masks

mcc_setup(matching_data, fast_shape, ...)

Setup function for mcc_scoring().

Scoring functions#

corr_scoring(template, template_filter, ...)

Calculates a normalized cross-correlation between a target f and a template g.

flc_scoring(template, template_mask, ...)

Computes a normalized cross-correlation between target (f), template (g), and template_mask (m)

mcc_scoring(template, template_mask, ...[, ...])

Computes a normalized cross-correlation score between target (f), template (g), template_mask (m) and target_mask (t)

Adding Custom Methods#

For a method to be considered by pytme’s template matching engine, it needs to be registered via register_matching_exhaustive(). This enables developers to specify a unique name, setup function, scoring function, and a custom memory estimation class for their method. This ensures the modular and extensible design of pytme, allowing developers to continuously expand tme’s capabilities.

Adding a new template matching methods requires defining the following parameters:

  • matching: Name of the matching method.

  • matching_setup: The setup function associated with the name.

  • matching_scoring: The scoring function associated with the name.

  • memory_class: A custom memory estimation class, which inherits from MatchingMemoryUsage

register_matching_exhaustive(matching, ...)

Registers a new matching scheme.