def gen_fov_chan_names(num_fovs, num_chans, return_imgs=False, use_delimiter=False):
    """Generate fov and channel names

    Names have the format 'fov0', 'fov1', ..., 'fovN' for fovs and 'chan0', 'chan1', ...,
    'chanM' for channels.

    Args:
        num_fovs (int):
            Number of fov names to create
        num_chans (int):
            Number of channel names to create
        return_imgs (bool):
            Return 'chanK.tiff' as well if True.  Default is False
        use_delimiter (bool):
            Appends '_otherinfo' to the first fov. Useful for testing fov id extraction from
            filenames.  Default is False

    Returns:
        tuple (list, list) or (list, list, list):
            If return_imgs is False, only fov and channel names are returned
            If return_imgs is True, image names will also be returned
    """
    fovs = [f'fov{i}' for i in range(num_fovs)]
    if use_delimiter:
        fovs[0] = f'{fovs[0]}_otherinfo'
    chans = [f'chan{i}' for i in range(num_chans)]

    if return_imgs:
        imgs = [f'{chan}.tiff' for chan in chans]
        return fovs, chans, imgs
    else:
        return fovs, chans