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

Pillow 라이브러리로 이미지 가장자리(Edge) 검출하는 방법

이 글에서는 Python의 Pillow 라이브러리를 사용하여 이미지 속 가장자리(edge)를 검출하는 방법을 알아봅니다. Pillow의 ImageFilter 클래스에 포함된 FIND_EDGES 필터를 활용하면 별도의 복잡한 연산 없이도 이미지의 윤곽선을 손쉽게 추출할 수 있습니다.

가장자리 검출은 객체 인식, 이미지 분석, 컴퓨터 비전 전처리 등 다양한 분야에서 활용되는 기본적인 이미지 처리 기법입니다. 아래 예제를 통해 그 구현 과정을 살펴보겠습니다.

원본 이미지

Pillow 라이브러리로 이미지 가장자리(Edge) 검출하는 방법

알고리즘

1단계: Pillow에서 Image와 ImageFilter 모듈을 임포트합니다.
2단계: 처리할 이미지 파일을 엽니다.
3단계: filter() 함수를 호출하고 FIND_EDGES 필터를 지정합니다.
4단계: 결과 이미지를 화면에 표시합니다.

예제 코드

from PIL import Image, ImageFilter

im = Image.open('testimage.jpg')
im = im.filter(ImageFilter.FIND_EDGES)
im.show()

코드 설명

Image.open()으로 이미지를 불러온 후, filter() 메서드에 ImageFilter.FIND_EDGES를 인자로 전달합니다. 이 필터는 이미지 내 픽셀 값의 급격한 변화, 즉 명암 대비가 큰 부분을 경계로 인식하여 가장자리만 남기고 나머지 영역은 어둡게 처리합니다. 마지막으로 show() 함수를 호출하면 결과 이미지가 기본 이미지 뷰어로 표시됩니다.

실행 결과

Pillow 라이브러리로 이미지 가장자리(Edge) 검출하는 방법

위 결과에서 확인할 수 있듯이, 원본 이미지의 윤곽과 형태 정보만 선명하게 남게 됩니다. 만약 더 부드럽거나 강조된 가장자리가 필요하다면, ImageFilter.FIND_EDGES 적용 전에 GaussianBlur 같은 필터로 노이즈를 제거하면 더 깔끔한 결과를 얻을 수 있습니다.