双线性插值实现Python图像增强
时间: 2023-11-05 15:57:27 浏览: 115
python实现图像缩放算法(最近邻插值、双线性插值、双三次插值)
双线性插值是一种常用的图像增强方法,通过对图像进行插值计算,可以增加图像的分辨率和细节。下面是实现双线性插值的Python代码:
```python
from PIL import Image
import numpy as np
import math
def BiLinear_interpolation(img, dstH, dstW):
scrH, scrW, _ = img.shape
img = np.pad(img, ((0,1), (0,1), (0,0)), 'constant')
retimg = np.zeros((dstH, dstW, 3), dtype=np.uint8)
for i in range(dstH):
for j in range(dstW):
scrx = (i + 1) * (scrH / dstH) - 1
scry = (j + 1) * (scrW / dstW) - 1
x = math.floor(scrx)
y = math.floor(scry)
u = scrx - x
v = scry - y
retimg[i, j] = (1-u) * (1-v) * img[x, y] + \
u * (1-v) * img[x+1, y] + \
(1-u) * v * img[x, y+1] + \
u * v * img[x+1, y+1]
return retimg
im_path = 'paojie.jpg'
image = np.array(Image.open(im_path))
image2 = BiLinear_interpolation(image, image.shape[0]*2, image.shape[1]*2)
image2 = Image.fromarray(image2.astype('uint8')).convert('RGB')
image2.save('out.png')
```
阅读全文