이미지 처리 분야에서 히스테리시스 임계값(hysteresis thresholding)은 에지 검출의 정확도를 높이는 데 널리 활용되는 기법입니다. Matplotlib과 scikit-image를 함께 사용하면 이 과정을 손쉽게 시각화할 수 있습니다. 아래 단계를 따라 구현해 보세요.
구현 단계
- 그림 크기(figure size)를 설정하고, 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
- 하나의 figure와 서브플롯 집합을 생성합니다.
- scikit-image에서 제공하는 폼페아 출토 그리스 동전(greek coins from Pompeii) 샘플 이미지를 불러옵니다.
- sobel 필터를 사용해 이미지의 high, low, edges 값을 계산합니다.
- apply_hysteresis_threshold() 함수로 이미지에 히스테리시스 임계값을 적용합니다.
- imshow() 메서드를 사용해 데이터를 2D 래스터(raster) 형태의 이미지로 표시합니다.
- 원본 이미지와 히스테리시스 임계값이 적용된 이미지에 각각 제목을 설정합니다.
- show() 메서드로 최종 figure를 화면에 출력합니다.
예제 코드
import matplotlib.pyplot as plt
from skimage import data, filters
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig, ax = plt.subplots(nrows=1, ncols=2)
orig_img = data.coins()
edges = filters.sobel(orig_img)
low = 0.1
high = 0.4
low = (edges > low).astype(int)
height = (edges > high).astype(int)
hyst = filters.apply_hysteresis_threshold(edges, low, high)
ax[0].imshow(height + hyst, cmap='magma')
ax[0].set_xlabel('Hysteresis threshold')
ax[1].imshow(orig_img, cmap='magma')
ax[1].set_xlabel('Original Image')
plt.show()실행 결과

위 코드를 실행하면 왼쪽에는 히스테리시스 임계값이 적용된 에지 이미지가, 오른쪽에는 원본 동전 이미지가 magma 컬러맵으로 나란히 표시됩니다. 코드에서 low(0.1)와 high(0.4) 값을 조절하면 에지 검출의 민감도를 자유롭게 튜닝할 수 있으며, 이는 노이즈가 많은 이미지에서 강한 에지만 선별적으로 추출하는 데 유용합니다.