이미지 피라미드 ( Image pyramid ) 란?
- 하나의 영상에 대해 다양한 해상도의 영상 세트를 구성한 것
- 보통 가우시안 블러링 & 다운 샘플링 현태로 축소하여 구성
왼쪽 아래의 입력영상을 기준으로 가로 , 세로를 반으로 줄이면서 다양한 크기의 영상을 만들어 놓는 것을
이미지 피라미드라고 한다.
이렇게 다양한 크기의 영상을 만드는 이유는 입력영상에서 어떤 객체를 찾고 싶을 때 ( ex_고양이 얼굴 )
영상에서 객체크기가 다양하게 나타날 수 있기 때문에 위와 같이 이미지 피라미드를 만들거나 resize를 해줌으로써
다양한 객체를 찾을 수 있도록 하기 위함이다.
예를들어 고양이 얼굴이 100x100 사이즈를 가지고 있다면 원본 영상 640 * 480에서 고양이 얼굴이 100 x 100 사이즈가
아닌 200x200이었다면 못 찾을 가능성이 있으나 이미지 피라미드에서 다운 샘플링한 이미지 중 100 x 100 사이즈를
가진 고양이 얼굴이 한번쯤은 검출될 수 있지 않을까 하는 것 때문에 이미지 피라미드를 만드는 경우가 있는 것이다.
일반적으로 가로 * 세로 를 1/4로 줄여가며 이미지 피라미드를 만들지만 좀 더 촘촘하게 1/루트 2를 해서 촘촘하게 만드는 경우도 있다.
cv2.pyrDown( src, dst, dstsize, borderType )
src : 입력 영상
dst : 출력 영상
dstsize : 출력 영상 크기 ( * 따로 지정하지 않으면 입력 영상의 가로, 세로 크기의 1/2로 설정 )
borderType : 가장자리 픽셀 확장 방식
* 먼저 5x5 크기의 가우시안 필터를 적용
* 이후 짝수행과 열을 제거하여 작은 크기의 영상을 생성 ( 다운 샘플링 )
* 가우시안 필터링을 적용하고 다운샘플링을 하게 되면 조금 더 자연스러운 영상을 만들 수 있다.
cv2.pyrUp ( src, dst, dstsize, borderType )
src : 입력 영상
dst : 출력 영상
dstsize : 출력 영상 크기 ( * 따로 지정하지 않으면 입력 영상의 가로, 세로 크기의 2배 설정 )
borderType : 가장자리 픽셀 확장 방식
이렇게 보면 이미지 피라미드는 크기를 변경하거나 변경한 크기에서 반복적으로 해야 할 작업이 있지 않은 이상
일반적으로 많이 사용되는 코드는 아니지만 혹시나 사용하게 됨을 위해서 코드를 공부해놓는 것이 좋다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'Program > OPEN_CV' 카테고리의 다른 글
[Open CV] 기하학적 변환 _ 어파인 변환과 투시변환 (0) | 2022.05.26 |
---|---|
[Open CV] 기하학적 변환 _ 영상의 회전 (0) | 2022.05.25 |
[Open CV] 기하학적 변환 _ 영상의 확대와 축소 (0) | 2022.05.23 |
[Open CV] 기하학적 변환 _ 영상의 이동 변환과 전단 변환 (0) | 2022.05.22 |
[Open CV] 필터링 _ 실전 코딩 ( 카툰 필터 카메라 ) (0) | 2022.05.21 |