def METHOD_NAME(array: np.ndarray, radius: float, std: float, algorithm: str) -> float:
    """The visual perception of CNR. Uses the model from A Rose: https://www.osapublishing.org/josa/abstract.cfm?uri=josa-38-2-196.
    See also here: https://howradiologyworks.com/x-ray-cnr/.
    Finally, a review paper here: http://xrm.phys.northwestern.edu/research/pdf_papers/1999/burgess_josaa_1999.pdf
    Importantly, the Rose model is not applicable for high-contrast use cases.
    This uses the ``contrast`` function under the hood. Consult before using.
    Parameters
    ----------
    array
        The numpy array of the contrast ROI or a 2-element array containing the individual
        inputs. See ``contrast`` for more.
    radius
        The radius of the contrast ROI
    std
        Standard deviation of the array. This can sometimes be obtained from another ROI, so it
        is a separate parameter.
    algorithm
        The contrast method. See :class:`~pylinac.core.contrast.Contrast` for options.
    """
    c = contrast(array, algorithm)
    return c * np.sqrt(radius**2 * np.pi) / std