Computer Vision/opencv(python)

[26] 6) 잡음제거 - 양방향 필터

jwjwvison 2021. 3. 19. 16:55
  • 가우시안 잡음 제거에는 가우시안 필터가 효과적

 

  • 양방향 필터 (Bilateral filter)
    • 에지 보전 잡음 제거 필터 (edge-preserving noise removal filter) 의 하나
    • 평균 값 필터 또는 가우시안 필터는 에지 부근에서도 픽셀 값을 평탄하게 만드는 단점이 있음
    • 기준 픽셀과 아웃 픽셀과의 거리, 그리고 픽셀 값의 차이를 함께 고려하여 블러링 정도를 조절

 

 

  • 양방향 필터링 함수
cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace,dst=None,borderType=None) -> dst

 • src : 입력 영상 . 8 비트 또는 실수형 , 1 채널 또는 3 채널
 • d: 필터링에 사용될 이웃 픽셀의 거리 (지름). 음수 (-1) 를 입력하면 sigmaSpace 값에 의해 자동 결정됨
 • sigmaColor : 색 공간에서 필터의 표준 편차
 • sigmaSpace : 좌표 공간에서 필터의 표준 편차
 • dst : 출력 영상 . src 와 같은 크기 , 같은 타입
 • borderType: 가장자리 픽셀 처리 방식

 

  • 양방향 필터링 예제
import sys
import numpy as np
import cv2

src = cv2.imread('lenna.bmp')

if src is None:
    print('Image load failed!')
    sys.exit()

dst = cv2.bilateralFilter(src, -1, 10, 5)
#세번째 인자가 색 공간에서 필터의 표준편차인데 10이라고 하면 
# 10 언저리의 차이나는 픽셀들은 비슷한 색으로 생각하고 
# 10보다 많이 크면 다른 색으로 판단해 그 부분에 엣지가 있다고 판단한다


cv2.imshow('src', src)
cv2.imshow('dst', dst)
cv2.waitKey()

cv2.destroyAllWindows()

#가우시안 함수가 모든 픽셀마다 다른형태의 필터를 만들어야해서 시간이 오래 걸린다