热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

图像缩放by双线性插值

现有300×300300\times300大小的图像I0,希望将它resize到400×400400\times400I1。那么对于目标图像I1中的每个像素点来说,应该从原始图像

现有 300×300 大小的图像I0,希望将它resize到 400×400 I1
那么对于目标图像I1中的每个像素点来说,应该从原始图像I0中能找到对应的点来进行赋值。以下公式给出了这种对应关系:
srcX=dstX×(srcWidth/dstWidth)(1) ,
srcY=dstY×(srcHeight/dstHeight)(2)
比方说:目标图像中(337,263)像素点的值的计算

  1. 寻找I0中的对应点,利用(1)(2)公式可得(252.75,197.25),可是这个点坐标是小数,在原始图像中并不存在。

  2. 于是就需要通过(252,197), (252,198), (253,197), (253,198) 来估计 (252.75,197.25)的点。

  3. 而双线性插值就是如图1所示,根据f(0,0), f(1,0), f(0,1), f(1,1)的值线性地估计目标点的值,利用以下的公式。

    不同之处就是这里四个点就是(252,197), (252,198), (253,197), (253,198)

图1

接下去解释一下这个公式

首先是利用f(0,0)和f(0,1)计算f(0,y)(线性插值),f(1,0)和f(1,1)计算f(1,y),然后利用f(0,y) 和f(1,y)计算f(x,y),所以双线性插值就是在两个方向上都用了一次线性插值。

以上介绍的是图像的放大,缩小也是同理。


推荐阅读
author-avatar
天狼飞虎神印
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有