Computer Vision/opencv(python)

[29] 3) 이미지 피라미드

jwjwvison 2021. 3. 21. 10:50
  • 이미지 피라미드란?
    • 하나의 영상에 대해 다양한 해상도의 영상 세트를 구성한 것
    • 보통 가우시안 블러링 & 다운샘플링 형태로 축소하여 구성

 

  • 영상 피라미드 다운샘플링
cv2.pyrDown(src,dst=None,dstsize=None,borderType=None) -> dst

 • src: 입력 영상
 • dst: 출력 영상
 • dstsize : 출력 영상 크기 . 따로 지정하지 않으면 입력 영상의 가로 , 세로 크기의 1/2 로 설정
 • borderType: 가장자리 픽셀 확장 방식
 • 참고 사항
 ★ 먼저 5x5 크기의 가우시안 필터를 적용 
 ★이후 짝수 행과 열을 제거하여 작은 크기의 영상을 생성

 

  • 영상 피라미드 업샘플링
cv2.pyrUp(src,dst=None,dstsize=None,borderType=None) -> dst

 • src: 입력 영상
 • dst: 출력 영상
 • dstsize : 출력 영상 크기 . 따로 지정하지 않으면 입력 영상의 가로 , 세로 크기의 2 배 설정
 • borderType: 가장자리 픽셀 확장 방식

 

  • 피라미드 영상에 사각형 그리기 예제
import sys
import numpy as np
import cv2


src = cv2.imread('cat.bmp')

if src is None:
    print('Image load failed!')
    sys.exit()

rc=(250,120,200,200)  #rectangle tuple x,y,w,h

cpy=src.copy()
cv2.rectangle(cpy,rc,(0,0,255),2)   #마지막 인자=두께
cv2.imshow('src',cpy)
cv2.waitKey()

for i in range(1,4):
    src=cv2.pyrDown(src)
    cpy=src.copy()
    cv2.rectangle(cpy,rc,(0,0,255),2,shift=i)  #shift 인자 그리기 좌표값의 축소 비율
    cv2.imshow('src',cpy)
    cv2.waitKey()
    cv2.destroyWindow('src')