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

OpenCV로 이미지에 블랙햇(BlackHat) 연산 수행하기

이 글에서는 OpenCV를 사용하여 이미지에 블랙햇(BlackHat) 연산을 적용하는 방법을 알아봅니다. 블랙햇 변환은 형태학적(morphological) 연산 중 하나로, 밝은 배경 속에 있는 어두운 관심 객체를 강조할 때 유용하게 사용됩니다. 구현에는 morphologyEx(image, cv2.MORPH_BLACKHAT, kernel) 함수를 활용합니다.

원본 이미지

OpenCV로 이미지에 블랙햇(BlackHat) 연산 수행하기

알고리즘 단계

블랙햇 연산은 다음 순서로 진행됩니다.

  1. cv2 모듈을 임포트(import)합니다.
  2. 대상 이미지를 불러옵니다.
  3. 커널(kernel)의 크기를 정의합니다.
  4. 이미지와 커널을 cv2.morphologyEx() 함수에 전달합니다.
  5. 연산이 적용된 결과 이미지를 화면에 출력합니다.

예제 코드

import cv2

image = cv2.imread('image_test.jpg')
filter_size = (5,5)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, filter_size)
image = cv2.morphologyEx(image, cv2.MORPH_BLACKHAT, kernel)

cv2.imshow('BlackHat', image)

코드 설명

cv2.getStructuringElement() 함수는 지정한 크기와 모양의 구조 요소(structuring element), 즉 커널을 생성합니다. 위 예제에서는 5×5 크기의 사각형(RECT) 커널을 사용했으며, 이 커널이 cv2.morphologyEx() 함수에 전달되어 블랙햇 연산을 수행합니다. 마지막으로 cv2.imshow()를 통해 결과 이미지를 창으로 확인할 수 있습니다.

실행 결과

OpenCV로 이미지에 블랙햇(BlackHat) 연산 수행하기

결과 이미지를 보면 원본에서 밝은 배경보다 어두웠던 영역들이 흰색으로 강조되어 나타나는 것을 확인할 수 있습니다. 이처럼 블랙햇 변환은 조명이 균일하지 않은 환경에서 어두운 결함이나 객체를 검출하는 데 효과적으로 활용됩니다.