双线性插值python代码
时间: 2024-03-16 08:40:24 浏览: 123
双线性插值是一种常用的图像处理技术用于在已知的四个点的灰度值情况下,估计两个点之间的灰度值。下面是一个简单的双线性插值的Python代码示例:
```python
import numpy as np
def bilinear_interpolation(image, x, y):
height, width = image.shape
x1 = int(x)
y1 = int(y)
x2 = x1 + 1
y2 = y1 + 1
if x2 >= width:
x2 = width - 1
if y2 >= height:
y2 = height - 1
q11 = image[y1, x1]
q21 = image[y1, x2]
q12 = image[y2, x1]
q22 = image[y2, x2]
fxy = (q11 * (x2 - x) * (y2 - y) +
q21 * (x - x1) * (y2 - y) +
q12 * (x2 - x) * (y - y1) +
q22 * (x - x1) * (y - y1))
return fxy
# 示例用法
image = np.array([[10, 20, 30],
[40, 50, 60],
[70, 80, 90]])
x = 1.5
y = 1.5
result = bilinear_interpolation(image, x, y)
print(result)
```
这段代码实现了一个`bilinear_interpolation`函数,该函数接受一个二维数组作为输入图像,以及要进行插值的坐标`(x, y)`。函数首先根据坐标找到四个最近的像素点`(x1, y1)`、`(x2, y1)`、`(x1, y2)`、`(x2, y2)`,然后根据双线性插值公式计算出目标点的灰度值`fxy`,最后返回该值。
在示例用法中,我们创建了一个3x3的图像数组,并指定了要进行插值的坐标`(1.5, 1.5)`。运行代码后,将输出插值结果。
阅读全文