双线性插值(内插)学习
图像缩放算法及速度优化——(二)双线性插值

图像缩放算法及速度优化——(⼆)双线性插值 双线性插值作为OpenCV中默认使⽤的图像缩放算法,其效果和速度都是不错的。
并且效果也⽐较稳定,计算复杂度并不算太⾼。
我看了很多⽹上的算法,⾃⼰也没看太懂,下⾯是从⽹上找的双线性插值算法的讲解。
“图像的双线性插值放⼤算法中,⽬标图像中新创造的象素值,是由源图像位置在它附近的2*2区域4个邻近象素的值通过加权平均计算得出的。
双线性内插值算法放⼤后的图像质量较⾼,不会出现像素值不连续的的情况。
然⽽次算法具有低通滤波器的性质,使⾼频分量受损,所以可能会使图像轮廓在⼀定程度上变得模糊。
” 下⾯还是根据我⾃⼰的理解来继续讲述吧,相信读者中有很多⾼⼿,希望读者能给予我指点⼀下,让我也能更明⽩⼀些。
双线性插值算法和最近邻插值算法⽐较类似。
在最近邻插值算法中,⽬标图像中的某个点(x,y)是去源图像中找最邻近的⼀个点(x0, y0)即可。
⽬标图像中的点(x, y)对应于源图像中的点(x0',y0'),x0'、y0'很可能不是整数,⽽是⼩数,⽽最近邻插值算法是找其邻近整型值(int(x0'+0.5f),int(y0'+0.5f))(上篇⽂章中没有进⾏四舍五⼊)。
我们现在找x0', y0'所在位置旁边的四个点,根据这四个点与(x0',y0')距离的关系计算⽬标图像中(x,y)⼀点的像素值。
算法描述如下:(1)计算源图像与⽬标图像宽与⾼的⽐例w0 : 表⽰源图像的宽度h0 : 表⽰源图像的⾼度w1 : 表⽰⽬标图像的宽度h1 : 表⽰⽬标图像的⾼度float fw = float(w0-1)/(w1-1);float fh = float(h0-1)/(h1-1);(2)针对⽬标图像的⼀个点(x, y),计算在源图像中的对应坐标,结果为浮点数。
float x0 = x * fw;float y0 = y * fh;int x1 = int(x0);int x2 = x1 + 1;int y1 = int(y0);int y2 = y1+1;所求的源图像中的四个点坐标为(x1, y1) (x1, y2) (x2, y1) (x2,y2)(3)求周围四个点所占的权重⽐值如上图,fx1 = x0 - x1;fx2 = 1.0f - fx1;fy1 = y0 - y1;fy2 = 1.0f - fy1;float s1 = fx1*fy1;float s2 = fx2*fy1;float s3 = fx2*fy2;float s4 = fx1*fy2;我们以value(坐标)来代表取得此点的坐标值,则:value(x0,y0) = value(x2,y2)*s1+value(x1,y2)*s2+value(x1,y1)*s3+value(x2,y1)*s4;如果对上述运算不够明⽩的话,可以这样来求。
双线性插值法(bilinearinterpolation)

双线性插值法(bilinearinterpolation)前⾯讲解了最近邻插值法缩放图像以及不⾜之处,本篇介绍另外⼀种插值法,介绍双线性插值法之前先介绍线性插值。
1. 线性插值 线性插值是指插值函数为⼀次多项式的插值⽅式,其在插值节点上的插值误差为零。
线性插值可以⽤来近似代替原函数,也可以⽤来计算得到查表过程中表中没有的数值。
如图所⽰现在已知y=f(x)的两个点坐标分别是(x0,y0),(x1,y1),现在在区间(x0,x1)内给定任意x,如何求y,线性插值法采⽤图中红点的y值代替f(x)的y值。
假设x处的直线上的红点坐标为(x,Y),那么Y约等于y。
根据图可以得到公式:⽤y0,y1表⽰得到公式很好记,将分式看做权重系数。
2. 双线性插值法 双线性插值法也叫双线性内插,其核⼼思想是在两个⽅向分别进⾏⼀次线性插值。
双线性插值作为数值分析中的⼀种插值算法,⼴泛应⽤在信号处理,数字图像和视频处理等⽅⾯。
如坐标图所⽰,⽤横纵坐标代表图像像素的位置,f(x,y)代表该像素点(x,y)的彩⾊值或灰度值。
将图像放⼤或缩⼩,⽬的像素dst对应的原像素src中的坐标转换公式如下,公式很好理解,可参考上⼀章最近邻插值法。
srcX=dstX*(srcWidth/dstWidth) srcY=dstY*(srcHeight/dstHeight) 上式中,dstX与dstY为⽬标图像的某个像素的横纵坐标,dstWidth与dstHeight为⽬标图像的长与宽;srcWidth与srcHeight为原图像的宽度与⾼度。
srcX,srcY为⽬标图像在该点(dstX,dstY)对应的原图像的坐标。
现在假设⽬标图像的像素点(x’,y’)映射到原图像中是(x,y),也就是图中的P点。
设Q11 = (x1, y1)、Q12 = (x1, y2)、Q21 = (x2, y1) 、Q22 = (x2, y2),图中Q11,Q12,Q21,Q22分别为距离P点的最近的四个点。
一种基于边缘方向的双线性插值方法

