原创文章,欢迎转载。转载请注明:转载自 祥的博客

原文链接:http://blog.csdn.net/humanking7/article/details/45014879


简介:
图像缩放算法–双线性内插法,以及详解Matlab二维插值算法的 interp2()

1.原理介绍

双线性内插法是利用待求象素四个邻象素的灰度 (RGB可以分别进行插值) 在两个方向上作线性内插,公式推导如下 (原谅我没用visio和MathType,还是用手简单粗暴)

2.代码实现

原来做这个只是为了验证一下 Matlabinterp2() 函数,但是发现了一些问题,原来以为是 Matlab 错了,最后发现是我太年轻了,不过也怪文档不清晰 (感觉吐槽好无力啊)

众所周知,Matlab的取值是先行后列,但这个函数的用的坐标系是图像坐标系,如上图所示,所以函数 interp2(src, x, y) 中的 xy 不是 矩阵src 的行和列,而且 x和y 既可以单一的 位置值,也可以是 位置值的矩阵,其实很简单的映射关系,但是就是特别绕 (我承认我智商有点着急) 。代码附上 (Matlab实现)

2.1.插值函数代码:

    function zi = qfxInterp2(src, x, y)% if src is a matrices , number x expresses the position in the column direction and the number y expresses the position in the row direction.% O ---------------------> x(u,i)% |% |% |  点src(x, y) 在Matlab里面表示为 src(y, x)% |% |% |% y(v,j)% x与y应该有着相同的大小。最终形成的zi也是和x, y的size相同。% 如果用这个函数进行图像的变换, 则src是图像, x和y还有zi应该和src的size一样大, 关系为:% 点zi(u, v)是原图像中的点src( x(u, v), y(u, v) ), 但实际上这个点是通过插值得到的。x, y, src, zi都是u*v大小的矩阵, 只是src和zi存的是像素值, x和y存的是zi对应像素的插值坐标。% src(i, j)=a ----------------src(i+1, j)=b% |                      |% |                      dv% |                      |% |                    src(i+du,j+dv)% |<--------- du --------->% src(i, j+1)=c---------------src(i+1, j+1)=d%Matlab的取值顺序和上述的坐标系不同, 注意切记[row,col] = size(x);[imax,jmax] = size(src);%不能超过插值表的界限for v = 1:rowfor u = 1:coli = floor(x(v,u));j = floor(y(v,u));du = x(v,u) - i;dv = y(v,u) - j;a = getValue(src, j, i, jmax, imax);b = getValue(src, j, i+1, jmax, imax);c = getValue(src, j+1,i, jmax, imax);d = getValue(src, j+1,i+1, jmax, imax);zi(v,u) = (1-du)*(1-dv)*a + (1-dv)*du*b + (1-du)*dv*c + du*dv*d;endendendfunction value = getValue(mat,r,c,rMax,cMax)if((r>rMax)||(r<=0)||(c>cMax)||(c<=0))value = 0;elsevalue = mat(r,c);endend

2.2.结果对比:

调用函数以及与 Matlabinterp2() 对比:

    clearclcsource = [ 1, 2;3, 4];%想要插值的目标位置xLocal = [1.2,1.2 ;1.8,1.7];yLocal = [1.2,1.8;1.2,1.8];I = interp2(source, xLocal, yLocal )I2 = qfxInterp2(source,xLocal,yLocal)

Matlab输出效果:

I =1.6000    2.80002.2000    3.3000I2 =1.6000    2.80002.2000    3.3000

