Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

OpenCV dilate() 함수를 활용한 이미지 확장(팽창) 방법

이 글에서는 OpenCV 라이브러리의 dilate() 함수를 사용하여 이미지를 확장(팽창, Dilation)하는 방법을 알아봅니다. 팽창 연산은 이미지 속 객체의 경계에 픽셀을 추가하는 모폴로지(Morphology) 기법으로, 이미지가 사방으로 넓어지는 효과를 만듭니다.

원본 이미지

OpenCV dilate() 함수를 활용한 이미지 확장(팽창) 방법

알고리즘

이미지 팽창 처리는 다음 순서로 진행됩니다.

1단계: cv2와 numpy 모듈을 임포트한다.
2단계: cv2.imread() 함수로 이미지를 불러온다.
3단계: np.ones() 함수를 사용해 커널(kernel)을 정의한다.
4단계: 이미지와 커널을 dilate() 함수에 전달한다.
5단계: 결과 이미지를 화면에 출력한다.

예제 코드

import cv2
import numpy as np

image = cv2.imread('testimage.jpg')
kernel = np.ones((3,3), np.uint8)

image = cv2.dilate(image, kernel)
cv2.imshow('Dilated Image', image)

실행 결과

OpenCV dilate() 함수를 활용한 이미지 확장(팽창) 방법

코드 설명

위 코드에서 np.ones((3,3), np.uint8)은 3×3 크기의 정방형 커널을 생성합니다. 이 커널이 객체 경계를 따라 이동하며 주변 픽셀을 채워 넣기 때문에 이미지 전체가 확장됩니다.

실행 결과를 보면 이미지가 확장되어 픽셀이 바깥쪽으로 밀려난 것을 확인할 수 있으며, 그 과정에서 원본 대비 약간 왜곡된 형태로 나타납니다.

추가 팁

커널 크기가 클수록 팽창 효과는 더 강해집니다. 예를 들어 (5,5) 크기의 커널을 사용하면 (3,3)보다 훨씬 두껍게 확장됩니다. 또한 dilate() 함수의 세 번째 인자인 iterations 값을 지정하면 팽창 연산을 반복 적용할 수 있습니다.

image = cv2.dilate(image, kernel, iterations=2)  # 팽창 2회 반복 적용

팽창 연산은 노이즈 제거 후 남은 작은 구멍 메우기, 객체 영역 강조, 문자 인식 전처리 등 다양한 컴퓨터 비전 작업에 활용됩니다.