Visualização de Canais RGB em Matplotlib

Beginner

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

Introdução

Matplotlib é uma popular biblioteca de visualização de dados em Python. Ela oferece diversas ferramentas de plotagem, incluindo capacidades de plotagem 2D e 3D. Neste tutorial, usaremos o módulo RGBAxes do toolkit AxesGrid em Matplotlib para exibir os canais RGB.

Dicas para a VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido às limitações do Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Importar as bibliotecas necessárias

Nesta etapa, importaremos as bibliotecas necessárias: numpy, matplotlib.pyplot e 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

Definir uma função para obter os canais RGB

Nesta etapa, definiremos uma função get_rgb() para obter os canais R, G e B de uma imagem. Neste exemplo, usaremos a função get_sample_data() do módulo cbook para obter uma imagem de amostra.

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

Definir uma função para criar um cubo RGB

Nesta etapa, definiremos uma função make_cube() para criar um cubo RGB a partir dos canais R, G e B obtidos na etapa anterior. A função retornará os cubos R, G e B, bem como a imagem 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

Criar um gráfico RGBAxes

Nesta etapa, criaremos um gráfico RGBAxes usando a classe RGBAxes. Usaremos o método imshow_rgb() do objeto RGBAxes para exibir a imagem 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)

Criar um gráfico RGBAxes com canais separados

Nesta etapa, criaremos um gráfico RGBAxes com canais separados usando a função make_rgb_axes(). Usaremos o método imshow() dos objetos Axes para exibir os canais R, G e 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")

Exibir os gráficos

Nesta etapa, chamaremos as funções demo_rgb1() e demo_rgb2() para criar os gráficos e exibi-los usando a função plt.show().

demo_rgb1()
demo_rgb2()

plt.show()

Resumo

Neste tutorial, aprendemos como usar o módulo RGBAxes do toolkit AxesGrid em Matplotlib para exibir canais RGB. Cobrimos as seguintes etapas:

  1. Importar as bibliotecas necessárias
  2. Definir uma função para obter os canais RGB
  3. Definir uma função para criar um cubo RGB
  4. Criar um gráfico RGBAxes
  5. Criar um gráfico RGBAxes com canais separados
  6. Exibir os gráficos.