Matplotlib란?
Matplotlib는 Python에서 배열의 2차원 플롯을 그리기 위한 훌륭한 데이터 시각화 라이브러리입니다. NumPy 배열을 기반으로 구축되었으며, 더 폭넓은 SciPy 스택과 함께 작동하도록 설계된 멀티 플랫폼 라이브러리입니다.
이 글에서는 Matplotlib를 활용해 PNG 이미지를 읽고, 의사색상(pseudocolor)을 적용하고, 컬러바를 추가하며, 다양한 보간법(interpolation)으로 이미지를 처리하는 방법을 단계별로 살펴보겠습니다.
1. 의사색상(Pseudocolor) 적용하기
의사색상은 회색조 이미지에 색상을 입혀 데이터의 패턴을 더 직관적으로 파악할 수 있게 해주는 기법입니다. 이미지의 첫 번째 채널(밝기 값)만 추출하여 기본 컬러맵(colormap)으로 시각화할 수 있습니다.
# matplotlib에서 pyplot과 image 모듈 임포트
import matplotlib.pyplot as plt
import matplotlib.image as img
# PNG 이미지 읽기
im = img.imread('imR.png')
# 의사색상 적용 (기본 컬러맵 사용)
lum = im[:, :, 0]
# 이미지 출력
plt.imshow(lum)2. 컬러바(Colorbar) 추가하기
컬러바를 함께 표시하면 이미지의 밝기 값이 어떤 색상에 대응하는지 한눈에 확인할 수 있습니다. cmap 옵션을 'hot'으로 지정해 열 분포처럼 표현해 보겠습니다.
import matplotlib.pyplot as plt
import matplotlib.image as img
# PNG 이미지 읽기
im = img.imread('imR.png')
lum = im[:, :, 0]
# 'hot' 컬러맵 설정 및 컬러바 추가
plt.imshow(lum, cmap='hot')
plt.colorbar()3. 이미지 크기 줄이기(Thumbnail)
PIL(Pillow) 라이브러리의 thumbnail() 메서드를 사용하면 이미지 비율을 유지한 채 원하는 크기로 손쉽게 축소할 수 있습니다.
from PIL import Image
import matplotlib.pyplot as plt
# PNG 이미지 파일 읽기
img = Image.open('imR.png')
# 이미지 크기 축소 (50x50)
img.thumbnail((50, 50), Image.ANTIALIAS)
imgplot = plt.imshow(img)4. Bicubic 보간법 적용하기
작은 이미지를 확대할 때는 보간 방식에 따라 결과물의 품질이 크게 달라집니다. bicubic 보간법은 주변 픽셀 값을 이용해 부드럽고 자연스러운 곡선으로 픽셀 사이를 채워주는 방식입니다.
import matplotlib.pyplot as plt
from PIL import Image
# 이미지 읽기
img = Image.open('imR.png')
img.thumbnail((30, 30), Image.ANTIALIAS)
# bicubic 보간법 적용
imgplot = plt.imshow(img, interpolation='bicubic')5. Sinc 보간법 적용하기
sinc 보간법은 신호 처리 이론에 기반한 방식으로, 특히 작은 이미지를 확대할 때 디테일을 더 잘 보존하는 것으로 알려져 있습니다.
from PIL import Image
import matplotlib.pyplot as plt
# 이미지 읽기
img = Image.open('imR.png')
img.thumbnail((30, 30), Image.ANTIALIAS)
# sinc 보간법 적용
imgplot = plt.imshow(img, interpolation='sinc')마무리
지금까지 Matplotlib와 PIL을 활용해 PNG 이미지를 읽어들이고, 의사색상과 컬러바로 데이터를 시각화하며, bicubic·sinc 등 다양한 보간법으로 이미지 품질을 조절하는 방법을 알아보았습니다. 이 기법들은 이미지 분석, 과학 데이터 시각화 등 다양한 분야에서 유용하게 활용될 수 있으니 실습을 통해 각 옵션의 차이를 직접 확인해 보시기 바랍니다.