Skip to content

Accuracy

Here are some things to do if you encounter issues with the accuracy of the registration.

Determining which pairs of tiles/views are registered

Do you have a regular grid of input tiles? In that case it's recommended to use register(..., pre_registration_pruning="keep_axis_aligned") available in multiview-stitcher version>=0.18, which disregards diagonal overlaps during pairwise registration.

register(
  ...,
  pre_registration_pruning="keep_axis_aligned", # None, 'keep_axis_aligned', 'shortest_paths_overlap_weighted'
  )

Registration binning

  1. Decrease the registration binning, with {'z': 1, 'y': 1, 'x': 1} performing the registration on the highest possible resolution.

Binning

Keep in mind that typically not much is gained from binning factors lower than 2.

Choosing the right method for pairwise registration

Type of transform

Consider which transform suits your data best: 1. Translation 1. Rigid 1. Similarity 1. Affine

Available registration implementations:

  1. Phase correlation (translation)
  2. AntsP (translation, rigid, similarity, affine)
  3. ITK-elastix (translation, rigid, similarity, affine) (WIP)
  4. Custom registration functions (up to affine)

Change the parameters used during global parameter resolution

Type of transform

Following pairwise registration, determining the global transformation parameters can also be done assuming different types of transforms: 1. Translation 1. Rigid 1. Similarity 1. Affine

Example:

registration.register(
  ...
  groupwise_resolution_kwargs={
      'transform': 'translation', # 'rigid', 'similarity', 'affine'
  }
)

Alternative: simple global parameter resolution

registration.register(
  ...
  groupwise_resolution_method='shortest_paths',
  groupwise_resolution_kwargs={
      # no options available
  }
)