Python/파이썬 OpenCV 공부

[파이썬 OpenCV] 영상에 블러링(평균값 필터) 적용하기 - cv2.blur

AI 꿈나무 2020. 9. 30. 18:43
반응형

황선규 박사님의 <OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝>, OpenCV 강의를 공부한 내용을 정리했습니다.

 


블러링(평균값 필터) 적용하기 - cv2.blur

 평균 값 필터(Mean filter)는 영상의 특정 좌표 값을 주변 픽셀 값들의 산술 평균으로 설정하는 방법입니다.

 

 픽셀들 간의 그레이스케일 값 변화가 줄어들어 날카로운 에지가 무뎌지고, 영상에 있는 잡음의 영향이 사라지는 효과가 있습니다.

 

 

 마스크 크기가 커질수록 평균 값 필터 결과가 더욱 부드러워 집니다. 하지만 더 많은 연산량이 필요하게 됩니다.

 

 실제 영상에 평균 값 필터를 적용한 결과

 

 

1. OpenCV로 영상에 평균값 필터링 적용하기 - cv2.blur

 OpenCV에서는 cv2.blur 함수로 블러링기능을 제공하고 있습니다.

 

[함수 설명]

 

cv2.blur(src, ksize, dst=None, anchor=None, borderType=None) -> dst

• src: 입력 영상
• ksize: 평균값 필터 크기. (width, height) 형태의 튜플.
• dst: 결과 영상. 입력 영상과 같은 크기 & 같은 타입.

[예제 코드]

 

scr = cv2.imread('rose.bmp', cv2.IMREAD_GRAYSCALE)

cv2.imshow('src', src)

# 다양한 크기의 커널을 사용한 평균값 필터링 예제
for ksize in (3, 5, 7):
    dst = cv2.blur(src, (kisze, ksize))
    
    desc = 'Mean : {}x{}'.format(ksize, ksize)
    cv2.putText(dst, desc, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1.0, 255, 1, cv2.LINE_AA)
    
    cv2.imshow('dst', dst)
    cv2.waitKey()
    
cv2.destroyAllWindowns()

 

[결과]

 

 

 

 

 

 이처럼 마스크 행렬 크기가 커지면 필터 결과가 더욱 부드러워집니다.

 

반응형