필터링이란, 연산을 통해 픽셀의 값을 변경-> 이미지에 효과를 주는 것
평균값 필터(blur)로 블러링
: 가까운 픽셀과 먼 픽셀 모두 같은 가중치 적용하여 평균 계산함.
멀리 있는 픽셀의 영향으로 필터 결과 퀄티리 낮아짐.
-> 가우시안 필터 사용
cv2.blur(src, ksize)
kernal : 연산을 처리할 대상 영역 같은 것.
예를 들어, 커널의 크기를 (5,5)로 지정했다고 하자.
커널은 5x5의 행렬이고, 가운데 픽셀((3, 3)의 픽셀)을 기준으로 근처의 24개의 픽셀과 함께 연산을 수행한다.
일반적으로 커널의 크기 값은 홀수일 때 더 정확하다.
(짝수의 경우 중심 픽셀을 정확히 정할 수 없기 때문에)
참고) 가장자리의 픽셀의 경우 주변의 픽셀 수가 충분치 않다.
->borderType
매개변수 활용.
cv2.blur(src, ksize[, dst[, anchor[, borderType]]])
import cv2
img = cv2.imread('Blur/Lenna.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 그레이스케일 변환
#cv2.imshow('img', img)
cv2.imshow('gray', gray) # 변환된 이미지 show
blur1 = cv2.blur(gray, (1,1)) # 커널의 크기 (1, 1)
blur3 = cv2.blur(gray, (3,3)) # 커널의 크기 (3, 3)
blur5 = cv2.blur(gray, (5,5)) # 커널의 크기 (5, 5)
cv2.imshow('blur1', blur1)
cv2.imshow('blur3', blur3)
cv2.imshow('blur5', blur5)
cv2.waitKey(0)
cv2.destroyAllWindows()
원본(그레이스케일)
ksize=(1,1)
ksize=(3,3)
ksize=(5,5)