Расчёт PSNR изображений Python
Как я могу расчитать PSNR для изображений в Python, представленных в следующем виде:
container = Image.open(container_path, 'r')
container_pixels_array = np.array(list(container.getdata()))
img = Image.open(image_path, 'r')
img_pixels_array = np.array(list(img.getdata()))
width, height = container.size
Может, есть специальные модули, или придётся писать функция вручную?
Ответы (1 шт):
Автор решения: lian
→ Ссылка
Для начала создаём массивы пикселей для начального и выходного изображений, затем производим расчёт по формуле:
container = Image.open(container_path, 'r')
container_pixels_array = np.array(list(container.getdata()))
width, height = container.size
container_pixels_array = container_pixels_array.reshape(height, width, 3)
img = Image.open(image_path, 'r')
img_pixels_array = np.array(list(img.getdata()))
img_pixels_array = img_pixels_array.reshape(height, width, 3)
mse = np.mean((container_pixels_array - img_pixels_array) ** 2)
if mse == 0:
print(100)
else:
max_pixel_val = 255.0
psnr = 20 * log10(max_pixel_val / sqrt(mse))
print(psnr)