图像插值-双线性插值与双三次插值
在现实生活中,我们经常会遇到把图像进行放大、几何空间变换的情况等等,这些操作都需要在源图像和目标图像之间建立一个映射规则,使得两图像像素坐标之间建立起一种对应关系,从而为目标图像的每一个像素赋值。
从源图像到目标图像的映射叫前向映射,但是这种映射方法可能会出现这样的两个问题:源图像的好几个像素点映射到目标图像中的位置是相同的;目标图像某些位置没有要赋值的像素。这样就要考虑如何把多个输出值转换成一个输出值和对目标图像中没有映射到的像素该如何赋值的问题。而我们经常采用的是后向映射,这种方法比前向映射更加有效,它是从目标图像到源图像的映射,即,这样就避免了前向映射中存在的问题,但也不可避免地存在着部分像素映射回源图像时坐标为浮点数的问题,而图像的像素值仅在整数坐标处有定义,这时候就要利用图像插值方法来给这个待求像素点赋值。
常用的插值算法有:最近邻插值,双线性插值,双三次插值方法等等。其中最近邻插值方法(零阶插值)最简单,运算量最小,但是效果很差,块效应非常明显。本书主要介绍双线性插值方法和双三次插值方法。
双线性插值与双三次插值
1、双线性插值:
双线性插值算法也叫一阶插值,它是利用了待求像素点在源图像中4个最近邻像素之间的相关性,通过两次线性插值得到待求像素点的值,假设映射回源图像中的待求像素坐标点为,其中
,双线性插值方法利用该点周围四个相邻像素点
计算得到,其中
为图像在
处的像素值,如下图所示。
插值过程:先在水平方向上进行线性内插,由和
内插得到
点的值,即
,由
和
内插得到
点的值,即
,再由
和
点在竖直方向上线性内插得到
,即
当然结果与插值顺序无关,即先在竖直方向插值,再在水平方向插值得到的结果是一样的。双线性插值得到的结果相对最近邻插值法的效果要好很多,因为最近邻插值法只利用了周围一个像素的相关性,而双线性插值法利用了周围四个像素的相关性,但随之而来的是计算量的增加。
2、双三次插值
双三次插值又叫立方卷积插值,它是利用了待求像素点在源图像中相邻的16个像素点的值,即这16个像素点的加权平均。
每个像素值的权重由该点到待求像素点的距离确定,这个距离包括水平和竖直两个方向上的距离。以像素点为例,该点在竖直和水平方向上与待求像素点的距离分别是和
,则该像素点的权重为
。则待求点像素值
的计算方法如下式所示。
其中
插值核为:
其函数图像如下图所示
我们来看一看三种方法的插值效果
下面展示了三种插值方法的效果
图(a)是原图,图(b)是经过下采样的图,图(c)是利用的是最近邻插值法,图(c)利用的是双线性插值法,图(e)利用的是双三次插值法
(a)原始图像 (b)降采样后的图像
(C)最近邻插值 (d)双线性插值 (e)双三次插值
在以上所介绍的插值方法当中,可以发现利用双三次插值法得到图像效果是最好的,但相对于原图来说,差距仍然很大。双三次插值法在保留细节方面比双线性插值法更好,它在源图像中利用的已知信息比最近邻插值法和双线性插值法多,所以比其他方法好也在意料之中,但同时它的算计成本是最高的。
其实双线性插值和双三次插值方法都是利用邻域像素的加权平均来求得待求像素点的值,这就使得它们具有低通滤波器的性质,所以可以看出这些方法其实都是基于图像在所有区域都具有区域平滑性的这一假设,但是这一假设对于图像当中的边缘和纹理这些地方来说是不成立的,所以插值方法会使得图像高频分量受损,引起图像模糊和边缘失真。
图像插值-双线性插值与双三次插值相关推荐
- 图像常用的插值算法:最近邻插值、双线性插值和双三次插值算法
图像常用的插值算法 最近邻插值算法 双线性插值算法 双三次插值(bicubic)算法 三种插值算法的优缺点 插值算法是图像缩放中的一项基本且重要的算法:在图像缩放中,输出图像像素点坐标可能对应输入图像 ...
- 图像插值-双线性插值(bilinear)
双线性插值(bilinear) 本文将未做插值的原始图像称作源图像,源图像插值缩放K倍后的图像称作目标图像. 以下标识符的意义: 算法 双线性插值的主要思想是目标点归一化后在四周取4个最近邻点,并根据 ...
- 最近邻插值、双线性插值、双三次插值
1.最近邻插值 越是简单的模型越适合用来举例子,我们就举个简单的图像:3X3 的256级灰度图,也就是高为3个象素,宽也是3个象素的图像,每个象素的取值可以是 0-255,代表该像素的亮度,255代表 ...
- 【opencv】最近邻插值、双线性插值、双三次插值(三次样条插值)
目录 1. 最近邻插值 2. 双线性插值 1)简单理解 2)一般性 3. 双三次插值(三次样条插值) 总结 1. 最近邻插值 举个简单例子:一个3×33 \times 33×3 的单通道图像,如下 如 ...
- Python双线性插值和双三次插值
文章目录 python二维数组的插值 基本原理 python二维数组的插值 通过scipy.interpolate中的griddata可以进行针对坐标网格的二维插值,其调用方法为 griddata(p ...
- js 双线性插值 双三次插值法 实现
js 双线性插值 双三次插值法 实现 介绍 双线性插值 原理 双三次插值法 原理 js实现 介绍 在网页中利用canvas进行绘图时,遇到一个问题,原始的数据分辨率很小,而图片要放大到整个网页,所以需 ...
- OpenCV图像缩放插值之BiCubic双三次插值
图像缩放算法简介 在图像的仿射变换中,很多地方需要用到插值运算,常见的插值运算包括最邻近插值,双线性插值,双三次插值(立体插值),兰索思插值等方法,OpenCV提供了很多方法,其中,双线性插值由于折中 ...
- [转]双线性插值(Bilinear interpolation)
1,原理 在图像的仿射变换中,很多地方需要用到插值运算,常见的插值运算包括最邻近插值,双线性插值,双三次插值,兰索思插值等方法,OpenCV提供了很多方法,其中,双线性插值由于折中的插值效果和运算速度 ...
- 传统图片超分算法——双三次插值 (Bicubic)、附C++源码
呼,花了一个下午,终于是写完加调试完了所有的代码. 双三次插值介绍 之前我写的这篇博客中讲了什么是超分,并实现了单线性插值算法和双线性插值算法.在这里将再介绍一种插值算法--双三次插值算法. 首先,双 ...
最新文章
- docker卸载命令_使用docker完成生信分析环境搭建
- Java课堂测试——一维数组
- HTML5好从业吗?为什么都热衷于HTML5全栈工程师呢?
- oppo设备怎么样无需root激活XPOSED框架的教程
- linux 如何格式化ext2,Linux的Ext2文件系统(InodeBlock)详解
- eclipse没有advanced按钮_Eclipse快捷键 + 自动提示不显示问题
- python合并excel工作簿_使用Python将多个excel的多个sheet页合并到一个excel
- Maven学习总结(26)——maven update时,报:Preference node org.eclipse.wst.validation...
- 优先升级鸿蒙系统的华为(含荣耀)手机,优先升级鸿蒙系统的华为(含荣耀)手机:是这48款!有你的吗?...
- python selenium 等待页面加载完毕_python3 selenium 设置元素等待的三种方法
- 测试图片真假软件,如何找出照片的PS痕迹__如何检测一张图片是否被PS过_飞翔教程...
- python通过opc读plc实例_python调用openopc读写plc
- 圆内接等边三角形的画法_几何画板应用教学,教你绘制圆的内接正三角形
- 联想售后服务偷换主板
- AI 重聚知名已故歌手,发布四首原创歌曲
- 外地驾照迁入北京流程
- 电脑开机遇到二维码怎么办?
- mac安装svn的两种方式(使用brew安装svn 和 可视化工具SnailsvnLite)
- [计算机网络]六、IP地址概述与应用(网络层)
- 国嵌,够欠!---ARM在线教育误区
热门文章
- linux中常见的校验用正则表达式
- 可以上传图片的表白墙php源码,校园表白墙源码 支持上传图片 带背景音乐版表白墙程序源码...
- 巧用千寻位置GNSS软件|点测量采集技巧
- @Configuration Spring注解详解
- 联想 YOGA 智能眼镜 T1 评测
- 计算机音乐专业学什么软件,四款音乐学习、制作软件推荐,开启你的音乐人之路...
- 计算机网络原理 7层结构概述
- HAXM无法安装的原因(ARM处理器的福音)
- 预览版win11系统下载方法详解
- LiteOS 内存管理