PSNR & SSIM: 이미지 품질 평가

SSIM 시각화

개요

 컴퓨터 비전 분야 혹인 딥러닝을 이용한 이미지 복원 분야에서는 이미지의 품질을 정량적으로 평가할 수 있는 방법이 필요합니다. 본 글에서는 여러 가지 방법 중에 잘 알려진 \(PSNR\)(Peak Signal-to-Noise Ratio)와 \(SSIM\)(Structual Similarity)에 대해 설명합니다.

MSE(Mean Squared Error)

$$ MSE = {1 \over XY} \sum_{x=0}^{X-1} \sum_{y=0}^{Y-1}e(x, y)^2$$

\(PSNR\)에 \(MSE\)가 쓰이기 때문에 간단하게 설명하겠습니다. \(MSE\)는 평균 제곱 오차를 말하며 이미지 복원 분야뿐만 아니라 여러 이미지 관련 문제에서 이미지 간의 차이를 측정하기 위한 수단으로써 쓰이는 방법 중 하나입니다. 예를들어 원본 이미지와 복원 이미지가 있다면 두 이미지의 픽셀 값들의 차이에 대한 측정값을 나타냅니다.

PSNR(Peak Signal-to Noise Ratio)

$$ PSNR = 10\log{s^2 \over MSE} $$

\(PSNR\)은 신호가 가질 수 있는 최대 신호에 대한 잡음의 비를 나타내며 이미지 또는 영상 분야에서 생성 혹은 압축된 영상의 화질에 대한 손실 정보를 평가하기 위한 목적으로 주로 사용됩니다. 수식에서 \(s\)는 영상에서의 최대 값으로서 해당 채널의 최댓값에서 최솟값을 뺀 값입니다. 예를 들자면 8-bit Gray 이미지일 경우 255(255-0)가 됩니다.

단위는 데시벨(\(db\))을 사용하며 , 손실이 적을수록 높은 값을 가집니다. 무손실 영상의 경우 \(MSE\)가 0 이 되기 때문에 \(PSNR\)은 정의되지 않습니다.

SSIM(Structural Similarity Index Map)

\(SSIM\)은 수치적인 에러가 아닌 인간의 시각적 화질 차이 및 유사도를 평가하기 위해 고안된 방법입니다. 사람의 시각 시스템은 이미지의 구조 정보를 도출하는데 특화되어 있기 때문에 구조 정보의 왜곡 정도가 지각에 큰 영향을 미친다는 것이 \(SSIM\)의 핵심 가설입니다. \(SSIM\)은 원본 이미지 \(A\)와 왜곡된 이미지 \(B\)가 있다고 할 때 두 이미지의 휘도(Luminance), 대비(Contrast) 및 구조(Structure)를 비교하여 계산됩니다.

상수(\(C_1, C_2, C_3\))

$$
\begin{align}
C_1 & =\left(0.01 *L\right)^2 \\
C_2 & =\left(0.03 *L\right)^2 \\
C_3 & =C_2/2
\end{align}
$$

위 \(C_1, C_2, C_3\)는 아래에서 나올 수식에서 사용되는 값이 고정된 상수이며 \(L\)은 픽셀 값의 범위 입니다. 이 상수들은 분모가 0이 되어 분자를 0으로 나누는 경우를 방지하고자 사용됩니다. 즉, 8-bit 이미지일 경우 \(L=255\)이므로 \(C_1=6.5025,\) \(C_2=58.5225,\) \(C_3=29.26125\)을 일반적으로 사용하나 이 것이 절대적인 값은 아닙니다.

휘도(Luminance)

$$ \mu_A = {1 \over XY}\sum_{x=0}^{X-1}\sum_{y=0}^{Y-1}A_{x,y} $$

휘도는 밝기(빛)을 나타내는 양입니다. 이미지에서는 픽셀 값의 평균을 휘도(\(\mu_A\))로서 사용 합니다.

$$ l(A, B) = {2\mu_A\mu_B +C_1 \over \mu_A^2 +\mu_B^2 +C_1}$$

