4-1. 필터링 이해하기
영상 필터링 (iamge filtering)
영상에서 필요한 정보만 통과시키고 원치 않는 정보는 걸러내는 작업
주파수 영역 필터링(Frequency domain filtering)과 공간적 영역 필터링(Spatial domain filtering)으로 분류
주파수 영역 필터링: Fast Fouier Theroem을 사용하여 기존 영상을 주파수 영역으로 변환 후 필터링 하고 싶은 주파수 영역과 혼합해 역으로 공간적 영역으로 가져와 필터링 결과를 확인
공간적 영역 필터링: 마스크(mask) 연산을 이용하여 대상 좌표 및 주변 픽셀 값을 동시에 변환 하여 필터링 적용 (마스크는 커널(kernel), 윈도우, 템플릿 등으로도 불린다. Anchor는 마스크의 중심점을 뜻한다.)

마스크의 형대화 값에 따라 다양한 필터를 구현 가능: 영상 부드럽게 만들기, 날카롭게 만들기, edge 검출, 잡음 제거..
이때 마스크 연산을 Correlation (Convolution)이라 부른다. 이 때 마스크가 외각 영상 크기보다 커지는 경우가 있는데 OpenCV에서는 외각에 가상의 픽셀이 있다고 가정하고 연산을 처리한다.

기본 2D 필터링 함수: cv2.filter2D(src, ddepth, kernel, dst, anchor, delta, borderType) -> dst
src는 입력 영상, dst는 출력 영상
ddepth는 출력 영상 데이터 타입으로 -1로 설정할 경우 src와 동일한 타입의 dst 생성
kernel는 필터 마스크 행렬 (실수형), anchor는 고정점 위치, (-1,-1)이면 필터 중앙을 고정점으로 사용
delta는 추가로 더할 값, borderType는 가장자리 픽셀 확장 방식으로 방법은 아래 그림 확인

4-2. 블러링(1)
평균값 필터 (Mean Filter)
영상의 특정 좌표 값을 주변 픽셀 값들의 산술 평균으로 설정
픽셀들 간의 값 변화가 줄어들어 날카로움이 무뎌지고, 영상에 있는 잡음의 영향이 사라지는 효과를 준다.
마스크 크기가 커질수록 평군 값 필터 결과가 더욱 부드러워지지만 더 많은 연산량이 필요하다
평균값 필터링 함수: cv2.blur(src, ksize, dst, anchor, borderType) -> dst
src는 입력 영상, dst는 입력 영상과 같은 크기와 타입을 갖는 결과 영상
ksize는 평균값 필터 크기 (width, height) 형태의 튜플로 제공. ksize로 kernel를 아래와 방식으로 생성

평균값 필터의 경우 filter2D와 blur 함수로 모두 구현 가능하다. kernel 의 사이즈가 커질 수록 영상이 점점 흐려지는 것을 볼 수 있다. 하지만 깔끔하게 부드러워지는 느낌은 아닌데 이는 다음에 배우는 필터로 보완 가능하다.


4-3. 블러링(2)
가우시안 필터 (Gaussian Filter)
kernel 내 픽셀이 같은 가중치를 받아 멀리 있는 픽셀의 영향을 많이 받을 수 있는 평균값 필터와 달리 가까운 픽셀에는 높은 가중치를, 멀리 있는 픽셀에는 낮은 가중치를 사용한 평균 계산을 사용한다.
필터 이름 그대로 가우시안 함수(Gaussian function, 정규 분포)를 사용한다.
함수 아래 영역을 합치면 1이 되며 평균을 기준으로 대칭 함수임을 볼 수 있다.
2차 가우시안 필터 마스크를 사용 시 (표준 편차 = 1 기준), uint8 영상의 경우 (6σ + 1) 크기, 실수형 영상의 경우 (8σ +1) 크기를 주로 사용한다.

가우시안 필터링 함수: cv2.GaussianBlur(src, ksize, sigmaX, dst, sigmaY, borderType) -> dst
src는 입력 영상, dst는 src와 동일한 크기와 타입의 출력 영상
ksize는 가우시안 커널 크기로, 보통 (0,0)으로 세팅해 sigma 값에 의해 자동 결정되도록 한다
sigmaX는 x방향 sigma, sigmaY는 y방향 sigma로 0이면 sigmaX와 동일
borderType은 가장자리 픽셀 확장 방식으로 위의 상수 플레그 참고
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.
인증 타임
일요일이니만큼 수업 3개를 열심히 들어보았다. 포토샵에서 만져본 옵션들인데 python으로 직접 구현해보니 흥미롭다. 다음에 구현할 필터링은 어떻게 적용될지 궁금하다. 주파수 공간 필터링의 경우 python의 다른 package에 담긴 fft 함수로 구현 했던 기억이 있는데 다시 찾아 봐야할 듯 싶다.



#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online
패스트캠퍼스(FastCampus) 강의 둘러보러 가기
↓ ↓ ↓
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'남돈내배 > 2022_FastCampus_환급이벤트' 카테고리의 다른 글
| 패스트캠퍼스 챌린지 23일차 - Ch4. 필터링 (0) | 2022.02.15 |
|---|---|
| 패스트캠퍼스 챌린지 22일차 - Ch4. 필터링 (0) | 2022.02.14 |
| 패스트캠퍼스 챌린지 20일차 - Ch3. 기본적인 영상 처리 기법 (0) | 2022.02.12 |
| 패스트캠퍼스 챌린지 19일차 - Ch3. 기본적인 영상 처리 기법 (0) | 2022.02.11 |
| 패스트캠퍼스 챌린지 18일차 - Ch3. 기본적인 영상 처리 기법 (0) | 2022.02.10 |