有更高分辨率 的图像 。图像 插值技术的关键在 J
于使 插值后 的 图 像尽 可 能地 保 持 原 始 图 像 的 清 晰 度 。图像插值 的方 法 很 多 , 统 的方 法 有 最 近邻 点 传 插值 法 、 双线性 插 值 法 和样 条 插 值 法 。这些 方 法 算
双线性插值法是一 种常用 的插值方法 , 用插值 它 点周 围 4个邻 点 的灰度值 加权 内插 作 为该点 的灰 度 值 , ]它可分 解 为二 次 一 维线 性 插 值 , 图 1所 示 。 如 先沿水平方 向进行 第一 次线性插值计算
=
法简单 、 计算量小、 易于实现, 只考虑到插值点与 但
一
种 基 于边 缘 方 向 的双 线性 插 值 方 法
龚 昌来 , 聪 , 冬 涛 罗 杨
( 嘉应学院电子信息工程学院 , 广东 梅州 54 1 ) 10 5
摘 要 : 对传 统 的双 线性插 值存 在 的 图像边 缘模糊 问题 , 文提 出一种 改进 方法 。首先根 据 针 本 插值 点 的几何位 置及 邻点 的灰度 大小 , 定插值 点灰度 的梯度 方 向和边 缘方 向 , 确 然后 沿边缘 方 向进 行双 线性插值 。该 方 法可实现 沿任 意边 缘方 向的插值 , 并且 计算简 单。 实验结果 表 明 , 该 方 法与传 统 的双 线性插值 法 相 比, 值 图像 的平 均梯度 增加 而均 方误 差减 小 , 效地提 高 了插 插 有 值 图像 的质量。 关键词 : 图像插 值 ; 线性插值 ; 双 灰度 梯度 ; 缘 方 向 边
itr oa o sma eao g t ee g ie t n . h sme o al e l ei tr oain a o ga y e g i ci n n e n ep l t n i d l n d e dr ci s T i t d C l r ai n e l t ln n d e dr t sa d t i h o h z p o e o h l oi ag rtm s s l n a t E p rme ts o s t a h o e t o a b iu l mp o e t e i g u i . h i i e a d fs . x e mp i n h w h tt e n v lme h d c n o vo sy i r v h ma e q a t l y Ke r s i g ne o ain; i n a t r oa in ga r d e t e g i c in y wo d : ma e i tr lt p o b l e ri e p lt ; ry g a in ;d e dr t i n o e o
二维插值算法原理

二维插值算法是一种用于在二维空间中估计未知数据点的方法。
它基于已知数据点的值和位置来推断未知数据点的值。
以下是常见的二维插值算法原理之一:双线性插值。
双线性插值是一种基于四个最近邻数据点进行估计的方法。
假设我们有一个二维网格,已知在四个顶点上的数据点的值和位置。
要估计某个位置处的未知数据点的值,双线性插值算法按照以下步骤进行:
1.找到目标位置的最近的四个已知数据点,通常称为左上、右上、左下和右下。
2.计算目标位置相对于这四个已知数据点的相对位置权重。
这可以通过计算目标位置到每个已知数据点的水平和垂直距离,然后根据距离来计算相对权重。
3.根据权重对四个已知数据点的值进行加权平均。
这里的加权平均可以使用线性插值进行计算。
4.得到目标位置的估计值作为插值结果。
双线性插值算法基于以下两个假设:
-在目标位置的附近,插值曲面在水平和垂直方向上是一致的,即呈现线性关系。
-已知数据点之间的变化不会很剧烈,即目标位置与附近已知数据点的值之间存在一定的连续性。
双线性插值算法是一种简单而有效的二维插值方法,适用于平滑、连续变化的数据。
但对于非线性、不规则的数据分布,或者存在边界情况的情况下,可能需要使用其他更复杂的插值算法来获得更准确的估计结果。
双线性内插法

