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

Matplotlib로 3D 복셀(Voxel) 시각화하기

3D 컴퓨터 그래픽스에서 복셀(voxel)은 3차원 공간의 규칙적인 격자 위에 표현되는 값입니다. 쉽게 말해 복셀은 2D에서 사용하는 픽셀(pixel)의 3차원 버전이라고 할 수 있습니다. 픽셀이 2D 이미지 안에서 위치와 하나의 색상 값을 가지는 정사각형이라면, 복셀은 3D 모델 안에서 3차원 격자상의 위치와 하나의 색상 값을 가지는 정육면체입니다.

이 글에서는 Matplotlib를 이용해 복셀을 시각화하는 방법을 단계별로 살펴보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 간의 여백을 조정합니다.
  • 0과 1 사이에서 무작위 데이터 포인트를 생성합니다.
  • 새 그림을 생성하거나 기존 그림을 활성화합니다.
  • projection='3d' 옵션으로 현재 축(axe)을 가져오거나, 없으면 새로 생성합니다.
  • voxels() 메서드를 사용하여 채워진 복셀 집합을 그립니다.
  • show() 메서드로 그림을 화면에 표시합니다.

예제 코드

import numpy as np
import matplotlib.pyplot as plt

# 그림 크기 설정
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# 0과 1 사이의 무작위 데이터 생성
data = np.random.choice([0, 1], size=(5, 7, 9), p=[0.65, 0.35])

# 새 그림 생성
fig = plt.figure()

# 3D 투영 축 설정
ax = fig.gca(projection='3d')

# 복셀 그리기
ax.voxels(data, edgecolor="k", facecolors='green')

# 그래프 표시
plt.show()

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Matplotlib로 3D 복셀(Voxel) 시각화하기

코드 설명

np.random.choice는 0과 1 중에서 지정된 확률(p=[0.65, 0.35])에 따라 값을 무작위로 선택하여 (5, 7, 9) 크기의 3차원 배열을 만듭니다. 이 배열의 각 요소가 복셀이 채워질지 여부를 결정하며, 값이 1인 위치만 녹색 큐브로 렌더링됩니다. edgecolor="k" 옵션은 각 복셀의 가장자리를 검은색 선으로 표시해 입체감을 더해 줍니다.