소개
Matplotlib 는 Python 에서 널리 사용되는 데이터 시각화 라이브러리입니다. 2D 및 3D 플로팅 기능을 포함하여 다양한 플로팅 도구를 제공합니다. 이 튜토리얼에서는 Matplotlib 의 AxesGrid 툴킷에 있는 RGBAxes 모듈을 사용하여 RGB 채널을 표시합니다.
VM 팁
VM 시작이 완료되면, 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 접근하십시오.
때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한 사항으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.
학습 중에 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 즉시 해결해 드리겠습니다.
필요한 라이브러리 임포트
이 단계에서는 필요한 라이브러리인 numpy, matplotlib.pyplot, 그리고 mpl_toolkits.axes_grid1.axes_rgb를 임포트합니다.
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1.axes_rgb import RGBAxes, make_rgb_axes
RGB 채널을 얻는 함수 정의
이 단계에서는 이미지의 R, G, B 채널을 얻기 위해 get_rgb() 함수를 정의합니다. 이 예제에서는 cbook 모듈의 get_sample_data() 함수를 사용하여 샘플 이미지를 가져옵니다.
import matplotlib.cbook as cbook
def get_rgb():
## Get a sample image
Z = cbook.get_sample_data("axes_grid/bivariate_normal.npy")
Z[Z < 0] = 0.
Z = Z / Z.max()
## Get R, G, and B channels
R = Z[:13, :13]
G = Z[2:, 2:]
B = Z[:13, 2:]
return R, G, B
RGB 큐브 생성 함수 정의
이 단계에서는 이전 단계에서 얻은 R, G, B 채널로부터 RGB 큐브를 생성하는 make_cube() 함수를 정의합니다. 이 함수는 R, G, B 큐브와 RGB 이미지를 반환합니다.
def make_cube(r, g, b):
## Get the shape of R
ny, nx = r.shape
## Create the R, G, and B cubes
R = np.zeros((ny, nx, 3))
R[:, :, 0] = r
G = np.zeros_like(R)
G[:, :, 1] = g
B = np.zeros_like(R)
B[:, :, 2] = b
## Combine the R, G, and B cubes to create the RGB image
RGB = R + G + B
return R, G, B, RGB
RGBAxes 플롯 생성
이 단계에서는 RGBAxes 클래스를 사용하여 RGBAxes 플롯을 생성합니다. RGBAxes 객체의 imshow_rgb() 메서드를 사용하여 RGB 이미지를 표시합니다.
def demo_rgb1():
## Create a figure and a RGBAxes object
fig = plt.figure()
ax = RGBAxes(fig, [0.1, 0.1, 0.8, 0.8], pad=0.0)
## Get the R, G, and B channels
r, g, b = get_rgb()
## Display the RGB image using the imshow_rgb() method
ax.imshow_rgb(r, g, b)
개별 채널을 가진 RGBAxes 플롯 생성
이 단계에서는 make_rgb_axes() 함수를 사용하여 개별 채널을 가진 RGBAxes 플롯을 생성합니다. Axes 객체의 imshow() 메서드를 사용하여 R, G, B 채널을 표시합니다.
def demo_rgb2():
## Create a figure and an Axes object
fig, ax = plt.subplots()
## Create the R, G, and B Axes objects using the make_rgb_axes() function
ax_r, ax_g, ax_b = make_rgb_axes(ax, pad=0.02)
## Get the R, G, and B channels and create the RGB cube
r, g, b = get_rgb()
im_r, im_g, im_b, im_rgb = make_cube(r, g, b)
## Display the RGB image and the R, G, and B channels
ax.imshow(im_rgb)
ax_r.imshow(im_r)
ax_g.imshow(im_g)
ax_b.imshow(im_b)
## Set the tick parameters and spine colors for all Axes objects
for ax in fig.axes:
ax.tick_params(direction='in', color='w')
ax.spines[:].set_color("w")
플롯 표시
이 단계에서는 demo_rgb1() 및 demo_rgb2() 함수를 호출하여 플롯을 생성하고 plt.show() 함수를 사용하여 표시합니다.
demo_rgb1()
demo_rgb2()
plt.show()
요약
이 튜토리얼에서는 Matplotlib 의 AxesGrid 툴킷에서 RGBAxes 모듈을 사용하여 RGB 채널을 표시하는 방법을 배웠습니다. 다음 단계를 다루었습니다.
- 필요한 라이브러리 가져오기
- RGB 채널을 가져오는 함수 정의
- RGB 큐브를 생성하는 함수 정의
- RGBAxes 플롯 생성
- 개별 채널을 가진 RGBAxes 플롯 생성
- 플롯 표시