pytorch双线性插值
1、单线性插值
化简得:
重要公式
将y视为像素值的函数;
2、双线性插值
问题:求P点的像素值?
根据单线性插值公式:
1、得到R1和R2点的像素值:
2、然后通过R1和R2线性插值得到P点的像素值:
所以,一共使用了三次单线性插值得到,最终的像素值。
另外,其中由于相邻像素点差1,所以y2 - y1 = 1 ,和x2-x1 = 1,所以分母就为1.
最终得到的计算公式为:
3、最近邻法
使用下面公式,寻找最近一个像素值
其中:
存在问题:右偏移
原公式是右偏移的,新公式中心对其了。
因为在原公式中是右偏移的,所以使用中心点重合来消除一下。
下面是优化公式:
4、双线性插值简单实现
通过最邻近找到P点,然后需要找到出四个相邻像素点。
通过floor函数找到下限,floor +1 找到上限,但是要防止超过图像的像素坐标值
import numpy as np
import matplotlib.pyplot as plt
from PIL import Imagedef Bilinear(dst,des_w,des_h,src_w,src_h):for c in range(3):for dst_x in range(des_w):for dst_y in range(des_h):src_x = (dst_x + 0.5)*src_w/des_w - 0.5src_y = (dst_y + 0.5)*src_h/des_h - 0.5#四个临近点src_x_1 = int(np.floor(src_x))src_y_1 = int(np.floor(src_y))src_x_2 = min(src_x_1 + 1,src_w -1)src_y_2 = min(src_y_1 + 1,src_h -1)R1 = (src_x_2 - src_x) * src[src_y_1,src_x_1,c] + (src_x - src_x_1) * src[src_y_1,src_x_2,c]R2 = (src_x_2 - src_x) * src[src_y_2,src_x_1,c] + (src_x - src_x_1) * src[src_y_2,src_x_2,c]P = int((src_y_2 - src_y) * R1 + (src_y - src_y_1) * R2)dst[dst_y, dst_x, c] = Preturn dstdef show_img(dst):dst = dst.astype(np.uint8)plt.figure()plt.subplot(121)plt.imshow(src)plt.subplot(122)plt.imshow(dst)# plt.imsave("./img.png",dst)plt.show()if __name__ == '__main__':src = Image.open("./img_1.png")src_w = src.widthsrc_h = src.heightsrc = np.array(src)dst = np.ones((960, 1280, 3))des_w = dst.shape[1]des_h = dst.shape[0]# print(des_w,des_h)dst = Bilinear(dst,des_w,des_h,src_w,src_h)show_img(dst)
5、pytorch中双线性插值
import torch
from torch.nn import functional as F
from PIL import Image
import numpy as np
import matplotlib.pyplot as pltimg = Image.open("./img.png")
img = np.array(img,dtype=float)
print(img.shape)
img = torch.from_numpy(img)
print(img.shape)
img = img.unsqueeze(0).permute(0,3,1,2) #[b,c,h,w]img = F.interpolate(img,scale_factor=(2,2),mode='bilinear')
# print(img.shape)
img = img.squeeze(0).permute(1,2,0)
print(img.shape)a = torch.tensor(img, dtype=torch.uint8)
print(a.shape)
plt.figure()
plt.imshow(a)
plt.show()
pytorch双线性插值相关推荐
- CV03-双线性差值pytorch实现
一.双线性差值 1.1 公式 在理解双线性差值(Bilinear Interpolation)的含义基础上,参考pytorch差值的官方实现注释,自己实现了一遍. 差值就是利用已知点来估计未知点的值. ...
- 在PyTorch中进行双线性采样:原理和代码详解
↑ 点击蓝字 关注视学算法 作者丨土豆@知乎 来源丨https://zhuanlan.zhihu.com/p/257958558 编辑丨极市平台 在pytorch中的双线性采样(Bilinear Sa ...
- Pytorch上下采样函数--interpolate()
torch.nn.functional.interpolate实现插值和上采样 上采样:可以使你训练的图片分辨率变成你想要的更大的分辨率 将输入图片input image进行rescale到一个想要的 ...
- 【Pytorch】interpolate==>上下采样函数
def interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None):r"&quo ...
- 【PyTorch 】interpolate()==>上下采样函数
def interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None, recompute_s ...
- pytorch中上采样的实现
因为最近在学习FCN,所以呢,有一些上采样的操作 实际上,上采样(upsampling)一般包括2种方式: 1:Resize,如双线性插值直接缩放,类似于图像缩放(这种方法在原文中提到) 2:Deco ...
- 图解 RoIAlign 以及在 PyTorch 中的使用(含代码示例)
文章目录 RoIAlign 的用处 RoIAlign 计算原理 双线性插值(Bilinear Interpolation) pytorch中的实现 简单示例 在FasterRCNN中的使用示例 参考链 ...
- PyTorch 学习笔记(三):transforms的二十二个方法
本文截取自<PyTorch 模型训练实用教程>,获取全文pdf请点击:https://github.com/tensor-yu/PyTorch_Tutorial 文章目录 一. 裁剪--C ...
- 三个优秀的PyTorch实现语义分割框架
向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程 公众号:datayx 使用的VOC数据集链接开放在文章中,预训练模型已上传Github,环境我使用Colab pro ...
- PyTorch 入坑八:卷积与转置卷积
卷积 操作 略 输入输出尺寸变化 略 PyTorch实现 nn.Conv2d(in_channels,out_channels,kernel_size,stride=1.padding=0,dilat ...
最新文章
- TinyML:下一轮人工智能革命
- 中科元素精准饮食 功能性农业-李喜贵:电视荧屏广州地铁线展示
- c语言发牌思路,C语言发牌机程序求详细解析
- 如何系统地自学前端(女生),女生发展前端是否是青春饭?
- [开源]STM32F103RBT6最小系统,LEDx2,KEYx4
- list的一些常见用法总结(实用干货收藏)
- 【 地图系列 】 世界地图和主要国家的 JSON 文件
- #pragma comment (lib, ws2_32.lib) 调用报错
- c语言表达式判断语法错误题,大连理工大学C语言模拟题机房题库单选、判断、填空(分章节_共十一章)...
- 迪文屏幕的学习和开发
- 什么是二进制8421码?
- web端调用高德API
- To B产品用研工作,到底在研究什么?
- html自动汉字转拼音,输入汉字转换成拼音首字母js代码
- 什么是SDK什么是CDN
- NYOJ - [第九届河南省程序设计大赛]Decimal integer conversion(暴力)
- html css主题,HTML+CSS=无限可能——案例详解:我的POI主题作品
- [obs-studio]win32-test项目成功运行
- Chapter1 ROS概述与环境搭建
- android加载二维码带中间logo
热门文章
- 学校机房环境监控系统解决方案!
- LS-DYNA材料模型
- 完整的连接器设计手册_连接器退化机理是什么?(一)
- 3D模型在线转换,CAD格式转换,Solidworks版本转换
- python面板数据分析代码_【译】用python做计量之面板数据模型
- 计网 - 计算机网络开篇
- 220kv变电站计算机监控系统网络结构图,变电站二次系统设计计算机监控系统组屏(柜)方案...
- Lisp编制的坡度标注_形位公差自动标注的ATUOLISP程序设计(Ⅰ)
- 在Linux操作系统中使用手写板(转)
- linux如何停掉计划任务,Linux系统的任务计划