Python 实现的最近邻插值与 线性插值
- linear_interpolate
- nearest_interpolate
#!/usr/bin/python
def linear_interpolate(pre_pt, post_pt, cur_x):
""" 线性插值 """
ratio = (cur_x - pre_pt[0]) / (post_pt[0] - pre_pt[0])
cur_y = ratio * (post_pt[1] - pre_pt[1]) + pre_pt[1]
return cur_y
def nearest_interpolate(pre_pt, post_pt, cur_x):
""" 最近邻插值 """
ratio = (cur_x - pre_pt[0]) / (post_pt[0] - pre_pt[0])
if ratio >= 0.5:
cur_y = post_pt[1]
else:
cur_y = pre_pt[1]
return cur_y
if __name__ == '__main__':
pre_pt = [1.0, 1.0]
post_pt = [5.0, 5.0]
cur_x = 3.0
cur_y = linear_interpolate(pre_pt, post_pt, cur_x)
print(r'linear interpolate {}'.format(cur_y))
cur_y = nearest_interpolate(pre_pt, post_pt, cur_x)
print(r'nearest interpolate {}'.format(cur_y))
输出的结果:
linear interpolate 3.0
nearest interpolate 5.0