[图像]图像缩放算法-双线性内插法相关推荐

  1. 关于图像快速缩放算法,目前看到的最好的最清晰的一篇文章

    昨天开始写一个录制屏幕和声音存储为视频文件的程序,差不多完成了. 屏幕录制使用方法:抓屏(方法很多,BitBlt.DirectX.MirrorDriver等),缩放,X264压缩(开源的,自己封装) ...

  2. MATLAB实现数图的缩放:双线性内插法

    实验内容: 用双线性内插法实现位深度为8的灰度图像的缩放. 思路: 输入原图像以及缩放后图像的像素要求(宽度*高度),处理后输出新图像. 我是用matlab来实现scale(input_img,sca ...

  3. 双线性内插法--图像缩放算法

    目录 一.问题描述 二.算法原理 双线性内插法 双线性内插法参数计算 三.算法效果 四.算法代码 一.问题描述 我们在处理图像的时候常常会遇到图像放大的问题,那么选择什么样的图像放大算法,能有什么样的 ...

  4. 图像缩放--双线性内插法及其python实现(图文代码)

    双线性内插法 #数字图像处理 我将最近学数字图像处理,写的一些代码放到了github 中保存,有机会一起学习.有错误和需要补充的地方欢迎评论. 理论简介 双线性插值是图像内插缩放的一种方法. 简单来说 ...

  5. 图像去畸变矫正及双线性内插法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 通过采集的图像我们可以得到畸变后的图像,要得到没有畸变的图像要通过畸变模型推导其映射关系. 真实图像 ...

  6. 超实用!图像去畸变矫正及双线性内插法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 通过采集的图像我们可以得到畸变后的图像,要得到没有畸变的图像要通过畸变模型推导其映射关系. 真实图像 ...

  7. 数字图像处理学习笔记(七)——用Pycharm及MATLAB实现三种图像内插法(最近邻内插法、双线性内插法、双三次内插法)

    数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声.增强.复原.分割.提取特征等处理的方法和技术.本专栏将以学习笔记形式对数字图像处理的重点基础知识进行总结 ...

  8. 三种图像内插法(最近邻内插法、双线性内插法、双三次内插法)的做法 代码实现

    参考博客 数字图像处理学习笔记(四)--数字图像的内插.度量.表示与质量_闭关修炼--暂退的博客-CSDN博客 数字图像处理学习笔记(七)--用Pycharm及MATLAB实现三种图像内插法(最近邻内 ...

  9. 几个图像缩放算法的比较

    几个图像缩放算法的比较 前段时间由于项目的需求,需要实现图像的缩放功能,期间查找了不少关于图像缩放算法的资料,现把自己的心得整理一下. 由于研究生期间没有选修过图像处理方面的课程,所以对图像缩放的原理 ...

最新文章

  1. Go Reflect
  2. Linux基础之网络配置
  3. python 自定义函数和循环_Python循环语句——对for循环和while循环应用自定义函数公式的实践,套用,练习...
  4. Linux+Apache2.4+PHP5.6+MySQL5.6源码安装步骤
  5. nginx的函数调用
  6. c#学习体会:使用 ref 和 out 传递数组
  7. try to navigate from button to line item page
  8. python编写统计选票的程序_使用python编写微信公众号发稿统计程序
  9. 2019年大数据发展趋势预测
  10. Altium Designer之PCB
  11. ps中如何同图层获取css代码
  12. 如何玩转sortablejs-vuedraggable实现表单嵌套拖拽功能
  13. LuaForUnity5:Lua的字符串
  14. Windows和Linux 服务器的访问方式
  15. 用友ERP-NC系统 漏洞 NCFindWeb接口任意文件下载
  16. 如何使用python游戏开发模块—pygame?
  17. 最新Erphpdown v13.11modown8.02主题破jie版去授权无域名限制版本
  18. FPGA设计中提高工作频率及降低功耗题目合集
  19. gRPC如何在Golang和PHP中进行实战?7步教你上手!
  20. 基于Cesium搭建单体化平台全流程简单记录

热门文章

  1. 数学建模:MATLAB(入门学习+我的第一课)
  2. Android 数据共享机制!
  3. Jhipster配置redis密码
  4. mysql中计算时间差
  5. 关于Nginx的深入浅出
  6. 安卓开发之数据库——SQLite的详细介绍,详细到连Alt+回车都有说
  7. Firefly RK3399开源板的双目摄像头数据采集方案
  8. 低代码时代:快速开发成为主流,全民开发不是梦
  9. 关于 Implicit Representations
  10. SQL 模糊查询条件的四种匹配模式