2022.05.16 금일은 블러링 ( 평균값 필터 ) 관한 강의였다.
평균값 필터란 ?
- 영상의 특정 좌표값을 주변 픽셀 값들의 산술 평균으로 설정하는 것
- 픽셀들 간의 그레이스케일 값 변화가 줄어들어 날카로운 에지가 무뎌지고,
영상에 있는 잡음의 영향이 사라지는 효과가 있다.
위와 같이 자기 자신을 포함해 주변부의 픽셀의 개수를 나누어 필터링 해주는 것.
실제로 왼쪽 원본 영상보다 오른쪽 3x3 , 5x5크기의 마스크로 평균값 필터를 적용한 영상들이 더욱 부드러워지는 것을
볼 수 있다.
이렇게 필터 결과는 부드러워질 수 있지만 더 많은 연산량이 필요하기 때문에 시간이 더 소요될 수 있다.
kernel 의 변수에 np.array ( [[1/9, 1/9, 1/9],
[1/9, 1/9, 1/9],
[1/9, 1/9, 1/9]] , dtype = np.float32 ) 를 정의해준 뒤
* kernel에 작은 행렬은 위와 같이 일일히 입력해줄 수 있지만 Mask의 크기가 커지게 되면
일일히 입력해주기 힘들기 때문에 행렬 생성 함수 중
kernel = np.ones( (3,3), dtype = np.float ) / 9. 함수를 사용하여 Mask를 쉽게 만들어 줄 수도 있다.
전일 배웠던 cv2.filter2D 함수를 사용해 필터링해준다.
cv2.filter2D ( src, -1 , kernel ) 입력영상과 출력 영상의 Type을 맞추기 위해서 -1을 입력하여
필터를 해줄 수 있다.
OpenCV에서는 영상처리에서 많이 사용되고 있는 필터는 따로 함수로 빼놓았기 때문에위 블러링 필터도 filter2D함수를 사용하지 않고 cv2.blur 함수를 사용하여 필터링을 진행할 수 있다.
cv2.blur ( src, ksize, dst, anchor, borderType )
ksize ( kernel size ) : 평균값 필터 크기. ( width , height ) 형태의 튜플
결국 위 함수는 아래 이미지와 같은 연산을 한다고 볼 수 있다.
* 평균값 필터 ( Mean Filter ) 는 위 영상 찍는 사람에서의 필터링 결과 영상에서 볼 수 있듯이
편하기는 하지만 영상의 복잡한 부분이 조금 부자연스러운 형태의 필터링 영상을 얻을 수 있는데
이는 다음에 배울 가우시안 필터를 사용하면 조금 더 자연스러운 형태의 필터링 영상을 얻을 수 있다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'Program > OPEN_CV' 카테고리의 다른 글
[Open CV] 필터링 _ 잡음제거 _ 미디언 필터 (0) | 2022.05.18 |
---|---|
[Open CV] 필터링 _ 블러링 _ 가우시안 필터 (0) | 2022.05.17 |
[Open CV] 필터링 _ 필터링 이해하기 (0) | 2022.05.15 |
[Open CV] 기본적인 영상처리 기법 _ 실전코딩 ( 크로마키 합성 ) (0) | 2022.05.14 |
[Open CV] 기본적인 영상처리 기법 _ 히스토그램 역투영 (0) | 2022.05.13 |