Matplotlib RGB 채널 시각화

Beginner

This tutorial is from open-source community. Access the source code

소개

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 채널을 표시하는 방법을 배웠습니다. 다음 단계를 다루었습니다.

  1. 필요한 라이브러리 가져오기
  2. RGB 채널을 가져오는 함수 정의
  3. RGB 큐브를 생성하는 함수 정의
  4. RGBAxes 플롯 생성
  5. 개별 채널을 가진 RGBAxes 플롯 생성
  6. 플롯 표시