首页 > 解决方案 > Pytorch 变换中像素的部分反转

问题描述

我想随机反转图像的一些像素,这就是我所说的“部分反转”。使用两个 for 循环绝对可行,但我正在寻找更快的操作,因为此操作将应用于数据集中的大量图像。我在PIL文档中没有找到任何操作。我附上了一个示例图像作为参考,假设它具有所有通道 (RGB)。任何帮助,将不胜感激。

样本图像

标签: pythonpython-imaging-library

解决方案


你会考虑其他解决方案PIL吗?使用 . 操作像素非常容易numpy。要反转,只需从 255 中减去数组值。

import tensorflow as tf
import torch
import matplotlib.pyplot as plt

(x, _), (_, _) = tf.keras.datasets.mnist.load_data()

x = x[0]

x = torch.cat([x[:14, :], 255 - x[14:, :]])

plt.imshow(x.numpy(), cmap='Greys')

在此处输入图像描述

您可以像这样在转换中调用它:

torchvision.transforms.Lambda(lambda x: torch.cat([x[:14, :], 255 - x[14:, :]]))

推荐阅读