Как усреднить ненулевые пиксели двух изображений с небольшим смещением [python] - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть два полутоновых изображения с небольшим смещением (перекрытие ~ 80%), которое мне нужно усреднить в одно изображение. Изображения имеют отступы вокруг них, так что перекрытие уже учитывается внутри изображения (то есть начальная позиция x и y каждого изображения различна). Изображения выровнены по их текущему смещению, аналогично панорамному изображению.

Мой текущий подход (см. Ниже) состоит в том, чтобы использовать вложенные циклы for, сравнивать интенсивности пикселей в каждой позиции, суммировать их и делить на ненулевой счет.

    combined_image=np.empty((image1.shape))
    for row in range(image1.shape[0]):
        for pixel in range(image2.shape[1]):
            temp_array = np.array((image1[row][pixel], image2[row][pixel]))
            combined_image[row][pixel] = np.sum(temp_array)/np.count_nonzero(temp_array)

Я считаю, что это работает, однако, это довольно медленно, так как эти изображения имеют размер 1000 x 1000 пикселей. Интересно, есть ли более эффективный подход

1 Ответ

0 голосов
/ 03 ноября 2018

Обычно, если вы используете циклы с NumPy, вы не используете его встроенную функциональность.

Использовать операции вещания.

комбинированный_изображение = (изображение1 + изображение2) / 2

Должно быть быстрее и определенно проще

...