TheAlgorithms-Python

Форк
0
/
peak_signal_to_noise_ratio.py 
46 строк · 1.3 Кб
1
"""
2
Peak signal-to-noise ratio - PSNR
3
    https://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio
4
Source:
5
https://tutorials.techonical.com/how-to-calculate-psnr-value-of-two-images-using-python
6
"""
7

8
import math
9
import os
10

11
import cv2
12
import numpy as np
13

14
PIXEL_MAX = 255.0
15

16

17
def peak_signal_to_noise_ratio(original: float, contrast: float) -> float:
18
    mse = np.mean((original - contrast) ** 2)
19
    if mse == 0:
20
        return 100
21

22
    return 20 * math.log10(PIXEL_MAX / math.sqrt(mse))
23

24

25
def main() -> None:
26
    dir_path = os.path.dirname(os.path.realpath(__file__))
27
    # Loading images (original image and compressed image)
28
    original = cv2.imread(os.path.join(dir_path, "image_data/original_image.png"))
29
    contrast = cv2.imread(os.path.join(dir_path, "image_data/compressed_image.png"), 1)
30

31
    original2 = cv2.imread(os.path.join(dir_path, "image_data/PSNR-example-base.png"))
32
    contrast2 = cv2.imread(
33
        os.path.join(dir_path, "image_data/PSNR-example-comp-10.jpg"), 1
34
    )
35

36
    # Value expected: 29.73dB
37
    print("-- First Test --")
38
    print(f"PSNR value is {peak_signal_to_noise_ratio(original, contrast)} dB")
39

40
    # # Value expected: 31.53dB (Wikipedia Example)
41
    print("\n-- Second Test --")
42
    print(f"PSNR value is {peak_signal_to_noise_ratio(original2, contrast2)} dB")
43

44

45
if __name__ == "__main__":
46
    main()
47

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.