双线性插值(超级易懂的)「建议收藏」

双线性插值(超级易懂的)「建议收藏」双线性插值简介在两个方向分别进行一次线性插值(首先在一个方向上使用线性插值,然后再在另一个方向上使用线性插值执行双线性插值。尽管每个步骤在采样值和位置上都是线性的,但是插值总体上不是线性的,而是在采样位置上是二次的。)作用一般用于重新采样图像和纹理。计算四个周围纹理像素的属性(颜色,透明度等)的加权平均值,并将其应用于屏幕像素。(简单来说,我要求一个已知坐标的像素值,先去找他四个周围已…

大家好,又见面了,我是你们的朋友全栈君。

双线性插值

简介

在两个方向分别进行一次线性插值(首先在一个方向上使用线性插值,然后再在另一个方向上使用线性插值执行双线性插值。尽管每个步骤在采样值和位置上都是线性的,但是插值总体上不是线性的,而是在采样位置上是二次的。)

作用

一般用于重新采样图像和纹理。
计算四个周围纹理像素的属性(颜色,透明度等)的加权平均值,并将其应用于屏幕像素。
(简单来说,我要求一个已知坐标的像素值,先去找他四个周围已知像素的坐标,通过两次单线性插值,找到他的像素值是多少)

单线性插值

这里是单线性插值
列式
仔细看就是用x和x0,x1的距离作为一个权重,用于y0和y1的加权。双线性插值本质上就是在两个方向上做线性插值。

双线性插值的公式

在这里插入图片描述
如图所示,我们需要求P点的像素值。我们已知了Q11、Q21、Q12、Q22、P的坐标。也知道Q11、Q21、Q12、Q22的像素值。所以先用关于X的单线性插值去分别计算R1、R2的像素值:
在这里插入图片描述在右边的等式中的字母f(Q11)、f(Q12)、f(Q21)、f(Q22)、x1、x2、x都是已知的,求出的f(x,y1)与f(x,y2)即为R1、R2的像素值。
再使用关于y方向的单线性插值计算P点的像素值
得出:
在这里插入图片描述在右边的等式中的字母y1、y2、y都是已知的,f(x,y1)与f(x,y2)即为上一个式子中求出的R1、R2像素值。

双线性插值的例子

举个栗子:
在这里插入图片描述
如右侧示例所示,可以通过在第20行和第21行的第14列和第15列的值之间进行线性内插,来计算计算为在第20.2行第14.5列处的像素处的强度值.(这里也正好说明了一般使用最相邻的像素点)
在这里插入图片描述

双线性插值的直观展示

在这里插入图片描述
我们可以看出这里的是在一个平面的双线性插值(Bilinear)

意义

此算法减少了由于将图像调整大小为非整数缩放因子而导致的某些视觉失真

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130489.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • activity详解_activity教程

    activity详解_activity教程前言Activity可以获取运行中的应用信息,可以获取到servcie,process,app,memory信息等。获取信息ActivityManager.MemoryInfoMemoryInfo中重要的字段:availMem(系统可用内存),totalMem(总内存),threshold(低内存阈值,即低内存的临界线),lowMemory(是否为低内存状态)Debug.M…

    2022年9月7日
  • c++ uint32_t_int32和uint32

    c++ uint32_t_int32和uint32文章目录使用int64_t形式代替基本类型使用原因stdint.h源码int32_t和uint32_t的区别size_t在不同机器中定义不同:参考文档使用int64_t形式代替基本类型我们都知道,C语言的基本类型就char,short,int等。但是我们在看其他源码时经常碰到int32_t,int8_t这种形式的定义,他们是什么呢。其实他们就是基本类型的typedef重定义。也就是不同平台下,使用以下名称可以保证固定长度。1字节int8_t——char2字节int1

    2022年9月20日
  • 什么是宽字节注入_百分号两个字节

    什么是宽字节注入_百分号两个字节宽字节注入原理:宽字节(两字节)带来的安全问题主要是吃ASCII字符(一字节)的现象,使用一些特殊字符来”吃掉“经过转义符“\”。在重新详细了解宽字节注入之前,我认为宽字节注入只是出现在网站使用GBK编码的时代,现在已经很少出现了,但是实际上宽字节不只是出现在GBK编码中。在PHP中,通过iconv()进行编码转换时,也可能出现宽字节注入。还有一个误区:这里的编码问题不是出现在HTML页面…

    2022年10月15日
  • linux修改文件名字_linux搜索文件名命令

    linux修改文件名字_linux搜索文件名命令在Linux环境下修改文件名可以有不同的命令方式,比如rename、mv都可以进行修改,如果用户正在了解这方面的知识,可以阅读下文了解Linux修改文件名以及批量修改文件名的方法。对于单个的文件,可以直接使用命令,那如果有大量的类似格式的文件名需要修改成其他格式的,该如何呢?比如某次测试后,保存的文件为Lan1.txt,Lan2.txt,……Lan100.txt这一百个文件需要在前面添加前缀变成…

    2022年10月24日
  • 第一章《初识数据库》

    第一章《初识数据库》

    2021年5月28日
  • 8、Cocos2dx 3.0三,找一个小游戏开发3.0存储器管理的版本号

    8、Cocos2dx 3.0三,找一个小游戏开发3.0存储器管理的版本号

    2022年1月5日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号