def _bss_decomp_mtifilt(reference_sources, estimated_source, j, C, Cj):
    """Decomposition of an estimated source image into four components
    representing respectively the true source image, spatial (or filtering)
    distortion, interference and artifacts, derived from the true source
    images using multichannel time-invariant filters."""
    filters_len = Cj.shape[-2]

    # zero pad
    s_true = _zeropad(reference_sources[j], filters_len - 1, axis=0)

    # compute appropriate projections
    e_spat = _project(reference_sources[j], Cj) - s_true
    e_interf = _project(reference_sources, C) - s_true - e_spat
    e_artif = - s_true - e_spat - e_interf
    e_artif[:estimated_source.shape[0], :] += estimated_source

    return (s_true, e_spat, e_interf, e_artif)
Decomposition of an estimated source image into four components
    representing respectively the true source image, spatial (or filtering)
    distortion, interference and artifacts, derived from the true source
    images using multichannel time-invariant filters.