KalelPark's LAB

[ OpenCV ] 여러가지 Pyramid Method 본문

Python/OpenCV

[ OpenCV ] 여러가지 Pyramid Method

kalelpark 2023. 5. 1. 09:50

OpenCV에서는, 이미지를 단계적으로 축소하는 Module이 존재합니다. 이를, 이미지 피라미드(Image Pyramid)라고 하는데
피라미드처럼, 단계적으로 확대하거나 축소하는 작업을 말합니다.

Pyramid 방식에는 2가지가 존재합니다.

  - Gaussian Filter (가우시안 Method)

    - Gaussian Filter를 적용한 뒤, 이미지 피라미드를 구성하는 것을 의미하고, 아래와 같이 활용합니다.

 

* DownSampling의 예이며, 입력 영상을 dst parameter에 따라 이미지를 변환합니다.

pyrDown()은 가우시안 필터를 적용한 뒤 모든 짝수 행과 열을 삭제하고, 입력 영상을 축소합니다. 반면 cv2.pyrUp()은 0으로 채워진 행정방행렬을 삽입하고 주변 픽셀과 유사한 값으로 채우는 방식으로  크기를 확대합니다.

def downsample_image(image, reduce_factor):
    for i in range(reduce_factor):
        if len(image.shape) > 2:
            row, col = image.shape[:2]
        else:
            row, col = image.shape
        
        image = cv2.pyrDown(image, dstsize = (col // 2, row // 2))
    return image

  - Laplacian Pyramid (라플라스 Method)

* pyr.Up()의 경우 화질이 상당히 떨어지는데 이러한 문제를 개선하기 위한 방법입니다. cv2.pyrUp()을 적용한 이미지와 원본 이미지간의 차이를 cv2.pyrUp()을 적용한 이미지에 값을 더해주는 방식입니다.

def laplaoce_pyramid_image(image):
    small, big = cv2.pyrDown(img), cv2.pyrUp(img)
    laplacian = cv2.subtract(img, big)
    recon_img = bigger + laplacian

    return recon_img

 

 

 

 

'Python > OpenCV' 카테고리의 다른 글

[ OpenCV ] cv2.imread() flag Parameter란?  (0) 2023.01.04
Comments