Register the images assuming they are channels

    Parameters:
    -----------
    im0: 2d array
        The first image
    im1: 2d array
        The second image
    scale: number, optional
        The scale difference if known
    ch0angle: number, optional
        The angle of the channel in the first image if known
    chanapproxangle: number, optional
        The approximate angle for both images if known

    Returns:
    --------
    angle: number
        The angle difference
    scale: number
        The scale difference
    [y, x]: 2 numbers
        The offset
    e2: 2d array
        The second image rotated and translated for performances reasons

def register_channel(im0, im1, scale=None, ch0angle=None,
                     chanapproxangle=None):
    """Register the images assuming they are channels

    Parameters:
    -----------
    im0: 2d array
        The first image
    im1: 2d array
        The second image
    scale: number, optional
        The scale difference if known
    ch0angle: number, optional
        The angle of the channel in the first image if known
    chanapproxangle: number, optional
        The approximate angle for both images if known

    Returns:
    --------
    angle: number
        The angle difference
    scale: number
        The scale difference
    [y, x]: 2 numbers
        The offset
    e2: 2d array
        The second image rotated and translated for performances reasons

    """
    im0 = np.asarray(im0)
    im1 = np.asarray(im1)
    # extract the channels edges
    e0 = edge(im0)
    e1 = edge(im1)
    fe0, fe1 = reg.dft_optsize_same(np.float32(e0), np.float32(e1))

    # compute the angle and channel width of biggest angular feature
    w0, a0 = channel_width(
        fe0, isccsedge=True, chanapproxangle=chanapproxangle)
    w1, a1 = channel_width(
        fe1, isccsedge=True, chanapproxangle=chanapproxangle)

    # get angle diff
    angle = reg.clamp_angle(a0 - a1)
    if ch0angle is not None:
        a0 = ch0angle
        a1 = a0 - angle

    # if the scale is unknown, ratio of the channels
    if scale is None:
        scale = w1 / w0
    #scale and rotate
    e2 = reg.rotate_scale(e1, angle, scale)
    # get edge from scaled and rotated im1
    fe2 = reg.dft_optsize(np.float32(e2), shape=fe0.shape)
    # find offset
    y, x = reg.find_shift_dft(fe0, fe2, isccs=True)
    # return all infos
    return angle, scale, [y, x], e2