본문 바로가기
  • Hello_
Python

[Python] 여러개의 이미지 한번에 시각화 - matplotlib

by LDwDL 2023. 2. 18.
728x90
반응형

본 포스팅에서는 matplotlib 라이브러리를 활용하여 여러 개의 배열 이미지를 한 번에 시각화하는 법에 대해 얘기하고자 합니다.

 

여러개의 배열 시각화

여러개의 배열을 시각화하는 이유로는 여러 개의 이미지를 한 번에 보고 비교하거나 3D이상의 데이터의 형태 및 경향성을 보기 위해 주로 사용됩니다. 특히 저는 3D 이미지를 주로 다루기에 여러개의 슬라이스를 한 번에 봐야 하는 경우가 많이 있는데요. 

 

오늘은 matplotlib 라이브러리를 활용하여 한번에 다수의 이미지를 시각화해보겠습니다.

 

우선 아래와 같이 pred라는 3D 배열이 있습니다. 해당 예시는 특정 영상의 마스크를 예시로 가져왔습니다.

pred.shape
# (64, 64, 64)

 

matplotlib.pyplt을 가져온 후 해당 라이브러리에서 제공하는 subplot 함수와 imshow를 활용하여 한번에 시각화해보죠. 

import matplotlib.pyplot as plt

for i in range(64):
    plt.subplot(8,8,i+1)
    plt.imshow(pred[i],'gray')

 

subplot

 

subplot의 인자로는 순서대로 가로, 세로, 인덱스가 입력이 됩니다. 인덱스는 0부터 시작이 아닌 1부터 시작으로 i+1을 해주었습니다.

 

위 예시는 pred 변수의 z 축이 64이므로 64개를 한 번에 보고자 하였고 가로 8 세로 8의 같은 크기의 인덱스로 구성해 주었습니다. 물론 4x16 혹은 16x4와 같이 비균등하게 가로, 세로의 인덱스를 구성할 수도 있습니다.

for i in range(64):
    plt.subplot(4,16,i+1)
    plt.imshow(pred[i],'gray')

###

for i in range(64):
    plt.subplot(16,4,i+1)
    plt.imshow(pred[i],'gray')

 

가로와 세로 비균등 subplot

 

8x8로 고정하고 여기서 한 가지 바꾸고 싶은 부분이 있다면 바로 그림 크기와 저 주변에 더러운 axis 표시를 제거하고 싶으실 겁니다. 

이때는 plt.figure(figsize=[크기])를 통해 전체적인 figure 크기를 변경할 수 있습니다. 또한 plt.axis('off')를 사용하여 주변에 표시되었던 axis들도 제거가 가능합니다.

plt.figure(figsize=[10,10])
for i in range(64):
    plt.subplot(8,8,i+1)
    plt.imshow(pred[i],'gray')
    plt.axis('off')

 

final_subplot

 

그러면 위 그림과 같이 깔끔하게 보고자 하는 이미지 슬라이스들만 시각화하실 수 있습니다.

728x90
반응형

댓글