不同像素格式的两张图片之间不能直接计算 PSNR 分数,需要先将它们转换为相同的像素格式。下面是使用 Python Pillow 库进行像素格式转换的示例代码:
from PIL import Image
# 加载两张图片
img1 = Image.open('image1.png').convert('RGB')
img2 = Image.open('image2.jpg').convert('RGB')
# 将图片转换为相同的像素格式
if img1.mode != img2.mode:
img2 = img2.convert(img1.mode)
# 计算 PSNR 分数
mse = calculate_mse(img1, img2)
psnr = calculate_psnr(mse)
# 计算 MSE
def calculate_mse(img1, img2):
mse = 0
width, height = img1.size
for x in range(width):
for y in range(height):
r1, g1, b1 = img1.getpixel((x, y))
r2, g2, b2 = img2.getpixel((x, y))
mse += (r1 - r2) ** 2
mse += (g1 - g2) ** 2
mse += (b1 - b2) ** 2
mse /= (width * height * 3)
return mse
# 计算 PSNR 分数
def calculate_psnr(mse):
# 计算最大可能的像素值
max_pixel_value = 255
# 计算 PSNR 分数
return 20 * math.log10(max_pixel_value) - 10 * math.log10(mse)
注意:这个示例代码只适用于 RGB 格式的图片,如需处理其他格式的图片需要修改相关代码。
上一篇:不同像素格式的金属纹理之间的复制
下一篇:不同像素宽度的CSS查询未被应用