대학원 일기

Guided Filtering 본문

Image processing/OpenCV

Guided Filtering

대학원생(노예) 2022. 3. 26. 20:48

Guided Filtering

Guided Filtering은 Edge Aware Image Filtering으로 이미 알고 있는 영상을 바탕으로 input되는 영상을 부드럽게 만들어준다. 

 

Guided Filter

  Guided Filter에서 필요한 파라미터(parameter)는 p(input image), I(Guide image), r(kernel size), eps(strength)가 필요하다. 

  • p: input image로 noise가 있는 image
  • I: Guide image로 p와 같은 깔끔한 영상
  • r: blurring 할 때의 커널 사이즈(r×r)
  • eps: regularization term의 strength 조절

 

Guided Filter 방식

  Guided Filter는 부드럽게 만들 영상인 p를 Guide 영상인 I를 통해 서로 같은 edge 정보로 output 영상인 q를 얻는다. 즉, I에 있는 edge 정보를 기반으로 p에 있는 noise를 제거한다.

  Guided Filter의 핵심은 Guided Patch Ilinear transformation(y=ax+b)을 적용하여 output patch q를 얻는 것이다.

 

q=a×I+b

 

  위 식에서 a와 b는 input image와 같은 edge를 공유하는 guided image를 통해 쉽게 정의할 수 있다.

 

  Guided Filter의 자세한 연산과정은 아래 링크를 참고하면 된다.

https://velog.io/@claude_ssim/%EA%B3%84%EC%82%B0%EC%82%AC%EC%A7%84%ED%95%99-Edge-Aware-Image-Filtering-Guided-Filtering

 

[계산사진학] Edge Aware Image Filtering - Guided Filtering

Edge aware filter 중 가장 대표적인 bilateral filter를 알아보았다. 이번에는 다른 방법인 guided image filtering에 대해서 알아보려고 한다. Guided filter는 마찬가지로 edge aware filter이며 bilate

velog.io

 

Guided Filter Code

  Guided Filter 코드는 위 pseudo code를 바탕으로 python으로 작성했다. (r = 60, eps = 0.0001)

def Guidedfilter(image, p, r, eps): # Haze image(Guide, I), transmission(input), kernel size, strength
    blur_factor = (r, r)
    # cv2.blur(src, kernel size)
    mean_I = cv2.blur(image, blur_factor) # I blurring
    mean_p = cv2.blur(p, blur_factor) # p blurring
    corr_I = cv2.blur(image*image, blur_factor) # I * I blurring
    corr_Ip = cv2.blur(image*p, blur_factor) # I * p blurring
    
    var_I = corr_I - mean_I * mean_I # variance
    cov_Ip = corr_Ip - mean_I * mean_p # covariance

    a = cov_Ip / (var_I + eps)
    b = mean_p - a * mean_I

    mean_a = cv2.blur(a, blur_factor)
    mean_b = cv2.blur(b, blur_factor)

    q = mean_a * image + mean_b # linear transformation: q = a*I + b 
    return q

 

Result - 안개 제거(Dark Channel Prior)

 

원본 이미지

-----dark channel 연산 후-----

<Guided Filter 적용 전>
<Guided Filter 적용 후>

Dehaze image

 

 

Reference

https://velog.io/@claude_ssim/%EA%B3%84%EC%82%B0%EC%82%AC%EC%A7%84%ED%95%99-Edge-Aware-Image-Filtering-Guided-Filtering