JupyterLab写一个测量压缩前后两张图像的PSNR的代码
时间: 2024-02-22 11:58:46 浏览: 66
好的,下面是一个示例代码,可以测量压缩前后两张图像的PSNR值:
```python
from PIL import Image
import math
# 打开原始图像和压缩后的图像
original_image = Image.open('example.jpg').convert('YCbCr')
compressed_image = Image.open('compressed.jpg').convert('YCbCr')
# 分离Y、Cb、Cr通道
original_y, _, _ = original_image.split()
compressed_y, _, _ = compressed_image.split()
# 计算MSE
mse = 0
for i in range(original_y.size[0]):
for j in range(original_y.size[1]):
mse += (original_y.getpixel((i, j)) - compressed_y.getpixel((i, j))) ** 2
mse /= original_y.size[0] * original_y.size[1]
# 计算PSNR
if mse == 0:
psnr = float('inf')
else:
max_pixel = 255
psnr = 10 * math.log10(max_pixel ** 2 / mse)
# 输出PSNR
print(f'PSNR为{psnr:.2f}')
```
在上面的代码中,我们首先打开了原始图像和压缩后的图像,并将它们转换为YCbCr色彩空间。接着,我们分离出Y通道,然后计算MSE(均方误差)。最后,我们根据MSE计算PSNR(峰值信噪比)。你可以根据需要修改图像的路径和名称。
阅读全文