가우시안 필터 : 가우시안 스무딩(Gaussian smoothing) 빠르게 배우기
Insight with Gaussian smoothing
가우시안 필터 빠르게 실행하기.
Gaussian Filter
가우시안필터의 특징은 i, j = (0, 0)일 때 가장 큰 값을 갖고 원점에서 멀어질 수록 점점 함수값이 작아진다.
Gaussian Smoothing
이를 사용해서 가우시안 필터를 이미지에 컨볼루션을 적용해주면 필터링이 가능해지는데 식은 다음과 같다.
1.
2. 식을 분리할 수 있다.
2차원 필터보다 빠른 1차원 필터
- 2차원 필터는 참으로 느리다.
1번 식에서 사용하는 필터는 2차원 필터로 한번 컨볼루션을 하는데 총 O(n x m)의 복잡도가 필요하다. 컨볼루션이 항상 그런것처럼 당연하다고 여길 수 있는데 재미있는 건 계산을 훨씬 더 줄일 수 있다는 것이다. 이미지의 사이즈가 PxQ 이고 필터의 사이즈가 m, n라고 해보자. 1번 과정은 약 PQmn의 시간이 필요할 거다.
1차원 수평 필터는 행에 따라서 값이 달라질 필요가 없다는 사실을 기억하자.
2번 식을 살펴보면 이고 이는 다음과 같은 1차원 필터이다. 이 1차원 수평 필터를 적용해서 계산한 후에 시그마로 합쳐주면 하나의 스칼라 값이 나온다. PQ의 이미지 사이즈에 1차원 가우시안 필터와 컨볼루션을 계산하는데 드는 시간은 PQn이 들 것이다. 1차원 수평 필터의 값은 행에 따라서 변하지 않기 때문에 우리는 재 계산할 필요없이 PxQ개의 값들을 한 번에 1차원 수직 필터에 적용할 수 있다. 이 때 약 PQm의 시간이 소요됨으로 PQ(m + n)이 되어 성능 향상을 볼 수 있다.
댓글
댓글 쓰기