Fusion
Custom functions can be passed to the fusion.fuse function. multiview-stitcher provides the custom fusion and weights functions with pre-transformed chunks corresponding to the transform_key passed to fusion.fuse. Only those views will be passed which contribute to the given output chunks. The elements of the input lists correspond to the different input views / tiles and conserve the order of the input views / tiles passed to fusion.fuse.
def fuse(
    ...
    transform_key: str = None,
    fusion_func: Callable = weighted_average_fusion,
    fusion_func_kwargs: dict = None,
    weights_func: Callable = None, # by default no additional fusion weights are used
    weights_func_kwargs: dict = None,
    ...
Custom fusion methods
Custom function for fusion of pre-transformed view chunks. This could implement e.g. a maximum intensity projection, a weighted average, or a multi-view deconvolution.
def custom_fusion_function(
    transformed_views: List[Array-like], # list of pre-transformed view chunks
    blending_weights: List[Array-like], # optional functional argument
    fusion_weights: List[Array-like], # optional functional argument
    **kwargs, # `fusion_func_kwargs` passed to `fusion.fuse`
) -> Array-like:
    # Fusion code here
    return fused_array
If the optional funtion arguments are not part of the function signature, the arguments will be ignored.
Example implementation: multiview_stitcher.fusion.weighted_average_fusion.
Custom weight functions
Custom function for calculating additional fusion weights passed to the fusion function as fusion_weights. This could implement e.g. a content-based weighting scheme. The function should return a list of weights, one for each view chunk.
def custom_weight_function(
    transformed_views : List[Array-like],
    blending_weights : List[Array-like],
    **kwargs, # `weights_func_kwargs` passed to `fusion.fuse`
) - > List[Array-like]:
    # Weight calculation code here
    return weights
Example implementation: multiview_stitcher.weights.content_based.