출처 : http://scosco.com.ne.kr/Stereo3DHtml/vr_0004_unsharp.htm
UnSharp Mask Filter
가우시안 필터가 이미지를 부드럽게 만드는 것이라면 UnSharp Mask Filter는 이미지를 날카롭게 만드는 방법이다. 기본적으로 UnSharp는 원본이미지와 Bluring된 원본이미지가 필요하다. 그리고 아래와 같이 연산을 하면 된다. g(x, y) = f(x, y) - f_smooth(x, y) h(x, y) = f(x, y) + g(x, y) f(x, y)는 원본 이미지의 픽셀이고, f_smooth(x, y)는 앞에서 설명한 가우시안 필터를 이용하여 생성해 낸 픽셀이다. g(x, y)는 원본 이미지와 Bluring 이미지를 뺀 값인데 결과적으로 영상의 경계선 부분만 검출된다.
![]() | ![]() |
원본 블러
경계선
결과
저 수식을 그림으로 표현하면 아래와 같다.![]()
결과적으로 Highpass 부분만 남은 (c)를 (a)에 더함으로써 경계선 부분이 선명한 이미지가 출력되었다. 수식을 보면 알겠지만 g(x, y)에 k라는 factor를 두어 영상의 경계선을 더욱더 부각시킬수도 있고 경계선을 없애버릴 수도 있다. k는 일반적으로 0.0f 이상을 사용해야 하지만 음수여도 상관은 없다. 수정된 공식은 아래와 같다. h(x, y) = f(x, y) + k * g(x, y)
'Programmer의 텅빈 공간 > OpenGL/GLSL' 카테고리의 다른 글
Edge Effect Shader (0) | 2014.06.11 |
---|---|
LoG : Laplacian of Gaussian edge detection (0) | 2014.05.29 |
Emboss shader (0) | 2014.05.21 |
Mosaic Shader (0) | 2014.05.20 |
Hertzman Painterly Rendering (0) | 2014.05.16 |