Research (연구 관련)

Bilateral Filter / Guidance Filter

홍돌 2019. 4. 18. 23:47

갑자기 머릿속에서 너는 Bilater Filter와 Guidance Filter가 각각 무엇인지, 차이가 무엇인지 설명할 수 있냐는 목소리가 들렸다.
그렇게 찾아봤었는데도, 막상 머릿속에서 다시 설명하려니 하나도 기억이 안났다. 


Bilater Filter example

Denoising을 위해 Gaussian Filter를 적용할 때, edge가 뭉개지는 문제점이 있다.

Bilateral Filter는 주변 픽셀의 intensity difference도 고려해 filter를 적용하기 때문에 Edge-Preserving 효과가 있다.

Joint Bilater FIlter. Guidance 이미지가 따로 주어지는 듯하다

Bilateral의 단점:

  • Brute-force: O(Nr^2 ) implementation (N: # of pixels in an image, r: kernel size)
  • O(N)으로 만들려는 quantization으로 인한 approximation -> quality degradation
  • Gradient Reversal

Guidance Filter는 한 픽셀에서의 필터링을 Linear regression 문제로 치환하면서, 한 픽셀에서 Bilateral이 O(r^2)이라면
integral image technique을 쓰면 Gudiance는 O(1)이라고 한다. quantization도 없고.
a가 왜 저렇게 정해지는 지 모르겠지만, 결국 a,b를 구하는 문제이다.

갓 카밍히

가장 골치였던 것은 gradient reversal이 bilateral에서 왜 일어나냐였다.
Guided Filter가 gradient를 보존하니까 그 문제가 없는 것은 알겠는데 말이다.

Gradient reversal

결국 논문에서 이유를 찾을 수 있었다. 

However, it has been noticed [12, 13, 8] that the bilateral filter may have the gradient reversal artifacts in detail decomposition and HDR compression. The reason is that when a pixel (often on an edge) has few similar pixels around it, the Gaussian weighted average is unstable.

Edge에서 아무리 bilateral하게 Gaussian을 먹인다고 하더라도, 같은 쪽에서도 비슷한 픽셀이 몇개 없다면 Gradient가 왜곡될 가능성이 있다는 얘기이다. 납득 ㅇㅇ 그리고 위의 사진과 같은 'gradient reversal'은 detail enhancement같은 기법을 시도할 때 생기는 문제로, 그냥 bilateral filter를 적용시키는 것만으로는 저렇게 확연한 문제가 생기진 않을 것이다. 사례 중 하나인 걸 모르고 어떻게 저런 reversal 이 생기지 계속 고민했다. 

detail enhancement, 즉 edeg같은 detail 정보를 두드러지게 할 때 만약 smooth한 이미지에서 이미 gradient distortion이 있었다면, 
detail을 증폭시키는 것이 distortion을 증폭시켜 저런 현상이 날 수 있다. 

Gradient reversal in 1D example

Detail Enhancement가 결국 신호의 detail만 따로 빼서 증폭시킨 다음, smoote한 output 신호(여기서는 Base Layer)에 도로 더하는 작업인데, Detail Layer가 왼쪽과 같이 이미 왜곡되어있다면, gradient가 뒤바뀌는 일도 생길 수 있는 것이다. 논문 섹션 3.4참조

참고: http://kaiminghe.com/eccv10/

 

'Research (연구 관련)' 카테고리의 다른 글

2D 이미지와 퓨리에 변환  (0) 2019.04.23
리눅스 make subdirectories  (0) 2019.04.22
리눅스 scp, find  (0) 2019.04.19
Bilateral Filter / Guidance Filter  (0) 2019.04.18
Affine Transform (아핀 변환)  (0) 2019.04.18
Procrustes Analysis  (0) 2019.04.13