UnityShader开发之纹理 - Unity中的图像插值 Point、Bilinear、Trilinear

        图像插值就是当图像进行放大/缩小时,图像原有的像素数量不足以满足需求,例如从3X3的像素矩阵往4X4的像素矩阵变换的时候,就会出现像素值不知该如何填充的问题,而图像插值算法就是为了解决这个问题

       

上图就是Unity中选择贴图时出现的属性面板,箭头标识的位置就是可供选择的插值算法;

    

将最大尺寸调小,然后有插值与没有插值的情况十分明显,左侧有明显的颗粒感,而右侧则没有,感觉十分平滑。

        Unity支持的插值有Point、Bilinear和Trilinear,分别是最邻近插值法、双线性插值以及双三线性插值。而常见的插值方式主要有三种,最邻近插值法、双线性插值以及三线性插值。

        当图像由分辨率X*Y放大M,宽放大N倍后变为(X\cdot M)*(Y\cdot N)(X\cdot M)*(Y\cdot N)

例如:由3X3的矩阵变为9X9的矩阵

1 5 9
13 17 21
25 29 33
1       5       9
                 
                 
                 
13       17       21
                 
                 
                 
25       29       33

        (1)最邻近插值法(Nearest、Point)

        X_{origin}=Func_{floor}\left (X_{current}\ast \frac{X_{forward}}{X_{after}} \right )=Func_{floor}\left (\frac{X_{current}}{M} \right )

        X_{current}经处理后图的的x坐标值

       X_{origin}原始图片上经处理后图的x坐标映射值

       Func_{floor}为向下取整的函数

       宽Y同理

       则   C_{(X_{Current} , Y_{Current})}=O_{(X_{Origin} , Y_{Origin})}

运算结果:很明显,如果使用这种插值方法,放大的图会出现一块一块的像素块,即出现锯齿

1 1 1 5 5 5 9 9 9
1 1 1 5 5 5 9 9 9
1 1 1 5 5 5 9 9 9
13 13 13 17 17 17 21 21 21
13 13 13 17 17 17 21 21 21
13 13 13 17 17 17 21 21 21
25 25 25 29 29 29 33 33 33
25 25 25 29 29 29 33 33 33
25 25 25 29 29 29 33 33 33

        (2)双线性插值(Bilinear)

       

        双线性插值就是根据x、y轴两个方向来进行插值,如图所示,先根据O_{1}O_{2}求得I_{1},O_{3}O_{4}求得I_{2},再根据I_{1}I_{2}的值求出R的值。基本原理依然是根据距离来做颜色的插值。

先求x轴方向的插值:

        C_{I_{1}}=\frac{x-x_{1}}{x_{2}-x_{1}}\cdot (C_{O_{2}}-C_{O_{1}})+C_{O_{1}}

同理

        C_{I_{2}}=\frac{x-x_{1}}{x_{2}-x_{1}}\cdot (C_{O_{4}}-C_{O_{3}})+C_{O_{3}}

x轴方向的插值做完后,我们根据求得的颜色值再求y方向的插值:

        C_{R}=\frac{y-y_{1}}{y_{2}-y_{1}}\cdot (C_{I_{2}}-C_{I_{1}})+C_{I_{1}}

最后求得

1 2 3 4 5 6 7 8 9
4 5 6 7 8 9 10 11 12
7 8 9 10 11 12 13 14 15
10 11 12 13 14 15 16 17 18
13 14 15 16 17 18 19 20 21
16 17 18 19 20 21 22 23 24
19 20 21 22 23 24 25 26 27
22 23 24 25 26 27 28 29 30
25 26 27 28 29 30 31 32 33

        (3)三线性插值(Trilinear)

        核心是通过所需要计算的像素周围的16个像素根据对应的权重值来求得最后的像素值(学习中)

       

猜你喜欢

转载自blog.csdn.net/qq_28474981/article/details/84502557