필터링 함수 탐구(1) - blur()

·2023년 5월 26일
0

filter

목록 보기
1/2

필터링

필터링이란, 연산을 통해 픽셀의 값을 변경-> 이미지에 효과를 주는 것

  • 필터링 함수 네 가지
    • blur()
    • gaussianblur()
    • medianblur()
    • bilaterlFilter()

평균값 필터(blur)로 블러링
: 가까운 픽셀과 먼 픽셀 모두 같은 가중치 적용하여 평균 계산함.
멀리 있는 픽셀의 영향으로 필터 결과 퀄티리 낮아짐.

-> 가우시안 필터 사용


blur()

  • 주변 픽셀들의 평균값을 계산.
  • 기본: cv2.blur(src, ksize)
    • src: 이미지 파일
    • ksize: 커널(kernal)의 크기. 튜플 값을 가짐. (w, h) # width, height

kernal : 연산을 처리할 대상 영역 같은 것.

예를 들어, 커널의 크기를 (5,5)로 지정했다고 하자.
커널은 5x5의 행렬이고, 가운데 픽셀((3, 3)의 픽셀)을 기준으로 근처의 24개의 픽셀과 함께 연산을 수행한다.
일반적으로 커널의 크기 값은 홀수일 때 더 정확하다.
(짝수의 경우 중심 픽셀을 정확히 정할 수 없기 때문에)


참고) 가장자리의 픽셀의 경우 주변의 픽셀 수가 충분치 않다.
-> borderType 매개변수 활용.

  • 옵션: cv2.blur(src, ksize[, dst[, anchor[, borderType]]])
    • 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)

0개의 댓글