interpolation.py 文件源码

python
阅读 30 收藏 0 点赞 0 评论 0

项目:mrflow 作者: jswulff 项目源码 文件源码
def interp_spline(I, xn, yn, compute_derivs=True):
    """ Perform spline interpolation of I.

    I is evaluated at xn, yn.

    Returns
    -------
    I_warped : array_like
        Warped image
    dI_warped_dx : array_like
        Derivative of warped image in x direction
    dI_warped_dy : array_like
        Derivative of warped image in y direction
    """

    h,w = I.shape[:2]
    xar = np.arange(w)
    yar = np.arange(h)

    if I.ndim > 2:
        I_warped = np.zeros_like(I)
        dI_warped_dx = np.zeros_like(I)
        dI_warped_dy = np.zeros_like(I)

        for d in range(I.shape[2]):
            result = interp_spline(I[:,:,d], xn, yn, compute_derivs=compute_derivs)
            if compute_derivs:
                I_warped[:,:,d] = result[0]
                dI_warped_dx[:,:,d] = result[1]
                dI_warped_dy[:,:,d] = result[2]
            else:
                I_warped[:,:,d] = result
    else:
        S = interpolate.RectBivariateSpline(yar,xar,I,kx=2,ky=2)
        I_warped = np.clip(S.ev(yn,xn),0,1.0)
        #I_warped = S.ev(yn,xn)
        if compute_derivs:
            dI_warped_dx = S.ev(yn,xn,dy=1) # Note that y and x are swapped!
            dI_warped_dy = S.ev(yn,xn,dx=1)

    if compute_derivs:
        return I_warped, dI_warped_dx, dI_warped_dy
    else:
        return I_warped
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号