본문 바로가기
그래픽스ㆍDirectX

[그래픽스 새싹코스] Separable Gaussian blur

by imagineer_jinny 2022. 9. 19.

본 내용은 <그래픽스 새싹코스 - 홍정모> 강의를 토대로 작성하였습니다. honglab에서 강의를 구매하실 수 있습니다.

 

 

 

박스 블러 vs 가우시안 블러

출처: 홍정모 그래픽스

 

Kernel

 

Convolution

- Kernel을 이미지의 모든 픽셀에 적용을 시키는 과정

 

 

 

컴퓨터 그래픽스에서 Gaussian Blur를 할 때는 Seperable Convolution을 사용한다.

 

Gaussian Blur 

- 박스 블러 + weights

- 이미지에 Gaussian 필터를 적용하여 흐림 효과를 생성

- 박스 블러 구현시 자기 자신을 포함해서 이웃 픽셀들의 색깔 값들을 동등하게 평균을 냈음

- 가우시안 블러는 가우시안 함수를 사용

- 모든 픽셀들을 동등하게 평균을 내지 않고 자기 자신은 가중치가 높고 멀어질수록 가중치가 낮아짐

- 따라서 멀리 있는 픽셀들은 가중치가 줄어듦

 

 

 

- 부드럽다 == 주변과 차이가 적다

- 가운데 픽셀 값을 주변 픽셀 값과 비교했을 때 부드럽게 만들려면? 평균을 내준다

- Gaussian 함수 사용 : 픽셀과의 거리에 따라 가중치를 할당하는 함수로,

중심에 가까운 픽셀에는 더 큰 가중치를 부여하고, 멀리 있는 픽셀에는 작은 가중치를 부여

 

 

Separable Convolution

Seperable : 분리를 한다!

어떻게 분리를 할까? 왜 분리를 할까?

 

어떻게?

Gaussian 필터를 수평 및 수직방향으로 적용즉, 2차원 Gaussian 필터를 1차원으로 분리하여 적용함

 

- 원래는 주변의 픽셀들을 전부 찾아서 평균을 내면 좋겠지만 그렇게 하면 연산량이 많아지기 때문에 

   1) Seperable Convolution에서는 먼저 1차원 커널을 사용함

   2) x 방향으로 결과를 한번 낸 후 이 결과를 가지고 다시 세로 방향으로 1차원 Convolution을 한번 더 적용함

 

출처: 홍정모 그래픽스

 

Separable Gaussian blur 장점

계산량이 줄어들어 속도가 향상된다

2차원 가우시안 필터를 직접 적용하는 것보다 1차원 필터를 두번 적용하는 것이 계산적으로 더 효율적

 

왜 효율적? 계산량 차이!

 

 

 

박스 블러 결과값(오른쪽)

가로방향으로만 적용된 이미지/ 세로 방향까지 모두 적용한 이미지

 

 

 

블룸(Bloom) 효과

출처: 홍정모 그래픽스

블룸 효과 만들기

1. 이미지의 모든 픽셀에 대해 밝은 픽셀은 그대로 두고 어두운 픽셀은 아예 까맣게 만드는 것

   - 어떤 픽셀의 색이 밝은지 어두운지 기준이 필요

   - 1) 픽셀 밝기 계산

     2) 픽셀의 밝기가 기준이 되는 인수로 넣어준 값(th) 보다 작은 픽셀들은 모두 검은색(0,0,0)으로 바꿈

     * 픽셀의 밝기를 결정할 때 보편적으로  Relative Luminance를 사용

        Relative Luminance Y = 0.2126*R + 0.7152*G +0.8722*

        밝기라는 것은 Red, Green, Blue를 섞은 것인데 가중치가 다름

        과학적으로 사람이 어떤 색을 봤을 때 녹색 성분이 더 강하면 밝다라고 인식한다고 함

        반면 파란색 성분은 밝기에 주는 영향이 아주 작음

     3) 밝은 부분만 Blur

     4) 밝은 부분만 Blur한 것과 원본 이미지를 더하기 (밝은 부분 Blur에 weight 곱해서 강도 조절)

     

 

2. 밝은 부분만 blur 해주기

 

 

강의내용/이미지 출처: honglab

 

참고

Kernel (image processing) - Wikipedia

An Introduction to Separable Convolutions - Analytics Vidhya

A Basic Introduction to Separable Convolutions | by Chi-Feng Wang | Towards Data Science

Separable filter - Wikipedia

6 basic things to know about Convolution | by Madhushree Basavarajaiah | Medium

File:2D Convolution Animation.gif - Wikimedia CommonsRelative luminance - Wikipedia

Relative luminance - Wikipedia

 

댓글