双线性插值

数学工具常见问题集FAQ (Frequently Asked Questions)

坚强是说给别人听的谎言 提交于 2020-03-21 18:45:19
数学工具常见问题集FAQ (Frequently Asked Questions) 文档名称: 数学工具常见问题集 修订时间:2002年6月23日星期日 语 言:简体中文 版本编号: $Id: MathTools.FAQ.CN 1.0beta 2002/6/23 15:59:16 QianqianFang$ 更新周期:每月更新 本文档由FangQ(Qianqian.Fang@Dartmouth.Edu)维护 最新版本发表在BigGreen BBS数学工具版 匿名访问地址为:http://bbs.dartmouth.edu/cgi-bin/bbsdoc?board=MathTools 注册用户Telnet登录地址:telnet bbs.dartmouth.edu 注册用户Telnet登录地址:http://bbs.dartmouth.edu/bbs/ 及水木清华站MathTools版 访问地址为:http http://www.smth.edu.cn/ 注册用户Telnet登录地址:telnet bbs.smth.org 最后更新: 2002/6/23 15:59:16 其他参与修订本文档的人员名单: popo1999(email), hyphone(email), energy(email), mikie(email) 声明: 本文档的原则是:欢迎转载到其他BBS或者学术讨论网站

双线性插值(Bilinear Interpolation)

浪尽此生 提交于 2020-03-15 11:10:14
最近用到插值算法,使用 三次样条插值 时 仿真速度太慢,于是采用算法简单的线性插值。本篇主要介绍一下双线性插值的实现方法。 1. 线性插值 已知坐标 ( x 0 , y 0 ) 与 ( x 1 , y 1 ),要得到 [ x 0 , x 1 ] 区间内某一位置 x 在直线上的值。 由于 x 值已知,所以可以从公式得到 y 的值 已知 y 求 x 的过程与以上过程相同,只是 x 与 y 要进行交换。 2. 双线性插值(Bilinear Interpolation) 在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。 图中:红色的数据点与待插值得到的绿色点 假如我们想得到未知函数 f 在点 P = ( x , y ) 的值,假设我们已知函数 f 在 Q 11 = ( x 1 , y 1 )、 Q 12 = ( x 1 , y 2 ), Q 21 = ( x 2 , y 1 ) 以及 Q 22 = ( x 2 , y 2 ) 四个点的值。 首先在 x 方向进行线性插值,得到 然后在 y 方向进行线性插值,得到 这样就得到所要的结果 f ( x , y ), 双线性插值在三维空间的延伸是三线性插值。 来源: https://www.cnblogs.com/xpvincent/archive/2013/03/15/2961448.html

双线性插值的理解

泄露秘密 提交于 2020-03-08 19:37:36
目的:在缩放算法中,完成目标图像的插值,本质是对图像信息的补充。 方法:将目标图像的坐标,通过缩放比映射到原图,然后根据邻近四点的像素值,依据线性权值完成最终的插值。 参考链接: https://blog.csdn.net/qq_37577735/article/details/80041586 来源: CSDN 作者: weixin_38410551 链接: https://blog.csdn.net/weixin_38410551/article/details/104736488

matlab 图像缩放 —— 最近邻插值 和 双线性插值

夙愿已清 提交于 2020-03-07 10:22:06
目录 一、插值与图像缩放 二、最近邻插值 1、原理 2、代码实现 三、双线性插值 1、原理 2、代码实现 一、插值与图像缩放   首先举个例子说明插值过程,先看看matlab的插值函数 interp() 吧: x = - 2 : 1 : 2 ; y = - 2 : 1 : 2 ; [ X , Y ] = meshgrid ( x , y ) ; Z = - X . ^ 2 - Y . ^ 2 ; p = - 2 : 0.33 : 2 ; q = - 2 : 0.33 : 2 ; [ P , Q ] = meshgrid ( p , q ) ; V1 = interp2 ( X , Y , Z , P , Q , 'nearest' ) ; % 最邻近插值 V2 = interp2 ( X , Y , Z , P , Q , 'linear' ) ; % 双线性插值 V3 = interp2 ( X , Y , Z , P , Q , 'spline' ) ; % 球面插值 figure subplot ( 221 ) surf ( X , Y , Z ) ; colormap ( 'autumn' ) title ( 'z = x^2 + y^2' ) subplot ( 222 ) surf ( P , Q , V1 ) ; colormap ( 'autumn' ) title

