在图像放大算法中,双线性插值简单而有效,可以让结果图像显得平滑而不是呈现锯齿状。它的原理很简单,把临近四个点的像素值与相应的贡献系数相乘后加起来就可以了。
//
bilinear interpolation
int
x1
=
((
int
)x)
%
bp.bmWidth;
int
y1
=
((
int
)y)
%
bp.bmHeight;
int
x2
=
(u1
+
1
)
%
bp.bmWidth;
int
y2
=
(v1
+
1
)
%
bp.bmHeight;
//
calculate fractional parts of u and v
float
fracx
=
x
-
floorf(x);
float
fracy
=
y
-
floorf(y);
//
calculate weight factors
float
w1
=
(
1.0f
-
fracx)
*
(
1.0f
-
fracy);
float
w2
=
fracx
*
(
1.0f
-
fracy);
float
w3
=
(
1.0f
-
fracx)
*
fracy;
float
w4
=
fracx
*
fracy;
//
get the result
return
point(x1, y1)
*
w1
+
point(x2, y1)
*
w2
+
point(x1, y2)
*
w3
+
point(x2, y2)
*
w4;
本文属Span Zhang(张友邦)原创,转载请注明出处。
中国原创分形艺术、中国原创分形软件第一站
本文详细介绍了图像放大算法中的双线性插值方法,该方法通过计算临近四个像素点的权重并加权求和来实现图像的平滑放大,避免了锯齿效应。
7140





