Как объединить много последовательных изображений для симуляции реалистичного размытия движения? - PullRequest
0 голосов
/ 13 сентября 2018

Я хочу симулировать реалистичное размытие движения. Я не хочу, чтобы эффект размытия был на всем изображении, но только на движущихся объектах. Я знаю, что могу использовать фильтры, но эффект размытия будет распространяться на все изображение. Я думал использовать оптический поток, но я не уверен, что он будет работать, потому что результат во многом зависит от извлеченных функций.

Моя основная идея - объединить последовательные кадры, чтобы создать размытие в движении.

Спасибо

Ответы [ 2 ]

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

Вам необходимо иметь альфа-маску [0,1] для объекта.Затем вы можете использовать направленный фильтр для размытия объекта и его маски, например, как здесь: https://www.packtpub.com/mapt/book/application_development/9781785283932/2/ch02lvl1sec21/motion-blur

Затем используйте размытую маску для альфа-смешивания размытого объекта обратно в исходную не размытую или другую сцену:

 #Blend the alpha_mask region of the foreground over the image background
 #fg is foreground, alpha_mask is a [0,255] mask, image is background scene
    foreground = fg.astype(float)
    background = image.astype(float)
    #Normalize alpha_mask
    alpha = alpha_mask.astype(float) / 255
    # Multiply the foreground with the alpha_mask
    foreground = cv2.multiply(alpha, foreground)
    # Multiply the background with ( 1 - alpha )
    background = cv2.multiply(1.0 - alpha, background)
    # Add the masked foreground and background, turn back to byte image
    composit_image = cv2.add(foreground, background).astype(np.uint8)
0 голосов
/ 13 сентября 2018

Не так просто.

Вы действительно можете попробовать с оптическим потоком. Оцените потоки между каждой парой кадров. Размытие кадров в направлении движения (например, анизотропный гауссовский) с экстентом фильтра, эквивалентным смещению. Наконец, смешайте размытые изображения и фон, сформировав средневзвешенное значение, где каждый кадр получает больший вес, чем больше.

...