콘텐츠로 건너뛰기

언샵 마스크의 이해

디지털 영상 처리에서 언샵마스크(UnSharp Mask)는 영상을 선명하게 만드는 기술중 하나입니다. 그런데 사진을 선명하게 만든다고 하고선 이름은 왜 언샵(UnSharp, 선명하지 않은, 흐릿한, blur)일까요? 선뜻 이해가 가지 않지만 그것은 영상을 선명하게 하기 위해서 영상을 흐리게 만들기 때문입니다. 지금부터 왜 그 방법을 설명드리도록 하겠습니다.

흐릿한 영상이라 말하는 것은 픽셀들 사이가 두리뭉실하여 구분이 명확하지 않다는 것입니다. 흐릿한 영상을 선명하게 만들려면 어떻게 해야할까요? 방법은 의외로 간단합니다. 흐릿한 영상을 더욱 흐릿하게 한 뒤에 원본 영상에서 더욱 흐릿해진 영상을 빼면 그나마 흐릿하지 않은 부분이 남게 됩니다. 그리고 이렇게 남은 부분을 원본 영상과 더해 주게 되면 원본 영상은 더욱 선명하게 됩니다.

그렇다면 어떻게 영상을 더욱 흐리게 할까요? 가장 간단한 방법은 영상의 화소 하나 하나를 주변의 화소들과 비슷한 값으로 바꿔주면 됩니다. 이렇게 화소 하나를 처리하기 위해 주변의 화소들을 이용하는 방법을 영상 처리에선 공간 컨벌루션이라고 하며 주변 화소 그룹을 커널(kerel) 이라고 합니다. 커널은 가로x세로 로 표시되는데 3×3은 가로가 3칸, 세로가 3칸인 표를 생각하면 됩니다.

a b c
d e f
g h i

예를 들어 위와 같이 3×3 커널이 있다면 중앙의 e 화소를 처리하기 위해 e 주변의 a,b,c,d,f,g,h,i 화소를 이용한다는 것입니다. 이때 주변 화소들을 얼마나 이용할 것인가를 정하는 가중치란 값을 두게 됩니다. 이 가중치는 커널의 크기와 같으며 컨벌루션 마스크(mask)라고 합니다.

간단히 커널과 마스크를 동일한 개념으로 생각하시면 이해가 쉽습니다.

공간 컨벌루션에선 마스크를 이용해 순차적으로 화소를 처리합니다. 예를 들어 e 화소의 값은 a x a의 가중치 + b x b의 가중치… 이런식으로 e를 포함한 주변의 모든 화소값과 마스크값을 곱한 값을 모두 더한 값을 가지게 됩니다.

그렇다면 3×3 커널을 이용해서 어떻게 영상을 흐리게 할까요? 3×3 커널은 총 9개의 화소값을 가집니다. 영상을 흐리게 하기위해선 주변화소값들과 비슷하게 하면 됩니다. 비슷하게 하는 것중에 제일 좋은것이 바로 평균입니다. 그래서 각각의 마스크값을 1/9로 합니다. 이렇게 하면 처리할 화소는 자신을 포함해 주변화소들의 평균값을 가지게 되는 것입니다. 그리고 모든 화소들이 순차적으로 이렇게 계산된다면 영상 전체가 흐려지게 됩니다.

실제로 훠닐 스타일픽스에서도 흐리게 필터가 이러한 마스크를 이용해 구현되었습니다.

이제 다시 언샵 마스크로 넘어가서 생각해 보면 언샵 마스크는 영상을 흐리게 하는 마스크였던 것입니다. 실제는 영상을 흐리게 한 뒤 원본 영상에서 흐리게 한 영상을 빼고 그 값을 다시 원본 영상에 더하여 영상을 선명하게 하는 것이지요.

현재 훠닐 스타일픽스를 포함하여 대부분의 영상처리 소프트웨어는 가우시안 블러란 것으로 영상을 흐리게 한답니다.

 

답글 남기기