소개
이 랩에서는 Python 의 Matplotlib 라이브러리를 사용하여 이미지를 플롯하고 조작하는 방법을 배우게 됩니다. 이미지 데이터를 NumPy 배열로 가져오고, NumPy 배열을 이미지로 플롯하며, 가상 색상 (pseudocolor) 체계를 적용하고, 색상 척도 참조를 추가하고, 특정 데이터 범위를 검사하고, 다양한 보간법 (interpolation) 체계를 탐색하는 방법을 배우게 됩니다.
VM 팁
VM 시작이 완료되면, 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 접속하십시오.
때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.
학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.
이미지 데이터 가져오기
시작하기 위해 필요한 라이브러리를 가져오고 이미지 데이터를 NumPy 배열로 로드해야 합니다. 이 경우, PIL 라이브러리를 사용하여 이미지를 로드한 다음, NumPy 배열로 변환합니다.
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
img = np.asarray(Image.open('./stinkbug.png'))
이미지 플롯하기
이제 NumPy 배열에 이미지 데이터가 있으므로, matplotlib.pyplot의 imshow 함수를 사용하여 플롯할 수 있습니다. 이 함수는 이미지 배열을 입력으로 받아 이미지 플롯으로 표시합니다.
plt.imshow(img)
의사 컬러 (Pseudocolor) 스킴 적용하기
의사 컬러 스킴은 대비를 향상시키고 데이터를 더 쉽게 시각화하는 데 사용할 수 있습니다. 이미지가 흑백인 경우, 다양한 컬러맵 (colormap) 을 지정하여 의사 컬러 스킴을 적용할 수 있습니다. imshow 함수에서 cmap 매개변수를 사용하여 이를 수행할 수 있습니다.
lum_img = img[:, :, 0]
plt.imshow(lum_img, cmap="hot")
컬러 스케일 참조 추가하기
컬러 스케일에 대한 참조를 제공하기 위해, 플롯에 컬러 바 (color bar) 를 추가할 수 있습니다. 이는 matplotlib.pyplot의 colorbar 함수를 사용하여 수행할 수 있습니다.
imgplot = plt.imshow(lum_img)
plt.colorbar()
특정 데이터 범위 검토하기
때로는 이미지 내의 특정 데이터 범위를 검토해야 할 필요가 있을 수 있습니다. imshow 함수에서 clim 매개변수를 사용하여 컬러맵의 범위를 조정함으로써 이를 수행할 수 있습니다. 이를 통해 이미지의 특정 영역에 집중하면서 다른 영역의 세부 사항을 희생할 수 있습니다.
min_value, max_value = 100, 200
plt.imshow(img, clim=(min_value, max_value))
배열 보간 방식 (Array Interpolation Schemes)
이미지 크기를 조정할 때, 누락된 공간을 채우기 위해 픽셀 값을 보간해야 합니다. 주변 픽셀을 기반으로 픽셀의 값을 결정하기 위해 다양한 보간 방식 (interpolation schemes) 을 사용할 수 있습니다. Matplotlib 은 "nearest", "bilinear", "bicubic"과 같은 다양한 보간 옵션을 제공합니다.
plt.imshow(img, interpolation="bilinear")
요약
이 랩에서는 Matplotlib 을 사용하여 이미지를 플롯하고 조작하는 방법을 배웠습니다. 이미지 데이터를 NumPy 배열로 가져오고, NumPy 배열을 이미지로 플롯하고, 유사 색상 (pseudocolor) 방식을 적용하고, 색상 척도 참조를 추가하고, 특정 데이터 범위를 검토하고, 다양한 보간 방식 (interpolation schemes) 을 탐색하는 방법을 배웠습니다. 이러한 기술은 다양한 응용 분야에서 이미지를 시각화하고 분석하는 데 유용할 것입니다.