У меня есть код, написанный для получения в среднем нескольких изображений для извлечения фона, который в основном удаляет движущиеся объекты на изображениях.Я пытался отбросить выбросы перед усреднением, чтобы получить только фон, а не блеклые объекты.Я перепробовал несколько трюков, последний из которых был таким:
#!/usr/bin/env python3
import numpy as np
from PIL import Image
from scipy import stats
# Load images
im0 = np.array(Image.open('test1/1.jpg'))
im1 = np.array(Image.open('test1/2.jpg'))
im2 = np.array(Image.open('test1/3.jpg'))
# Stack the 3 images into a 4d sequence
sequence = np.stack((im0, im1, im2), axis=3)
mean = np.mean(sequence, axis=3)
sd = np.std(sequence, axis=3)
finalSequence = [x for x in sequence if (x > mean - 2 * sd)]
finalSequence = [x for x in finalSequence if (x < mean + 2 * sd)]
# Repace each pixel by mean of the sequence
result = np.mean(finalSequence, axis=3).astype(np.uint8)
# Save to disk
Image.fromarray(result).save('result.png')
Это дает мне ошибку:
final_list = [x for x in sequence if (x > mean - 2 * sd)]
ValueError: operands could not be broadcast together with shapes (474,3,3) (266,474,3)
Любая помощь или обходной путь для этого будетоценили.Спасибо!