• 這裡可以如圖6.22 所示,用一個方形框住旋轉 後的影像,然後檢視虛線方框內的所有整數值 像素點(x', y' )。包含在旋轉影像中的點都是再 旋轉回去也會落在原始影像範圍內的數值。
21
6.6 旋轉
22
6.6 旋轉
23
6.6 旋轉
• (x', y' ) 的灰階值可透過周圍的灰階值,以內插 法找出來。這個數值就是旋轉後影像像素(x', y' ) 的灰階值。
24
第六章 影像幾何 第151頁
6.6 旋轉
25
6.7 歪像(Anamorphosis)
26
6.7 歪像(Ahosis)
28
谢谢观看! 2020
29
• 函數imresize
其中A 是任何形態的影像,k 是縮放係數,方法( 'method')則可為近鄰('nearest')或雙線性 ('bilineaer')。
5
6.2 影像內插法
6
6.3 一般性內插法
• Generalized interpolation function:
(6.2)
• R0(u) Nearest-neighbor interpolation
第六章 影像幾何 6.1 數據內插法
• 假設有4 個數值要放大成8 個數值,該怎麼做?
• 解出線性係數a、b如下:
• 如此我們便可以得到以下 線性關係:
(連續性)
1
6.1 數據內插法
• 除了第一點與最後一點,x'i 完全不會與原始的 xj 相對應。
• 必須以已知的鄰近f(xj) 值來估算函數值 f(x'i)。 • 這種以周圍數值估算函數值的方法稱為內插法
内插法怎么用

内插法怎么用导言:内插法是数值分析中常用的插值技术。
在实际问题中,往往需要根据给定的离散数据点,通过内插法计算出其他位置的数据点的值。
内插法的应用广泛,例如在地理信息系统中用于生成高程图,计算机图形学中用于图像处理,以及金融领域中用于补充缺失的数据点等等。
本文将介绍两种常见的内插法:线性插值和拉格朗日插值。
一、线性插值线性插值是一种简单但常用的内插法。
它基于两个已知数据点,通过线性关系推算中间点的值。
具体步骤如下:1. 确定两个已知数据点(x1, y1)和(x2, y2),其中x1 < x2。
2. 根据已知数据点构建线性插值函数:y = y1 + (x - x1) * (y2 - y1) / (x2 - x1)其中,y为待求的中间点的值,x为中间点的横坐标。
3. 将待求的中间点的横坐标代入插值函数,计算出中间点的纵坐标。
例如,已知数据点(0, 0)和(2, 4),求横坐标为1的中间点的纵坐标。
根据线性插值公式,代入已知数据点的值和待求的中间点的横坐标:y = 0 + (1 - 0) * (4 - 0) / (2 - 0)= 1 * 4 / 2= 2因此,在横坐标为1的位置上,中间点的纵坐标为2。
线性插值的优点是计算简单快捷,而缺点是插值精度相对较低。
二、拉格朗日插值拉格朗日插值是一种更精确的内插法,它利用多项式插值的思想。
具体步骤如下:1. 确定多个已知数据点(x1, y1),(x2, y2),...,(xn, yn),其中x1 < x2 < ... < xn。
2. 根据已知数据点构建拉格朗日插值多项式:L(x) = y1 * L1(x) + y2 * L2(x) + ... + yn * Ln(x)其中,L(x)为待求中间点的值,Li(x)为拉格朗日基函数。
拉格朗日基函数的定义为:Li(x) = (x - x1) * (x - x2) * ... * (x - xi-1) * (x - xi+1) * ... * (x - xn) / ((xi - x1) * (xi - x2) * ... * (xi - xi-1) * (xi - xi+1) * ... * (xi - xn))3. 将待求的中间点的横坐标代入拉格朗日插值多项式,计算出中间点的纵坐标。
双线性内插值(精)

三种插值算法最近邻插值法的双线性内插值:对于图像中一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v,其中 i 、 j 均为非负整数, u 、 v 为 [0,1区间的浮点数,则这个像素得值f(i+u,j+v 可由原图像中坐标为 (i,j、 (i+1,j、 (i,j+1、 (i+1,j+1所对应的周围四个像素的值决定,即:f(i+u,j+v = (1-u(1-vf(i,j + (1-uvf(i,j+1 + u(1-vf(i+1,j + uvf(i+1,j+1其中 f(i,j表示源图像 (i,j处的的像素值,以此类推这就是双线性内插值法。
双线性内插值法计算量大,但缩放后图像质量高, 不会出现像素值不连续的的情况。
由于双线性插值具有低通滤波器的性质, 使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊插值的计算方法有很多, 比较常用的有最近像素插值算法、双线性插值算法、双三次插值算法和分形算法的四种。
其中, 最近像素插值算法是最简单的一种插值算法, 这种方法是当图片放大时, 缺少的像素通过直接使用与之最接近的原有像素的颜色生成, 也就是说照搬旁边的像素。
如图 1所示,当图片扩大时,要增加 X 点处的像素,由于 X 点与 A 、 B 这两个有效像素中的 B 点最接近,因此 X 点会直接照搬B 点的像素,从而使到 X 点生成的效果与 B 点一样。
虽然这种算法简单, 因此处理的速度很快, 但结果通常会产生明显可见的锯齿, 效果往往不佳。
双线性插值算法, 是指输出的图像的每个像素都是原图中四个像素运算的结果, 由于它是从原图四个像素中运算的, 因此这种算法很大程度上消除了锯齿现象, 而且效果也比较好。
双三次插值算法是双线性插值算法的改进算法,它输出图像的每个像素都是原图 16个像素运算的结果, 由于效果好, 运算速度也不慢, 因而这种插值方法是一种很常见的算法, 普遍用在图像编辑软件、打印机驱动和数码相机上。
双线性内插值(精)

三种插值算法最近邻插值法的双线性内插值:对于图像中一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v,其中 i 、 j 均为非负整数, u 、 v 为 [0,1区间的浮点数,则这个像素得值f(i+u,j+v 可由原图像中坐标为 (i,j、 (i+1,j、 (i,j+1、 (i+1,j+1所对应的周围四个像素的值决定,即:f(i+u,j+v = (1-u(1-vf(i,j + (1-uvf(i,j+1 + u(1-vf(i+1,j + uvf(i+1,j+1其中 f(i,j表示源图像 (i,j处的的像素值,以此类推这就是双线性内插值法。
双线性内插值法计算量大,但缩放后图像质量高, 不会出现像素值不连续的的情况。
由于双线性插值具有低通滤波器的性质, 使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊插值的计算方法有很多, 比较常用的有最近像素插值算法、双线性插值算法、双三次插值算法和分形算法的四种。
其中, 最近像素插值算法是最简单的一种插值算法, 这种方法是当图片放大时, 缺少的像素通过直接使用与之最接近的原有像素的颜色生成, 也就是说照搬旁边的像素。
如图 1所示,当图片扩大时,要增加 X 点处的像素,由于 X 点与 A 、 B 这两个有效像素中的 B 点最接近,因此 X 点会直接照搬B 点的像素,从而使到 X 点生成的效果与 B 点一样。
虽然这种算法简单, 因此处理的速度很快, 但结果通常会产生明显可见的锯齿, 效果往往不佳。
双线性插值算法, 是指输出的图像的每个像素都是原图中四个像素运算的结果, 由于它是从原图四个像素中运算的, 因此这种算法很大程度上消除了锯齿现象, 而且效果也比较好。
双三次插值算法是双线性插值算法的改进算法,它输出图像的每个像素都是原图 16个像素运算的结果, 由于效果好, 运算速度也不慢, 因而这种插值方法是一种很常见的算法, 普遍用在图像编辑软件、打印机驱动和数码相机上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
双线性插值
维基百科,自由的百科全书
双线性插值,又称为双线性内插。
在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。
红色的数据点与待插值得到的绿色点
假如我们想得到未知函数在点的值,假设我们已知函
数在, , ,
及四个点的值。
首先在x方向进行线性插值,得到
然后在y方向进行线性插值,得到
这样就得到所要的结果,
如果选择一个坐标系统使得的四个已知点坐标分别为(0, 0)、(0, 1)、(1, 0) 和(1, 1),那么插值公式就可以化简为
或者用矩阵运算表示为
与这种插值方法名称不同的是,这种插值方法的结果通
常不是线性的,它的形式是
常数的数目都对应于给定的f的数据点数目
线性插值的结果与插值的顺序无关。
首先进行y方向的插值,然后进
行x方向的插值,所得到的结果是一
样的。
双线性插值的一个显然的三维空间延
伸是三线性插值。