Вот сделка. Я хочу создать маску, которая визуализирует все изменения между двумя изображениями (GeoTiffs, которые преобразуются в двумерные массивы).
Для этого я просто вычитаю значения пикселей и нормализую абсолютное значение вычитания:

Поскольку результат будет покрыт шумом, я использую порог и удаляю все пиксели со значением ниже определенного предела.
def treshold(array, thresholdLimit):
print("Treshold...")
result = (array > thresholdLimit) * array
return result
Это работает без проблем. Теперь приходит проблема. При применении порога остаются выбросы, которые не предназначены:

Какой хороший способ устранить эти выбросы?
Иногда выбросы - это маленькие кусочки пикселей, например, 5-6 пикселей вместе, как их можно удалить?
Кроме того, я использую изображения размером около 10000x10000 пикселей.
Буду признателен за все советы!
РЕДАКТИРОВАТЬ:
Оба изображения представляют собой спутниковые изображения, покрывающие одну и ту же область.
Разница здесь в том, что одно изображение показывает облачность, а другое - без облаков.
Яркая змеиная линия в правом верхнем углу является частью реки, которая была покрыта облаком. Поскольку водоемы, такие как океан или реки, изображены черными на этих изображениях, разница между ярким облаком и темной рекой приводит к тому, что река демонстрирует высокую степень изменения.
Я надеюсь, что следующие изображения проясняют это:
Исходный текст:

Результат вычитания:

Я также пытался сгладить результат установления порога с помощью медианного фильтра, но результат все еще был покрыт выбросами:
from scipy.ndimage import median_filter
def filter(array, limit):
print("Median-Filter...")
filteredImg = np.array(median_filter(array, size=limit)).astype(np.float32)
return filteredImg