Я нашел что-то достаточно близкое к тому, что я хочу сделать здесь: Python: PIL заменяет один цвет RGBA
Однако в моем сценарии у меня есть изображения, которые изначально были в оттенках серого с цветоманнотации добавлены к изображению (рентген с заметками в цвете).Я хотел бы заменить любой пиксель, который не является оттенками серого, случайным шумом.Моя основная проблема - заменить значения шумом, а не одним цветом.
Редактировать: я выяснил случайную часть шума, теперь просто пытаюсь выяснить, как отделить цветные пиксели от пикселей, которые изначально были в оттенках серого..
from PIL import Image
import numpy as np
im = Image.open('test.jpg')
data = np.array(im) # "data" is a height x width x 3 numpy array
red, green, blue = data.T # Temporarily unpack the bands for readability
# Replace white with random noise...
white_areas = (red == 255) & (blue == 255) & (green == 255)
Z = random.random(data[...][white_areas.T].shape)
data[...][white_areas.T] = Z
im2 = Image.fromarray(data)
im2.show()