Visualización de canales RGB con Matplotlib

PythonPythonBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Matplotlib es una popular biblioteca de visualización de datos en Python. Proporciona una variedad de herramientas de trazado, incluyendo capacidades de trazado 2D y 3D. En este tutorial, usaremos el módulo RGBAxes del toolkit AxesGrid en Matplotlib para mostrar los canales RGB.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Importar las bibliotecas necesarias

En este paso, importaremos las bibliotecas necesarias: numpy, matplotlib.pyplot y 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 una función para obtener los canales RGB

En este paso, definiremos una función get_rgb() para obtener los canales R, G y B de una imagen. En este ejemplo, usaremos la función get_sample_data() del módulo cbook para obtener una imagen de muestra.

import matplotlib.cbook as cbook

def get_rgb():
    ## Obtener una imagen de muestra
    Z = cbook.get_sample_data("axes_grid/bivariate_normal.npy")
    Z[Z < 0] = 0.
    Z = Z / Z.max()

    ## Obtener los canales R, G y B
    R = Z[:13, :13]
    G = Z[2:, 2:]
    B = Z[:13, 2:]

    return R, G, B

Definir una función para crear un cubo RGB

En este paso, definiremos una función make_cube() para crear un cubo RGB a partir de los canales R, G y B obtenidos en el paso anterior. La función devolverá los cubos R, G y B, así como la imagen RGB.

def make_cube(r, g, b):
    ## Obtener la forma de R
    ny, nx = r.shape

    ## Crear los cubos R, G y B
    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

    ## Combinar los cubos R, G y B para crear la imagen RGB
    RGB = R + G + B

    return R, G, B, RGB

Crear un trazado de RGBAxes

En este paso, crearemos un trazado de RGBAxes utilizando la clase RGBAxes. Usaremos el método imshow_rgb() del objeto RGBAxes para mostrar la imagen RGB.

def demo_rgb1():
    ## Crear una figura y un objeto RGBAxes
    fig = plt.figure()
    ax = RGBAxes(fig, [0.1, 0.1, 0.8, 0.8], pad=0.0)

    ## Obtener los canales R, G y B
    r, g, b = get_rgb()

    ## Mostrar la imagen RGB utilizando el método imshow_rgb()
    ax.imshow_rgb(r, g, b)

Crear un trazado de RGBAxes con canales separados

En este paso, crearemos un trazado de RGBAxes con canales separados utilizando la función make_rgb_axes(). Usaremos el método imshow() de los objetos Axes para mostrar los canales R, G y B.

def demo_rgb2():
    ## Crear una figura y un objeto Axes
    fig, ax = plt.subplots()

    ## Crear los objetos Axes de R, G y B utilizando la función make_rgb_axes()
    ax_r, ax_g, ax_b = make_rgb_axes(ax, pad=0.02)

    ## Obtener los canales R, G y B y crear el cubo RGB
    r, g, b = get_rgb()
    im_r, im_g, im_b, im_rgb = make_cube(r, g, b)

    ## Mostrar la imagen RGB y los canales R, G y B
    ax.imshow(im_rgb)
    ax_r.imshow(im_r)
    ax_g.imshow(im_g)
    ax_b.imshow(im_b)

    ## Establecer los parámetros de las marcas de graduación y los colores de las espinas para todos los objetos Axes
    for ax in fig.axes:
        ax.tick_params(direction='in', color='w')
        ax.spines[:].set_color("w")

Mostrar los trazados

En este paso, llamaremos a las funciones demo_rgb1() y demo_rgb2() para crear los trazados y mostrarlos utilizando la función plt.show().

demo_rgb1()
demo_rgb2()

plt.show()

Resumen

En este tutorial, hemos aprendido cómo utilizar el módulo RGBAxes de la herramienta AxesGrid de Matplotlib para mostrar los canales RGB. Hemos cubierto los siguientes pasos:

  1. Importar las bibliotecas necesarias
  2. Definir una función para obtener los canales RGB
  3. Definir una función para crear un cubo RGB
  4. Crear un trazado de RGBAxes
  5. Crear un trazado de RGBAxes con canales separados
  6. Mostrar los trazados.