최근에 이미지에 정규분포 노이즈를 더하는 작업을 반복적으로 수행할 일이 있었다. 이때 같은 종류의 노이즈를 더했음에도 불구하고 그 결과가 다르게 나타난 경우가 있었다.

원인은 그레이스케일과 노이즈 적용 순서였다. 내가 다룬 이미지는 흑백 이미지지만 원본 이미지는 RGB 이미지인 CelebA 데이터셋이었다. 한 곳에서는 컬러 이미지를 흑백 이미지로 변환한 다음 노이즈를 적용하였다. 반면 다른 한 곳에서는 우선 컬러 이미지에 노이즈를 적용해서 파일로 저장한 다음, 이를 흑백 이미지로 불러와서 사용하였다. 두 방식을 비교해보면, 그레이스케일을 먼저 적용하고 후에 노이즈를 적용하였을 때의 노이즈 효과가 더 큼을 알 수 있다.

grayscale -> noise noise -> grayscale

CelebA 데이터셋의 이미지에 각각 그레이스케일 적용 후 노이즈를 적용한 결과와, 노이즈 적용 후 그레이스케일을 적용한 결과이다. 노이즈의 효과가 전자에서 더 강하게 나타남을 알 수 있다.

언뜻 생각하면 두 연산의 순서가 중요하지 않을 것 같지만, 확률분포의 합의 특성에 대해 생각해 보면 그렇지 않음을 알 수 있다. RGB 이미지에 노이즈를 더하는 것은 각 채널에 노이즈를 더하는 것과 같다. 그레이스케일은 각 채널에 특정 가중치를 곱해 하나의 흑백 채널로 만드는 것이다. 여기서 가중치의 합은 1이다. 따라서 흑백 채널에 적용된 노이즈는 각 채널의 노이즈에 가중치를 곱해 더한 것과 같다. 각 채널의 노이즈는 정규분포이며 서로 독립이므로, 이들의 가중합인 흑백 채널의 노이즈 역시 정규분포이고 분산은 원래 노이즈의 분산에 가중치 제곱의 합을 곱한 것이다. 그러나 이 값은 $1$보다 반드시 작으므로 흑백 채널 노이즈의 분산은 원래의 분산보다 항상 작다. 따라서 노이즈의 효과가 흑백 이미지로 전환한 후 노이즈를 적용하는 것보다 더 약한 것이다.

위의 내용을 조금 더 상세히 서술할 것이다. 흑백 이미지 $Gray$는

\[Gray = r R + g G + b B\]

로 계산된다. 여기서 각 $R$, $G$, $B$는 RGB 이미지의 각 채널이고 $r$, $g$, $b$는 각각의 가중치이다. 가중치의 표준값은 $r = 0.299, g = 0.587, b = 0.114$로 인간의 시각 특성을 반영한 값이다.

이제 $X_r, X_g, X_b$를 각 RGB 채널에 적용되는 정규분포 노이즈라고 하자. 평균은 $0$이고 분산은 $\sigma^2$이다.

\[X_r, X_g, X_b \sim \mathcal{N}(0, \sigma^2)\]

각 채널에 노이즈를 적용한 결과를 $\tilde R$, $\tilde G$, $\tilde B$라고 하자. 그러면

\[\tilde R = R + X_r, \; \tilde G = G + X_g, \; \tilde B = B + X_b\]

이다. 이제 $X$를 흑백 이미지의 최종 노이즈라고 하자. $X$는 노이즈가 적용된 흑백 이미지에서 원본 흑백 이미지를 뺀 값이므로

\[\begin{align*} X &= (r \tilde R + g \tilde G + b \tilde B) - (r R + g G + b B) \\ &= r X_r + g X_g + b X_b \end{align*}\]

이다. $X_r$, $X_g$, $X_b$가 서로 독립인 정규분포이므로, 독립인 정규분포의 특성에 의해

\[X \sim \mathcal{N} \left( 0, \; \sigma^2(r^2 + g^2 + b^2) \right)\]

이 성립한다. 앞에서 말한 표준 가중치를 대입하여 $X$의 분산을 계산하면 약 $ 0.447 \sigma^2 $이다. 원래의 분산인 $\sigma^2$보다 $0.447$배 작아진 것이다. 분산이 작다는 것은 곧 노이즈의 효과가 작다는 것이다(분산이 클수록 $0$에서 멀리 떨어진 값이 샘플링될 확률이 높기 때문).

만약 최종 흑백 이미지의 노이즈의 분산을 $\sigma^2$로 만들고 싶다면 RGB 이미지에 적용되는 노이즈의 분산을 $\sigma^2 / 0.447$로 설정하면 된다.

Leave a comment