평균 제곱 오차에서 계산하기
허용하는 최대 표현값을 L, 대응 화소 사이의 평균 제곱 오차를 MSE라 하면 PSNR=10 log10(L²/MSE)로 계산한다. 같은 L에서 오차가 작을수록 값이 커진다. MSE가 0이면 수학적인 PSNR은 무한대다. 구현에서 이 경우 유한한 상한이나 특수값으로 처리할 수 있으므로 반환 규칙을 확인해야 한다.
두 화소의 예제
표현 범위를 0부터 1로 두고 기준값이 (0,1), 비교값이 (0,0.9)라고 하자. MSE는 (0²+0.1²)/2=0.005이고 L=1인 PSNR은 약 23.01dB다. 같은 범위에서 MSE가 4분의 1로 줄면 PSNR은 10 log10 4, 약 6.02dB 증가한다. 데시벨 차이가 정확도 퍼센트의 같은 차이를 뜻하지는 않는다.
범위와 대응을 맞추기
8비트 값을 그대로 쓰는지, 0부터 1로 정규화했는지에 맞춰 L과 오차의 단위를 함께 정해야 한다. 데이터에서 관측된 최댓값을 무조건 L로 쓰는 것은 표현 범위를 정한 평가와 다르다. 영상 크기와 화소 위치의 대응, 채널 집계 방식을 맞춰야 한다. 색 공간이나 밝기 인코딩이 다른 수치를 조건 확인 없이 직접 비교하지 않는다.
품질 해석의 한계
PSNR은 대응 화소의 제곱 오차에 기반하므로 오차가 어디에 어떤 모양으로 생겼는지 충분히 반영하지 못할 수 있다. 같은 값이어도 보이는 왜곡이 다를 수 있고 작은 위치 어긋남이 큰 오차를 만들 수도 있다. 높은 PSNR만으로 실제 세부 정보의 정확한 복원이나 의미 보존을 보장하지 않는다. 기준 영상의 신뢰성과 시각적 결과를 함께 검토한다.
관련 문서
신호 대 잡음비 / 평균 제곱 오차 / 데시벨 / 이미지 처리 / 감마 보정 / 양자화 (신호처리) / 손실 압축