图像插值算法包括向上插值和向下插值,向上插值就是对图像进行放大,向下插值就是对图像进行缩小,插值算法在图像预处理过程中经常被使用,通过插值算法,可以将图像尺寸变换为任意尺寸,下面以举例子的方式来说明两种常见的插值算法:
假设图像原始尺寸为wi,hi,缩放后的图像尺寸为wo, ho,对于缩放后图像中任意坐标(i, j),该位置处的像素值的计算方法如下:
最近邻插值算法
对于坐标i, 对应于原图像的坐标为
x=(int)(i/ho∗hi+0.5)
x
=
(
i
n
t
)
(
i
/
h
o
∗
h
i
+
0.5
)
对于坐标j, 对应于原图像的坐标为
y=(int)(j/wo∗wi+0.5)
y
=
(
i
n
t
)
(
j
/
w
o
∗
w
i
+
0.5
)
所以,缩放后图像(i, j)处的像素值等于原始图像的(x, y)处的像素值,即:
F(i,j)=F(x,y)
F
(
i
,
j
)
=
F
(
x
,
y
)
双线性插值算法
对于坐标i,对应于原图像的坐标为
x=i/ho∗hi
x
=
i
/
h
o
∗
h
i
对于坐标j,对应于原图像的坐标为
y=j/wo/wi
y
=
j
/
w
o
/
w
i
假设(x,y)的坐标为(100.21, 200.65),则
F(100,200.65)=(1−0.65)∗F(100,200)+0.65∗F(100,201)
F
(
100
,
200.65
)
=
(
1
−
0.65
)
∗
F
(
100
,
200
)
+
0.65
∗
F
(
100
,
201
)
F(101,200.65)=(1−0.65)∗F(101,200)+0.65∗F(101,201)
F
(
101
,
200.65
)
=
(
1
−
0.65
)
∗
F
(
101
,
200
)
+
0.65
∗
F
(
101
,
201
)
F(100.21,200.65)=(1−0.21)∗F(100,200.65)+0.21∗F(101,200.65)
F
(
100.21
,
200.65
)
=
(
1
−
0.21
)
∗
F
(
100
,
200.65
)
+
0.21
∗
F
(
101
,
200.65
)
从而可以计算缩放后图像中任意坐标(i,j)处的像素值