写一段通过插值等方法实现将压缩后的图像重新调整为与原始图像相同的尺寸,并计算psnr的代码
时间: 2024-02-15 19:02:02 浏览: 106
基于 C++构建 Qt 实现的 GDAL 与 PROJ4 的遥感图像处理软件课程设计
以下是使用Python和OpenCV库实现最近邻插值的代码示例,将压缩后的图像重新调整为与原始图像相同的尺寸,并计算PSNR:
```python
import cv2
import numpy as np
# 加载原始图像和压缩后的图像
img_original = cv2.imread('original.jpg')
img_compressed = cv2.imread('compressed.jpg')
# 获取原始图像和压缩后的图像的尺寸
h_original, w_original, _ = img_original.shape
h_compressed, w_compressed, _ = img_compressed.shape
# 计算尺寸比例
ratio_h = h_original / h_compressed
ratio_w = w_original / w_compressed
# 使用最近邻插值将压缩后的图像调整为与原始图像相同的尺寸
img_resized = cv2.resize(img_compressed, (w_original, h_original), interpolation=cv2.INTER_NEAREST)
# 计算PSNR
mse = np.mean((img_original - img_resized) ** 2)
if mse == 0:
psnr = 100
else:
psnr = 10 * np.log10((255 ** 2) / mse)
print('PSNR:', psnr)
# 显示调整后的图像
cv2.imshow('Resized Image', img_resized)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`np.mean()`函数用于计算均方误差(MSE),`np.log10()`函数用于计算PSNR,如果MSE为0,则PSNR为100。
阅读全文