使用SSE4指令集优化双线性插值图像缩放

原理:

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
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值