본문 바로가기
IT/영상 처리

[Python_OpenCV] Gaussian, Bilateral, Median flter

by 빨강자몽 2018. 9. 6.

노이즈의 종류


- original image

- salt-and-pepper noise : 랜덤으로 검거나 흰 점들이 마치 소금과 후추처럼 흩 뿌려져 있는 노이즈를 말한다.

- gaussian noise : 정규 분포를 이르는 노이즈를 말한다. 쉽게말하면 일반적으로(일상적으로) 생기는 잡음을 말한다.(이미지 전체에 고르게 나타나는 잡음)


originalsalt-and-pepper noiseGaussian noise


Gaussian, Bilateral filter


- 보통 가우시안 노이즈(백색 잡음)을 제거하는데 사용되어진다.

- Gaussian과 Bilateral 두 필터 모두 잡음을 제거한다.

- Gaussian과 Bilateral의 가장 큰 차이는 Bilateral의 경우 경계선이 뭉개지지 않는다.


Gaussian noiseGaussian filtering 결과

bilateral filtering 결과


Gaussian, Bilateral filter 실행 코드


 cv2.Gaussian(img,ksize,sigmaX)

- img : 이미지

- ksize : 커널의 사이즈 (홀수로 하여야 한다.)

- sigmaX : 가우시안 커널의 표준편차 (보통 0)


cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace)

- src : 이미지

- d : filtering 할 때 고려할 주변 픽셀 크기

- sigmaColor : 고려할 Color 범위 (멀면 차이가 큰 색도 고려)

- sigmaSpace : 고려할 픽셀 거리

import cv2

img = cv2.imread('img2_2.jpg')
img = cv2.resize(img, None, fx=0.2, fy=0.2, interpolation=cv2.INTER_AREA)

# GaussianBlur
dst1 = cv2.GaussianBlur(img,(7,7),0)

# Bilateral Filtering
dst2 = cv2.bilateralFilter(img,9,75,75)

cv2.imshow("original",img)
cv2.imshow("gaussian",dst1)
cv2.imshow("bilateral",dst2)
cv2.waitKey(0)


median filter

- 주변 색의 값(마스크의 값)들 중 가장 가운데에 있는 값을 이용하여 색을 보정한다.

- median filtering의 결과


median filter 실행 코드


cv2.medianBlur(src,ksize)

- src : 이미지

- ksize : 커널 사이즈(항상 홀수)


import cv2

img = cv2.imread('img1_2.jpg')
img = cv2.resize(img, None, fx=0.2, fy=0.2, interpolation=cv2.INTER_AREA)

# medianBlur
dst1 = cv2.medianBlur(img,7)

cv2.imwrite("original.jpg",img)
cv2.imwrite("median.jpg",dst1)
cv2.waitKey(0)