Dynamic Mode

Color Space Conversion#

This example showcases different color space conversion operations available in DALI.

[1]:
from pathlib import Path

import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
import numpy as np
import nvidia.dali.experimental.dynamic as ndd
import nvidia.dali.types as types

image_dir = Path("../../data/images")
image_path = next(image_dir.glob("**/*.jpg"))
image = ndd.imread(image_path)

Color Space Conversions#

We’ll demonstrate three common color space conversions:

  • RGB to BGR

  • RGB to YCbCr

  • RGB to Grayscale

[2]:
conversions = [
    ("RGB to BGR", types.RGB, types.BGR),
    ("RGB to YCbCR", types.RGB, types.YCbCr),
    ("RGB to Gray", types.RGB, types.GRAY),
]
[3]:
def show_images(
    original: ndd.Tensor,
    converted_list: list[ndd.Tensor],
    titles: list[str],
    device: str,
):
    fig = plt.figure(figsize=(16, 8))
    columns = 4
    rows = 1
    gs = gridspec.GridSpec(rows, columns)

    plt.subplot(gs[0])
    plt.axis("off")
    plt.title("Original")
    plt.imshow(original.cpu())

    for i, (conv, title) in enumerate(zip(converted_list, titles)):
        plt.subplot(gs[i + 1])
        plt.axis("off")
        plt.title(f"{title} ({device})")
        img = np.asarray(conv.cpu())
        if len(img.shape) == 2 or img.shape[2] == 1:
            plt.imshow(
                np.squeeze(img) if len(img.shape) > 2 else img, cmap="gray"
            )
        else:
            plt.imshow(img)

CPU Color Conversions#

[4]:
titles = [title for title, _, _ in conversions]
converted_cpu = [
    ndd.color_space_conversion(image, image_type=inp_t, output_type=out_t)
    for _, inp_t, out_t in conversions
]
show_images(image, converted_cpu, titles, "cpu")
../../../_images/examples_image_processing_color_space_conversion_dynamic_mode_6_0.png

GPU Color Conversions#

[5]:
image_gpu = image.gpu()
converted_gpu = [
    ndd.color_space_conversion(image_gpu, image_type=inp_t, output_type=out_t)
    for _, inp_t, out_t in conversions
]
show_images(image_gpu, converted_gpu, titles, "gpu")
../../../_images/examples_image_processing_color_space_conversion_dynamic_mode_8_0.png