CSI-DSP  Version 1.0.0
CSI DSP Software Library
函数
双线性插值

函数

float32_t csky_bilinear_interp_f32 (const csky_bilinear_interp_instance_f32 *S, float32_t X, float32_t Y)
 浮点双线性插值 更多...
 
q15_t csky_bilinear_interp_q15 (csky_bilinear_interp_instance_q15 *S, q31_t X, q31_t Y)
 Q15 双线性插值 更多...
 
q31_t csky_bilinear_interp_q31 (csky_bilinear_interp_instance_q31 *S, q31_t X, q31_t Y)
 Q31 双线性插值 更多...
 
q7_t csky_bilinear_interp_q7 (csky_bilinear_interp_instance_q7 *S, q31_t X, q31_t Y)
 Q7 双线性插值 更多...
 

简要说明

双线性插值是线性插值在二维网格上的扩展。 底层函数 f(x, y) 获取一个规则网格,然后插值处理决定值落在网格中的哪个点。 双线性插值等价于两次线性插值,首先是x轴,然后是y轴。 双线性插值常用在图像处理的缩放图像上。 CSI DSP库提供Q7,Q15,Q31和浮点数据类型的双线性插值。

算法

双线性插值函数使用的结构体实例描述了一个二维数据表。 对于浮点来说,结构体实例定义如下:
  typedef struct
  {
    uint16_t numRows;
    uint16_t numCols;
    float32_t *pData;
} csky_bilinear_interp_instance_f32;
其中 numRows 指定表的行数, numCols 指定表的列数, pData 指向一个大小为 numRows*numCols 数组. 数据表 pTable 按行排列,按整数值索引。 就是说,表元素 (x,y) 落在 pTable[x + y*numCols] ,其中 x 和 y 是整数.
(x, y) 指定要插值的点,则定义:
    XF = floor(x)
    YF = floor(y)
插值的输出点计算如下:
 f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))
          + f(XF+1, YF) * (x-XF)*(1-(y-YF))
          + f(XF, YF+1) * (1-(x-XF))*(y-YF)
          + f(XF+1, YF+1) * (x-XF)*(y-YF)
注意,坐标 (x, y) 包括整数和小数部分。 整数部分指定使用表哪部分,小数控制插值处理
如果 (x,y) 超出了表的边界,双线性插值结果返回0。

函数说明

float32_t csky_bilinear_interp_f32 ( const csky_bilinear_interp_instance_f32 S,
float32_t  X,
float32_t  Y 
)
参数
[in,out]S指向插值结构体实例
[in]X插值坐标
[in]Y插值坐标
返回
插值结果
q15_t csky_bilinear_interp_q15 ( csky_bilinear_interp_instance_q15 S,
q31_t  X,
q31_t  Y 
)
参数
[in,out]S指向插值结构体实例
[in]X12.20格式插值坐标
[in]Y12.20格式插值坐标
返回
插值结果
q31_t csky_bilinear_interp_q31 ( csky_bilinear_interp_instance_q31 S,
q31_t  X,
q31_t  Y 
)
参数
[in,out]S指向插值结构体实例
[in]X12.20格式插值坐标.
[in]Y12.20格式插值坐标
返回
插值结果
q7_t csky_bilinear_interp_q7 ( csky_bilinear_interp_instance_q7 S,
q31_t  X,
q31_t  Y 
)
参数
[in,out]S指向插值结构体实例
[in]X12.20格式插值坐标
[in]Y12.20格式插值坐标
返回
插值结果