【杂记】过滤模式中的Bilinear、Trilinear以及Anistropic Filtering 以及比较

 

设置纹理采样模式主要是通过SetSamplerState函数来实现,这个函数有三个参数,第一个参数代表着定点中的不同采样单元,(顶点着色器中的对多个纹理单元的使用,一般demo只用一个纹理,所以这个参数一般默认为0);

第二个参数是D3DSAMPLERSTATETYPE枚举值中的一个,一般用到的有三个枚举值

D3DSAMP_MAGFILTER      = 5,

D3DSAMP_MINFILTER      = 6,

D3DSAMP_MIPFILTER      = 7,

分别是放大,缩小,多级过滤纹理采样。

 

第二个纹理过滤是用来给第三个做铺垫的。因为多级纹理过滤就是按照原来纹理的尺寸,不断生成比原来小的尺寸纹理,如何生成呢,就看给D3DSAMP_MINFILTER    设置成什么值了。

标缩小放大和多级纹理均采用最近点采样D3DTEXF_POINT,可以明显看到毛刺
缩小放大采用线性过滤,多级纹理也采用线性过滤,这样就是三线性过滤

为了和各向异性过滤对比,我把三角形的倾斜角度加大了一点

注意,多级纹理过滤中没有定义各向异性过滤,所以只能在放大和缩小过滤中

设置了各向异性过滤,好像没有很明显的变化,可能是角度还不够。。。

 

 

左边:各向异性过滤 (增大角度之后)  右边 三线性过滤  (好像看不出来什么效果。。。)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

### 双线性滤波的概念 双线性滤波是一种用于图像处理和计算机图形学中的插值方法,主要用于纹理映射和其他需要平滑过渡的应用场景。该技术通过计算四个最近邻像素的颜色加权平均来估计新位置上的颜色值[^1]。 具体来说,在二维空间中给定目标点P(x,y),其周围存在四个已知像素A、B、C、D,则可以通过如下公式得到新的像素值: \[ P_{new} = w_1 \times A + w_2 \times B + w_3 \times C + w_4 \times D \] 其中权重 \(w_i\) 是基于距离的比例因子,确保越靠近的目标点影响越大[^2]。 ### 应用实例 #### 图像缩放 当缩小图片尺寸时,原始分辨率下的某些细节可能会丢失;而放大过程中则会出现锯齿效应。采用双线性滤波可以有效减少这些问题的发生,使得变换后的图像更加自然流畅。 ```python import numpy as np from scipy import ndimage def bilinear_interpolation(image, scale_factor): height, width = image.shape[:2] new_height = int(height * scale_factor) new_width = int(width * scale_factor) resized_image = np.zeros((new_height, new_width), dtype=image.dtype) for i in range(new_height): for j in range(new_width): src_x = float(j) / scale_factor src_y = float(i) / scale_factor x0 = max(int(np.floor(src_x)), 0) y0 = max(int(np.floor(src_y)), 0) dx = src_x - x0 dy = src_y - y0 weight_tl = (1-dx)*(1-dy) weight_tr = dx*(1-dy) weight_bl = (1-dx)*dy weight_br = dx*dy p00 = image[y0 % height][x0 % width] p01 = image[(y0+1) % height][(x0) % width] p10 = image[y0 % height][(x0+1) % width] p11 = image[(y0+1) % height][(x0+1) % width] interpolated_value = ( weight_tl*p00 + weight_tr*p01 + weight_bl*p10 + weight_br*p11 ) resized_image[i,j] = min(max(interpolated_value, 0), 255) return resized_image ``` 此代码实现了基本的双线性插值算法,可用于调整灰度图大小并保持较好的视觉效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值