Principle:Kornia Kornia Tensor Image Conversion
| Knowledge Sources | |
|---|---|
| Domains | Vision, IO |
| Last Updated | 2026-02-09 15:00 GMT |
Overview
Technique of converting between PyTorch tensor format and standard image array format for visualization and interoperability.
Description
Computer vision pipelines operate on tensors in (C, H, W) or (B, C, H, W) format with float values, but visualization libraries (matplotlib, PIL) expect numpy arrays in (H, W, C) format with uint8 values. Tensor-to-image conversion handles:
- Channel reordering -- CHW to HWC permutation
- Value denormalization -- scaling float [0, 1] back to uint8 [0, 255] if needed
- Dtype conversion -- from torch.Tensor to numpy.ndarray
- Batch dimension handling -- removing or preserving the batch dimension
This conversion is the inverse of the image loading step and is required whenever pipeline outputs must be displayed, saved, or passed to non-PyTorch tools.
Usage
Use at the end of processing pipelines to convert output tensors for visualization, saving, or passing to non-PyTorch tools. Common scenarios include:
- Displaying results with matplotlib
- Saving output images to disk via PIL or OpenCV
- Passing predictions to evaluation tools that expect numpy arrays
Theoretical Basis
Conversion involves the following sequence of operations:
# Step-by-step tensor to image conversion
# 1. Permute channels from (C, H, W) to (H, W, C)
img = tensor.permute(1, 2, 0)
# 2. Detach from computation graph
img = img.detach()
# 3. Move to CPU
img = img.cpu()
# 4. Convert to numpy
img = img.numpy()
# 5. Optionally clip and scale values
img = (img * 255).clip(0, 255).astype(np.uint8)
For grayscale images with a single channel, the channel dimension is typically squeezed to produce an (H, W) array. For batched tensors (B, C, H, W), the batch dimension must be handled (either by iterating over the batch or by selecting a single image).