双线性插值算法进行图像缩放及性能效果优化

二次信任 提交于 2020-03-07 07:06:57
一)转自http://handspeaker.iteye.com/blog/1545126 最近在编程时用到了双线性插值算法,对图像进行缩放。网上有很多这方面的资料,介绍的也算明白。但是,这些文章只介绍了算法,并没有具体说怎么实现以及怎么实现最好,举个例子,你可以按照网上文章的算法自己写一个双线性插值程序,用它对一张图片进行处理,然后再用matlab或者openCV的resize函数对同一张图片进行处理,得到的结果是不一样的,如果源图片较小,效果差距就更大。以下是对于双线性插值的讲解以及上述现象的解释: 1.双线性插值 假设源图像大小为mxn,目标图像为axb。那么两幅图像的边长比分别为:m/a和n/b。注意,通常这个比例不是整数,编程存储的时候要用浮点型。目标图像的第(i,j)个像素点(i行j列)可以通过边长比对应回源图像。其对应坐标为(i*m/a,j*n/b)。 显然,这个对应坐标一般来说不是整数,而非整数的坐标是无法在图像这种离散数据上使用的。双线性插值通过寻找距离这个对应坐标最近的四个像素点,来计算该点的值(灰度值或者RGB值)。如果你的对应坐标是(2.5,4.5),那么最近的四个像素是(2,4)、(2,5)、(3,4),(3,5)。 若图像为灰度图像,那么(i,j)点的灰度值可以通过一下公式计算: f(i,j)=w1*p1+w2*p2+w3*p3+w4*p4; 其中,pi

4.1 图像采样

南笙酒味 提交于 2020-03-06 11:45:14
4.1.1 最近邻插值 最简单图像缩放方法,原理:提取源数据图像中与其邻域最近像素值来作为目标图像相对应点的像素值。 目标各像素点的灰度值-->源图像中与其最邻近像素的灰度值。 OpenCV中提供3个将浮点型数转换成整数的函数:cvRound/cvFloor/cvCeil 1 ////////https://blog.csdn.net/linqianbi/article/details/78593724 2 ////////https://blog.csdn.net/qq_22424571/article/details/80918549 3 #include<opencv2\core\core.hpp> 4 #include<opencv2\highgui\highgui.hpp> 5 #include<opencv2\imgproc\imgproc.hpp> 6 #include<iostream> 7 using namespace cv; 8 //最近邻插值 9 //基于等间隔提取图像的缩放 10 Mat imageReduction1(Mat &srcImage, float kx, float ky)//原始图形以及缩放比例 11 { 12 //获取输出图像分辨率 13 int nRows = cvRound(srcImage.rows * kx);/

双线性插值原理与实现

北慕城南 提交于 2019-12-30 20:19:19
在对图像进行空间变换的过程中,典型的情况是在对图像进行放大处理的时候,图像会出现失真的现象。这是由于在变换之后的图像中,存在着一些变换之前的图像中没有的像素位置。为了说明这个问题,不妨假设有一副大小为64x64的灰度图像A,现在将图像放大到256x256,不妨令其为图像B,如图1所示。显然,根据简单的几何换算关系,可以知道B图像中(x,y)处的像素值应该对应着A图像中的(x/4,y/4)处的象素值,即 B(x,y) = A(x/4,y/4) (式1) 对于B中的(4,4),(4,8),(4,16)…(256,256)这些位置,通过式1就可以计算出其在A中的位置,从而可以得到灰度值。但是,对于B中的(1,1),(1,2),(1,3)…等等这些坐标点而言,如果按照式1计算的话,那么它们在A中对应的坐标不再是整数。比如,对于B中的坐标点(1,1),其在A中的对应坐标就变成了(0.25,0.25)。对于数字图像而言,小数坐标是没有意义的。因此,必须考虑采用某种方法来得到B中像素点在A中对应位置上的灰度级。处理这一问题的方法被称为图像灰度级插值。常用的插值方式有三种:最近邻域插值、双线性插值、双三次插值。理论上来讲,最近邻域插值的效果最差,双三次插值的效果最好,双线性插值的效果介于两者之间。不过对于要求不是非常严格的图像插值而言,使用双线性插值通常就足够了。

图像的几何运算

