[python] 이미지 피라미드 구성하기
이미지 피라미드(Image Pyramid)는 이미지의 크기를 다양한 해상도로 변화시키는 기술입니다. 이를 통해 이미지를 다양한 크기로 스케일링하고 객체의 크기에 대해 다양한 크기의 검출 창을 적용할 수 있습니다.
Python을 사용한 이미지 피라미드 구현
Python의 OpenCV 라이브러리를 활용하여 이미지 피라미드를 구성할 수 있습니다. 아래의 예제 코드를 통해 이미지 피라미드를 구성하는 방법을 알아보겠습니다.
import cv2
def build_image_pyramid(image, scale_factor=0.5, min_size=(30, 30)):
# 원본 이미지의 크기 및 해상도 가져오기
yield image
while True:
# 이미지의 크기를 스케일링
width = int(image.shape[1] * scale_factor)
height = int(image.shape[0] * scale_factor)
image = cv2.resize(image, (width, height))
# 이미지의 크기가 최소 크기보다 작으면 중지
if width < min_size[0] or height < min_size[1]:
break
yield image
# 이미지 로드
image = cv2.imread('example.jpg')
# 이미지 피라미드 구성
pyramid = build_image_pyramid(image, scale_factor=0.5, min_size=(30, 30))
# 이미지 피라미드의 각 단계에 대해 반복하며 이미지를 표시
for i, pyramid_image in enumerate(pyramid):
cv2.imshow('Level {}'.format(i), pyramid_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
위의 코드에서는 먼저 build_image_pyramid
함수를 정의하여 이미지 피라미드를 구성합니다. 이 함수는 원본 이미지, 스케일 팩터(scale_factor), 최소 크기(min_size)를 매개변수로 받습니다. yield
문을 사용하여 이미지 피라미드의 각 단계별로 이미지를 반환합니다.
그리고 나서, build_image_pyramid
함수를 호출하여 이미지를 피라미드로 구성합니다. 이때, 원하는 스케일 팩터 및 최소 크기를 지정할 수 있습니다.
마지막으로, 구성된 이미지 피라미드의 각 단계를 반복하며 이미지를 표시하는 코드를 작성합니다. cv2.imshow
함수를 사용하여 이미지를 표시하고, cv2.waitKey(0)
과 cv2.destroyAllWindows()
함수를 사용하여 창을 닫을 때까지 대기하고 창을 종료합니다.
결론
Python의 OpenCV를 활용하여 이미지 피라미드를 구성하는 방법을 살펴보았습니다. 이미지 피라미드를 사용하면 다양한 크기의 이미지로 스케일링할 수 있으며, 객체 검출 등의 작업에 유용하게 활용될 수 있습니다.