→ 영상에 블러링(가우시안 필터) 적용하기 - cv2.GaussianBlur
평균값 필터 블러링의 단점은 필터링 대상 위치에서 가까이 있는 픽셀과 멀리 있는 픽셀이 모두 같은 가중치를 사용하여 평균을 계산합니다.
멀리 있는 픽셀의 영향을 많이 받아 필터 결과의 퀄리티가 낮아지게 됩니다.
이러한 단점을 보완하기 위해 가우시안 필터를 많이 사용합니다.
필터에 가우시안 함수를 사용하여 거리에 따른 가중치를 이용합니다.
2차원 가우시안 필터 마스크의 크기는 표준편차에 따라 자동으로 설정됩니다.
필터 마스크 크기 = (8σ + 1) 또는 (6σ + 1)
표준편차가 1일 때 가우시안 필터 마스크
→ 가우시안 필터링 함수 - cv2.GaussianBlur
OpenCV에서 가우시안 필터링 함수를 제공합니다.
[함수 설명]
cv2.GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None) -> dst
• src: 입력 영상. 각 채널 별로 처리됨.
• dst: 출력 영상. src와 같은 크기, 같은 타입.
• ksize: 가우시안 커널 크기. (0, 0)을 지정하면 sigma 값에 의해 자동 결정됨
• sigmaX: x방향 sigma.
• sigmaY: y방향 sigma. 0이면 sigmaX와 같게 설정.
• borderType: 가장자리 픽셀 확장 방식.
[예시 코드]
다양한 크기의 sigma를 사용한 가우시안 필터링 코드입니다.
src = cv2.imread('rose.bmp', cv2.IMREAD_GRAYSCALE)
cv2.imshow('src', src)
for sigma in range(1, 4) # 1~3 까지 for문 동작
dst = cv2.GaussianBlur(src, (0, 0), sigma) # (0,0)은 sigma 값에 의해 결정하기 위함
desc = 'sigma = {}'.format(sigma) # sigma value overlay
cv2.putText(dst, desc, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1.0, 255, 1, cv2.LINE_AA)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows
[결과]
표준편차 = 1
표준편차 = 2
표준편차 = 3
표준편차 값에 따라 마스크 크기와 필터 결과가 바뀌므로 목적에 맞는 표준편차를 설정하는 것이 중요합니다.
'Language - Python(Opencv)' 카테고리의 다른 글
Python Opencv - #19, 영상 크기 변환 (0) | 2021.11.23 |
---|---|
Python Opencv - #18, 영상 잡음 제거 (0) | 2021.11.23 |
Python Opencv - #16, 영상 필터링 작업 (0) | 2021.11.23 |
Python Opencv - #15, 특정 색상 추출 (trackbar 응용) (0) | 2021.11.22 |
Python Opencv - #14, histogram 기본 (0) | 2021.11.22 |