Позже я поработаю над решением на Python, но вы можете приступить к работе с ImageMagick , который установлен на большинстве дистрибутивов Linux и доступен для macOS и Windows.
Просто в терминалеили (Командная строка в Windows) вы можете получить максимум области 3x3, например:
magick input.png -statistic maximum 3x3 result.png
Затем, если вы загрузите последовательность изображений, вы можете получить максимум всех окон 3x3 вкаждый из них похож на это, предполагая, что ваши файлы называются 1.png
, 2.png
...:
magick [12345].png -statistic maximum 3x3 -evaluate-sequence max result.png
Если ваши файлы имеют разные имена, вам, возможно, придется перечислить их:
magick base_layer.png layer1.png important_layer.png ... statistic maximum 3x3 -evaluate-sequence max result.png
Если вы используете ImageMagick версии 6 или старше, вам нужно будет использовать convert
вместо magick
в вышеприведенных командах.
С OpenCV вам нужно будет вызвать cv2.dilate()
, чтобы получить максимум окна 3x3 на каждом слое, а затем, вероятно, позвонить numpy.maximum.reduce()
, чтобы получить максимум для получающихся слоев, см. этот ответ .
Расширение выглядит так:
import cv2
import numpy as np
# Make 3x3 structuring element for dilation
kernel = np.ones((3,3),np.uint8)
im = cv2.imread('1.png')
dilated = cv2.dilate(im, kernel, iterations=1)