[컴퓨터 그래픽스] 블러링 기법

ZERO·2024년 1월 21일
0

Graphics

목록 보기
1/1
post-thumbnail

블러링이란?

블러링(bluring)이란 초점이 맞지 않은 사진처럼 영상을 부드럽게 만드는 필터링 기법이다. 스무딩(smoothing)이라고 표현하기도 한다. 대표적인 블러링 기법에는 박스 블러, 가우시안 블러가 있다.

커널이란?

커널(필터라고도 표현함)이란 주로 이미지를 변환하는데 사용되는 작은 행렬을 의미한다.

일반적으로 이미지에 커널을 적용할 때는 컨볼루션 연산을 수행한다.(아래의 사진 참고)

"출처: https://en.wikipedia.org/wiki/Kernel_(image_processing)"

"출처: https://commons.wikimedia.org/w/index.php?curid=24288958"

Separable filter란?

2차원 필터는 두 개의 1차원 필터의 외적(outer product)으로 표현할 수 있다. 이렇게 나누어 진 1차원 필터를 Separable filter라고 한다. 모든 2차원 필터가 두 개의 일차원 필터로 표현 될 수 있는 것은 아님에 주의해야한다. 외적으로 표현하지 못하는 2차원 필터는 2개의 1차원 필터로 나눌 수 없다. 아래의 사진은 Separable filter의 예이다.

"출처: https://en.wikipedia.org/wiki/Separable_filter"

이렇게 나누어진 1차원 필터를 이미지 픽셀 값에 각각 컨볼루션하면 2차원 필터를 이미지 픽셀 값에 컨볼루션 연산한 것과 동일한 결과가 나온다.

Separable filter를 쓰는 이유

일반 2D filter를 컨볼루션해서 사용하는 것보다 연산량이 적기 때문에 속도면에서 우위를 가져갈 수 있다.

예를 들어 N X N 크기의 2D 필터가 있다고 하자.

이미지 픽셀 수가 M인 경우 2D필터를 그대로 적용하려면 총 N2×MN^2 \times M번 연산을 수행해야한다.

하지만 Separable filter를 사용하는 경우 2×N×M2 \times N \times M이 된다.

필터의 크기가 커질수록 연산량의 차이는 점점 더 벌어진다는 것을 알 수 있다.

박스 블러

개념

박스 블러(Box blur)는 이미지 내 특정한 픽셀을 포함한 주변 픽셀 값들을 모두 더해서 평균을 내는 방식으로 블러를 구현한다. 아래의 사진은 Box blur 커널의 예시이다.

"출처: https://en.wikipedia.org/wiki/Kernel_(image_processing)"

구현방법

  1. 박스 블러 필터를 1차원 필터 2개로 나눈다.(Separable filter)
  2. 원본 이미지 픽셀 값에 가로 방향 필터를 적용해 컨볼루션 연산을 시행한다.
  3. 가로 방향 필터를 적용한 픽셀 값들에 세로 방향 필터를 적용해 컨볼루션 연산을 시행한다.

결과

이미지 원본 박스 블러 적용 후

가우시안 블러

개념

가우시안 블러(Gaussian Blur)는 이미지의 각 픽셀의 값을 해당 픽셀 주변의 다른 픽셀의 색상 값의 가중 평균으로 대체하여 블러를 구현하는 방법이다. 이 때 중심에 가까운 픽셀일수록 더 큰 가중치를 가진다.

"출처: https://en.wikipedia.org/wiki/Kernel_(image_processing)"

구현방법

  1. 가우시안 블러 필터를 1차원 필터 2개로 나눈다.(Separable filter)
  2. 원본 이미지 픽셀 값에 가로 방향 필터를 적용해 컨볼루션 연산을 시행한다.
  3. 가로 방향 필터를 적용한 픽셀 값들에 세로 방향 필터를 적용해 컨볼루션 연산을 시행한다.

결과

이미지 원본 가우시안 블러 적용 후

박스 블러 VS 가우시안 블러

박스 블러 적용 후 가우시안 블러 적용 후

박스 블러

  • 주변 픽셀들의 값을 평균화하기 때문에 경계가 흐려지는 효과가 강하게 나타남
  • 세부적인 텍스처 정보 손실 값이 큼
  • 계산이 간단하기 때문에 실시간 이미지 처리에 유리함.

가우시안 블러

  • 가우시안 분포를 따르는 블러링 방식이기 때문에 세부적인 텍스터 정보를 적절히 살리면서 블러 구현 가능
  • 박스블러와 달리 필터 요소값마다 적용해야 할 값이 다르기 때문에 계산이 복잡하고 시간이 박스블러에 비해 좀 더 소요됨


이 포스팅은 홍정모 연구소의 그래픽스 새싹 코스를 듣고 정리한 것입니다.

0개의 댓글