Program/OPEN_CV

[Open CV] 기하학적 변환 _ 이미지 피라미드

사막여유 2022. 5. 24. 07:29
728x90

 

이미지 피라미드 ( 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 : 가장자리 픽셀 확장 방식


 

이렇게 보면 이미지 피라미드는 크기를 변경하거나 변경한 크기에서 반복적으로 해야 할 작업이 있지 않은 이상

일반적으로 많이 사용되는 코드는 아니지만 혹시나 사용하게 됨을 위해서 코드를 공부해놓는 것이 좋다.

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

https://bit.ly/3L3avNW

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

728x90