首页 > 解决方案 > 双线性插值负颜色值

问题描述

我写了一个应用双线性插值的代码。我在插值后打印我的颜色值,但是有一个负颜色值、浮点值和大于 255。我该如何解决这个问题,请帮帮我?

(我使用 24 位 rgb 图像)

打印的部分颜色值:

[14 12 15]
[14 12 15]
[14 12 15]
[14 12 15]
[4010.54455662 4008.54455662 4011.54455662]
[3022.8009096 3020.8009096 3023.8009096]
[2035.05726258 2033.05726258 2036.05726258]
[1047.31361557 1045.31361557 1048.31361557]
[59.56996855 57.56996855 60.56996855]
[ 487.08683923   14.         -925.17367847]
[  980.95866274    14.         -1912.91732549]
[ 1474.83048625    14.         -2900.6609725 ]
[ 1968.70230976    14.         -3888.40461952]

for i in range(w * h):

    inp = np.dot(params_inverse, out) #Each output pixel multiplying transform params.
    k, j = inp[1][0], inp[2][0]

    if k < 0:
        k = 0

    if j < 0:
        j = 0

    if j >= h-1:
        j = h-1

    if k >= w-1:
        k = w-1

    neighbor = [m.floor(j), m.ceil(j), m.floor(k), m.ceil(k)]

    c1 = np.array(pixsel[neighbor[2], neighbor[0]])
    c2 = np.array(pixsel[neighbor[2], neighbor[1]]) - np.array(pixsel[neighbor[2], neighbor[0]])
    c3 = np.array(pixsel[neighbor[3], neighbor[0]]) - np.array(pixsel[neighbor[2], neighbor[0]])
    c4 = np.array(pixsel[neighbor[2], neighbor[0]]) - np.array(pixsel[neighbor[2], neighbor[1]]) - np.array(pixsel[neighbor[3], neighbor[0]]) + np.array(pixsel[neighbor[3], neighbor[1]])

    new_int = c1 + c2 * k * (1-j) + c3 * j * (1-k) + c4 * (k*j)

    print(new_int)

标签: pythonimageimage-processinginterpolationimage-resizing

解决方案


推荐阅读