最临近插值和双线性内插值算法实现比较

162 篇文章 111 订阅 ¥9.90 ¥99.00

图像缩放

顾名思义,就是把原图像按照目标尺寸放大或者缩小,是图像处理的一种。自然,图像缩放的核心也就是怎么样根据已知图像计算目标图像的各点像素值。最简单的是最临近插值算法,这种算法就是根据原图像和目标图像的尺寸,计算缩放的比例,然后根据缩放比例计算目标像素所依据的原像素,过程中自然会产生小数,这时就采用四舍五入,取与这个点最相近的点。另一种算法是双线性内插值算法,这种算法的目标像素值不再简单地由一个像素决定,而是由他的四临域乘以相应的权重决定。具体公式为:
                  f(i+u,j+v) =(1-u)(1-v)f(i,j) + (1-u)vf(i,j+1) + u(1-v)f(i+1,j) + uvf(i+1,j+1)
其中U和V是浮点坐标的小数部分,显然离目标点距离越近的点的权重越大,这也正符合目标点的值与离他最近的点最接近这一事实。关于这两种算法的详细说明,网上很多,这里就不多说了。下面是实现程序,这里除了两个算法之外,还涉及到位图的读写操作。具体看注释吧,需要注意的是位图中有涉及到调色板,这里为了简便,原图像最好是不带有调色板的24位位图。

算法代码

enum StretchMode
{
    nearest,  //最临近插值算法
    bilinear  //双线性内插值算法
 };

void Stretch(const string& srcFile,const string& desFile,int desW,int desH,StretchMode mode)
{
    BITMAPFILE
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值