原理:
p = p(0) *(1-t) + p(1) * t = p(0) + (p(1) - p(0)) * t
水平方向和垂直方向均进行线性插值,缩放系数分别计算,由于水平和垂直成正交关系,因而与计算的先后次序无关。
缩放比例系数:
double scale_x = (des_width - 1)/(src_width - 1);
double scale_y = (des_height - 1)/(src_height - 1);
由于对图像进行采样时,索引从0开始,因而在计算缩放系数时应将宽高分别减1,以保证源和目的的最后一个采样点对齐。
计算权重和索引:
unsinged short* power;
unsinged short* map;
计算索引时,将浮点数进行截断取整,并保存为短整型。
计算权重时,将小数部分乘以16384并取整,即放大14位,这里采用整数计算而不是浮点计算。
缩放:
这里假设操作4通道32位颜色,如RGBA,其它颜色类似
以下代码为水平和垂直两个方向均进行缩放
void bl_hor_ver_out(int* des,
int* src,
int src_pitch,
unsigned short* power_x,
unsigned short* map_x,
unsigned short powe