영상의 필터링 (image filtering)
- 영상에서 필요한 정보만 통과시키고 원치 않는 정보는 걸러내는 작업

주파수 공간에서의 필터링 (Frequency domain filtering)

- FFT(Fast Fourier Transform) : 푸리에 변환에 근거하여 근사공식을 이용한 이산 푸리에 변환(discrete transform)을 계산할 때 연산횟수를 줄일 수 있도록 고안된 알고리즘이다.
- IFFT(Inversed FFT) : 역 FFT
공간적 필터링 (Spatial domain filtering)
- 영상의 픽셀 값을 직접 이용하는 필터링 방법
- 대상 좌표의 픽셀 값과 주변 픽셀 값을 동시에 사용
- 주로 마스크(mask) 연산을 이용함
(마스크 = 커널(kernel) = 윈도우(window) = 템플릿(template))
다양한 모양과 크기의 마스크

마스크의 형태와 값에 따라 필터의 역할이 결정됨
- 영상 부드럽게 만들기
- 영상 날카롭게 만들기
- 에지(edge) 검출
- 잡음 제거
3x3 크기의 마스크를 이용한 공간적 필터링

- (1, 1) 좌표에서 필터링

- (2, 1) 좌표에서 필터링

최외곽 픽셀 처리

좌측의 ?
부분은 가운데 a
를 기준으로 좌, 우, 대각선 대칭이 되도록 채워지는 것을 확인할 수 있다.
OpenCV 필터링에서 지원하는 가장자리 픽셀 확장 방법

default는 BORDER_REFLECT101
이다.
기본적인 2D 필터링
cv2.filter2D(src, ddepth, kernel, dst=None, anchor=None, delta=None, borderType=None) -> dst
- src : 입력 영상
- ddepth : 출력 영상 데이터 타입. -1을 지정하면 src와 같은 dst 영상을 생성
- ex) cv2.CV_8U, cv2.CV_32F, cv2.CV_64F
- kernel : 필터 마스크 행렬. 실수형.
- anchor : 고정점 위치. (-1, -1)이면 필터 중앙을 고정점으로 사용
- delta : 추가적으로 더할 값
- borderType : 가장자리 픽셀 확장 방식
- dst : 출력 영상