Каково объяснение билинейного интерполяционного кода Python ниже? - PullRequest
0 голосов
/ 06 сентября 2018

Ниже приведен код Python для билинейной интерполяции. Я не могу понять, как работает этот код. Я прочитал в Википедии о билинейной интерполяции, но я не могу понять, как этот алгоритм преобразуется в приведенный ниже код:

def bilinear_interpolate_numpy(im, x, y):
    x0 = np.floor(x).astype(int)
    x1 = x0 + 1
    y0 = np.floor(y).astype(int)
    y1 = y0 + 1

    x0 = np.clip(x0, 0, im.shape[1]-1)
    x1 = np.clip(x1, 0, im.shape[1]-1)
    y0 = np.clip(y0, 0, im.shape[0]-1)
    y1 = np.clip(y1, 0, im.shape[0]-1)

    Ia = im[ y0, x0 ]
    Ib = im[ y1, x0 ]
    Ic = im[ y0, x1 ]
    Id = im[ y1, x1 ]

    wa = (x1-x) * (y1-y)
    wb = (x1-x) * (y-y0)
    wc = (x-x0) * (y1-y)
    wd = (x-x0) * (y-y0)

    return (Ia.T*wa).T + (Ib.T*wb).T + (Ic.T*wc).T + (Id.T*wd).T

Я новичок в Python, поэтому подробное объяснение предпочтительнее.

...