线性插值基本原理推导
线性插值基本原理
- 1. 为什么使用线性插值?
- 2. 单线性插值
- 2.1 单线性插值推导
- 3.多线性插值
- 3.1 多线性插值推导注意事项
- 3.2 多线性插值推导
- 3.3 插入坐标越远权重越大
1. 为什么使用线性插值?
在深度学习对图片进行上采样和下采样的时候会应用到线性插值
- 对图片上采样,原始图片(33)范围红色框中的值,会得到(44)框中红色框的值
- 假设目标图片红框坐标为(i,j),那么在原始图片位置 ( i ∗ 3 4 , j ∗ 3 4 ) (i*\frac{3}{4},j*\frac{3}{4}) (i∗43,j∗43),
- 已知 i = 2 , j = 3 i=2,j=3 i=2,j=3,所以在原始图片位置 ( 1.5 , 0.75 ) (1.5,0.75) (1.5,0.75)
- 不是整数,在找原始图片位置时,会自动取整
- 即,需要使用线性插值,来降低误差
2. 单线性插值
2.1 单线性插值推导
- 如图所示,在 p 0 和 p 1 p_0和p_1 p0和p1中间插入 p p p,求p点位置
- 根据斜率公式
y − y 0 x − x 0 = y 1 − y 0 x 1 − x 0 y = y 0 + ( y 1 − y 0 ) ( x − x 0 ) x 1 − x 0 y = ( x 1 − x 0 ) y 0 + ( y 1 − y 0 ) ( x − x 0 ) x 1 − x 0 y = x 1 y 0 − x 0 y 0 + x y 1 − x 0 y 1 − x y 0 + x 0 y 0 x 1 − x 0 y = ( x 1 − x ) y 0 + ( x − x 0 ) y 1 x 1 − x 0 y = ( x 1 − x ) x 1 − x 0 y 0 + ( x − x 0 ) x 1 − x 0 y 1 \begin{aligned} \frac{y-y_{0}}{x-x_{0}}&=\frac{y_{1}-y_{0}}{x_{1}-x_{0}}\\ y&=y_{0}+\frac{(y_{1}-y_{0})(x-x_{0})}{x_{1}-x_{0}} \\&y=\frac{(x_{1}-x_{0})y_{0}+(y_{1}-y_{0})(x-x_{0})}{x_{1}-x_{0}} \\&y=\frac{x_{1}y_{0}-x_{0}y_{0}+xy_{1}-x_{0}y_{1}-xy_{0}+x_{0}y_{0}}{x_{1}-x_{0}} \\&y=\frac{(x_{1}-x)y_{0}+(x-x_{0})y_{1}}{x_{1}-x_{0}} \\&y=\frac{(x_{1}-x)}{x_{1}-x_{0}}y_{0}+\frac{(x-x_{0})}{x_{1}-x_{0}}y_{1} \end{aligned} x−x0y−y0y=x1−x0y1−y0=y0+x1−x0(y1−y0)(x−x0)y=x1−x0(x1−x0)y0+(y1−y0)(x−x0)y=x1−x0x1y0−x0y0+xy1−x0y1−xy0+x0y0y=x1−x0(x1−x)y0+(x−x0)y1y=x1−x0(x1−x)y0+x1−x0(x−x0)y1 - 假设y对应的值,就是图像中的像素值p,得到
p = ( x 1 − x ) x 1 − x 0 p 0 + ( x − x 0 ) x 1 − x 0 p 1 \begin{aligned} p=\frac{(x_{1}-x)}{x_{1}-x_{0}}p_{0}+\frac{(x-x_{0})}{x_{1}-x_{0}}p_{1} \end{aligned} p=x1−x0(x1−x)p0+x1−x0(x−x0)p1
3.多线性插值
3.1 多线性插值推导注意事项
- 双线性插值是三维的,需要从二维计算出某一个坐标轴的差值才可以
- 如果按照单线性插值,直接按照三位图,那么求 p 1 p_{1} p1
- 显然不可能会出现 y 1 − y 1 y_{1}-y_{1} y1−y1这个操作
y − y 1 x − x 2 = y 1 − y 1 x 1 − x 2 \begin{aligned} \frac{y-y_{1}}{x-x_{2}}&=\frac{y_{1}-y_{1}}{x_{1}-x_{2}} \end{aligned} x−x2y−y1=x1−x2y1−y1
- 显然不可能会出现 y 1 − y 1 y_{1}-y_{1} y1−y1这个操作
- 如果按照单线性插值,直接按照三位图,那么求 p 1 p_{1} p1
3.2 多线性插值推导
- 根据单线性插值公式,得出公式
- 我们计算像素值,直接将 y y y变成 p p p即可
y = ( x 1 − x ) x 1 − x 0 y 0 + ( x − x 0 ) x 1 − x 0 y 1 \begin{aligned} y=\frac{(x_{1}-x)}{x_{1}-x_{0}}y_{0}+\frac{(x-x_{0})}{x_{1}-x_{0}}y_{1} \end{aligned} y=x1−x0(x1−x)y0+x1−x0(x−x0)y1
- 我们计算像素值,直接将 y y y变成 p p p即可
- 由单线性插值,对x轴得到【自己转换维度】
p 1 = ( x 2 − x ) x 2 − x 1 p 11 + ( x − x 1 ) x 2 − x 1 p 21 p 2 = ( x 2 − x ) x 2 − x 1 p 12 + ( x − x 1 ) x 2 − x 1 p 22 \begin{aligned} p_{1}=\frac{(x_{2}-x)}{x_{2}-x_{1}}p_{11}+\frac{(x-x_{1})}{x_{2}-x_{1}}p_{21}\\ p_{2}=\frac{(x_{2}-x)}{x_{2}-x_{1}}p_{12}+\frac{(x-x_{1})}{x_{2}-x_{1}}p_{22} \end{aligned} p1=x2−x1(x2−x)p11+x2−x1(x−x1)p21p2=x2−x1(x2−x)p12+x2−x1(x−x1)p22 - 由单线性插值,对y轴得到
p = ( y 2 − y ) y 2 − y 1 p 1 + ( y − y 1 ) y 2 − y 1 p 2 \begin{aligned} p=\frac{(y_{2}-y)}{y_{2}-y_{1}}p_{1}+\frac{(y-y_{1})}{y_{2}-y_{1}}p_{2} \end{aligned} p=y2−y1(y2−y)p1+y2−y1(y−y1)p2 - 将 p 1 , p 2 p_{1},p_{2} p1,p2代入化简 p p p
p = ( y 2 − y ) y 2 − y 1 ( ( x 2 − x ) x 2 − x 1 p 11 + ( x − x 1 ) x 2 − x 1 p 21 ) + ( y − y 1 ) y 2 − y 1 ( ( x 2 − x ) x 2 − x 1 p 12 + ( x − x 1 ) x 2 − x 1 p 22 ) = ( y 2 − y ) ( x 2 − x ) ( y 2 − y 1 ) ( x 2 − x 1 ) p 11 + ( y 2 − y ) ( x − x 1 ) ( y 2 − y 1 ) ( x 2 − x 1 ) p 21 + ( y − y 1 ) ( x 2 − x ) ( y 2 − y 1 ) ( x 2 − x 1 ) p 12 + ( y − y 1 ) ( x − x 1 ) ( y 2 − y 1 ) ( x 2 − x 1 ) p 22 \begin{aligned} p&=\frac{(y_{2}-y)}{y_{2}-y_{1}}(\frac{(x_{2}-x)}{x_{2}-x_{1}}p_{11}+\frac{(x-x_{1})}{x_{2}-x_{1}}p_{21})+\frac{(y-y_{1})}{y_{2}-y_{1}}(\frac{(x_{2}-x)}{x_{2}-x_{1}}p_{12}+\frac{(x-x_{1})}{x_{2}-x_{1}}p_{22}) \\&=\frac{(y_{2}-y)(x_{2}-x)}{(y_{2}-y_{1})(x_{2}-x_{1})}p_{11}+\frac{(y_{2}-y)(x-x_{1})}{(y_{2}-y_{1})(x_{2}-x_{1})}p_{21}+\frac{(y-y_{1})(x_{2}-x)}{(y_{2}-y_{1})(x_{2}-x_{1})}p_{12}+\frac{(y-y_{1})(x-x_{1})}{(y_{2}-y_{1})(x_{2}-x_{1})}p_{22} \end{aligned} p=y2−y1(y2−y)(x2−x1(x2−x)p11+x2−x1(x−x1)p21)+y2−y1(y−y1)(x2−x1(x2−x)p12+x2−x1(x−x1)p22)=(y2−y1)(x2−x1)(y2−y)(x2−x)p11+(y2−y1)(x2−x1)(y2−y)(x−x1)p21+(y2−y1)(x2−x1)(y−y1)(x2−x)p12+(y2−y1)(x2−x1)(y−y1)(x−x1)p22 - 在图像中,相邻像素点坐标差值为1,即
x 2 = x 1 + 1 y 2 = y 1 + 1 \begin{aligned} x_{2}&=x_{1}+1\\ y_{2}&=y_{1}+1 \end{aligned} x2y2=x1+1=y1+1
- 将 x 2 , y 2 x_2,y_2 x2,y2关于 x 1 , y 1 x_1,y_1 x1,y1的表达式代入p
p = ( y 2 − y ) ( x 2 − x ) ( y 2 − y 1 ) ( x 2 − x 1 ) p 11 + ( y 2 − y ) ( x − x 1 ) ( y 2 − y 1 ) ( x 2 − x 1 ) p 21 + ( y − y 1 ) ( x 2 − x ) ( y 2 − y 1 ) ( x 2 − x 1 ) p 12 + ( y − y 1 ) ( x − x 1 ) ( y 2 − y 1 ) ( x 2 − x 1 ) p 22 = ( y 2 − y ) ( x 2 − x ) p 11 + ( y 2 − y ) ( x − x 1 ) p 21 + ( y − y 1 ) ( x 2 − x ) p 12 + ( y − y 1 ) ( x − x 1 ) p 22 \begin{aligned} p&=\frac{(y_{2}-y)(x_{2}-x)}{(y_{2}-y_{1})(x_{2}-x_{1})}p_{11}+\frac{(y_{2}-y)(x-x_{1})}{(y_{2}-y_{1})(x_{2}-x_{1})}p_{21}+\frac{(y-y_{1})(x_{2}-x)}{(y_{2}-y_{1})(x_{2}-x_{1})}p_{12}+\frac{(y-y_{1})(x-x_{1})}{(y_{2}-y_{1})(x_{2}-x_{1})}p_{22} \\&=(y_{2}-y)(x_{2}-x)p_{11}+(y_{2}-y)(x-x_{1})p_{21}+(y-y_{1})(x_{2}-x)p_{12}+(y-y_{1})(x-x_{1})p_{22} \end{aligned} p=(y2−y1)(x2−x1)(y2−y)(x2−x)p11+(y2−y1)(x2−x1)(y2−y)(x−x1)p21+(y2−y1)(x2−x1)(y−y1)(x2−x)p12+(y2−y1)(x2−x1)(y−y1)(x−x1)p22=(y2−y)(x2−x)p11+(y2−y)(x−x1)p21+(y−y1)(x2−x)p12+(y−y1)(x−x1)p22
3.3 插入坐标越远权重越大
- 由于p是由 p 1 p_{1} p1和 p 2 p_{2} p2得到的
P 1 ≈ ( y 2 − y ) ( x 2 − x ) p 11 + ( y 2 − y ) ( x − x 1 ) p 21 P 2 ≈ ( y − y 1 ) ( x 2 − x ) p 12 + ( y − y 1 ) ( x − x 1 ) p 22 \begin{aligned} P_{1}&\approx(y_{2}-y)(x_{2}-x)p_{11}+(y_{2}-y)(x-x_{1})p_{21}\\ P_{2}&\approx(y-y_{1})(x_{2}-x)p_{12}+(y-y_{1})(x-x_{1})p_{22} \end{aligned} P1P2≈(y2−y)(x2−x)p11+(y2−y)(x−x1)p21≈(y−y1)(x2−x)p12+(y−y1)(x−x1)p22- 根据 p 1 p_{1} p1,都有系数 ( y 2 − y ) (y_{2}-y) (y2−y),如果 p 1 p_{1} p1向的值比较大,那么 ( x 2 − x ) (x_{2}-x) (x2−x)的值就要大,所以当插入的点离哪一个坐标远,那个坐标的权重越大【插入值的权重越大】
线性插值基本原理推导相关推荐
- 【机器学习基础】数学推导+纯Python实现机器学习算法27:LDA线性判别分析
Python机器学习算法实现 Author:louwill Machine Learning Lab 线性判别分析(Linear Discriminant Analysis,LDA)是一种经典的线性分 ...
- 二维随机变量函数卷积公式的推导
二维随机变量函数卷积公式的推导 @(概率论) 给定Z=g(x,y)Z = g(x,y) 通常需要求FZ(z),fZ(z)F_Z(z),f_Z(z) 这里是由两个变元依据关系映射到一个变元,因此,求得F ...
- 经常造轮子的 AI 工程师水平通常不会太差
题图 | 邵姺画 引子 | 造轮子还是不造轮子,这是一个问题 理查德·费曼教授去世后,人们在他的黑板上发现了 What I cannot create, I do not understand 这句话 ...
- 存在于实数域的微观粒子2-泡利不相容原理
当年的化学书上泡利不相容原理的解释是不能有两个费米子处于相同的量子态.但书里并没有解释为什么? 如果将两个自旋相同的电子放入同一个轨道他们之间是有排斥力吗?否则自旋相同的电子怎么就不能在同一个轨道? ...
- python深度学习include框架_《用Python实现深度学习框架》上市
朋友们,<用Python实现深度学习框架>已经由人民邮电出版社出版上市了.在这本书中,我们带领读者仅用Python+Numpy实现一个基于计算图的深度学习框架MatrixSlow.本书讲解 ...
- python深度学习include框架_搞事情。《用Python实现深度学习框架》已出版上架。...
我和 @张觉非 合作的<用Python实现深度学习框架>一书已经由人民邮电出版社出版上市了.写作本书的缘由,是2017年11月我加入了360,开始负责以机器学习平台为中心的AI技术设施的研 ...
- 基于python的深度学习框架有_《用Python实现深度学习框架》上市
朋友们,<用Python实现深度学习框架>已经由人民邮电出版社出版上市了.在这本书中,我们带领读者仅用Python+Numpy实现一个基于计算图的深度学习框架MatrixSlow.本书讲解 ...
- 质点系的牛顿-欧拉动力学方程
请大家不要编辑这个页面,unless I ask you to do so 1 经典力学(牛顿力学)的重要概念 经典力学是充分利用了欧式几何的公理化方法来构建我们的知识体系.了解什么是公理化方法.知识 ...
- matlab实现ica,ica算法matlab程序
ICA使用的是smooth之后的数据. 使用GIFT软件做独立成分分割 ? 软件包如同SPM 只需添加到matlab搜索路 径中保存然后在matlab中输入:gift 即可调 用. ? 其使用.... ...
最新文章
- 信息熵及其相关概念--数学
- JAVA编程TXT文件_java开发之读写txt文件操作的实现
- DevExpress.GridControl.gridView的一些注意
- 模拟video播放器
- 分不清的InputStream和OutputStream
- 水平分库分表的关键步骤以及可能遇到的问题
- Stark 组件:快速开发神器 —— 锦上添花
- headless 怎么处理_公司清算注销债务怎么处理
- mysql备份还原数据库操作系统_mysql 命令行备份还原数据库操作
- java混淆工具zelix比较_vscode,java环境
- jsf如何与数据库连接_JSF数据库示例– MySQL JDBC
- 两个整形变量的值进行交换
- ​【原型设计】8种原型设计工具介绍​
- Windows程序闪退原因查看方法----事件查看器
- 老飞飞秒进卡尔贝西龙洞不用走路的方法
- C++ #include expects “FILENAME“ or <FILENAME>
- 分享一下我的一些学习方法
- 机器学习基础——香农熵、相对熵(KL散度)与交叉熵
- 学习VM上运行dnf(整理)
- 华为 Mate 30 和 iPhone 11 最突出的差异:WiFi 6 和 5G 谁更“香”?
热门文章
- 校园网测试--ettercap使用
- tsm9_Momentum_Ultimate Oscillators_MACDivergence index_Stochastic RSI_A/D Oscillator_RVI Vigor ADX
- 苹果用户界面Aqua背后的故事
- 【node.js】nvm安装最新教程
- 【C语言】memcmp、memcpy、memmove、memset、memchr函数详解
- SPM混沌映射(含MATLAB代码)
- Hexo界面美化_实用插件配置
- Typora导出word文档自动生成目录
- 谷歌剧变:李飞飞李佳离职后,现在轮到云CEO出局
- 蓝桥杯嵌入式STM32G431——第九届省赛真题电子定时器