人工智能第3课
常用的插值方法-双线性插值
-
单线性插值
插值的本质:求一个虚拟点的坐标值。计算目标dst的像素值,通过dst像素点的坐标对应到原图src的坐标。
已知x0,y0,x1,y1,x,求y
单线性插值 -
双线性插值
根据单线性插值的公式,求得R1,在求得R2,。根据R1,R2求得P
因为用的是相邻的4个点,所以分母都是1。要使两个图像的几何中心重合,等式两边+0.5。
双线性差值法的计算比最邻近插值法复杂,计算量较大,但没有灰度不连续的缺点,图像看起来更光滑。
-
双线性插值代码实现
# -*- coding: utf-8 -*-
'''@Time: 2024/4/6 21:50
python 双线性插值
'''
import numpy as np
import cv2
def bilinear_interpolation(img,out_dim):
src_h,src_w,channel = img.shape
dst_h,dst_w = out_dim[1],out_dim[0]
print("原图高 宽",src_h,src_w)
print("目标图高 宽",dst_h,dst_w)
if src_h == dst_h and src_w == dst_w:
return img.copy()
dst_img = np.zeros((dst_h,dst_w,3),dtype=np.uint8)
scale_x,scale_y = float(src_w)/dst_w,float(src_h)/dst_h
for i in range(channel):
for dst_y