混江龙づ霸主 提交于 2019-12-15 17:25:58
目录 1.图像的插值 2.旋转与平移变换 3.缩放与裁剪变换 4.镜像变换 @ 图像的几何运算是指引起图像几何形状发生改变的变换。与点运算不同的是,几何运算可以看成是像素在图像内的移动过程,该移动过程可以改变图像中物体对象之间的空间关系。 1.图像的插值 图像插值是指利用已知邻近像素点的灰度值来产生位置像素点的灰度值,以便由原始图像再生成具有更高分辨率的图像。插值是在不生成新的像素的情况下对原图像的像素重新分布,从而改变像素数量的一种方法。在图像放大过程中,像素也相应的增加,增加的过程就是‘插值’发生作用的过程,‘’插值程序自动选择信息较好的像素作为增加、弥补空白像素的空间,而并非只使用近邻的像素,所以在放大图像时,图像看上去会比较平滑、干净。无论使用何种插值方法,首先都需要找到与输出图像像素相对应的输入图像点,然后再通过计算该点附近某一像素集合的权平均值来指定输出像素的灰度值。像素的权是根据像素到点的距离来而定的,不同插值方法的区别就在于考虑的像素集合不同。最常见的插值方法如下: (1)向前映射法: 通过输入图像像素的位置,计算输出图像对应像素的位置,将该位置像素的灰度值按某种方式分配到输出图像相邻的四个像素。 (2)向后映射法: 通过输出图像像素位置,计算输入图像对应像素的位置,根据输入图像相邻四个像素的灰度值计算该位置像素的灰度值。 (3)最近邻插值:

上采样和下采样

可紊 提交于 2019-12-13 12:06:25
缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个:1、使得图像符合显示区域的大小;2、生成对应图像的缩略图。 放大图像(或称为上采样(upsampling)或图像插值(interpolating))的主要目的是放大原图像,从而可以显示在更高分辨率的显示设备上。对图像的缩放操作并不能带来更多关于该图像的信息, 因此图像的质量将不可避免地受到影响。然而,确实有一些缩放方法能够增加图像的信息,从而使得缩放后的图像质量超过原图质量的。 下采样原理:对于一幅图像I尺寸为M*N,对其进行s倍下采样,即得到(M/s)*(N/s)尺寸的得分辨率图像,当然s应该是M和N的公约数才行,如果考虑的是矩阵形式的图像,就是把原始图像s*s窗口内的图像变成一个像素,这个像素点的值就是窗口内所有像素的均值: 上采样原理:图像放大几乎都是采用内插值方法,即在原有图像像素的基础上在像素点之间采用合适的插值算法插入新的元素。 无论缩放图像(下采样)还是放大图像(上采样),采样方式有很多种。如最近邻插值,双线性插值,均值插值,中值插值等方法。在AlexNet中就使用了较合适的插值方法。各种插值方法都有各自的优缺点。 常用的插值方法 1、最邻近元法   这是最简单的一种插值方法,不需要计算,在待求象素的四邻象素中,将距离待求象素最近的邻象素灰度赋给待求象素。设i+u, j

双线性插值原理详解

百般思念 提交于 2019-12-06 15:02:11
在做图像处理的时候,我们经常需要对图像大小进行变换。在深度学习中,也经常会用到Upsample上采样。而最常用的插值方法就是BiLinear双线性插值。   image_new = cv2.resize(image,(750,600),interpolation=cv2.INTER_LINEAR)   m10 = nn.Upsample(scale_factor=2, mode='bilinear')   m11 = nn.UpsamplingBilinear2d(scale_factor=2)  那么双线性插值到底是怎么一回事呢?   以下图为例,我们需要将左图(线条交点为像素点,size:5x5)放大到右图(size:12x8)。   那么我们可以做下图所示的一个投影变换示意图。以颜色区分:红色为原图,蓝色为新图。 那么可以得到下图所示的示意图,红色为缩放后的原图,蓝色为要求得的新图。放到某一个局部就是一个双线性插值问题。 双线性插值动画示意图:   现在搬出下面这张双线性插值原理图,x-y坐标系、已知Q12,Q22,Q11,Q21四个点的值,求P点值。 首先在Q11Q21、Q12Q22方向上进行两次线性插值,得到R1、R2;然后在R1R2方向再做一次线性插值,得到P点。这就是双线性插值。   双线性插值关键的是P点在x,y两个方向上相对已知Q点的位置。   令:α = (x