영상의 필터링이란?
- 영상에서 필요한 정보만 통과시키고 원치 않는 정보는 걸러내는 작업이다.
영상처리에서 필터링은 2가지 방법이 존재한다.
- 주파수 공간에서의 필터링 ( Frequency domain filtering )
복잡한 수학적인 이론에 대한 이해가 필요한데 일반적인 영상을 주파수 공간으로 변형 ( 이동 ) 한 뒤
저주파성분 ( 부드러운 성분 ) 과 고주파성분 ( 픽셀값이 급격히 자주 바뀌는 성분 )
을 제외한 중간성분만을 통과시키는 필터링 기법이다.
- 공간적 필터링 ( Spatial domain filtering )
영상의 픽셀 값을 직접 이용 ( 변형 ) 하는 필터링 방법이다.
OpenCV에서는 기본적으로 공간적 필터링을 주로 사용하게 되는데 경우에 따라
영상의 사이즈나 사용하고자하는 필터의 사이즈가 커질 경우에는 알아서 주파수 공간에서의 필터링을
해주는 특징이 있다.
주로 마스크 연산을 이용하는데 저번 강의에서 자주 나온 마스크 영상과는 다른 의미이다.
( 작은 크기의 실수형 행렬 이용 , 마스크 = 커널 = 윈도우 = 템플릿 )
- 필터링 ( 마스크 연산 )
다양한 크기와 다양한 값으로 구성되어있는 작은 크기의 행렬이다.
위와같이 다양한 형태의 마스크가 있지만 보통 3 X 3 의 마스크를 사용한다.
그리고 각각의 요소들 ( Elements ) 에 어떤 값을 넣는지 , 마스크의 형태가 어떤지에 따라서 필터의 역할이 결정되는데 - 영상 부드럽게 만들기 - 영상 날카롭게 만들기 - 엣지 ( Edge ) 검출 - 잡음 제거
등의 역할을 할 수 있다.
입력 영상위에 마스크를 살짝 포개서 올려놓은 뒤
마스크의 행렬의 원소값과 같은 위치에 있는 입력영상 픽셀값을 곱한다.
그렇게 중앙 기준값을 포함한 9개의 픽셀값에 같은 필터링을 적용한다.
( 3 X 3 사이즈 기준 )
위와같은 연산을 Correlation 이라고 한다.
( 같은 위치에 있는 값들을 모두 곱해서 더해주는 연산
관습적으로 Convolution 이라고도 불린다. 엄밀히 말하면 다르다. )
위와같이 나온 필터링을 보면 Correlation 연산을 진행해 준 뒤 ( 9개의 픽셀 ) g(1,1) 의 픽셀에만
적용시킨다. 이후 g(2,1) 에 해당하는 픽셀 필터링을 아래와같이 진행해준다.
이렇게 마스크를 입력영상의 전체구간에 대해 이동하면서 ( Scanning ) 적용한다.
그러면 최외곽 픽셀 처리에 대해서 생각해봐야한다.
위처럼 출력영상 ( 0,0 ) 위치에 마스크를 올려놓는 경우는 어떻게 생각해야할까?
? 로 표시되어있는 곳의 픽셀은 없는 것과 마찬가지이기때문에 기준이 모호해진다.
그래서 입력영상에 실제로 픽셀이 있는 곳에만 마스크 연산을 진행하면 된다.
하지만 OpenCV에서는 다른 방식으로 마스크 연산을 진행하게 되는데
위와같이 바깥쪽에 가상의 픽셀이 있다고 가정하고 마스크 연산을 진행한다.
그래서 기준 픽셀을 중심으로 대칭하도록 가상의 픽셀을 만드는 것이다.
물론 가상의 픽셀에 0의 값을 넣거나 가상의 픽셀과 처음으로 만나는 픽셀들로 채워넣는 방법도
OpenCV에서 제공하고는 있다.
히지만 ( BORDER_REFLECT_101 ) 의 인자를 사용하는 방법을 default 로 사용하고 있다.
cv2.filter2D ( src, ddepth, kernel, dst, anchor, delta, borderType )
src : 입력 영상
ddepth : 출력 영상 데이터 타입 ( ex. cv2.CV_8U, cv2.CV_32F ... )
-1을 입력하게 되면 src를 입력영상과 같은 타입으로 생성해줌.
kernel : 필터마스크 행렬 ( 3x3 의 실수형 행렬을 넣어주면 됨 )
anchor : 고정점 위치 ( 입력을 -1,-1로 주게되면 kernel을 자동으로 계산하여 필터 중앙을 고정점으로 사용한다. )
delta : 필터링 이후에 추가적으로 더할 값 ( default = 0 )
borderType : 가장자리 픽셀 확장 방식 ( 위 가상 픽셀 참고 )
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'Program > OPEN_CV' 카테고리의 다른 글
[Open CV] 필터링 _ 블러링 _ 가우시안 필터 (0) | 2022.05.17 |
---|---|
[Open CV] 필터링 _ 블러링 _ 평균값 필터 (0) | 2022.05.16 |
[Open CV] 기본적인 영상처리 기법 _ 실전코딩 ( 크로마키 합성 ) (0) | 2022.05.14 |
[Open CV] 기본적인 영상처리 기법 _ 히스토그램 역투영 (0) | 2022.05.13 |
[Open CV] 기본적인 영상처리 기법 _ 특정 색상 영역 추출 (0) | 2022.05.12 |