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

OpenCV erode() 함수로 이미지 침식(Erosion) 처리하기

이 프로그램에서는 OpenCV의 erode() 함수를 사용하여 이미지에 침식(Erosion) 연산을 적용합니다. 이미지 침식이란 말 그대로 이미지의 형태를 축소시키는 것을 의미합니다.

침식 연산의 기본 원리는 다음과 같습니다. 커널(kernel) 영역 내에 있는 픽셀 중 하나라도 값이 0이라면, 해당 커널에 포함된 모든 픽셀이 0으로 설정됩니다. 이 과정을 통해 이미지의 밝은 영역(전경)이 점차 줄어들며 경계가 깎이는 효과가 나타납니다.

침식 함수를 이미지에 적용하기 전에는 한 가지 전제 조건이 필요합니다. 바로 이미지가 그레이스케일(grayscale) 형태여야 한다는 것입니다. 컬러 이미지라면 먼저 그레이스케일로 변환한 후 침식 연산을 수행하는 것이 좋습니다.

원본 이미지

OpenCV erode() 함수로 이미지 침식(Erosion) 처리하기

알고리즘

1단계: cv2 모듈을 임포트합니다.
2단계: numpy 모듈을 임포트합니다.
3단계: imread() 함수로 이미지를 읽어옵니다.
4단계: numpy ones를 사용해 커널 크기를 정의합니다.
5단계: 이미지와 커널을 erode() 함수에 전달합니다.
6단계: 결과 이미지를 화면에 출력합니다.

예제 코드

import cv2
import numpy as np

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

cv2.imshow('Eroded Image', image)

코드 설명

np.ones((7,7), np.uint8)은 7×7 크기의 커널을 생성하며, 모든 요소가 1로 채워진 배열입니다. 이 커널이 cv2.erode() 함수에 전달되어 이미지 위를 이동하면서 각 영역의 최솟값으로 픽셀을 대체합니다. 커널 크기가 클수록 침식 효과가 더 강하게 나타나므로, 목적에 맞게 크기를 조절할 수 있습니다.

실행 결과

OpenCV erode() 함수로 이미지 침식(Erosion) 처리하기

위 실행 결과에서 볼 수 있듯이, 침식 연산이 적용된 이미지는 원본보다 흰색 영역이 축소되고 검은 배경이 확장된 것을 확인할 수 있습니다. 이러한 침식 기법은 노이즈 제거, 작은 개체 분리, 형태학적 경계 검출 등 다양한 이미지 처리 작업에 활용됩니다.