Я работаю в лаборатории, и мы часто делаем временные интервалы (изображение каждый час) стволовых клеток. Нынешняя идея состоит в том, чтобы объединить все фреймы и сделать видео, показывающее эти растущие ячейки (аналогично этому youtube video). Что можно было сделать простым и приятным с помощью OpenCV + Python.Нормализация яркости/гистограммы для изображений с временной задержкой
import numpy as np
import os
import cv2
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
timelapse_folder = '../myTimeLapse/'
for file in os.listdir(timelapse_folder):
frame = cv2.imread(timelapse_folder+file, 0)
out.write(frame)
out.release()
Но у нас есть проблема, что все изображения отличаться немного яркости, поэтому мы получаем некоторое мерцание в нашем видео выход.
Я не разрешено загружать видео, но вот несколько простых примеров, сгенерированные с садомазо визуализировать проблему:
Это видео я получаю от кадров
и это мое желаемое видео (было бы также полезно минимизировать мерцание вместо полного его удаления)
Есть ли способ настроить гистограмму или яркость по всем изображениям (или, возможно, между двумя изображениями), чтобы удалить эти мерцания с помощью OpenCV?
Спасибо за любую идею или подсказку!
Edit: GIF последовательность производства идеи Эндрю (Ответ ниже)
Предполагая, что все изображения 2D массивы поплавков/Интс, тогда вы могли бы построить 3D массив всех изображений , а затем нормализуется против самого яркого '(max (np.average (arr, axis = 2))). Затем вы переходите и записываете видео? – Andrew
Эй, я пробовал 'max_avg = np.max (np.average (images, axis = 2))', а затем в цикле for над каждым фреймом 'frame = (frame/max_avg) * 255', но он не удаляет мерцание , Или вы имеете в виду другой тип нормализации? – Fabian