우선 \(C_1\)을 고려하지 않고 위의 식을 보면, 두 이미지의 휘도(\(\mu_A, \mu_B\))가 같을때 \({2\mu_A\mu_B \over \mu_A^2 +\mu_B^2}\)의 값이 \(1\)이 되고 차이가 커질때 \(0\)에 가까워 지는 것을 확인할 수 있습니다.

대비(Contrast)

$$ \sigma_A = \sqrt{{1 \over XY} \sum_{x=0}^{X-1}\sum_{y=0}^{Y-1} \left( A_{x,y} – \mu_A \right)^2} $$

대비\(\sigma_A\)는 이미지 내에서 밝기 차이의 정도를 나타냅니다. 따라서 픽셀 값 \(A_{x,y}\), 이미지의 휘도 \(\mu_A\)에 대한 표준 편차를 이용합니다.

$$ c(A, B) = {2\sigma_A\sigma_B +C_2 \over \sigma_A^2 +\sigma_B^2 +C_2}$$

두 이미지 \(A, B\)에 대한 대비 차이 \(c(A, B)\)는 휘도의 차이 \(l(A, B)\)와 같은 방식으로 계산 합니다. 따라서, 휘도 차이와 마찬가지로 대비가 차이가 없을 수록 1에 가까워 지고 차이가 클 수록 0에 가까워집니다.

구조(Structure)

$$ {A-\mu_A \over \sigma_A}, {B-\mu_B \over \sigma_B}$$

이미지의 구조는 이미지에서 휘도를 뺀 후, 대비로 나누어 정규화(Normalization)해 구해줍니다.

$$ s(A, B) = {\sigma_{A B} + C_3 \over \sigma_A \sigma_B + C_3} $$

$$ \sigma_{AB} = {1 \over XY}\sum_{x=0}^{X-1}\sum_{y=0}^{Y-1}(A_{x,y} – \mu_A)(B_{x,y} – \mu_B)$$

SSIM의 저자들의 이미지 구조간의 상관계수(Correlation)을 구하는 것과 이미지 \(A\)와 \(B\)간의 상관계수를 구하는 것이 등가라고 판단해, 이미지 \(A\) 및 \(B\)의 상관 계수를 구함으로서 두 이미지 \(A, B\)의 구조를 위와 같이 비교하였습니다.

최종 SSIM 계산

$$
\begin{matrix}
SSIM(A, B) &=& l(A, B)\cdot c(A, B) \cdot s(A, B) \\
&=& {2\mu_A\mu_B +C_1 \over \mu_A^2 +\mu_B^2 +C_1} {2\sigma_A\sigma_B +C_2 \over \sigma_A^2 +\sigma_B^2 +C_2} {\sigma_{A B} + C_3 \over \sigma_A \sigma_B + C_3} \\
&=& {(2\mu_A\mu_B + C_1)(2\sigma_{AB} + C_2) \over (\mu_A^2+\mu_B^2+C_1)(\sigma_A^2+\sigma_B^2+C_2)}
\end{matrix}
$$

최종적으로 두 이미지 \(A, B\)간의 SSIM 값은 휘도 \(l(A, B)\), 대비 \(c(A, B)\) 및 구조 \(s(A, B)\)를 이용해 위와 같이 계산할 수 있습니다.

추가로, 저자들은 SSIM을 전역적으로 계산하지 않고 지역적으로 사용하였습니다. 즉, 슬라이딩 윈도우 방식으로 윈도우간 SSIM 값의 평균을 구함으로써 최종적인 값을 얻었습니다.

SSIM은 두 이미지의 \(A, B\)간의 입력 순서를 달리해도 같은 값을 얻을 수 있어 대칭(Symmetry)성을 만족합니다. 그러나 삼각 부등식(Triangle Inequality)은 만족하지 않음으로 거리 함수로서는 사용할 수는 없습니다.

참조

https://www.mathworks.com/help/images/ref/ssim.html

https://ieeexplore.ieee.org/abstract/document/1284395?casa_token=sxOHm7zFUukAAAAA:7r-DqlCJUr5m_8CU_xNHfkB3iGZ6wzwf4T62a5Sg-k4wf5sr2WbAes0wif3Mt5-58x-4KyxWZg

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