最邻近插值
最邻近插值较为简单,将原图放大到目标图相同大小后,直接对对应的像素进行覆盖。
s
r
c
X
=
d
s
t
X
×
s
r
c
W
i
d
t
h
d
s
t
W
i
d
t
h
srcX=dstX \times \frac{srcWidth}{dstWidth}
srcX=dstX×dstWidthsrcWidth
s
r
c
Y
=
d
s
t
Y
×
s
r
c
H
e
i
g
h
t
d
s
t
H
e
i
g
h
t
srcY=dstY \times \frac{srcHeight}{dstHeight}
srcY=dstY×dstHeightsrcHeight
最邻近插值运算快,但容易形成块状像素,边缘过渡不够平滑且容易产生锯齿。
双线性插值
- 单次线性插值
如图所示,A、C已知,要求出B的函数值f(B),可使用单线性插值:
f
(
A
)
−
f
(
B
)
X
a
−
X
b
=
f
(
A
)
−
f
(
C
)
X
a
−
X
c
\frac{f(A)-f(B)}{Xa-Xb}=\frac{f(A)-f(C)}{Xa-Xc}
Xa−Xbf(A)−f(B)=Xa−Xcf(A)−f(C)
- 双线性插值
双线性插值在x、y方向分别进行插值。
首先对e、f在x方向上进行线性插值,得到e和f的像素值,再对g进行y方向上的线性插值,得到g点的像素值。
f ( e ) = ( X e − X a ) ∗ f ( b ) + ( X b − X e ) ∗ f ( a ) f(e)=(Xe-Xa)*f(b)+(Xb-Xe)*f(a) f(e)=(Xe−Xa)∗f(b)+(Xb−Xe)∗f(a)
类比得到f(f)、f(g)。
双线性插值效果较好,速度较快,会产生比最近邻更平滑的结果,但是对边缘急剧过渡图像的结果并不理想。
三线性插值
引用别人画好的图:https://blog.csdn.net/Accelerating/article/details/125949233
可以类比单次、二次插值,首先在x轴方向进行4次线性插值,得到C01、C11、C00、C10,接着在y轴进行两次插值,最后在z轴进行一次插值得到C的像素值。
三次插值速度慢。